]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blob - libfrog/crc32cselftest.h
libfrog: move workqueue.h to libfrog/
[thirdparty/xfsprogs-dev.git] / libfrog / crc32cselftest.h
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3 * Aug 8, 2011 Bob Pearson with help from Joakim Tjernlund and George Spelvin
4 * cleaned up code to current version of sparse and added the slicing-by-8
5 * algorithm to the closely similar existing slicing-by-4 algorithm.
6 * Oct 15, 2000 Matt Domsch <Matt_Domsch@dell.com>
7 * Nicer crc32 functions/docs submitted by linux@horizon.com. Thanks!
8 * Code was from the public domain, copyright abandoned. Code was
9 * subsequently included in the kernel, thus was re-licensed under the
10 * GNU GPL v2.
11 * Oct 12, 2000 Matt Domsch <Matt_Domsch@dell.com>
12 * Same crc32 function was used in 5 other places in the kernel.
13 * I made one version, and deleted the others.
14 * There are various incantations of crc32(). Some use a seed of 0 or ~0.
15 * Some xor at the end with ~0. The generic crc32() function takes
16 * seed as an argument, and doesn't xor at the end. Then individual
17 * users can do whatever they need.
18 * drivers/net/smc9194.c uses seed ~0, doesn't xor with ~0.
19 * fs/jffs2 uses seed 0, doesn't xor with ~0.
20 * fs/partitions/efi.c uses seed ~0, xor's with ~0.
21 */
22
23 /* see: Documentation/crc32.txt for a description of algorithms */
24
25 /*
26 * lifted from the 3.8-rc2 kernel source for xfsprogs. Killed CONFIG_X86
27 * specific bits for just the generic algorithm. Also removed the big endian
28 * version of the algorithm as XFS only uses the little endian CRC version to
29 * match the hardware acceleration available on Intel CPUs.
30 */
31
32 /* This is just the crc32 self test bits from crc32.c. */
33
34 #ifndef __LIBFROG_CRC32CSELFTEST_H__
35 #define __LIBFROG_CRC32CSELFTEST_H__
36
37 /* 4096 random bytes */
38 static uint8_t __attribute__((__aligned__(8))) test_buf[] =
39 {
40 0x5b, 0x85, 0x21, 0xcb, 0x09, 0x68, 0x7d, 0x30,
41 0xc7, 0x69, 0xd7, 0x30, 0x92, 0xde, 0x59, 0xe4,
42 0xc9, 0x6e, 0x8b, 0xdb, 0x98, 0x6b, 0xaa, 0x60,
43 0xa8, 0xb5, 0xbc, 0x6c, 0xa9, 0xb1, 0x5b, 0x2c,
44 0xea, 0xb4, 0x92, 0x6a, 0x3f, 0x79, 0x91, 0xe4,
45 0xe9, 0x70, 0x51, 0x8c, 0x7f, 0x95, 0x6f, 0x1a,
46 0x56, 0xa1, 0x5c, 0x27, 0x03, 0x67, 0x9f, 0x3a,
47 0xe2, 0x31, 0x11, 0x29, 0x6b, 0x98, 0xfc, 0xc4,
48 0x53, 0x24, 0xc5, 0x8b, 0xce, 0x47, 0xb2, 0xb9,
49 0x32, 0xcb, 0xc1, 0xd0, 0x03, 0x57, 0x4e, 0xd4,
50 0xe9, 0x3c, 0xa1, 0x63, 0xcf, 0x12, 0x0e, 0xca,
51 0xe1, 0x13, 0xd1, 0x93, 0xa6, 0x88, 0x5c, 0x61,
52 0x5b, 0xbb, 0xf0, 0x19, 0x46, 0xb4, 0xcf, 0x9e,
53 0xb6, 0x6b, 0x4c, 0x3a, 0xcf, 0x60, 0xf9, 0x7a,
54 0x8d, 0x07, 0x63, 0xdb, 0x40, 0xe9, 0x0b, 0x6f,
55 0xad, 0x97, 0xf1, 0xed, 0xd0, 0x1e, 0x26, 0xfd,
56 0xbf, 0xb7, 0xc8, 0x04, 0x94, 0xf8, 0x8b, 0x8c,
57 0xf1, 0xab, 0x7a, 0xd4, 0xdd, 0xf3, 0xe8, 0x88,
58 0xc3, 0xed, 0x17, 0x8a, 0x9b, 0x40, 0x0d, 0x53,
59 0x62, 0x12, 0x03, 0x5f, 0x1b, 0x35, 0x32, 0x1f,
60 0xb4, 0x7b, 0x93, 0x78, 0x0d, 0xdb, 0xce, 0xa4,
61 0xc0, 0x47, 0xd5, 0xbf, 0x68, 0xe8, 0x5d, 0x74,
62 0x8f, 0x8e, 0x75, 0x1c, 0xb2, 0x4f, 0x9a, 0x60,
63 0xd1, 0xbe, 0x10, 0xf4, 0x5c, 0xa1, 0x53, 0x09,
64 0xa5, 0xe0, 0x09, 0x54, 0x85, 0x5c, 0xdc, 0x07,
65 0xe7, 0x21, 0x69, 0x7b, 0x8a, 0xfd, 0x90, 0xf1,
66 0x22, 0xd0, 0xb4, 0x36, 0x28, 0xe6, 0xb8, 0x0f,
67 0x39, 0xde, 0xc8, 0xf3, 0x86, 0x60, 0x34, 0xd2,
68 0x5e, 0xdf, 0xfd, 0xcf, 0x0f, 0xa9, 0x65, 0xf0,
69 0xd5, 0x4d, 0x96, 0x40, 0xe3, 0xdf, 0x3f, 0x95,
70 0x5a, 0x39, 0x19, 0x93, 0xf4, 0x75, 0xce, 0x22,
71 0x00, 0x1c, 0x93, 0xe2, 0x03, 0x66, 0xf4, 0x93,
72 0x73, 0x86, 0x81, 0x8e, 0x29, 0x44, 0x48, 0x86,
73 0x61, 0x7c, 0x48, 0xa3, 0x43, 0xd2, 0x9c, 0x8d,
74 0xd4, 0x95, 0xdd, 0xe1, 0x22, 0x89, 0x3a, 0x40,
75 0x4c, 0x1b, 0x8a, 0x04, 0xa8, 0x09, 0x69, 0x8b,
76 0xea, 0xc6, 0x55, 0x8e, 0x57, 0xe6, 0x64, 0x35,
77 0xf0, 0xc7, 0x16, 0x9f, 0x5d, 0x5e, 0x86, 0x40,
78 0x46, 0xbb, 0xe5, 0x45, 0x88, 0xfe, 0xc9, 0x63,
79 0x15, 0xfb, 0xf5, 0xbd, 0x71, 0x61, 0xeb, 0x7b,
80 0x78, 0x70, 0x07, 0x31, 0x03, 0x9f, 0xb2, 0xc8,
81 0xa7, 0xab, 0x47, 0xfd, 0xdf, 0xa0, 0x78, 0x72,
82 0xa4, 0x2a, 0xe4, 0xb6, 0xba, 0xc0, 0x1e, 0x86,
83 0x71, 0xe6, 0x3d, 0x18, 0x37, 0x70, 0xe6, 0xff,
84 0xe0, 0xbc, 0x0b, 0x22, 0xa0, 0x1f, 0xd3, 0xed,
85 0xa2, 0x55, 0x39, 0xab, 0xa8, 0x13, 0x73, 0x7c,
86 0x3f, 0xb2, 0xd6, 0x19, 0xac, 0xff, 0x99, 0xed,
87 0xe8, 0xe6, 0xa6, 0x22, 0xe3, 0x9c, 0xf1, 0x30,
88 0xdc, 0x01, 0x0a, 0x56, 0xfa, 0xe4, 0xc9, 0x99,
89 0xdd, 0xa8, 0xd8, 0xda, 0x35, 0x51, 0x73, 0xb4,
90 0x40, 0x86, 0x85, 0xdb, 0x5c, 0xd5, 0x85, 0x80,
91 0x14, 0x9c, 0xfd, 0x98, 0xa9, 0x82, 0xc5, 0x37,
92 0xff, 0x32, 0x5d, 0xd0, 0x0b, 0xfa, 0xdc, 0x04,
93 0x5e, 0x09, 0xd2, 0xca, 0x17, 0x4b, 0x1a, 0x8e,
94 0x15, 0xe1, 0xcc, 0x4e, 0x52, 0x88, 0x35, 0xbd,
95 0x48, 0xfe, 0x15, 0xa0, 0x91, 0xfd, 0x7e, 0x6c,
96 0x0e, 0x5d, 0x79, 0x1b, 0x81, 0x79, 0xd2, 0x09,
97 0x34, 0x70, 0x3d, 0x81, 0xec, 0xf6, 0x24, 0xbb,
98 0xfb, 0xf1, 0x7b, 0xdf, 0x54, 0xea, 0x80, 0x9b,
99 0xc7, 0x99, 0x9e, 0xbd, 0x16, 0x78, 0x12, 0x53,
100 0x5e, 0x01, 0xa7, 0x4e, 0xbd, 0x67, 0xe1, 0x9b,
101 0x4c, 0x0e, 0x61, 0x45, 0x97, 0xd2, 0xf0, 0x0f,
102 0xfe, 0x15, 0x08, 0xb7, 0x11, 0x4c, 0xe7, 0xff,
103 0x81, 0x53, 0xff, 0x91, 0x25, 0x38, 0x7e, 0x40,
104 0x94, 0xe5, 0xe0, 0xad, 0xe6, 0xd9, 0x79, 0xb6,
105 0x92, 0xc9, 0xfc, 0xde, 0xc3, 0x1a, 0x23, 0xbb,
106 0xdd, 0xc8, 0x51, 0x0c, 0x3a, 0x72, 0xfa, 0x73,
107 0x6f, 0xb7, 0xee, 0x61, 0x39, 0x03, 0x01, 0x3f,
108 0x7f, 0x94, 0x2e, 0x2e, 0xba, 0x3a, 0xbb, 0xb4,
109 0xfa, 0x6a, 0x17, 0xfe, 0xea, 0xef, 0x5e, 0x66,
110 0x97, 0x3f, 0x32, 0x3d, 0xd7, 0x3e, 0xb1, 0xf1,
111 0x6c, 0x14, 0x4c, 0xfd, 0x37, 0xd3, 0x38, 0x80,
112 0xfb, 0xde, 0xa6, 0x24, 0x1e, 0xc8, 0xca, 0x7f,
113 0x3a, 0x93, 0xd8, 0x8b, 0x18, 0x13, 0xb2, 0xe5,
114 0xe4, 0x93, 0x05, 0x53, 0x4f, 0x84, 0x66, 0xa7,
115 0x58, 0x5c, 0x7b, 0x86, 0x52, 0x6d, 0x0d, 0xce,
116 0xa4, 0x30, 0x7d, 0xb6, 0x18, 0x9f, 0xeb, 0xff,
117 0x22, 0xbb, 0x72, 0x29, 0xb9, 0x44, 0x0b, 0x48,
118 0x1e, 0x84, 0x71, 0x81, 0xe3, 0x6d, 0x73, 0x26,
119 0x92, 0xb4, 0x4d, 0x2a, 0x29, 0xb8, 0x1f, 0x72,
120 0xed, 0xd0, 0xe1, 0x64, 0x77, 0xea, 0x8e, 0x88,
121 0x0f, 0xef, 0x3f, 0xb1, 0x3b, 0xad, 0xf9, 0xc9,
122 0x8b, 0xd0, 0xac, 0xc6, 0xcc, 0xa9, 0x40, 0xcc,
123 0x76, 0xf6, 0x3b, 0x53, 0xb5, 0x88, 0xcb, 0xc8,
124 0x37, 0xf1, 0xa2, 0xba, 0x23, 0x15, 0x99, 0x09,
125 0xcc, 0xe7, 0x7a, 0x3b, 0x37, 0xf7, 0x58, 0xc8,
126 0x46, 0x8c, 0x2b, 0x2f, 0x4e, 0x0e, 0xa6, 0x5c,
127 0xea, 0x85, 0x55, 0xba, 0x02, 0x0e, 0x0e, 0x48,
128 0xbc, 0xe1, 0xb1, 0x01, 0x35, 0x79, 0x13, 0x3d,
129 0x1b, 0xc0, 0x53, 0x68, 0x11, 0xe7, 0x95, 0x0f,
130 0x9d, 0x3f, 0x4c, 0x47, 0x7b, 0x4d, 0x1c, 0xae,
131 0x50, 0x9b, 0xcb, 0xdd, 0x05, 0x8d, 0x9a, 0x97,
132 0xfd, 0x8c, 0xef, 0x0c, 0x1d, 0x67, 0x73, 0xa8,
133 0x28, 0x36, 0xd5, 0xb6, 0x92, 0x33, 0x40, 0x75,
134 0x0b, 0x51, 0xc3, 0x64, 0xba, 0x1d, 0xc2, 0xcc,
135 0xee, 0x7d, 0x54, 0x0f, 0x27, 0x69, 0xa7, 0x27,
136 0x63, 0x30, 0x29, 0xd9, 0xc8, 0x84, 0xd8, 0xdf,
137 0x9f, 0x68, 0x8d, 0x04, 0xca, 0xa6, 0xc5, 0xc7,
138 0x7a, 0x5c, 0xc8, 0xd1, 0xcb, 0x4a, 0xec, 0xd0,
139 0xd8, 0x20, 0x69, 0xc5, 0x17, 0xcd, 0x78, 0xc8,
140 0x75, 0x23, 0x30, 0x69, 0xc9, 0xd4, 0xea, 0x5c,
141 0x4f, 0x6b, 0x86, 0x3f, 0x8b, 0xfe, 0xee, 0x44,
142 0xc9, 0x7c, 0xb7, 0xdd, 0x3e, 0xe5, 0xec, 0x54,
143 0x03, 0x3e, 0xaa, 0x82, 0xc6, 0xdf, 0xb2, 0x38,
144 0x0e, 0x5d, 0xb3, 0x88, 0xd9, 0xd3, 0x69, 0x5f,
145 0x8f, 0x70, 0x8a, 0x7e, 0x11, 0xd9, 0x1e, 0x7b,
146 0x38, 0xf1, 0x42, 0x1a, 0xc0, 0x35, 0xf5, 0xc7,
147 0x36, 0x85, 0xf5, 0xf7, 0xb8, 0x7e, 0xc7, 0xef,
148 0x18, 0xf1, 0x63, 0xd6, 0x7a, 0xc6, 0xc9, 0x0e,
149 0x4d, 0x69, 0x4f, 0x84, 0xef, 0x26, 0x41, 0x0c,
150 0xec, 0xc7, 0xe0, 0x7e, 0x3c, 0x67, 0x01, 0x4c,
151 0x62, 0x1a, 0x20, 0x6f, 0xee, 0x47, 0x4d, 0xc0,
152 0x99, 0x13, 0x8d, 0x91, 0x4a, 0x26, 0xd4, 0x37,
153 0x28, 0x90, 0x58, 0x75, 0x66, 0x2b, 0x0a, 0xdf,
154 0xda, 0xee, 0x92, 0x25, 0x90, 0x62, 0x39, 0x9e,
155 0x44, 0x98, 0xad, 0xc1, 0x88, 0xed, 0xe4, 0xb4,
156 0xaf, 0xf5, 0x8c, 0x9b, 0x48, 0x4d, 0x56, 0x60,
157 0x97, 0x0f, 0x61, 0x59, 0x9e, 0xa6, 0x27, 0xfe,
158 0xc1, 0x91, 0x15, 0x38, 0xb8, 0x0f, 0xae, 0x61,
159 0x7d, 0x26, 0x13, 0x5a, 0x73, 0xff, 0x1c, 0xa3,
160 0x61, 0x04, 0x58, 0x48, 0x55, 0x44, 0x11, 0xfe,
161 0x15, 0xca, 0xc3, 0xbd, 0xca, 0xc5, 0xb4, 0x40,
162 0x5d, 0x1b, 0x7f, 0x39, 0xb5, 0x9c, 0x35, 0xec,
163 0x61, 0x15, 0x32, 0x32, 0xb8, 0x4e, 0x40, 0x9f,
164 0x17, 0x1f, 0x0a, 0x4d, 0xa9, 0x91, 0xef, 0xb7,
165 0xb0, 0xeb, 0xc2, 0x83, 0x9a, 0x6c, 0xd2, 0x79,
166 0x43, 0x78, 0x5e, 0x2f, 0xe5, 0xdd, 0x1a, 0x3c,
167 0x45, 0xab, 0x29, 0x40, 0x3a, 0x37, 0x5b, 0x6f,
168 0xd7, 0xfc, 0x48, 0x64, 0x3c, 0x49, 0xfb, 0x21,
169 0xbe, 0xc3, 0xff, 0x07, 0xfb, 0x17, 0xe9, 0xc9,
170 0x0c, 0x4c, 0x5c, 0x15, 0x9e, 0x8e, 0x22, 0x30,
171 0x0a, 0xde, 0x48, 0x7f, 0xdb, 0x0d, 0xd1, 0x2b,
172 0x87, 0x38, 0x9e, 0xcc, 0x5a, 0x01, 0x16, 0xee,
173 0x75, 0x49, 0x0d, 0x30, 0x01, 0x34, 0x6a, 0xb6,
174 0x9a, 0x5a, 0x2a, 0xec, 0xbb, 0x48, 0xac, 0xd3,
175 0x77, 0x83, 0xd8, 0x08, 0x86, 0x4f, 0x48, 0x09,
176 0x29, 0x41, 0x79, 0xa1, 0x03, 0x12, 0xc4, 0xcd,
177 0x90, 0x55, 0x47, 0x66, 0x74, 0x9a, 0xcc, 0x4f,
178 0x35, 0x8c, 0xd6, 0x98, 0xef, 0xeb, 0x45, 0xb9,
179 0x9a, 0x26, 0x2f, 0x39, 0xa5, 0x70, 0x6d, 0xfc,
180 0xb4, 0x51, 0xee, 0xf4, 0x9c, 0xe7, 0x38, 0x59,
181 0xad, 0xf4, 0xbc, 0x46, 0xff, 0x46, 0x8e, 0x60,
182 0x9c, 0xa3, 0x60, 0x1d, 0xf8, 0x26, 0x72, 0xf5,
183 0x72, 0x9d, 0x68, 0x80, 0x04, 0xf6, 0x0b, 0xa1,
184 0x0a, 0xd5, 0xa7, 0x82, 0x3a, 0x3e, 0x47, 0xa8,
185 0x5a, 0xde, 0x59, 0x4f, 0x7b, 0x07, 0xb3, 0xe9,
186 0x24, 0x19, 0x3d, 0x34, 0x05, 0xec, 0xf1, 0xab,
187 0x6e, 0x64, 0x8f, 0xd3, 0xe6, 0x41, 0x86, 0x80,
188 0x70, 0xe3, 0x8d, 0x60, 0x9c, 0x34, 0x25, 0x01,
189 0x07, 0x4d, 0x19, 0x41, 0x4e, 0x3d, 0x5c, 0x7e,
190 0xa8, 0xf5, 0xcc, 0xd5, 0x7b, 0xe2, 0x7d, 0x3d,
191 0x49, 0x86, 0x7d, 0x07, 0xb7, 0x10, 0xe3, 0x35,
192 0xb8, 0x84, 0x6d, 0x76, 0xab, 0x17, 0xc6, 0x38,
193 0xb4, 0xd3, 0x28, 0x57, 0xad, 0xd3, 0x88, 0x5a,
194 0xda, 0xea, 0xc8, 0x94, 0xcc, 0x37, 0x19, 0xac,
195 0x9c, 0x9f, 0x4b, 0x00, 0x15, 0xc0, 0xc8, 0xca,
196 0x1f, 0x15, 0xaa, 0xe0, 0xdb, 0xf9, 0x2f, 0x57,
197 0x1b, 0x24, 0xc7, 0x6f, 0x76, 0x29, 0xfb, 0xed,
198 0x25, 0x0d, 0xc0, 0xfe, 0xbd, 0x5a, 0xbf, 0x20,
199 0x08, 0x51, 0x05, 0xec, 0x71, 0xa3, 0xbf, 0xef,
200 0x5e, 0x99, 0x75, 0xdb, 0x3c, 0x5f, 0x9a, 0x8c,
201 0xbb, 0x19, 0x5c, 0x0e, 0x93, 0x19, 0xf8, 0x6a,
202 0xbc, 0xf2, 0x12, 0x54, 0x2f, 0xcb, 0x28, 0x64,
203 0x88, 0xb3, 0x92, 0x0d, 0x96, 0xd1, 0xa6, 0xe4,
204 0x1f, 0xf1, 0x4d, 0xa4, 0xab, 0x1c, 0xee, 0x54,
205 0xf2, 0xad, 0x29, 0x6d, 0x32, 0x37, 0xb2, 0x16,
206 0x77, 0x5c, 0xdc, 0x2e, 0x54, 0xec, 0x75, 0x26,
207 0xc6, 0x36, 0xd9, 0x17, 0x2c, 0xf1, 0x7a, 0xdc,
208 0x4b, 0xf1, 0xe2, 0xd9, 0x95, 0xba, 0xac, 0x87,
209 0xc1, 0xf3, 0x8e, 0x58, 0x08, 0xd8, 0x87, 0x60,
210 0xc9, 0xee, 0x6a, 0xde, 0xa4, 0xd2, 0xfc, 0x0d,
211 0xe5, 0x36, 0xc4, 0x5c, 0x52, 0xb3, 0x07, 0x54,
212 0x65, 0x24, 0xc1, 0xb1, 0xd1, 0xb1, 0x53, 0x13,
213 0x31, 0x79, 0x7f, 0x05, 0x76, 0xeb, 0x37, 0x59,
214 0x15, 0x2b, 0xd1, 0x3f, 0xac, 0x08, 0x97, 0xeb,
215 0x91, 0x98, 0xdf, 0x6c, 0x09, 0x0d, 0x04, 0x9f,
216 0xdc, 0x3b, 0x0e, 0x60, 0x68, 0x47, 0x23, 0x15,
217 0x16, 0xc6, 0x0b, 0x35, 0xf8, 0x77, 0xa2, 0x78,
218 0x50, 0xd4, 0x64, 0x22, 0x33, 0xff, 0xfb, 0x93,
219 0x71, 0x46, 0x50, 0x39, 0x1b, 0x9c, 0xea, 0x4e,
220 0x8d, 0x0c, 0x37, 0xe5, 0x5c, 0x51, 0x3a, 0x31,
221 0xb2, 0x85, 0x84, 0x3f, 0x41, 0xee, 0xa2, 0xc1,
222 0xc6, 0x13, 0x3b, 0x54, 0x28, 0xd2, 0x18, 0x37,
223 0xcc, 0x46, 0x9f, 0x6a, 0x91, 0x3d, 0x5a, 0x15,
224 0x3c, 0x89, 0xa3, 0x61, 0x06, 0x7d, 0x2e, 0x78,
225 0xbe, 0x7d, 0x40, 0xba, 0x2f, 0x95, 0xb1, 0x2f,
226 0x87, 0x3b, 0x8a, 0xbe, 0x6a, 0xf4, 0xc2, 0x31,
227 0x74, 0xee, 0x91, 0xe0, 0x23, 0xaa, 0x5d, 0x7f,
228 0xdd, 0xf0, 0x44, 0x8c, 0x0b, 0x59, 0x2b, 0xfc,
229 0x48, 0x3a, 0xdf, 0x07, 0x05, 0x38, 0x6c, 0xc9,
230 0xeb, 0x18, 0x24, 0x68, 0x8d, 0x58, 0x98, 0xd3,
231 0x31, 0xa3, 0xe4, 0x70, 0x59, 0xb1, 0x21, 0xbe,
232 0x7e, 0x65, 0x7d, 0xb8, 0x04, 0xab, 0xf6, 0xe4,
233 0xd7, 0xda, 0xec, 0x09, 0x8f, 0xda, 0x6d, 0x24,
234 0x07, 0xcc, 0x29, 0x17, 0x05, 0x78, 0x1a, 0xc1,
235 0xb1, 0xce, 0xfc, 0xaa, 0x2d, 0xe7, 0xcc, 0x85,
236 0x84, 0x84, 0x03, 0x2a, 0x0c, 0x3f, 0xa9, 0xf8,
237 0xfd, 0x84, 0x53, 0x59, 0x5c, 0xf0, 0xd4, 0x09,
238 0xf0, 0xd2, 0x6c, 0x32, 0x03, 0xb0, 0xa0, 0x8c,
239 0x52, 0xeb, 0x23, 0x91, 0x88, 0x43, 0x13, 0x46,
240 0xf6, 0x1e, 0xb4, 0x1b, 0xf5, 0x8e, 0x3a, 0xb5,
241 0x3d, 0x00, 0xf6, 0xe5, 0x08, 0x3d, 0x5f, 0x39,
242 0xd3, 0x21, 0x69, 0xbc, 0x03, 0x22, 0x3a, 0xd2,
243 0x5c, 0x84, 0xf8, 0x15, 0xc4, 0x80, 0x0b, 0xbc,
244 0x29, 0x3c, 0xf3, 0x95, 0x98, 0xcd, 0x8f, 0x35,
245 0xbc, 0xa5, 0x3e, 0xfc, 0xd4, 0x13, 0x9e, 0xde,
246 0x4f, 0xce, 0x71, 0x9d, 0x09, 0xad, 0xf2, 0x80,
247 0x6b, 0x65, 0x7f, 0x03, 0x00, 0x14, 0x7c, 0x15,
248 0x85, 0x40, 0x6d, 0x70, 0xea, 0xdc, 0xb3, 0x63,
249 0x35, 0x4f, 0x4d, 0xe0, 0xd9, 0xd5, 0x3c, 0x58,
250 0x56, 0x23, 0x80, 0xe2, 0x36, 0xdd, 0x75, 0x1d,
251 0x94, 0x11, 0x41, 0x8e, 0xe0, 0x81, 0x8e, 0xcf,
252 0xe0, 0xe5, 0xf6, 0xde, 0xd1, 0xe7, 0x04, 0x12,
253 0x79, 0x92, 0x2b, 0x71, 0x2a, 0x79, 0x8b, 0x7c,
254 0x44, 0x79, 0x16, 0x30, 0x4e, 0xf4, 0xf6, 0x9b,
255 0xb7, 0x40, 0xa3, 0x5a, 0xa7, 0x69, 0x3e, 0xc1,
256 0x3a, 0x04, 0xd0, 0x88, 0xa0, 0x3b, 0xdd, 0xc6,
257 0x9e, 0x7e, 0x1e, 0x1e, 0x8f, 0x44, 0xf7, 0x73,
258 0x67, 0x1e, 0x1a, 0x78, 0xfa, 0x62, 0xf4, 0xa9,
259 0xa8, 0xc6, 0x5b, 0xb8, 0xfa, 0x06, 0x7d, 0x5e,
260 0x38, 0x1c, 0x9a, 0x39, 0xe9, 0x39, 0x98, 0x22,
261 0x0b, 0xa7, 0xac, 0x0b, 0xf3, 0xbc, 0xf1, 0xeb,
262 0x8c, 0x81, 0xe3, 0x48, 0x8a, 0xed, 0x42, 0xc2,
263 0x38, 0xcf, 0x3e, 0xda, 0xd2, 0x89, 0x8d, 0x9c,
264 0x53, 0xb5, 0x2f, 0x41, 0x01, 0x26, 0x84, 0x9c,
265 0xa3, 0x56, 0xf6, 0x49, 0xc7, 0xd4, 0x9f, 0x93,
266 0x1b, 0x96, 0x49, 0x5e, 0xad, 0xb3, 0x84, 0x1f,
267 0x3c, 0xa4, 0xe0, 0x9b, 0xd1, 0x90, 0xbc, 0x38,
268 0x6c, 0xdd, 0x95, 0x4d, 0x9d, 0xb1, 0x71, 0x57,
269 0x2d, 0x34, 0xe8, 0xb8, 0x42, 0xc7, 0x99, 0x03,
270 0xc7, 0x07, 0x30, 0x65, 0x91, 0x55, 0xd5, 0x90,
271 0x70, 0x97, 0x37, 0x68, 0xd4, 0x11, 0xf9, 0xe8,
272 0xce, 0xec, 0xdc, 0x34, 0xd5, 0xd3, 0xb7, 0xc4,
273 0xb8, 0x97, 0x05, 0x92, 0xad, 0xf8, 0xe2, 0x36,
274 0x64, 0x41, 0xc9, 0xc5, 0x41, 0x77, 0x52, 0xd7,
275 0x2c, 0xa5, 0x24, 0x2f, 0xd9, 0x34, 0x0b, 0x47,
276 0x35, 0xa7, 0x28, 0x8b, 0xc5, 0xcd, 0xe9, 0x46,
277 0xac, 0x39, 0x94, 0x3c, 0x10, 0xc6, 0x29, 0x73,
278 0x0e, 0x0e, 0x5d, 0xe0, 0x71, 0x03, 0x8a, 0x72,
279 0x0e, 0x26, 0xb0, 0x7d, 0x84, 0xed, 0x95, 0x23,
280 0x49, 0x5a, 0x45, 0x83, 0x45, 0x60, 0x11, 0x4a,
281 0x46, 0x31, 0xd4, 0xd8, 0x16, 0x54, 0x98, 0x58,
282 0xed, 0x6d, 0xcc, 0x5d, 0xd6, 0x50, 0x61, 0x9f,
283 0x9d, 0xc5, 0x3e, 0x9d, 0x32, 0x47, 0xde, 0x96,
284 0xe1, 0x5d, 0xd8, 0xf8, 0xb4, 0x69, 0x6f, 0xb9,
285 0x15, 0x90, 0x57, 0x7a, 0xf6, 0xad, 0xb0, 0x5b,
286 0xf5, 0xa6, 0x36, 0x94, 0xfd, 0x84, 0xce, 0x1c,
287 0x0f, 0x4b, 0xd0, 0xc2, 0x5b, 0x6b, 0x56, 0xef,
288 0x73, 0x93, 0x0b, 0xc3, 0xee, 0xd9, 0xcf, 0xd3,
289 0xa4, 0x22, 0x58, 0xcd, 0x50, 0x6e, 0x65, 0xf4,
290 0xe9, 0xb7, 0x71, 0xaf, 0x4b, 0xb3, 0xb6, 0x2f,
291 0x0f, 0x0e, 0x3b, 0xc9, 0x85, 0x14, 0xf5, 0x17,
292 0xe8, 0x7a, 0x3a, 0xbf, 0x5f, 0x5e, 0xf8, 0x18,
293 0x48, 0xa6, 0x72, 0xab, 0x06, 0x95, 0xe9, 0xc8,
294 0xa7, 0xf4, 0x32, 0x44, 0x04, 0x0c, 0x84, 0x98,
295 0x73, 0xe3, 0x89, 0x8d, 0x5f, 0x7e, 0x4a, 0x42,
296 0x8f, 0xc5, 0x28, 0xb1, 0x82, 0xef, 0x1c, 0x97,
297 0x31, 0x3b, 0x4d, 0xe0, 0x0e, 0x10, 0x10, 0x97,
298 0x93, 0x49, 0x78, 0x2f, 0x0d, 0x86, 0x8b, 0xa1,
299 0x53, 0xa9, 0x81, 0x20, 0x79, 0xe7, 0x07, 0x77,
300 0xb6, 0xac, 0x5e, 0xd2, 0x05, 0xcd, 0xe9, 0xdb,
301 0x8a, 0x94, 0x82, 0x8a, 0x23, 0xb9, 0x3d, 0x1c,
302 0xa9, 0x7d, 0x72, 0x4a, 0xed, 0x33, 0xa3, 0xdb,
303 0x21, 0xa7, 0x86, 0x33, 0x45, 0xa5, 0xaa, 0x56,
304 0x45, 0xb5, 0x83, 0x29, 0x40, 0x47, 0x79, 0x04,
305 0x6e, 0xb9, 0x95, 0xd0, 0x81, 0x77, 0x2d, 0x48,
306 0x1e, 0xfe, 0xc3, 0xc2, 0x1e, 0xe5, 0xf2, 0xbe,
307 0xfd, 0x3b, 0x94, 0x9f, 0xc4, 0xc4, 0x26, 0x9d,
308 0xe4, 0x66, 0x1e, 0x19, 0xee, 0x6c, 0x79, 0x97,
309 0x11, 0x31, 0x4b, 0x0d, 0x01, 0xcb, 0xde, 0xa8,
310 0xf6, 0x6d, 0x7c, 0x39, 0x46, 0x4e, 0x7e, 0x3f,
311 0x94, 0x17, 0xdf, 0xa1, 0x7d, 0xd9, 0x1c, 0x8e,
312 0xbc, 0x7d, 0x33, 0x7d, 0xe3, 0x12, 0x40, 0xca,
313 0xab, 0x37, 0x11, 0x46, 0xd4, 0xae, 0xef, 0x44,
314 0xa2, 0xb3, 0x6a, 0x66, 0x0e, 0x0c, 0x90, 0x7f,
315 0xdf, 0x5c, 0x66, 0x5f, 0xf2, 0x94, 0x9f, 0xa6,
316 0x73, 0x4f, 0xeb, 0x0d, 0xad, 0xbf, 0xc0, 0x63,
317 0x5c, 0xdc, 0x46, 0x51, 0xe8, 0x8e, 0x90, 0x19,
318 0xa8, 0xa4, 0x3c, 0x91, 0x79, 0xfa, 0x7e, 0x58,
319 0x85, 0x13, 0x55, 0xc5, 0x19, 0x82, 0x37, 0x1b,
320 0x0a, 0x02, 0x1f, 0x99, 0x6b, 0x18, 0xf1, 0x28,
321 0x08, 0xa2, 0x73, 0xb8, 0x0f, 0x2e, 0xcd, 0xbf,
322 0xf3, 0x86, 0x7f, 0xea, 0xef, 0xd0, 0xbb, 0xa6,
323 0x21, 0xdf, 0x49, 0x73, 0x51, 0xcc, 0x36, 0xd3,
324 0x3e, 0xa0, 0xf8, 0x44, 0xdf, 0xd3, 0xa6, 0xbe,
325 0x8a, 0xd4, 0x57, 0xdd, 0x72, 0x94, 0x61, 0x0f,
326 0x82, 0xd1, 0x07, 0xb8, 0x7c, 0x18, 0x83, 0xdf,
327 0x3a, 0xe5, 0x50, 0x6a, 0x82, 0x20, 0xac, 0xa9,
328 0xa8, 0xff, 0xd9, 0xf3, 0x77, 0x33, 0x5a, 0x9e,
329 0x7f, 0x6d, 0xfe, 0x5d, 0x33, 0x41, 0x42, 0xe7,
330 0x6c, 0x19, 0xe0, 0x44, 0x8a, 0x15, 0xf6, 0x70,
331 0x98, 0xb7, 0x68, 0x4d, 0xfa, 0x97, 0x39, 0xb0,
332 0x8e, 0xe8, 0x84, 0x8b, 0x75, 0x30, 0xb7, 0x7d,
333 0x92, 0x69, 0x20, 0x9c, 0x81, 0xfb, 0x4b, 0xf4,
334 0x01, 0x50, 0xeb, 0xce, 0x0c, 0x1c, 0x6c, 0xb5,
335 0x4a, 0xd7, 0x27, 0x0c, 0xce, 0xbb, 0xe5, 0x85,
336 0xf0, 0xb6, 0xee, 0xd5, 0x70, 0xdd, 0x3b, 0xfc,
337 0xd4, 0x99, 0xf1, 0x33, 0xdd, 0x8b, 0xc4, 0x2f,
338 0xae, 0xab, 0x74, 0x96, 0x32, 0xc7, 0x4c, 0x56,
339 0x3c, 0x89, 0x0f, 0x96, 0x0b, 0x42, 0xc0, 0xcb,
340 0xee, 0x0f, 0x0b, 0x8c, 0xfb, 0x7e, 0x47, 0x7b,
341 0x64, 0x48, 0xfd, 0xb2, 0x00, 0x80, 0x89, 0xa5,
342 0x13, 0x55, 0x62, 0xfc, 0x8f, 0xe2, 0x42, 0x03,
343 0xb7, 0x4e, 0x2a, 0x79, 0xb4, 0x82, 0xea, 0x23,
344 0x49, 0xda, 0xaf, 0x52, 0x63, 0x1e, 0x60, 0x03,
345 0x89, 0x06, 0x44, 0x46, 0x08, 0xc3, 0xc4, 0x87,
346 0x70, 0x2e, 0xda, 0x94, 0xad, 0x6b, 0xe0, 0xe4,
347 0xd1, 0x8a, 0x06, 0xc2, 0xa8, 0xc0, 0xa7, 0x43,
348 0x3c, 0x47, 0x52, 0x0e, 0xc3, 0x77, 0x81, 0x11,
349 0x67, 0x0e, 0xa0, 0x70, 0x04, 0x47, 0x29, 0x40,
350 0x86, 0x0d, 0x34, 0x56, 0xa7, 0xc9, 0x35, 0x59,
351 0x68, 0xdc, 0x93, 0x81, 0x70, 0xee, 0x86, 0xd9,
352 0x80, 0x06, 0x40, 0x4f, 0x1a, 0x0d, 0x40, 0x30,
353 0x0b, 0xcb, 0x96, 0x47, 0xc1, 0xb7, 0x52, 0xfd,
354 0x56, 0xe0, 0x72, 0x4b, 0xfb, 0xbd, 0x92, 0x45,
355 0x61, 0x71, 0xc2, 0x33, 0x11, 0xbf, 0x52, 0x83,
356 0x79, 0x26, 0xe0, 0x49, 0x6b, 0xb7, 0x05, 0x8b,
357 0xe8, 0x0e, 0x87, 0x31, 0xd7, 0x9d, 0x8a, 0xf5,
358 0xc0, 0x5f, 0x2e, 0x58, 0x4a, 0xdb, 0x11, 0xb3,
359 0x6c, 0x30, 0x2a, 0x46, 0x19, 0xe3, 0x27, 0x84,
360 0x1f, 0x63, 0x6e, 0xf6, 0x57, 0xc7, 0xc9, 0xd8,
361 0x5e, 0xba, 0xb3, 0x87, 0xd5, 0x83, 0x26, 0x34,
362 0x21, 0x9e, 0x65, 0xde, 0x42, 0xd3, 0xbe, 0x7b,
363 0xbc, 0x91, 0x71, 0x44, 0x4d, 0x99, 0x3b, 0x31,
364 0xe5, 0x3f, 0x11, 0x4e, 0x7f, 0x13, 0x51, 0x3b,
365 0xae, 0x79, 0xc9, 0xd3, 0x81, 0x8e, 0x25, 0x40,
366 0x10, 0xfc, 0x07, 0x1e, 0xf9, 0x7b, 0x9a, 0x4b,
367 0x6c, 0xe3, 0xb3, 0xad, 0x1a, 0x0a, 0xdd, 0x9e,
368 0x59, 0x0c, 0xa2, 0xcd, 0xae, 0x48, 0x4a, 0x38,
369 0x5b, 0x47, 0x41, 0x94, 0x65, 0x6b, 0xbb, 0xeb,
370 0x5b, 0xe3, 0xaf, 0x07, 0x5b, 0xd4, 0x4a, 0xa2,
371 0xc9, 0x5d, 0x2f, 0x64, 0x03, 0xd7, 0x3a, 0x2c,
372 0x6e, 0xce, 0x76, 0x95, 0xb4, 0xb3, 0xc0, 0xf1,
373 0xe2, 0x45, 0x73, 0x7a, 0x5c, 0xab, 0xc1, 0xfc,
374 0x02, 0x8d, 0x81, 0x29, 0xb3, 0xac, 0x07, 0xec,
375 0x40, 0x7d, 0x45, 0xd9, 0x7a, 0x59, 0xee, 0x34,
376 0xf0, 0xe9, 0xd5, 0x7b, 0x96, 0xb1, 0x3d, 0x95,
377 0xcc, 0x86, 0xb5, 0xb6, 0x04, 0x2d, 0xb5, 0x92,
378 0x7e, 0x76, 0xf4, 0x06, 0xa9, 0xa3, 0x12, 0x0f,
379 0xb1, 0xaf, 0x26, 0xba, 0x7c, 0xfc, 0x7e, 0x1c,
380 0xbc, 0x2c, 0x49, 0x97, 0x53, 0x60, 0x13, 0x0b,
381 0xa6, 0x61, 0x83, 0x89, 0x42, 0xd4, 0x17, 0x0c,
382 0x6c, 0x26, 0x52, 0xc3, 0xb3, 0xd4, 0x67, 0xf5,
383 0xe3, 0x04, 0xb7, 0xf4, 0xcb, 0x80, 0xb8, 0xcb,
384 0x77, 0x56, 0x3e, 0xaa, 0x57, 0x54, 0xee, 0xb4,
385 0x2c, 0x67, 0xcf, 0xf2, 0xdc, 0xbe, 0x55, 0xf9,
386 0x43, 0x1f, 0x6e, 0x22, 0x97, 0x67, 0x7f, 0xc4,
387 0xef, 0xb1, 0x26, 0x31, 0x1e, 0x27, 0xdf, 0x41,
388 0x80, 0x47, 0x6c, 0xe2, 0xfa, 0xa9, 0x8c, 0x2a,
389 0xf6, 0xf2, 0xab, 0xf0, 0x15, 0xda, 0x6c, 0xc8,
390 0xfe, 0xb5, 0x23, 0xde, 0xa9, 0x05, 0x3f, 0x06,
391 0x54, 0x4c, 0xcd, 0xe1, 0xab, 0xfc, 0x0e, 0x62,
392 0x33, 0x31, 0x73, 0x2c, 0x76, 0xcb, 0xb4, 0x47,
393 0x1e, 0x20, 0xad, 0xd8, 0xf2, 0x31, 0xdd, 0xc4,
394 0x8b, 0x0c, 0x77, 0xbe, 0xe1, 0x8b, 0x26, 0x00,
395 0x02, 0x58, 0xd6, 0x8d, 0xef, 0xad, 0x74, 0x67,
396 0xab, 0x3f, 0xef, 0xcb, 0x6f, 0xb0, 0xcc, 0x81,
397 0x44, 0x4c, 0xaf, 0xe9, 0x49, 0x4f, 0xdb, 0xa0,
398 0x25, 0xa4, 0xf0, 0x89, 0xf1, 0xbe, 0xd8, 0x10,
399 0xff, 0xb1, 0x3b, 0x4b, 0xfa, 0x98, 0xf5, 0x79,
400 0x6d, 0x1e, 0x69, 0x4d, 0x57, 0xb1, 0xc8, 0x19,
401 0x1b, 0xbd, 0x1e, 0x8c, 0x84, 0xb7, 0x7b, 0xe8,
402 0xd2, 0x2d, 0x09, 0x41, 0x41, 0x37, 0x3d, 0xb1,
403 0x6f, 0x26, 0x5d, 0x71, 0x16, 0x3d, 0xb7, 0x83,
404 0x27, 0x2c, 0xa7, 0xb6, 0x50, 0xbd, 0x91, 0x86,
405 0xab, 0x24, 0xa1, 0x38, 0xfd, 0xea, 0x71, 0x55,
406 0x7e, 0x9a, 0x07, 0x77, 0x4b, 0xfa, 0x61, 0x66,
407 0x20, 0x1e, 0x28, 0x95, 0x18, 0x1b, 0xa4, 0xa0,
408 0xfd, 0xc0, 0x89, 0x72, 0x43, 0xd9, 0x3b, 0x49,
409 0x5a, 0x3f, 0x9d, 0xbf, 0xdb, 0xb4, 0x46, 0xea,
410 0x42, 0x01, 0x77, 0x23, 0x68, 0x95, 0xb6, 0x24,
411 0xb3, 0xa8, 0x6c, 0x28, 0x3b, 0x11, 0x40, 0x7e,
412 0x18, 0x65, 0x6d, 0xd8, 0x24, 0x42, 0x7d, 0x88,
413 0xc0, 0x52, 0xd9, 0x05, 0xe4, 0x95, 0x90, 0x87,
414 0x8c, 0xf4, 0xd0, 0x6b, 0xb9, 0x83, 0x99, 0x34,
415 0x6d, 0xfe, 0x54, 0x40, 0x94, 0x52, 0x21, 0x4f,
416 0x14, 0x25, 0xc5, 0xd6, 0x5e, 0x95, 0xdc, 0x0a,
417 0x2b, 0x89, 0x20, 0x11, 0x84, 0x48, 0xd6, 0x3a,
418 0xcd, 0x5c, 0x24, 0xad, 0x62, 0xe3, 0xb1, 0x93,
419 0x25, 0x8d, 0xcd, 0x7e, 0xfc, 0x27, 0xa3, 0x37,
420 0xfd, 0x84, 0xfc, 0x1b, 0xb2, 0xf1, 0x27, 0x38,
421 0x5a, 0xb7, 0xfc, 0xf2, 0xfa, 0x95, 0x66, 0xd4,
422 0xfb, 0xba, 0xa7, 0xd7, 0xa3, 0x72, 0x69, 0x48,
423 0x48, 0x8c, 0xeb, 0x28, 0x89, 0xfe, 0x33, 0x65,
424 0x5a, 0x36, 0x01, 0x7e, 0x06, 0x79, 0x0a, 0x09,
425 0x3b, 0x74, 0x11, 0x9a, 0x6e, 0xbf, 0xd4, 0x9e,
426 0x58, 0x90, 0x49, 0x4f, 0x4d, 0x08, 0xd4, 0xe5,
427 0x4a, 0x09, 0x21, 0xef, 0x8b, 0xb8, 0x74, 0x3b,
428 0x91, 0xdd, 0x36, 0x85, 0x60, 0x2d, 0xfa, 0xd4,
429 0x45, 0x7b, 0x45, 0x53, 0xf5, 0x47, 0x87, 0x7e,
430 0xa6, 0x37, 0xc8, 0x78, 0x7a, 0x68, 0x9d, 0x8d,
431 0x65, 0x2c, 0x0e, 0x91, 0x5c, 0xa2, 0x60, 0xf0,
432 0x8e, 0x3f, 0xe9, 0x1a, 0xcd, 0xaa, 0xe7, 0xd5,
433 0x77, 0x18, 0xaf, 0xc9, 0xbc, 0x18, 0xea, 0x48,
434 0x1b, 0xfb, 0x22, 0x48, 0x70, 0x16, 0x29, 0x9e,
435 0x5b, 0xc1, 0x2c, 0x66, 0x23, 0xbc, 0xf0, 0x1f,
436 0xef, 0xaf, 0xe4, 0xd6, 0x04, 0x19, 0x82, 0x7a,
437 0x0b, 0xba, 0x4b, 0x46, 0xb1, 0x6a, 0x85, 0x5d,
438 0xb4, 0x73, 0xd6, 0x21, 0xa1, 0x71, 0x60, 0x14,
439 0xee, 0x0a, 0x77, 0xc4, 0x66, 0x2e, 0xf9, 0x69,
440 0x30, 0xaf, 0x41, 0x0b, 0xc8, 0x83, 0x3c, 0x53,
441 0x99, 0x19, 0x27, 0x46, 0xf7, 0x41, 0x6e, 0x56,
442 0xdc, 0x94, 0x28, 0x67, 0x4e, 0xb7, 0x25, 0x48,
443 0x8a, 0xc2, 0xe0, 0x60, 0x96, 0xcc, 0x18, 0xf4,
444 0x84, 0xdd, 0xa7, 0x5e, 0x3e, 0x05, 0x0b, 0x26,
445 0x26, 0xb2, 0x5c, 0x1f, 0x57, 0x1a, 0x04, 0x7e,
446 0x6a, 0xe3, 0x2f, 0xb4, 0x35, 0xb6, 0x38, 0x40,
447 0x40, 0xcd, 0x6f, 0x87, 0x2e, 0xef, 0xa3, 0xd7,
448 0xa9, 0xc2, 0xe8, 0x0d, 0x27, 0xdf, 0x44, 0x62,
449 0x99, 0xa0, 0xfc, 0xcf, 0x81, 0x78, 0xcb, 0xfe,
450 0xe5, 0xa0, 0x03, 0x4e, 0x6c, 0xd7, 0xf4, 0xaf,
451 0x7a, 0xbb, 0x61, 0x82, 0xfe, 0x71, 0x89, 0xb2,
452 0x22, 0x7c, 0x8e, 0x83, 0x04, 0xce, 0xf6, 0x5d,
453 0x84, 0x8f, 0x95, 0x6a, 0x7f, 0xad, 0xfd, 0x32,
454 0x9c, 0x5e, 0xe4, 0x9c, 0x89, 0x60, 0x54, 0xaa,
455 0x96, 0x72, 0xd2, 0xd7, 0x36, 0x85, 0xa9, 0x45,
456 0xd2, 0x2a, 0xa1, 0x81, 0x49, 0x6f, 0x7e, 0x04,
457 0xfa, 0xe2, 0xfe, 0x90, 0x26, 0x77, 0x5a, 0x33,
458 0xb8, 0x04, 0x9a, 0x7a, 0xe6, 0x4c, 0x4f, 0xad,
459 0x72, 0x96, 0x08, 0x28, 0x58, 0x13, 0xf8, 0xc4,
460 0x1c, 0xf0, 0xc3, 0x45, 0x95, 0x49, 0x20, 0x8c,
461 0x9f, 0x39, 0x70, 0xe1, 0x77, 0xfe, 0xd5, 0x4b,
462 0xaf, 0x86, 0xda, 0xef, 0x22, 0x06, 0x83, 0x36,
463 0x29, 0x12, 0x11, 0x40, 0xbc, 0x3b, 0x86, 0xaa,
464 0xaa, 0x65, 0x60, 0xc3, 0x80, 0xca, 0xed, 0xa9,
465 0xf3, 0xb0, 0x79, 0x96, 0xa2, 0x55, 0x27, 0x28,
466 0x55, 0x73, 0x26, 0xa5, 0x50, 0xea, 0x92, 0x4b,
467 0x3c, 0x5c, 0x82, 0x33, 0xf0, 0x01, 0x3f, 0x03,
468 0xc1, 0x08, 0x05, 0xbf, 0x98, 0xf4, 0x9b, 0x6d,
469 0xa5, 0xa8, 0xb4, 0x82, 0x0c, 0x06, 0xfa, 0xff,
470 0x2d, 0x08, 0xf3, 0x05, 0x4f, 0x57, 0x2a, 0x39,
471 0xd4, 0x83, 0x0d, 0x75, 0x51, 0xd8, 0x5b, 0x1b,
472 0xd3, 0x51, 0x5a, 0x32, 0x2a, 0x9b, 0x32, 0xb2,
473 0xf2, 0xa4, 0x96, 0x12, 0xf2, 0xae, 0x40, 0x34,
474 0x67, 0xa8, 0xf5, 0x44, 0xd5, 0x35, 0x53, 0xfe,
475 0xa3, 0x60, 0x96, 0x63, 0x0f, 0x1f, 0x6e, 0xb0,
476 0x5a, 0x42, 0xa6, 0xfc, 0x51, 0x0b, 0x60, 0x27,
477 0xbc, 0x06, 0x71, 0xed, 0x65, 0x5b, 0x23, 0x86,
478 0x4a, 0x07, 0x3b, 0x22, 0x07, 0x46, 0xe6, 0x90,
479 0x3e, 0xf3, 0x25, 0x50, 0x1b, 0x4c, 0x7f, 0x03,
480 0x08, 0xa8, 0x36, 0x6b, 0x87, 0xe5, 0xe3, 0xdb,
481 0x9a, 0x38, 0x83, 0xff, 0x9f, 0x1a, 0x9f, 0x57,
482 0xa4, 0x2a, 0xf6, 0x37, 0xbc, 0x1a, 0xff, 0xc9,
483 0x1e, 0x35, 0x0c, 0xc3, 0x7c, 0xa3, 0xb2, 0xe5,
484 0xd2, 0xc6, 0xb4, 0x57, 0x47, 0xe4, 0x32, 0x16,
485 0x6d, 0xa9, 0xae, 0x64, 0xe6, 0x2d, 0x8d, 0xc5,
486 0x8d, 0x50, 0x8e, 0xe8, 0x1a, 0x22, 0x34, 0x2a,
487 0xd9, 0xeb, 0x51, 0x90, 0x4a, 0xb1, 0x41, 0x7d,
488 0x64, 0xf9, 0xb9, 0x0d, 0xf6, 0x23, 0x33, 0xb0,
489 0x33, 0xf4, 0xf7, 0x3f, 0x27, 0x84, 0xc6, 0x0f,
490 0x54, 0xa5, 0xc0, 0x2e, 0xec, 0x0b, 0x3a, 0x48,
491 0x6e, 0x80, 0x35, 0x81, 0x43, 0x9b, 0x90, 0xb1,
492 0xd0, 0x2b, 0xea, 0x21, 0xdc, 0xda, 0x5b, 0x09,
493 0xf4, 0xcc, 0x10, 0xb4, 0xc7, 0xfe, 0x79, 0x51,
494 0xc3, 0xc5, 0xac, 0x88, 0x74, 0x84, 0x0b, 0x4b,
495 0xca, 0x79, 0x16, 0x29, 0xfb, 0x69, 0x54, 0xdf,
496 0x41, 0x7e, 0xe9, 0xc7, 0x8e, 0xea, 0xa5, 0xfe,
497 0xfc, 0x76, 0x0e, 0x90, 0xc4, 0x92, 0x38, 0xad,
498 0x7b, 0x48, 0xe6, 0x6e, 0xf7, 0x21, 0xfd, 0x4e,
499 0x93, 0x0a, 0x7b, 0x41, 0x83, 0x68, 0xfb, 0x57,
500 0x51, 0x76, 0x34, 0xa9, 0x6c, 0x00, 0xaa, 0x4f,
501 0x66, 0x65, 0x98, 0x4a, 0x4f, 0xa3, 0xa0, 0xef,
502 0x69, 0x3f, 0xe3, 0x1c, 0x92, 0x8c, 0xfd, 0xd8,
503 0xe8, 0xde, 0x7c, 0x7f, 0x3e, 0x84, 0x8e, 0x69,
504 0x3c, 0xf1, 0xf2, 0x05, 0x46, 0xdc, 0x2f, 0x9d,
505 0x5e, 0x6e, 0x4c, 0xfb, 0xb5, 0x99, 0x2a, 0x59,
506 0x63, 0xc1, 0x34, 0xbc, 0x57, 0xc0, 0x0d, 0xb9,
507 0x61, 0x25, 0xf3, 0x33, 0x23, 0x51, 0xb6, 0x0d,
508 0x07, 0xa6, 0xab, 0x94, 0x4a, 0xb7, 0x2a, 0xea,
509 0xee, 0xac, 0xa3, 0xc3, 0x04, 0x8b, 0x0e, 0x56,
510 0xfe, 0x44, 0xa7, 0x39, 0xe2, 0xed, 0xed, 0xb4,
511 0x22, 0x2b, 0xac, 0x12, 0x32, 0x28, 0x91, 0xd8,
512 0xa5, 0xab, 0xff, 0x5f, 0xe0, 0x4b, 0xda, 0x78,
513 0x17, 0xda, 0xf1, 0x01, 0x5b, 0xcd, 0xe2, 0x5f,
514 0x50, 0x45, 0x73, 0x2b, 0xe4, 0x76, 0x77, 0xf4,
515 0x64, 0x1d, 0x43, 0xfb, 0x84, 0x7a, 0xea, 0x91,
516 0xae, 0xf9, 0x9e, 0xb7, 0xb4, 0xb0, 0x91, 0x5f,
517 0x16, 0x35, 0x9a, 0x11, 0xb8, 0xc7, 0xc1, 0x8c,
518 0xc6, 0x10, 0x8d, 0x2f, 0x63, 0x4a, 0xa7, 0x57,
519 0x3a, 0x51, 0xd6, 0x32, 0x2d, 0x64, 0x72, 0xd4,
520 0x66, 0xdc, 0x10, 0xa6, 0x67, 0xd6, 0x04, 0x23,
521 0x9d, 0x0a, 0x11, 0x77, 0xdd, 0x37, 0x94, 0x17,
522 0x3c, 0xbf, 0x8b, 0x65, 0xb0, 0x2e, 0x5e, 0x66,
523 0x47, 0x64, 0xac, 0xdd, 0xf0, 0x84, 0xfd, 0x39,
524 0xfa, 0x15, 0x5d, 0xef, 0xae, 0xca, 0xc1, 0x36,
525 0xa7, 0x5c, 0xbf, 0xc7, 0x08, 0xc2, 0x66, 0x00,
526 0x74, 0x74, 0x4e, 0x27, 0x3f, 0x55, 0x8a, 0xb7,
527 0x38, 0x66, 0x83, 0x6d, 0xcf, 0x99, 0x9e, 0x60,
528 0x8f, 0xdd, 0x2e, 0x62, 0x22, 0x0e, 0xef, 0x0c,
529 0x98, 0xa7, 0x85, 0x74, 0x3b, 0x9d, 0xec, 0x9e,
530 0xa9, 0x19, 0x72, 0xa5, 0x7f, 0x2c, 0x39, 0xb7,
531 0x7d, 0xb7, 0xf1, 0x12, 0x65, 0x27, 0x4b, 0x5a,
532 0xde, 0x17, 0xfe, 0xad, 0x44, 0xf3, 0x20, 0x4d,
533 0xfd, 0xe4, 0x1f, 0xb5, 0x81, 0xb0, 0x36, 0x37,
534 0x08, 0x6f, 0xc3, 0x0c, 0xe9, 0x85, 0x98, 0x82,
535 0xa9, 0x62, 0x0c, 0xc4, 0x97, 0xc0, 0x50, 0xc8,
536 0xa7, 0x3c, 0x50, 0x9f, 0x43, 0xb9, 0xcd, 0x5e,
537 0x4d, 0xfa, 0x1c, 0x4b, 0x0b, 0xa9, 0x98, 0x85,
538 0x38, 0x92, 0xac, 0x8d, 0xe4, 0xad, 0x9b, 0x98,
539 0xab, 0xd9, 0x38, 0xac, 0x62, 0x52, 0xa3, 0x22,
540 0x63, 0x0f, 0xbf, 0x95, 0x48, 0xdf, 0x69, 0xe7,
541 0x8b, 0x33, 0xd5, 0xb2, 0xbd, 0x05, 0x49, 0x49,
542 0x9d, 0x57, 0x73, 0x19, 0x33, 0xae, 0xfa, 0x33,
543 0xf1, 0x19, 0xa8, 0x80, 0xce, 0x04, 0x9f, 0xbc,
544 0x1d, 0x65, 0x82, 0x1b, 0xe5, 0x3a, 0x51, 0xc8,
545 0x1c, 0x21, 0xe3, 0x5d, 0xf3, 0x7d, 0x9b, 0x2f,
546 0x2c, 0x1d, 0x4a, 0x7f, 0x9b, 0x68, 0x35, 0xa3,
547 0xb2, 0x50, 0xf7, 0x62, 0x79, 0xcd, 0xf4, 0x98,
548 0x4f, 0xe5, 0x63, 0x7c, 0x3e, 0x45, 0x31, 0x8c,
549 0x16, 0xa0, 0x12, 0xc8, 0x58, 0xce, 0x39, 0xa6,
550 0xbc, 0x54, 0xdb, 0xc5, 0xe0, 0xd5, 0xba, 0xbc,
551 0xb9, 0x04, 0xf4, 0x8d, 0xe8, 0x2f, 0x15, 0x9d,
552 };
553
554 /* 100 test cases */
555 static struct crc_test {
556 uint32_t crc; /* random starting crc */
557 uint32_t start; /* random 6 bit offset in buf */
558 uint32_t length; /* random 11 bit length of test */
559 uint32_t crc32c_le; /* expected crc32c_le result */
560 } test[] =
561 {
562 {0x674bf11d, 0x00000038, 0x00000542, 0xf6e93d6c},
563 {0x35c672c6, 0x0000003a, 0x000001aa, 0x0fe92aca},
564 {0x496da28e, 0x00000039, 0x000005af, 0x52e1ebb8},
565 {0x09a9b90e, 0x00000027, 0x000001f8, 0x0798af9a},
566 {0xdc97e5a9, 0x00000025, 0x000003b6, 0x18eb3152},
567 {0x47c58900, 0x0000000a, 0x000000b9, 0xd00d08c7},
568 {0x292561e8, 0x0000000c, 0x00000403, 0x8ba966bc},
569 {0x415037f6, 0x00000003, 0x00000676, 0x11d694a2},
570 {0x3466e707, 0x00000026, 0x00000042, 0x6ab3208d},
571 {0xafd1281b, 0x00000023, 0x000002ee, 0xba4603c5},
572 {0xd3857b18, 0x00000028, 0x000004a2, 0xe6071c6f},
573 {0x1d825a8f, 0x0000002b, 0x0000050b, 0x179ec30a},
574 {0x5033e3bc, 0x0000000b, 0x00000078, 0x0903beb8},
575 {0x94f1fb5e, 0x0000000f, 0x000003a2, 0x6a7cb4fa},
576 {0xc9a0fe14, 0x00000009, 0x00000473, 0xdb535801},
577 {0x88a034b1, 0x0000001c, 0x000005ad, 0x92bed597},
578 {0xf0f72239, 0x00000020, 0x0000026d, 0x192a3f1b},
579 {0xcc20a5e3, 0x0000003b, 0x0000067a, 0xccbaec1a},
580 {0xce589c95, 0x0000002b, 0x00000641, 0x7eabae4d},
581 {0x78edc885, 0x00000035, 0x000005be, 0x28c72982},
582 {0x9d40a377, 0x0000003b, 0x00000038, 0xc3cd4d18},
583 {0x703d0e01, 0x0000003c, 0x000006f1, 0xbca8f0e7},
584 {0x776bf505, 0x0000000f, 0x000005b2, 0x713f60b3},
585 {0x4a3e7854, 0x00000027, 0x000004b8, 0xebd08fd5},
586 {0x209172dd, 0x0000003b, 0x00000356, 0x64406c59},
587 {0x3ba4cc5b, 0x0000002f, 0x00000203, 0x7421890e},
588 {0xfc62f297, 0x00000000, 0x00000079, 0xe9347603},
589 {0x64280b8b, 0x00000016, 0x000007ab, 0x1bef9060},
590 {0x97dd724b, 0x00000033, 0x000007ad, 0x34720072},
591 {0x61394b52, 0x00000035, 0x00000571, 0x48310f59},
592 {0x29b4faff, 0x00000024, 0x0000006e, 0x783a4213},
593 {0x29bfb1dc, 0x0000000b, 0x00000244, 0x9e8efd41},
594 {0x86ae934b, 0x00000035, 0x00000104, 0xfc3d34a5},
595 {0xc4c1024e, 0x0000002e, 0x000006b1, 0x17a52ae2},
596 {0x3287a80a, 0x00000026, 0x00000496, 0x886d935a},
597 {0xa4db423e, 0x00000023, 0x0000045d, 0xeaaeaeb2},
598 {0x7a1078df, 0x00000015, 0x0000014a, 0x8e900a4b},
599 {0x6048bd5b, 0x00000006, 0x0000006a, 0xd74662b1},
600 {0xd8f9ea20, 0x0000003d, 0x00000277, 0xd26752ba},
601 {0xea5ec3b4, 0x0000002a, 0x000004fe, 0x8b1fcd62},
602 {0x2dfb005d, 0x00000016, 0x00000345, 0xf54342fe},
603 {0x5a214ade, 0x00000020, 0x000005b6, 0x5b95b988},
604 {0xf0ab9cca, 0x00000032, 0x00000515, 0x2e1176be},
605 {0x91b444f9, 0x0000002e, 0x000007f8, 0x66120546},
606 {0x1b5d2ddb, 0x0000002e, 0x0000012c, 0xf256a5cc},
607 {0xd824d1bb, 0x0000003a, 0x000007b5, 0x4af1dd69},
608 {0x0470180c, 0x00000034, 0x000001f0, 0x56f0a04a},
609 {0xffaa3a3f, 0x00000036, 0x00000299, 0x74f6b6b2},
610 {0x6406cfeb, 0x00000023, 0x00000600, 0x085951fd},
611 {0xb24aaa38, 0x0000003e, 0x000004a1, 0xc65387eb},
612 {0x58b2ab7c, 0x00000039, 0x000002b4, 0x1ca9257b},
613 {0x3db85970, 0x00000006, 0x000002b6, 0xfd196d76},
614 {0x857830c5, 0x00000003, 0x00000590, 0x5ef88339},
615 {0xe1fcd978, 0x0000003e, 0x000007d8, 0x2c3714d9},
616 {0xb982a768, 0x00000016, 0x000006e0, 0x58576548},
617 {0x1d581ce8, 0x0000001e, 0x0000058b, 0xfd7c57de},
618 {0x2456719b, 0x00000025, 0x00000503, 0xd5fedd59},
619 {0xfae6d8f2, 0x00000000, 0x0000055d, 0x1cc3b17b},
620 {0xcba828e3, 0x00000039, 0x000002ce, 0x270eed73},
621 {0x13d25952, 0x0000000a, 0x0000072d, 0x91ecbb11},
622 {0x0342be3f, 0x00000015, 0x00000599, 0x05ed8d0c},
623 {0xeaa344e0, 0x00000014, 0x000004d8, 0x0b09ad5b},
624 {0xbbb52021, 0x0000003b, 0x00000272, 0xf8d511fb},
625 {0xb66384dc, 0x0000001d, 0x000007fc, 0x5ad832cc},
626 {0x616c01b6, 0x00000022, 0x000002c8, 0x1214d196},
627 {0xce2bdaad, 0x00000016, 0x0000062a, 0x5747218a},
628 {0x00fe84d7, 0x00000005, 0x00000205, 0xde8f14de},
629 {0xbebdcb4c, 0x00000006, 0x0000055d, 0x3563b7b9},
630 {0xd8b1a02a, 0x00000010, 0x00000387, 0x071475d0},
631 {0x3b96cad2, 0x00000036, 0x00000347, 0x54c79d60},
632 {0xc94c1ed7, 0x00000005, 0x0000038b, 0x4c53eee6},
633 {0x1aad454e, 0x00000025, 0x000002b2, 0x10137a3c},
634 {0xa4fec9a6, 0x00000000, 0x000006d6, 0xaa9d6c73},
635 {0x1bbe71e2, 0x0000001f, 0x000002fd, 0xb63d23e7},
636 {0x4201c7e4, 0x00000002, 0x000002b7, 0x7f53e9cf},
637 {0x23fddc96, 0x00000003, 0x00000627, 0x13c1cd83},
638 {0xd82ba25c, 0x00000016, 0x0000063e, 0x49ff5867},
639 {0x786f2032, 0x0000002d, 0x0000060f, 0x8467f211},
640 {0xfebe4e1f, 0x0000002a, 0x000004f2, 0x3f9683b2},
641 {0x1a6e0a39, 0x00000008, 0x00000672, 0x76a3f874},
642 {0x56000ab8, 0x0000000e, 0x000000e5, 0x863b702f},
643 {0x4717fe0c, 0x00000000, 0x000006ec, 0xdc6c58ff},
644 {0xd5d5d68e, 0x0000003c, 0x000003a3, 0x0622cc95},
645 {0xc25dd6c6, 0x00000024, 0x000006c0, 0xe85605cd},
646 {0xe9b11300, 0x00000023, 0x00000683, 0x31da5f06},
647 {0x95cd285e, 0x00000001, 0x00000047, 0xa1f2e784},
648 {0xd9245a25, 0x0000001e, 0x000003a6, 0xb07cc616},
649 {0x103279db, 0x00000006, 0x0000039b, 0xbf943b6c},
650 {0x1cba3172, 0x00000027, 0x000001c8, 0x2c01af1c},
651 {0x8f613739, 0x0000000c, 0x000001df, 0x0fe5f56d},
652 {0x1c6aa90d, 0x0000001b, 0x0000053c, 0xf8943b2d},
653 {0xaabe5b93, 0x0000003d, 0x00000715, 0xe4d89272},
654 {0xf15dd038, 0x00000006, 0x000006db, 0x7c2f6bbb},
655 {0x584dd49c, 0x00000020, 0x000007bc, 0xabbf388b},
656 {0x5d8c9506, 0x00000020, 0x00000470, 0x1dca1f4e},
657 {0xb80d17b0, 0x00000032, 0x00000346, 0x5c170e23},
658 {0xdaf0592e, 0x00000023, 0x000007b0, 0xc0e9d672},
659 {0x4793cc85, 0x0000000d, 0x00000706, 0xc18bdc86},
660 {0x82ebf64e, 0x00000009, 0x000007c3, 0xa874fcdd},
661 {0xb18a0319, 0x00000026, 0x000007db, 0x9dc0bb48},
662 };
663
664 static int
665 crc32c_test(void)
666 {
667 int i;
668 int errors = 0;
669 int bytes = 0;
670 struct timeval start, stop;
671 uint64_t usec;
672
673 /* keep static to prevent cache warming code from
674 * getting eliminated by the compiler */
675 static uint32_t crc;
676
677 /* pre-warm the cache */
678 for (i = 0; i < 100; i++) {
679 bytes += 2*test[i].length;
680
681 crc ^= crc32c_le(test[i].crc, test_buf +
682 test[i].start, test[i].length);
683 }
684
685 gettimeofday(&start, NULL);
686 for (i = 0; i < 100; i++) {
687 if (test[i].crc32c_le != crc32c_le(test[i].crc, test_buf +
688 test[i].start, test[i].length))
689 errors++;
690 }
691 gettimeofday(&stop, NULL);
692
693 usec = stop.tv_usec - start.tv_usec +
694 1000000 * (stop.tv_sec - start.tv_sec);
695
696 if (errors)
697 printf("crc32c: %d self tests failed\n", errors);
698 else {
699 printf("crc32c: tests passed, %d bytes in %" PRIu64 " usec\n",
700 bytes, usec);
701 }
702
703 return errors;
704 }
705
706 #endif /* __LIBFROG_CRC32CSELFTEST_H__ */