xfs_io: add crc32 self test
PATCH 1/1 xfs_io: add crc32 self test
From: Darrick J. Wong <[email protected]>
Add a self test for crc32 into xfs_io so that xfstests can check the operation of the (potentially cross-compiled) package binaries by isolating the self test code to a header file that can be included by the build system self test and xfs_io.
--- include/crc32selftest.h | 706 +++++++++++++++++++++++++++++++++++++++++++++++ io/Makefile | 8 - io/crc32selftest.c | 51 +++ io/init.c | 1 io/io.h | 1 libfrog/crc32.c | 669 --------------------------------------------- 6 files changed, 764 insertions(+), 672 deletions(-) create mode 100644 include/crc32selftest.h create mode 100644 io/crc32selftest.c
include/crc32selftest.h new file +706 -0
@@ -0,0 +1,706 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Aug 8, 2011 Bob Pearson with help from Joakim Tjernlund and George Spelvin +* cleaned up code to current version of sparse and added the slicing-by-8 +* algorithm to the closely similar existing slicing-by-4 algorithm. +* Oct 15, 2000 Matt Domsch <[email protected]> +* Nicer crc32 functions/docs submitted by [email protected]. Thanks! +* Code was from the public domain, copyright abandoned. Code was +* subsequently included in the kernel, thus was re-licensed under the +* GNU GPL v2. +* Oct 12, 2000 Matt Domsch <[email protected]> +* Same crc32 function was used in 5 other places in the kernel. +* I made one version, and deleted the others. +* There are various incantations of crc32(). Some use a seed of 0 or ~0. +* Some xor at the end with ~0. The generic crc32() function takes +* seed as an argument, and doesn't xor at the end. Then individual +* users can do whatever they need. +* drivers/net/smc9194.c uses seed ~0, doesn't xor with ~0. +* fs/jffs2 uses seed 0, doesn't xor with ~0. +* fs/partitions/efi.c uses seed ~0, xor's with ~0. +*/ + +/* see: Documentation/crc32.txt for a description of algorithms */ + +/* +* lifted from the 3.8-rc2 kernel source for xfsprogs. Killed CONFIG_X86 +* specific bits for just the generic algorithm. Also removed the big endian +* version of the algorithm as XFS only uses the little endian CRC version to +* match the hardware acceleration available on Intel CPUs. +*/ + +/* This is just the crc32 self test bits from crc32.c. */ + +#ifndef _LIBFROG_CRC32SELFTEST_H_ +#define _LIBFROG_CRC32SELFTEST_H_ + +/* 4096 random bytes */ +static uint8_t __attribute__((__aligned__ (8 ))) test_buf[] = +{ +0x5b ,0x85 ,0x21 ,0xcb ,0x09 ,0x68 ,0x7d ,0x30 , +0xc7 ,0x69 ,0xd7 ,0x30 ,0x92 ,0xde ,0x59 ,0xe4 , +0xc9 ,0x6e ,0x8b ,0xdb ,0x98 ,0x6b ,0xaa ,0x60 , +0xa8 ,0xb5 ,0xbc ,0x6c ,0xa9 ,0xb1 ,0x5b ,0x2c , +0xea ,0xb4 ,0x92 ,0x6a ,0x3f ,0x79 ,0x91 ,0xe4 , +0xe9 ,0x70 ,0x51 ,0x8c ,0x7f ,0x95 ,0x6f ,0x1a , +0x56 ,0xa1 ,0x5c ,0x27 ,0x03 ,0x67 ,0x9f ,0x3a , +0xe2 ,0x31 ,0x11 ,0x29 ,0x6b ,0x98 ,0xfc ,0xc4 , +0x53 ,0x24 ,0xc5 ,0x8b ,0xce ,0x47 ,0xb2 ,0xb9 , +0x32 ,0xcb ,0xc1 ,0xd0 ,0x03 ,0x57 ,0x4e ,0xd4 , +0xe9 ,0x3c ,0xa1 ,0x63 ,0xcf ,0x12 ,0x0e ,0xca , +0xe1 ,0x13 ,0xd1 ,0x93 ,0xa6 ,0x88 ,0x5c ,0x61 , +0x5b ,0xbb ,0xf0 ,0x19 ,0x46 ,0xb4 ,0xcf ,0x9e , +0xb6 ,0x6b ,0x4c ,0x3a ,0xcf ,0x60 ,0xf9 ,0x7a , +0x8d ,0x07 ,0x63 ,0xdb ,0x40 ,0xe9 ,0x0b ,0x6f , +0xad ,0x97 ,0xf1 ,0xed ,0xd0 ,0x1e ,0x26 ,0xfd , +0xbf ,0xb7 ,0xc8 ,0x04 ,0x94 ,0xf8 ,0x8b ,0x8c , +0xf1 ,0xab ,0x7a ,0xd4 ,0xdd ,0xf3 ,0xe8 ,0x88 , +0xc3 ,0xed ,0x17 ,0x8a ,0x9b ,0x40 ,0x0d ,0x53 , +0x62 ,0x12 ,0x03 ,0x5f ,0x1b ,0x35 ,0x32 ,0x1f , +0xb4 ,0x7b ,0x93 ,0x78 ,0x0d ,0xdb ,0xce ,0xa4 , +0xc0 ,0x47 ,0xd5 ,0xbf ,0x68 ,0xe8 ,0x5d ,0x74 , +0x8f ,0x8e ,0x75 ,0x1c ,0xb2 ,0x4f ,0x9a ,0x60 , +0xd1 ,0xbe ,0x10 ,0xf4 ,0x5c ,0xa1 ,0x53 ,0x09 , +0xa5 ,0xe0 ,0x09 ,0x54 ,0x85 ,0x5c ,0xdc ,0x07 , +0xe7 ,0x21 ,0x69 ,0x7b ,0x8a ,0xfd ,0x90 ,0xf1 , +0x22 ,0xd0 ,0xb4 ,0x36 ,0x28 ,0xe6 ,0xb8 ,0x0f , +0x39 ,0xde ,0xc8 ,0xf3 ,0x86 ,0x60 ,0x34 ,0xd2 , +0x5e ,0xdf ,0xfd ,0xcf ,0x0f ,0xa9 ,0x65 ,0xf0 , +0xd5 ,0x4d ,0x96 ,0x40 ,0xe3 ,0xdf ,0x3f ,0x95 , +0x5a ,0x39 ,0x19 ,0x93 ,0xf4 ,0x75 ,0xce ,0x22 , +0x00 ,0x1c ,0x93 ,0xe2 ,0x03 ,0x66 ,0xf4 ,0x93 , +0x73 ,0x86 ,0x81 ,0x8e ,0x29 ,0x44 ,0x48 ,0x86 , +0x61 ,0x7c ,0x48 ,0xa3 ,0x43 ,0xd2 ,0x9c ,0x8d , +0xd4 ,0x95 ,0xdd ,0xe1 ,0x22 ,0x89 ,0x3a ,0x40 , +0x4c ,0x1b ,0x8a ,0x04 ,0xa8 ,0x09 ,0x69 ,0x8b , +0xea ,0xc6 ,0x55 ,0x8e ,0x57 ,0xe6 ,0x64 ,0x35 , +0xf0 ,0xc7 ,0x16 ,0x9f ,0x5d ,0x5e ,0x86 ,0x40 , +0x46 ,0xbb ,0xe5 ,0x45 ,0x88 ,0xfe ,0xc9 ,0x63 , +0x15 ,0xfb ,0xf5 ,0xbd ,0x71 ,0x61 ,0xeb ,0x7b , +0x78 ,0x70 ,0x07 ,0x31 ,0x03 ,0x9f ,0xb2 ,0xc8 , +0xa7 ,0xab ,0x47 ,0xfd ,0xdf ,0xa0 ,0x78 ,0x72 , +0xa4 ,0x2a ,0xe4 ,0xb6 ,0xba ,0xc0 ,0x1e ,0x86 , +0x71 ,0xe6 ,0x3d ,0x18 ,0x37 ,0x70 ,0xe6 ,0xff , +0xe0 ,0xbc ,0x0b ,0x22 ,0xa0 ,0x1f ,0xd3 ,0xed , +0xa2 ,0x55 ,0x39 ,0xab ,0xa8 ,0x13 ,0x73 ,0x7c , +0x3f ,0xb2 ,0xd6 ,0x19 ,0xac ,0xff ,0x99 ,0xed , +0xe8 ,0xe6 ,0xa6 ,0x22 ,0xe3 ,0x9c ,0xf1 ,0x30 , +0xdc ,0x01 ,0x0a ,0x56 ,0xfa ,0xe4 ,0xc9 ,0x99 , +0xdd ,0xa8 ,0xd8 ,0xda ,0x35 ,0x51 ,0x73 ,0xb4 , +0x40 ,0x86 ,0x85 ,0xdb ,0x5c ,0xd5 ,0x85 ,0x80 , +0x14 ,0x9c ,0xfd ,0x98 ,0xa9 ,0x82 ,0xc5 ,0x37 , +0xff ,0x32 ,0x5d ,0xd0 ,0x0b ,0xfa ,0xdc ,0x04 , +0x5e ,0x09 ,0xd2 ,0xca ,0x17 ,0x4b ,0x1a ,0x8e , +0x15 ,0xe1 ,0xcc ,0x4e ,0x52 ,0x88 ,0x35 ,0xbd , +0x48 ,0xfe ,0x15 ,0xa0 ,0x91 ,0xfd ,0x7e ,0x6c , +0x0e ,0x5d ,0x79 ,0x1b ,0x81 ,0x79 ,0xd2 ,0x09 , +0x34 ,0x70 ,0x3d ,0x81 ,0xec ,0xf6 ,0x24 ,0xbb , +0xfb ,0xf1 ,0x7b ,0xdf ,0x54 ,0xea ,0x80 ,0x9b , +0xc7 ,0x99 ,0x9e ,0xbd ,0x16 ,0x78 ,0x12 ,0x53 , +0x5e ,0x01 ,0xa7 ,0x4e ,0xbd ,0x67 ,0xe1 ,0x9b , +0x4c ,0x0e ,0x61 ,0x45 ,0x97 ,0xd2 ,0xf0 ,0x0f , +0xfe ,0x15 ,0x08 ,0xb7 ,0x11 ,0x4c ,0xe7 ,0xff , +0x81 ,0x53 ,0xff ,0x91 ,0x25 ,0x38 ,0x7e ,0x40 , +0x94 ,0xe5 ,0xe0 ,0xad ,0xe6 ,0xd9 ,0x79 ,0xb6 , +0x92 ,0xc9 ,0xfc ,0xde ,0xc3 ,0x1a ,0x23 ,0xbb , +0xdd ,0xc8 ,0x51 ,0x0c ,0x3a ,0x72 ,0xfa ,0x73 , +0x6f ,0xb7 ,0xee ,0x61 ,0x39 ,0x03 ,0x01 ,0x3f , +0x7f ,0x94 ,0x2e ,0x2e ,0xba ,0x3a ,0xbb ,0xb4 , +0xfa ,0x6a ,0x17 ,0xfe ,0xea ,0xef ,0x5e ,0x66 , +0x97 ,0x3f ,0x32 ,0x3d ,0xd7 ,0x3e ,0xb1 ,0xf1 , +0x6c ,0x14 ,0x4c ,0xfd ,0x37 ,0xd3 ,0x38 ,0x80 , +0xfb ,0xde ,0xa6 ,0x24 ,0x1e ,0xc8 ,0xca ,0x7f , +0x3a ,0x93 ,0xd8 ,0x8b ,0x18 ,0x13 ,0xb2 ,0xe5 , +0xe4 ,0x93 ,0x05 ,0x53 ,0x4f ,0x84 ,0x66 ,0xa7 , +0x58 ,0x5c ,0x7b ,0x86 ,0x52 ,0x6d ,0x0d ,0xce , +0xa4 ,0x30 ,0x7d ,0xb6 ,0x18 ,0x9f ,0xeb ,0xff , +0x22 ,0xbb ,0x72 ,0x29 ,0xb9 ,0x44 ,0x0b ,0x48 , +0x1e ,0x84 ,0x71 ,0x81 ,0xe3 ,0x6d ,0x73 ,0x26 , +0x92 ,0xb4 ,0x4d ,0x2a ,0x29 ,0xb8 ,0x1f ,0x72 , +0xed ,0xd0 ,0xe1 ,0x64 ,0x77 ,0xea ,0x8e ,0x88 , +0x0f ,0xef ,0x3f ,0xb1 ,0x3b ,0xad ,0xf9 ,0xc9 , +0x8b ,0xd0 ,0xac ,0xc6 ,0xcc ,0xa9 ,0x40 ,0xcc , +0x76 ,0xf6 ,0x3b ,0x53 ,0xb5 ,0x88 ,0xcb ,0xc8 , +0x37 ,0xf1 ,0xa2 ,0xba ,0x23 ,0x15 ,0x99 ,0x09 , +0xcc ,0xe7 ,0x7a ,0x3b ,0x37 ,0xf7 ,0x58 ,0xc8 , +0x46 ,0x8c ,0x2b ,0x2f ,0x4e ,0x0e ,0xa6 ,0x5c , +0xea ,0x85 ,0x55 ,0xba ,0x02 ,0x0e ,0x0e ,0x48 , +0xbc ,0xe1 ,0xb1 ,0x01 ,0x35 ,0x79 ,0x13 ,0x3d , +0x1b ,0xc0 ,0x53 ,0x68 ,0x11 ,0xe7 ,0x95 ,0x0f , +0x9d ,0x3f ,0x4c ,0x47 ,0x7b ,0x4d ,0x1c ,0xae , +0x50 ,0x9b ,0xcb ,0xdd ,0x05 ,0x8d ,0x9a ,0x97 , +0xfd ,0x8c ,0xef ,0x0c ,0x1d ,0x67 ,0x73 ,0xa8 , +0x28 ,0x36 ,0xd5 ,0xb6 ,0x92 ,0x33 ,0x40 ,0x75 , +0x0b ,0x51 ,0xc3 ,0x64 ,0xba ,0x1d ,0xc2 ,0xcc , +0xee ,0x7d ,0x54 ,0x0f ,0x27 ,0x69 ,0xa7 ,0x27 , +0x63 ,0x30 ,0x29 ,0xd9 ,0xc8 ,0x84 ,0xd8 ,0xdf , +0x9f ,0x68 ,0x8d ,0x04 ,0xca ,0xa6 ,0xc5 ,0xc7 , +0x7a ,0x5c ,0xc8 ,0xd1 ,0xcb ,0x4a ,0xec ,0xd0 , +0xd8 ,0x20 ,0x69 ,0xc5 ,0x17 ,0xcd ,0x78 ,0xc8 , +0x75 ,0x23 ,0x30 ,0x69 ,0xc9 ,0xd4 ,0xea ,0x5c , +0x4f ,0x6b ,0x86 ,0x3f ,0x8b ,0xfe ,0xee ,0x44 , +0xc9 ,0x7c ,0xb7 ,0xdd ,0x3e ,0xe5 ,0xec ,0x54 , +0x03 ,0x3e ,0xaa ,0x82 ,0xc6 ,0xdf ,0xb2 ,0x38 , +0x0e ,0x5d ,0xb3 ,0x88 ,0xd9 ,0xd3 ,0x69 ,0x5f , +0x8f ,0x70 ,0x8a ,0x7e ,0x11 ,0xd9 ,0x1e ,0x7b , +0x38 ,0xf1 ,0x42 ,0x1a ,0xc0 ,0x35 ,0xf5 ,0xc7 , +0x36 ,0x85 ,0xf5 ,0xf7 ,0xb8 ,0x7e ,0xc7 ,0xef , +0x18 ,0xf1 ,0x63 ,0xd6 ,0x7a ,0xc6 ,0xc9 ,0x0e , +0x4d ,0x69 ,0x4f ,0x84 ,0xef ,0x26 ,0x41 ,0x0c , +0xec ,0xc7 ,0xe0 ,0x7e ,0x3c ,0x67 ,0x01 ,0x4c , +0x62 ,0x1a ,0x20 ,0x6f ,0xee ,0x47 ,0x4d ,0xc0 , +0x99 ,0x13 ,0x8d ,0x91 ,0x4a ,0x26 ,0xd4 ,0x37 , +0x28 ,0x90 ,0x58 ,0x75 ,0x66 ,0x2b ,0x0a ,0xdf , +0xda ,0xee ,0x92 ,0x25 ,0x90 ,0x62 ,0x39 ,0x9e , +0x44 ,0x98 ,0xad ,0xc1 ,0x88 ,0xed ,0xe4 ,0xb4 , +0xaf ,0xf5 ,0x8c ,0x9b ,0x48 ,0x4d ,0x56 ,0x60 , +0x97 ,0x0f ,0x61 ,0x59 ,0x9e ,0xa6 ,0x27 ,0xfe , +0xc1 ,0x91 ,0x15 ,0x38 ,0xb8 ,0x0f ,0xae ,0x61 , +0x7d ,0x26 ,0x13 ,0x5a ,0x73 ,0xff ,0x1c ,0xa3 , +0x61 ,0x04 ,0x58 ,0x48 ,0x55 ,0x44 ,0x11 ,0xfe , +0x15 ,0xca ,0xc3 ,0xbd ,0xca ,0xc5 ,0xb4 ,0x40 , +0x5d ,0x1b ,0x7f ,0x39 ,0xb5 ,0x9c ,0x35 ,0xec , +0x61 ,0x15 ,0x32 ,0x32 ,0xb8 ,0x4e ,0x40 ,0x9f , +0x17 ,0x1f ,0x0a ,0x4d ,0xa9 ,0x91 ,0xef ,0xb7 , +0xb0 ,0xeb ,0xc2 ,0x83 ,0x9a ,0x6c ,0xd2 ,0x79 , +0x43 ,0x78 ,0x5e ,0x2f ,0xe5 ,0xdd ,0x1a ,0x3c , +0x45 ,0xab ,0x29 ,0x40 ,0x3a ,0x37 ,0x5b ,0x6f , +0xd7 ,0xfc ,0x48 ,0x64 ,0x3c ,0x49 ,0xfb ,0x21 , +0xbe ,0xc3 ,0xff ,0x07 ,0xfb ,0x17 ,0xe9 ,0xc9 , +0x0c ,0x4c ,0x5c ,0x15 ,0x9e ,0x8e ,0x22 ,0x30 , +0x0a ,0xde ,0x48 ,0x7f ,0xdb ,0x0d ,0xd1 ,0x2b , +0x87 ,0x38 ,0x9e ,0xcc ,0x5a ,0x01 ,0x16 ,0xee , +0x75 ,0x49 ,0x0d ,0x30 ,0x01 ,0x34 ,0x6a ,0xb6 , +0x9a ,0x5a ,0x2a ,0xec ,0xbb ,0x48 ,0xac ,0xd3 , +0x77 ,0x83 ,0xd8 ,0x08 ,0x86 ,0x4f ,0x48 ,0x09 , +0x29 ,0x41 ,0x79 ,0xa1 ,0x03 ,0x12 ,0xc4 ,0xcd , +0x90 ,0x55 ,0x47 ,0x66 ,0x74 ,0x9a ,0xcc ,0x4f , +0x35 ,0x8c ,0xd6 ,0x98 ,0xef ,0xeb ,0x45 ,0xb9 , +0x9a ,0x26 ,0x2f ,0x39 ,0xa5 ,0x70 ,0x6d ,0xfc , +0xb4 ,0x51 ,0xee ,0xf4 ,0x9c ,0xe7 ,0x38 ,0x59 , +0xad ,0xf4 ,0xbc ,0x46 ,0xff ,0x46 ,0x8e ,0x60 , +0x9c ,0xa3 ,0x60 ,0x1d ,0xf8 ,0x26 ,0x72 ,0xf5 , +0x72 ,0x9d ,0x68 ,0x80 ,0x04 ,0xf6 ,0x0b ,0xa1 , +0x0a ,0xd5 ,0xa7 ,0x82 ,0x3a ,0x3e ,0x47 ,0xa8 , +0x5a ,0xde ,0x59 ,0x4f ,0x7b ,0x07 ,0xb3 ,0xe9 , +0x24 ,0x19 ,0x3d ,0x34 ,0x05 ,0xec ,0xf1 ,0xab , +0x6e ,0x64 ,0x8f ,0xd3 ,0xe6 ,0x41 ,0x86 ,0x80 , +0x70 ,0xe3 ,0x8d ,0x60 ,0x9c ,0x34 ,0x25 ,0x01 , +0x07 ,0x4d ,0x19 ,0x41 ,0x4e ,0x3d ,0x5c ,0x7e , +0xa8 ,0xf5 ,0xcc ,0xd5 ,0x7b ,0xe2 ,0x7d ,0x3d , +0x49 ,0x86 ,0x7d ,0x07 ,0xb7 ,0x10 ,0xe3 ,0x35 , +0xb8 ,0x84 ,0x6d ,0x76 ,0xab ,0x17 ,0xc6 ,0x38 , +0xb4 ,0xd3 ,0x28 ,0x57 ,0xad ,0xd3 ,0x88 ,0x5a , +0xda ,0xea ,0xc8 ,0x94 ,0xcc ,0x37 ,0x19 ,0xac , +0x9c ,0x9f ,0x4b ,0x00 ,0x15 ,0xc0 ,0xc8 ,0xca , +0x1f ,0x15 ,0xaa ,0xe0 ,0xdb ,0xf9 ,0x2f ,0x57 , +0x1b ,0x24 ,0xc7 ,0x6f ,0x76 ,0x29 ,0xfb ,0xed , +0x25 ,0x0d ,0xc0 ,0xfe ,0xbd ,0x5a ,0xbf ,0x20 , +0x08 ,0x51 ,0x05 ,0xec ,0x71 ,0xa3 ,0xbf ,0xef , +0x5e ,0x99 ,0x75 ,0xdb ,0x3c ,0x5f ,0x9a ,0x8c , +0xbb ,0x19 ,0x5c ,0x0e ,0x93 ,0x19 ,0xf8 ,0x6a , +0xbc ,0xf2 ,0x12 ,0x54 ,0x2f ,0xcb ,0x28 ,0x64 , +0x88 ,0xb3 ,0x92 ,0x0d ,0x96 ,0xd1 ,0xa6 ,0xe4 , +0x1f ,0xf1 ,0x4d ,0xa4 ,0xab ,0x1c ,0xee ,0x54 , +0xf2 ,0xad ,0x29 ,0x6d ,0x32 ,0x37 ,0xb2 ,0x16 , +0x77 ,0x5c ,0xdc ,0x2e ,0x54 ,0xec ,0x75 ,0x26 , +0xc6 ,0x36 ,0xd9 ,0x17 ,0x2c ,0xf1 ,0x7a ,0xdc , +0x4b ,0xf1 ,0xe2 ,0xd9 ,0x95 ,0xba ,0xac ,0x87 , +0xc1 ,0xf3 ,0x8e ,0x58 ,0x08 ,0xd8 ,0x87 ,0x60 , +0xc9 ,0xee ,0x6a ,0xde ,0xa4 ,0xd2 ,0xfc ,0x0d , +0xe5 ,0x36 ,0xc4 ,0x5c ,0x52 ,0xb3 ,0x07 ,0x54 , +0x65 ,0x24 ,0xc1 ,0xb1 ,0xd1 ,0xb1 ,0x53 ,0x13 , +0x31 ,0x79 ,0x7f ,0x05 ,0x76 ,0xeb ,0x37 ,0x59 , +0x15 ,0x2b ,0xd1 ,0x3f ,0xac ,0x08 ,0x97 ,0xeb , +0x91 ,0x98 ,0xdf ,0x6c ,0x09 ,0x0d ,0x04 ,0x9f , +0xdc ,0x3b ,0x0e ,0x60 ,0x68 ,0x47 ,0x23 ,0x15 , +0x16 ,0xc6 ,0x0b ,0x35 ,0xf8 ,0x77 ,0xa2 ,0x78 , +0x50 ,0xd4 ,0x64 ,0x22 ,0x33 ,0xff ,0xfb ,0x93 , +0x71 ,0x46 ,0x50 ,0x39 ,0x1b ,0x9c ,0xea ,0x4e , +0x8d ,0x0c ,0x37 ,0xe5 ,0x5c ,0x51 ,0x3a ,0x31 , +0xb2 ,0x85 ,0x84 ,0x3f ,0x41 ,0xee ,0xa2 ,0xc1 , +0xc6 ,0x13 ,0x3b ,0x54 ,0x28 ,0xd2 ,0x18 ,0x37 , +0xcc ,0x46 ,0x9f ,0x6a ,0x91 ,0x3d ,0x5a ,0x15 , +0x3c ,0x89 ,0xa3 ,0x61 ,0x06 ,0x7d ,0x2e ,0x78 , +0xbe ,0x7d ,0x40 ,0xba ,0x2f ,0x95 ,0xb1 ,0x2f , +0x87 ,0x3b ,0x8a ,0xbe ,0x6a ,0xf4 ,0xc2 ,0x31 , +0x74 ,0xee ,0x91 ,0xe0 ,0x23 ,0xaa ,0x5d ,0x7f , +0xdd ,0xf0 ,0x44 ,0x8c ,0x0b ,0x59 ,0x2b ,0xfc , +0x48 ,0x3a ,0xdf ,0x07 ,0x05 ,0x38 ,0x6c ,0xc9 , +0xeb ,0x18 ,0x24 ,0x68 ,0x8d ,0x58 ,0x98 ,0xd3 , +0x31 ,0xa3 ,0xe4 ,0x70 ,0x59 ,0xb1 ,0x21 ,0xbe , +0x7e ,0x65 ,0x7d ,0xb8 ,0x04 ,0xab ,0xf6 ,0xe4 , +0xd7 ,0xda ,0xec ,0x09 ,0x8f ,0xda ,0x6d ,0x24 , +0x07 ,0xcc ,0x29 ,0x17 ,0x05 ,0x78 ,0x1a ,0xc1 , +0xb1 ,0xce ,0xfc ,0xaa ,0x2d ,0xe7 ,0xcc ,0x85 , +0x84 ,0x84 ,0x03 ,0x2a ,0x0c ,0x3f ,0xa9 ,0xf8 , +0xfd ,0x84 ,0x53 ,0x59 ,0x5c ,0xf0 ,0xd4 ,0x09 , +0xf0 ,0xd2 ,0x6c ,0x32 ,0x03 ,0xb0 ,0xa0 ,0x8c , +0x52 ,0xeb ,0x23 ,0x91 ,0x88 ,0x43 ,0x13 ,0x46 , +0xf6 ,0x1e ,0xb4 ,0x1b ,0xf5 ,0x8e ,0x3a ,0xb5 , +0x3d ,0x00 ,0xf6 ,0xe5 ,0x08 ,0x3d ,0x5f ,0x39 , +0xd3 ,0x21 ,0x69 ,0xbc ,0x03 ,0x22 ,0x3a ,0xd2 , +0x5c ,0x84 ,0xf8 ,0x15 ,0xc4 ,0x80 ,0x0b ,0xbc , +0x29 ,0x3c ,0xf3 ,0x95 ,0x98 ,0xcd ,0x8f ,0x35 , +0xbc ,0xa5 ,0x3e ,0xfc ,0xd4 ,0x13 ,0x9e ,0xde , +0x4f ,0xce ,0x71 ,0x9d ,0x09 ,0xad ,0xf2 ,0x80 , +0x6b ,0x65 ,0x7f ,0x03 ,0x00 ,0x14 ,0x7c ,0x15 , +0x85 ,0x40 ,0x6d ,0x70 ,0xea ,0xdc ,0xb3 ,0x63 , +0x35 ,0x4f ,0x4d ,0xe0 ,0xd9 ,0xd5 ,0x3c ,0x58 , +0x56 ,0x23 ,0x80 ,0xe2 ,0x36 ,0xdd ,0x75 ,0x1d , +0x94 ,0x11 ,0x41 ,0x8e ,0xe0 ,0x81 ,0x8e ,0xcf , +0xe0 ,0xe5 ,0xf6 ,0xde ,0xd1 ,0xe7 ,0x04 ,0x12 , +0x79 ,0x92 ,0x2b ,0x71 ,0x2a ,0x79 ,0x8b ,0x7c , +0x44 ,0x79 ,0x16 ,0x30 ,0x4e ,0xf4 ,0xf6 ,0x9b , +0xb7 ,0x40 ,0xa3 ,0x5a ,0xa7 ,0x69 ,0x3e ,0xc1 , +0x3a ,0x04 ,0xd0 ,0x88 ,0xa0 ,0x3b ,0xdd ,0xc6 , +0x9e ,0x7e ,0x1e ,0x1e ,0x8f ,0x44 ,0xf7 ,0x73 , +0x67 ,0x1e ,0x1a ,0x78 ,0xfa ,0x62 ,0xf4 ,0xa9 , +0xa8 ,0xc6 ,0x5b ,0xb8 ,0xfa ,0x06 ,0x7d ,0x5e , +0x38 ,0x1c ,0x9a ,0x39 ,0xe9 ,0x39 ,0x98 ,0x22 , +0x0b ,0xa7 ,0xac ,0x0b ,0xf3 ,0xbc ,0xf1 ,0xeb , +0x8c ,0x81 ,0xe3 ,0x48 ,0x8a ,0xed ,0x42 ,0xc2 , +0x38 ,0xcf ,0x3e ,0xda ,0xd2 ,0x89 ,0x8d ,0x9c , +0x53 ,0xb5 ,0x2f ,0x41 ,0x01 ,0x26 ,0x84 ,0x9c , +0xa3 ,0x56 ,0xf6 ,0x49 ,0xc7 ,0xd4 ,0x9f ,0x93 , +0x1b ,0x96 ,0x49 ,0x5e ,0xad ,0xb3 ,0x84 ,0x1f , +0x3c ,0xa4 ,0xe0 ,0x9b ,0xd1 ,0x90 ,0xbc ,0x38 , +0x6c ,0xdd ,0x95 ,0x4d ,0x9d ,0xb1 ,0x71 ,0x57 , +0x2d ,0x34 ,0xe8 ,0xb8 ,0x42 ,0xc7 ,0x99 ,0x03 , +0xc7 ,0x07 ,0x30 ,0x65 ,0x91 ,0x55 ,0xd5 ,0x90 , +0x70 ,0x97 ,0x37 ,0x68 ,0xd4 ,0x11 ,0xf9 ,0xe8 , +0xce ,0xec ,0xdc ,0x34 ,0xd5 ,0xd3 ,0xb7 ,0xc4 , +0xb8 ,0x97 ,0x05 ,0x92 ,0xad ,0xf8 ,0xe2 ,0x36 , +0x64 ,0x41 ,0xc9 ,0xc5 ,0x41 ,0x77 ,0x52 ,0xd7 , +0x2c ,0xa5 ,0x24 ,0x2f ,0xd9 ,0x34 ,0x0b ,0x47 , +0x35 ,0xa7 ,0x28 ,0x8b ,0xc5 ,0xcd ,0xe9 ,0x46 , +0xac ,0x39 ,0x94 ,0x3c ,0x10 ,0xc6 ,0x29 ,0x73 , +0x0e ,0x0e ,0x5d ,0xe0 ,0x71 ,0x03 ,0x8a ,0x72 , +0x0e ,0x26 ,0xb0 ,0x7d ,0x84 ,0xed ,0x95 ,0x23 , +0x49 ,0x5a ,0x45 ,0x83 ,0x45 ,0x60 ,0x11 ,0x4a , +0x46 ,0x31 ,0xd4 ,0xd8 ,0x16 ,0x54 ,0x98 ,0x58 , +0xed ,0x6d ,0xcc ,0x5d ,0xd6 ,0x50 ,0x61 ,0x9f , +0x9d ,0xc5 ,0x3e ,0x9d ,0x32 ,0x47 ,0xde ,0x96 , +0xe1 ,0x5d ,0xd8 ,0xf8 ,0xb4 ,0x69 ,0x6f ,0xb9 , +0x15 ,0x90 ,0x57 ,0x7a ,0xf6 ,0xad ,0xb0 ,0x5b , +0xf5 ,0xa6 ,0x36 ,0x94 ,0xfd ,0x84 ,0xce ,0x1c , +0x0f ,0x4b ,0xd0 ,0xc2 ,0x5b ,0x6b ,0x56 ,0xef , +0x73 ,0x93 ,0x0b ,0xc3 ,0xee ,0xd9 ,0xcf ,0xd3 , +0xa4 ,0x22 ,0x58 ,0xcd ,0x50 ,0x6e ,0x65 ,0xf4 , +0xe9 ,0xb7 ,0x71 ,0xaf ,0x4b ,0xb3 ,0xb6 ,0x2f , +0x0f ,0x0e ,0x3b ,0xc9 ,0x85 ,0x14 ,0xf5 ,0x17 , +0xe8 ,0x7a ,0x3a ,0xbf ,0x5f ,0x5e ,0xf8 ,0x18 , +0x48 ,0xa6 ,0x72 ,0xab ,0x06 ,0x95 ,0xe9 ,0xc8 , +0xa7 ,0xf4 ,0x32 ,0x44 ,0x04 ,0x0c ,0x84 ,0x98 , +0x73 ,0xe3 ,0x89 ,0x8d ,0x5f ,0x7e ,0x4a ,0x42 , +0x8f ,0xc5 ,0x28 ,0xb1 ,0x82 ,0xef ,0x1c ,0x97 , +0x31 ,0x3b ,0x4d ,0xe0 ,0x0e ,0x10 ,0x10 ,0x97 , +0x93 ,0x49 ,0x78 ,0x2f ,0x0d ,0x86 ,0x8b ,0xa1 , +0x53 ,0xa9 ,0x81 ,0x20 ,0x79 ,0xe7 ,0x07 ,0x77 , +0xb6 ,0xac ,0x5e ,0xd2 ,0x05 ,0xcd ,0xe9 ,0xdb , +0x8a ,0x94 ,0x82 ,0x8a ,0x23 ,0xb9 ,0x3d ,0x1c , +0xa9 ,0x7d ,0x72 ,0x4a ,0xed ,0x33 ,0xa3 ,0xdb , +0x21 ,0xa7 ,0x86 ,0x33 ,0x45 ,0xa5 ,0xaa ,0x56 , +0x45 ,0xb5 ,0x83 ,0x29 ,0x40 ,0x47 ,0x79 ,0x04 , +0x6e ,0xb9 ,0x95 ,0xd0 ,0x81 ,0x77 ,0x2d ,0x48 , +0x1e ,0xfe ,0xc3 ,0xc2 ,0x1e ,0xe5 ,0xf2 ,0xbe , +0xfd ,0x3b ,0x94 ,0x9f ,0xc4 ,0xc4 ,0x26 ,0x9d , +0xe4 ,0x66 ,0x1e ,0x19 ,0xee ,0x6c ,0x79 ,0x97 , +0x11 ,0x31 ,0x4b ,0x0d ,0x01 ,0xcb ,0xde ,0xa8 , +0xf6 ,0x6d ,0x7c ,0x39 ,0x46 ,0x4e ,0x7e ,0x3f , +0x94 ,0x17 ,0xdf ,0xa1 ,0x7d ,0xd9 ,0x1c ,0x8e , +0xbc ,0x7d ,0x33 ,0x7d ,0xe3 ,0x12 ,0x40 ,0xca , +0xab ,0x37 ,0x11 ,0x46 ,0xd4 ,0xae ,0xef ,0x44 , +0xa2 ,0xb3 ,0x6a ,0x66 ,0x0e ,0x0c ,0x90 ,0x7f , +0xdf ,0x5c ,0x66 ,0x5f ,0xf2 ,0x94 ,0x9f ,0xa6 , +0x73 ,0x4f ,0xeb ,0x0d ,0xad ,0xbf ,0xc0 ,0x63 , +0x5c ,0xdc ,0x46 ,0x51 ,0xe8 ,0x8e ,0x90 ,0x19 , +0xa8 ,0xa4 ,0x3c ,0x91 ,0x79 ,0xfa ,0x7e ,0x58 , +0x85 ,0x13 ,0x55 ,0xc5 ,0x19 ,0x82 ,0x37 ,0x1b , +0x0a ,0x02 ,0x1f ,0x99 ,0x6b ,0x18 ,0xf1 ,0x28 , +0x08 ,0xa2 ,0x73 ,0xb8 ,0x0f ,0x2e ,0xcd ,0xbf , +0xf3 ,0x86 ,0x7f ,0xea ,0xef ,0xd0 ,0xbb ,0xa6 , +0x21 ,0xdf ,0x49 ,0x73 ,0x51 ,0xcc ,0x36 ,0xd3 , +0x3e ,0xa0 ,0xf8 ,0x44 ,0xdf ,0xd3 ,0xa6 ,0xbe , +0x8a ,0xd4 ,0x57 ,0xdd ,0x72 ,0x94 ,0x61 ,0x0f , +0x82 ,0xd1 ,0x07 ,0xb8 ,0x7c ,0x18 ,0x83 ,0xdf , +0x3a ,0xe5 ,0x50 ,0x6a ,0x82 ,0x20 ,0xac ,0xa9 , +0xa8 ,0xff ,0xd9 ,0xf3 ,0x77 ,0x33 ,0x5a ,0x9e , +0x7f ,0x6d ,0xfe ,0x5d ,0x33 ,0x41 ,0x42 ,0xe7 , +0x6c ,0x19 ,0xe0 ,0x44 ,0x8a ,0x15 ,0xf6 ,0x70 , +0x98 ,0xb7 ,0x68 ,0x4d ,0xfa ,0x97 ,0x39 ,0xb0 , +0x8e ,0xe8 ,0x84 ,0x8b ,0x75 ,0x30 ,0xb7 ,0x7d , +0x92 ,0x69 ,0x20 ,0x9c ,0x81 ,0xfb ,0x4b ,0xf4 , +0x01 ,0x50 ,0xeb ,0xce ,0x0c ,0x1c ,0x6c ,0xb5 , +0x4a ,0xd7 ,0x27 ,0x0c ,0xce ,0xbb ,0xe5 ,0x85 , +0xf0 ,0xb6 ,0xee ,0xd5 ,0x70 ,0xdd ,0x3b ,0xfc , +0xd4 ,0x99 ,0xf1 ,0x33 ,0xdd ,0x8b ,0xc4 ,0x2f , +0xae ,0xab ,0x74 ,0x96 ,0x32 ,0xc7 ,0x4c ,0x56 , +0x3c ,0x89 ,0x0f ,0x96 ,0x0b ,0x42 ,0xc0 ,0xcb , +0xee ,0x0f ,0x0b ,0x8c ,0xfb ,0x7e ,0x47 ,0x7b , +0x64 ,0x48 ,0xfd ,0xb2 ,0x00 ,0x80 ,0x89 ,0xa5 , +0x13 ,0x55 ,0x62 ,0xfc ,0x8f ,0xe2 ,0x42 ,0x03 , +0xb7 ,0x4e ,0x2a ,0x79 ,0xb4 ,0x82 ,0xea ,0x23 , +0x49 ,0xda ,0xaf ,0x52 ,0x63 ,0x1e ,0x60 ,0x03 , +0x89 ,0x06 ,0x44 ,0x46 ,0x08 ,0xc3 ,0xc4 ,0x87 , +0x70 ,0x2e ,0xda ,0x94 ,0xad ,0x6b ,0xe0 ,0xe4 , +0xd1 ,0x8a ,0x06 ,0xc2 ,0xa8 ,0xc0 ,0xa7 ,0x43 , +0x3c ,0x47 ,0x52 ,0x0e ,0xc3 ,0x77 ,0x81 ,0x11 , +0x67 ,0x0e ,0xa0 ,0x70 ,0x04 ,0x47 ,0x29 ,0x40 , +0x86 ,0x0d ,0x34 ,0x56 ,0xa7 ,0xc9 ,0x35 ,0x59 , +0x68 ,0xdc ,0x93 ,0x81 ,0x70 ,0xee ,0x86 ,0xd9 , +0x80 ,0x06 ,0x40 ,0x4f ,0x1a ,0x0d ,0x40 ,0x30 , +0x0b ,0xcb ,0x96 ,0x47 ,0xc1 ,0xb7 ,0x52 ,0xfd , +0x56 ,0xe0 ,0x72 ,0x4b ,0xfb ,0xbd ,0x92 ,0x45 , +0x61 ,0x71 ,0xc2 ,0x33 ,0x11 ,0xbf ,0x52 ,0x83 , +0x79 ,0x26 ,0xe0 ,0x49 ,0x6b ,0xb7 ,0x05 ,0x8b , +0xe8 ,0x0e ,0x87 ,0x31 ,0xd7 ,0x9d ,0x8a ,0xf5 , +0xc0 ,0x5f ,0x2e ,0x58 ,0x4a ,0xdb ,0x11 ,0xb3 , +0x6c ,0x30 ,0x2a ,0x46 ,0x19 ,0xe3 ,0x27 ,0x84 , +0x1f ,0x63 ,0x6e ,0xf6 ,0x57 ,0xc7 ,0xc9 ,0xd8 , +0x5e ,0xba ,0xb3 ,0x87 ,0xd5 ,0x83 ,0x26 ,0x34 , +0x21 ,0x9e ,0x65 ,0xde ,0x42 ,0xd3 ,0xbe ,0x7b , +0xbc ,0x91 ,0x71 ,0x44 ,0x4d ,0x99 ,0x3b ,0x31 , +0xe5 ,0x3f ,0x11 ,0x4e ,0x7f ,0x13 ,0x51 ,0x3b , +0xae ,0x79 ,0xc9 ,0xd3 ,0x81 ,0x8e ,0x25 ,0x40 , +0x10 ,0xfc ,0x07 ,0x1e ,0xf9 ,0x7b ,0x9a ,0x4b , +0x6c ,0xe3 ,0xb3 ,0xad ,0x1a ,0x0a ,0xdd ,0x9e , +0x59 ,0x0c ,0xa2 ,0xcd ,0xae ,0x48 ,0x4a ,0x38 , +0x5b ,0x47 ,0x41 ,0x94 ,0x65 ,0x6b ,0xbb ,0xeb , +0x5b ,0xe3 ,0xaf ,0x07 ,0x5b ,0xd4 ,0x4a ,0xa2 , +0xc9 ,0x5d ,0x2f ,0x64 ,0x03 ,0xd7 ,0x3a ,0x2c , +0x6e ,0xce ,0x76 ,0x95 ,0xb4 ,0xb3 ,0xc0 ,0xf1 , +0xe2 ,0x45 ,0x73 ,0x7a ,0x5c ,0xab ,0xc1 ,0xfc , +0x02 ,0x8d ,0x81 ,0x29 ,0xb3 ,0xac ,0x07 ,0xec , +0x40 ,0x7d ,0x45 ,0xd9 ,0x7a ,0x59 ,0xee ,0x34 , +0xf0 ,0xe9 ,0xd5 ,0x7b ,0x96 ,0xb1 ,0x3d ,0x95 , +0xcc ,0x86 ,0xb5 ,0xb6 ,0x04 ,0x2d ,0xb5 ,0x92 , +0x7e ,0x76 ,0xf4 ,0x06 ,0xa9 ,0xa3 ,0x12 ,0x0f , +0xb1 ,0xaf ,0x26 ,0xba ,0x7c ,0xfc ,0x7e ,0x1c , +0xbc ,0x2c ,0x49 ,0x97 ,0x53 ,0x60 ,0x13 ,0x0b , +0xa6 ,0x61 ,0x83 ,0x89 ,0x42 ,0xd4 ,0x17 ,0x0c , +0x6c ,0x26 ,0x52 ,0xc3 ,0xb3 ,0xd4 ,0x67 ,0xf5 , +0xe3 ,0x04 ,0xb7 ,0xf4 ,0xcb ,0x80 ,0xb8 ,0xcb , +0x77 ,0x56 ,0x3e ,0xaa ,0x57 ,0x54 ,0xee ,0xb4 , +0x2c ,0x67 ,0xcf ,0xf2 ,0xdc ,0xbe ,0x55 ,0xf9 , +0x43 ,0x1f ,0x6e ,0x22 ,0x97 ,0x67 ,0x7f ,0xc4 , +0xef ,0xb1 ,0x26 ,0x31 ,0x1e ,0x27 ,0xdf ,0x41 , +0x80 ,0x47 ,0x6c ,0xe2 ,0xfa ,0xa9 ,0x8c ,0x2a , +0xf6 ,0xf2 ,0xab ,0xf0 ,0x15 ,0xda ,0x6c ,0xc8 , +0xfe ,0xb5 ,0x23 ,0xde ,0xa9 ,0x05 ,0x3f ,0x06 , +0x54 ,0x4c ,0xcd ,0xe1 ,0xab ,0xfc ,0x0e ,0x62 , +0x33 ,0x31 ,0x73 ,0x2c ,0x76 ,0xcb ,0xb4 ,0x47 , +0x1e ,0x20 ,0xad ,0xd8 ,0xf2 ,0x31 ,0xdd ,0xc4 , +0x8b ,0x0c ,0x77 ,0xbe ,0xe1 ,0x8b ,0x26 ,0x00 , +0x02 ,0x58 ,0xd6 ,0x8d ,0xef ,0xad ,0x74 ,0x67 , +0xab ,0x3f ,0xef ,0xcb ,0x6f ,0xb0 ,0xcc ,0x81 , +0x44 ,0x4c ,0xaf ,0xe9 ,0x49 ,0x4f ,0xdb ,0xa0 , +0x25 ,0xa4 ,0xf0 ,0x89 ,0xf1 ,0xbe ,0xd8 ,0x10 , +0xff ,0xb1 ,0x3b ,0x4b ,0xfa ,0x98 ,0xf5 ,0x79 , +0x6d ,0x1e ,0x69 ,0x4d ,0x57 ,0xb1 ,0xc8 ,0x19 , +0x1b ,0xbd ,0x1e ,0x8c ,0x84 ,0xb7 ,0x7b ,0xe8 , +0xd2 ,0x2d ,0x09 ,0x41 ,0x41 ,0x37 ,0x3d ,0xb1 , +0x6f ,0x26 ,0x5d ,0x71 ,0x16 ,0x3d ,0xb7 ,0x83 , +0x27 ,0x2c ,0xa7 ,0xb6 ,0x50 ,0xbd ,0x91 ,0x86 , +0xab ,0x24 ,0xa1 ,0x38 ,0xfd ,0xea ,0x71 ,0x55 , +0x7e ,0x9a ,0x07 ,0x77 ,0x4b ,0xfa ,0x61 ,0x66 , +0x20 ,0x1e ,0x28 ,0x95 ,0x18 ,0x1b ,0xa4 ,0xa0 , +0xfd ,0xc0 ,0x89 ,0x72 ,0x43 ,0xd9 ,0x3b ,0x49 , +0x5a ,0x3f ,0x9d ,0xbf ,0xdb ,0xb4 ,0x46 ,0xea , +0x42 ,0x01 ,0x77 ,0x23 ,0x68 ,0x95 ,0xb6 ,0x24 , +0xb3 ,0xa8 ,0x6c ,0x28 ,0x3b ,0x11 ,0x40 ,0x7e , +0x18 ,0x65 ,0x6d ,0xd8 ,0x24 ,0x42 ,0x7d ,0x88 , +0xc0 ,0x52 ,0xd9 ,0x05 ,0xe4 ,0x95 ,0x90 ,0x87 , +0x8c ,0xf4 ,0xd0 ,0x6b ,0xb9 ,0x83 ,0x99 ,0x34 , +0x6d ,0xfe ,0x54 ,0x40 ,0x94 ,0x52 ,0x21 ,0x4f , +0x14 ,0x25 ,0xc5 ,0xd6 ,0x5e ,0x95 ,0xdc ,0x0a , +0x2b ,0x89 ,0x20 ,0x11 ,0x84 ,0x48 ,0xd6 ,0x3a , +0xcd ,0x5c ,0x24 ,0xad ,0x62 ,0xe3 ,0xb1 ,0x93 , +0x25 ,0x8d ,0xcd ,0x7e ,0xfc ,0x27 ,0xa3 ,0x37 , +0xfd ,0x84 ,0xfc ,0x1b ,0xb2 ,0xf1 ,0x27 ,0x38 , +0x5a ,0xb7 ,0xfc ,0xf2 ,0xfa ,0x95 ,0x66 ,0xd4 , +0xfb ,0xba ,0xa7 ,0xd7 ,0xa3 ,0x72 ,0x69 ,0x48 , +0x48 ,0x8c ,0xeb ,0x28 ,0x89 ,0xfe ,0x33 ,0x65 , +0x5a ,0x36 ,0x01 ,0x7e ,0x06 ,0x79 ,0x0a ,0x09 , +0x3b ,0x74 ,0x11 ,0x9a ,0x6e ,0xbf ,0xd4 ,0x9e , +0x58 ,0x90 ,0x49 ,0x4f ,0x4d ,0x08 ,0xd4 ,0xe5 , +0x4a ,0x09 ,0x21 ,0xef ,0x8b ,0xb8 ,0x74 ,0x3b , +0x91 ,0xdd ,0x36 ,0x85 ,0x60 ,0x2d ,0xfa ,0xd4 , +0x45 ,0x7b ,0x45 ,0x53 ,0xf5 ,0x47 ,0x87 ,0x7e , +0xa6 ,0x37 ,0xc8 ,0x78 ,0x7a ,0x68 ,0x9d ,0x8d , +0x65 ,0x2c ,0x0e ,0x91 ,0x5c ,0xa2 ,0x60 ,0xf0 , +0x8e ,0x3f ,0xe9 ,0x1a ,0xcd ,0xaa ,0xe7 ,0xd5 , +0x77 ,0x18 ,0xaf ,0xc9 ,0xbc ,0x18 ,0xea ,0x48 , +0x1b ,0xfb ,0x22 ,0x48 ,0x70 ,0x16 ,0x29 ,0x9e , +0x5b ,0xc1 ,0x2c ,0x66 ,0x23 ,0xbc ,0xf0 ,0x1f , +0xef ,0xaf ,0xe4 ,0xd6 ,0x04 ,0x19 ,0x82 ,0x7a , +0x0b ,0xba ,0x4b ,0x46 ,0xb1 ,0x6a ,0x85 ,0x5d , +0xb4 ,0x73 ,0xd6 ,0x21 ,0xa1 ,0x71 ,0x60 ,0x14 , +0xee ,0x0a ,0x77 ,0xc4 ,0x66 ,0x2e ,0xf9 ,0x69 , +0x30 ,0xaf ,0x41 ,0x0b ,0xc8 ,0x83 ,0x3c ,0x53 , +0x99 ,0x19 ,0x27 ,0x46 ,0xf7 ,0x41 ,0x6e ,0x56 , +0xdc ,0x94 ,0x28 ,0x67 ,0x4e ,0xb7 ,0x25 ,0x48 , +0x8a ,0xc2 ,0xe0 ,0x60 ,0x96 ,0xcc ,0x18 ,0xf4 , +0x84 ,0xdd ,0xa7 ,0x5e ,0x3e ,0x05 ,0x0b ,0x26 , +0x26 ,0xb2 ,0x5c ,0x1f ,0x57 ,0x1a ,0x04 ,0x7e , +0x6a ,0xe3 ,0x2f ,0xb4 ,0x35 ,0xb6 ,0x38 ,0x40 , +0x40 ,0xcd ,0x6f ,0x87 ,0x2e ,0xef ,0xa3 ,0xd7 , +0xa9 ,0xc2 ,0xe8 ,0x0d ,0x27 ,0xdf ,0x44 ,0x62 , +0x99 ,0xa0 ,0xfc ,0xcf ,0x81 ,0x78 ,0xcb ,0xfe , +0xe5 ,0xa0 ,0x03 ,0x4e ,0x6c ,0xd7 ,0xf4 ,0xaf , +0x7a ,0xbb ,0x61 ,0x82 ,0xfe ,0x71 ,0x89 ,0xb2 , +0x22 ,0x7c ,0x8e ,0x83 ,0x04 ,0xce ,0xf6 ,0x5d , +0x84 ,0x8f ,0x95 ,0x6a ,0x7f ,0xad ,0xfd ,0x32 , +0x9c ,0x5e ,0xe4 ,0x9c ,0x89 ,0x60 ,0x54 ,0xaa , +0x96 ,0x72 ,0xd2 ,0xd7 ,0x36 ,0x85 ,0xa9 ,0x45 , +0xd2 ,0x2a ,0xa1 ,0x81 ,0x49 ,0x6f ,0x7e ,0x04 , +0xfa ,0xe2 ,0xfe ,0x90 ,0x26 ,0x77 ,0x5a ,0x33 , +0xb8 ,0x04 ,0x9a ,0x7a ,0xe6 ,0x4c ,0x4f ,0xad , +0x72 ,0x96 ,0x08 ,0x28 ,0x58 ,0x13 ,0xf8 ,0xc4 , +0x1c ,0xf0 ,0xc3 ,0x45 ,0x95 ,0x49 ,0x20 ,0x8c , +0x9f ,0x39 ,0x70 ,0xe1 ,0x77 ,0xfe ,0xd5 ,0x4b , +0xaf ,0x86 ,0xda ,0xef ,0x22 ,0x06 ,0x83 ,0x36 , +0x29 ,0x12 ,0x11 ,0x40 ,0xbc ,0x3b ,0x86 ,0xaa , +0xaa ,0x65 ,0x60 ,0xc3 ,0x80 ,0xca ,0xed ,0xa9 , +0xf3 ,0xb0 ,0x79 ,0x96 ,0xa2 ,0x55 ,0x27 ,0x28 , +0x55 ,0x73 ,0x26 ,0xa5 ,0x50 ,0xea ,0x92 ,0x4b , +0x3c ,0x5c ,0x82 ,0x33 ,0xf0 ,0x01 ,0x3f ,0x03 , +0xc1 ,0x08 ,0x05 ,0xbf ,0x98 ,0xf4 ,0x9b ,0x6d , +0xa5 ,0xa8 ,0xb4 ,0x82 ,0x0c ,0x06 ,0xfa ,0xff , +0x2d ,0x08 ,0xf3 ,0x05 ,0x4f ,0x57 ,0x2a ,0x39 , +0xd4 ,0x83 ,0x0d ,0x75 ,0x51 ,0xd8 ,0x5b ,0x1b , +0xd3 ,0x51 ,0x5a ,0x32 ,0x2a ,0x9b ,0x32 ,0xb2 , +0xf2 ,0xa4 ,0x96 ,0x12 ,0xf2 ,0xae ,0x40 ,0x34 , +0x67 ,0xa8 ,0xf5 ,0x44 ,0xd5 ,0x35 ,0x53 ,0xfe , +0xa3 ,0x60 ,0x96 ,0x63 ,0x0f ,0x1f ,0x6e ,0xb0 , +0x5a ,0x42 ,0xa6 ,0xfc ,0x51 ,0x0b ,0x60 ,0x27 , +0xbc ,0x06 ,0x71 ,0xed ,0x65 ,0x5b ,0x23 ,0x86 , +0x4a ,0x07 ,0x3b ,0x22 ,0x07 ,0x46 ,0xe6 ,0x90 , +0x3e ,0xf3 ,0x25 ,0x50 ,0x1b ,0x4c ,0x7f ,0x03 , +0x08 ,0xa8 ,0x36 ,0x6b ,0x87 ,0xe5 ,0xe3 ,0xdb , +0x9a ,0x38 ,0x83 ,0xff ,0x9f ,0x1a ,0x9f ,0x57 , +0xa4 ,0x2a ,0xf6 ,0x37 ,0xbc ,0x1a ,0xff ,0xc9 , +0x1e ,0x35 ,0x0c ,0xc3 ,0x7c ,0xa3 ,0xb2 ,0xe5 , +0xd2 ,0xc6 ,0xb4 ,0x57 ,0x47 ,0xe4 ,0x32 ,0x16 , +0x6d ,0xa9 ,0xae ,0x64 ,0xe6 ,0x2d ,0x8d ,0xc5 , +0x8d ,0x50 ,0x8e ,0xe8 ,0x1a ,0x22 ,0x34 ,0x2a , +0xd9 ,0xeb ,0x51 ,0x90 ,0x4a ,0xb1 ,0x41 ,0x7d , +0x64 ,0xf9 ,0xb9 ,0x0d ,0xf6 ,0x23 ,0x33 ,0xb0 , +0x33 ,0xf4 ,0xf7 ,0x3f ,0x27 ,0x84 ,0xc6 ,0x0f , +0x54 ,0xa5 ,0xc0 ,0x2e ,0xec ,0x0b ,0x3a ,0x48 , +0x6e ,0x80 ,0x35 ,0x81 ,0x43 ,0x9b ,0x90 ,0xb1 , +0xd0 ,0x2b ,0xea ,0x21 ,0xdc ,0xda ,0x5b ,0x09 , +0xf4 ,0xcc ,0x10 ,0xb4 ,0xc7 ,0xfe ,0x79 ,0x51 , +0xc3 ,0xc5 ,0xac ,0x88 ,0x74 ,0x84 ,0x0b ,0x4b , +0xca ,0x79 ,0x16 ,0x29 ,0xfb ,0x69 ,0x54 ,0xdf , +0x41 ,0x7e ,0xe9 ,0xc7 ,0x8e ,0xea ,0xa5 ,0xfe , +0xfc ,0x76 ,0x0e ,0x90 ,0xc4 ,0x92 ,0x38 ,0xad , +0x7b ,0x48 ,0xe6 ,0x6e ,0xf7 ,0x21 ,0xfd ,0x4e , +0x93 ,0x0a ,0x7b ,0x41 ,0x83 ,0x68 ,0xfb ,0x57 , +0x51 ,0x76 ,0x34 ,0xa9 ,0x6c ,0x00 ,0xaa ,0x4f , +0x66 ,0x65 ,0x98 ,0x4a ,0x4f ,0xa3 ,0xa0 ,0xef , +0x69 ,0x3f ,0xe3 ,0x1c ,0x92 ,0x8c ,0xfd ,0xd8 , +0xe8 ,0xde ,0x7c ,0x7f ,0x3e ,0x84 ,0x8e ,0x69 , +0x3c ,0xf1 ,0xf2 ,0x05 ,0x46 ,0xdc ,0x2f ,0x9d , +0x5e ,0x6e ,0x4c ,0xfb ,0xb5 ,0x99 ,0x2a ,0x59 , +0x63 ,0xc1 ,0x34 ,0xbc ,0x57 ,0xc0 ,0x0d ,0xb9 , +0x61 ,0x25 ,0xf3 ,0x33 ,0x23 ,0x51 ,0xb6 ,0x0d , +0x07 ,0xa6 ,0xab ,0x94 ,0x4a ,0xb7 ,0x2a ,0xea , +0xee ,0xac ,0xa3 ,0xc3 ,0x04 ,0x8b ,0x0e ,0x56 , +0xfe ,0x44 ,0xa7 ,0x39 ,0xe2 ,0xed ,0xed ,0xb4 , +0x22 ,0x2b ,0xac ,0x12 ,0x32 ,0x28 ,0x91 ,0xd8 , +0xa5 ,0xab ,0xff ,0x5f ,0xe0 ,0x4b ,0xda ,0x78 , +0x17 ,0xda ,0xf1 ,0x01 ,0x5b ,0xcd ,0xe2 ,0x5f , +0x50 ,0x45 ,0x73 ,0x2b ,0xe4 ,0x76 ,0x77 ,0xf4 , +0x64 ,0x1d ,0x43 ,0xfb ,0x84 ,0x7a ,0xea ,0x91 , +0xae ,0xf9 ,0x9e ,0xb7 ,0xb4 ,0xb0 ,0x91 ,0x5f , +0x16 ,0x35 ,0x9a ,0x11 ,0xb8 ,0xc7 ,0xc1 ,0x8c , +0xc6 ,0x10 ,0x8d ,0x2f ,0x63 ,0x4a ,0xa7 ,0x57 , +0x3a ,0x51 ,0xd6 ,0x32 ,0x2d ,0x64 ,0x72 ,0xd4 , +0x66 ,0xdc ,0x10 ,0xa6 ,0x67 ,0xd6 ,0x04 ,0x23 , +0x9d ,0x0a ,0x11 ,0x77 ,0xdd ,0x37 ,0x94 ,0x17 , +0x3c ,0xbf ,0x8b ,0x65 ,0xb0 ,0x2e ,0x5e ,0x66 , +0x47 ,0x64 ,0xac ,0xdd ,0xf0 ,0x84 ,0xfd ,0x39 , +0xfa ,0x15 ,0x5d ,0xef ,0xae ,0xca ,0xc1 ,0x36 , +0xa7 ,0x5c ,0xbf ,0xc7 ,0x08 ,0xc2 ,0x66 ,0x00 , +0x74 ,0x74 ,0x4e ,0x27 ,0x3f ,0x55 ,0x8a ,0xb7 , +0x38 ,0x66 ,0x83 ,0x6d ,0xcf ,0x99 ,0x9e ,0x60 , +0x8f ,0xdd ,0x2e ,0x62 ,0x22 ,0x0e ,0xef ,0x0c , +0x98 ,0xa7 ,0x85 ,0x74 ,0x3b ,0x9d ,0xec ,0x9e , +0xa9 ,0x19 ,0x72 ,0xa5 ,0x7f ,0x2c ,0x39 ,0xb7 , +0x7d ,0xb7 ,0xf1 ,0x12 ,0x65 ,0x27 ,0x4b ,0x5a , +0xde ,0x17 ,0xfe ,0xad ,0x44 ,0xf3 ,0x20 ,0x4d , +0xfd ,0xe4 ,0x1f ,0xb5 ,0x81 ,0xb0 ,0x36 ,0x37 , +0x08 ,0x6f ,0xc3 ,0x0c ,0xe9 ,0x85 ,0x98 ,0x82 , +0xa9 ,0x62 ,0x0c ,0xc4 ,0x97 ,0xc0 ,0x50 ,0xc8 , +0xa7 ,0x3c ,0x50 ,0x9f ,0x43 ,0xb9 ,0xcd ,0x5e , +0x4d ,0xfa ,0x1c ,0x4b ,0x0b ,0xa9 ,0x98 ,0x85 , +0x38 ,0x92 ,0xac ,0x8d ,0xe4 ,0xad ,0x9b ,0x98 , +0xab ,0xd9 ,0x38 ,0xac ,0x62 ,0x52 ,0xa3 ,0x22 , +0x63 ,0x0f ,0xbf ,0x95 ,0x48 ,0xdf ,0x69 ,0xe7 , +0x8b ,0x33 ,0xd5 ,0xb2 ,0xbd ,0x05 ,0x49 ,0x49 , +0x9d ,0x57 ,0x73 ,0x19 ,0x33 ,0xae ,0xfa ,0x33 , +0xf1 ,0x19 ,0xa8 ,0x80 ,0xce ,0x04 ,0x9f ,0xbc , +0x1d ,0x65 ,0x82 ,0x1b ,0xe5 ,0x3a ,0x51 ,0xc8 , +0x1c ,0x21 ,0xe3 ,0x5d ,0xf3 ,0x7d ,0x9b ,0x2f , +0x2c ,0x1d ,0x4a ,0x7f ,0x9b ,0x68 ,0x35 ,0xa3 , +0xb2 ,0x50 ,0xf7 ,0x62 ,0x79 ,0xcd ,0xf4 ,0x98 , +0x4f ,0xe5 ,0x63 ,0x7c ,0x3e ,0x45 ,0x31 ,0x8c , +0x16 ,0xa0 ,0x12 ,0xc8 ,0x58 ,0xce ,0x39 ,0xa6 , +0xbc ,0x54 ,0xdb ,0xc5 ,0xe0 ,0xd5 ,0xba ,0xbc , +0xb9 ,0x04 ,0xf4 ,0x8d ,0xe8 ,0x2f ,0x15 ,0x9d , +}; + +/* 100 test cases */ +static struct crc_test { +uint32_t crc;/* random starting crc */ +uint32_t start;/* random 6 bit offset in buf */ +uint32_t length;/* random 11 bit length of test */ +uint32_t crc32c_le;/* expected crc32c_le result */ +} test[] = +{ + {0x674bf11d ,0x00000038 ,0x00000542 ,0xf6e93d6c }, + {0x35c672c6 ,0x0000003a ,0x000001aa ,0x0fe92aca }, + {0x496da28e ,0x00000039 ,0x000005af ,0x52e1ebb8 }, + {0x09a9b90e ,0x00000027 ,0x000001f8 ,0x0798af9a }, + {0xdc97e5a9 ,0x00000025 ,0x000003b6 ,0x18eb3152 }, + {0x47c58900 ,0x0000000a ,0x000000b9 ,0xd00d08c7 }, + {0x292561e8 ,0x0000000c ,0x00000403 ,0x8ba966bc }, + {0x415037f6 ,0x00000003 ,0x00000676 ,0x11d694a2 }, + {0x3466e707 ,0x00000026 ,0x00000042 ,0x6ab3208d }, + {0xafd1281b ,0x00000023 ,0x000002ee ,0xba4603c5 }, + {0xd3857b18 ,0x00000028 ,0x000004a2 ,0xe6071c6f }, + {0x1d825a8f ,0x0000002b ,0x0000050b ,0x179ec30a }, + {0x5033e3bc ,0x0000000b ,0x00000078 ,0x0903beb8 }, + {0x94f1fb5e ,0x0000000f ,0x000003a2 ,0x6a7cb4fa }, + {0xc9a0fe14 ,0x00000009 ,0x00000473 ,0xdb535801 }, + {0x88a034b1 ,0x0000001c ,0x000005ad ,0x92bed597 }, + {0xf0f72239 ,0x00000020 ,0x0000026d ,0x192a3f1b }, + {0xcc20a5e3 ,0x0000003b ,0x0000067a ,0xccbaec1a }, + {0xce589c95 ,0x0000002b ,0x00000641 ,0x7eabae4d }, + {0x78edc885 ,0x00000035 ,0x000005be ,0x28c72982 }, + {0x9d40a377 ,0x0000003b ,0x00000038 ,0xc3cd4d18 }, + {0x703d0e01 ,0x0000003c ,0x000006f1 ,0xbca8f0e7 }, + {0x776bf505 ,0x0000000f ,0x000005b2 ,0x713f60b3 }, + {0x4a3e7854 ,0x00000027 ,0x000004b8 ,0xebd08fd5 }, + {0x209172dd ,0x0000003b ,0x00000356 ,0x64406c59 }, + {0x3ba4cc5b ,0x0000002f ,0x00000203 ,0x7421890e }, + {0xfc62f297 ,0x00000000 ,0x00000079 ,0xe9347603 }, + {0x64280b8b ,0x00000016 ,0x000007ab ,0x1bef9060 }, + {0x97dd724b ,0x00000033 ,0x000007ad ,0x34720072 }, + {0x61394b52 ,0x00000035 ,0x00000571 ,0x48310f59 }, + {0x29b4faff ,0x00000024 ,0x0000006e ,0x783a4213 }, + {0x29bfb1dc ,0x0000000b ,0x00000244 ,0x9e8efd41 }, + {0x86ae934b ,0x00000035 ,0x00000104 ,0xfc3d34a5 }, + {0xc4c1024e ,0x0000002e ,0x000006b1 ,0x17a52ae2 }, + {0x3287a80a ,0x00000026 ,0x00000496 ,0x886d935a }, + {0xa4db423e ,0x00000023 ,0x0000045d ,0xeaaeaeb2 }, + {0x7a1078df ,0x00000015 ,0x0000014a ,0x8e900a4b }, + {0x6048bd5b ,0x00000006 ,0x0000006a ,0xd74662b1 }, + {0xd8f9ea20 ,0x0000003d ,0x00000277 ,0xd26752ba }, + {0xea5ec3b4 ,0x0000002a ,0x000004fe ,0x8b1fcd62 }, + {0x2dfb005d ,0x00000016 ,0x00000345 ,0xf54342fe }, + {0x5a214ade ,0x00000020 ,0x000005b6 ,0x5b95b988 }, + {0xf0ab9cca ,0x00000032 ,0x00000515 ,0x2e1176be }, + {0x91b444f9 ,0x0000002e ,0x000007f8 ,0x66120546 }, + {0x1b5d2ddb ,0x0000002e ,0x0000012c ,0xf256a5cc }, + {0xd824d1bb ,0x0000003a ,0x000007b5 ,0x4af1dd69 }, + {0x0470180c ,0x00000034 ,0x000001f0 ,0x56f0a04a }, + {0xffaa3a3f ,0x00000036 ,0x00000299 ,0x74f6b6b2 }, + {0x6406cfeb ,0x00000023 ,0x00000600 ,0x085951fd }, + {0xb24aaa38 ,0x0000003e ,0x000004a1 ,0xc65387eb }, + {0x58b2ab7c ,0x00000039 ,0x000002b4 ,0x1ca9257b }, + {0x3db85970 ,0x00000006 ,0x000002b6 ,0xfd196d76 }, + {0x857830c5 ,0x00000003 ,0x00000590 ,0x5ef88339 }, + {0xe1fcd978 ,0x0000003e ,0x000007d8 ,0x2c3714d9 }, + {0xb982a768 ,0x00000016 ,0x000006e0 ,0x58576548 }, + {0x1d581ce8 ,0x0000001e ,0x0000058b ,0xfd7c57de }, + {0x2456719b ,0x00000025 ,0x00000503 ,0xd5fedd59 }, + {0xfae6d8f2 ,0x00000000 ,0x0000055d ,0x1cc3b17b }, + {0xcba828e3 ,0x00000039 ,0x000002ce ,0x270eed73 }, + {0x13d25952 ,0x0000000a ,0x0000072d ,0x91ecbb11 }, + {0x0342be3f ,0x00000015 ,0x00000599 ,0x05ed8d0c }, + {0xeaa344e0 ,0x00000014 ,0x000004d8 ,0x0b09ad5b }, + {0xbbb52021 ,0x0000003b ,0x00000272 ,0xf8d511fb }, + {0xb66384dc ,0x0000001d ,0x000007fc ,0x5ad832cc }, + {0x616c01b6 ,0x00000022 ,0x000002c8 ,0x1214d196 }, + {0xce2bdaad ,0x00000016 ,0x0000062a ,0x5747218a }, + {0x00fe84d7 ,0x00000005 ,0x00000205 ,0xde8f14de }, + {0xbebdcb4c ,0x00000006 ,0x0000055d ,0x3563b7b9 }, + {0xd8b1a02a ,0x00000010 ,0x00000387 ,0x071475d0 }, + {0x3b96cad2 ,0x00000036 ,0x00000347 ,0x54c79d60 }, + {0xc94c1ed7 ,0x00000005 ,0x0000038b ,0x4c53eee6 }, + {0x1aad454e ,0x00000025 ,0x000002b2 ,0x10137a3c }, + {0xa4fec9a6 ,0x00000000 ,0x000006d6 ,0xaa9d6c73 }, + {0x1bbe71e2 ,0x0000001f ,0x000002fd ,0xb63d23e7 }, + {0x4201c7e4 ,0x00000002 ,0x000002b7 ,0x7f53e9cf }, + {0x23fddc96 ,0x00000003 ,0x00000627 ,0x13c1cd83 }, + {0xd82ba25c ,0x00000016 ,0x0000063e ,0x49ff5867 }, + {0x786f2032 ,0x0000002d ,0x0000060f ,0x8467f211 }, + {0xfebe4e1f ,0x0000002a ,0x000004f2 ,0x3f9683b2 }, + {0x1a6e0a39 ,0x00000008 ,0x00000672 ,0x76a3f874 }, + {0x56000ab8 ,0x0000000e ,0x000000e5 ,0x863b702f }, + {0x4717fe0c ,0x00000000 ,0x000006ec ,0xdc6c58ff }, + {0xd5d5d68e ,0x0000003c ,0x000003a3 ,0x0622cc95 }, + {0xc25dd6c6 ,0x00000024 ,0x000006c0 ,0xe85605cd }, + {0xe9b11300 ,0x00000023 ,0x00000683 ,0x31da5f06 }, + {0x95cd285e ,0x00000001 ,0x00000047 ,0xa1f2e784 }, + {0xd9245a25 ,0x0000001e ,0x000003a6 ,0xb07cc616 }, + {0x103279db ,0x00000006 ,0x0000039b ,0xbf943b6c }, + {0x1cba3172 ,0x00000027 ,0x000001c8 ,0x2c01af1c }, + {0x8f613739 ,0x0000000c ,0x000001df ,0x0fe5f56d }, + {0x1c6aa90d ,0x0000001b ,0x0000053c ,0xf8943b2d }, + {0xaabe5b93 ,0x0000003d ,0x00000715 ,0xe4d89272 }, + {0xf15dd038 ,0x00000006 ,0x000006db ,0x7c2f6bbb }, + {0x584dd49c ,0x00000020 ,0x000007bc ,0xabbf388b }, + {0x5d8c9506 ,0x00000020 ,0x00000470 ,0x1dca1f4e }, + {0xb80d17b0 ,0x00000032 ,0x00000346 ,0x5c170e23 }, + {0xdaf0592e ,0x00000023 ,0x000007b0 ,0xc0e9d672 }, + {0x4793cc85 ,0x0000000d ,0x00000706 ,0xc18bdc86 }, + {0x82ebf64e ,0x00000009 ,0x000007c3 ,0xa874fcdd }, + {0xb18a0319 ,0x00000026 ,0x000007db ,0x9dc0bb48 }, +}; + +static int +crc32c_test (void ) +{ +int i; +int errors =0 ; +int bytes =0 ; +struct timeval start, stop; +uint64_t usec; + +/* keep static to prevent cache warming code from +* getting eliminated by the compiler */ +static uint32_t crc; + +/* pre-warm the cache */ +for (i =0 ; i <100 ; i++) { + bytes +=2 *test[i].length; + + crc ^=crc32c_le (test[i].crc, test_buf + + test[i].start, test[i].length); + } + +gettimeofday (&start,NULL ); +for (i =0 ; i <100 ; i++) { +if (test[i].crc32c_le !=crc32c_le (test[i].crc, test_buf + + test[i].start, test[i].length)) + errors++; + } +gettimeofday (&stop,NULL ); + + usec = stop.tv_usec - start.tv_usec + +1000000 * (stop.tv_sec - start.tv_sec); + +if (errors) +printf ("crc32c: %d self tests failed\n" , errors); +else { +printf ("crc32c: tests passed, %d bytes in %" PRIu64" usec\n" , + bytes, usec); + } + +return errors; +} + +#endif /* _LIBFROG_CRC32SELFTEST_H_ */
io/Makefile +4 -4
@@ -9,10 +9,10 @@ LTCOMMAND = xfs_io LSRCFILES = xfs_bmap.sh xfs_freeze.sh xfs_mkfile.sh HFILES = init.h io.h CFILES = init.c \ - attr.c bmap.c cowextsize.c encrypt.c file.c freeze.c fsync.c \ - getrusage.c imap.c inject.c label.c link.c mmap.c open.c parent.c \ - pread.c prealloc.c pwrite.c reflink.c resblks.c scrub.c seek.c \ - shutdown.c stat.c swapext.c sync.c truncate.c utimes.c + attr.c bmap.c crc32selftest.c cowextsize.c encrypt.c file.c freeze.c \ + fsync.c getrusage.c imap.c inject.c label.c link.c mmap.c open.c \ + parent.c pread.c prealloc.c pwrite.c reflink.c resblks.c scrub.c \ + seek.c shutdown.c stat.c swapext.c sync.c truncate.c utimes.c LLDLIBS = $(LIBXCMD) $(LIBHANDLE) $(LIBFROG) $(LIBPTHREAD) LTDEPENDENCIES = $(LIBXCMD) $(LIBHANDLE) $(LIBFROG)
io/crc32selftest.c new file +51 -0
51 lines not on this page · raw message
io/init.c +1 -0
@@ -85,6 +85,7 @@ init_commands(void)sync_range_init ();truncate_init ();utimes_init (); +crc32selftest_init (); }/*
io/io.h +1 -0
@@ -182,3 +182,4 @@ extern void log_writes_init(void);extern void scrub_init (void );extern void repair_init (void ); +extern void crc32selftest_init (void );
libfrog/crc32.c +1 -668
675 lines not on this page · raw message
Quoted 7 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Add a self test for crc32 into
xfs_ioso that xfstests can check the operation of the (potentially cross-compiled) package binaries by isolating the self test code to a header file that can be included by the build system self test andxfs_io.
Quoted 8 lines
Signed-off-by Darrick J. Wong <[email protected]>--- include/crc32selftest.h | 706 +++++++++++++++++++++++++++++++++++++++++++++++ io/Makefile | 8 - io/crc32selftest.c | 51 +++ io/init.c | 1 io/io.h | 1 libfrog/crc32.c | 669 ---------------------------------------------
needs a manpage change as well I think.
Quoted 4 lines
6 files changed, 764 insertions(+), 672 deletions(-) create mode 100644 include/crc32selftest.h create mode 100644 io/crc32selftest.c
...
Quoted 25 lines
io/crc32selftest.c new file +19
-0@@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (c) 2018 Oracle, Inc. +* All Rights Reserved. +*/ + +#include "platform_defs.h" +#include "command.h" +#include "init.h" +#include "io.h" +#include "crc32c.h" +#include "crc32selftest.h" + +static int +crc32selftest_f ( +int argc, +char **argv) +{ +int c;
io/crc32selftest.c line 29
Quoted 10 lines
io/crc32selftest.c new file +10
-0+int errors; + +while ((c =getopt (argc, argv,"" )) !=EOF ) { +switch (c) { +default : +fprintf (stderr, +_ ("Bad option for crc32selftest command.\n" )); +return 0 ; + } + }
I think we can drop the getopt bits altogether because:
io/crc32selftest.c line 39
Quoted 9 lines
io/crc32selftest.c new file +9
-0+ errors =crc32c_test (); +return errors ==0 ?0 :1 ; +} + +static const cmdinfo_t crc32selftest_cmd = { + .name ="crc32selftest" , + .cfunc = crc32selftest_f, + .argmin =0 , + .argmax =0 ,
This command structure doesn't even let us get there:
# io/xfs_io -c "crc32selftest foo" bad argument count 1 to crc32selftest, expected 0 arguments # io/xfs_io -c "crc32selftest -f" bad argument count 1 to crc32selftest, expected 0 arguments
and other "argmax" functions (freeze, thaw, close, munmap...) don't bother with getopt at all.
io/crc32selftest.c line 41
Quoted 2 lines
io/crc32selftest.c new file +2
-0+ .canpush = 0, + .args = "",
drop this I think, otherwise we get a weird space in usage:
crc32selftest -- crc32c self test
vs
crc32selftest -- crc32c self test
because
if (ct->args)
printf("%s ", ct->args);
printf("-- %s\n", ct->oneline);io/crc32selftest.c line 51
Quoted 11 lines
io/crc32selftest.c new file +10
-0+ .flags = CMD_FLAG_ONESHOT | CMD_FLAG_FOREIGN_OK | + CMD_NOFILE_OK | CMD_NOMAP_OK, + .oneline = N_("crc32c self test"), +}; + +void +crc32selftest_init (void ) +{ +add_command (&crc32selftest_cmd); +}
ok is it better to call this crc32c selftest or crc32 selftest? Seems a little inconsistent in the naming.
Quoted 21 lines
io/init.c +1
-0@@ -85,6 +85,7 @@ init_commands(void)sync_range_init ();truncate_init ();utimes_init (); +crc32selftest_init (); }/* io/io.h +1
-0@@ -182,3 +182,4 @@ extern void log_writes_init(void);extern void scrub_init (void );extern void repair_init (void ); +extern void crc32selftest_init (void );
Quoted 17 lines · Eric Sandeen
Quoted 7 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Add a self test for crc32 into
xfs_ioso that xfstests can check the operation of the (potentially cross-compiled) package binaries by isolating the self test code to a header file that can be included by the build system self test andxfs_io.Quoted 8 lines
Signed-off-by Darrick J. Wong <[email protected]>--- include/crc32selftest.h | 706 +++++++++++++++++++++++++++++++++++++++++++++++ io/Makefile | 8 - io/crc32selftest.c | 51 +++ io/init.c | 1 io/io.h | 1 libfrog/crc32.c | 669 ---------------------------------------------
Quoted 1 line
needs a manpage change as well I think.
Dangit, I forgot to port that over when I moved the command.
Quoted 57 lines
Quoted 4 lines
6 files changed, 764 insertions(+), 672 deletions(-) create mode 100644 include/crc32selftest.h create mode 100644 io/crc32selftest.c...
Quoted 25 lines
io/crc32selftest.c new file +19
-0@@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (c) 2018 Oracle, Inc. +* All Rights Reserved. +*/ + +#include "platform_defs.h" +#include "command.h" +#include "init.h" +#include "io.h" +#include "crc32c.h" +#include "crc32selftest.h" + +static int +crc32selftest_f ( +int argc, +char **argv) +{ +int c;io/crc32selftest.c line 29
Quoted 10 lines
io/crc32selftest.c new file +10
-0+int errors; + +while ((c =getopt (argc, argv,"" )) !=EOF ) { +switch (c) { +default : +fprintf (stderr, +_ ("Bad option for crc32selftest command.\n" )); +return 0 ; + } + }I think we can drop the getopt bits altogether because:
io/crc32selftest.c line 39
Quoted 9 lines
io/crc32selftest.c new file +9
-0+ errors =crc32c_test (); +return errors ==0 ?0 :1 ; +} + +static const cmdinfo_t crc32selftest_cmd = { + .name ="crc32selftest" , + .cfunc = crc32selftest_f, + .argmin =0 , + .argmax =0 ,This command structure doesn't even let us get there:
Quoted 7 lines
# io/xfs_io -c "crc32selftest foo" bad argument count 1 to crc32selftest, expected 0 arguments # io/xfs_io -c "crc32selftest -f" bad argument count 1 to crc32selftest, expected 0 argumentsand other "argmax" functions (freeze, thaw, close, munmap...) don't bother with getopt at all.
ok.
Quoted 9 lines
io/crc32selftest.c line 41
Quoted 2 lines
io/crc32selftest.c new file +2
-0+ .canpush = 0, + .args = "",drop this I think, otherwise we get a weird space in usage:
crc32selftest -- crc32c self test
vs
Quoted 8 lines
crc32selftest -- crc32c self test
because
if (ct->args) printf("%s ", ct->args); printf("-- %s\n", ct->oneline);
Aha, that's why it does that...
Quoted 4 lines
Quoted 3 lines
io/crc32selftest.c new file +3
-0+ .flags = CMD_FLAG_ONESHOT | CMD_FLAG_FOREIGN_OK | + CMD_NOFILE_OK | CMD_NOMAP_OK, + .oneline = N_("crc32c self test"),
Quoted 9 lines
io/crc32selftest.c line 51
Quoted 7 lines
io/crc32selftest.c new file +7
-0+}; + +void +crc32selftest_init (void ) +{ +add_command (&crc32selftest_cmd); +}ok is it better to call this crc32c selftest or crc32 selftest? Seems a little inconsistent in the naming.
crc32cselftest it is then.
--D
Quoted 23 lines
Quoted 21 lines
io/init.c +1
-0@@ -85,6 +85,7 @@ init_commands(void)sync_range_init ();truncate_init ();utimes_init (); +crc32selftest_init (); }/* io/io.h +1
-0@@ -182,3 +182,4 @@ extern void log_writes_init(void);extern void scrub_init (void );extern void repair_init (void ); +extern void crc32selftest_init (void );
PATCH v2 1/1 xfs_io: add crc32 self test
In reply to Darrick J. WongFrom: Darrick J. Wong <[email protected]>
Add a self test for crc32c into xfs_io so that xfstests can check the operation of the (potentially cross-compiled) package binaries by isolating the self test code to a header file that can be included by the build system self test and xfs_io.
---
v2: crc32selftest -> crc32cselftest, other command form changes
--- include/crc32cselftest.h | 706 ++++++++++++++++++++++++++++++++++++++++++++++ io/Makefile | 8 - io/crc32cselftest.c | 37 ++ io/init.c | 1 io/io.h | 1 libfrog/crc32.c | 669 -------------------------------------------- man/man8/xfs_io.8 | 4 7 files changed, 754 insertions(+), 672 deletions(-) create mode 100644 include/crc32cselftest.h create mode 100644 io/crc32cselftest.c
include/crc32cselftest.h new file +706 -0
@@ -0,0 +1,706 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Aug 8, 2011 Bob Pearson with help from Joakim Tjernlund and George Spelvin +* cleaned up code to current version of sparse and added the slicing-by-8 +* algorithm to the closely similar existing slicing-by-4 algorithm. +* Oct 15, 2000 Matt Domsch <[email protected]> +* Nicer crc32 functions/docs submitted by [email protected]. Thanks! +* Code was from the public domain, copyright abandoned. Code was +* subsequently included in the kernel, thus was re-licensed under the +* GNU GPL v2. +* Oct 12, 2000 Matt Domsch <[email protected]> +* Same crc32 function was used in 5 other places in the kernel. +* I made one version, and deleted the others. +* There are various incantations of crc32(). Some use a seed of 0 or ~0. +* Some xor at the end with ~0. The generic crc32() function takes +* seed as an argument, and doesn't xor at the end. Then individual +* users can do whatever they need. +* drivers/net/smc9194.c uses seed ~0, doesn't xor with ~0. +* fs/jffs2 uses seed 0, doesn't xor with ~0. +* fs/partitions/efi.c uses seed ~0, xor's with ~0. +*/ + +/* see: Documentation/crc32.txt for a description of algorithms */ + +/* +* lifted from the 3.8-rc2 kernel source for xfsprogs. Killed CONFIG_X86 +* specific bits for just the generic algorithm. Also removed the big endian +* version of the algorithm as XFS only uses the little endian CRC version to +* match the hardware acceleration available on Intel CPUs. +*/ + +/* This is just the crc32 self test bits from crc32.c. */ + +#ifndef _LIBFROG_CRC32CSELFTEST_H_ +#define _LIBFROG_CRC32CSELFTEST_H_ + +/* 4096 random bytes */ +static uint8_t __attribute__((__aligned__ (8 ))) test_buf[] = +{ +0x5b ,0x85 ,0x21 ,0xcb ,0x09 ,0x68 ,0x7d ,0x30 , +0xc7 ,0x69 ,0xd7 ,0x30 ,0x92 ,0xde ,0x59 ,0xe4 , +0xc9 ,0x6e ,0x8b ,0xdb ,0x98 ,0x6b ,0xaa ,0x60 , +0xa8 ,0xb5 ,0xbc ,0x6c ,0xa9 ,0xb1 ,0x5b ,0x2c , +0xea ,0xb4 ,0x92 ,0x6a ,0x3f ,0x79 ,0x91 ,0xe4 , +0xe9 ,0x70 ,0x51 ,0x8c ,0x7f ,0x95 ,0x6f ,0x1a , +0x56 ,0xa1 ,0x5c ,0x27 ,0x03 ,0x67 ,0x9f ,0x3a , +0xe2 ,0x31 ,0x11 ,0x29 ,0x6b ,0x98 ,0xfc ,0xc4 , +0x53 ,0x24 ,0xc5 ,0x8b ,0xce ,0x47 ,0xb2 ,0xb9 , +0x32 ,0xcb ,0xc1 ,0xd0 ,0x03 ,0x57 ,0x4e ,0xd4 , +0xe9 ,0x3c ,0xa1 ,0x63 ,0xcf ,0x12 ,0x0e ,0xca , +0xe1 ,0x13 ,0xd1 ,0x93 ,0xa6 ,0x88 ,0x5c ,0x61 , +0x5b ,0xbb ,0xf0 ,0x19 ,0x46 ,0xb4 ,0xcf ,0x9e , +0xb6 ,0x6b ,0x4c ,0x3a ,0xcf ,0x60 ,0xf9 ,0x7a , +0x8d ,0x07 ,0x63 ,0xdb ,0x40 ,0xe9 ,0x0b ,0x6f , +0xad ,0x97 ,0xf1 ,0xed ,0xd0 ,0x1e ,0x26 ,0xfd , +0xbf ,0xb7 ,0xc8 ,0x04 ,0x94 ,0xf8 ,0x8b ,0x8c , +0xf1 ,0xab ,0x7a ,0xd4 ,0xdd ,0xf3 ,0xe8 ,0x88 , +0xc3 ,0xed ,0x17 ,0x8a ,0x9b ,0x40 ,0x0d ,0x53 , +0x62 ,0x12 ,0x03 ,0x5f ,0x1b ,0x35 ,0x32 ,0x1f , +0xb4 ,0x7b ,0x93 ,0x78 ,0x0d ,0xdb ,0xce ,0xa4 , +0xc0 ,0x47 ,0xd5 ,0xbf ,0x68 ,0xe8 ,0x5d ,0x74 , +0x8f ,0x8e ,0x75 ,0x1c ,0xb2 ,0x4f ,0x9a ,0x60 , +0xd1 ,0xbe ,0x10 ,0xf4 ,0x5c ,0xa1 ,0x53 ,0x09 , +0xa5 ,0xe0 ,0x09 ,0x54 ,0x85 ,0x5c ,0xdc ,0x07 , +0xe7 ,0x21 ,0x69 ,0x7b ,0x8a ,0xfd ,0x90 ,0xf1 , +0x22 ,0xd0 ,0xb4 ,0x36 ,0x28 ,0xe6 ,0xb8 ,0x0f , +0x39 ,0xde ,0xc8 ,0xf3 ,0x86 ,0x60 ,0x34 ,0xd2 , +0x5e ,0xdf ,0xfd ,0xcf ,0x0f ,0xa9 ,0x65 ,0xf0 , +0xd5 ,0x4d ,0x96 ,0x40 ,0xe3 ,0xdf ,0x3f ,0x95 , +0x5a ,0x39 ,0x19 ,0x93 ,0xf4 ,0x75 ,0xce ,0x22 , +0x00 ,0x1c ,0x93 ,0xe2 ,0x03 ,0x66 ,0xf4 ,0x93 , +0x73 ,0x86 ,0x81 ,0x8e ,0x29 ,0x44 ,0x48 ,0x86 , +0x61 ,0x7c ,0x48 ,0xa3 ,0x43 ,0xd2 ,0x9c ,0x8d , +0xd4 ,0x95 ,0xdd ,0xe1 ,0x22 ,0x89 ,0x3a ,0x40 , +0x4c ,0x1b ,0x8a ,0x04 ,0xa8 ,0x09 ,0x69 ,0x8b , +0xea ,0xc6 ,0x55 ,0x8e ,0x57 ,0xe6 ,0x64 ,0x35 , +0xf0 ,0xc7 ,0x16 ,0x9f ,0x5d ,0x5e ,0x86 ,0x40 , +0x46 ,0xbb ,0xe5 ,0x45 ,0x88 ,0xfe ,0xc9 ,0x63 , +0x15 ,0xfb ,0xf5 ,0xbd ,0x71 ,0x61 ,0xeb ,0x7b , +0x78 ,0x70 ,0x07 ,0x31 ,0x03 ,0x9f ,0xb2 ,0xc8 , +0xa7 ,0xab ,0x47 ,0xfd ,0xdf ,0xa0 ,0x78 ,0x72 , +0xa4 ,0x2a ,0xe4 ,0xb6 ,0xba ,0xc0 ,0x1e ,0x86 , +0x71 ,0xe6 ,0x3d ,0x18 ,0x37 ,0x70 ,0xe6 ,0xff , +0xe0 ,0xbc ,0x0b ,0x22 ,0xa0 ,0x1f ,0xd3 ,0xed , +0xa2 ,0x55 ,0x39 ,0xab ,0xa8 ,0x13 ,0x73 ,0x7c , +0x3f ,0xb2 ,0xd6 ,0x19 ,0xac ,0xff ,0x99 ,0xed , +0xe8 ,0xe6 ,0xa6 ,0x22 ,0xe3 ,0x9c ,0xf1 ,0x30 , +0xdc ,0x01 ,0x0a ,0x56 ,0xfa ,0xe4 ,0xc9 ,0x99 , +0xdd ,0xa8 ,0xd8 ,0xda ,0x35 ,0x51 ,0x73 ,0xb4 , +0x40 ,0x86 ,0x85 ,0xdb ,0x5c ,0xd5 ,0x85 ,0x80 , +0x14 ,0x9c ,0xfd ,0x98 ,0xa9 ,0x82 ,0xc5 ,0x37 , +0xff ,0x32 ,0x5d ,0xd0 ,0x0b ,0xfa ,0xdc ,0x04 , +0x5e ,0x09 ,0xd2 ,0xca ,0x17 ,0x4b ,0x1a ,0x8e , +0x15 ,0xe1 ,0xcc ,0x4e ,0x52 ,0x88 ,0x35 ,0xbd , +0x48 ,0xfe ,0x15 ,0xa0 ,0x91 ,0xfd ,0x7e ,0x6c , +0x0e ,0x5d ,0x79 ,0x1b ,0x81 ,0x79 ,0xd2 ,0x09 , +0x34 ,0x70 ,0x3d ,0x81 ,0xec ,0xf6 ,0x24 ,0xbb , +0xfb ,0xf1 ,0x7b ,0xdf ,0x54 ,0xea ,0x80 ,0x9b , +0xc7 ,0x99 ,0x9e ,0xbd ,0x16 ,0x78 ,0x12 ,0x53 , +0x5e ,0x01 ,0xa7 ,0x4e ,0xbd ,0x67 ,0xe1 ,0x9b , +0x4c ,0x0e ,0x61 ,0x45 ,0x97 ,0xd2 ,0xf0 ,0x0f , +0xfe ,0x15 ,0x08 ,0xb7 ,0x11 ,0x4c ,0xe7 ,0xff , +0x81 ,0x53 ,0xff ,0x91 ,0x25 ,0x38 ,0x7e ,0x40 , +0x94 ,0xe5 ,0xe0 ,0xad ,0xe6 ,0xd9 ,0x79 ,0xb6 , +0x92 ,0xc9 ,0xfc ,0xde ,0xc3 ,0x1a ,0x23 ,0xbb , +0xdd ,0xc8 ,0x51 ,0x0c ,0x3a ,0x72 ,0xfa ,0x73 , +0x6f ,0xb7 ,0xee ,0x61 ,0x39 ,0x03 ,0x01 ,0x3f , +0x7f ,0x94 ,0x2e ,0x2e ,0xba ,0x3a ,0xbb ,0xb4 , +0xfa ,0x6a ,0x17 ,0xfe ,0xea ,0xef ,0x5e ,0x66 , +0x97 ,0x3f ,0x32 ,0x3d ,0xd7 ,0x3e ,0xb1 ,0xf1 , +0x6c ,0x14 ,0x4c ,0xfd ,0x37 ,0xd3 ,0x38 ,0x80 , +0xfb ,0xde ,0xa6 ,0x24 ,0x1e ,0xc8 ,0xca ,0x7f , +0x3a ,0x93 ,0xd8 ,0x8b ,0x18 ,0x13 ,0xb2 ,0xe5 , +0xe4 ,0x93 ,0x05 ,0x53 ,0x4f ,0x84 ,0x66 ,0xa7 , +0x58 ,0x5c ,0x7b ,0x86 ,0x52 ,0x6d ,0x0d ,0xce , +0xa4 ,0x30 ,0x7d ,0xb6 ,0x18 ,0x9f ,0xeb ,0xff , +0x22 ,0xbb ,0x72 ,0x29 ,0xb9 ,0x44 ,0x0b ,0x48 , +0x1e ,0x84 ,0x71 ,0x81 ,0xe3 ,0x6d ,0x73 ,0x26 , +0x92 ,0xb4 ,0x4d ,0x2a ,0x29 ,0xb8 ,0x1f ,0x72 , +0xed ,0xd0 ,0xe1 ,0x64 ,0x77 ,0xea ,0x8e ,0x88 , +0x0f ,0xef ,0x3f ,0xb1 ,0x3b ,0xad ,0xf9 ,0xc9 , +0x8b ,0xd0 ,0xac ,0xc6 ,0xcc ,0xa9 ,0x40 ,0xcc , +0x76 ,0xf6 ,0x3b ,0x53 ,0xb5 ,0x88 ,0xcb ,0xc8 , +0x37 ,0xf1 ,0xa2 ,0xba ,0x23 ,0x15 ,0x99 ,0x09 , +0xcc ,0xe7 ,0x7a ,0x3b ,0x37 ,0xf7 ,0x58 ,0xc8 , +0x46 ,0x8c ,0x2b ,0x2f ,0x4e ,0x0e ,0xa6 ,0x5c , +0xea ,0x85 ,0x55 ,0xba ,0x02 ,0x0e ,0x0e ,0x48 , +0xbc ,0xe1 ,0xb1 ,0x01 ,0x35 ,0x79 ,0x13 ,0x3d , +0x1b ,0xc0 ,0x53 ,0x68 ,0x11 ,0xe7 ,0x95 ,0x0f , +0x9d ,0x3f ,0x4c ,0x47 ,0x7b ,0x4d ,0x1c ,0xae , +0x50 ,0x9b ,0xcb ,0xdd ,0x05 ,0x8d ,0x9a ,0x97 , +0xfd ,0x8c ,0xef ,0x0c ,0x1d ,0x67 ,0x73 ,0xa8 , +0x28 ,0x36 ,0xd5 ,0xb6 ,0x92 ,0x33 ,0x40 ,0x75 , +0x0b ,0x51 ,0xc3 ,0x64 ,0xba ,0x1d ,0xc2 ,0xcc , +0xee ,0x7d ,0x54 ,0x0f ,0x27 ,0x69 ,0xa7 ,0x27 , +0x63 ,0x30 ,0x29 ,0xd9 ,0xc8 ,0x84 ,0xd8 ,0xdf , +0x9f ,0x68 ,0x8d ,0x04 ,0xca ,0xa6 ,0xc5 ,0xc7 , +0x7a ,0x5c ,0xc8 ,0xd1 ,0xcb ,0x4a ,0xec ,0xd0 , +0xd8 ,0x20 ,0x69 ,0xc5 ,0x17 ,0xcd ,0x78 ,0xc8 , +0x75 ,0x23 ,0x30 ,0x69 ,0xc9 ,0xd4 ,0xea ,0x5c , +0x4f ,0x6b ,0x86 ,0x3f ,0x8b ,0xfe ,0xee ,0x44 , +0xc9 ,0x7c ,0xb7 ,0xdd ,0x3e ,0xe5 ,0xec ,0x54 , +0x03 ,0x3e ,0xaa ,0x82 ,0xc6 ,0xdf ,0xb2 ,0x38 , +0x0e ,0x5d ,0xb3 ,0x88 ,0xd9 ,0xd3 ,0x69 ,0x5f , +0x8f ,0x70 ,0x8a ,0x7e ,0x11 ,0xd9 ,0x1e ,0x7b , +0x38 ,0xf1 ,0x42 ,0x1a ,0xc0 ,0x35 ,0xf5 ,0xc7 , +0x36 ,0x85 ,0xf5 ,0xf7 ,0xb8 ,0x7e ,0xc7 ,0xef , +0x18 ,0xf1 ,0x63 ,0xd6 ,0x7a ,0xc6 ,0xc9 ,0x0e , +0x4d ,0x69 ,0x4f ,0x84 ,0xef ,0x26 ,0x41 ,0x0c , +0xec ,0xc7 ,0xe0 ,0x7e ,0x3c ,0x67 ,0x01 ,0x4c , +0x62 ,0x1a ,0x20 ,0x6f ,0xee ,0x47 ,0x4d ,0xc0 , +0x99 ,0x13 ,0x8d ,0x91 ,0x4a ,0x26 ,0xd4 ,0x37 , +0x28 ,0x90 ,0x58 ,0x75 ,0x66 ,0x2b ,0x0a ,0xdf , +0xda ,0xee ,0x92 ,0x25 ,0x90 ,0x62 ,0x39 ,0x9e , +0x44 ,0x98 ,0xad ,0xc1 ,0x88 ,0xed ,0xe4 ,0xb4 , +0xaf ,0xf5 ,0x8c ,0x9b ,0x48 ,0x4d ,0x56 ,0x60 , +0x97 ,0x0f ,0x61 ,0x59 ,0x9e ,0xa6 ,0x27 ,0xfe , +0xc1 ,0x91 ,0x15 ,0x38 ,0xb8 ,0x0f ,0xae ,0x61 , +0x7d ,0x26 ,0x13 ,0x5a ,0x73 ,0xff ,0x1c ,0xa3 , +0x61 ,0x04 ,0x58 ,0x48 ,0x55 ,0x44 ,0x11 ,0xfe , +0x15 ,0xca ,0xc3 ,0xbd ,0xca ,0xc5 ,0xb4 ,0x40 , +0x5d ,0x1b ,0x7f ,0x39 ,0xb5 ,0x9c ,0x35 ,0xec , +0x61 ,0x15 ,0x32 ,0x32 ,0xb8 ,0x4e ,0x40 ,0x9f , +0x17 ,0x1f ,0x0a ,0x4d ,0xa9 ,0x91 ,0xef ,0xb7 , +0xb0 ,0xeb ,0xc2 ,0x83 ,0x9a ,0x6c ,0xd2 ,0x79 , +0x43 ,0x78 ,0x5e ,0x2f ,0xe5 ,0xdd ,0x1a ,0x3c , +0x45 ,0xab ,0x29 ,0x40 ,0x3a ,0x37 ,0x5b ,0x6f , +0xd7 ,0xfc ,0x48 ,0x64 ,0x3c ,0x49 ,0xfb ,0x21 , +0xbe ,0xc3 ,0xff ,0x07 ,0xfb ,0x17 ,0xe9 ,0xc9 , +0x0c ,0x4c ,0x5c ,0x15 ,0x9e ,0x8e ,0x22 ,0x30 , +0x0a ,0xde ,0x48 ,0x7f ,0xdb ,0x0d ,0xd1 ,0x2b , +0x87 ,0x38 ,0x9e ,0xcc ,0x5a ,0x01 ,0x16 ,0xee , +0x75 ,0x49 ,0x0d ,0x30 ,0x01 ,0x34 ,0x6a ,0xb6 , +0x9a ,0x5a ,0x2a ,0xec ,0xbb ,0x48 ,0xac ,0xd3 , +0x77 ,0x83 ,0xd8 ,0x08 ,0x86 ,0x4f ,0x48 ,0x09 , +0x29 ,0x41 ,0x79 ,0xa1 ,0x03 ,0x12 ,0xc4 ,0xcd , +0x90 ,0x55 ,0x47 ,0x66 ,0x74 ,0x9a ,0xcc ,0x4f , +0x35 ,0x8c ,0xd6 ,0x98 ,0xef ,0xeb ,0x45 ,0xb9 , +0x9a ,0x26 ,0x2f ,0x39 ,0xa5 ,0x70 ,0x6d ,0xfc , +0xb4 ,0x51 ,0xee ,0xf4 ,0x9c ,0xe7 ,0x38 ,0x59 , +0xad ,0xf4 ,0xbc ,0x46 ,0xff ,0x46 ,0x8e ,0x60 , +0x9c ,0xa3 ,0x60 ,0x1d ,0xf8 ,0x26 ,0x72 ,0xf5 , +0x72 ,0x9d ,0x68 ,0x80 ,0x04 ,0xf6 ,0x0b ,0xa1 , +0x0a ,0xd5 ,0xa7 ,0x82 ,0x3a ,0x3e ,0x47 ,0xa8 , +0x5a ,0xde ,0x59 ,0x4f ,0x7b ,0x07 ,0xb3 ,0xe9 , +0x24 ,0x19 ,0x3d ,0x34 ,0x05 ,0xec ,0xf1 ,0xab , +0x6e ,0x64 ,0x8f ,0xd3 ,0xe6 ,0x41 ,0x86 ,0x80 , +0x70 ,0xe3 ,0x8d ,0x60 ,0x9c ,0x34 ,0x25 ,0x01 , +0x07 ,0x4d ,0x19 ,0x41 ,0x4e ,0x3d ,0x5c ,0x7e , +0xa8 ,0xf5 ,0xcc ,0xd5 ,0x7b ,0xe2 ,0x7d ,0x3d , +0x49 ,0x86 ,0x7d ,0x07 ,0xb7 ,0x10 ,0xe3 ,0x35 , +0xb8 ,0x84 ,0x6d ,0x76 ,0xab ,0x17 ,0xc6 ,0x38 , +0xb4 ,0xd3 ,0x28 ,0x57 ,0xad ,0xd3 ,0x88 ,0x5a , +0xda ,0xea ,0xc8 ,0x94 ,0xcc ,0x37 ,0x19 ,0xac , +0x9c ,0x9f ,0x4b ,0x00 ,0x15 ,0xc0 ,0xc8 ,0xca , +0x1f ,0x15 ,0xaa ,0xe0 ,0xdb ,0xf9 ,0x2f ,0x57 , +0x1b ,0x24 ,0xc7 ,0x6f ,0x76 ,0x29 ,0xfb ,0xed , +0x25 ,0x0d ,0xc0 ,0xfe ,0xbd ,0x5a ,0xbf ,0x20 , +0x08 ,0x51 ,0x05 ,0xec ,0x71 ,0xa3 ,0xbf ,0xef , +0x5e ,0x99 ,0x75 ,0xdb ,0x3c ,0x5f ,0x9a ,0x8c , +0xbb ,0x19 ,0x5c ,0x0e ,0x93 ,0x19 ,0xf8 ,0x6a , +0xbc ,0xf2 ,0x12 ,0x54 ,0x2f ,0xcb ,0x28 ,0x64 , +0x88 ,0xb3 ,0x92 ,0x0d ,0x96 ,0xd1 ,0xa6 ,0xe4 , +0x1f ,0xf1 ,0x4d ,0xa4 ,0xab ,0x1c ,0xee ,0x54 , +0xf2 ,0xad ,0x29 ,0x6d ,0x32 ,0x37 ,0xb2 ,0x16 , +0x77 ,0x5c ,0xdc ,0x2e ,0x54 ,0xec ,0x75 ,0x26 , +0xc6 ,0x36 ,0xd9 ,0x17 ,0x2c ,0xf1 ,0x7a ,0xdc , +0x4b ,0xf1 ,0xe2 ,0xd9 ,0x95 ,0xba ,0xac ,0x87 , +0xc1 ,0xf3 ,0x8e ,0x58 ,0x08 ,0xd8 ,0x87 ,0x60 , +0xc9 ,0xee ,0x6a ,0xde ,0xa4 ,0xd2 ,0xfc ,0x0d , +0xe5 ,0x36 ,0xc4 ,0x5c ,0x52 ,0xb3 ,0x07 ,0x54 , +0x65 ,0x24 ,0xc1 ,0xb1 ,0xd1 ,0xb1 ,0x53 ,0x13 , +0x31 ,0x79 ,0x7f ,0x05 ,0x76 ,0xeb ,0x37 ,0x59 , +0x15 ,0x2b ,0xd1 ,0x3f ,0xac ,0x08 ,0x97 ,0xeb , +0x91 ,0x98 ,0xdf ,0x6c ,0x09 ,0x0d ,0x04 ,0x9f , +0xdc ,0x3b ,0x0e ,0x60 ,0x68 ,0x47 ,0x23 ,0x15 , +0x16 ,0xc6 ,0x0b ,0x35 ,0xf8 ,0x77 ,0xa2 ,0x78 , +0x50 ,0xd4 ,0x64 ,0x22 ,0x33 ,0xff ,0xfb ,0x93 , +0x71 ,0x46 ,0x50 ,0x39 ,0x1b ,0x9c ,0xea ,0x4e , +0x8d ,0x0c ,0x37 ,0xe5 ,0x5c ,0x51 ,0x3a ,0x31 , +0xb2 ,0x85 ,0x84 ,0x3f ,0x41 ,0xee ,0xa2 ,0xc1 , +0xc6 ,0x13 ,0x3b ,0x54 ,0x28 ,0xd2 ,0x18 ,0x37 , +0xcc ,0x46 ,0x9f ,0x6a ,0x91 ,0x3d ,0x5a ,0x15 , +0x3c ,0x89 ,0xa3 ,0x61 ,0x06 ,0x7d ,0x2e ,0x78 , +0xbe ,0x7d ,0x40 ,0xba ,0x2f ,0x95 ,0xb1 ,0x2f , +0x87 ,0x3b ,0x8a ,0xbe ,0x6a ,0xf4 ,0xc2 ,0x31 , +0x74 ,0xee ,0x91 ,0xe0 ,0x23 ,0xaa ,0x5d ,0x7f , +0xdd ,0xf0 ,0x44 ,0x8c ,0x0b ,0x59 ,0x2b ,0xfc , +0x48 ,0x3a ,0xdf ,0x07 ,0x05 ,0x38 ,0x6c ,0xc9 , +0xeb ,0x18 ,0x24 ,0x68 ,0x8d ,0x58 ,0x98 ,0xd3 , +0x31 ,0xa3 ,0xe4 ,0x70 ,0x59 ,0xb1 ,0x21 ,0xbe , +0x7e ,0x65 ,0x7d ,0xb8 ,0x04 ,0xab ,0xf6 ,0xe4 , +0xd7 ,0xda ,0xec ,0x09 ,0x8f ,0xda ,0x6d ,0x24 , +0x07 ,0xcc ,0x29 ,0x17 ,0x05 ,0x78 ,0x1a ,0xc1 , +0xb1 ,0xce ,0xfc ,0xaa ,0x2d ,0xe7 ,0xcc ,0x85 , +0x84 ,0x84 ,0x03 ,0x2a ,0x0c ,0x3f ,0xa9 ,0xf8 , +0xfd ,0x84 ,0x53 ,0x59 ,0x5c ,0xf0 ,0xd4 ,0x09 , +0xf0 ,0xd2 ,0x6c ,0x32 ,0x03 ,0xb0 ,0xa0 ,0x8c , +0x52 ,0xeb ,0x23 ,0x91 ,0x88 ,0x43 ,0x13 ,0x46 , +0xf6 ,0x1e ,0xb4 ,0x1b ,0xf5 ,0x8e ,0x3a ,0xb5 , +0x3d ,0x00 ,0xf6 ,0xe5 ,0x08 ,0x3d ,0x5f ,0x39 , +0xd3 ,0x21 ,0x69 ,0xbc ,0x03 ,0x22 ,0x3a ,0xd2 , +0x5c ,0x84 ,0xf8 ,0x15 ,0xc4 ,0x80 ,0x0b ,0xbc , +0x29 ,0x3c ,0xf3 ,0x95 ,0x98 ,0xcd ,0x8f ,0x35 , +0xbc ,0xa5 ,0x3e ,0xfc ,0xd4 ,0x13 ,0x9e ,0xde , +0x4f ,0xce ,0x71 ,0x9d ,0x09 ,0xad ,0xf2 ,0x80 , +0x6b ,0x65 ,0x7f ,0x03 ,0x00 ,0x14 ,0x7c ,0x15 , +0x85 ,0x40 ,0x6d ,0x70 ,0xea ,0xdc ,0xb3 ,0x63 , +0x35 ,0x4f ,0x4d ,0xe0 ,0xd9 ,0xd5 ,0x3c ,0x58 , +0x56 ,0x23 ,0x80 ,0xe2 ,0x36 ,0xdd ,0x75 ,0x1d , +0x94 ,0x11 ,0x41 ,0x8e ,0xe0 ,0x81 ,0x8e ,0xcf , +0xe0 ,0xe5 ,0xf6 ,0xde ,0xd1 ,0xe7 ,0x04 ,0x12 , +0x79 ,0x92 ,0x2b ,0x71 ,0x2a ,0x79 ,0x8b ,0x7c , +0x44 ,0x79 ,0x16 ,0x30 ,0x4e ,0xf4 ,0xf6 ,0x9b , +0xb7 ,0x40 ,0xa3 ,0x5a ,0xa7 ,0x69 ,0x3e ,0xc1 , +0x3a ,0x04 ,0xd0 ,0x88 ,0xa0 ,0x3b ,0xdd ,0xc6 , +0x9e ,0x7e ,0x1e ,0x1e ,0x8f ,0x44 ,0xf7 ,0x73 , +0x67 ,0x1e ,0x1a ,0x78 ,0xfa ,0x62 ,0xf4 ,0xa9 , +0xa8 ,0xc6 ,0x5b ,0xb8 ,0xfa ,0x06 ,0x7d ,0x5e , +0x38 ,0x1c ,0x9a ,0x39 ,0xe9 ,0x39 ,0x98 ,0x22 , +0x0b ,0xa7 ,0xac ,0x0b ,0xf3 ,0xbc ,0xf1 ,0xeb , +0x8c ,0x81 ,0xe3 ,0x48 ,0x8a ,0xed ,0x42 ,0xc2 , +0x38 ,0xcf ,0x3e ,0xda ,0xd2 ,0x89 ,0x8d ,0x9c , +0x53 ,0xb5 ,0x2f ,0x41 ,0x01 ,0x26 ,0x84 ,0x9c , +0xa3 ,0x56 ,0xf6 ,0x49 ,0xc7 ,0xd4 ,0x9f ,0x93 , +0x1b ,0x96 ,0x49 ,0x5e ,0xad ,0xb3 ,0x84 ,0x1f , +0x3c ,0xa4 ,0xe0 ,0x9b ,0xd1 ,0x90 ,0xbc ,0x38 , +0x6c ,0xdd ,0x95 ,0x4d ,0x9d ,0xb1 ,0x71 ,0x57 , +0x2d ,0x34 ,0xe8 ,0xb8 ,0x42 ,0xc7 ,0x99 ,0x03 , +0xc7 ,0x07 ,0x30 ,0x65 ,0x91 ,0x55 ,0xd5 ,0x90 , +0x70 ,0x97 ,0x37 ,0x68 ,0xd4 ,0x11 ,0xf9 ,0xe8 , +0xce ,0xec ,0xdc ,0x34 ,0xd5 ,0xd3 ,0xb7 ,0xc4 , +0xb8 ,0x97 ,0x05 ,0x92 ,0xad ,0xf8 ,0xe2 ,0x36 , +0x64 ,0x41 ,0xc9 ,0xc5 ,0x41 ,0x77 ,0x52 ,0xd7 , +0x2c ,0xa5 ,0x24 ,0x2f ,0xd9 ,0x34 ,0x0b ,0x47 , +0x35 ,0xa7 ,0x28 ,0x8b ,0xc5 ,0xcd ,0xe9 ,0x46 , +0xac ,0x39 ,0x94 ,0x3c ,0x10 ,0xc6 ,0x29 ,0x73 , +0x0e ,0x0e ,0x5d ,0xe0 ,0x71 ,0x03 ,0x8a ,0x72 , +0x0e ,0x26 ,0xb0 ,0x7d ,0x84 ,0xed ,0x95 ,0x23 , +0x49 ,0x5a ,0x45 ,0x83 ,0x45 ,0x60 ,0x11 ,0x4a , +0x46 ,0x31 ,0xd4 ,0xd8 ,0x16 ,0x54 ,0x98 ,0x58 , +0xed ,0x6d ,0xcc ,0x5d ,0xd6 ,0x50 ,0x61 ,0x9f , +0x9d ,0xc5 ,0x3e ,0x9d ,0x32 ,0x47 ,0xde ,0x96 , +0xe1 ,0x5d ,0xd8 ,0xf8 ,0xb4 ,0x69 ,0x6f ,0xb9 , +0x15 ,0x90 ,0x57 ,0x7a ,0xf6 ,0xad ,0xb0 ,0x5b , +0xf5 ,0xa6 ,0x36 ,0x94 ,0xfd ,0x84 ,0xce ,0x1c , +0x0f ,0x4b ,0xd0 ,0xc2 ,0x5b ,0x6b ,0x56 ,0xef , +0x73 ,0x93 ,0x0b ,0xc3 ,0xee ,0xd9 ,0xcf ,0xd3 , +0xa4 ,0x22 ,0x58 ,0xcd ,0x50 ,0x6e ,0x65 ,0xf4 , +0xe9 ,0xb7 ,0x71 ,0xaf ,0x4b ,0xb3 ,0xb6 ,0x2f , +0x0f ,0x0e ,0x3b ,0xc9 ,0x85 ,0x14 ,0xf5 ,0x17 , +0xe8 ,0x7a ,0x3a ,0xbf ,0x5f ,0x5e ,0xf8 ,0x18 , +0x48 ,0xa6 ,0x72 ,0xab ,0x06 ,0x95 ,0xe9 ,0xc8 , +0xa7 ,0xf4 ,0x32 ,0x44 ,0x04 ,0x0c ,0x84 ,0x98 , +0x73 ,0xe3 ,0x89 ,0x8d ,0x5f ,0x7e ,0x4a ,0x42 , +0x8f ,0xc5 ,0x28 ,0xb1 ,0x82 ,0xef ,0x1c ,0x97 , +0x31 ,0x3b ,0x4d ,0xe0 ,0x0e ,0x10 ,0x10 ,0x97 , +0x93 ,0x49 ,0x78 ,0x2f ,0x0d ,0x86 ,0x8b ,0xa1 , +0x53 ,0xa9 ,0x81 ,0x20 ,0x79 ,0xe7 ,0x07 ,0x77 , +0xb6 ,0xac ,0x5e ,0xd2 ,0x05 ,0xcd ,0xe9 ,0xdb , +0x8a ,0x94 ,0x82 ,0x8a ,0x23 ,0xb9 ,0x3d ,0x1c , +0xa9 ,0x7d ,0x72 ,0x4a ,0xed ,0x33 ,0xa3 ,0xdb , +0x21 ,0xa7 ,0x86 ,0x33 ,0x45 ,0xa5 ,0xaa ,0x56 , +0x45 ,0xb5 ,0x83 ,0x29 ,0x40 ,0x47 ,0x79 ,0x04 , +0x6e ,0xb9 ,0x95 ,0xd0 ,0x81 ,0x77 ,0x2d ,0x48 , +0x1e ,0xfe ,0xc3 ,0xc2 ,0x1e ,0xe5 ,0xf2 ,0xbe , +0xfd ,0x3b ,0x94 ,0x9f ,0xc4 ,0xc4 ,0x26 ,0x9d , +0xe4 ,0x66 ,0x1e ,0x19 ,0xee ,0x6c ,0x79 ,0x97 , +0x11 ,0x31 ,0x4b ,0x0d ,0x01 ,0xcb ,0xde ,0xa8 , +0xf6 ,0x6d ,0x7c ,0x39 ,0x46 ,0x4e ,0x7e ,0x3f , +0x94 ,0x17 ,0xdf ,0xa1 ,0x7d ,0xd9 ,0x1c ,0x8e , +0xbc ,0x7d ,0x33 ,0x7d ,0xe3 ,0x12 ,0x40 ,0xca , +0xab ,0x37 ,0x11 ,0x46 ,0xd4 ,0xae ,0xef ,0x44 , +0xa2 ,0xb3 ,0x6a ,0x66 ,0x0e ,0x0c ,0x90 ,0x7f , +0xdf ,0x5c ,0x66 ,0x5f ,0xf2 ,0x94 ,0x9f ,0xa6 , +0x73 ,0x4f ,0xeb ,0x0d ,0xad ,0xbf ,0xc0 ,0x63 , +0x5c ,0xdc ,0x46 ,0x51 ,0xe8 ,0x8e ,0x90 ,0x19 , +0xa8 ,0xa4 ,0x3c ,0x91 ,0x79 ,0xfa ,0x7e ,0x58 , +0x85 ,0x13 ,0x55 ,0xc5 ,0x19 ,0x82 ,0x37 ,0x1b , +0x0a ,0x02 ,0x1f ,0x99 ,0x6b ,0x18 ,0xf1 ,0x28 , +0x08 ,0xa2 ,0x73 ,0xb8 ,0x0f ,0x2e ,0xcd ,0xbf , +0xf3 ,0x86 ,0x7f ,0xea ,0xef ,0xd0 ,0xbb ,0xa6 , +0x21 ,0xdf ,0x49 ,0x73 ,0x51 ,0xcc ,0x36 ,0xd3 , +0x3e ,0xa0 ,0xf8 ,0x44 ,0xdf ,0xd3 ,0xa6 ,0xbe , +0x8a ,0xd4 ,0x57 ,0xdd ,0x72 ,0x94 ,0x61 ,0x0f , +0x82 ,0xd1 ,0x07 ,0xb8 ,0x7c ,0x18 ,0x83 ,0xdf , +0x3a ,0xe5 ,0x50 ,0x6a ,0x82 ,0x20 ,0xac ,0xa9 , +0xa8 ,0xff ,0xd9 ,0xf3 ,0x77 ,0x33 ,0x5a ,0x9e , +0x7f ,0x6d ,0xfe ,0x5d ,0x33 ,0x41 ,0x42 ,0xe7 , +0x6c ,0x19 ,0xe0 ,0x44 ,0x8a ,0x15 ,0xf6 ,0x70 , +0x98 ,0xb7 ,0x68 ,0x4d ,0xfa ,0x97 ,0x39 ,0xb0 , +0x8e ,0xe8 ,0x84 ,0x8b ,0x75 ,0x30 ,0xb7 ,0x7d , +0x92 ,0x69 ,0x20 ,0x9c ,0x81 ,0xfb ,0x4b ,0xf4 , +0x01 ,0x50 ,0xeb ,0xce ,0x0c ,0x1c ,0x6c ,0xb5 , +0x4a ,0xd7 ,0x27 ,0x0c ,0xce ,0xbb ,0xe5 ,0x85 , +0xf0 ,0xb6 ,0xee ,0xd5 ,0x70 ,0xdd ,0x3b ,0xfc , +0xd4 ,0x99 ,0xf1 ,0x33 ,0xdd ,0x8b ,0xc4 ,0x2f , +0xae ,0xab ,0x74 ,0x96 ,0x32 ,0xc7 ,0x4c ,0x56 , +0x3c ,0x89 ,0x0f ,0x96 ,0x0b ,0x42 ,0xc0 ,0xcb , +0xee ,0x0f ,0x0b ,0x8c ,0xfb ,0x7e ,0x47 ,0x7b , +0x64 ,0x48 ,0xfd ,0xb2 ,0x00 ,0x80 ,0x89 ,0xa5 , +0x13 ,0x55 ,0x62 ,0xfc ,0x8f ,0xe2 ,0x42 ,0x03 , +0xb7 ,0x4e ,0x2a ,0x79 ,0xb4 ,0x82 ,0xea ,0x23 , +0x49 ,0xda ,0xaf ,0x52 ,0x63 ,0x1e ,0x60 ,0x03 , +0x89 ,0x06 ,0x44 ,0x46 ,0x08 ,0xc3 ,0xc4 ,0x87 , +0x70 ,0x2e ,0xda ,0x94 ,0xad ,0x6b ,0xe0 ,0xe4 , +0xd1 ,0x8a ,0x06 ,0xc2 ,0xa8 ,0xc0 ,0xa7 ,0x43 , +0x3c ,0x47 ,0x52 ,0x0e ,0xc3 ,0x77 ,0x81 ,0x11 , +0x67 ,0x0e ,0xa0 ,0x70 ,0x04 ,0x47 ,0x29 ,0x40 , +0x86 ,0x0d ,0x34 ,0x56 ,0xa7 ,0xc9 ,0x35 ,0x59 , +0x68 ,0xdc ,0x93 ,0x81 ,0x70 ,0xee ,0x86 ,0xd9 , +0x80 ,0x06 ,0x40 ,0x4f ,0x1a ,0x0d ,0x40 ,0x30 , +0x0b ,0xcb ,0x96 ,0x47 ,0xc1 ,0xb7 ,0x52 ,0xfd , +0x56 ,0xe0 ,0x72 ,0x4b ,0xfb ,0xbd ,0x92 ,0x45 , +0x61 ,0x71 ,0xc2 ,0x33 ,0x11 ,0xbf ,0x52 ,0x83 , +0x79 ,0x26 ,0xe0 ,0x49 ,0x6b ,0xb7 ,0x05 ,0x8b , +0xe8 ,0x0e ,0x87 ,0x31 ,0xd7 ,0x9d ,0x8a ,0xf5 , +0xc0 ,0x5f ,0x2e ,0x58 ,0x4a ,0xdb ,0x11 ,0xb3 , +0x6c ,0x30 ,0x2a ,0x46 ,0x19 ,0xe3 ,0x27 ,0x84 , +0x1f ,0x63 ,0x6e ,0xf6 ,0x57 ,0xc7 ,0xc9 ,0xd8 , +0x5e ,0xba ,0xb3 ,0x87 ,0xd5 ,0x83 ,0x26 ,0x34 , +0x21 ,0x9e ,0x65 ,0xde ,0x42 ,0xd3 ,0xbe ,0x7b , +0xbc ,0x91 ,0x71 ,0x44 ,0x4d ,0x99 ,0x3b ,0x31 , +0xe5 ,0x3f ,0x11 ,0x4e ,0x7f ,0x13 ,0x51 ,0x3b , +0xae ,0x79 ,0xc9 ,0xd3 ,0x81 ,0x8e ,0x25 ,0x40 , +0x10 ,0xfc ,0x07 ,0x1e ,0xf9 ,0x7b ,0x9a ,0x4b , +0x6c ,0xe3 ,0xb3 ,0xad ,0x1a ,0x0a ,0xdd ,0x9e , +0x59 ,0x0c ,0xa2 ,0xcd ,0xae ,0x48 ,0x4a ,0x38 , +0x5b ,0x47 ,0x41 ,0x94 ,0x65 ,0x6b ,0xbb ,0xeb , +0x5b ,0xe3 ,0xaf ,0x07 ,0x5b ,0xd4 ,0x4a ,0xa2 , +0xc9 ,0x5d ,0x2f ,0x64 ,0x03 ,0xd7 ,0x3a ,0x2c , +0x6e ,0xce ,0x76 ,0x95 ,0xb4 ,0xb3 ,0xc0 ,0xf1 , +0xe2 ,0x45 ,0x73 ,0x7a ,0x5c ,0xab ,0xc1 ,0xfc , +0x02 ,0x8d ,0x81 ,0x29 ,0xb3 ,0xac ,0x07 ,0xec , +0x40 ,0x7d ,0x45 ,0xd9 ,0x7a ,0x59 ,0xee ,0x34 , +0xf0 ,0xe9 ,0xd5 ,0x7b ,0x96 ,0xb1 ,0x3d ,0x95 , +0xcc ,0x86 ,0xb5 ,0xb6 ,0x04 ,0x2d ,0xb5 ,0x92 , +0x7e ,0x76 ,0xf4 ,0x06 ,0xa9 ,0xa3 ,0x12 ,0x0f , +0xb1 ,0xaf ,0x26 ,0xba ,0x7c ,0xfc ,0x7e ,0x1c , +0xbc ,0x2c ,0x49 ,0x97 ,0x53 ,0x60 ,0x13 ,0x0b , +0xa6 ,0x61 ,0x83 ,0x89 ,0x42 ,0xd4 ,0x17 ,0x0c , +0x6c ,0x26 ,0x52 ,0xc3 ,0xb3 ,0xd4 ,0x67 ,0xf5 , +0xe3 ,0x04 ,0xb7 ,0xf4 ,0xcb ,0x80 ,0xb8 ,0xcb , +0x77 ,0x56 ,0x3e ,0xaa ,0x57 ,0x54 ,0xee ,0xb4 , +0x2c ,0x67 ,0xcf ,0xf2 ,0xdc ,0xbe ,0x55 ,0xf9 , +0x43 ,0x1f ,0x6e ,0x22 ,0x97 ,0x67 ,0x7f ,0xc4 , +0xef ,0xb1 ,0x26 ,0x31 ,0x1e ,0x27 ,0xdf ,0x41 , +0x80 ,0x47 ,0x6c ,0xe2 ,0xfa ,0xa9 ,0x8c ,0x2a , +0xf6 ,0xf2 ,0xab ,0xf0 ,0x15 ,0xda ,0x6c ,0xc8 , +0xfe ,0xb5 ,0x23 ,0xde ,0xa9 ,0x05 ,0x3f ,0x06 , +0x54 ,0x4c ,0xcd ,0xe1 ,0xab ,0xfc ,0x0e ,0x62 , +0x33 ,0x31 ,0x73 ,0x2c ,0x76 ,0xcb ,0xb4 ,0x47 , +0x1e ,0x20 ,0xad ,0xd8 ,0xf2 ,0x31 ,0xdd ,0xc4 , +0x8b ,0x0c ,0x77 ,0xbe ,0xe1 ,0x8b ,0x26 ,0x00 , +0x02 ,0x58 ,0xd6 ,0x8d ,0xef ,0xad ,0x74 ,0x67 , +0xab ,0x3f ,0xef ,0xcb ,0x6f ,0xb0 ,0xcc ,0x81 , +0x44 ,0x4c ,0xaf ,0xe9 ,0x49 ,0x4f ,0xdb ,0xa0 , +0x25 ,0xa4 ,0xf0 ,0x89 ,0xf1 ,0xbe ,0xd8 ,0x10 , +0xff ,0xb1 ,0x3b ,0x4b ,0xfa ,0x98 ,0xf5 ,0x79 , +0x6d ,0x1e ,0x69 ,0x4d ,0x57 ,0xb1 ,0xc8 ,0x19 , +0x1b ,0xbd ,0x1e ,0x8c ,0x84 ,0xb7 ,0x7b ,0xe8 , +0xd2 ,0x2d ,0x09 ,0x41 ,0x41 ,0x37 ,0x3d ,0xb1 , +0x6f ,0x26 ,0x5d ,0x71 ,0x16 ,0x3d ,0xb7 ,0x83 , +0x27 ,0x2c ,0xa7 ,0xb6 ,0x50 ,0xbd ,0x91 ,0x86 , +0xab ,0x24 ,0xa1 ,0x38 ,0xfd ,0xea ,0x71 ,0x55 , +0x7e ,0x9a ,0x07 ,0x77 ,0x4b ,0xfa ,0x61 ,0x66 , +0x20 ,0x1e ,0x28 ,0x95 ,0x18 ,0x1b ,0xa4 ,0xa0 , +0xfd ,0xc0 ,0x89 ,0x72 ,0x43 ,0xd9 ,0x3b ,0x49 , +0x5a ,0x3f ,0x9d ,0xbf ,0xdb ,0xb4 ,0x46 ,0xea , +0x42 ,0x01 ,0x77 ,0x23 ,0x68 ,0x95 ,0xb6 ,0x24 , +0xb3 ,0xa8 ,0x6c ,0x28 ,0x3b ,0x11 ,0x40 ,0x7e , +0x18 ,0x65 ,0x6d ,0xd8 ,0x24 ,0x42 ,0x7d ,0x88 , +0xc0 ,0x52 ,0xd9 ,0x05 ,0xe4 ,0x95 ,0x90 ,0x87 , +0x8c ,0xf4 ,0xd0 ,0x6b ,0xb9 ,0x83 ,0x99 ,0x34 , +0x6d ,0xfe ,0x54 ,0x40 ,0x94 ,0x52 ,0x21 ,0x4f , +0x14 ,0x25 ,0xc5 ,0xd6 ,0x5e ,0x95 ,0xdc ,0x0a , +0x2b ,0x89 ,0x20 ,0x11 ,0x84 ,0x48 ,0xd6 ,0x3a , +0xcd ,0x5c ,0x24 ,0xad ,0x62 ,0xe3 ,0xb1 ,0x93 , +0x25 ,0x8d ,0xcd ,0x7e ,0xfc ,0x27 ,0xa3 ,0x37 , +0xfd ,0x84 ,0xfc ,0x1b ,0xb2 ,0xf1 ,0x27 ,0x38 , +0x5a ,0xb7 ,0xfc ,0xf2 ,0xfa ,0x95 ,0x66 ,0xd4 , +0xfb ,0xba ,0xa7 ,0xd7 ,0xa3 ,0x72 ,0x69 ,0x48 , +0x48 ,0x8c ,0xeb ,0x28 ,0x89 ,0xfe ,0x33 ,0x65 , +0x5a ,0x36 ,0x01 ,0x7e ,0x06 ,0x79 ,0x0a ,0x09 , +0x3b ,0x74 ,0x11 ,0x9a ,0x6e ,0xbf ,0xd4 ,0x9e , +0x58 ,0x90 ,0x49 ,0x4f ,0x4d ,0x08 ,0xd4 ,0xe5 , +0x4a ,0x09 ,0x21 ,0xef ,0x8b ,0xb8 ,0x74 ,0x3b , +0x91 ,0xdd ,0x36 ,0x85 ,0x60 ,0x2d ,0xfa ,0xd4 , +0x45 ,0x7b ,0x45 ,0x53 ,0xf5 ,0x47 ,0x87 ,0x7e , +0xa6 ,0x37 ,0xc8 ,0x78 ,0x7a ,0x68 ,0x9d ,0x8d , +0x65 ,0x2c ,0x0e ,0x91 ,0x5c ,0xa2 ,0x60 ,0xf0 , +0x8e ,0x3f ,0xe9 ,0x1a ,0xcd ,0xaa ,0xe7 ,0xd5 , +0x77 ,0x18 ,0xaf ,0xc9 ,0xbc ,0x18 ,0xea ,0x48 , +0x1b ,0xfb ,0x22 ,0x48 ,0x70 ,0x16 ,0x29 ,0x9e , +0x5b ,0xc1 ,0x2c ,0x66 ,0x23 ,0xbc ,0xf0 ,0x1f , +0xef ,0xaf ,0xe4 ,0xd6 ,0x04 ,0x19 ,0x82 ,0x7a , +0x0b ,0xba ,0x4b ,0x46 ,0xb1 ,0x6a ,0x85 ,0x5d , +0xb4 ,0x73 ,0xd6 ,0x21 ,0xa1 ,0x71 ,0x60 ,0x14 , +0xee ,0x0a ,0x77 ,0xc4 ,0x66 ,0x2e ,0xf9 ,0x69 , +0x30 ,0xaf ,0x41 ,0x0b ,0xc8 ,0x83 ,0x3c ,0x53 , +0x99 ,0x19 ,0x27 ,0x46 ,0xf7 ,0x41 ,0x6e ,0x56 , +0xdc ,0x94 ,0x28 ,0x67 ,0x4e ,0xb7 ,0x25 ,0x48 , +0x8a ,0xc2 ,0xe0 ,0x60 ,0x96 ,0xcc ,0x18 ,0xf4 , +0x84 ,0xdd ,0xa7 ,0x5e ,0x3e ,0x05 ,0x0b ,0x26 , +0x26 ,0xb2 ,0x5c ,0x1f ,0x57 ,0x1a ,0x04 ,0x7e , +0x6a ,0xe3 ,0x2f ,0xb4 ,0x35 ,0xb6 ,0x38 ,0x40 , +0x40 ,0xcd ,0x6f ,0x87 ,0x2e ,0xef ,0xa3 ,0xd7 , +0xa9 ,0xc2 ,0xe8 ,0x0d ,0x27 ,0xdf ,0x44 ,0x62 , +0x99 ,0xa0 ,0xfc ,0xcf ,0x81 ,0x78 ,0xcb ,0xfe , +0xe5 ,0xa0 ,0x03 ,0x4e ,0x6c ,0xd7 ,0xf4 ,0xaf , +0x7a ,0xbb ,0x61 ,0x82 ,0xfe ,0x71 ,0x89 ,0xb2 , +0x22 ,0x7c ,0x8e ,0x83 ,0x04 ,0xce ,0xf6 ,0x5d , +0x84 ,0x8f ,0x95 ,0x6a ,0x7f ,0xad ,0xfd ,0x32 , +0x9c ,0x5e ,0xe4 ,0x9c ,0x89 ,0x60 ,0x54 ,0xaa , +0x96 ,0x72 ,0xd2 ,0xd7 ,0x36 ,0x85 ,0xa9 ,0x45 , +0xd2 ,0x2a ,0xa1 ,0x81 ,0x49 ,0x6f ,0x7e ,0x04 , +0xfa ,0xe2 ,0xfe ,0x90 ,0x26 ,0x77 ,0x5a ,0x33 , +0xb8 ,0x04 ,0x9a ,0x7a ,0xe6 ,0x4c ,0x4f ,0xad , +0x72 ,0x96 ,0x08 ,0x28 ,0x58 ,0x13 ,0xf8 ,0xc4 , +0x1c ,0xf0 ,0xc3 ,0x45 ,0x95 ,0x49 ,0x20 ,0x8c , +0x9f ,0x39 ,0x70 ,0xe1 ,0x77 ,0xfe ,0xd5 ,0x4b , +0xaf ,0x86 ,0xda ,0xef ,0x22 ,0x06 ,0x83 ,0x36 , +0x29 ,0x12 ,0x11 ,0x40 ,0xbc ,0x3b ,0x86 ,0xaa , +0xaa ,0x65 ,0x60 ,0xc3 ,0x80 ,0xca ,0xed ,0xa9 , +0xf3 ,0xb0 ,0x79 ,0x96 ,0xa2 ,0x55 ,0x27 ,0x28 , +0x55 ,0x73 ,0x26 ,0xa5 ,0x50 ,0xea ,0x92 ,0x4b , +0x3c ,0x5c ,0x82 ,0x33 ,0xf0 ,0x01 ,0x3f ,0x03 , +0xc1 ,0x08 ,0x05 ,0xbf ,0x98 ,0xf4 ,0x9b ,0x6d , +0xa5 ,0xa8 ,0xb4 ,0x82 ,0x0c ,0x06 ,0xfa ,0xff , +0x2d ,0x08 ,0xf3 ,0x05 ,0x4f ,0x57 ,0x2a ,0x39 , +0xd4 ,0x83 ,0x0d ,0x75 ,0x51 ,0xd8 ,0x5b ,0x1b , +0xd3 ,0x51 ,0x5a ,0x32 ,0x2a ,0x9b ,0x32 ,0xb2 , +0xf2 ,0xa4 ,0x96 ,0x12 ,0xf2 ,0xae ,0x40 ,0x34 , +0x67 ,0xa8 ,0xf5 ,0x44 ,0xd5 ,0x35 ,0x53 ,0xfe , +0xa3 ,0x60 ,0x96 ,0x63 ,0x0f ,0x1f ,0x6e ,0xb0 , +0x5a ,0x42 ,0xa6 ,0xfc ,0x51 ,0x0b ,0x60 ,0x27 , +0xbc ,0x06 ,0x71 ,0xed ,0x65 ,0x5b ,0x23 ,0x86 , +0x4a ,0x07 ,0x3b ,0x22 ,0x07 ,0x46 ,0xe6 ,0x90 , +0x3e ,0xf3 ,0x25 ,0x50 ,0x1b ,0x4c ,0x7f ,0x03 , +0x08 ,0xa8 ,0x36 ,0x6b ,0x87 ,0xe5 ,0xe3 ,0xdb , +0x9a ,0x38 ,0x83 ,0xff ,0x9f ,0x1a ,0x9f ,0x57 , +0xa4 ,0x2a ,0xf6 ,0x37 ,0xbc ,0x1a ,0xff ,0xc9 , +0x1e ,0x35 ,0x0c ,0xc3 ,0x7c ,0xa3 ,0xb2 ,0xe5 , +0xd2 ,0xc6 ,0xb4 ,0x57 ,0x47 ,0xe4 ,0x32 ,0x16 , +0x6d ,0xa9 ,0xae ,0x64 ,0xe6 ,0x2d ,0x8d ,0xc5 , +0x8d ,0x50 ,0x8e ,0xe8 ,0x1a ,0x22 ,0x34 ,0x2a , +0xd9 ,0xeb ,0x51 ,0x90 ,0x4a ,0xb1 ,0x41 ,0x7d , +0x64 ,0xf9 ,0xb9 ,0x0d ,0xf6 ,0x23 ,0x33 ,0xb0 , +0x33 ,0xf4 ,0xf7 ,0x3f ,0x27 ,0x84 ,0xc6 ,0x0f , +0x54 ,0xa5 ,0xc0 ,0x2e ,0xec ,0x0b ,0x3a ,0x48 , +0x6e ,0x80 ,0x35 ,0x81 ,0x43 ,0x9b ,0x90 ,0xb1 , +0xd0 ,0x2b ,0xea ,0x21 ,0xdc ,0xda ,0x5b ,0x09 , +0xf4 ,0xcc ,0x10 ,0xb4 ,0xc7 ,0xfe ,0x79 ,0x51 , +0xc3 ,0xc5 ,0xac ,0x88 ,0x74 ,0x84 ,0x0b ,0x4b , +0xca ,0x79 ,0x16 ,0x29 ,0xfb ,0x69 ,0x54 ,0xdf , +0x41 ,0x7e ,0xe9 ,0xc7 ,0x8e ,0xea ,0xa5 ,0xfe , +0xfc ,0x76 ,0x0e ,0x90 ,0xc4 ,0x92 ,0x38 ,0xad , +0x7b ,0x48 ,0xe6 ,0x6e ,0xf7 ,0x21 ,0xfd ,0x4e , +0x93 ,0x0a ,0x7b ,0x41 ,0x83 ,0x68 ,0xfb ,0x57 , +0x51 ,0x76 ,0x34 ,0xa9 ,0x6c ,0x00 ,0xaa ,0x4f , +0x66 ,0x65 ,0x98 ,0x4a ,0x4f ,0xa3 ,0xa0 ,0xef , +0x69 ,0x3f ,0xe3 ,0x1c ,0x92 ,0x8c ,0xfd ,0xd8 , +0xe8 ,0xde ,0x7c ,0x7f ,0x3e ,0x84 ,0x8e ,0x69 , +0x3c ,0xf1 ,0xf2 ,0x05 ,0x46 ,0xdc ,0x2f ,0x9d , +0x5e ,0x6e ,0x4c ,0xfb ,0xb5 ,0x99 ,0x2a ,0x59 , +0x63 ,0xc1 ,0x34 ,0xbc ,0x57 ,0xc0 ,0x0d ,0xb9 , +0x61 ,0x25 ,0xf3 ,0x33 ,0x23 ,0x51 ,0xb6 ,0x0d , +0x07 ,0xa6 ,0xab ,0x94 ,0x4a ,0xb7 ,0x2a ,0xea , +0xee ,0xac ,0xa3 ,0xc3 ,0x04 ,0x8b ,0x0e ,0x56 , +0xfe ,0x44 ,0xa7 ,0x39 ,0xe2 ,0xed ,0xed ,0xb4 , +0x22 ,0x2b ,0xac ,0x12 ,0x32 ,0x28 ,0x91 ,0xd8 , +0xa5 ,0xab ,0xff ,0x5f ,0xe0 ,0x4b ,0xda ,0x78 , +0x17 ,0xda ,0xf1 ,0x01 ,0x5b ,0xcd ,0xe2 ,0x5f , +0x50 ,0x45 ,0x73 ,0x2b ,0xe4 ,0x76 ,0x77 ,0xf4 , +0x64 ,0x1d ,0x43 ,0xfb ,0x84 ,0x7a ,0xea ,0x91 , +0xae ,0xf9 ,0x9e ,0xb7 ,0xb4 ,0xb0 ,0x91 ,0x5f , +0x16 ,0x35 ,0x9a ,0x11 ,0xb8 ,0xc7 ,0xc1 ,0x8c , +0xc6 ,0x10 ,0x8d ,0x2f ,0x63 ,0x4a ,0xa7 ,0x57 , +0x3a ,0x51 ,0xd6 ,0x32 ,0x2d ,0x64 ,0x72 ,0xd4 , +0x66 ,0xdc ,0x10 ,0xa6 ,0x67 ,0xd6 ,0x04 ,0x23 , +0x9d ,0x0a ,0x11 ,0x77 ,0xdd ,0x37 ,0x94 ,0x17 , +0x3c ,0xbf ,0x8b ,0x65 ,0xb0 ,0x2e ,0x5e ,0x66 , +0x47 ,0x64 ,0xac ,0xdd ,0xf0 ,0x84 ,0xfd ,0x39 , +0xfa ,0x15 ,0x5d ,0xef ,0xae ,0xca ,0xc1 ,0x36 , +0xa7 ,0x5c ,0xbf ,0xc7 ,0x08 ,0xc2 ,0x66 ,0x00 , +0x74 ,0x74 ,0x4e ,0x27 ,0x3f ,0x55 ,0x8a ,0xb7 , +0x38 ,0x66 ,0x83 ,0x6d ,0xcf ,0x99 ,0x9e ,0x60 , +0x8f ,0xdd ,0x2e ,0x62 ,0x22 ,0x0e ,0xef ,0x0c , +0x98 ,0xa7 ,0x85 ,0x74 ,0x3b ,0x9d ,0xec ,0x9e , +0xa9 ,0x19 ,0x72 ,0xa5 ,0x7f ,0x2c ,0x39 ,0xb7 , +0x7d ,0xb7 ,0xf1 ,0x12 ,0x65 ,0x27 ,0x4b ,0x5a , +0xde ,0x17 ,0xfe ,0xad ,0x44 ,0xf3 ,0x20 ,0x4d , +0xfd ,0xe4 ,0x1f ,0xb5 ,0x81 ,0xb0 ,0x36 ,0x37 , +0x08 ,0x6f ,0xc3 ,0x0c ,0xe9 ,0x85 ,0x98 ,0x82 , +0xa9 ,0x62 ,0x0c ,0xc4 ,0x97 ,0xc0 ,0x50 ,0xc8 , +0xa7 ,0x3c ,0x50 ,0x9f ,0x43 ,0xb9 ,0xcd ,0x5e , +0x4d ,0xfa ,0x1c ,0x4b ,0x0b ,0xa9 ,0x98 ,0x85 , +0x38 ,0x92 ,0xac ,0x8d ,0xe4 ,0xad ,0x9b ,0x98 , +0xab ,0xd9 ,0x38 ,0xac ,0x62 ,0x52 ,0xa3 ,0x22 , +0x63 ,0x0f ,0xbf ,0x95 ,0x48 ,0xdf ,0x69 ,0xe7 , +0x8b ,0x33 ,0xd5 ,0xb2 ,0xbd ,0x05 ,0x49 ,0x49 , +0x9d ,0x57 ,0x73 ,0x19 ,0x33 ,0xae ,0xfa ,0x33 , +0xf1 ,0x19 ,0xa8 ,0x80 ,0xce ,0x04 ,0x9f ,0xbc , +0x1d ,0x65 ,0x82 ,0x1b ,0xe5 ,0x3a ,0x51 ,0xc8 , +0x1c ,0x21 ,0xe3 ,0x5d ,0xf3 ,0x7d ,0x9b ,0x2f , +0x2c ,0x1d ,0x4a ,0x7f ,0x9b ,0x68 ,0x35 ,0xa3 , +0xb2 ,0x50 ,0xf7 ,0x62 ,0x79 ,0xcd ,0xf4 ,0x98 , +0x4f ,0xe5 ,0x63 ,0x7c ,0x3e ,0x45 ,0x31 ,0x8c , +0x16 ,0xa0 ,0x12 ,0xc8 ,0x58 ,0xce ,0x39 ,0xa6 , +0xbc ,0x54 ,0xdb ,0xc5 ,0xe0 ,0xd5 ,0xba ,0xbc , +0xb9 ,0x04 ,0xf4 ,0x8d ,0xe8 ,0x2f ,0x15 ,0x9d , +}; + +/* 100 test cases */ +static struct crc_test { +uint32_t crc;/* random starting crc */ +uint32_t start;/* random 6 bit offset in buf */ +uint32_t length;/* random 11 bit length of test */ +uint32_t crc32c_le;/* expected crc32c_le result */ +} test[] = +{ + {0x674bf11d ,0x00000038 ,0x00000542 ,0xf6e93d6c }, + {0x35c672c6 ,0x0000003a ,0x000001aa ,0x0fe92aca }, + {0x496da28e ,0x00000039 ,0x000005af ,0x52e1ebb8 }, + {0x09a9b90e ,0x00000027 ,0x000001f8 ,0x0798af9a }, + {0xdc97e5a9 ,0x00000025 ,0x000003b6 ,0x18eb3152 }, + {0x47c58900 ,0x0000000a ,0x000000b9 ,0xd00d08c7 }, + {0x292561e8 ,0x0000000c ,0x00000403 ,0x8ba966bc }, + {0x415037f6 ,0x00000003 ,0x00000676 ,0x11d694a2 }, + {0x3466e707 ,0x00000026 ,0x00000042 ,0x6ab3208d }, + {0xafd1281b ,0x00000023 ,0x000002ee ,0xba4603c5 }, + {0xd3857b18 ,0x00000028 ,0x000004a2 ,0xe6071c6f }, + {0x1d825a8f ,0x0000002b ,0x0000050b ,0x179ec30a }, + {0x5033e3bc ,0x0000000b ,0x00000078 ,0x0903beb8 }, + {0x94f1fb5e ,0x0000000f ,0x000003a2 ,0x6a7cb4fa }, + {0xc9a0fe14 ,0x00000009 ,0x00000473 ,0xdb535801 }, + {0x88a034b1 ,0x0000001c ,0x000005ad ,0x92bed597 }, + {0xf0f72239 ,0x00000020 ,0x0000026d ,0x192a3f1b }, + {0xcc20a5e3 ,0x0000003b ,0x0000067a ,0xccbaec1a }, + {0xce589c95 ,0x0000002b ,0x00000641 ,0x7eabae4d }, + {0x78edc885 ,0x00000035 ,0x000005be ,0x28c72982 }, + {0x9d40a377 ,0x0000003b ,0x00000038 ,0xc3cd4d18 }, + {0x703d0e01 ,0x0000003c ,0x000006f1 ,0xbca8f0e7 }, + {0x776bf505 ,0x0000000f ,0x000005b2 ,0x713f60b3 }, + {0x4a3e7854 ,0x00000027 ,0x000004b8 ,0xebd08fd5 }, + {0x209172dd ,0x0000003b ,0x00000356 ,0x64406c59 }, + {0x3ba4cc5b ,0x0000002f ,0x00000203 ,0x7421890e }, + {0xfc62f297 ,0x00000000 ,0x00000079 ,0xe9347603 }, + {0x64280b8b ,0x00000016 ,0x000007ab ,0x1bef9060 }, + {0x97dd724b ,0x00000033 ,0x000007ad ,0x34720072 }, + {0x61394b52 ,0x00000035 ,0x00000571 ,0x48310f59 }, + {0x29b4faff ,0x00000024 ,0x0000006e ,0x783a4213 }, + {0x29bfb1dc ,0x0000000b ,0x00000244 ,0x9e8efd41 }, + {0x86ae934b ,0x00000035 ,0x00000104 ,0xfc3d34a5 }, + {0xc4c1024e ,0x0000002e ,0x000006b1 ,0x17a52ae2 }, + {0x3287a80a ,0x00000026 ,0x00000496 ,0x886d935a }, + {0xa4db423e ,0x00000023 ,0x0000045d ,0xeaaeaeb2 }, + {0x7a1078df ,0x00000015 ,0x0000014a ,0x8e900a4b }, + {0x6048bd5b ,0x00000006 ,0x0000006a ,0xd74662b1 }, + {0xd8f9ea20 ,0x0000003d ,0x00000277 ,0xd26752ba }, + {0xea5ec3b4 ,0x0000002a ,0x000004fe ,0x8b1fcd62 }, + {0x2dfb005d ,0x00000016 ,0x00000345 ,0xf54342fe }, + {0x5a214ade ,0x00000020 ,0x000005b6 ,0x5b95b988 }, + {0xf0ab9cca ,0x00000032 ,0x00000515 ,0x2e1176be }, + {0x91b444f9 ,0x0000002e ,0x000007f8 ,0x66120546 }, + {0x1b5d2ddb ,0x0000002e ,0x0000012c ,0xf256a5cc }, + {0xd824d1bb ,0x0000003a ,0x000007b5 ,0x4af1dd69 }, + {0x0470180c ,0x00000034 ,0x000001f0 ,0x56f0a04a }, + {0xffaa3a3f ,0x00000036 ,0x00000299 ,0x74f6b6b2 }, + {0x6406cfeb ,0x00000023 ,0x00000600 ,0x085951fd }, + {0xb24aaa38 ,0x0000003e ,0x000004a1 ,0xc65387eb }, + {0x58b2ab7c ,0x00000039 ,0x000002b4 ,0x1ca9257b }, + {0x3db85970 ,0x00000006 ,0x000002b6 ,0xfd196d76 }, + {0x857830c5 ,0x00000003 ,0x00000590 ,0x5ef88339 }, + {0xe1fcd978 ,0x0000003e ,0x000007d8 ,0x2c3714d9 }, + {0xb982a768 ,0x00000016 ,0x000006e0 ,0x58576548 }, + {0x1d581ce8 ,0x0000001e ,0x0000058b ,0xfd7c57de }, + {0x2456719b ,0x00000025 ,0x00000503 ,0xd5fedd59 }, + {0xfae6d8f2 ,0x00000000 ,0x0000055d ,0x1cc3b17b }, + {0xcba828e3 ,0x00000039 ,0x000002ce ,0x270eed73 }, + {0x13d25952 ,0x0000000a ,0x0000072d ,0x91ecbb11 }, + {0x0342be3f ,0x00000015 ,0x00000599 ,0x05ed8d0c }, + {0xeaa344e0 ,0x00000014 ,0x000004d8 ,0x0b09ad5b }, + {0xbbb52021 ,0x0000003b ,0x00000272 ,0xf8d511fb }, + {0xb66384dc ,0x0000001d ,0x000007fc ,0x5ad832cc }, + {0x616c01b6 ,0x00000022 ,0x000002c8 ,0x1214d196 }, + {0xce2bdaad ,0x00000016 ,0x0000062a ,0x5747218a }, + {0x00fe84d7 ,0x00000005 ,0x00000205 ,0xde8f14de }, + {0xbebdcb4c ,0x00000006 ,0x0000055d ,0x3563b7b9 }, + {0xd8b1a02a ,0x00000010 ,0x00000387 ,0x071475d0 }, + {0x3b96cad2 ,0x00000036 ,0x00000347 ,0x54c79d60 }, + {0xc94c1ed7 ,0x00000005 ,0x0000038b ,0x4c53eee6 }, + {0x1aad454e ,0x00000025 ,0x000002b2 ,0x10137a3c }, + {0xa4fec9a6 ,0x00000000 ,0x000006d6 ,0xaa9d6c73 }, + {0x1bbe71e2 ,0x0000001f ,0x000002fd ,0xb63d23e7 }, + {0x4201c7e4 ,0x00000002 ,0x000002b7 ,0x7f53e9cf }, + {0x23fddc96 ,0x00000003 ,0x00000627 ,0x13c1cd83 }, + {0xd82ba25c ,0x00000016 ,0x0000063e ,0x49ff5867 }, + {0x786f2032 ,0x0000002d ,0x0000060f ,0x8467f211 }, + {0xfebe4e1f ,0x0000002a ,0x000004f2 ,0x3f9683b2 }, + {0x1a6e0a39 ,0x00000008 ,0x00000672 ,0x76a3f874 }, + {0x56000ab8 ,0x0000000e ,0x000000e5 ,0x863b702f }, + {0x4717fe0c ,0x00000000 ,0x000006ec ,0xdc6c58ff }, + {0xd5d5d68e ,0x0000003c ,0x000003a3 ,0x0622cc95 }, + {0xc25dd6c6 ,0x00000024 ,0x000006c0 ,0xe85605cd }, + {0xe9b11300 ,0x00000023 ,0x00000683 ,0x31da5f06 }, + {0x95cd285e ,0x00000001 ,0x00000047 ,0xa1f2e784 }, + {0xd9245a25 ,0x0000001e ,0x000003a6 ,0xb07cc616 }, + {0x103279db ,0x00000006 ,0x0000039b ,0xbf943b6c }, + {0x1cba3172 ,0x00000027 ,0x000001c8 ,0x2c01af1c }, + {0x8f613739 ,0x0000000c ,0x000001df ,0x0fe5f56d }, + {0x1c6aa90d ,0x0000001b ,0x0000053c ,0xf8943b2d }, + {0xaabe5b93 ,0x0000003d ,0x00000715 ,0xe4d89272 }, + {0xf15dd038 ,0x00000006 ,0x000006db ,0x7c2f6bbb }, + {0x584dd49c ,0x00000020 ,0x000007bc ,0xabbf388b }, + {0x5d8c9506 ,0x00000020 ,0x00000470 ,0x1dca1f4e }, + {0xb80d17b0 ,0x00000032 ,0x00000346 ,0x5c170e23 }, + {0xdaf0592e ,0x00000023 ,0x000007b0 ,0xc0e9d672 }, + {0x4793cc85 ,0x0000000d ,0x00000706 ,0xc18bdc86 }, + {0x82ebf64e ,0x00000009 ,0x000007c3 ,0xa874fcdd }, + {0xb18a0319 ,0x00000026 ,0x000007db ,0x9dc0bb48 }, +}; + +static int +crc32c_test (void ) +{ +int i; +int errors =0 ; +int bytes =0 ; +struct timeval start, stop; +uint64_t usec; + +/* keep static to prevent cache warming code from +* getting eliminated by the compiler */ +static uint32_t crc; + +/* pre-warm the cache */ +for (i =0 ; i <100 ; i++) { + bytes +=2 *test[i].length; + + crc ^=crc32c_le (test[i].crc, test_buf + + test[i].start, test[i].length); + } + +gettimeofday (&start,NULL ); +for (i =0 ; i <100 ; i++) { +if (test[i].crc32c_le !=crc32c_le (test[i].crc, test_buf + + test[i].start, test[i].length)) + errors++; + } +gettimeofday (&stop,NULL ); + + usec = stop.tv_usec - start.tv_usec + +1000000 * (stop.tv_sec - start.tv_sec); + +if (errors) +printf ("crc32c: %d self tests failed\n" , errors); +else { +printf ("crc32c: tests passed, %d bytes in %" PRIu64" usec\n" , + bytes, usec); + } + +return errors; +} + +#endif /* _LIBFROG_CRC32CSELFTEST_H_ */
io/Makefile +4 -4
@@ -9,10 +9,10 @@ LTCOMMAND = xfs_io LSRCFILES = xfs_bmap.sh xfs_freeze.sh xfs_mkfile.sh HFILES = init.h io.h CFILES = init.c \ - attr.c bmap.c cowextsize.c encrypt.c file.c freeze.c fsync.c \ - getrusage.c imap.c inject.c label.c link.c mmap.c open.c parent.c \ - pread.c prealloc.c pwrite.c reflink.c resblks.c scrub.c seek.c \ - shutdown.c stat.c swapext.c sync.c truncate.c utimes.c + attr.c bmap.c crc32cselftest.c cowextsize.c encrypt.c file.c freeze.c \ + fsync.c getrusage.c imap.c inject.c label.c link.c mmap.c open.c \ + parent.c pread.c prealloc.c pwrite.c reflink.c resblks.c scrub.c \ + seek.c shutdown.c stat.c swapext.c sync.c truncate.c utimes.c LLDLIBS = $(LIBXCMD) $(LIBHANDLE) $(LIBFROG) $(LIBPTHREAD) LTDEPENDENCIES = $(LIBXCMD) $(LIBHANDLE) $(LIBFROG)
io/crc32cselftest.c new file +37 -0
@@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* Copyright (c) 2018 Oracle, Inc. +* All Rights Reserved. +*/ + +#include "platform_defs.h" +#include "command.h" +#include "init.h" +#include "io.h" +#include "crc32c.h" +#include "crc32cselftest.h" + +static int +crc32cselftest_f ( +int argc, +char **argv) +{ +return crc32c_test () !=0 ; +} + +static const cmdinfo_t crc32cselftest_cmd = { + .name ="crc32cselftest" , + .cfunc = crc32cselftest_f, + .argmin =0 , + .argmax =0 , + .canpush =0 , + .flags =CMD_FLAG_ONESHOT |CMD_FLAG_FOREIGN_OK | +CMD_NOFILE_OK |CMD_NOMAP_OK , + .oneline =N_ ("self test of crc32c implementation" ), +}; + +void +crc32cselftest_init (void ) +{ +add_command (&crc32cselftest_cmd); +}
io/init.c +1 -0
@@ -85,6 +85,7 @@ init_commands(void)sync_range_init ();truncate_init ();utimes_init (); +crc32cselftest_init (); }/*
io/io.h +1 -0
@@ -182,3 +182,4 @@ extern void log_writes_init(void);extern void scrub_init (void );extern void repair_init (void ); +extern void crc32cselftest_init (void );
libfrog/crc32.c +1 -668
675 lines not on this page · raw message
man/man8/xfs_io.8 +4 -0
@@ -1222,6 +1222,10 @@ If the label is longer than the filesystem will accept, .B xfs_io will print an error message. XFS filesystem labels can be at most 12 characters long. +.TP +.B crc32cselftest +Test the internal crc32c implementation to make sure that it computes results +correctly. .SH SEE ALSO .BR mkfs.xfs (8), .BR xfsctl (3),