197521Sphk/*-
297521Sphk *  COPYRIGHT (C) 1986 Gary S. Brown.  You may use this program, or
397521Sphk *  code or tables extracted from it, as desired without restriction.
4139815Simp */
5139815Simp
6139815Simp/*
797521Sphk *  First, the polynomial itself and its table of feedback terms.  The
897521Sphk *  polynomial is
997521Sphk *  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+X^0
1097521Sphk *
1197521Sphk *  Note that we take it "backwards" and put the highest-order term in
1297521Sphk *  the lowest-order bit.  The X^32 term is "implied"; the LSB is the
1397521Sphk *  X^31 term, etc.  The X^0 term (usually shown as "+1") results in
1497521Sphk *  the MSB being 1
1597521Sphk *
1697521Sphk *  Note that the usual hardware shift register implementation, which
1797521Sphk *  is what we're using (we're merely optimizing it by doing eight-bit
1897521Sphk *  chunks at a time) shifts bits into the lowest-order term.  In our
1997521Sphk *  implementation, that means shifting towards the right.  Why do we
2097521Sphk *  do it this way?  Because the calculated CRC must be transmitted in
2197521Sphk *  order from highest-order term to lowest-order term.  UARTs transmit
2297521Sphk *  characters in order from LSB to MSB.  By storing the CRC this way
2397521Sphk *  we hand it to the UART in the order low-byte to high-byte; the UART
2497521Sphk *  sends each low-bit to hight-bit; and the result is transmission bit
2597521Sphk *  by bit from highest- to lowest-order term without requiring any bit
2697521Sphk *  shuffling on our part.  Reception works similarly
2797521Sphk *
2897521Sphk *  The feedback terms table consists of 256, 32-bit entries.  Notes
2997521Sphk *
3097521Sphk *      The table can be generated at runtime if desired; code to do so
3197521Sphk *      is shown later.  It might not be obvious, but the feedback
3297521Sphk *      terms simply represent the results of eight shift/xor opera
3397521Sphk *      tions for all combinations of data and CRC register values
3497521Sphk *
3597521Sphk *      The values must be right-shifted by eight bits by the "updcrc
3697521Sphk *      logic; the shift must be unsigned (bring in zeroes).  On some
3797521Sphk *      hardware you could probably optimize the shift in assembler by
3897521Sphk *      using byte-swap instructions
3997521Sphk *      polynomial $edb88320
4097521Sphk *
4197521Sphk *
4297521Sphk * CRC32 code derived from work by Gary S. Brown.
4397521Sphk */
4497521Sphk
45116189Sobrien#include <sys/cdefs.h>
46116189Sobrien__FBSDID("$FreeBSD$");
47116189Sobrien
4897521Sphk#include <sys/param.h>
4997521Sphk#include <sys/systm.h>
5097521Sphk
51233517Smariusconst uint32_t crc32_tab[] = {
5297521Sphk	0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
5397521Sphk	0xe963a535, 0x9e6495a3,	0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
5497521Sphk	0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
5597521Sphk	0xf3b97148, 0x84be41de,	0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
5697521Sphk	0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,	0x14015c4f, 0x63066cd9,
5797521Sphk	0xfa0f3d63, 0x8d080df5,	0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
5897521Sphk	0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,	0x35b5a8fa, 0x42b2986c,
5997521Sphk	0xdbbbc9d6, 0xacbcf940,	0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
6097521Sphk	0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
6197521Sphk	0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
6297521Sphk	0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,	0x76dc4190, 0x01db7106,
6397521Sphk	0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
6497521Sphk	0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
6597521Sphk	0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
6697521Sphk	0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
6797521Sphk	0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
6897521Sphk	0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
6997521Sphk	0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
7097521Sphk	0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
7197521Sphk	0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
7297521Sphk	0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
7397521Sphk	0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
7497521Sphk	0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
7597521Sphk	0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
7697521Sphk	0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
7797521Sphk	0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
7897521Sphk	0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
7997521Sphk	0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
8097521Sphk	0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
8197521Sphk	0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
8297521Sphk	0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
8397521Sphk	0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
8497521Sphk	0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
8597521Sphk	0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
8697521Sphk	0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
8797521Sphk	0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
8897521Sphk	0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
8997521Sphk	0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
9097521Sphk	0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
9197521Sphk	0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
9297521Sphk	0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
9397521Sphk	0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
9497521Sphk	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
9597521Sphk};
9697521Sphk
97145604Smarcel/*
98145604Smarcel * A function that calculates the CRC-32 based on the table above is
99145604Smarcel * given below for documentation purposes. An equivalent implementation
100145604Smarcel * of this function that's actually used in the kernel can be found
101145611Smarcel * in sys/libkern.h, where it can be inlined.
102145604Smarcel *
103145604Smarcel *	uint32_t
104145604Smarcel *	crc32(const void *buf, size_t size)
105145604Smarcel *	{
106145604Smarcel *		const uint8_t *p = buf;
107145604Smarcel *		uint32_t crc;
108145604Smarcel *
109145604Smarcel *		crc = ~0U;
110145604Smarcel *		while (size--)
111145604Smarcel *			crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8);
112145604Smarcel *		return crc ^ ~0U;
113145604Smarcel *	}
114145604Smarcel */
115188605Srrs
116188605Srrs/* CRC32C routines, these use a different polynomial */
117188605Srrs/*****************************************************************/
118188605Srrs/*                                                               */
119188605Srrs/* CRC LOOKUP TABLE                                              */
120188605Srrs/* ================                                              */
121188605Srrs/* The following CRC lookup table was generated automagically    */
122188605Srrs/* by the Rocksoft^tm Model CRC Algorithm Table Generation       */
123188605Srrs/* Program V1.0 using the following model parameters:            */
124188605Srrs/*                                                               */
125188605Srrs/*    Width   : 4 bytes.                                         */
126188605Srrs/*    Poly    : 0x1EDC6F41L                                      */
127188605Srrs/*    Reverse : TRUE.                                            */
128188605Srrs/*                                                               */
129188605Srrs/* For more information on the Rocksoft^tm Model CRC Algorithm,  */
130188605Srrs/* see the document titled "A Painless Guide to CRC Error        */
131188605Srrs/* Detection Algorithms" by Ross Williams                        */
132188605Srrs/* (ross@guest.adelaide.edu.au.). This document is likely to be  */
133188605Srrs/* in the FTP archive "ftp.adelaide.edu.au/pub/rocksoft".        */
134188605Srrs/*                                                               */
135188605Srrs/*****************************************************************/
136188605Srrs
137233517Smariusstatic const uint32_t crc32Table[256] = {
138188605Srrs	0x00000000L, 0xF26B8303L, 0xE13B70F7L, 0x1350F3F4L,
139188605Srrs	0xC79A971FL, 0x35F1141CL, 0x26A1E7E8L, 0xD4CA64EBL,
140188605Srrs	0x8AD958CFL, 0x78B2DBCCL, 0x6BE22838L, 0x9989AB3BL,
141188605Srrs	0x4D43CFD0L, 0xBF284CD3L, 0xAC78BF27L, 0x5E133C24L,
142188605Srrs	0x105EC76FL, 0xE235446CL, 0xF165B798L, 0x030E349BL,
143188605Srrs	0xD7C45070L, 0x25AFD373L, 0x36FF2087L, 0xC494A384L,
144188605Srrs	0x9A879FA0L, 0x68EC1CA3L, 0x7BBCEF57L, 0x89D76C54L,
145188605Srrs	0x5D1D08BFL, 0xAF768BBCL, 0xBC267848L, 0x4E4DFB4BL,
146188605Srrs	0x20BD8EDEL, 0xD2D60DDDL, 0xC186FE29L, 0x33ED7D2AL,
147188605Srrs	0xE72719C1L, 0x154C9AC2L, 0x061C6936L, 0xF477EA35L,
148188605Srrs	0xAA64D611L, 0x580F5512L, 0x4B5FA6E6L, 0xB93425E5L,
149188605Srrs	0x6DFE410EL, 0x9F95C20DL, 0x8CC531F9L, 0x7EAEB2FAL,
150188605Srrs	0x30E349B1L, 0xC288CAB2L, 0xD1D83946L, 0x23B3BA45L,
151188605Srrs	0xF779DEAEL, 0x05125DADL, 0x1642AE59L, 0xE4292D5AL,
152188605Srrs	0xBA3A117EL, 0x4851927DL, 0x5B016189L, 0xA96AE28AL,
153188605Srrs	0x7DA08661L, 0x8FCB0562L, 0x9C9BF696L, 0x6EF07595L,
154188605Srrs	0x417B1DBCL, 0xB3109EBFL, 0xA0406D4BL, 0x522BEE48L,
155188605Srrs	0x86E18AA3L, 0x748A09A0L, 0x67DAFA54L, 0x95B17957L,
156188605Srrs	0xCBA24573L, 0x39C9C670L, 0x2A993584L, 0xD8F2B687L,
157188605Srrs	0x0C38D26CL, 0xFE53516FL, 0xED03A29BL, 0x1F682198L,
158188605Srrs	0x5125DAD3L, 0xA34E59D0L, 0xB01EAA24L, 0x42752927L,
159188605Srrs	0x96BF4DCCL, 0x64D4CECFL, 0x77843D3BL, 0x85EFBE38L,
160188605Srrs	0xDBFC821CL, 0x2997011FL, 0x3AC7F2EBL, 0xC8AC71E8L,
161188605Srrs	0x1C661503L, 0xEE0D9600L, 0xFD5D65F4L, 0x0F36E6F7L,
162188605Srrs	0x61C69362L, 0x93AD1061L, 0x80FDE395L, 0x72966096L,
163188605Srrs	0xA65C047DL, 0x5437877EL, 0x4767748AL, 0xB50CF789L,
164188605Srrs	0xEB1FCBADL, 0x197448AEL, 0x0A24BB5AL, 0xF84F3859L,
165188605Srrs	0x2C855CB2L, 0xDEEEDFB1L, 0xCDBE2C45L, 0x3FD5AF46L,
166188605Srrs	0x7198540DL, 0x83F3D70EL, 0x90A324FAL, 0x62C8A7F9L,
167188605Srrs	0xB602C312L, 0x44694011L, 0x5739B3E5L, 0xA55230E6L,
168188605Srrs	0xFB410CC2L, 0x092A8FC1L, 0x1A7A7C35L, 0xE811FF36L,
169188605Srrs	0x3CDB9BDDL, 0xCEB018DEL, 0xDDE0EB2AL, 0x2F8B6829L,
170188605Srrs	0x82F63B78L, 0x709DB87BL, 0x63CD4B8FL, 0x91A6C88CL,
171188605Srrs	0x456CAC67L, 0xB7072F64L, 0xA457DC90L, 0x563C5F93L,
172188605Srrs	0x082F63B7L, 0xFA44E0B4L, 0xE9141340L, 0x1B7F9043L,
173188605Srrs	0xCFB5F4A8L, 0x3DDE77ABL, 0x2E8E845FL, 0xDCE5075CL,
174188605Srrs	0x92A8FC17L, 0x60C37F14L, 0x73938CE0L, 0x81F80FE3L,
175188605Srrs	0x55326B08L, 0xA759E80BL, 0xB4091BFFL, 0x466298FCL,
176188605Srrs	0x1871A4D8L, 0xEA1A27DBL, 0xF94AD42FL, 0x0B21572CL,
177188605Srrs	0xDFEB33C7L, 0x2D80B0C4L, 0x3ED04330L, 0xCCBBC033L,
178188605Srrs	0xA24BB5A6L, 0x502036A5L, 0x4370C551L, 0xB11B4652L,
179188605Srrs	0x65D122B9L, 0x97BAA1BAL, 0x84EA524EL, 0x7681D14DL,
180188605Srrs	0x2892ED69L, 0xDAF96E6AL, 0xC9A99D9EL, 0x3BC21E9DL,
181188605Srrs	0xEF087A76L, 0x1D63F975L, 0x0E330A81L, 0xFC588982L,
182188605Srrs	0xB21572C9L, 0x407EF1CAL, 0x532E023EL, 0xA145813DL,
183188605Srrs	0x758FE5D6L, 0x87E466D5L, 0x94B49521L, 0x66DF1622L,
184188605Srrs	0x38CC2A06L, 0xCAA7A905L, 0xD9F75AF1L, 0x2B9CD9F2L,
185188605Srrs	0xFF56BD19L, 0x0D3D3E1AL, 0x1E6DCDEEL, 0xEC064EEDL,
186188605Srrs	0xC38D26C4L, 0x31E6A5C7L, 0x22B65633L, 0xD0DDD530L,
187188605Srrs	0x0417B1DBL, 0xF67C32D8L, 0xE52CC12CL, 0x1747422FL,
188188605Srrs	0x49547E0BL, 0xBB3FFD08L, 0xA86F0EFCL, 0x5A048DFFL,
189188605Srrs	0x8ECEE914L, 0x7CA56A17L, 0x6FF599E3L, 0x9D9E1AE0L,
190188605Srrs	0xD3D3E1ABL, 0x21B862A8L, 0x32E8915CL, 0xC083125FL,
191188605Srrs	0x144976B4L, 0xE622F5B7L, 0xF5720643L, 0x07198540L,
192188605Srrs	0x590AB964L, 0xAB613A67L, 0xB831C993L, 0x4A5A4A90L,
193188605Srrs	0x9E902E7BL, 0x6CFBAD78L, 0x7FAB5E8CL, 0x8DC0DD8FL,
194188605Srrs	0xE330A81AL, 0x115B2B19L, 0x020BD8EDL, 0xF0605BEEL,
195188605Srrs	0x24AA3F05L, 0xD6C1BC06L, 0xC5914FF2L, 0x37FACCF1L,
196188605Srrs	0x69E9F0D5L, 0x9B8273D6L, 0x88D28022L, 0x7AB90321L,
197188605Srrs	0xAE7367CAL, 0x5C18E4C9L, 0x4F48173DL, 0xBD23943EL,
198188605Srrs	0xF36E6F75L, 0x0105EC76L, 0x12551F82L, 0xE03E9C81L,
199188605Srrs	0x34F4F86AL, 0xC69F7B69L, 0xD5CF889DL, 0x27A40B9EL,
200188605Srrs	0x79B737BAL, 0x8BDCB4B9L, 0x988C474DL, 0x6AE7C44EL,
201188605Srrs	0xBE2DA0A5L, 0x4C4623A6L, 0x5F16D052L, 0xAD7D5351L
202188605Srrs};
203188605Srrs
204188605Srrsstatic uint32_t
205188605Srrssingletable_crc32c(uint32_t crc, const void *buf, size_t size)
206188605Srrs{
207188605Srrs	const uint8_t *p = buf;
208188605Srrs
209188605Srrs
210188605Srrs	while (size--)
211188605Srrs		crc = crc32Table[(crc ^ *p++) & 0xff] ^ (crc >> 8);
212188605Srrs
213188605Srrs	return crc;
214188605Srrs}
215188605Srrs
216188605Srrs
217188605Srrs/*
218188605Srrs * Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
219188605Srrs *
220188605Srrs *
221188605Srrs * This software program is licensed subject to the BSD License, available at
222188605Srrs * http://www.opensource.org/licenses/bsd-license.html.
223188605Srrs *
224188605Srrs * Abstract:
225188605Srrs *
226188605Srrs * Tables for software CRC generation
227188605Srrs */
228188605Srrs
229188605Srrs/*
230188605Srrs * The following CRC lookup table was generated automagically using the
231188605Srrs * following model parameters:
232188605Srrs *
233188605Srrs * Generator Polynomial = ................. 0x1EDC6F41
234188605Srrs * Generator Polynomial Length = .......... 32 bits
235188605Srrs * Reflected Bits = ....................... TRUE
236188605Srrs * Table Generation Offset = .............. 32 bits
237188605Srrs * Number of Slices = ..................... 8 slices
238188605Srrs * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
239188605Srrs * Directory Name = ....................... .\
240188605Srrs * File Name = ............................ 8x256_tables.c
241188605Srrs */
242188605Srrs
243233517Smariusstatic const uint32_t sctp_crc_tableil8_o32[256] =
244188605Srrs{
245188605Srrs	0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB,
246188605Srrs	0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24,
247188605Srrs	0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384,
248188605Srrs	0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B,
249188605Srrs	0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35,
250188605Srrs	0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA,
251188605Srrs	0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A,
252188605Srrs	0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595,
253188605Srrs	0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957,
254188605Srrs	0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687, 0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198,
255188605Srrs	0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927, 0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38,
256188605Srrs	0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8, 0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7,
257188605Srrs	0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096, 0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789,
258188605Srrs	0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859, 0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46,
259188605Srrs	0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9, 0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6,
260188605Srrs	0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36, 0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829,
261188605Srrs	0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C, 0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93,
262188605Srrs	0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043, 0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C,
263188605Srrs	0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3, 0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC,
264188605Srrs	0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C, 0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033,
265188605Srrs	0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652, 0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D,
266188605Srrs	0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D, 0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982,
267188605Srrs	0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D, 0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622,
268188605Srrs	0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2, 0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED,
269188605Srrs	0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530, 0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F,
270188605Srrs	0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF, 0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0,
271188605Srrs	0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F, 0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540,
272188605Srrs	0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90, 0x9E902E7B, 0x6CFBAD78, 0x7FAB5E8C, 0x8DC0DD8F,
273188605Srrs	0xE330A81A, 0x115B2B19, 0x020BD8ED, 0xF0605BEE, 0x24AA3F05, 0xD6C1BC06, 0xC5914FF2, 0x37FACCF1,
274188605Srrs	0x69E9F0D5, 0x9B8273D6, 0x88D28022, 0x7AB90321, 0xAE7367CA, 0x5C18E4C9, 0x4F48173D, 0xBD23943E,
275188605Srrs	0xF36E6F75, 0x0105EC76, 0x12551F82, 0xE03E9C81, 0x34F4F86A, 0xC69F7B69, 0xD5CF889D, 0x27A40B9E,
276188605Srrs	0x79B737BA, 0x8BDCB4B9, 0x988C474D, 0x6AE7C44E, 0xBE2DA0A5, 0x4C4623A6, 0x5F16D052, 0xAD7D5351
277188605Srrs};
278188605Srrs
279188605Srrs/*
280188605Srrs * end of the CRC lookup table crc_tableil8_o32
281188605Srrs */
282188605Srrs
283188605Srrs
284188605Srrs
285188605Srrs/*
286188605Srrs * The following CRC lookup table was generated automagically using the
287188605Srrs * following model parameters:
288188605Srrs *
289188605Srrs * Generator Polynomial = ................. 0x1EDC6F41
290188605Srrs * Generator Polynomial Length = .......... 32 bits
291188605Srrs * Reflected Bits = ....................... TRUE
292188605Srrs * Table Generation Offset = .............. 32 bits
293188605Srrs * Number of Slices = ..................... 8 slices
294188605Srrs * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
295188605Srrs * Directory Name = ....................... .\
296188605Srrs * File Name = ............................ 8x256_tables.c
297188605Srrs */
298188605Srrs
299233517Smariusstatic const uint32_t sctp_crc_tableil8_o40[256] =
300188605Srrs{
301188605Srrs	0x00000000, 0x13A29877, 0x274530EE, 0x34E7A899, 0x4E8A61DC, 0x5D28F9AB, 0x69CF5132, 0x7A6DC945,
302188605Srrs	0x9D14C3B8, 0x8EB65BCF, 0xBA51F356, 0xA9F36B21, 0xD39EA264, 0xC03C3A13, 0xF4DB928A, 0xE7790AFD,
303188605Srrs	0x3FC5F181, 0x2C6769F6, 0x1880C16F, 0x0B225918, 0x714F905D, 0x62ED082A, 0x560AA0B3, 0x45A838C4,
304188605Srrs	0xA2D13239, 0xB173AA4E, 0x859402D7, 0x96369AA0, 0xEC5B53E5, 0xFFF9CB92, 0xCB1E630B, 0xD8BCFB7C,
305188605Srrs	0x7F8BE302, 0x6C297B75, 0x58CED3EC, 0x4B6C4B9B, 0x310182DE, 0x22A31AA9, 0x1644B230, 0x05E62A47,
306188605Srrs	0xE29F20BA, 0xF13DB8CD, 0xC5DA1054, 0xD6788823, 0xAC154166, 0xBFB7D911, 0x8B507188, 0x98F2E9FF,
307188605Srrs	0x404E1283, 0x53EC8AF4, 0x670B226D, 0x74A9BA1A, 0x0EC4735F, 0x1D66EB28, 0x298143B1, 0x3A23DBC6,
308188605Srrs	0xDD5AD13B, 0xCEF8494C, 0xFA1FE1D5, 0xE9BD79A2, 0x93D0B0E7, 0x80722890, 0xB4958009, 0xA737187E,
309188605Srrs	0xFF17C604, 0xECB55E73, 0xD852F6EA, 0xCBF06E9D, 0xB19DA7D8, 0xA23F3FAF, 0x96D89736, 0x857A0F41,
310188605Srrs	0x620305BC, 0x71A19DCB, 0x45463552, 0x56E4AD25, 0x2C896460, 0x3F2BFC17, 0x0BCC548E, 0x186ECCF9,
311188605Srrs	0xC0D23785, 0xD370AFF2, 0xE797076B, 0xF4359F1C, 0x8E585659, 0x9DFACE2E, 0xA91D66B7, 0xBABFFEC0,
312188605Srrs	0x5DC6F43D, 0x4E646C4A, 0x7A83C4D3, 0x69215CA4, 0x134C95E1, 0x00EE0D96, 0x3409A50F, 0x27AB3D78,
313188605Srrs	0x809C2506, 0x933EBD71, 0xA7D915E8, 0xB47B8D9F, 0xCE1644DA, 0xDDB4DCAD, 0xE9537434, 0xFAF1EC43,
314188605Srrs	0x1D88E6BE, 0x0E2A7EC9, 0x3ACDD650, 0x296F4E27, 0x53028762, 0x40A01F15, 0x7447B78C, 0x67E52FFB,
315188605Srrs	0xBF59D487, 0xACFB4CF0, 0x981CE469, 0x8BBE7C1E, 0xF1D3B55B, 0xE2712D2C, 0xD69685B5, 0xC5341DC2,
316188605Srrs	0x224D173F, 0x31EF8F48, 0x050827D1, 0x16AABFA6, 0x6CC776E3, 0x7F65EE94, 0x4B82460D, 0x5820DE7A,
317188605Srrs	0xFBC3FAF9, 0xE861628E, 0xDC86CA17, 0xCF245260, 0xB5499B25, 0xA6EB0352, 0x920CABCB, 0x81AE33BC,
318188605Srrs	0x66D73941, 0x7575A136, 0x419209AF, 0x523091D8, 0x285D589D, 0x3BFFC0EA, 0x0F186873, 0x1CBAF004,
319188605Srrs	0xC4060B78, 0xD7A4930F, 0xE3433B96, 0xF0E1A3E1, 0x8A8C6AA4, 0x992EF2D3, 0xADC95A4A, 0xBE6BC23D,
320188605Srrs	0x5912C8C0, 0x4AB050B7, 0x7E57F82E, 0x6DF56059, 0x1798A91C, 0x043A316B, 0x30DD99F2, 0x237F0185,
321188605Srrs	0x844819FB, 0x97EA818C, 0xA30D2915, 0xB0AFB162, 0xCAC27827, 0xD960E050, 0xED8748C9, 0xFE25D0BE,
322188605Srrs	0x195CDA43, 0x0AFE4234, 0x3E19EAAD, 0x2DBB72DA, 0x57D6BB9F, 0x447423E8, 0x70938B71, 0x63311306,
323188605Srrs	0xBB8DE87A, 0xA82F700D, 0x9CC8D894, 0x8F6A40E3, 0xF50789A6, 0xE6A511D1, 0xD242B948, 0xC1E0213F,
324188605Srrs	0x26992BC2, 0x353BB3B5, 0x01DC1B2C, 0x127E835B, 0x68134A1E, 0x7BB1D269, 0x4F567AF0, 0x5CF4E287,
325188605Srrs	0x04D43CFD, 0x1776A48A, 0x23910C13, 0x30339464, 0x4A5E5D21, 0x59FCC556, 0x6D1B6DCF, 0x7EB9F5B8,
326188605Srrs	0x99C0FF45, 0x8A626732, 0xBE85CFAB, 0xAD2757DC, 0xD74A9E99, 0xC4E806EE, 0xF00FAE77, 0xE3AD3600,
327188605Srrs	0x3B11CD7C, 0x28B3550B, 0x1C54FD92, 0x0FF665E5, 0x759BACA0, 0x663934D7, 0x52DE9C4E, 0x417C0439,
328188605Srrs	0xA6050EC4, 0xB5A796B3, 0x81403E2A, 0x92E2A65D, 0xE88F6F18, 0xFB2DF76F, 0xCFCA5FF6, 0xDC68C781,
329188605Srrs	0x7B5FDFFF, 0x68FD4788, 0x5C1AEF11, 0x4FB87766, 0x35D5BE23, 0x26772654, 0x12908ECD, 0x013216BA,
330188605Srrs	0xE64B1C47, 0xF5E98430, 0xC10E2CA9, 0xD2ACB4DE, 0xA8C17D9B, 0xBB63E5EC, 0x8F844D75, 0x9C26D502,
331188605Srrs	0x449A2E7E, 0x5738B609, 0x63DF1E90, 0x707D86E7, 0x0A104FA2, 0x19B2D7D5, 0x2D557F4C, 0x3EF7E73B,
332188605Srrs	0xD98EEDC6, 0xCA2C75B1, 0xFECBDD28, 0xED69455F, 0x97048C1A, 0x84A6146D, 0xB041BCF4, 0xA3E32483
333188605Srrs};
334188605Srrs
335188605Srrs/*
336188605Srrs * end of the CRC lookup table crc_tableil8_o40
337188605Srrs */
338188605Srrs
339188605Srrs
340188605Srrs
341188605Srrs/*
342188605Srrs * The following CRC lookup table was generated automagically using the
343188605Srrs * following model parameters:
344188605Srrs *
345188605Srrs * Generator Polynomial = ................. 0x1EDC6F41
346188605Srrs * Generator Polynomial Length = .......... 32 bits
347188605Srrs * Reflected Bits = ....................... TRUE
348188605Srrs * Table Generation Offset = .............. 32 bits
349188605Srrs * Number of Slices = ..................... 8 slices
350188605Srrs * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
351188605Srrs * Directory Name = ....................... .\
352188605Srrs * File Name = ............................ 8x256_tables.c
353188605Srrs */
354188605Srrs
355233517Smariusstatic const uint32_t sctp_crc_tableil8_o48[256] =
356188605Srrs{
357188605Srrs	0x00000000, 0xA541927E, 0x4F6F520D, 0xEA2EC073, 0x9EDEA41A, 0x3B9F3664, 0xD1B1F617, 0x74F06469,
358188605Srrs	0x38513EC5, 0x9D10ACBB, 0x773E6CC8, 0xD27FFEB6, 0xA68F9ADF, 0x03CE08A1, 0xE9E0C8D2, 0x4CA15AAC,
359188605Srrs	0x70A27D8A, 0xD5E3EFF4, 0x3FCD2F87, 0x9A8CBDF9, 0xEE7CD990, 0x4B3D4BEE, 0xA1138B9D, 0x045219E3,
360188605Srrs	0x48F3434F, 0xEDB2D131, 0x079C1142, 0xA2DD833C, 0xD62DE755, 0x736C752B, 0x9942B558, 0x3C032726,
361188605Srrs	0xE144FB14, 0x4405696A, 0xAE2BA919, 0x0B6A3B67, 0x7F9A5F0E, 0xDADBCD70, 0x30F50D03, 0x95B49F7D,
362188605Srrs	0xD915C5D1, 0x7C5457AF, 0x967A97DC, 0x333B05A2, 0x47CB61CB, 0xE28AF3B5, 0x08A433C6, 0xADE5A1B8,
363188605Srrs	0x91E6869E, 0x34A714E0, 0xDE89D493, 0x7BC846ED, 0x0F382284, 0xAA79B0FA, 0x40577089, 0xE516E2F7,
364188605Srrs	0xA9B7B85B, 0x0CF62A25, 0xE6D8EA56, 0x43997828, 0x37691C41, 0x92288E3F, 0x78064E4C, 0xDD47DC32,
365188605Srrs	0xC76580D9, 0x622412A7, 0x880AD2D4, 0x2D4B40AA, 0x59BB24C3, 0xFCFAB6BD, 0x16D476CE, 0xB395E4B0,
366188605Srrs	0xFF34BE1C, 0x5A752C62, 0xB05BEC11, 0x151A7E6F, 0x61EA1A06, 0xC4AB8878, 0x2E85480B, 0x8BC4DA75,
367188605Srrs	0xB7C7FD53, 0x12866F2D, 0xF8A8AF5E, 0x5DE93D20, 0x29195949, 0x8C58CB37, 0x66760B44, 0xC337993A,
368188605Srrs	0x8F96C396, 0x2AD751E8, 0xC0F9919B, 0x65B803E5, 0x1148678C, 0xB409F5F2, 0x5E273581, 0xFB66A7FF,
369188605Srrs	0x26217BCD, 0x8360E9B3, 0x694E29C0, 0xCC0FBBBE, 0xB8FFDFD7, 0x1DBE4DA9, 0xF7908DDA, 0x52D11FA4,
370188605Srrs	0x1E704508, 0xBB31D776, 0x511F1705, 0xF45E857B, 0x80AEE112, 0x25EF736C, 0xCFC1B31F, 0x6A802161,
371188605Srrs	0x56830647, 0xF3C29439, 0x19EC544A, 0xBCADC634, 0xC85DA25D, 0x6D1C3023, 0x8732F050, 0x2273622E,
372188605Srrs	0x6ED23882, 0xCB93AAFC, 0x21BD6A8F, 0x84FCF8F1, 0xF00C9C98, 0x554D0EE6, 0xBF63CE95, 0x1A225CEB,
373188605Srrs	0x8B277743, 0x2E66E53D, 0xC448254E, 0x6109B730, 0x15F9D359, 0xB0B84127, 0x5A968154, 0xFFD7132A,
374188605Srrs	0xB3764986, 0x1637DBF8, 0xFC191B8B, 0x595889F5, 0x2DA8ED9C, 0x88E97FE2, 0x62C7BF91, 0xC7862DEF,
375188605Srrs	0xFB850AC9, 0x5EC498B7, 0xB4EA58C4, 0x11ABCABA, 0x655BAED3, 0xC01A3CAD, 0x2A34FCDE, 0x8F756EA0,
376188605Srrs	0xC3D4340C, 0x6695A672, 0x8CBB6601, 0x29FAF47F, 0x5D0A9016, 0xF84B0268, 0x1265C21B, 0xB7245065,
377188605Srrs	0x6A638C57, 0xCF221E29, 0x250CDE5A, 0x804D4C24, 0xF4BD284D, 0x51FCBA33, 0xBBD27A40, 0x1E93E83E,
378188605Srrs	0x5232B292, 0xF77320EC, 0x1D5DE09F, 0xB81C72E1, 0xCCEC1688, 0x69AD84F6, 0x83834485, 0x26C2D6FB,
379188605Srrs	0x1AC1F1DD, 0xBF8063A3, 0x55AEA3D0, 0xF0EF31AE, 0x841F55C7, 0x215EC7B9, 0xCB7007CA, 0x6E3195B4,
380188605Srrs	0x2290CF18, 0x87D15D66, 0x6DFF9D15, 0xC8BE0F6B, 0xBC4E6B02, 0x190FF97C, 0xF321390F, 0x5660AB71,
381188605Srrs	0x4C42F79A, 0xE90365E4, 0x032DA597, 0xA66C37E9, 0xD29C5380, 0x77DDC1FE, 0x9DF3018D, 0x38B293F3,
382188605Srrs	0x7413C95F, 0xD1525B21, 0x3B7C9B52, 0x9E3D092C, 0xEACD6D45, 0x4F8CFF3B, 0xA5A23F48, 0x00E3AD36,
383188605Srrs	0x3CE08A10, 0x99A1186E, 0x738FD81D, 0xD6CE4A63, 0xA23E2E0A, 0x077FBC74, 0xED517C07, 0x4810EE79,
384188605Srrs	0x04B1B4D5, 0xA1F026AB, 0x4BDEE6D8, 0xEE9F74A6, 0x9A6F10CF, 0x3F2E82B1, 0xD50042C2, 0x7041D0BC,
385188605Srrs	0xAD060C8E, 0x08479EF0, 0xE2695E83, 0x4728CCFD, 0x33D8A894, 0x96993AEA, 0x7CB7FA99, 0xD9F668E7,
386188605Srrs	0x9557324B, 0x3016A035, 0xDA386046, 0x7F79F238, 0x0B899651, 0xAEC8042F, 0x44E6C45C, 0xE1A75622,
387188605Srrs	0xDDA47104, 0x78E5E37A, 0x92CB2309, 0x378AB177, 0x437AD51E, 0xE63B4760, 0x0C158713, 0xA954156D,
388188605Srrs	0xE5F54FC1, 0x40B4DDBF, 0xAA9A1DCC, 0x0FDB8FB2, 0x7B2BEBDB, 0xDE6A79A5, 0x3444B9D6, 0x91052BA8
389188605Srrs};
390188605Srrs
391188605Srrs/*
392188605Srrs * end of the CRC lookup table crc_tableil8_o48
393188605Srrs */
394188605Srrs
395188605Srrs
396188605Srrs
397188605Srrs/*
398188605Srrs * The following CRC lookup table was generated automagically using the
399188605Srrs * following model parameters:
400188605Srrs *
401188605Srrs * Generator Polynomial = ................. 0x1EDC6F41
402188605Srrs * Generator Polynomial Length = .......... 32 bits
403188605Srrs * Reflected Bits = ....................... TRUE
404188605Srrs * Table Generation Offset = .............. 32 bits
405188605Srrs * Number of Slices = ..................... 8 slices
406188605Srrs * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
407188605Srrs * Directory Name = ....................... .\
408188605Srrs * File Name = ............................ 8x256_tables.c
409188605Srrs */
410188605Srrs
411233517Smariusstatic const uint32_t sctp_crc_tableil8_o56[256] =
412188605Srrs{
413188605Srrs	0x00000000, 0xDD45AAB8, 0xBF672381, 0x62228939, 0x7B2231F3, 0xA6679B4B, 0xC4451272, 0x1900B8CA,
414188605Srrs	0xF64463E6, 0x2B01C95E, 0x49234067, 0x9466EADF, 0x8D665215, 0x5023F8AD, 0x32017194, 0xEF44DB2C,
415188605Srrs	0xE964B13D, 0x34211B85, 0x560392BC, 0x8B463804, 0x924680CE, 0x4F032A76, 0x2D21A34F, 0xF06409F7,
416188605Srrs	0x1F20D2DB, 0xC2657863, 0xA047F15A, 0x7D025BE2, 0x6402E328, 0xB9474990, 0xDB65C0A9, 0x06206A11,
417188605Srrs	0xD725148B, 0x0A60BE33, 0x6842370A, 0xB5079DB2, 0xAC072578, 0x71428FC0, 0x136006F9, 0xCE25AC41,
418188605Srrs	0x2161776D, 0xFC24DDD5, 0x9E0654EC, 0x4343FE54, 0x5A43469E, 0x8706EC26, 0xE524651F, 0x3861CFA7,
419188605Srrs	0x3E41A5B6, 0xE3040F0E, 0x81268637, 0x5C632C8F, 0x45639445, 0x98263EFD, 0xFA04B7C4, 0x27411D7C,
420188605Srrs	0xC805C650, 0x15406CE8, 0x7762E5D1, 0xAA274F69, 0xB327F7A3, 0x6E625D1B, 0x0C40D422, 0xD1057E9A,
421188605Srrs	0xABA65FE7, 0x76E3F55F, 0x14C17C66, 0xC984D6DE, 0xD0846E14, 0x0DC1C4AC, 0x6FE34D95, 0xB2A6E72D,
422188605Srrs	0x5DE23C01, 0x80A796B9, 0xE2851F80, 0x3FC0B538, 0x26C00DF2, 0xFB85A74A, 0x99A72E73, 0x44E284CB,
423188605Srrs	0x42C2EEDA, 0x9F874462, 0xFDA5CD5B, 0x20E067E3, 0x39E0DF29, 0xE4A57591, 0x8687FCA8, 0x5BC25610,
424188605Srrs	0xB4868D3C, 0x69C32784, 0x0BE1AEBD, 0xD6A40405, 0xCFA4BCCF, 0x12E11677, 0x70C39F4E, 0xAD8635F6,
425188605Srrs	0x7C834B6C, 0xA1C6E1D4, 0xC3E468ED, 0x1EA1C255, 0x07A17A9F, 0xDAE4D027, 0xB8C6591E, 0x6583F3A6,
426188605Srrs	0x8AC7288A, 0x57828232, 0x35A00B0B, 0xE8E5A1B3, 0xF1E51979, 0x2CA0B3C1, 0x4E823AF8, 0x93C79040,
427188605Srrs	0x95E7FA51, 0x48A250E9, 0x2A80D9D0, 0xF7C57368, 0xEEC5CBA2, 0x3380611A, 0x51A2E823, 0x8CE7429B,
428188605Srrs	0x63A399B7, 0xBEE6330F, 0xDCC4BA36, 0x0181108E, 0x1881A844, 0xC5C402FC, 0xA7E68BC5, 0x7AA3217D,
429188605Srrs	0x52A0C93F, 0x8FE56387, 0xEDC7EABE, 0x30824006, 0x2982F8CC, 0xF4C75274, 0x96E5DB4D, 0x4BA071F5,
430188605Srrs	0xA4E4AAD9, 0x79A10061, 0x1B838958, 0xC6C623E0, 0xDFC69B2A, 0x02833192, 0x60A1B8AB, 0xBDE41213,
431188605Srrs	0xBBC47802, 0x6681D2BA, 0x04A35B83, 0xD9E6F13B, 0xC0E649F1, 0x1DA3E349, 0x7F816A70, 0xA2C4C0C8,
432188605Srrs	0x4D801BE4, 0x90C5B15C, 0xF2E73865, 0x2FA292DD, 0x36A22A17, 0xEBE780AF, 0x89C50996, 0x5480A32E,
433188605Srrs	0x8585DDB4, 0x58C0770C, 0x3AE2FE35, 0xE7A7548D, 0xFEA7EC47, 0x23E246FF, 0x41C0CFC6, 0x9C85657E,
434188605Srrs	0x73C1BE52, 0xAE8414EA, 0xCCA69DD3, 0x11E3376B, 0x08E38FA1, 0xD5A62519, 0xB784AC20, 0x6AC10698,
435188605Srrs	0x6CE16C89, 0xB1A4C631, 0xD3864F08, 0x0EC3E5B0, 0x17C35D7A, 0xCA86F7C2, 0xA8A47EFB, 0x75E1D443,
436188605Srrs	0x9AA50F6F, 0x47E0A5D7, 0x25C22CEE, 0xF8878656, 0xE1873E9C, 0x3CC29424, 0x5EE01D1D, 0x83A5B7A5,
437188605Srrs	0xF90696D8, 0x24433C60, 0x4661B559, 0x9B241FE1, 0x8224A72B, 0x5F610D93, 0x3D4384AA, 0xE0062E12,
438188605Srrs	0x0F42F53E, 0xD2075F86, 0xB025D6BF, 0x6D607C07, 0x7460C4CD, 0xA9256E75, 0xCB07E74C, 0x16424DF4,
439188605Srrs	0x106227E5, 0xCD278D5D, 0xAF050464, 0x7240AEDC, 0x6B401616, 0xB605BCAE, 0xD4273597, 0x09629F2F,
440188605Srrs	0xE6264403, 0x3B63EEBB, 0x59416782, 0x8404CD3A, 0x9D0475F0, 0x4041DF48, 0x22635671, 0xFF26FCC9,
441188605Srrs	0x2E238253, 0xF36628EB, 0x9144A1D2, 0x4C010B6A, 0x5501B3A0, 0x88441918, 0xEA669021, 0x37233A99,
442188605Srrs	0xD867E1B5, 0x05224B0D, 0x6700C234, 0xBA45688C, 0xA345D046, 0x7E007AFE, 0x1C22F3C7, 0xC167597F,
443188605Srrs	0xC747336E, 0x1A0299D6, 0x782010EF, 0xA565BA57, 0xBC65029D, 0x6120A825, 0x0302211C, 0xDE478BA4,
444188605Srrs	0x31035088, 0xEC46FA30, 0x8E647309, 0x5321D9B1, 0x4A21617B, 0x9764CBC3, 0xF54642FA, 0x2803E842
445188605Srrs};
446188605Srrs
447188605Srrs/*
448188605Srrs * end of the CRC lookup table crc_tableil8_o56
449188605Srrs */
450188605Srrs
451188605Srrs
452188605Srrs
453188605Srrs/*
454188605Srrs * The following CRC lookup table was generated automagically using the
455188605Srrs * following model parameters:
456188605Srrs *
457188605Srrs * Generator Polynomial = ................. 0x1EDC6F41
458188605Srrs * Generator Polynomial Length = .......... 32 bits
459188605Srrs * Reflected Bits = ....................... TRUE
460188605Srrs * Table Generation Offset = .............. 32 bits
461188605Srrs * Number of Slices = ..................... 8 slices
462188605Srrs * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
463188605Srrs * Directory Name = ....................... .\
464188605Srrs * File Name = ............................ 8x256_tables.c
465188605Srrs */
466188605Srrs
467233517Smariusstatic const uint32_t sctp_crc_tableil8_o64[256] =
468188605Srrs{
469188605Srrs	0x00000000, 0x38116FAC, 0x7022DF58, 0x4833B0F4, 0xE045BEB0, 0xD854D11C, 0x906761E8, 0xA8760E44,
470188605Srrs	0xC5670B91, 0xFD76643D, 0xB545D4C9, 0x8D54BB65, 0x2522B521, 0x1D33DA8D, 0x55006A79, 0x6D1105D5,
471188605Srrs	0x8F2261D3, 0xB7330E7F, 0xFF00BE8B, 0xC711D127, 0x6F67DF63, 0x5776B0CF, 0x1F45003B, 0x27546F97,
472188605Srrs	0x4A456A42, 0x725405EE, 0x3A67B51A, 0x0276DAB6, 0xAA00D4F2, 0x9211BB5E, 0xDA220BAA, 0xE2336406,
473188605Srrs	0x1BA8B557, 0x23B9DAFB, 0x6B8A6A0F, 0x539B05A3, 0xFBED0BE7, 0xC3FC644B, 0x8BCFD4BF, 0xB3DEBB13,
474188605Srrs	0xDECFBEC6, 0xE6DED16A, 0xAEED619E, 0x96FC0E32, 0x3E8A0076, 0x069B6FDA, 0x4EA8DF2E, 0x76B9B082,
475188605Srrs	0x948AD484, 0xAC9BBB28, 0xE4A80BDC, 0xDCB96470, 0x74CF6A34, 0x4CDE0598, 0x04EDB56C, 0x3CFCDAC0,
476188605Srrs	0x51EDDF15, 0x69FCB0B9, 0x21CF004D, 0x19DE6FE1, 0xB1A861A5, 0x89B90E09, 0xC18ABEFD, 0xF99BD151,
477188605Srrs	0x37516AAE, 0x0F400502, 0x4773B5F6, 0x7F62DA5A, 0xD714D41E, 0xEF05BBB2, 0xA7360B46, 0x9F2764EA,
478188605Srrs	0xF236613F, 0xCA270E93, 0x8214BE67, 0xBA05D1CB, 0x1273DF8F, 0x2A62B023, 0x625100D7, 0x5A406F7B,
479188605Srrs	0xB8730B7D, 0x806264D1, 0xC851D425, 0xF040BB89, 0x5836B5CD, 0x6027DA61, 0x28146A95, 0x10050539,
480188605Srrs	0x7D1400EC, 0x45056F40, 0x0D36DFB4, 0x3527B018, 0x9D51BE5C, 0xA540D1F0, 0xED736104, 0xD5620EA8,
481188605Srrs	0x2CF9DFF9, 0x14E8B055, 0x5CDB00A1, 0x64CA6F0D, 0xCCBC6149, 0xF4AD0EE5, 0xBC9EBE11, 0x848FD1BD,
482188605Srrs	0xE99ED468, 0xD18FBBC4, 0x99BC0B30, 0xA1AD649C, 0x09DB6AD8, 0x31CA0574, 0x79F9B580, 0x41E8DA2C,
483188605Srrs	0xA3DBBE2A, 0x9BCAD186, 0xD3F96172, 0xEBE80EDE, 0x439E009A, 0x7B8F6F36, 0x33BCDFC2, 0x0BADB06E,
484188605Srrs	0x66BCB5BB, 0x5EADDA17, 0x169E6AE3, 0x2E8F054F, 0x86F90B0B, 0xBEE864A7, 0xF6DBD453, 0xCECABBFF,
485188605Srrs	0x6EA2D55C, 0x56B3BAF0, 0x1E800A04, 0x269165A8, 0x8EE76BEC, 0xB6F60440, 0xFEC5B4B4, 0xC6D4DB18,
486188605Srrs	0xABC5DECD, 0x93D4B161, 0xDBE70195, 0xE3F66E39, 0x4B80607D, 0x73910FD1, 0x3BA2BF25, 0x03B3D089,
487188605Srrs	0xE180B48F, 0xD991DB23, 0x91A26BD7, 0xA9B3047B, 0x01C50A3F, 0x39D46593, 0x71E7D567, 0x49F6BACB,
488188605Srrs	0x24E7BF1E, 0x1CF6D0B2, 0x54C56046, 0x6CD40FEA, 0xC4A201AE, 0xFCB36E02, 0xB480DEF6, 0x8C91B15A,
489188605Srrs	0x750A600B, 0x4D1B0FA7, 0x0528BF53, 0x3D39D0FF, 0x954FDEBB, 0xAD5EB117, 0xE56D01E3, 0xDD7C6E4F,
490188605Srrs	0xB06D6B9A, 0x887C0436, 0xC04FB4C2, 0xF85EDB6E, 0x5028D52A, 0x6839BA86, 0x200A0A72, 0x181B65DE,
491188605Srrs	0xFA2801D8, 0xC2396E74, 0x8A0ADE80, 0xB21BB12C, 0x1A6DBF68, 0x227CD0C4, 0x6A4F6030, 0x525E0F9C,
492188605Srrs	0x3F4F0A49, 0x075E65E5, 0x4F6DD511, 0x777CBABD, 0xDF0AB4F9, 0xE71BDB55, 0xAF286BA1, 0x9739040D,
493188605Srrs	0x59F3BFF2, 0x61E2D05E, 0x29D160AA, 0x11C00F06, 0xB9B60142, 0x81A76EEE, 0xC994DE1A, 0xF185B1B6,
494188605Srrs	0x9C94B463, 0xA485DBCF, 0xECB66B3B, 0xD4A70497, 0x7CD10AD3, 0x44C0657F, 0x0CF3D58B, 0x34E2BA27,
495188605Srrs	0xD6D1DE21, 0xEEC0B18D, 0xA6F30179, 0x9EE26ED5, 0x36946091, 0x0E850F3D, 0x46B6BFC9, 0x7EA7D065,
496188605Srrs	0x13B6D5B0, 0x2BA7BA1C, 0x63940AE8, 0x5B856544, 0xF3F36B00, 0xCBE204AC, 0x83D1B458, 0xBBC0DBF4,
497188605Srrs	0x425B0AA5, 0x7A4A6509, 0x3279D5FD, 0x0A68BA51, 0xA21EB415, 0x9A0FDBB9, 0xD23C6B4D, 0xEA2D04E1,
498188605Srrs	0x873C0134, 0xBF2D6E98, 0xF71EDE6C, 0xCF0FB1C0, 0x6779BF84, 0x5F68D028, 0x175B60DC, 0x2F4A0F70,
499188605Srrs	0xCD796B76, 0xF56804DA, 0xBD5BB42E, 0x854ADB82, 0x2D3CD5C6, 0x152DBA6A, 0x5D1E0A9E, 0x650F6532,
500188605Srrs	0x081E60E7, 0x300F0F4B, 0x783CBFBF, 0x402DD013, 0xE85BDE57, 0xD04AB1FB, 0x9879010F, 0xA0686EA3
501188605Srrs};
502188605Srrs
503188605Srrs/*
504188605Srrs * end of the CRC lookup table crc_tableil8_o64
505188605Srrs */
506188605Srrs
507188605Srrs
508188605Srrs
509188605Srrs/*
510188605Srrs * The following CRC lookup table was generated automagically using the
511188605Srrs * following model parameters:
512188605Srrs *
513188605Srrs * Generator Polynomial = ................. 0x1EDC6F41
514188605Srrs * Generator Polynomial Length = .......... 32 bits
515188605Srrs * Reflected Bits = ....................... TRUE
516188605Srrs * Table Generation Offset = .............. 32 bits
517188605Srrs * Number of Slices = ..................... 8 slices
518188605Srrs * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
519188605Srrs * Directory Name = ....................... .\
520188605Srrs * File Name = ............................ 8x256_tables.c
521188605Srrs */
522188605Srrs
523233517Smariusstatic const uint32_t sctp_crc_tableil8_o72[256] =
524188605Srrs{
525188605Srrs	0x00000000, 0xEF306B19, 0xDB8CA0C3, 0x34BCCBDA, 0xB2F53777, 0x5DC55C6E, 0x697997B4, 0x8649FCAD,
526188605Srrs	0x6006181F, 0x8F367306, 0xBB8AB8DC, 0x54BAD3C5, 0xD2F32F68, 0x3DC34471, 0x097F8FAB, 0xE64FE4B2,
527188605Srrs	0xC00C303E, 0x2F3C5B27, 0x1B8090FD, 0xF4B0FBE4, 0x72F90749, 0x9DC96C50, 0xA975A78A, 0x4645CC93,
528188605Srrs	0xA00A2821, 0x4F3A4338, 0x7B8688E2, 0x94B6E3FB, 0x12FF1F56, 0xFDCF744F, 0xC973BF95, 0x2643D48C,
529188605Srrs	0x85F4168D, 0x6AC47D94, 0x5E78B64E, 0xB148DD57, 0x370121FA, 0xD8314AE3, 0xEC8D8139, 0x03BDEA20,
530188605Srrs	0xE5F20E92, 0x0AC2658B, 0x3E7EAE51, 0xD14EC548, 0x570739E5, 0xB83752FC, 0x8C8B9926, 0x63BBF23F,
531188605Srrs	0x45F826B3, 0xAAC84DAA, 0x9E748670, 0x7144ED69, 0xF70D11C4, 0x183D7ADD, 0x2C81B107, 0xC3B1DA1E,
532188605Srrs	0x25FE3EAC, 0xCACE55B5, 0xFE729E6F, 0x1142F576, 0x970B09DB, 0x783B62C2, 0x4C87A918, 0xA3B7C201,
533188605Srrs	0x0E045BEB, 0xE13430F2, 0xD588FB28, 0x3AB89031, 0xBCF16C9C, 0x53C10785, 0x677DCC5F, 0x884DA746,
534188605Srrs	0x6E0243F4, 0x813228ED, 0xB58EE337, 0x5ABE882E, 0xDCF77483, 0x33C71F9A, 0x077BD440, 0xE84BBF59,
535188605Srrs	0xCE086BD5, 0x213800CC, 0x1584CB16, 0xFAB4A00F, 0x7CFD5CA2, 0x93CD37BB, 0xA771FC61, 0x48419778,
536188605Srrs	0xAE0E73CA, 0x413E18D3, 0x7582D309, 0x9AB2B810, 0x1CFB44BD, 0xF3CB2FA4, 0xC777E47E, 0x28478F67,
537188605Srrs	0x8BF04D66, 0x64C0267F, 0x507CEDA5, 0xBF4C86BC, 0x39057A11, 0xD6351108, 0xE289DAD2, 0x0DB9B1CB,
538188605Srrs	0xEBF65579, 0x04C63E60, 0x307AF5BA, 0xDF4A9EA3, 0x5903620E, 0xB6330917, 0x828FC2CD, 0x6DBFA9D4,
539188605Srrs	0x4BFC7D58, 0xA4CC1641, 0x9070DD9B, 0x7F40B682, 0xF9094A2F, 0x16392136, 0x2285EAEC, 0xCDB581F5,
540188605Srrs	0x2BFA6547, 0xC4CA0E5E, 0xF076C584, 0x1F46AE9D, 0x990F5230, 0x763F3929, 0x4283F2F3, 0xADB399EA,
541188605Srrs	0x1C08B7D6, 0xF338DCCF, 0xC7841715, 0x28B47C0C, 0xAEFD80A1, 0x41CDEBB8, 0x75712062, 0x9A414B7B,
542188605Srrs	0x7C0EAFC9, 0x933EC4D0, 0xA7820F0A, 0x48B26413, 0xCEFB98BE, 0x21CBF3A7, 0x1577387D, 0xFA475364,
543188605Srrs	0xDC0487E8, 0x3334ECF1, 0x0788272B, 0xE8B84C32, 0x6EF1B09F, 0x81C1DB86, 0xB57D105C, 0x5A4D7B45,
544188605Srrs	0xBC029FF7, 0x5332F4EE, 0x678E3F34, 0x88BE542D, 0x0EF7A880, 0xE1C7C399, 0xD57B0843, 0x3A4B635A,
545188605Srrs	0x99FCA15B, 0x76CCCA42, 0x42700198, 0xAD406A81, 0x2B09962C, 0xC439FD35, 0xF08536EF, 0x1FB55DF6,
546188605Srrs	0xF9FAB944, 0x16CAD25D, 0x22761987, 0xCD46729E, 0x4B0F8E33, 0xA43FE52A, 0x90832EF0, 0x7FB345E9,
547188605Srrs	0x59F09165, 0xB6C0FA7C, 0x827C31A6, 0x6D4C5ABF, 0xEB05A612, 0x0435CD0B, 0x308906D1, 0xDFB96DC8,
548188605Srrs	0x39F6897A, 0xD6C6E263, 0xE27A29B9, 0x0D4A42A0, 0x8B03BE0D, 0x6433D514, 0x508F1ECE, 0xBFBF75D7,
549188605Srrs	0x120CEC3D, 0xFD3C8724, 0xC9804CFE, 0x26B027E7, 0xA0F9DB4A, 0x4FC9B053, 0x7B757B89, 0x94451090,
550188605Srrs	0x720AF422, 0x9D3A9F3B, 0xA98654E1, 0x46B63FF8, 0xC0FFC355, 0x2FCFA84C, 0x1B736396, 0xF443088F,
551188605Srrs	0xD200DC03, 0x3D30B71A, 0x098C7CC0, 0xE6BC17D9, 0x60F5EB74, 0x8FC5806D, 0xBB794BB7, 0x544920AE,
552188605Srrs	0xB206C41C, 0x5D36AF05, 0x698A64DF, 0x86BA0FC6, 0x00F3F36B, 0xEFC39872, 0xDB7F53A8, 0x344F38B1,
553188605Srrs	0x97F8FAB0, 0x78C891A9, 0x4C745A73, 0xA344316A, 0x250DCDC7, 0xCA3DA6DE, 0xFE816D04, 0x11B1061D,
554188605Srrs	0xF7FEE2AF, 0x18CE89B6, 0x2C72426C, 0xC3422975, 0x450BD5D8, 0xAA3BBEC1, 0x9E87751B, 0x71B71E02,
555188605Srrs	0x57F4CA8E, 0xB8C4A197, 0x8C786A4D, 0x63480154, 0xE501FDF9, 0x0A3196E0, 0x3E8D5D3A, 0xD1BD3623,
556188605Srrs	0x37F2D291, 0xD8C2B988, 0xEC7E7252, 0x034E194B, 0x8507E5E6, 0x6A378EFF, 0x5E8B4525, 0xB1BB2E3C
557188605Srrs};
558188605Srrs
559188605Srrs/*
560188605Srrs * end of the CRC lookup table crc_tableil8_o72
561188605Srrs */
562188605Srrs
563188605Srrs
564188605Srrs
565188605Srrs/*
566188605Srrs * The following CRC lookup table was generated automagically using the
567188605Srrs * following model parameters:
568188605Srrs *
569188605Srrs * Generator Polynomial = ................. 0x1EDC6F41
570188605Srrs * Generator Polynomial Length = .......... 32 bits
571188605Srrs * Reflected Bits = ....................... TRUE
572188605Srrs * Table Generation Offset = .............. 32 bits
573188605Srrs * Number of Slices = ..................... 8 slices
574188605Srrs * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
575188605Srrs * Directory Name = ....................... .\
576188605Srrs * File Name = ............................ 8x256_tables.c
577188605Srrs */
578188605Srrs
579233517Smariusstatic const uint32_t sctp_crc_tableil8_o80[256] =
580188605Srrs{
581188605Srrs	0x00000000, 0x68032CC8, 0xD0065990, 0xB8057558, 0xA5E0C5D1, 0xCDE3E919, 0x75E69C41, 0x1DE5B089,
582188605Srrs	0x4E2DFD53, 0x262ED19B, 0x9E2BA4C3, 0xF628880B, 0xEBCD3882, 0x83CE144A, 0x3BCB6112, 0x53C84DDA,
583188605Srrs	0x9C5BFAA6, 0xF458D66E, 0x4C5DA336, 0x245E8FFE, 0x39BB3F77, 0x51B813BF, 0xE9BD66E7, 0x81BE4A2F,
584188605Srrs	0xD27607F5, 0xBA752B3D, 0x02705E65, 0x6A7372AD, 0x7796C224, 0x1F95EEEC, 0xA7909BB4, 0xCF93B77C,
585188605Srrs	0x3D5B83BD, 0x5558AF75, 0xED5DDA2D, 0x855EF6E5, 0x98BB466C, 0xF0B86AA4, 0x48BD1FFC, 0x20BE3334,
586188605Srrs	0x73767EEE, 0x1B755226, 0xA370277E, 0xCB730BB6, 0xD696BB3F, 0xBE9597F7, 0x0690E2AF, 0x6E93CE67,
587188605Srrs	0xA100791B, 0xC90355D3, 0x7106208B, 0x19050C43, 0x04E0BCCA, 0x6CE39002, 0xD4E6E55A, 0xBCE5C992,
588188605Srrs	0xEF2D8448, 0x872EA880, 0x3F2BDDD8, 0x5728F110, 0x4ACD4199, 0x22CE6D51, 0x9ACB1809, 0xF2C834C1,
589188605Srrs	0x7AB7077A, 0x12B42BB2, 0xAAB15EEA, 0xC2B27222, 0xDF57C2AB, 0xB754EE63, 0x0F519B3B, 0x6752B7F3,
590188605Srrs	0x349AFA29, 0x5C99D6E1, 0xE49CA3B9, 0x8C9F8F71, 0x917A3FF8, 0xF9791330, 0x417C6668, 0x297F4AA0,
591188605Srrs	0xE6ECFDDC, 0x8EEFD114, 0x36EAA44C, 0x5EE98884, 0x430C380D, 0x2B0F14C5, 0x930A619D, 0xFB094D55,
592188605Srrs	0xA8C1008F, 0xC0C22C47, 0x78C7591F, 0x10C475D7, 0x0D21C55E, 0x6522E996, 0xDD279CCE, 0xB524B006,
593188605Srrs	0x47EC84C7, 0x2FEFA80F, 0x97EADD57, 0xFFE9F19F, 0xE20C4116, 0x8A0F6DDE, 0x320A1886, 0x5A09344E,
594188605Srrs	0x09C17994, 0x61C2555C, 0xD9C72004, 0xB1C40CCC, 0xAC21BC45, 0xC422908D, 0x7C27E5D5, 0x1424C91D,
595188605Srrs	0xDBB77E61, 0xB3B452A9, 0x0BB127F1, 0x63B20B39, 0x7E57BBB0, 0x16549778, 0xAE51E220, 0xC652CEE8,
596188605Srrs	0x959A8332, 0xFD99AFFA, 0x459CDAA2, 0x2D9FF66A, 0x307A46E3, 0x58796A2B, 0xE07C1F73, 0x887F33BB,
597188605Srrs	0xF56E0EF4, 0x9D6D223C, 0x25685764, 0x4D6B7BAC, 0x508ECB25, 0x388DE7ED, 0x808892B5, 0xE88BBE7D,
598188605Srrs	0xBB43F3A7, 0xD340DF6F, 0x6B45AA37, 0x034686FF, 0x1EA33676, 0x76A01ABE, 0xCEA56FE6, 0xA6A6432E,
599188605Srrs	0x6935F452, 0x0136D89A, 0xB933ADC2, 0xD130810A, 0xCCD53183, 0xA4D61D4B, 0x1CD36813, 0x74D044DB,
600188605Srrs	0x27180901, 0x4F1B25C9, 0xF71E5091, 0x9F1D7C59, 0x82F8CCD0, 0xEAFBE018, 0x52FE9540, 0x3AFDB988,
601188605Srrs	0xC8358D49, 0xA036A181, 0x1833D4D9, 0x7030F811, 0x6DD54898, 0x05D66450, 0xBDD31108, 0xD5D03DC0,
602188605Srrs	0x8618701A, 0xEE1B5CD2, 0x561E298A, 0x3E1D0542, 0x23F8B5CB, 0x4BFB9903, 0xF3FEEC5B, 0x9BFDC093,
603188605Srrs	0x546E77EF, 0x3C6D5B27, 0x84682E7F, 0xEC6B02B7, 0xF18EB23E, 0x998D9EF6, 0x2188EBAE, 0x498BC766,
604188605Srrs	0x1A438ABC, 0x7240A674, 0xCA45D32C, 0xA246FFE4, 0xBFA34F6D, 0xD7A063A5, 0x6FA516FD, 0x07A63A35,
605188605Srrs	0x8FD9098E, 0xE7DA2546, 0x5FDF501E, 0x37DC7CD6, 0x2A39CC5F, 0x423AE097, 0xFA3F95CF, 0x923CB907,
606188605Srrs	0xC1F4F4DD, 0xA9F7D815, 0x11F2AD4D, 0x79F18185, 0x6414310C, 0x0C171DC4, 0xB412689C, 0xDC114454,
607188605Srrs	0x1382F328, 0x7B81DFE0, 0xC384AAB8, 0xAB878670, 0xB66236F9, 0xDE611A31, 0x66646F69, 0x0E6743A1,
608188605Srrs	0x5DAF0E7B, 0x35AC22B3, 0x8DA957EB, 0xE5AA7B23, 0xF84FCBAA, 0x904CE762, 0x2849923A, 0x404ABEF2,
609188605Srrs	0xB2828A33, 0xDA81A6FB, 0x6284D3A3, 0x0A87FF6B, 0x17624FE2, 0x7F61632A, 0xC7641672, 0xAF673ABA,
610188605Srrs	0xFCAF7760, 0x94AC5BA8, 0x2CA92EF0, 0x44AA0238, 0x594FB2B1, 0x314C9E79, 0x8949EB21, 0xE14AC7E9,
611188605Srrs	0x2ED97095, 0x46DA5C5D, 0xFEDF2905, 0x96DC05CD, 0x8B39B544, 0xE33A998C, 0x5B3FECD4, 0x333CC01C,
612188605Srrs	0x60F48DC6, 0x08F7A10E, 0xB0F2D456, 0xD8F1F89E, 0xC5144817, 0xAD1764DF, 0x15121187, 0x7D113D4F
613188605Srrs};
614188605Srrs
615188605Srrs/*
616188605Srrs * end of the CRC lookup table crc_tableil8_o80
617188605Srrs */
618188605Srrs
619188605Srrs
620188605Srrs
621188605Srrs/*
622188605Srrs * The following CRC lookup table was generated automagically using the
623188605Srrs * following model parameters:
624188605Srrs *
625188605Srrs * Generator Polynomial = ................. 0x1EDC6F41
626188605Srrs * Generator Polynomial Length = .......... 32 bits
627188605Srrs * Reflected Bits = ....................... TRUE
628188605Srrs * Table Generation Offset = .............. 32 bits
629188605Srrs * Number of Slices = ..................... 8 slices
630188605Srrs * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
631188605Srrs * Directory Name = ....................... .\
632188605Srrs * File Name = ............................ 8x256_tables.c
633188605Srrs */
634188605Srrs
635233517Smariusstatic const uint32_t sctp_crc_tableil8_o88[256] =
636188605Srrs{
637188605Srrs	0x00000000, 0x493C7D27, 0x9278FA4E, 0xDB448769, 0x211D826D, 0x6821FF4A, 0xB3657823, 0xFA590504,
638188605Srrs	0x423B04DA, 0x0B0779FD, 0xD043FE94, 0x997F83B3, 0x632686B7, 0x2A1AFB90, 0xF15E7CF9, 0xB86201DE,
639188605Srrs	0x847609B4, 0xCD4A7493, 0x160EF3FA, 0x5F328EDD, 0xA56B8BD9, 0xEC57F6FE, 0x37137197, 0x7E2F0CB0,
640188605Srrs	0xC64D0D6E, 0x8F717049, 0x5435F720, 0x1D098A07, 0xE7508F03, 0xAE6CF224, 0x7528754D, 0x3C14086A,
641188605Srrs	0x0D006599, 0x443C18BE, 0x9F789FD7, 0xD644E2F0, 0x2C1DE7F4, 0x65219AD3, 0xBE651DBA, 0xF759609D,
642188605Srrs	0x4F3B6143, 0x06071C64, 0xDD439B0D, 0x947FE62A, 0x6E26E32E, 0x271A9E09, 0xFC5E1960, 0xB5626447,
643188605Srrs	0x89766C2D, 0xC04A110A, 0x1B0E9663, 0x5232EB44, 0xA86BEE40, 0xE1579367, 0x3A13140E, 0x732F6929,
644188605Srrs	0xCB4D68F7, 0x827115D0, 0x593592B9, 0x1009EF9E, 0xEA50EA9A, 0xA36C97BD, 0x782810D4, 0x31146DF3,
645188605Srrs	0x1A00CB32, 0x533CB615, 0x8878317C, 0xC1444C5B, 0x3B1D495F, 0x72213478, 0xA965B311, 0xE059CE36,
646188605Srrs	0x583BCFE8, 0x1107B2CF, 0xCA4335A6, 0x837F4881, 0x79264D85, 0x301A30A2, 0xEB5EB7CB, 0xA262CAEC,
647188605Srrs	0x9E76C286, 0xD74ABFA1, 0x0C0E38C8, 0x453245EF, 0xBF6B40EB, 0xF6573DCC, 0x2D13BAA5, 0x642FC782,
648188605Srrs	0xDC4DC65C, 0x9571BB7B, 0x4E353C12, 0x07094135, 0xFD504431, 0xB46C3916, 0x6F28BE7F, 0x2614C358,
649188605Srrs	0x1700AEAB, 0x5E3CD38C, 0x857854E5, 0xCC4429C2, 0x361D2CC6, 0x7F2151E1, 0xA465D688, 0xED59ABAF,
650188605Srrs	0x553BAA71, 0x1C07D756, 0xC743503F, 0x8E7F2D18, 0x7426281C, 0x3D1A553B, 0xE65ED252, 0xAF62AF75,
651188605Srrs	0x9376A71F, 0xDA4ADA38, 0x010E5D51, 0x48322076, 0xB26B2572, 0xFB575855, 0x2013DF3C, 0x692FA21B,
652188605Srrs	0xD14DA3C5, 0x9871DEE2, 0x4335598B, 0x0A0924AC, 0xF05021A8, 0xB96C5C8F, 0x6228DBE6, 0x2B14A6C1,
653188605Srrs	0x34019664, 0x7D3DEB43, 0xA6796C2A, 0xEF45110D, 0x151C1409, 0x5C20692E, 0x8764EE47, 0xCE589360,
654188605Srrs	0x763A92BE, 0x3F06EF99, 0xE44268F0, 0xAD7E15D7, 0x572710D3, 0x1E1B6DF4, 0xC55FEA9D, 0x8C6397BA,
655188605Srrs	0xB0779FD0, 0xF94BE2F7, 0x220F659E, 0x6B3318B9, 0x916A1DBD, 0xD856609A, 0x0312E7F3, 0x4A2E9AD4,
656188605Srrs	0xF24C9B0A, 0xBB70E62D, 0x60346144, 0x29081C63, 0xD3511967, 0x9A6D6440, 0x4129E329, 0x08159E0E,
657188605Srrs	0x3901F3FD, 0x703D8EDA, 0xAB7909B3, 0xE2457494, 0x181C7190, 0x51200CB7, 0x8A648BDE, 0xC358F6F9,
658188605Srrs	0x7B3AF727, 0x32068A00, 0xE9420D69, 0xA07E704E, 0x5A27754A, 0x131B086D, 0xC85F8F04, 0x8163F223,
659188605Srrs	0xBD77FA49, 0xF44B876E, 0x2F0F0007, 0x66337D20, 0x9C6A7824, 0xD5560503, 0x0E12826A, 0x472EFF4D,
660188605Srrs	0xFF4CFE93, 0xB67083B4, 0x6D3404DD, 0x240879FA, 0xDE517CFE, 0x976D01D9, 0x4C2986B0, 0x0515FB97,
661188605Srrs	0x2E015D56, 0x673D2071, 0xBC79A718, 0xF545DA3F, 0x0F1CDF3B, 0x4620A21C, 0x9D642575, 0xD4585852,
662188605Srrs	0x6C3A598C, 0x250624AB, 0xFE42A3C2, 0xB77EDEE5, 0x4D27DBE1, 0x041BA6C6, 0xDF5F21AF, 0x96635C88,
663188605Srrs	0xAA7754E2, 0xE34B29C5, 0x380FAEAC, 0x7133D38B, 0x8B6AD68F, 0xC256ABA8, 0x19122CC1, 0x502E51E6,
664188605Srrs	0xE84C5038, 0xA1702D1F, 0x7A34AA76, 0x3308D751, 0xC951D255, 0x806DAF72, 0x5B29281B, 0x1215553C,
665188605Srrs	0x230138CF, 0x6A3D45E8, 0xB179C281, 0xF845BFA6, 0x021CBAA2, 0x4B20C785, 0x906440EC, 0xD9583DCB,
666188605Srrs	0x613A3C15, 0x28064132, 0xF342C65B, 0xBA7EBB7C, 0x4027BE78, 0x091BC35F, 0xD25F4436, 0x9B633911,
667188605Srrs	0xA777317B, 0xEE4B4C5C, 0x350FCB35, 0x7C33B612, 0x866AB316, 0xCF56CE31, 0x14124958, 0x5D2E347F,
668188605Srrs	0xE54C35A1, 0xAC704886, 0x7734CFEF, 0x3E08B2C8, 0xC451B7CC, 0x8D6DCAEB, 0x56294D82, 0x1F1530A5
669188605Srrs};
670188605Srrs
671188605Srrs/*
672188605Srrs * end of the CRC lookup table crc_tableil8_o88
673188605Srrs */
674188605Srrs
675188605Srrs
676188605Srrsstatic uint32_t
677188605Srrscrc32c_sb8_64_bit(uint32_t crc,
678188605Srrs    const unsigned char *p_buf,
679188605Srrs    uint32_t length,
680188605Srrs    uint32_t init_bytes)
681188605Srrs{
682188605Srrs	uint32_t li;
683188605Srrs	uint32_t term1, term2;
684188605Srrs	uint32_t running_length;
685188605Srrs	uint32_t end_bytes;
686188605Srrs
687188605Srrs	running_length = ((length - init_bytes) / 8) * 8;
688188605Srrs	end_bytes = length - init_bytes - running_length;
689188605Srrs
690188605Srrs	for (li = 0; li < init_bytes; li++)
691188605Srrs		crc = sctp_crc_tableil8_o32[(crc ^ *p_buf++) & 0x000000FF] ^
692188605Srrs		    (crc >> 8);
693188605Srrs	for (li = 0; li < running_length / 8; li++) {
694188605Srrs#if BYTE_ORDER == BIG_ENDIAN
695188605Srrs		crc ^= *p_buf++;
696188605Srrs		crc ^= (*p_buf++) << 8;
697188605Srrs		crc ^= (*p_buf++) << 16;
698188605Srrs		crc ^= (*p_buf++) << 24;
699188605Srrs#else
700188605Srrs		crc ^= *(const uint32_t *) p_buf;
701188605Srrs		p_buf += 4;
702188605Srrs#endif
703188605Srrs		term1 = sctp_crc_tableil8_o88[crc & 0x000000FF] ^
704188605Srrs		    sctp_crc_tableil8_o80[(crc >> 8) & 0x000000FF];
705188605Srrs		term2 = crc >> 16;
706188605Srrs		crc = term1 ^
707188605Srrs		    sctp_crc_tableil8_o72[term2 & 0x000000FF] ^
708188605Srrs		    sctp_crc_tableil8_o64[(term2 >> 8) & 0x000000FF];
709188605Srrs
710188605Srrs#if BYTE_ORDER == BIG_ENDIAN
711188605Srrs		crc ^= sctp_crc_tableil8_o56[*p_buf++];
712188605Srrs		crc ^= sctp_crc_tableil8_o48[*p_buf++];
713188605Srrs		crc ^= sctp_crc_tableil8_o40[*p_buf++];
714188605Srrs		crc ^= sctp_crc_tableil8_o32[*p_buf++];
715188605Srrs#else
716188605Srrs		term1 = sctp_crc_tableil8_o56[(*(const uint32_t *) p_buf) & 0x000000FF] ^
717188605Srrs		    sctp_crc_tableil8_o48[((*(const uint32_t *) p_buf) >> 8) & 0x000000FF];
718188605Srrs
719188605Srrs		term2 = (*(const uint32_t *) p_buf) >> 16;
720188605Srrs		crc = crc ^
721188605Srrs		    term1 ^
722188605Srrs		    sctp_crc_tableil8_o40[term2 & 0x000000FF] ^
723188605Srrs		    sctp_crc_tableil8_o32[(term2 >> 8) & 0x000000FF];
724188605Srrs		p_buf += 4;
725188605Srrs#endif
726188605Srrs	}
727188605Srrs	for (li = 0; li < end_bytes; li++)
728188605Srrs		crc = sctp_crc_tableil8_o32[(crc ^ *p_buf++) & 0x000000FF] ^
729188605Srrs		    (crc >> 8);
730188605Srrs	return crc;
731188605Srrs}
732188605Srrs
733188605Srrsstatic uint32_t
734188605Srrsmultitable_crc32c(uint32_t crc32c,
735188605Srrs    const unsigned char *buffer,
736188605Srrs    unsigned int length)
737188605Srrs{
738188605Srrs	uint32_t to_even_word;
739188605Srrs
740188605Srrs	if (length == 0) {
741188605Srrs		return (crc32c);
742188605Srrs	}
743188605Srrs	to_even_word = (4 - (((uintptr_t) buffer) & 0x3));
744188605Srrs	return (crc32c_sb8_64_bit(crc32c, buffer, length, to_even_word));
745188605Srrs}
746188605Srrs
747188605Srrsuint32_t
748188605Srrscalculate_crc32c(uint32_t crc32c,
749188605Srrs    const unsigned char *buffer,
750188605Srrs    unsigned int length)
751188605Srrs{
752188605Srrs	if (length < 4) {
753188605Srrs		return (singletable_crc32c(crc32c, buffer, length));
754188605Srrs	} else {
755188605Srrs		return (multitable_crc32c(crc32c, buffer, length));
756188605Srrs	}
757188605Srrs}
758