4 * August 26, 2011 Darrick J. Wong <djwong at us.ibm.com>
5 * Reuse Bob Pearson's slice-by-8 implementation for e2fsprogs.
7 * July 20, 2011 Bob Pearson <rpearson at systemfabricworks.com>
8 * added slice by 8 algorithm to the existing conventional and
9 * slice by 4 algorithms.
11 * Oct 15, 2000 Matt Domsch <Matt_Domsch@dell.com>
12 * Nicer crc32 functions/docs submitted by linux@horizon.com. Thanks!
13 * Code was from the public domain, copyright abandoned. Code was
14 * subsequently included in the kernel, thus was re-licensed under the
17 * Oct 12, 2000 Matt Domsch <Matt_Domsch@dell.com>
18 * Same crc32 function was used in 5 other places in the kernel.
19 * I made one version, and deleted the others.
20 * There are various incantations of crc32(). Some use a seed of 0 or ~0.
21 * Some xor at the end with ~0. The generic crc32() function takes
22 * seed as an argument, and doesn't xor at the end. Then individual
23 * users can do whatever they need.
24 * drivers/net/smc9194.c uses seed ~0, doesn't xor with ~0.
25 * fs/jffs2 uses seed 0, doesn't xor with ~0.
26 * fs/partitions/efi.c uses seed ~0, xor's with ~0.
28 * This source code is licensed under the GNU General Public License,
29 * Version 2. See the file COPYING for more details.
36 #define min(x, y) ((x) > (y) ? (y) : (x))
37 #define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
38 #define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
39 #define ALIGN(x, a) __ALIGN_KERNEL((x), (a))
40 #define PTR_ALIGN(p, a) ((typeof(p))ALIGN((unsigned long)(p), (a)))
41 #include "crc32c_defs.h"
44 # define tole(x) (__force uint32_t) __constant_cpu_to_le32(x)
50 # define tobe(x) (__force uint32_t) __constant_cpu_to_be32(x)
55 #include "crc32c_table.h"
58 /* slice by 4 algorithm */
59 static uint32_t crc32c_le_body(uint32_t crc, uint8_t const *buf, size_t len)
68 uint8_t i0, i1, i2, i3;
70 crc = (__force uint32_t) __cpu_to_le32(crc);
72 /* unroll loop into 'init_bytes' odd bytes followed by
73 * 'words' aligned 4 byte words followed by
74 * 'end_bytes' odd bytes at the end */
76 p32 = (uint32_t *)PTR_ALIGN(p8, 4);
77 init_bytes = min((uintptr_t)p32 - (uintptr_t)p8, len);
78 words = (len - init_bytes) >> 2;
79 end_bytes = (len - init_bytes) & 3;
81 for (i = 0; i < init_bytes; i++) {
82 #ifndef WORDS_BIGENDIAN
84 crc = t0_le[i0] ^ (crc >> 8);
86 i0 = *p8++ ^ (crc >> 24);
87 crc = t0_le[i0] ^ (crc << 8);
91 /* using pre-increment below slightly faster */
94 for (i = 0; i < words; i++) {
95 #ifndef WORDS_BIGENDIAN
101 crc = t3_le[i3] ^ t2_le[i2] ^ t1_le[i1] ^ t0_le[i0];
108 crc = t3_le[i3] ^ t2_le[i2] ^ t1_le[i1] ^ t0_le[i0];
112 p8 = (uint8_t *)(++p32);
114 for (i = 0; i < end_bytes; i++) {
115 #ifndef WORDS_BIGENDIAN
117 crc = t0_le[i0] ^ (crc >> 8);
119 i0 = *p8++ ^ (crc >> 24);
120 crc = t0_le[i0] ^ (crc << 8);
124 return __le32_to_cpu((__force __le32)crc);
128 #if CRC_BE_BITS == 32
129 static uint32_t crc32c_be_body(uint32_t crc, uint8_t const *buf, size_t len)
138 uint8_t i0, i1, i2, i3;
140 crc = (__force uint32_t) __cpu_to_be32(crc);
143 p32 = (uint32_t *)PTR_ALIGN(p8, 4);
144 init_bytes = min((uintptr_t)p32 - (uintptr_t)p8, len);
145 words = (len - init_bytes) >> 2;
146 end_bytes = (len - init_bytes) & 3;
148 for (i = 0; i < init_bytes; i++) {
149 #ifndef WORDS_BIGENDIAN
151 crc = t0_be[i0] ^ (crc >> 8);
153 i0 = *p8++ ^ (crc >> 24);
154 crc = t0_be[i0] ^ (crc << 8);
160 for (i = 0; i < words; i++) {
161 #ifndef WORDS_BIGENDIAN
167 crc = t3_be[i3] ^ t2_be[i2] ^ t1_be[i1] ^ t0_be[i0];
174 crc = t3_be[i3] ^ t2_be[i2] ^ t1_be[i1] ^ t0_be[i0];
178 p8 = (uint8_t *)(++p32);
180 for (i = 0; i < end_bytes; i++) {
181 #ifndef WORDS_BIGENDIAN
183 crc = t0_be[i0] ^ (crc >> 8);
185 i0 = *p8++ ^ (crc >> 24);
186 crc = t0_be[i0] ^ (crc << 8);
190 return __be32_to_cpu((__force __be32)crc);
194 #if CRC_LE_BITS == 64
195 /* slice by 8 algorithm */
196 static uint32_t crc32c_le_body(uint32_t crc, uint8_t const *buf, size_t len)
205 uint8_t i0, i1, i2, i3;
207 crc = (__force uint32_t) __cpu_to_le32(crc);
210 p32 = (uint32_t *)PTR_ALIGN(p8, 8);
211 init_bytes = min((uintptr_t)p32 - (uintptr_t)p8, len);
212 words = (len - init_bytes) >> 3;
213 end_bytes = (len - init_bytes) & 7;
215 for (i = 0; i < init_bytes; i++) {
216 #ifndef WORDS_BIGENDIAN
218 crc = t0_le[i0] ^ (crc >> 8);
220 i0 = *p8++ ^ (crc >> 24);
221 crc = t0_le[i0] ^ (crc << 8);
227 for (i = 0; i < words; i++) {
228 #ifndef WORDS_BIGENDIAN
234 crc = t7_le[i3] ^ t6_le[i2] ^ t5_le[i1] ^ t4_le[i0];
241 crc ^= t3_le[i3] ^ t2_le[i2] ^ t1_le[i1] ^ t0_le[i0];
248 crc = t7_le[i3] ^ t6_le[i2] ^ t5_le[i1] ^ t4_le[i0];
255 crc ^= t3_le[i3] ^ t2_le[i2] ^ t1_le[i1] ^ t0_le[i0];
259 p8 = (uint8_t *)(++p32);
261 for (i = 0; i < end_bytes; i++) {
262 #ifndef WORDS_BIGENDIAN
264 crc = t0_le[i0] ^ (crc >> 8);
266 i0 = *p8++ ^ (crc >> 24);
267 crc = t0_le[i0] ^ (crc << 8);
271 return __le32_to_cpu(crc);
275 #if CRC_BE_BITS == 64
276 static uint32_t crc32c_be_body(uint32_t crc, uint8_t const *buf, size_t len)
285 uint8_t i0, i1, i2, i3;
287 crc = (__force uint32_t) __cpu_to_be32(crc);
290 p32 = (uint32_t *)PTR_ALIGN(p8, 8);
291 init_bytes = min((uintptr_t)p32 - (uintptr_t)p8, len);
292 words = (len - init_bytes) >> 3;
293 end_bytes = (len - init_bytes) & 7;
295 for (i = 0; i < init_bytes; i++) {
296 #ifndef WORDS_BIGENDIAN
298 crc = t0_be[i0] ^ (crc >> 8);
300 i0 = *p8++ ^ (crc >> 24);
301 crc = t0_be[i0] ^ (crc << 8);
307 for (i = 0; i < words; i++) {
308 #ifndef WORDS_BIGENDIAN
314 crc = t7_be[i3] ^ t6_be[i2] ^ t5_be[i1] ^ t4_be[i0];
321 crc ^= t3_be[i3] ^ t2_be[i2] ^ t1_be[i1] ^ t0_be[i0];
328 crc = t7_be[i3] ^ t6_be[i2] ^ t5_be[i1] ^ t4_be[i0];
335 crc ^= t3_be[i3] ^ t2_be[i2] ^ t1_be[i1] ^ t0_be[i0];
339 p8 = (uint8_t *)(++p32);
341 for (i = 0; i < end_bytes; i++) {
342 #ifndef WORDS_BIGENDIAN
344 crc = t0_be[i0] ^ (crc >> 8);
346 i0 = *p8++ ^ (crc >> 24);
347 crc = t0_be[i0] ^ (crc << 8);
351 return __be32_to_cpu(crc);
356 * crc32c_le() - Calculate bitwise little-endian CRC32c.
357 * @crc: seed value for computation. ~0 for ext4, sometimes 0 for
358 * other uses, or the previous crc32c value if computing incrementally.
359 * @p: pointer to buffer over which CRC is run
360 * @len: length of buffer @p
362 uint32_t ext2fs_crc32c_le(uint32_t crc, unsigned char const *p, size_t len)
368 for (i = 0; i < 8; i++)
369 crc = (crc >> 1) ^ ((crc & 1) ? CRCPOLY_LE : 0);
371 # elif CRC_LE_BITS == 2
374 crc = (crc >> 2) ^ t0_le[crc & 0x03];
375 crc = (crc >> 2) ^ t0_le[crc & 0x03];
376 crc = (crc >> 2) ^ t0_le[crc & 0x03];
377 crc = (crc >> 2) ^ t0_le[crc & 0x03];
379 # elif CRC_LE_BITS == 4
382 crc = (crc >> 4) ^ t0_le[crc & 0x0f];
383 crc = (crc >> 4) ^ t0_le[crc & 0x0f];
385 # elif CRC_LE_BITS == 8
388 crc = (crc >> 8) ^ t0_le[crc & 0xff];
391 crc = crc32c_le_body(crc, p, len);
397 * crc32c_be() - Calculate bitwise big-endian CRC32c.
398 * @crc: seed value for computation. ~0 for ext4, sometimes 0 for
399 * other uses, or the previous crc32c value if computing incrementally.
400 * @p: pointer to buffer over which CRC is run
401 * @len: length of buffer @p
403 uint32_t ext2fs_crc32c_be(uint32_t crc, unsigned char const *p, size_t len)
409 for (i = 0; i < 8; i++)
411 ((crc & 0x80000000) ? CRCPOLY_BE : 0);
413 # elif CRC_BE_BITS == 2
416 crc = (crc << 2) ^ t0_be[crc >> 30];
417 crc = (crc << 2) ^ t0_be[crc >> 30];
418 crc = (crc << 2) ^ t0_be[crc >> 30];
419 crc = (crc << 2) ^ t0_be[crc >> 30];
421 # elif CRC_BE_BITS == 4
424 crc = (crc << 4) ^ t0_be[crc >> 28];
425 crc = (crc << 4) ^ t0_be[crc >> 28];
427 # elif CRC_BE_BITS == 8
430 crc = (crc << 8) ^ t0_be[crc >> 24];
433 crc = crc32c_be_body(crc, p, len);
439 static uint8_t test_buf[] = {
440 0xd9, 0xd7, 0x6a, 0x13, 0x3a, 0xb1, 0x05, 0x48,
441 0xda, 0xad, 0x14, 0xbd, 0x03, 0x3a, 0x58, 0x5e,
442 0x6e, 0xd1, 0x56, 0xc9, 0x2e, 0xc4, 0xcb, 0x6b,
443 0xe8, 0x77, 0x52, 0x37, 0x4e, 0x0f, 0x55, 0xd2,
444 0x12, 0x65, 0x90, 0xc2, 0x41, 0x49, 0x81, 0x01,
445 0xf5, 0x01, 0xeb, 0x2d, 0x78, 0x74, 0x23, 0x5d,
446 0x84, 0x5c, 0x81, 0x92, 0x21, 0xe9, 0x8d, 0x1d,
447 0x89, 0xf2, 0x4a, 0xac, 0xdd, 0xf9, 0xaf, 0xee,
448 0x44, 0xe7, 0x6e, 0xed, 0xfb, 0xd8, 0x89, 0x0e,
449 0x96, 0x62, 0xcd, 0xa4, 0x4b, 0xa9, 0xe5, 0x45,
450 0xb1, 0x29, 0x9b, 0x0f, 0xfc, 0xbd, 0x83, 0xab,
451 0xa8, 0x54, 0x96, 0x44, 0x2c, 0x7f, 0xbb, 0xe7,
452 0x52, 0x29, 0x08, 0xee, 0x14, 0xc5, 0xc2, 0xec,
453 0x5a, 0xeb, 0x40, 0x40, 0xea, 0xd1, 0x3d, 0x15,
454 0x73, 0xaa, 0x8c, 0x73, 0xfc, 0xf2, 0x2b, 0x49,
455 0x0b, 0x13, 0x96, 0xd9, 0x8e, 0x4b, 0xbc, 0xe0,
456 0xf4, 0xd2, 0xe0, 0x2e, 0x7a, 0xf0, 0x5d, 0x1f,
457 0xd2, 0x92, 0x97, 0xe0, 0xaa, 0x59, 0xab, 0xc9,
458 0x5c, 0xa6, 0x51, 0x1a, 0xe3, 0xd6, 0x06, 0xb9,
459 0xae, 0xb8, 0x76, 0x36, 0x79, 0x37, 0x52, 0xf6,
460 0x34, 0xaf, 0x27, 0x19, 0xe1, 0xc0, 0x2b, 0xdd,
461 0x01, 0x15, 0xcd, 0xce, 0x44, 0xf6, 0x4c, 0x18,
462 0x92, 0x69, 0xbe, 0x8a, 0x76, 0x23, 0x52, 0x13,
463 0x3f, 0xf9, 0xe0, 0xf5, 0x06, 0x28, 0x7c, 0xc7,
464 0xf3, 0x42, 0x0f, 0xdd, 0x40, 0x33, 0xf7, 0x99,
465 0xe2, 0xad, 0x26, 0xd9, 0x53, 0x10, 0x72, 0x0c,
466 0x4e, 0x43, 0x4c, 0x61, 0xfe, 0xd9, 0xc1, 0x16,
467 0xa1, 0x93, 0xca, 0x3c, 0x75, 0x7f, 0x07, 0x7a,
468 0x65, 0xb3, 0x53, 0x2a, 0x52, 0x00, 0xa0, 0x62,
469 0xe0, 0xa3, 0x1f, 0xad, 0xd7, 0xbb, 0xc0, 0x83,
470 0x5d, 0x54, 0x87, 0x5f, 0xc8, 0x2f, 0xc8, 0xbf,
471 0x69, 0x04, 0x91, 0xc8, 0xa6, 0x1d, 0x4d, 0x46,
472 0x91, 0xfc, 0x26, 0xf4, 0x16, 0xd1, 0xa4, 0xbf,
473 0x5c, 0xa2, 0x6c, 0xdd, 0xb4, 0x40, 0xf2, 0x2e,
474 0xa2, 0xad, 0xf7, 0xf4, 0xa5, 0x8a, 0x3e, 0x23,
475 0x64, 0x08, 0xc8, 0xa1, 0xa0, 0xf0, 0x5d, 0x70,
476 0xd2, 0x77, 0xfd, 0xc8, 0x50, 0x83, 0x0f, 0xd6,
477 0x2b, 0xe4, 0x1f, 0x52, 0x34, 0x33, 0x68, 0xfd,
478 0x92, 0xbe, 0x9f, 0x97, 0x6b, 0x8d, 0x81, 0x91,
479 0x0f, 0xef, 0x65, 0xc8, 0x0d, 0x15, 0x01, 0x77,
480 0x58, 0xb2, 0xf4, 0x1b, 0x06, 0x7e, 0xf5, 0xca,
481 0x15, 0x2e, 0x38, 0xd8, 0x81, 0x1c, 0x1c, 0xa0,
482 0xb6, 0x13, 0x6a, 0x2b, 0x71, 0x34, 0x52, 0xd7,
483 0x1d, 0xbd, 0x37, 0x59, 0xbc, 0x86, 0x25, 0x2b,
484 0xa8, 0x93, 0xce, 0x1a, 0x03, 0x16, 0xfe, 0x01,
485 0x57, 0x99, 0x24, 0x25, 0x2c, 0xb3, 0xab, 0x1e,
486 0x2d, 0x65, 0x20, 0x89, 0x17, 0x02, 0x0e, 0x0a,
487 0xf5, 0x1e, 0xc7, 0xff, 0x1f, 0x61, 0xa9, 0x54,
488 0x18, 0xd4, 0xba, 0x50, 0x57, 0x02, 0xa1, 0xab,
489 0x22, 0x2e, 0x07, 0xea, 0xa9, 0xa3, 0x83, 0x4f,
490 0x27, 0xf5, 0xc5, 0xee, 0x3c, 0x3b, 0x10, 0xad,
491 0x32, 0x2b, 0x1c, 0x03, 0xcb, 0xaf, 0x98, 0x83,
492 0x54, 0xc3, 0x68, 0x63, 0xd4, 0xe0, 0x0e, 0x3c,
493 0x1a, 0x4e, 0xc0, 0x81, 0xd0, 0xe8, 0x6a, 0x62,
494 0x6b, 0x3e, 0x6f, 0xc4, 0xc6, 0x33, 0x4e, 0x26,
495 0x21, 0xf5, 0x04, 0xdf, 0xfa, 0xce, 0x45, 0xaf,
496 0xdc, 0x5e, 0x1b, 0xad, 0x93, 0xca, 0xf5, 0xcf,
497 0xd7, 0xee, 0x0c, 0x5c, 0x5e, 0xb4, 0xf0, 0x92,
498 0xd2, 0xf2, 0xf0, 0xa9, 0x1e, 0xab, 0x80, 0x68,
499 0x46, 0xef, 0xcc, 0x26, 0x0c, 0x5c, 0xdd, 0x4e,
500 0x83, 0xb8, 0xb9, 0x53, 0x6e, 0xf8, 0x93, 0x38,
501 0x67, 0xa4, 0x41, 0x87, 0x72, 0xe7, 0x7e, 0x86,
502 0xc9, 0x49, 0x00, 0x33, 0xb1, 0x38, 0x6c, 0x71,
503 0xd7, 0x1d, 0x8e, 0x61, 0x01, 0xb6, 0x57, 0xa9,
504 0xf1, 0xac, 0x15, 0xc2, 0x83, 0x77, 0xca, 0x64,
505 0xca, 0x7b, 0x6c, 0xa1, 0x10, 0x1b, 0x13, 0xd0,
506 0xd3, 0x9e, 0x9e, 0x10, 0x70, 0xc8, 0x1a, 0xbb,
507 0x3f, 0x19, 0x86, 0xab, 0x01, 0x0e, 0xea, 0x34,
508 0x22, 0xea, 0xe2, 0x15, 0xb7, 0xed, 0x21, 0x21,
509 0x75, 0xa5, 0xe7, 0x08, 0xa1, 0x38, 0xe0, 0x91,
510 0x05, 0x60, 0xea, 0xa7, 0x50, 0x27, 0x18, 0x07,
511 0x9d, 0xe0, 0x18, 0x2b, 0xd4, 0x07, 0x59, 0x00,
512 0xe6, 0x45, 0x18, 0x2a, 0x30, 0x6e, 0xf3, 0xb4,
513 0xd0, 0xef, 0xa6, 0x5b, 0x71, 0xa2, 0x5a, 0x3b,
514 0x89, 0x4c, 0xaf, 0x3f, 0xcb, 0x9f, 0x03, 0xfb,
515 0x43, 0x7c, 0x6b, 0xd3, 0x6a, 0xea, 0xce, 0x4a,
516 0x5f, 0x64, 0xb5, 0x62, 0xda, 0x5d, 0x27, 0xb7,
517 0xb8, 0x11, 0xca, 0x33, 0x30, 0xec, 0x70, 0xf0,
518 0x1b, 0x03, 0x50, 0xff, 0x5e, 0xa6, 0x08, 0xde,
519 0x37, 0x70, 0xc0, 0x81, 0x55, 0x60, 0x17, 0xa1,
520 0x85, 0xae, 0x26, 0x44, 0xe4, 0x67, 0x3c, 0x91,
521 0xfd, 0xc4, 0x3d, 0x97, 0x72, 0x23, 0xf3, 0x3c,
522 0x8f, 0xe0, 0xe2, 0xf2, 0x09, 0x96, 0x10, 0x67,
523 0xb5, 0xfe, 0xff, 0x3d, 0x4a, 0xc8, 0x62, 0x11,
524 0xa5, 0x98, 0xc1, 0x2d, 0x40, 0x82, 0x88, 0x8b,
525 0xe5, 0xb0, 0x75, 0xbf, 0x2f, 0xa8, 0x6a, 0x55,
526 0x49, 0x2e, 0x9c, 0x29, 0xd2, 0x7c, 0xbf, 0xf3,
527 0xaa, 0x3a, 0x16, 0x4a, 0xa4, 0x15, 0xf3, 0x48,
528 0xde, 0x38, 0x13, 0x44, 0x26, 0x02, 0xe6, 0xe9,
529 0xa8, 0x24, 0x89, 0xb5, 0x43, 0x95, 0xe4, 0x4c,
530 0xc3, 0xa0, 0xdf, 0xcc, 0x42, 0xf8, 0x8d, 0xb0,
531 0x3b, 0xea, 0x10, 0xb7, 0xe1, 0x40, 0x54, 0xb9,
532 0xa3, 0x2d, 0xfb, 0xb4, 0x91, 0xc0, 0x3e, 0x94,
533 0xf1, 0xa1, 0x3c, 0xbe, 0xef, 0xb8, 0x70, 0x55,
534 0x0a, 0x26, 0x93, 0xbf, 0xe6, 0x21, 0x92, 0x32,
535 0x3c, 0x39, 0x27, 0x6a, 0x23, 0x48, 0x02, 0x35,
536 0x3c, 0xd4, 0xcc, 0x04, 0xc0, 0x4e, 0xa7, 0x02,
537 0x63, 0x37, 0xc2, 0xb8, 0x56, 0x1d, 0x57, 0x57,
538 0x42, 0x04, 0x8d, 0xee, 0xcf, 0x8b, 0xc9, 0xc3,
539 0xba, 0x3b, 0x15, 0xd7, 0xaf, 0xbf, 0x9e, 0xcd,
540 0x44, 0xcf, 0xf0, 0x00, 0xb7, 0x3a, 0xfc, 0xa8,
541 0x12, 0xab, 0x3a, 0x62, 0x01, 0x21, 0x46, 0xe9,
542 0x1e, 0x48, 0x37, 0xfc, 0x13, 0x4d, 0xf6, 0x2a,
543 0x72, 0x40, 0x75, 0x38, 0x71, 0xf2, 0x17, 0x20,
544 0x2c, 0xdd, 0xc0, 0x49, 0xbc, 0x63, 0x33, 0xea,
545 0x06, 0x75, 0x41, 0xe7, 0x5c, 0x1f, 0xfb, 0xf9,
546 0x68, 0x83, 0xc2, 0x5a, 0x4a, 0x1e, 0x61, 0x08,
547 0x57, 0xf3, 0x00, 0xba, 0x77, 0x92, 0x63, 0xa5,
548 0xb7, 0xfe, 0x97, 0x22, 0xda, 0x5e, 0xd3, 0xaf,
549 0xbc, 0x89, 0x0d, 0x4c, 0x37, 0xa9, 0x27, 0x4a,
550 0x7f, 0xdb, 0x81, 0x39, 0x11, 0x86, 0x12, 0xf9,
551 0x10, 0x50, 0xe4, 0xdb, 0x72, 0xf9, 0xae, 0x10,
552 0x7c, 0xed, 0x50, 0x5c, 0x61, 0xeb, 0x42, 0x1e,
553 0xa4, 0xf4, 0xf0, 0xfa, 0x45, 0x4d, 0x95, 0x2b,
554 0xd4, 0x67, 0x4a, 0xe3, 0x8a, 0x15, 0x55, 0x92,
555 0x77, 0x64, 0x8c, 0x51, 0x38, 0xf9, 0x26, 0x3e,
556 0x68, 0xe2, 0xac, 0xbb, 0x64, 0x77, 0xe2, 0x82,
557 0xa4, 0x42, 0x41, 0x38, 0xa0, 0xf0, 0xc9, 0xd8,
558 0x6c, 0xe0, 0xef, 0x4c, 0xda, 0xb4, 0x92, 0xef,
559 0x1b, 0xe3, 0x9b, 0xc1, 0x44, 0x3c, 0xb9, 0xb7,
560 0x39, 0xac, 0x5c, 0x32, 0x39, 0xb4, 0x21, 0x85,
561 0x93, 0xbc, 0xf2, 0x51, 0x43, 0xb7, 0xae, 0x1e,
562 0x61, 0x9c, 0x38, 0x9c, 0xaa, 0xff, 0xde, 0xfc,
563 0xbf, 0x85, 0xef, 0x17, 0x34, 0x36, 0x71, 0x5f,
564 0x04, 0x16, 0xa6, 0x9e, 0xfd, 0x3a, 0x03, 0xd8,
565 0xbf, 0x71, 0x70, 0x20, 0x8f, 0x7c, 0xfb, 0xff,
566 0x61, 0xe0, 0xe2, 0x60, 0xa7, 0xb1, 0xc0, 0xe0,
567 0xd9, 0x3f, 0xdc, 0x8d, 0x4a, 0xa4, 0x52, 0x61,
568 0xaf, 0x9d, 0xdf, 0x8a, 0x0d, 0x41, 0xc0, 0x25,
569 0x68, 0x12, 0x7b, 0xd5, 0xc7, 0xdb, 0x68, 0x70,
570 0x2d, 0x7d, 0x95, 0x12, 0x03, 0x23, 0x0c, 0xe8,
571 0x14, 0x41, 0x11, 0x28, 0xec, 0x9d, 0xd3, 0x28,
572 0x77, 0x7a, 0x3c, 0x93, 0x8e, 0x5c, 0x7e, 0xb3,
573 0x42, 0x9a, 0x18, 0x25, 0x93, 0xc8, 0xea, 0x43,
574 0x1b, 0xbe, 0xd5, 0x27, 0xf1, 0xd4, 0xe0, 0x1e,
575 0xce, 0xc7, 0xc7, 0x2c, 0x25, 0x35, 0x58, 0xb8,
576 0x6c, 0xf3, 0xa2, 0xad, 0xe7, 0x58, 0x49, 0x47,
577 0xf7, 0xca, 0xde, 0x8b, 0x81, 0xb7, 0x75, 0xf4,
578 0x95, 0xa7, 0x5c, 0xc3, 0x2c, 0x0e, 0x1c, 0x52,
579 0x9a, 0xc3, 0x2a, 0x00, 0x21, 0xa7, 0x51, 0x6b,
580 0xf0, 0x05, 0x87, 0x8c, 0x42, 0x1b, 0xc3, 0x2e,
581 0xa3, 0x76, 0x22, 0xd5, 0x7f, 0x56, 0x10, 0xef,
582 0x98, 0x85, 0x65, 0x86, 0x71, 0x87, 0xd2, 0x8c,
583 0xc0, 0x47, 0x20, 0xe8, 0xb5, 0x1c, 0xe3, 0xdd,
584 0x3c, 0x5c, 0x03, 0xbb, 0x0e, 0x97, 0x3b, 0xe1,
585 0x56, 0x9a, 0xd5, 0x0a, 0x63, 0xd5, 0x33, 0xaf,
586 0x36, 0xca, 0xcf, 0x8f, 0x00, 0x28, 0xa3, 0x45,
587 0xb8, 0xcd, 0xde, 0x73, 0xd4, 0xfa, 0x2d, 0x6f,
588 0xdb, 0x93, 0xaa, 0xdd, 0x7f, 0xd2, 0x22, 0x9c,
589 0x96, 0x48, 0x1e, 0xa8, 0x63, 0xbe, 0xbc, 0x0d,
590 0x14, 0x3c, 0x2e, 0x11, 0x1f, 0xd2, 0xf4, 0x57,
591 0xb3, 0x47, 0xf8, 0xa6, 0x1b, 0xc3, 0xa7, 0x95,
592 0x2d, 0xd4, 0xca, 0xb8, 0x0d, 0xfb, 0x06, 0x85,
593 0xda, 0x63, 0xf0, 0x3e, 0x9d, 0x5e, 0xee, 0xce,
594 0xed, 0x74, 0x1d, 0x2c, 0x97, 0x3f, 0x71, 0x95,
595 0x12, 0x03, 0xc5, 0x92, 0x46, 0x84, 0x1b, 0x07,
596 0xe6, 0xb4, 0x1d, 0x3a, 0xf1, 0x89, 0x90, 0x50,
597 0x10, 0x29, 0x34, 0xc0, 0x90, 0xbe, 0x4a, 0xa9,
598 0x0d, 0xb0, 0x7b, 0xfb, 0x35, 0xee, 0x4e, 0x34,
599 0xec, 0x5a, 0x58, 0xbc, 0xb8, 0xda, 0x38, 0x88,
600 0x8c, 0x74, 0x1e, 0xc9, 0xab, 0x78, 0x2e, 0x2a,
601 0x17, 0x8a, 0x43, 0x3d, 0xa1, 0x2a, 0x41, 0xb5,
602 0xd6, 0xe8, 0x5b, 0xc5, 0x4a, 0x1c, 0x3c, 0x9f,
603 0x8d, 0x3a, 0x69, 0x88, 0xf8, 0x80, 0xd2, 0x11,
604 0xfc, 0x7e, 0x80, 0x8e, 0x7f, 0x85, 0x64, 0x9c,
605 0x46, 0x58, 0xc8, 0x48, 0x98, 0x4b, 0xf5, 0x73,
606 0x3f, 0x49, 0xce, 0x53, 0x2c, 0xd5, 0xfc, 0x33,
607 0xf1, 0x6f, 0xd8, 0xe9, 0x2e, 0x70, 0x2e, 0xdc,
608 0xe5, 0x43, 0x80, 0x38, 0xf2, 0x87, 0xed, 0x85,
609 0xe4, 0x3e, 0x45, 0x14, 0x20, 0xcf, 0xa0, 0x61,
610 0x4f, 0xe8, 0xd7, 0x5b, 0xb3, 0x0d, 0x0e, 0x4e,
611 0x4d, 0xce, 0xbe, 0xba, 0xaa, 0x90, 0x09, 0xcb,
612 0x4b, 0x5d, 0x08, 0xff, 0x52, 0xd5, 0x23, 0xbc,
613 0xad, 0x8d, 0xd3, 0x06, 0x4a, 0xa0, 0x51, 0x56,
614 0xa7, 0xd8, 0x33, 0xab, 0xbc, 0xd0, 0xdf, 0x92,
615 0x87, 0x20, 0x2d, 0x7b, 0x5e, 0xfa, 0x30, 0xa7,
616 0x06, 0x06, 0xe5, 0x4f, 0x2c, 0xb5, 0x61, 0xd7,
617 0x54, 0xd3, 0xdf, 0xd0, 0x0a, 0xb0, 0x06, 0xce,
618 0xf6, 0x86, 0xb7, 0x8e, 0xaa, 0x7b, 0x78, 0xd5,
619 0xb9, 0xeb, 0x07, 0xac, 0x5f, 0xc5, 0xd2, 0x8c,
620 0x40, 0xe0, 0x7f, 0x98, 0xd4, 0xe5, 0x4b, 0xca,
621 0xfb, 0x47, 0xef, 0xef, 0xb9, 0x4d, 0x6d, 0x8f,
622 0x82, 0x68, 0x74, 0x84, 0xe0, 0x0a, 0x93, 0x0f,
623 0xb2, 0x01, 0xa9, 0x9f, 0x68, 0x6a, 0xe8, 0xf7,
624 0xfb, 0x0b, 0xde, 0x17, 0xe0, 0x30, 0x38, 0x51,
625 0xbc, 0x07, 0xb8, 0x2c, 0x91, 0x0f, 0xc1, 0x0e,
626 0xa6, 0xf9, 0xf0, 0xd5, 0x48, 0x76, 0x8a, 0xde,
627 0x74, 0xe3, 0x30, 0x65, 0x56, 0xb3, 0x5c, 0xe2,
628 0x89, 0x8d, 0xda, 0x80, 0xad, 0x0f, 0x22, 0xfb,
629 0x24, 0x1d, 0x16, 0xdd, 0x34, 0x4b, 0x90, 0x58,
630 0x4e, 0x0c, 0x13, 0x28, 0xcf, 0x1d, 0xa4, 0xaa,
631 0xb7, 0xf3, 0xb1, 0x66, 0xad, 0x3b, 0xcf, 0x79,
632 0x12, 0x04, 0xd7, 0x79, 0xd9, 0x5f, 0xdf, 0x89,
633 0xb2, 0x5b, 0xa7, 0x9a, 0x26, 0x1e, 0x67, 0x46,
634 0x7c, 0x66, 0x95, 0x67, 0xe6, 0x45, 0x8b, 0x1f,
635 0x65, 0x79, 0x9f, 0x6d, 0x11, 0x81, 0x17, 0x0d,
636 0x11, 0xb0, 0x5c, 0xb4, 0xc7, 0x27, 0x87, 0xab,
637 0x5d, 0x0a, 0x18, 0xae, 0x4e, 0x06, 0xa3, 0x3d,
638 0xc7, 0xb0, 0x22, 0xba, 0x03, 0xa4, 0x0f, 0xe5,
639 0x1c, 0x72, 0x2a, 0x04, 0xce, 0x83, 0xe9, 0xf3,
640 0xd7, 0xc9, 0x67, 0x6c, 0x1e, 0x6b, 0x3c, 0x9b,
641 0x0b, 0x5e, 0x6a, 0xa6, 0x79, 0x0a, 0xf1, 0xbe,
642 0xd7, 0xb4, 0x6f, 0x45, 0x1e, 0xfb, 0x78, 0x97,
643 0xaf, 0x34, 0x76, 0x95, 0x52, 0xf7, 0x3d, 0x5d,
644 0x07, 0x28, 0x57, 0x9c, 0x4a, 0x0f, 0xcf, 0x0b,
645 0x1b, 0xc4, 0xc2, 0x72, 0xd7, 0x72, 0x38, 0x9b,
646 0xea, 0xeb, 0xee, 0xae, 0x34, 0xc8, 0x01, 0xd7,
647 0xa5, 0xe3, 0xce, 0x41, 0xad, 0x02, 0x60, 0x23,
648 0x18, 0x36, 0xba, 0x17, 0xfa, 0xcf, 0xe4, 0xda,
649 0xdc, 0xfc, 0x82, 0xdc, 0x7c, 0x11, 0xf4, 0xb8,
650 0x52, 0x5d, 0xf7, 0x2f, 0xc8, 0xfe, 0x4a, 0xe6,
651 0xb9, 0xaf, 0x4b, 0x17, 0x18, 0x91, 0xc2, 0xfe,
652 0xd7, 0x3a, 0x77, 0x0c, 0xa0, 0x43, 0x9c, 0x6f,
653 0x13, 0x06, 0xbe, 0x6e, 0xe0, 0x1a, 0x3c, 0xf3,
654 0xf5, 0xcc, 0x78, 0xfb, 0x5d, 0xd5, 0xda, 0xb7,
655 0x58, 0xea, 0x86, 0x42, 0x6b, 0x32, 0xff, 0xb2,
656 0xe2, 0xee, 0x03, 0x1f, 0xf4, 0xef, 0xdb, 0x53,
657 0x79, 0xd5, 0x4e, 0xaf, 0x60, 0x8e, 0x02, 0xc2,
658 0xcc, 0x39, 0x97, 0x7b, 0xfd, 0xa1, 0xf8, 0x7a,
659 0x26, 0xe8, 0x55, 0xd6, 0xa4, 0x8b, 0xa0, 0x1b,
660 0x2d, 0x63, 0xaa, 0x73, 0x71, 0x6e, 0xbf, 0x8b,
661 0x3b, 0xe3, 0x1b, 0x0d, 0xbb, 0x2e, 0x44, 0x09,
662 0x64, 0xac, 0xc7, 0x9e, 0xb5, 0xc6, 0x77, 0xb0,
663 0x79, 0xb3, 0xaa, 0xfc, 0x67, 0x57, 0x9a, 0x50,
664 0x81, 0x37, 0x14, 0x7c, 0xd7, 0xa0, 0xd4, 0x6a,
665 0x79, 0x84, 0x51, 0x0e, 0x95, 0x0a, 0x30, 0xa3,
666 0x60, 0x55, 0x48, 0x05, 0x16, 0xae, 0x43, 0x90,
667 0xdc, 0x8e, 0x09, 0xbe, 0x79, 0xf6, 0x90, 0x74,
668 0xf8, 0x20, 0x96, 0x4d, 0xa7, 0xf5, 0x1a, 0x2b,
669 0xc7, 0x15, 0x9d, 0x18, 0xf7, 0x94, 0x87, 0xf7,
670 0xf4, 0xfb, 0x0d, 0x61, 0xb6, 0xd7, 0xbe, 0x10,
671 0x8e, 0x47, 0x3c, 0x10, 0x44, 0x90, 0x52, 0x21,
672 0x83, 0xc0, 0xf5, 0x99, 0xaa, 0xbc, 0xf6, 0x55,
673 0xae, 0xf5, 0xb2, 0xa4, 0xcd, 0x4d, 0xb9, 0x38,
674 0x6c, 0xbc, 0x80, 0xc3, 0xad, 0xf4, 0x46, 0x31,
675 0x01, 0x58, 0x2d, 0x88, 0x57, 0xc3, 0x23, 0xd1,
676 0x64, 0xc9, 0xa3, 0x21, 0x6b, 0x8b, 0x8a, 0x23,
677 0x2c, 0x4f, 0xa9, 0xcd, 0x67, 0xfa, 0x77, 0xad,
678 0xa3, 0x16, 0xa2, 0xe5, 0x19, 0x14, 0x70, 0x41,
679 0x5b, 0xda, 0x14, 0xde, 0xe3, 0xe5, 0xc1, 0x15,
680 0xb4, 0x77, 0xa4, 0x9b, 0xb8, 0xb1, 0x28, 0x51,
681 0x30, 0xb4, 0xf1, 0xf3, 0xf8, 0x6d, 0xd0, 0xc3,
682 0x8c, 0x4c, 0x76, 0xb0, 0x9a, 0xdf, 0xc8, 0xbe,
683 0xf8, 0x4a, 0x61, 0x6e, 0x3e, 0xd6, 0x3c, 0xe8,
684 0xde, 0x56, 0xa0, 0x9c, 0x25, 0xbe, 0xce, 0x93,
685 0x1f, 0x88, 0xfb, 0x9a, 0x1a, 0xe2, 0xff, 0x88,
686 0xad, 0x10, 0xcb, 0x6c, 0xd6, 0xe7, 0x39, 0x0b,
687 0xe5, 0x1a, 0x06, 0x05, 0x64, 0x5b, 0x0a, 0xdf,
688 0x22, 0x58, 0xd7, 0xfb, 0x88, 0x12, 0xdd, 0xb7,
689 0x52, 0x3a, 0xc9, 0xbf, 0x49, 0xdf, 0x8c, 0x87,
690 0x9f, 0x84, 0xb5, 0x0a, 0xf6, 0x00, 0x52, 0xae,
691 0x67, 0x12, 0x1a, 0x8c, 0x71, 0x15, 0xf5, 0xa1,
692 0x13, 0x39, 0xf0, 0x91, 0x7e, 0x88, 0x7c, 0xb3,
693 0x95, 0x50, 0x02, 0xa6, 0x63, 0xb5, 0x64, 0xfb,
694 0x90, 0x87, 0x61, 0xe2, 0x27, 0xaf, 0x11, 0x0c,
695 0x73, 0x83, 0xef, 0xa9, 0x28, 0xfe, 0xc8, 0x85,
696 0x1a, 0x3a, 0xde, 0xf2, 0xe5, 0x25, 0x64, 0x6d,
697 0xaa, 0x41, 0x4c, 0x80, 0x2e, 0x84, 0xff, 0xc1,
698 0xc0, 0x54, 0x0c, 0x29, 0x1b, 0xa3, 0x07, 0x7c,
699 0x33, 0x4c, 0x10, 0xf6, 0x6f, 0x79, 0xdf, 0xd3,
700 0xf0, 0x24, 0x57, 0xf1, 0x60, 0xe1, 0xf0, 0xbd,
701 0xc4, 0x1f, 0xf4, 0x67, 0xd2, 0xd3, 0xcc, 0x6a,
702 0x07, 0x72, 0x44, 0x16, 0x85, 0x46, 0xd0, 0x73,
703 0x87, 0xa9, 0xc7, 0x2f, 0xd1, 0xf5, 0xec, 0xe3,
704 0x28, 0xa3, 0x93, 0x4f, 0xd7, 0x76, 0xc1, 0x3c,
705 0x0d, 0x13, 0x33, 0xcf, 0x5b, 0xbd, 0x6a, 0x52,
706 0x4e, 0xee, 0xc8, 0x5e, 0xa1, 0x58, 0x4a, 0x08,
707 0x81, 0xd9, 0x23, 0xcc, 0xfb, 0x1c, 0xb2, 0xd8,
708 0xa3, 0xe4, 0x53, 0xfe, 0xf4, 0x4b, 0x48, 0xc1,
709 0x20, 0xa4, 0x97, 0xf8, 0x38, 0xa3, 0x69, 0xc1,
710 0x11, 0xf0, 0xa1, 0x3b, 0xa9, 0x9a, 0x12, 0x61,
711 0xe8, 0x8d, 0x99, 0x44, 0x3f, 0x94, 0x72, 0x82,
712 0x19, 0x96, 0x62, 0xb0, 0xa6, 0x64, 0x05, 0x19,
713 0x8f, 0xd6, 0x5d, 0x05, 0xbf, 0x79, 0x9e, 0x9d,
714 0xe4, 0x93, 0x4c, 0xad, 0x61, 0x8c, 0x18, 0xda,
715 0xb6, 0x2e, 0xb3, 0xca, 0x14, 0x4d, 0x53, 0xa4,
716 0x97, 0x27, 0x10, 0x56, 0xa2, 0x67, 0x5a, 0x5a,
717 0x5e, 0x13, 0xc0, 0xdb, 0xa7, 0x9f, 0x45, 0x5b,
718 0xeb, 0x1a, 0x14, 0x0c, 0x8c, 0x38, 0x5e, 0x77,
719 0x9a, 0xec, 0x75, 0x68, 0x93, 0x65, 0x02, 0x9c,
720 0xfb, 0x62, 0x60, 0x49, 0xdd, 0xb2, 0x2a, 0x67,
721 0x86, 0xe3, 0x8a, 0x7d, 0x8c, 0x46, 0x78, 0x81,
722 0x60, 0x69, 0xf2, 0x3f, 0x74, 0x11, 0x35, 0xff,
723 0x77, 0xa3, 0x66, 0x20, 0xfc, 0x98, 0x4a, 0x35,
724 0x7a, 0x52, 0xe4, 0x90, 0x13, 0x80, 0xb9, 0xa6,
725 0x73, 0x7a, 0x7d, 0x66, 0x6e, 0x6b, 0xb6, 0x43,
726 0x10, 0xd5, 0x91, 0x2b, 0x66, 0xdd, 0x89, 0x87,
727 0xe3, 0x8c, 0x58, 0x53, 0x2f, 0x40, 0x74, 0x45,
728 0x1b, 0x77, 0x7a, 0xa4, 0x44, 0x19, 0x78, 0xba,
729 0x87, 0x10, 0x41, 0x31, 0x32, 0x5f, 0x87, 0x68,
730 0xde, 0x43, 0x4a, 0xef, 0x33, 0xb3, 0x11, 0x83,
731 0xa9, 0xc2, 0x6f, 0x8d, 0x34, 0xe2, 0x95, 0x84,
732 0x3a, 0x4f, 0x6f, 0x8c, 0x31, 0x1d, 0xb6, 0xf5,
733 0x95, 0x0d, 0x01, 0x11, 0x20, 0xdf, 0x72, 0xf3,
734 0x3f, 0x9a, 0x33, 0xaa, 0xb1, 0x06, 0x6a, 0x63,
735 0x47, 0x91, 0x01, 0xdf, 0xb3, 0x54, 0x36, 0xfd,
736 0x06, 0x2d, 0xb8, 0x08, 0xe3, 0xd3, 0x65, 0xac,
737 0x66, 0x03, 0xee, 0xa4, 0x63, 0xbd, 0xd4, 0xce,
738 0xbd, 0x79, 0xa7, 0x48, 0x38, 0xc5, 0x7d, 0xb5,
739 0x71, 0x9a, 0x3c, 0x11, 0x7c, 0x6c, 0xe2, 0x54,
740 0x02, 0x5d, 0x42, 0xab, 0x25, 0x93, 0x66, 0x01,
741 0x37, 0x78, 0x35, 0x4a, 0x8c, 0x19, 0x4d, 0x00,
742 0x75, 0x4f, 0xcc, 0xc0, 0x26, 0x82, 0xc1, 0x35,
743 0x8c, 0xc7, 0xc2, 0x59, 0x01, 0x3e, 0x98, 0x22,
744 0x88, 0x9c, 0x90, 0x75, 0x05, 0x33, 0x07, 0xb9,
745 0x39, 0x81, 0x38, 0x58, 0x10, 0x29, 0xcf, 0xc8,
746 0x98, 0xb2, 0x03, 0xd7, 0x5b, 0xb3, 0x18, 0xba,
747 0x34, 0x0c, 0x9f, 0xab, 0xd7, 0xed, 0x29, 0x82,
748 0x41, 0xe0, 0x20, 0x97, 0x57, 0x92, 0xb2, 0xb8,
749 0x10, 0x2d, 0x0b, 0xa2, 0xc5, 0x8f, 0x90, 0x6f,
750 0xed, 0x12, 0x56, 0x25, 0xbe, 0xfd, 0x75, 0xf7,
751 0xb6, 0xf8, 0x40, 0x67, 0x39, 0x11, 0xfa, 0x15,
752 0xae, 0x6a, 0x54, 0x5f, 0x32, 0x2b, 0xf8, 0x48,
753 0x55, 0xbe, 0x86, 0x2f, 0x69, 0x48, 0x5b, 0x5d,
754 0x4d, 0xb7, 0x35, 0xaa, 0xb6, 0x91, 0x88, 0x19,
755 0x96, 0x1c, 0x68, 0xf6, 0x85, 0x9e, 0xb3, 0xb2,
756 0xa3, 0x32, 0xd4, 0x52, 0x70, 0xb7, 0x62, 0xe3,
757 0x14, 0xb6, 0x78, 0x5f, 0x1b, 0x1d, 0x04, 0x9c,
758 0x26, 0x0c, 0x33, 0x94, 0xb1, 0x97, 0x08, 0xdb,
759 0x0b, 0x39, 0x29, 0xd4, 0xbc, 0x6d, 0xdf, 0x02,
760 0xc6, 0x99, 0xab, 0x99, 0x32, 0xe5, 0xce, 0x51,
761 0x4f, 0xae, 0xb8, 0x8b, 0xe0, 0xaf, 0x07, 0xc4,
762 0xf9, 0x41, 0x7c, 0x59, 0xa0, 0xac, 0x74, 0x4d,
763 0x7e, 0x43, 0x77, 0x9c, 0x06, 0x49, 0x79, 0x8a,
764 0x14, 0x73, 0x93, 0xa8, 0x5b, 0x1b, 0x34, 0x29,
765 0x78, 0x04, 0x2f, 0xd7, 0x1f, 0x13, 0x90, 0xe0,
766 0xdd, 0x3b, 0x42, 0x6b, 0x79, 0x6e, 0x52, 0xc7,
767 0x0f, 0x38, 0xda, 0x01, 0x2c, 0x8d, 0xe6, 0x94,
768 0x5d, 0x59, 0x27, 0x1d, 0x10, 0x4e, 0x11, 0x36,
769 0xfb, 0x53, 0x16, 0x05, 0x25, 0xf2, 0x64, 0xd8,
770 0xf9, 0xcd, 0x5c, 0xfe, 0xb4, 0x18, 0x44, 0x80,
771 0x10, 0xbc, 0x3d, 0xf3, 0x1d, 0x5a, 0xf0, 0xc1,
772 0xc3, 0x55, 0xff, 0x41, 0x3e, 0xe3, 0xef, 0x44,
773 0xb2, 0xc0, 0x01, 0x18, 0xa2, 0x49, 0x88, 0x78,
774 0x0d, 0x4c, 0xc8, 0x73, 0xcf, 0x30, 0x85, 0x3a,
775 0x88, 0x90, 0x01, 0xcf, 0x69, 0x53, 0xa3, 0x18,
776 0x3f, 0xd6, 0xe7, 0x94, 0x14, 0xa7, 0xae, 0xcd,
777 0x6f, 0x11, 0x72, 0xfe, 0x2b, 0xb0, 0x81, 0x53,
778 0xea, 0x67, 0xd6, 0xe4, 0xca, 0x42, 0xa0, 0xf9,
779 0xb1, 0xd4, 0xb5, 0x3b, 0xc9, 0xf0, 0x36, 0xc1,
780 0x1c, 0xf4, 0xb1, 0xf6, 0x84, 0xd0, 0x86, 0x6c,
781 0x76, 0x9a, 0x03, 0xc2, 0xb6, 0x2e, 0x9a, 0x46,
782 0xf5, 0x5f, 0x2c, 0x38, 0xac, 0xad, 0x6f, 0x2e,
783 0x7a, 0x18, 0x2d, 0x22, 0x95, 0x5e, 0x5e, 0xc9,
784 0x7a, 0x0a, 0x56, 0xe1, 0xc7, 0x15, 0xfd, 0xbf,
785 0xff, 0xf7, 0x7e, 0x85, 0x20, 0xa9, 0x8a, 0x9c,
786 0xa9, 0x7d, 0xe8, 0xed, 0xfc, 0x7f, 0xbb, 0xf0,
787 0x05, 0x3f, 0xce, 0x4f, 0x4c, 0xee, 0xa4, 0xa0,
788 0xcc, 0x9c, 0x62, 0x1e, 0xd6, 0xd0, 0x30, 0x37,
789 0xb8, 0x98, 0x56, 0x1d, 0xaa, 0xd6, 0x5e, 0x73,
790 0x12, 0xe4, 0x88, 0x82, 0x48, 0x64, 0x06, 0xd7,
791 0x2a, 0x31, 0x50, 0x7b, 0x10, 0x17, 0xb8, 0x4c,
792 0x5a, 0x8d, 0xf1, 0xfc, 0xf1, 0x33, 0x3b, 0x98,
793 0x42, 0x18, 0x5b, 0x35, 0x78, 0xca, 0x8e, 0x41,
794 0x52, 0xae, 0x6d, 0xe1, 0xa2, 0x9d, 0x5b, 0xbd,
795 0xf3, 0x5f, 0x49, 0xc1, 0x27, 0x06, 0xc1, 0xaf,
796 0xc0, 0xa3, 0x9d, 0xf3, 0x1c, 0x8e, 0x90, 0x8a,
797 0xb0, 0x69, 0xb0, 0xc5, 0x11, 0x0c, 0x91, 0x14,
798 0x1f, 0x5e, 0x10, 0xe1, 0x1d, 0x14, 0x30, 0x54,
799 0x1e, 0x17, 0x3d, 0x31, 0x7b, 0xbf, 0x2f, 0x9d,
800 0x6d, 0x63, 0x32, 0xf0, 0x9d, 0x9f, 0x95, 0x3d,
801 0x0b, 0xd2, 0x4d, 0x10, 0xe2, 0x3f, 0x67, 0x69,
802 0x43, 0x9a, 0x4a, 0x2c, 0x54, 0x71, 0xa8, 0xa0,
803 0x9e, 0x9f, 0x10, 0xaf, 0x1b, 0xce, 0x99, 0xe3,
804 0x25, 0x32, 0x10, 0x54, 0x80, 0xfe, 0xda, 0x57,
805 0xd0, 0xb2, 0x92, 0x7f, 0xbb, 0x5f, 0xe7, 0x4d,
806 0x1b, 0x3d, 0x46, 0x4d, 0xe4, 0x4c, 0xd6, 0xaf,
807 0x1a, 0x32, 0x12, 0x40, 0xb8, 0x84, 0x8e, 0xe4,
808 0x80, 0xce, 0x7e, 0xc1, 0x13, 0x8b, 0xb0, 0xb7,
809 0x6f, 0x24, 0xba, 0x85, 0x50, 0x83, 0xc3, 0xcf,
810 0x19, 0xb3, 0xf0, 0xc7, 0xee, 0x68, 0xbe, 0x9e,
811 0x6d, 0xb9, 0xfb, 0xd5, 0x29, 0xce, 0x82, 0xcd,
812 0x69, 0x16, 0x68, 0x6b, 0x6a, 0xf4, 0x02, 0x32,
813 0xce, 0x60, 0x37, 0x0c, 0xb9, 0x38, 0x92, 0x9c,
814 0x42, 0xa9, 0x0b, 0x53, 0x96, 0xfe, 0x39, 0xc1,
815 0x24, 0x65, 0x9b, 0xcd, 0xe7, 0x8d, 0x36, 0x07,
816 0x9f, 0x1d, 0x35, 0x8e, 0xdc, 0x4c, 0xb5, 0x68,
817 0xc5, 0xfd, 0x44, 0x19, 0xf2, 0x6c, 0x59, 0x1c,
818 0xb1, 0x0b, 0x35, 0x48, 0x86, 0x1a, 0x05, 0x22,
819 0x03, 0x0c, 0x0c, 0xa2, 0x92, 0x90, 0x35, 0xfb,
820 0x37, 0x94, 0xc7, 0x15, 0x84, 0xae, 0xe8, 0x05,
821 0xa0, 0xf7, 0x30, 0x11, 0x5c, 0xe4, 0x5d, 0x3e,
822 0x12, 0x54, 0x80, 0x54, 0x6b, 0x09, 0x8c, 0xce,
823 0x80, 0x5e, 0xa7, 0xc8, 0x6a, 0x0c, 0x56, 0xe1,
824 0x18, 0x7d, 0xc9, 0x39, 0xc1, 0xef, 0xe3, 0x25,
825 0xa0, 0x8b, 0x2f, 0x60, 0x3a, 0x43, 0x39, 0xa6,
826 0x28, 0x28, 0x7b, 0x4c, 0x77, 0xd4, 0x49, 0x61,
827 0x46, 0xe9, 0x1b, 0x45, 0xd6, 0xb1, 0x56, 0xe1,
828 0x7d, 0x34, 0xcd, 0x06, 0xb6, 0x67, 0x8d, 0x7d,
829 0x7a, 0xe2, 0xbe, 0x68, 0x35, 0xa6, 0x78, 0xe5,
830 0x47, 0x48, 0xb7, 0xc7, 0xde, 0xcd, 0xc9, 0x05,
831 0xb4, 0xe7, 0x50, 0x48, 0xe1, 0x4b, 0xfe, 0x76,
832 0x77, 0xc6, 0xf7, 0x5f, 0xcb, 0xc2, 0xa8, 0xd7,
833 0xd6, 0x8a, 0xe5, 0x49, 0xd9, 0xca, 0x45, 0xf4,
834 0xda, 0xcd, 0x33, 0xd1, 0x59, 0x2d, 0x9e, 0xc1,
835 0x5c, 0xe6, 0x01, 0x18, 0xb8, 0xf0, 0x5e, 0xb1,
836 0x69, 0x95, 0x2f, 0x02, 0x2a, 0xe7, 0x4a, 0xd7,
837 0xd1, 0xc3, 0xd5, 0x6f, 0x15, 0xc8, 0xdc, 0x29,
838 0xde, 0xb9, 0x3f, 0x8b, 0xa6, 0xbc, 0xdd, 0x25,
839 0x84, 0x35, 0x3c, 0x90, 0x2d, 0xc2, 0x1e, 0x98,
840 0x8a, 0x50, 0x09, 0x77, 0x42, 0xe9, 0x35, 0x8a,
841 0x7c, 0x97, 0xbf, 0xe8, 0xbf, 0x56, 0xd0, 0x8b,
842 0x65, 0xd3, 0xaf, 0x1e, 0x05, 0x94, 0xfa, 0xac,
843 0xa8, 0x2b, 0x28, 0xcb, 0x37, 0x3e, 0xe8, 0xbb,
844 0x66, 0x3a, 0xed, 0xb2, 0x48, 0x10, 0x0f, 0x3a,
845 0x5a, 0xc5, 0xdb, 0x26, 0x0e, 0xaa, 0x5e, 0x69,
846 0x15, 0xd6, 0x81, 0xae, 0xbd, 0xe6, 0x03, 0xf1,
847 0xf6, 0x37, 0xc8, 0xde, 0x70, 0x1f, 0x64, 0xb9,
848 0x5e, 0xbf, 0x2e, 0x4f, 0xb1, 0xea, 0xa0, 0x17,
849 0xe6, 0x7c, 0xf9, 0x2f, 0x1e, 0xd8, 0x58, 0xde,
850 0xa7, 0xf0, 0x46, 0x52, 0x95, 0xdf, 0xa4, 0x96,
851 0xd0, 0xc4, 0x97, 0x2b, 0x95, 0xcd, 0x5e, 0x40,
852 0x23, 0x5c, 0x10, 0xee, 0xba, 0x72, 0x9b, 0xcf,
853 0x0b, 0xe8, 0x18, 0x3a, 0x70, 0xd2, 0x5e, 0x07,
854 0x68, 0x93, 0xef, 0x4a, 0x5b, 0x8d, 0x72, 0x41,
855 0x4e, 0xea, 0x33, 0x6a, 0x0a, 0x5e, 0xfb, 0x02,
856 0x3f, 0xd4, 0xed, 0x5b, 0xe0, 0x42, 0x84, 0xd4,
857 0xaa, 0x85, 0xdc, 0x5b, 0x67, 0xee, 0x71, 0x67,
858 0xba, 0x8e, 0xd2, 0xbe, 0x61, 0xdf, 0x5a, 0x26,
859 0xb9, 0xf0, 0x77, 0x81, 0x53, 0x24, 0x16, 0xcb,
860 0x8c, 0xb8, 0x06, 0x6e, 0x68, 0xda, 0xc8, 0x2d,
861 0x17, 0x54, 0xdb, 0x46, 0xcb, 0xfd, 0x1f, 0x3d,
862 0x94, 0x81, 0x09, 0x4b, 0xfa, 0xb1, 0x46, 0xd9,
863 0x11, 0xa3, 0xb7, 0x31, 0x9c, 0xd2, 0x38, 0xd6,
864 0xba, 0x3d, 0xa3, 0x74, 0xd8, 0xf1, 0x24, 0xe8,
865 0x9c, 0xcb, 0x1d, 0xf9, 0x4a, 0xf7, 0xc8, 0x4b,
866 0xfe, 0x97, 0x7c, 0xa1, 0x02, 0xeb, 0x40, 0xc3,
867 0x89, 0x71, 0x01, 0xcd, 0x33, 0x2a, 0xc2, 0x82,
868 0xce, 0x62, 0x8d, 0x53, 0x7c, 0xdf, 0xce, 0xd7,
869 0xf5, 0xa8, 0x4f, 0xf2, 0xf2, 0x2e, 0xc1, 0xeb,
870 0x97, 0x99, 0x37, 0x3c, 0x53, 0xa6, 0xb4, 0x46,
871 0x05, 0x64, 0x92, 0x87, 0x08, 0x3c, 0x23, 0x4b,
872 0x9d, 0x67, 0x18, 0xf9, 0xe2, 0x0b, 0x1c, 0x39,
873 0xd3, 0x87, 0x70, 0xc0, 0xb9, 0x1e, 0x52, 0x0a,
874 0x0f, 0x48, 0xe2, 0xe7, 0x51, 0x72, 0x94, 0xf7,
875 0xa3, 0xdc, 0xe5, 0x66, 0x33, 0x39, 0x54, 0x06,
876 0x55, 0x93, 0x30, 0xf9, 0x5e, 0x76, 0x8f, 0xe0,
877 0x59, 0x4d, 0x0d, 0xa7, 0xf5, 0xbe, 0xdb, 0x20,
878 0xad, 0x0d, 0x76, 0x88, 0x5f, 0x9c, 0x7c, 0x75,
879 0x2f, 0x2a, 0x0b, 0x79, 0x6e, 0xd3, 0xe2, 0x66,
880 0xf5, 0x4a, 0x2d, 0x87, 0x87, 0x49, 0x84, 0x17,
881 0xa2, 0x62, 0x4c, 0xbb, 0xe4, 0x6e, 0x98, 0x10,
882 0xc9, 0xfb, 0x8a, 0x04, 0x68, 0x8d, 0x22, 0x66,
883 0xad, 0xea, 0x2a, 0xc9, 0x97, 0x2d, 0x3c, 0xbc,
884 0xd0, 0x77, 0x5f, 0xe6, 0xb8, 0x7f, 0xe6, 0xf6,
885 0x39, 0xbf, 0x56, 0x0e, 0x26, 0x6d, 0xc5, 0x3e,
886 0x53, 0x19, 0xd6, 0xb4, 0x57, 0x36, 0xa3, 0xc6,
887 0xd3, 0x3d, 0x66, 0x79, 0x30, 0x5c, 0x14, 0x0c,
888 0x0f, 0x3e, 0x96, 0xae, 0x90, 0x97, 0xab, 0x0d,
889 0x9f, 0xc3, 0xe7, 0x66, 0x3e, 0xe0, 0x31, 0x43,
890 0x4b, 0x01, 0xb3, 0x0e, 0x9e, 0x8c, 0x82, 0x4a,
891 0x8c, 0xc7, 0x79, 0x85, 0xdf, 0x75, 0x0d, 0xb4,
892 0x2b, 0x03, 0x14, 0xef, 0x72, 0x58, 0xfd, 0x64,
893 0xc8, 0xe3, 0x0d, 0x9a, 0x14, 0x6f, 0x76, 0xf9,
894 0x46, 0xd1, 0xd2, 0x81, 0xb3, 0x16, 0x6e, 0xc7,
895 0x76, 0x82, 0xce, 0xf4, 0xee, 0x33, 0x00, 0xe6,
896 0x77, 0xc4, 0xad, 0x4f, 0x06, 0xa7, 0x48, 0x80,
897 0x9e, 0x21, 0x66, 0xca, 0x75, 0x69, 0x57, 0xcb,
898 0xf0, 0x67, 0x6a, 0xaa, 0x8f, 0x88, 0x14, 0xbd,
899 0x65, 0x62, 0xe2, 0xad, 0xcc, 0x22, 0x88, 0x7b,
900 0x94, 0xbd, 0x0e, 0xcd, 0xb6, 0x69, 0xa2, 0xcb,
901 0x7d, 0x57, 0x5c, 0xb4, 0x92, 0x80, 0x13, 0x99,
902 0x84, 0xf3, 0x79, 0x0a, 0x2d, 0x70, 0xa4, 0xe0,
903 0xde, 0xc6, 0x32, 0xb0, 0x8a, 0x62, 0xb5, 0xcf,
904 0xfa, 0x5e, 0x5a, 0x92, 0x32, 0x7d, 0x34, 0x07,
905 0xb5, 0x52, 0x3a, 0xb5, 0x7d, 0x0f, 0xa1, 0xba,
906 0x56, 0xd0, 0x07, 0x76, 0x11, 0xf2, 0xc3, 0x33,
907 0x9d, 0xbd, 0x12, 0x35, 0x5e, 0xf7, 0x05, 0x88,
908 0x76, 0x94, 0xa6, 0xbf, 0xed, 0xb8, 0xa4, 0xa2,
909 0x0c, 0xbe, 0x0f, 0x6a, 0xaf, 0xf3, 0x1b, 0x33,
910 0x4a, 0xb7, 0x68, 0x3f, 0xbe, 0x95, 0x13, 0x97,
911 0x0f, 0x15, 0x17, 0x1b, 0x23, 0xaa, 0x08, 0x78,
912 0xa6, 0x5b, 0x08, 0xa2, 0x9d, 0x03, 0xa8, 0xa7,
913 0x39, 0xdc, 0xbc, 0x9a, 0x85, 0xf5, 0xe5, 0x55,
914 0x59, 0x3c, 0xef, 0xf9, 0x3f, 0x22, 0x8e, 0xf8,
915 0xd8, 0x3e, 0x02, 0x0b, 0xd8, 0x78, 0x4b, 0x15,
916 0x7f, 0xaa, 0x2c, 0xff, 0xbe, 0x77, 0x33, 0xc7,
917 0x6a, 0x12, 0xaa, 0xa4, 0xbe, 0xc0, 0x3b, 0xcb,
918 0x13, 0x9d, 0x9c, 0x5a, 0x9f, 0x8a, 0x57, 0x36,
919 0x4f, 0x02, 0x5a, 0xf8, 0x1d, 0x97, 0x77, 0x43,
920 0xc8, 0xa5, 0xb7, 0x9b, 0x10, 0x98, 0xfd, 0x58,
921 0xbf, 0x42, 0xf6, 0xbf, 0xff, 0x6c, 0x40, 0x18,
922 0x18, 0xdf, 0xac, 0x57, 0x71, 0xea, 0xcc, 0x8e,
923 0xfd, 0xfe, 0x10, 0xfb, 0xb9, 0xfe, 0xbc, 0x9a,
924 0x9c, 0x27, 0xe4, 0x10, 0x15, 0x94, 0x41, 0xa1,
925 0xcc, 0xf6, 0x25, 0x49, 0x4f, 0x96, 0xc1, 0x8c,
926 0x9e, 0x3e, 0x18, 0x29, 0x49, 0x92, 0xe7, 0xfe,
927 0x22, 0xff, 0xed, 0x02, 0x16, 0x90, 0xef, 0xac,
928 0xec, 0x95, 0x1d, 0x5b, 0x94, 0x9c, 0xf6, 0x7c,
929 0x1b, 0x5a, 0x9d, 0xb0, 0x9b, 0x05, 0x36, 0xbf,
930 0xef, 0xec, 0x63, 0x35, 0x40, 0x24, 0x45, 0x40,
931 0x30, 0x1a, 0x9b, 0x90, 0xc3, 0xc2, 0xf7, 0x37,
932 0xfb, 0x08, 0x8e, 0x48, 0x19, 0x48, 0xed, 0xa8,
933 0xa8, 0x04, 0x6f, 0xd0, 0x33, 0xe9, 0xb8, 0x8d,
934 0xe7, 0x1e, 0x5c, 0x47, 0x74, 0xc0, 0x66, 0x30,
935 0x4e, 0xa7, 0x86, 0x73, 0xf1, 0xe5, 0x78, 0xa6,
936 0xe0, 0xc1, 0xda, 0x13, 0x72, 0x07, 0x85, 0x34,
937 0x63, 0x95, 0x49, 0x30, 0x4b, 0x9d, 0x03, 0xf1,
938 0x7a, 0x6b, 0x91, 0xa2, 0x85, 0x41, 0xf9, 0x4a,
939 0xd6, 0xff, 0xff, 0x86, 0xf7, 0xf0, 0xce, 0xb9,
940 0x07, 0xf1, 0x88, 0x04, 0x33, 0xaa, 0xeb, 0x54,
941 0xb2, 0x1c, 0x8e, 0x2e, 0x7b, 0x04, 0xa8, 0xcc,
942 0x2c, 0x7a, 0xb3, 0xad, 0x1a, 0x89, 0x38, 0x89,
943 0xd7, 0x11, 0x3a, 0x8c, 0xcf, 0xe3, 0xc5, 0xba,
944 0xb0, 0xcc, 0xc4, 0xe3, 0x33, 0xf3, 0x18, 0xba,
945 0xec, 0x56, 0xd9, 0x1c, 0x40, 0x70, 0x0d, 0x4e,
946 0x97, 0x01, 0x23, 0xf3, 0x5a, 0xdc, 0xbf, 0x68,
947 0x93, 0xc2, 0x1d, 0x8a, 0x96, 0xb7, 0xac, 0x18,
948 0x6f, 0xf7, 0x84, 0x71, 0x0d, 0x3d, 0xf8, 0xba,
949 0xdf, 0xb6, 0x89, 0x1d, 0x78, 0x19, 0xf2, 0x59,
950 0xe9, 0x15, 0x55, 0x29, 0x73, 0x50, 0x59, 0x14,
951 0x02, 0x21, 0x16, 0x8f, 0x0f, 0xdf, 0xa5, 0xf0,
954 static struct crc_test {
955 uint32_t crc; /* random starting crc */
956 uint32_t start; /* random offset in buf */
957 uint32_t length; /* random length of test */
958 uint32_t crc_le; /* expected crc32_le result */
959 uint32_t crc_be; /* expected crc32_be result */
961 {0xffffffff, 0x00000000, 0x00001000, 0x13934bef, 0x14f3b75f},
962 {0xfe7328ea, 0x00000763, 0x00000717, 0xed2c0d70, 0x57531214},
963 {0x4c40684e, 0x00000721, 0x0000011e, 0xd7f46ccc, 0xedf12ec3},
964 {0x6b487f90, 0x00000264, 0x000007bc, 0x759e9939, 0x9af8e387},
965 {0x9f5810db, 0x00000afa, 0x00000255, 0x2685197f, 0x716de6ed},
966 {0xb15c4755, 0x00000d5b, 0x000002a4, 0xd8fadcb5, 0xfc34ae3f},
967 {0x06518253, 0x00000ffb, 0x00000004, 0xabee2433, 0xfa30ac9e},
968 {0xd9e71c55, 0x00000a2a, 0x00000259, 0x96682af2, 0xe5907ea3},
969 {0x0c1ae843, 0x00000ce4, 0x0000031b, 0x7b637c43, 0xe7f71b04},
970 {0xec3cd517, 0x000002ff, 0x00000566, 0x5d719a77, 0xed16e045},
971 {0x77828e95, 0x0000067f, 0x0000038f, 0x43ee5b6c, 0x35999927},
972 {0xec87b4e3, 0x00000d1c, 0x000002e3, 0x2ddd2eee, 0x9452d3f8},
973 {0x412158bb, 0x00000eee, 0x00000111, 0x67b38ba2, 0x177976d0},
974 {0x2e52de3e, 0x00000c4a, 0x000003b5, 0xbcc5d61d, 0xf60fee71},
975 {0x6ddaae8b, 0x00000d99, 0x00000266, 0x8b535544, 0x1dab8596},
976 {0x049b6cb1, 0x000009c5, 0x000000b0, 0xfc22cabc, 0x47ebc954},
977 {0x77d4b954, 0x0000028a, 0x000007fa, 0x71d00923, 0x905585ef},
978 {0x5e192355, 0x00000ac1, 0x000001fa, 0xb966b81a, 0x33c12903},
979 {0x7d80b71d, 0x00000213, 0x000001e0, 0x2bba371a, 0x5f4bd8d9},
980 {0x01f6f1e4, 0x000001d6, 0x00000395, 0xb7e8a647, 0x2a7943a1},
981 {0x1dfabb13, 0x00000e14, 0x000001eb, 0x53917fba, 0x8dee1e5d},
982 {0xb00a4449, 0x00000bf6, 0x00000409, 0xedecb577, 0x628e087d},
983 {0x7ecd3981, 0x0000083f, 0x0000016b, 0xefef62b9, 0xda4f94e6},
984 {0xf8f330d2, 0x000004be, 0x00000757, 0x9357c9f3, 0x8e2d5c2f},
985 {0x03c38af2, 0x00000d23, 0x000002dc, 0x360fa8c0, 0x6294c0d6},
986 {0x687bb79b, 0x00000f3d, 0x000000c2, 0x448d3be2, 0x08f48f3a},
987 {0x6710f550, 0x000009e9, 0x00000603, 0xdbfd1998, 0xc950ac29},
988 {0x873171d1, 0x00000787, 0x000004d5, 0xab7f1b62, 0xe66896ab},
989 {0x373b1314, 0x00000f0f, 0x000000f0, 0x184098ab, 0x4038e674},
990 {0x90fad9cd, 0x00000ead, 0x00000152, 0x23ce52ff, 0x9eff3974},
991 {0x19676fe7, 0x0000007d, 0x0000070d, 0xf8a76f1e, 0xfbc5c8a9},
992 {0x89facd45, 0x000005f3, 0x00000473, 0x4331a006, 0xb8f0f0cc},
993 {0x6f173747, 0x00000fc3, 0x0000003c, 0xb012f08e, 0x5126e378},
994 {0x4b44a106, 0x0000075a, 0x0000008b, 0xf6f7ac38, 0xf9b1781b},
995 {0xb620ad06, 0x00000774, 0x0000017e, 0xd34558e6, 0xb175edd3},
996 {0x976f21e9, 0x000008d7, 0x0000034a, 0xe533aa3a, 0x1e4367b9},
997 {0x687628c0, 0x000006c5, 0x0000061b, 0x3a840b15, 0xfb5989a0},
998 {0xe24ac108, 0x00000cd0, 0x0000032f, 0x51010ae8, 0xcdd8f182},
999 {0x361c44a3, 0x00000304, 0x00000719, 0xfd7bd481, 0x12de540f},
1000 {0xd93ff95e, 0x00000db7, 0x0000008e, 0xcfbbc304, 0x42eecd5a},
1001 {0xed752d12, 0x00000883, 0x00000091, 0x65a6c868, 0x9ebfa578},
1002 {0xb4ff4b54, 0x000003d3, 0x000001c1, 0xf82597e7, 0xa8ad2b19},
1003 {0x111b520f, 0x00000708, 0x000000eb, 0xc3e109f3, 0x323ace17},
1004 {0x62c806f2, 0x00000ba3, 0x0000045c, 0x874d3a72, 0xaf1a1360},
1005 {0x40d97470, 0x000005e1, 0x0000058d, 0x87a9684f, 0x524244a8},
1006 {0x4312179c, 0x00000056, 0x0000070e, 0x809a00f5, 0xf9e940b0},
1007 {0x13d5f84c, 0x00000a2d, 0x00000104, 0xf3d27578, 0x5d33341c},
1008 {0x1f302cb2, 0x00000151, 0x00000014, 0x1e162693, 0x53c3cfc3},
1009 {0xe491db24, 0x00000600, 0x000006f6, 0x7ff09615, 0xa300ecf7},
1010 {0xf9a98069, 0x000002ba, 0x000002ad, 0x01af7387, 0x31c0911e},
1011 {0xe9c477ad, 0x0000015f, 0x00000778, 0x6facf9a0, 0x1993b688},
1012 {0x353f32b2, 0x0000087c, 0x00000783, 0x6cc964ea, 0x418db561},
1013 {0x78e1b24f, 0x00000650, 0x000006a8, 0xb3bb7c27, 0xf2aad006},
1014 {0x61aa400e, 0x00000049, 0x00000254, 0xb8cd1681, 0x79150b15},
1015 {0xb84b10b0, 0x00000f73, 0x0000008c, 0x406a6450, 0x0c705222},
1016 {0x9fa99c9c, 0x00000a7c, 0x000004d7, 0xfb3d21b4, 0xe4e789df},
1017 {0x3fc9ebe3, 0x00000cd9, 0x000000d6, 0x43803f9c, 0x5a152be5},
1018 {0x529879cd, 0x000002f2, 0x00000595, 0x78b4c6a6, 0xf7236ec4},
1019 {0x3a933019, 0x00000516, 0x00000266, 0xdcb45436, 0x2c7935f5},
1020 {0x887b4977, 0x00000227, 0x0000038d, 0xc5f7c3d9, 0x0d6d7df6},
1021 {0x770745de, 0x000008c6, 0x00000739, 0xf69145e8, 0x47d5efc9},
1022 {0x28be3b47, 0x00000c46, 0x0000032b, 0x764c028f, 0x1eb70d64},
1023 {0x5013a050, 0x00000cf6, 0x00000309, 0xea8fe164, 0x186affa4},
1024 {0x2ec4c9ba, 0x000006e8, 0x0000078d, 0xa35557a9, 0xb41f49ec},
1025 {0xa9f950c9, 0x00000d33, 0x000002cc, 0x41ea8618, 0xab8dfae3},
1026 {0x5b520229, 0x000007b2, 0x00000484, 0x44569f1f, 0x607a8052},
1027 {0xd8dcbbfc, 0x0000002f, 0x0000048c, 0xdb88ab8b, 0xf1c411f1},
1028 {0x25529792, 0x00000d1d, 0x000002e2, 0x20cda404, 0x32683a2d},
1029 {0x9f3f6d71, 0x00000238, 0x0000079a, 0x0720443e, 0x4b8ba2ff},
1030 {0x64121215, 0x000007ff, 0x0000038f, 0x6aacff2c, 0x3b84233b},
1031 {0xfb6cdde0, 0x00000ef8, 0x00000107, 0xbd43a0f1, 0x926624d0},
1032 {0x221c9d6f, 0x000007b6, 0x0000014f, 0xb67f834b, 0x2bdedda4},
1033 {0x030e1de4, 0x00000836, 0x000004b4, 0x0d67d26a, 0x75a73b73},
1034 {0xb56fa6cf, 0x00000c07, 0x000003f8, 0x60601ac1, 0x10a43f35},
1035 {0xb55c89f5, 0x0000098e, 0x000001d4, 0x2400efbe, 0x006e28eb},
1036 {0x5e90b6d5, 0x0000070b, 0x000003ea, 0x3bb5d6ea, 0xb175fa6b},
1037 {0x2a7045ae, 0x00000961, 0x00000633, 0xfca89e4b, 0x962cd6d2},
1038 {0x8b374ea9, 0x000006ba, 0x00000780, 0xbce036ed, 0x4dc8279b},
1039 {0x8bd90bc9, 0x00000562, 0x00000369, 0xcb26a24b, 0x50dee743},
1040 {0x5b1b1762, 0x000000fd, 0x0000051a, 0x33cdda07, 0xee75ff7b},
1041 {0xa4153555, 0x0000058f, 0x000005c7, 0xbe50eeca, 0xe73fffcc},
1042 {0x0be1f931, 0x00000651, 0x00000672, 0x95a25753, 0x4ad6270f},
1043 {0xb7e78618, 0x00000a7f, 0x000002bb, 0xe06bcc1c, 0x1a35ee59},
1044 {0x4a9bc41b, 0x00000e51, 0x000001ae, 0x709e8d2c, 0x75080ca8},
1045 {0xfc359d13, 0x00000440, 0x000002f8, 0x0a58451f, 0x6fa3cfbf},
1046 {0x5aa48619, 0x000006d1, 0x00000284, 0x928ead83, 0xbd600efc},
1047 {0xa609afa8, 0x0000053e, 0x00000272, 0xb048c141, 0x184f80bb},
1048 {0x3f108afb, 0x00000949, 0x00000150, 0x9a6bb5bc, 0x0ea02be1},
1049 {0x79bec2d3, 0x000008ed, 0x00000712, 0x32692d57, 0x2eb13289},
1050 {0x9429e067, 0x00000bc3, 0x0000043c, 0x5295ceff, 0x8a9014a7},
1051 {0xae58b96a, 0x0000082d, 0x000007d2, 0xc2a681ba, 0x6af94089},
1052 {0x95df24be, 0x00000985, 0x000004c1, 0x3a287765, 0x379fcb42},
1053 {0x5e94976f, 0x00000596, 0x000004ed, 0xff00c489, 0x991fc1f5},
1054 {0xf5e5f1de, 0x00000d31, 0x000002ce, 0x35f28e91, 0x543def1a},
1055 {0xa2c219cf, 0x00000a3c, 0x00000374, 0x707d21eb, 0xa6d28bc1},
1056 {0xf21b6ceb, 0x00000919, 0x00000135, 0x0847fb8b, 0x224468c2},
1057 {0xaa988728, 0x00000787, 0x00000771, 0x885aeaa4, 0x814db00b},
1058 {0xaa5dfaac, 0x000003e5, 0x0000051b, 0x52c48ab7, 0x725bef8a},
1059 {0x0a053968, 0x00000d2a, 0x000002d5, 0x7a90256d, 0xc53b9402},
1060 {0x1421dc20, 0x00000eef, 0x00000110, 0x97d6da24, 0x10846935},
1061 {0xb47c2166, 0x00000a6a, 0x00000209, 0xcfd6cc52, 0x46e2797e},
1062 {0x77dd1955, 0x000000de, 0x00000266, 0xba74bcaa, 0x4fa3fe9c},
1063 {0x68a03cc2, 0x0000082f, 0x000007b0, 0x752bd5d8, 0x4f760c63},
1064 {0x0226b0a3, 0x00000a5f, 0x000005a0, 0x82de4970, 0x8ee1310e},
1065 {0x637bf3b1, 0x00000d93, 0x0000026c, 0x5c7115cb, 0x9f6a0ced},
1066 {0x3b120edf, 0x00000c13, 0x000003ec, 0x80d7d20f, 0x241657d5},
1067 {0xe2456780, 0x000002eb, 0x00000641, 0xc0a5d289, 0x74df96b4},
1068 {0x9b2e7125, 0x00000c0c, 0x000003f3, 0xcc15f57e, 0x03e290bf},
1069 {0x153033ef, 0x00000787, 0x000006b6, 0x3cde443b, 0x7bf1d121},
1070 {0x18458b3f, 0x0000066c, 0x00000561, 0x9a2bd8c6, 0x9d564bef},
1071 {0x4ff9d4b9, 0x00000c8f, 0x0000033a, 0xd0ee6d6d, 0xee00aa0b},
1072 {0xdf84b5d9, 0x00000802, 0x0000029a, 0xdab0d74a, 0xd0cb63dc},
1073 {0x81ee15df, 0x000003ce, 0x00000725, 0x9942e2de, 0xe48fb26b},
1074 {0x5c768e04, 0x00000afd, 0x00000160, 0x36110831, 0x8dc74483},
1075 {0xe5e18094, 0x00000b4b, 0x000000a0, 0xffa3e4a7, 0xc0145e1b},
1076 {0xed7263b6, 0x00000d0d, 0x000002f2, 0xb0006a35, 0x5468ae3a},
1077 {0x5bfde7d7, 0x000006fb, 0x00000554, 0xa4193b76, 0xb73d34b2},
1078 {0x67f4a743, 0x00000b85, 0x0000047a, 0xf05c8d8f, 0x4f843e49},
1079 {0xf13bdf22, 0x00000ff7, 0x00000008, 0x816351eb, 0x41f537f6},
1080 {0x08ecc608, 0x00000d5d, 0x00000098, 0x90492772, 0xf5172204},
1081 {0x296f52ba, 0x000004f9, 0x00000788, 0x5e5a4896, 0xe01d5b46},
1082 {0xbe4624c2, 0x00000427, 0x000004ef, 0xcd267b94, 0x7b9069f4},
1083 {0x906f7c7c, 0x00000a05, 0x0000003f, 0x03fcfc33, 0x7b6ff563},
1084 {0x8f7b323e, 0x00000458, 0x000004c7, 0xcd4969c8, 0xd4c22ada},
1085 {0x88d6593d, 0x00000597, 0x000005b5, 0xf199cd3b, 0x5c3e8ca2},
1086 {0x978a7768, 0x00000268, 0x000001d3, 0xb28c95bd, 0x49a2cc67},
1087 {0x857a621e, 0x000007a7, 0x000003a8, 0xf4bf84ab, 0xde26f369},
1088 {0xb0e121ef, 0x000005be, 0x00000644, 0x28747c14, 0x61d4dc6b},
1092 static int test_crc32c(void)
1094 struct crc_test *t = test;
1099 le = ext2fs_crc32c_le(t->crc, test_buf + t->start, t->length);
1100 be = ext2fs_crc32c_be(t->crc, test_buf + t->start, t->length);
1101 if (le != t->crc_le) {
1102 printf("Test %d LE fails, %x != %x\n",
1103 (t - test), le, t->crc_le);
1106 if (be != t->crc_be) {
1107 printf("Test %d BE fails, %x != %x\n",
1108 (t - test), be, t->crc_be);
1117 int main(int argc, char *argv[])
1121 ret = test_crc32c();
1123 printf("No failures.\n");
1127 #endif /* UNITTEST */