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