5 #include "hash-whirlpool.h"
8 static const uint64_t c
[R
] = {
10 0x52916f79f5d2a636ULL
,
11 0x357b0ca38e9bbc60ULL
,
12 0x57fe4b2ec2d7e01dULL
,
13 0xda4af09fe5377715ULL
,
14 0x856ba0b10a29c958ULL
,
15 0x67053ecbf4105dbdULL
,
16 0xd8957da78b4127e4ULL
,
17 0x9e4717dd667ceefbULL
,
18 0x33835aad07bf2dcaULL
,
21 static const uint64_t T0
[256] = {
22 0xd83078c018601818ULL
,
23 0x2646af05238c2323ULL
,
24 0xb891f97ec63fc6c6ULL
,
25 0xfbcd6f13e887e8e8ULL
,
26 0xcb13a14c87268787ULL
,
27 0x116d62a9b8dab8b8ULL
,
28 0x0902050801040101ULL
,
29 0x0d9e6e424f214f4fULL
,
30 0x9b6ceead36d83636ULL
,
31 0xff510459a6a2a6a6ULL
,
32 0x0cb9bdded26fd2d2ULL
,
33 0x0ef706fbf5f3f5f5ULL
,
34 0x96f280ef79f97979ULL
,
35 0x30dece5f6fa16f6fULL
,
36 0x6d3feffc917e9191ULL
,
37 0xf8a407aa52555252ULL
,
38 0x47c0fd27609d6060ULL
,
39 0x35657689bccabcbcULL
,
40 0x372bcdac9b569b9bULL
,
41 0x8a018c048e028e8eULL
,
42 0xd25b1571a3b6a3a3ULL
,
43 0x6c183c600c300c0cULL
,
44 0x84f68aff7bf17b7bULL
,
45 0x806ae1b535d43535ULL
,
46 0xf53a69e81d741d1dULL
,
47 0xb3dd4753e0a7e0e0ULL
,
48 0x21b3acf6d77bd7d7ULL
,
49 0x9c99ed5ec22fc2c2ULL
,
50 0x435c966d2eb82e2eULL
,
51 0x29967a624b314b4bULL
,
52 0x5de121a3fedffefeULL
,
53 0xd5ae168257415757ULL
,
54 0xbd2a41a815541515ULL
,
55 0xe8eeb69f77c17777ULL
,
56 0x926eeba537dc3737ULL
,
57 0x9ed7567be5b3e5e5ULL
,
58 0x1323d98c9f469f9fULL
,
59 0x23fd17d3f0e7f0f0ULL
,
60 0x20947f6a4a354a4aULL
,
61 0x44a9959eda4fdadaULL
,
62 0xa2b025fa587d5858ULL
,
63 0xcf8fca06c903c9c9ULL
,
64 0x7c528d5529a42929ULL
,
65 0x5a1422500a280a0aULL
,
66 0x507f4fe1b1feb1b1ULL
,
67 0xc95d1a69a0baa0a0ULL
,
68 0x14d6da7f6bb16b6bULL
,
69 0xd917ab5c852e8585ULL
,
70 0x3c677381bdcebdbdULL
,
71 0x8fba34d25d695d5dULL
,
72 0x9020508010401010ULL
,
73 0x07f503f3f4f7f4f4ULL
,
74 0xdd8bc016cb0bcbcbULL
,
75 0xd37cc6ed3ef83e3eULL
,
76 0x2d0a112805140505ULL
,
77 0x78cee61f67816767ULL
,
78 0x97d55373e4b7e4e4ULL
,
79 0x024ebb25279c2727ULL
,
80 0x7382583241194141ULL
,
81 0xa70b9d2c8b168b8bULL
,
82 0xf6530151a7a6a7a7ULL
,
83 0xb2fa94cf7de97d7dULL
,
84 0x4937fbdc956e9595ULL
,
85 0x56ad9f8ed847d8d8ULL
,
86 0x70eb308bfbcbfbfbULL
,
87 0xcdc17123ee9feeeeULL
,
88 0xbbf891c77ced7c7cULL
,
89 0x71cce31766856666ULL
,
90 0x7ba78ea6dd53ddddULL
,
91 0xaf2e4bb8175c1717ULL
,
92 0x458e460247014747ULL
,
93 0x1a21dc849e429e9eULL
,
94 0xd489c51eca0fcacaULL
,
95 0x585a99752db42d2dULL
,
96 0x2e637991bfc6bfbfULL
,
97 0x3f0e1b38071c0707ULL
,
98 0xac472301ad8eadadULL
,
99 0xb0b42fea5a755a5aULL
,
100 0xef1bb56c83368383ULL
,
101 0xb666ff8533cc3333ULL
,
102 0x5cc6f23f63916363ULL
,
103 0x12040a1002080202ULL
,
104 0x93493839aa92aaaaULL
,
105 0xdee2a8af71d97171ULL
,
106 0xc68dcf0ec807c8c8ULL
,
107 0xd1327dc819641919ULL
,
108 0x3b92707249394949ULL
,
109 0x5faf9a86d943d9d9ULL
,
110 0x31f91dc3f2eff2f2ULL
,
111 0xa8db484be3abe3e3ULL
,
112 0xb9b62ae25b715b5bULL
,
113 0xbc0d9234881a8888ULL
,
114 0x3e29c8a49a529a9aULL
,
115 0x0b4cbe2d26982626ULL
,
116 0xbf64fa8d32c83232ULL
,
117 0x597d4ae9b0fab0b0ULL
,
118 0xf2cf6a1be983e9e9ULL
,
119 0x771e33780f3c0f0fULL
,
120 0x33b7a6e6d573d5d5ULL
,
121 0xf41dba74803a8080ULL
,
122 0x27617c99bec2bebeULL
,
123 0xeb87de26cd13cdcdULL
,
124 0x8968e4bd34d03434ULL
,
125 0x3290757a483d4848ULL
,
126 0x54e324abffdbffffULL
,
127 0x8df48ff77af57a7aULL
,
128 0x643deaf4907a9090ULL
,
129 0x9dbe3ec25f615f5fULL
,
130 0x3d40a01d20802020ULL
,
131 0x0fd0d56768bd6868ULL
,
132 0xca3472d01a681a1aULL
,
133 0xb7412c19ae82aeaeULL
,
134 0x7d755ec9b4eab4b4ULL
,
135 0xcea8199a544d5454ULL
,
136 0x7f3be5ec93769393ULL
,
137 0x2f44aa0d22882222ULL
,
138 0x63c8e907648d6464ULL
,
139 0x2aff12dbf1e3f1f1ULL
,
140 0xcce6a2bf73d17373ULL
,
141 0x82245a9012481212ULL
,
142 0x7a805d3a401d4040ULL
,
143 0x4810284008200808ULL
,
144 0x959be856c32bc3c3ULL
,
145 0xdfc57b33ec97ececULL
,
146 0x4dab9096db4bdbdbULL
,
147 0xc05f1f61a1bea1a1ULL
,
148 0x9107831c8d0e8d8dULL
,
149 0xc87ac9f53df43d3dULL
,
150 0x5b33f1cc97669797ULL
,
151 0x0000000000000000ULL
,
152 0xf983d436cf1bcfcfULL
,
153 0x6e5687452bac2b2bULL
,
154 0xe1ecb39776c57676ULL
,
155 0xe619b06482328282ULL
,
156 0x28b1a9fed67fd6d6ULL
,
157 0xc33677d81b6c1b1bULL
,
158 0x74775bc1b5eeb5b5ULL
,
159 0xbe432911af86afafULL
,
160 0x1dd4df776ab56a6aULL
,
161 0xeaa00dba505d5050ULL
,
162 0x578a4c1245094545ULL
,
163 0x38fb18cbf3ebf3f3ULL
,
164 0xad60f09d30c03030ULL
,
165 0xc4c3742bef9befefULL
,
166 0xda7ec3e53ffc3f3fULL
,
167 0xc7aa1c9255495555ULL
,
168 0xdb591079a2b2a2a2ULL
,
169 0xe9c96503ea8feaeaULL
,
170 0x6acaec0f65896565ULL
,
171 0x036968b9bad2babaULL
,
172 0x4a5e93652fbc2f2fULL
,
173 0x8e9de74ec027c0c0ULL
,
174 0x60a181bede5fdedeULL
,
175 0xfc386ce01c701c1cULL
,
176 0x46e72ebbfdd3fdfdULL
,
177 0x1f9a64524d294d4dULL
,
178 0x7639e0e492729292ULL
,
179 0xfaeabc8f75c97575ULL
,
180 0x360c1e3006180606ULL
,
181 0xae0998248a128a8aULL
,
182 0x4b7940f9b2f2b2b2ULL
,
183 0x85d15963e6bfe6e6ULL
,
184 0x7e1c36700e380e0eULL
,
185 0xe73e63f81f7c1f1fULL
,
186 0x55c4f73762956262ULL
,
187 0x3ab5a3eed477d4d4ULL
,
188 0x814d3229a89aa8a8ULL
,
189 0x5231f4c496629696ULL
,
190 0x62ef3a9bf9c3f9f9ULL
,
191 0xa397f666c533c5c5ULL
,
192 0x104ab13525942525ULL
,
193 0xabb220f259795959ULL
,
194 0xd015ae54842a8484ULL
,
195 0xc5e4a7b772d57272ULL
,
196 0xec72ddd539e43939ULL
,
197 0x1698615a4c2d4c4cULL
,
198 0x94bc3bca5e655e5eULL
,
199 0x9ff085e778fd7878ULL
,
200 0xe570d8dd38e03838ULL
,
201 0x980586148c0a8c8cULL
,
202 0x17bfb2c6d163d1d1ULL
,
203 0xe4570b41a5aea5a5ULL
,
204 0xa1d94d43e2afe2e2ULL
,
205 0x4ec2f82f61996161ULL
,
206 0x427b45f1b3f6b3b3ULL
,
207 0x3442a51521842121ULL
,
208 0x0825d6949c4a9c9cULL
,
209 0xee3c66f01e781e1eULL
,
210 0x6186522243114343ULL
,
211 0xb193fc76c73bc7c7ULL
,
212 0x4fe52bb3fcd7fcfcULL
,
213 0x2408142004100404ULL
,
214 0xe3a208b251595151ULL
,
215 0x252fc7bc995e9999ULL
,
216 0x22dac44f6da96d6dULL
,
217 0x651a39680d340d0dULL
,
218 0x79e93583facffafaULL
,
219 0x69a384b6df5bdfdfULL
,
220 0xa9fc9bd77ee57e7eULL
,
221 0x1948b43d24902424ULL
,
222 0xfe76d7c53bec3b3bULL
,
223 0x9a4b3d31ab96ababULL
,
224 0xf081d13ece1fceceULL
,
225 0x9922558811441111ULL
,
226 0x8303890c8f068f8fULL
,
227 0x049c6b4a4e254e4eULL
,
228 0x667351d1b7e6b7b7ULL
,
229 0xe0cb600beb8bebebULL
,
230 0xc178ccfd3cf03c3cULL
,
231 0xfd1fbf7c813e8181ULL
,
232 0x4035fed4946a9494ULL
,
233 0x1cf30cebf7fbf7f7ULL
,
234 0x186f67a1b9deb9b9ULL
,
235 0x8b265f98134c1313ULL
,
236 0x51589c7d2cb02c2cULL
,
237 0x05bbb8d6d36bd3d3ULL
,
238 0x8cd35c6be7bbe7e7ULL
,
239 0x39dccb576ea56e6eULL
,
240 0xaa95f36ec437c4c4ULL
,
241 0x1b060f18030c0303ULL
,
242 0xdcac138a56455656ULL
,
243 0x5e88491a440d4444ULL
,
244 0xa0fe9edf7fe17f7fULL
,
245 0x884f3721a99ea9a9ULL
,
246 0x6754824d2aa82a2aULL
,
247 0x0a6b6db1bbd6bbbbULL
,
248 0x879fe246c123c1c1ULL
,
249 0xf1a602a253515353ULL
,
250 0x72a58baedc57dcdcULL
,
251 0x531627580b2c0b0bULL
,
252 0x0127d39c9d4e9d9dULL
,
253 0x2bd8c1476cad6c6cULL
,
254 0xa462f59531c43131ULL
,
255 0xf3e8b98774cd7474ULL
,
256 0x15f109e3f6fff6f6ULL
,
257 0x4c8c430a46054646ULL
,
258 0xa5452609ac8aacacULL
,
259 0xb50f973c891e8989ULL
,
260 0xb42844a014501414ULL
,
261 0xbadf425be1a3e1e1ULL
,
262 0xa62c4eb016581616ULL
,
263 0xf774d2cd3ae83a3aULL
,
264 0x06d2d06f69b96969ULL
,
265 0x41122d4809240909ULL
,
266 0xd7e0ada770dd7070ULL
,
267 0x6f7154d9b6e2b6b6ULL
,
268 0x1ebdb7ced067d0d0ULL
,
269 0xd6c77e3bed93ededULL
,
270 0xe285db2ecc17ccccULL
,
271 0x6884572a42154242ULL
,
272 0x2c2dc2b4985a9898ULL
,
273 0xed550e49a4aaa4a4ULL
,
274 0x7550885d28a02828ULL
,
275 0x86b831da5c6d5c5cULL
,
276 0x6bed3f93f8c7f8f8ULL
,
277 0xc211a44486228686ULL
,
280 static const uint64_t T1
[256] = {
281 0x3078c018601818d8ULL
,
282 0x46af05238c232326ULL
,
283 0x91f97ec63fc6c6b8ULL
,
284 0xcd6f13e887e8e8fbULL
,
285 0x13a14c87268787cbULL
,
286 0x6d62a9b8dab8b811ULL
,
287 0x0205080104010109ULL
,
288 0x9e6e424f214f4f0dULL
,
289 0x6ceead36d836369bULL
,
290 0x510459a6a2a6a6ffULL
,
291 0xb9bdded26fd2d20cULL
,
292 0xf706fbf5f3f5f50eULL
,
293 0xf280ef79f9797996ULL
,
294 0xdece5f6fa16f6f30ULL
,
295 0x3feffc917e91916dULL
,
296 0xa407aa52555252f8ULL
,
297 0xc0fd27609d606047ULL
,
298 0x657689bccabcbc35ULL
,
299 0x2bcdac9b569b9b37ULL
,
300 0x018c048e028e8e8aULL
,
301 0x5b1571a3b6a3a3d2ULL
,
302 0x183c600c300c0c6cULL
,
303 0xf68aff7bf17b7b84ULL
,
304 0x6ae1b535d4353580ULL
,
305 0x3a69e81d741d1df5ULL
,
306 0xdd4753e0a7e0e0b3ULL
,
307 0xb3acf6d77bd7d721ULL
,
308 0x99ed5ec22fc2c29cULL
,
309 0x5c966d2eb82e2e43ULL
,
310 0x967a624b314b4b29ULL
,
311 0xe121a3fedffefe5dULL
,
312 0xae168257415757d5ULL
,
313 0x2a41a815541515bdULL
,
314 0xeeb69f77c17777e8ULL
,
315 0x6eeba537dc373792ULL
,
316 0xd7567be5b3e5e59eULL
,
317 0x23d98c9f469f9f13ULL
,
318 0xfd17d3f0e7f0f023ULL
,
319 0x947f6a4a354a4a20ULL
,
320 0xa9959eda4fdada44ULL
,
321 0xb025fa587d5858a2ULL
,
322 0x8fca06c903c9c9cfULL
,
323 0x528d5529a429297cULL
,
324 0x1422500a280a0a5aULL
,
325 0x7f4fe1b1feb1b150ULL
,
326 0x5d1a69a0baa0a0c9ULL
,
327 0xd6da7f6bb16b6b14ULL
,
328 0x17ab5c852e8585d9ULL
,
329 0x677381bdcebdbd3cULL
,
330 0xba34d25d695d5d8fULL
,
331 0x2050801040101090ULL
,
332 0xf503f3f4f7f4f407ULL
,
333 0x8bc016cb0bcbcbddULL
,
334 0x7cc6ed3ef83e3ed3ULL
,
335 0x0a1128051405052dULL
,
336 0xcee61f6781676778ULL
,
337 0xd55373e4b7e4e497ULL
,
338 0x4ebb25279c272702ULL
,
339 0x8258324119414173ULL
,
340 0x0b9d2c8b168b8ba7ULL
,
341 0x530151a7a6a7a7f6ULL
,
342 0xfa94cf7de97d7db2ULL
,
343 0x37fbdc956e959549ULL
,
344 0xad9f8ed847d8d856ULL
,
345 0xeb308bfbcbfbfb70ULL
,
346 0xc17123ee9feeeecdULL
,
347 0xf891c77ced7c7cbbULL
,
348 0xcce3176685666671ULL
,
349 0xa78ea6dd53dddd7bULL
,
350 0x2e4bb8175c1717afULL
,
351 0x8e46024701474745ULL
,
352 0x21dc849e429e9e1aULL
,
353 0x89c51eca0fcacad4ULL
,
354 0x5a99752db42d2d58ULL
,
355 0x637991bfc6bfbf2eULL
,
356 0x0e1b38071c07073fULL
,
357 0x472301ad8eadadacULL
,
358 0xb42fea5a755a5ab0ULL
,
359 0x1bb56c83368383efULL
,
360 0x66ff8533cc3333b6ULL
,
361 0xc6f23f639163635cULL
,
362 0x040a100208020212ULL
,
363 0x493839aa92aaaa93ULL
,
364 0xe2a8af71d97171deULL
,
365 0x8dcf0ec807c8c8c6ULL
,
366 0x327dc819641919d1ULL
,
367 0x927072493949493bULL
,
368 0xaf9a86d943d9d95fULL
,
369 0xf91dc3f2eff2f231ULL
,
370 0xdb484be3abe3e3a8ULL
,
371 0xb62ae25b715b5bb9ULL
,
372 0x0d9234881a8888bcULL
,
373 0x29c8a49a529a9a3eULL
,
374 0x4cbe2d269826260bULL
,
375 0x64fa8d32c83232bfULL
,
376 0x7d4ae9b0fab0b059ULL
,
377 0xcf6a1be983e9e9f2ULL
,
378 0x1e33780f3c0f0f77ULL
,
379 0xb7a6e6d573d5d533ULL
,
380 0x1dba74803a8080f4ULL
,
381 0x617c99bec2bebe27ULL
,
382 0x87de26cd13cdcdebULL
,
383 0x68e4bd34d0343489ULL
,
384 0x90757a483d484832ULL
,
385 0xe324abffdbffff54ULL
,
386 0xf48ff77af57a7a8dULL
,
387 0x3deaf4907a909064ULL
,
388 0xbe3ec25f615f5f9dULL
,
389 0x40a01d208020203dULL
,
390 0xd0d56768bd68680fULL
,
391 0x3472d01a681a1acaULL
,
392 0x412c19ae82aeaeb7ULL
,
393 0x755ec9b4eab4b47dULL
,
394 0xa8199a544d5454ceULL
,
395 0x3be5ec937693937fULL
,
396 0x44aa0d228822222fULL
,
397 0xc8e907648d646463ULL
,
398 0xff12dbf1e3f1f12aULL
,
399 0xe6a2bf73d17373ccULL
,
400 0x245a901248121282ULL
,
401 0x805d3a401d40407aULL
,
402 0x1028400820080848ULL
,
403 0x9be856c32bc3c395ULL
,
404 0xc57b33ec97ececdfULL
,
405 0xab9096db4bdbdb4dULL
,
406 0x5f1f61a1bea1a1c0ULL
,
407 0x07831c8d0e8d8d91ULL
,
408 0x7ac9f53df43d3dc8ULL
,
409 0x33f1cc976697975bULL
,
410 0x0000000000000000ULL
,
411 0x83d436cf1bcfcff9ULL
,
412 0x5687452bac2b2b6eULL
,
413 0xecb39776c57676e1ULL
,
414 0x19b06482328282e6ULL
,
415 0xb1a9fed67fd6d628ULL
,
416 0x3677d81b6c1b1bc3ULL
,
417 0x775bc1b5eeb5b574ULL
,
418 0x432911af86afafbeULL
,
419 0xd4df776ab56a6a1dULL
,
420 0xa00dba505d5050eaULL
,
421 0x8a4c124509454557ULL
,
422 0xfb18cbf3ebf3f338ULL
,
423 0x60f09d30c03030adULL
,
424 0xc3742bef9befefc4ULL
,
425 0x7ec3e53ffc3f3fdaULL
,
426 0xaa1c9255495555c7ULL
,
427 0x591079a2b2a2a2dbULL
,
428 0xc96503ea8feaeae9ULL
,
429 0xcaec0f658965656aULL
,
430 0x6968b9bad2baba03ULL
,
431 0x5e93652fbc2f2f4aULL
,
432 0x9de74ec027c0c08eULL
,
433 0xa181bede5fdede60ULL
,
434 0x386ce01c701c1cfcULL
,
435 0xe72ebbfdd3fdfd46ULL
,
436 0x9a64524d294d4d1fULL
,
437 0x39e0e49272929276ULL
,
438 0xeabc8f75c97575faULL
,
439 0x0c1e300618060636ULL
,
440 0x0998248a128a8aaeULL
,
441 0x7940f9b2f2b2b24bULL
,
442 0xd15963e6bfe6e685ULL
,
443 0x1c36700e380e0e7eULL
,
444 0x3e63f81f7c1f1fe7ULL
,
445 0xc4f7376295626255ULL
,
446 0xb5a3eed477d4d43aULL
,
447 0x4d3229a89aa8a881ULL
,
448 0x31f4c49662969652ULL
,
449 0xef3a9bf9c3f9f962ULL
,
450 0x97f666c533c5c5a3ULL
,
451 0x4ab1352594252510ULL
,
452 0xb220f259795959abULL
,
453 0x15ae54842a8484d0ULL
,
454 0xe4a7b772d57272c5ULL
,
455 0x72ddd539e43939ecULL
,
456 0x98615a4c2d4c4c16ULL
,
457 0xbc3bca5e655e5e94ULL
,
458 0xf085e778fd78789fULL
,
459 0x70d8dd38e03838e5ULL
,
460 0x0586148c0a8c8c98ULL
,
461 0xbfb2c6d163d1d117ULL
,
462 0x570b41a5aea5a5e4ULL
,
463 0xd94d43e2afe2e2a1ULL
,
464 0xc2f82f619961614eULL
,
465 0x7b45f1b3f6b3b342ULL
,
466 0x42a5152184212134ULL
,
467 0x25d6949c4a9c9c08ULL
,
468 0x3c66f01e781e1eeeULL
,
469 0x8652224311434361ULL
,
470 0x93fc76c73bc7c7b1ULL
,
471 0xe52bb3fcd7fcfc4fULL
,
472 0x0814200410040424ULL
,
473 0xa208b251595151e3ULL
,
474 0x2fc7bc995e999925ULL
,
475 0xdac44f6da96d6d22ULL
,
476 0x1a39680d340d0d65ULL
,
477 0xe93583facffafa79ULL
,
478 0xa384b6df5bdfdf69ULL
,
479 0xfc9bd77ee57e7ea9ULL
,
480 0x48b43d2490242419ULL
,
481 0x76d7c53bec3b3bfeULL
,
482 0x4b3d31ab96abab9aULL
,
483 0x81d13ece1fcecef0ULL
,
484 0x2255881144111199ULL
,
485 0x03890c8f068f8f83ULL
,
486 0x9c6b4a4e254e4e04ULL
,
487 0x7351d1b7e6b7b766ULL
,
488 0xcb600beb8bebebe0ULL
,
489 0x78ccfd3cf03c3cc1ULL
,
490 0x1fbf7c813e8181fdULL
,
491 0x35fed4946a949440ULL
,
492 0xf30cebf7fbf7f71cULL
,
493 0x6f67a1b9deb9b918ULL
,
494 0x265f98134c13138bULL
,
495 0x589c7d2cb02c2c51ULL
,
496 0xbbb8d6d36bd3d305ULL
,
497 0xd35c6be7bbe7e78cULL
,
498 0xdccb576ea56e6e39ULL
,
499 0x95f36ec437c4c4aaULL
,
500 0x060f18030c03031bULL
,
501 0xac138a56455656dcULL
,
502 0x88491a440d44445eULL
,
503 0xfe9edf7fe17f7fa0ULL
,
504 0x4f3721a99ea9a988ULL
,
505 0x54824d2aa82a2a67ULL
,
506 0x6b6db1bbd6bbbb0aULL
,
507 0x9fe246c123c1c187ULL
,
508 0xa602a253515353f1ULL
,
509 0xa58baedc57dcdc72ULL
,
510 0x1627580b2c0b0b53ULL
,
511 0x27d39c9d4e9d9d01ULL
,
512 0xd8c1476cad6c6c2bULL
,
513 0x62f59531c43131a4ULL
,
514 0xe8b98774cd7474f3ULL
,
515 0xf109e3f6fff6f615ULL
,
516 0x8c430a460546464cULL
,
517 0x452609ac8aacaca5ULL
,
518 0x0f973c891e8989b5ULL
,
519 0x2844a014501414b4ULL
,
520 0xdf425be1a3e1e1baULL
,
521 0x2c4eb016581616a6ULL
,
522 0x74d2cd3ae83a3af7ULL
,
523 0xd2d06f69b9696906ULL
,
524 0x122d480924090941ULL
,
525 0xe0ada770dd7070d7ULL
,
526 0x7154d9b6e2b6b66fULL
,
527 0xbdb7ced067d0d01eULL
,
528 0xc77e3bed93ededd6ULL
,
529 0x85db2ecc17cccce2ULL
,
530 0x84572a4215424268ULL
,
531 0x2dc2b4985a98982cULL
,
532 0x550e49a4aaa4a4edULL
,
533 0x50885d28a0282875ULL
,
534 0xb831da5c6d5c5c86ULL
,
535 0xed3f93f8c7f8f86bULL
,
536 0x11a44486228686c2ULL
,
539 static const uint64_t T2
[256] = {
540 0x78c018601818d830ULL
,
541 0xaf05238c23232646ULL
,
542 0xf97ec63fc6c6b891ULL
,
543 0x6f13e887e8e8fbcdULL
,
544 0xa14c87268787cb13ULL
,
545 0x62a9b8dab8b8116dULL
,
546 0x0508010401010902ULL
,
547 0x6e424f214f4f0d9eULL
,
548 0xeead36d836369b6cULL
,
549 0x0459a6a2a6a6ff51ULL
,
550 0xbdded26fd2d20cb9ULL
,
551 0x06fbf5f3f5f50ef7ULL
,
552 0x80ef79f9797996f2ULL
,
553 0xce5f6fa16f6f30deULL
,
554 0xeffc917e91916d3fULL
,
555 0x07aa52555252f8a4ULL
,
556 0xfd27609d606047c0ULL
,
557 0x7689bccabcbc3565ULL
,
558 0xcdac9b569b9b372bULL
,
559 0x8c048e028e8e8a01ULL
,
560 0x1571a3b6a3a3d25bULL
,
561 0x3c600c300c0c6c18ULL
,
562 0x8aff7bf17b7b84f6ULL
,
563 0xe1b535d43535806aULL
,
564 0x69e81d741d1df53aULL
,
565 0x4753e0a7e0e0b3ddULL
,
566 0xacf6d77bd7d721b3ULL
,
567 0xed5ec22fc2c29c99ULL
,
568 0x966d2eb82e2e435cULL
,
569 0x7a624b314b4b2996ULL
,
570 0x21a3fedffefe5de1ULL
,
571 0x168257415757d5aeULL
,
572 0x41a815541515bd2aULL
,
573 0xb69f77c17777e8eeULL
,
574 0xeba537dc3737926eULL
,
575 0x567be5b3e5e59ed7ULL
,
576 0xd98c9f469f9f1323ULL
,
577 0x17d3f0e7f0f023fdULL
,
578 0x7f6a4a354a4a2094ULL
,
579 0x959eda4fdada44a9ULL
,
580 0x25fa587d5858a2b0ULL
,
581 0xca06c903c9c9cf8fULL
,
582 0x8d5529a429297c52ULL
,
583 0x22500a280a0a5a14ULL
,
584 0x4fe1b1feb1b1507fULL
,
585 0x1a69a0baa0a0c95dULL
,
586 0xda7f6bb16b6b14d6ULL
,
587 0xab5c852e8585d917ULL
,
588 0x7381bdcebdbd3c67ULL
,
589 0x34d25d695d5d8fbaULL
,
590 0x5080104010109020ULL
,
591 0x03f3f4f7f4f407f5ULL
,
592 0xc016cb0bcbcbdd8bULL
,
593 0xc6ed3ef83e3ed37cULL
,
594 0x1128051405052d0aULL
,
595 0xe61f6781676778ceULL
,
596 0x5373e4b7e4e497d5ULL
,
597 0xbb25279c2727024eULL
,
598 0x5832411941417382ULL
,
599 0x9d2c8b168b8ba70bULL
,
600 0x0151a7a6a7a7f653ULL
,
601 0x94cf7de97d7db2faULL
,
602 0xfbdc956e95954937ULL
,
603 0x9f8ed847d8d856adULL
,
604 0x308bfbcbfbfb70ebULL
,
605 0x7123ee9feeeecdc1ULL
,
606 0x91c77ced7c7cbbf8ULL
,
607 0xe3176685666671ccULL
,
608 0x8ea6dd53dddd7ba7ULL
,
609 0x4bb8175c1717af2eULL
,
610 0x460247014747458eULL
,
611 0xdc849e429e9e1a21ULL
,
612 0xc51eca0fcacad489ULL
,
613 0x99752db42d2d585aULL
,
614 0x7991bfc6bfbf2e63ULL
,
615 0x1b38071c07073f0eULL
,
616 0x2301ad8eadadac47ULL
,
617 0x2fea5a755a5ab0b4ULL
,
618 0xb56c83368383ef1bULL
,
619 0xff8533cc3333b666ULL
,
620 0xf23f639163635cc6ULL
,
621 0x0a10020802021204ULL
,
622 0x3839aa92aaaa9349ULL
,
623 0xa8af71d97171dee2ULL
,
624 0xcf0ec807c8c8c68dULL
,
625 0x7dc819641919d132ULL
,
626 0x7072493949493b92ULL
,
627 0x9a86d943d9d95fafULL
,
628 0x1dc3f2eff2f231f9ULL
,
629 0x484be3abe3e3a8dbULL
,
630 0x2ae25b715b5bb9b6ULL
,
631 0x9234881a8888bc0dULL
,
632 0xc8a49a529a9a3e29ULL
,
633 0xbe2d269826260b4cULL
,
634 0xfa8d32c83232bf64ULL
,
635 0x4ae9b0fab0b0597dULL
,
636 0x6a1be983e9e9f2cfULL
,
637 0x33780f3c0f0f771eULL
,
638 0xa6e6d573d5d533b7ULL
,
639 0xba74803a8080f41dULL
,
640 0x7c99bec2bebe2761ULL
,
641 0xde26cd13cdcdeb87ULL
,
642 0xe4bd34d034348968ULL
,
643 0x757a483d48483290ULL
,
644 0x24abffdbffff54e3ULL
,
645 0x8ff77af57a7a8df4ULL
,
646 0xeaf4907a9090643dULL
,
647 0x3ec25f615f5f9dbeULL
,
648 0xa01d208020203d40ULL
,
649 0xd56768bd68680fd0ULL
,
650 0x72d01a681a1aca34ULL
,
651 0x2c19ae82aeaeb741ULL
,
652 0x5ec9b4eab4b47d75ULL
,
653 0x199a544d5454cea8ULL
,
654 0xe5ec937693937f3bULL
,
655 0xaa0d228822222f44ULL
,
656 0xe907648d646463c8ULL
,
657 0x12dbf1e3f1f12affULL
,
658 0xa2bf73d17373cce6ULL
,
659 0x5a90124812128224ULL
,
660 0x5d3a401d40407a80ULL
,
661 0x2840082008084810ULL
,
662 0xe856c32bc3c3959bULL
,
663 0x7b33ec97ececdfc5ULL
,
664 0x9096db4bdbdb4dabULL
,
665 0x1f61a1bea1a1c05fULL
,
666 0x831c8d0e8d8d9107ULL
,
667 0xc9f53df43d3dc87aULL
,
668 0xf1cc976697975b33ULL
,
669 0x0000000000000000ULL
,
670 0xd436cf1bcfcff983ULL
,
671 0x87452bac2b2b6e56ULL
,
672 0xb39776c57676e1ecULL
,
673 0xb06482328282e619ULL
,
674 0xa9fed67fd6d628b1ULL
,
675 0x77d81b6c1b1bc336ULL
,
676 0x5bc1b5eeb5b57477ULL
,
677 0x2911af86afafbe43ULL
,
678 0xdf776ab56a6a1dd4ULL
,
679 0x0dba505d5050eaa0ULL
,
680 0x4c1245094545578aULL
,
681 0x18cbf3ebf3f338fbULL
,
682 0xf09d30c03030ad60ULL
,
683 0x742bef9befefc4c3ULL
,
684 0xc3e53ffc3f3fda7eULL
,
685 0x1c9255495555c7aaULL
,
686 0x1079a2b2a2a2db59ULL
,
687 0x6503ea8feaeae9c9ULL
,
688 0xec0f658965656acaULL
,
689 0x68b9bad2baba0369ULL
,
690 0x93652fbc2f2f4a5eULL
,
691 0xe74ec027c0c08e9dULL
,
692 0x81bede5fdede60a1ULL
,
693 0x6ce01c701c1cfc38ULL
,
694 0x2ebbfdd3fdfd46e7ULL
,
695 0x64524d294d4d1f9aULL
,
696 0xe0e4927292927639ULL
,
697 0xbc8f75c97575faeaULL
,
698 0x1e3006180606360cULL
,
699 0x98248a128a8aae09ULL
,
700 0x40f9b2f2b2b24b79ULL
,
701 0x5963e6bfe6e685d1ULL
,
702 0x36700e380e0e7e1cULL
,
703 0x63f81f7c1f1fe73eULL
,
704 0xf7376295626255c4ULL
,
705 0xa3eed477d4d43ab5ULL
,
706 0x3229a89aa8a8814dULL
,
707 0xf4c4966296965231ULL
,
708 0x3a9bf9c3f9f962efULL
,
709 0xf666c533c5c5a397ULL
,
710 0xb13525942525104aULL
,
711 0x20f259795959abb2ULL
,
712 0xae54842a8484d015ULL
,
713 0xa7b772d57272c5e4ULL
,
714 0xddd539e43939ec72ULL
,
715 0x615a4c2d4c4c1698ULL
,
716 0x3bca5e655e5e94bcULL
,
717 0x85e778fd78789ff0ULL
,
718 0xd8dd38e03838e570ULL
,
719 0x86148c0a8c8c9805ULL
,
720 0xb2c6d163d1d117bfULL
,
721 0x0b41a5aea5a5e457ULL
,
722 0x4d43e2afe2e2a1d9ULL
,
723 0xf82f619961614ec2ULL
,
724 0x45f1b3f6b3b3427bULL
,
725 0xa515218421213442ULL
,
726 0xd6949c4a9c9c0825ULL
,
727 0x66f01e781e1eee3cULL
,
728 0x5222431143436186ULL
,
729 0xfc76c73bc7c7b193ULL
,
730 0x2bb3fcd7fcfc4fe5ULL
,
731 0x1420041004042408ULL
,
732 0x08b251595151e3a2ULL
,
733 0xc7bc995e9999252fULL
,
734 0xc44f6da96d6d22daULL
,
735 0x39680d340d0d651aULL
,
736 0x3583facffafa79e9ULL
,
737 0x84b6df5bdfdf69a3ULL
,
738 0x9bd77ee57e7ea9fcULL
,
739 0xb43d249024241948ULL
,
740 0xd7c53bec3b3bfe76ULL
,
741 0x3d31ab96abab9a4bULL
,
742 0xd13ece1fcecef081ULL
,
743 0x5588114411119922ULL
,
744 0x890c8f068f8f8303ULL
,
745 0x6b4a4e254e4e049cULL
,
746 0x51d1b7e6b7b76673ULL
,
747 0x600beb8bebebe0cbULL
,
748 0xccfd3cf03c3cc178ULL
,
749 0xbf7c813e8181fd1fULL
,
750 0xfed4946a94944035ULL
,
751 0x0cebf7fbf7f71cf3ULL
,
752 0x67a1b9deb9b9186fULL
,
753 0x5f98134c13138b26ULL
,
754 0x9c7d2cb02c2c5158ULL
,
755 0xb8d6d36bd3d305bbULL
,
756 0x5c6be7bbe7e78cd3ULL
,
757 0xcb576ea56e6e39dcULL
,
758 0xf36ec437c4c4aa95ULL
,
759 0x0f18030c03031b06ULL
,
760 0x138a56455656dcacULL
,
761 0x491a440d44445e88ULL
,
762 0x9edf7fe17f7fa0feULL
,
763 0x3721a99ea9a9884fULL
,
764 0x824d2aa82a2a6754ULL
,
765 0x6db1bbd6bbbb0a6bULL
,
766 0xe246c123c1c1879fULL
,
767 0x02a253515353f1a6ULL
,
768 0x8baedc57dcdc72a5ULL
,
769 0x27580b2c0b0b5316ULL
,
770 0xd39c9d4e9d9d0127ULL
,
771 0xc1476cad6c6c2bd8ULL
,
772 0xf59531c43131a462ULL
,
773 0xb98774cd7474f3e8ULL
,
774 0x09e3f6fff6f615f1ULL
,
775 0x430a460546464c8cULL
,
776 0x2609ac8aacaca545ULL
,
777 0x973c891e8989b50fULL
,
778 0x44a014501414b428ULL
,
779 0x425be1a3e1e1badfULL
,
780 0x4eb016581616a62cULL
,
781 0xd2cd3ae83a3af774ULL
,
782 0xd06f69b9696906d2ULL
,
783 0x2d48092409094112ULL
,
784 0xada770dd7070d7e0ULL
,
785 0x54d9b6e2b6b66f71ULL
,
786 0xb7ced067d0d01ebdULL
,
787 0x7e3bed93ededd6c7ULL
,
788 0xdb2ecc17cccce285ULL
,
789 0x572a421542426884ULL
,
790 0xc2b4985a98982c2dULL
,
791 0x0e49a4aaa4a4ed55ULL
,
792 0x885d28a028287550ULL
,
793 0x31da5c6d5c5c86b8ULL
,
794 0x3f93f8c7f8f86bedULL
,
795 0xa44486228686c211ULL
,
798 static const uint64_t T3
[256] = {
799 0xc018601818d83078ULL
,
800 0x05238c23232646afULL
,
801 0x7ec63fc6c6b891f9ULL
,
802 0x13e887e8e8fbcd6fULL
,
803 0x4c87268787cb13a1ULL
,
804 0xa9b8dab8b8116d62ULL
,
805 0x0801040101090205ULL
,
806 0x424f214f4f0d9e6eULL
,
807 0xad36d836369b6ceeULL
,
808 0x59a6a2a6a6ff5104ULL
,
809 0xded26fd2d20cb9bdULL
,
810 0xfbf5f3f5f50ef706ULL
,
811 0xef79f9797996f280ULL
,
812 0x5f6fa16f6f30deceULL
,
813 0xfc917e91916d3fefULL
,
814 0xaa52555252f8a407ULL
,
815 0x27609d606047c0fdULL
,
816 0x89bccabcbc356576ULL
,
817 0xac9b569b9b372bcdULL
,
818 0x048e028e8e8a018cULL
,
819 0x71a3b6a3a3d25b15ULL
,
820 0x600c300c0c6c183cULL
,
821 0xff7bf17b7b84f68aULL
,
822 0xb535d43535806ae1ULL
,
823 0xe81d741d1df53a69ULL
,
824 0x53e0a7e0e0b3dd47ULL
,
825 0xf6d77bd7d721b3acULL
,
826 0x5ec22fc2c29c99edULL
,
827 0x6d2eb82e2e435c96ULL
,
828 0x624b314b4b29967aULL
,
829 0xa3fedffefe5de121ULL
,
830 0x8257415757d5ae16ULL
,
831 0xa815541515bd2a41ULL
,
832 0x9f77c17777e8eeb6ULL
,
833 0xa537dc3737926eebULL
,
834 0x7be5b3e5e59ed756ULL
,
835 0x8c9f469f9f1323d9ULL
,
836 0xd3f0e7f0f023fd17ULL
,
837 0x6a4a354a4a20947fULL
,
838 0x9eda4fdada44a995ULL
,
839 0xfa587d5858a2b025ULL
,
840 0x06c903c9c9cf8fcaULL
,
841 0x5529a429297c528dULL
,
842 0x500a280a0a5a1422ULL
,
843 0xe1b1feb1b1507f4fULL
,
844 0x69a0baa0a0c95d1aULL
,
845 0x7f6bb16b6b14d6daULL
,
846 0x5c852e8585d917abULL
,
847 0x81bdcebdbd3c6773ULL
,
848 0xd25d695d5d8fba34ULL
,
849 0x8010401010902050ULL
,
850 0xf3f4f7f4f407f503ULL
,
851 0x16cb0bcbcbdd8bc0ULL
,
852 0xed3ef83e3ed37cc6ULL
,
853 0x28051405052d0a11ULL
,
854 0x1f6781676778cee6ULL
,
855 0x73e4b7e4e497d553ULL
,
856 0x25279c2727024ebbULL
,
857 0x3241194141738258ULL
,
858 0x2c8b168b8ba70b9dULL
,
859 0x51a7a6a7a7f65301ULL
,
860 0xcf7de97d7db2fa94ULL
,
861 0xdc956e95954937fbULL
,
862 0x8ed847d8d856ad9fULL
,
863 0x8bfbcbfbfb70eb30ULL
,
864 0x23ee9feeeecdc171ULL
,
865 0xc77ced7c7cbbf891ULL
,
866 0x176685666671cce3ULL
,
867 0xa6dd53dddd7ba78eULL
,
868 0xb8175c1717af2e4bULL
,
869 0x0247014747458e46ULL
,
870 0x849e429e9e1a21dcULL
,
871 0x1eca0fcacad489c5ULL
,
872 0x752db42d2d585a99ULL
,
873 0x91bfc6bfbf2e6379ULL
,
874 0x38071c07073f0e1bULL
,
875 0x01ad8eadadac4723ULL
,
876 0xea5a755a5ab0b42fULL
,
877 0x6c83368383ef1bb5ULL
,
878 0x8533cc3333b666ffULL
,
879 0x3f639163635cc6f2ULL
,
880 0x100208020212040aULL
,
881 0x39aa92aaaa934938ULL
,
882 0xaf71d97171dee2a8ULL
,
883 0x0ec807c8c8c68dcfULL
,
884 0xc819641919d1327dULL
,
885 0x72493949493b9270ULL
,
886 0x86d943d9d95faf9aULL
,
887 0xc3f2eff2f231f91dULL
,
888 0x4be3abe3e3a8db48ULL
,
889 0xe25b715b5bb9b62aULL
,
890 0x34881a8888bc0d92ULL
,
891 0xa49a529a9a3e29c8ULL
,
892 0x2d269826260b4cbeULL
,
893 0x8d32c83232bf64faULL
,
894 0xe9b0fab0b0597d4aULL
,
895 0x1be983e9e9f2cf6aULL
,
896 0x780f3c0f0f771e33ULL
,
897 0xe6d573d5d533b7a6ULL
,
898 0x74803a8080f41dbaULL
,
899 0x99bec2bebe27617cULL
,
900 0x26cd13cdcdeb87deULL
,
901 0xbd34d034348968e4ULL
,
902 0x7a483d4848329075ULL
,
903 0xabffdbffff54e324ULL
,
904 0xf77af57a7a8df48fULL
,
905 0xf4907a9090643deaULL
,
906 0xc25f615f5f9dbe3eULL
,
907 0x1d208020203d40a0ULL
,
908 0x6768bd68680fd0d5ULL
,
909 0xd01a681a1aca3472ULL
,
910 0x19ae82aeaeb7412cULL
,
911 0xc9b4eab4b47d755eULL
,
912 0x9a544d5454cea819ULL
,
913 0xec937693937f3be5ULL
,
914 0x0d228822222f44aaULL
,
915 0x07648d646463c8e9ULL
,
916 0xdbf1e3f1f12aff12ULL
,
917 0xbf73d17373cce6a2ULL
,
918 0x901248121282245aULL
,
919 0x3a401d40407a805dULL
,
920 0x4008200808481028ULL
,
921 0x56c32bc3c3959be8ULL
,
922 0x33ec97ececdfc57bULL
,
923 0x96db4bdbdb4dab90ULL
,
924 0x61a1bea1a1c05f1fULL
,
925 0x1c8d0e8d8d910783ULL
,
926 0xf53df43d3dc87ac9ULL
,
927 0xcc976697975b33f1ULL
,
928 0x0000000000000000ULL
,
929 0x36cf1bcfcff983d4ULL
,
930 0x452bac2b2b6e5687ULL
,
931 0x9776c57676e1ecb3ULL
,
932 0x6482328282e619b0ULL
,
933 0xfed67fd6d628b1a9ULL
,
934 0xd81b6c1b1bc33677ULL
,
935 0xc1b5eeb5b574775bULL
,
936 0x11af86afafbe4329ULL
,
937 0x776ab56a6a1dd4dfULL
,
938 0xba505d5050eaa00dULL
,
939 0x1245094545578a4cULL
,
940 0xcbf3ebf3f338fb18ULL
,
941 0x9d30c03030ad60f0ULL
,
942 0x2bef9befefc4c374ULL
,
943 0xe53ffc3f3fda7ec3ULL
,
944 0x9255495555c7aa1cULL
,
945 0x79a2b2a2a2db5910ULL
,
946 0x03ea8feaeae9c965ULL
,
947 0x0f658965656acaecULL
,
948 0xb9bad2baba036968ULL
,
949 0x652fbc2f2f4a5e93ULL
,
950 0x4ec027c0c08e9de7ULL
,
951 0xbede5fdede60a181ULL
,
952 0xe01c701c1cfc386cULL
,
953 0xbbfdd3fdfd46e72eULL
,
954 0x524d294d4d1f9a64ULL
,
955 0xe4927292927639e0ULL
,
956 0x8f75c97575faeabcULL
,
957 0x3006180606360c1eULL
,
958 0x248a128a8aae0998ULL
,
959 0xf9b2f2b2b24b7940ULL
,
960 0x63e6bfe6e685d159ULL
,
961 0x700e380e0e7e1c36ULL
,
962 0xf81f7c1f1fe73e63ULL
,
963 0x376295626255c4f7ULL
,
964 0xeed477d4d43ab5a3ULL
,
965 0x29a89aa8a8814d32ULL
,
966 0xc4966296965231f4ULL
,
967 0x9bf9c3f9f962ef3aULL
,
968 0x66c533c5c5a397f6ULL
,
969 0x3525942525104ab1ULL
,
970 0xf259795959abb220ULL
,
971 0x54842a8484d015aeULL
,
972 0xb772d57272c5e4a7ULL
,
973 0xd539e43939ec72ddULL
,
974 0x5a4c2d4c4c169861ULL
,
975 0xca5e655e5e94bc3bULL
,
976 0xe778fd78789ff085ULL
,
977 0xdd38e03838e570d8ULL
,
978 0x148c0a8c8c980586ULL
,
979 0xc6d163d1d117bfb2ULL
,
980 0x41a5aea5a5e4570bULL
,
981 0x43e2afe2e2a1d94dULL
,
982 0x2f619961614ec2f8ULL
,
983 0xf1b3f6b3b3427b45ULL
,
984 0x15218421213442a5ULL
,
985 0x949c4a9c9c0825d6ULL
,
986 0xf01e781e1eee3c66ULL
,
987 0x2243114343618652ULL
,
988 0x76c73bc7c7b193fcULL
,
989 0xb3fcd7fcfc4fe52bULL
,
990 0x2004100404240814ULL
,
991 0xb251595151e3a208ULL
,
992 0xbc995e9999252fc7ULL
,
993 0x4f6da96d6d22dac4ULL
,
994 0x680d340d0d651a39ULL
,
995 0x83facffafa79e935ULL
,
996 0xb6df5bdfdf69a384ULL
,
997 0xd77ee57e7ea9fc9bULL
,
998 0x3d249024241948b4ULL
,
999 0xc53bec3b3bfe76d7ULL
,
1000 0x31ab96abab9a4b3dULL
,
1001 0x3ece1fcecef081d1ULL
,
1002 0x8811441111992255ULL
,
1003 0x0c8f068f8f830389ULL
,
1004 0x4a4e254e4e049c6bULL
,
1005 0xd1b7e6b7b7667351ULL
,
1006 0x0beb8bebebe0cb60ULL
,
1007 0xfd3cf03c3cc178ccULL
,
1008 0x7c813e8181fd1fbfULL
,
1009 0xd4946a94944035feULL
,
1010 0xebf7fbf7f71cf30cULL
,
1011 0xa1b9deb9b9186f67ULL
,
1012 0x98134c13138b265fULL
,
1013 0x7d2cb02c2c51589cULL
,
1014 0xd6d36bd3d305bbb8ULL
,
1015 0x6be7bbe7e78cd35cULL
,
1016 0x576ea56e6e39dccbULL
,
1017 0x6ec437c4c4aa95f3ULL
,
1018 0x18030c03031b060fULL
,
1019 0x8a56455656dcac13ULL
,
1020 0x1a440d44445e8849ULL
,
1021 0xdf7fe17f7fa0fe9eULL
,
1022 0x21a99ea9a9884f37ULL
,
1023 0x4d2aa82a2a675482ULL
,
1024 0xb1bbd6bbbb0a6b6dULL
,
1025 0x46c123c1c1879fe2ULL
,
1026 0xa253515353f1a602ULL
,
1027 0xaedc57dcdc72a58bULL
,
1028 0x580b2c0b0b531627ULL
,
1029 0x9c9d4e9d9d0127d3ULL
,
1030 0x476cad6c6c2bd8c1ULL
,
1031 0x9531c43131a462f5ULL
,
1032 0x8774cd7474f3e8b9ULL
,
1033 0xe3f6fff6f615f109ULL
,
1034 0x0a460546464c8c43ULL
,
1035 0x09ac8aacaca54526ULL
,
1036 0x3c891e8989b50f97ULL
,
1037 0xa014501414b42844ULL
,
1038 0x5be1a3e1e1badf42ULL
,
1039 0xb016581616a62c4eULL
,
1040 0xcd3ae83a3af774d2ULL
,
1041 0x6f69b9696906d2d0ULL
,
1042 0x480924090941122dULL
,
1043 0xa770dd7070d7e0adULL
,
1044 0xd9b6e2b6b66f7154ULL
,
1045 0xced067d0d01ebdb7ULL
,
1046 0x3bed93ededd6c77eULL
,
1047 0x2ecc17cccce285dbULL
,
1048 0x2a42154242688457ULL
,
1049 0xb4985a98982c2dc2ULL
,
1050 0x49a4aaa4a4ed550eULL
,
1051 0x5d28a02828755088ULL
,
1052 0xda5c6d5c5c86b831ULL
,
1053 0x93f8c7f8f86bed3fULL
,
1054 0x4486228686c211a4ULL
,
1057 static const uint64_t T4
[256] = {
1058 0x18601818d83078c0ULL
,
1059 0x238c23232646af05ULL
,
1060 0xc63fc6c6b891f97eULL
,
1061 0xe887e8e8fbcd6f13ULL
,
1062 0x87268787cb13a14cULL
,
1063 0xb8dab8b8116d62a9ULL
,
1064 0x0104010109020508ULL
,
1065 0x4f214f4f0d9e6e42ULL
,
1066 0x36d836369b6ceeadULL
,
1067 0xa6a2a6a6ff510459ULL
,
1068 0xd26fd2d20cb9bddeULL
,
1069 0xf5f3f5f50ef706fbULL
,
1070 0x79f9797996f280efULL
,
1071 0x6fa16f6f30dece5fULL
,
1072 0x917e91916d3feffcULL
,
1073 0x52555252f8a407aaULL
,
1074 0x609d606047c0fd27ULL
,
1075 0xbccabcbc35657689ULL
,
1076 0x9b569b9b372bcdacULL
,
1077 0x8e028e8e8a018c04ULL
,
1078 0xa3b6a3a3d25b1571ULL
,
1079 0x0c300c0c6c183c60ULL
,
1080 0x7bf17b7b84f68affULL
,
1081 0x35d43535806ae1b5ULL
,
1082 0x1d741d1df53a69e8ULL
,
1083 0xe0a7e0e0b3dd4753ULL
,
1084 0xd77bd7d721b3acf6ULL
,
1085 0xc22fc2c29c99ed5eULL
,
1086 0x2eb82e2e435c966dULL
,
1087 0x4b314b4b29967a62ULL
,
1088 0xfedffefe5de121a3ULL
,
1089 0x57415757d5ae1682ULL
,
1090 0x15541515bd2a41a8ULL
,
1091 0x77c17777e8eeb69fULL
,
1092 0x37dc3737926eeba5ULL
,
1093 0xe5b3e5e59ed7567bULL
,
1094 0x9f469f9f1323d98cULL
,
1095 0xf0e7f0f023fd17d3ULL
,
1096 0x4a354a4a20947f6aULL
,
1097 0xda4fdada44a9959eULL
,
1098 0x587d5858a2b025faULL
,
1099 0xc903c9c9cf8fca06ULL
,
1100 0x29a429297c528d55ULL
,
1101 0x0a280a0a5a142250ULL
,
1102 0xb1feb1b1507f4fe1ULL
,
1103 0xa0baa0a0c95d1a69ULL
,
1104 0x6bb16b6b14d6da7fULL
,
1105 0x852e8585d917ab5cULL
,
1106 0xbdcebdbd3c677381ULL
,
1107 0x5d695d5d8fba34d2ULL
,
1108 0x1040101090205080ULL
,
1109 0xf4f7f4f407f503f3ULL
,
1110 0xcb0bcbcbdd8bc016ULL
,
1111 0x3ef83e3ed37cc6edULL
,
1112 0x051405052d0a1128ULL
,
1113 0x6781676778cee61fULL
,
1114 0xe4b7e4e497d55373ULL
,
1115 0x279c2727024ebb25ULL
,
1116 0x4119414173825832ULL
,
1117 0x8b168b8ba70b9d2cULL
,
1118 0xa7a6a7a7f6530151ULL
,
1119 0x7de97d7db2fa94cfULL
,
1120 0x956e95954937fbdcULL
,
1121 0xd847d8d856ad9f8eULL
,
1122 0xfbcbfbfb70eb308bULL
,
1123 0xee9feeeecdc17123ULL
,
1124 0x7ced7c7cbbf891c7ULL
,
1125 0x6685666671cce317ULL
,
1126 0xdd53dddd7ba78ea6ULL
,
1127 0x175c1717af2e4bb8ULL
,
1128 0x47014747458e4602ULL
,
1129 0x9e429e9e1a21dc84ULL
,
1130 0xca0fcacad489c51eULL
,
1131 0x2db42d2d585a9975ULL
,
1132 0xbfc6bfbf2e637991ULL
,
1133 0x071c07073f0e1b38ULL
,
1134 0xad8eadadac472301ULL
,
1135 0x5a755a5ab0b42feaULL
,
1136 0x83368383ef1bb56cULL
,
1137 0x33cc3333b666ff85ULL
,
1138 0x639163635cc6f23fULL
,
1139 0x0208020212040a10ULL
,
1140 0xaa92aaaa93493839ULL
,
1141 0x71d97171dee2a8afULL
,
1142 0xc807c8c8c68dcf0eULL
,
1143 0x19641919d1327dc8ULL
,
1144 0x493949493b927072ULL
,
1145 0xd943d9d95faf9a86ULL
,
1146 0xf2eff2f231f91dc3ULL
,
1147 0xe3abe3e3a8db484bULL
,
1148 0x5b715b5bb9b62ae2ULL
,
1149 0x881a8888bc0d9234ULL
,
1150 0x9a529a9a3e29c8a4ULL
,
1151 0x269826260b4cbe2dULL
,
1152 0x32c83232bf64fa8dULL
,
1153 0xb0fab0b0597d4ae9ULL
,
1154 0xe983e9e9f2cf6a1bULL
,
1155 0x0f3c0f0f771e3378ULL
,
1156 0xd573d5d533b7a6e6ULL
,
1157 0x803a8080f41dba74ULL
,
1158 0xbec2bebe27617c99ULL
,
1159 0xcd13cdcdeb87de26ULL
,
1160 0x34d034348968e4bdULL
,
1161 0x483d48483290757aULL
,
1162 0xffdbffff54e324abULL
,
1163 0x7af57a7a8df48ff7ULL
,
1164 0x907a9090643deaf4ULL
,
1165 0x5f615f5f9dbe3ec2ULL
,
1166 0x208020203d40a01dULL
,
1167 0x68bd68680fd0d567ULL
,
1168 0x1a681a1aca3472d0ULL
,
1169 0xae82aeaeb7412c19ULL
,
1170 0xb4eab4b47d755ec9ULL
,
1171 0x544d5454cea8199aULL
,
1172 0x937693937f3be5ecULL
,
1173 0x228822222f44aa0dULL
,
1174 0x648d646463c8e907ULL
,
1175 0xf1e3f1f12aff12dbULL
,
1176 0x73d17373cce6a2bfULL
,
1177 0x1248121282245a90ULL
,
1178 0x401d40407a805d3aULL
,
1179 0x0820080848102840ULL
,
1180 0xc32bc3c3959be856ULL
,
1181 0xec97ececdfc57b33ULL
,
1182 0xdb4bdbdb4dab9096ULL
,
1183 0xa1bea1a1c05f1f61ULL
,
1184 0x8d0e8d8d9107831cULL
,
1185 0x3df43d3dc87ac9f5ULL
,
1186 0x976697975b33f1ccULL
,
1187 0x0000000000000000ULL
,
1188 0xcf1bcfcff983d436ULL
,
1189 0x2bac2b2b6e568745ULL
,
1190 0x76c57676e1ecb397ULL
,
1191 0x82328282e619b064ULL
,
1192 0xd67fd6d628b1a9feULL
,
1193 0x1b6c1b1bc33677d8ULL
,
1194 0xb5eeb5b574775bc1ULL
,
1195 0xaf86afafbe432911ULL
,
1196 0x6ab56a6a1dd4df77ULL
,
1197 0x505d5050eaa00dbaULL
,
1198 0x45094545578a4c12ULL
,
1199 0xf3ebf3f338fb18cbULL
,
1200 0x30c03030ad60f09dULL
,
1201 0xef9befefc4c3742bULL
,
1202 0x3ffc3f3fda7ec3e5ULL
,
1203 0x55495555c7aa1c92ULL
,
1204 0xa2b2a2a2db591079ULL
,
1205 0xea8feaeae9c96503ULL
,
1206 0x658965656acaec0fULL
,
1207 0xbad2baba036968b9ULL
,
1208 0x2fbc2f2f4a5e9365ULL
,
1209 0xc027c0c08e9de74eULL
,
1210 0xde5fdede60a181beULL
,
1211 0x1c701c1cfc386ce0ULL
,
1212 0xfdd3fdfd46e72ebbULL
,
1213 0x4d294d4d1f9a6452ULL
,
1214 0x927292927639e0e4ULL
,
1215 0x75c97575faeabc8fULL
,
1216 0x06180606360c1e30ULL
,
1217 0x8a128a8aae099824ULL
,
1218 0xb2f2b2b24b7940f9ULL
,
1219 0xe6bfe6e685d15963ULL
,
1220 0x0e380e0e7e1c3670ULL
,
1221 0x1f7c1f1fe73e63f8ULL
,
1222 0x6295626255c4f737ULL
,
1223 0xd477d4d43ab5a3eeULL
,
1224 0xa89aa8a8814d3229ULL
,
1225 0x966296965231f4c4ULL
,
1226 0xf9c3f9f962ef3a9bULL
,
1227 0xc533c5c5a397f666ULL
,
1228 0x25942525104ab135ULL
,
1229 0x59795959abb220f2ULL
,
1230 0x842a8484d015ae54ULL
,
1231 0x72d57272c5e4a7b7ULL
,
1232 0x39e43939ec72ddd5ULL
,
1233 0x4c2d4c4c1698615aULL
,
1234 0x5e655e5e94bc3bcaULL
,
1235 0x78fd78789ff085e7ULL
,
1236 0x38e03838e570d8ddULL
,
1237 0x8c0a8c8c98058614ULL
,
1238 0xd163d1d117bfb2c6ULL
,
1239 0xa5aea5a5e4570b41ULL
,
1240 0xe2afe2e2a1d94d43ULL
,
1241 0x619961614ec2f82fULL
,
1242 0xb3f6b3b3427b45f1ULL
,
1243 0x218421213442a515ULL
,
1244 0x9c4a9c9c0825d694ULL
,
1245 0x1e781e1eee3c66f0ULL
,
1246 0x4311434361865222ULL
,
1247 0xc73bc7c7b193fc76ULL
,
1248 0xfcd7fcfc4fe52bb3ULL
,
1249 0x0410040424081420ULL
,
1250 0x51595151e3a208b2ULL
,
1251 0x995e9999252fc7bcULL
,
1252 0x6da96d6d22dac44fULL
,
1253 0x0d340d0d651a3968ULL
,
1254 0xfacffafa79e93583ULL
,
1255 0xdf5bdfdf69a384b6ULL
,
1256 0x7ee57e7ea9fc9bd7ULL
,
1257 0x249024241948b43dULL
,
1258 0x3bec3b3bfe76d7c5ULL
,
1259 0xab96abab9a4b3d31ULL
,
1260 0xce1fcecef081d13eULL
,
1261 0x1144111199225588ULL
,
1262 0x8f068f8f8303890cULL
,
1263 0x4e254e4e049c6b4aULL
,
1264 0xb7e6b7b7667351d1ULL
,
1265 0xeb8bebebe0cb600bULL
,
1266 0x3cf03c3cc178ccfdULL
,
1267 0x813e8181fd1fbf7cULL
,
1268 0x946a94944035fed4ULL
,
1269 0xf7fbf7f71cf30cebULL
,
1270 0xb9deb9b9186f67a1ULL
,
1271 0x134c13138b265f98ULL
,
1272 0x2cb02c2c51589c7dULL
,
1273 0xd36bd3d305bbb8d6ULL
,
1274 0xe7bbe7e78cd35c6bULL
,
1275 0x6ea56e6e39dccb57ULL
,
1276 0xc437c4c4aa95f36eULL
,
1277 0x030c03031b060f18ULL
,
1278 0x56455656dcac138aULL
,
1279 0x440d44445e88491aULL
,
1280 0x7fe17f7fa0fe9edfULL
,
1281 0xa99ea9a9884f3721ULL
,
1282 0x2aa82a2a6754824dULL
,
1283 0xbbd6bbbb0a6b6db1ULL
,
1284 0xc123c1c1879fe246ULL
,
1285 0x53515353f1a602a2ULL
,
1286 0xdc57dcdc72a58baeULL
,
1287 0x0b2c0b0b53162758ULL
,
1288 0x9d4e9d9d0127d39cULL
,
1289 0x6cad6c6c2bd8c147ULL
,
1290 0x31c43131a462f595ULL
,
1291 0x74cd7474f3e8b987ULL
,
1292 0xf6fff6f615f109e3ULL
,
1293 0x460546464c8c430aULL
,
1294 0xac8aacaca5452609ULL
,
1295 0x891e8989b50f973cULL
,
1296 0x14501414b42844a0ULL
,
1297 0xe1a3e1e1badf425bULL
,
1298 0x16581616a62c4eb0ULL
,
1299 0x3ae83a3af774d2cdULL
,
1300 0x69b9696906d2d06fULL
,
1301 0x0924090941122d48ULL
,
1302 0x70dd7070d7e0ada7ULL
,
1303 0xb6e2b6b66f7154d9ULL
,
1304 0xd067d0d01ebdb7ceULL
,
1305 0xed93ededd6c77e3bULL
,
1306 0xcc17cccce285db2eULL
,
1307 0x421542426884572aULL
,
1308 0x985a98982c2dc2b4ULL
,
1309 0xa4aaa4a4ed550e49ULL
,
1310 0x28a028287550885dULL
,
1311 0x5c6d5c5c86b831daULL
,
1312 0xf8c7f8f86bed3f93ULL
,
1313 0x86228686c211a444ULL
,
1316 static const uint64_t T5
[256] = {
1317 0x601818d83078c018ULL
,
1318 0x8c23232646af0523ULL
,
1319 0x3fc6c6b891f97ec6ULL
,
1320 0x87e8e8fbcd6f13e8ULL
,
1321 0x268787cb13a14c87ULL
,
1322 0xdab8b8116d62a9b8ULL
,
1323 0x0401010902050801ULL
,
1324 0x214f4f0d9e6e424fULL
,
1325 0xd836369b6ceead36ULL
,
1326 0xa2a6a6ff510459a6ULL
,
1327 0x6fd2d20cb9bdded2ULL
,
1328 0xf3f5f50ef706fbf5ULL
,
1329 0xf9797996f280ef79ULL
,
1330 0xa16f6f30dece5f6fULL
,
1331 0x7e91916d3feffc91ULL
,
1332 0x555252f8a407aa52ULL
,
1333 0x9d606047c0fd2760ULL
,
1334 0xcabcbc35657689bcULL
,
1335 0x569b9b372bcdac9bULL
,
1336 0x028e8e8a018c048eULL
,
1337 0xb6a3a3d25b1571a3ULL
,
1338 0x300c0c6c183c600cULL
,
1339 0xf17b7b84f68aff7bULL
,
1340 0xd43535806ae1b535ULL
,
1341 0x741d1df53a69e81dULL
,
1342 0xa7e0e0b3dd4753e0ULL
,
1343 0x7bd7d721b3acf6d7ULL
,
1344 0x2fc2c29c99ed5ec2ULL
,
1345 0xb82e2e435c966d2eULL
,
1346 0x314b4b29967a624bULL
,
1347 0xdffefe5de121a3feULL
,
1348 0x415757d5ae168257ULL
,
1349 0x541515bd2a41a815ULL
,
1350 0xc17777e8eeb69f77ULL
,
1351 0xdc3737926eeba537ULL
,
1352 0xb3e5e59ed7567be5ULL
,
1353 0x469f9f1323d98c9fULL
,
1354 0xe7f0f023fd17d3f0ULL
,
1355 0x354a4a20947f6a4aULL
,
1356 0x4fdada44a9959edaULL
,
1357 0x7d5858a2b025fa58ULL
,
1358 0x03c9c9cf8fca06c9ULL
,
1359 0xa429297c528d5529ULL
,
1360 0x280a0a5a1422500aULL
,
1361 0xfeb1b1507f4fe1b1ULL
,
1362 0xbaa0a0c95d1a69a0ULL
,
1363 0xb16b6b14d6da7f6bULL
,
1364 0x2e8585d917ab5c85ULL
,
1365 0xcebdbd3c677381bdULL
,
1366 0x695d5d8fba34d25dULL
,
1367 0x4010109020508010ULL
,
1368 0xf7f4f407f503f3f4ULL
,
1369 0x0bcbcbdd8bc016cbULL
,
1370 0xf83e3ed37cc6ed3eULL
,
1371 0x1405052d0a112805ULL
,
1372 0x81676778cee61f67ULL
,
1373 0xb7e4e497d55373e4ULL
,
1374 0x9c2727024ebb2527ULL
,
1375 0x1941417382583241ULL
,
1376 0x168b8ba70b9d2c8bULL
,
1377 0xa6a7a7f6530151a7ULL
,
1378 0xe97d7db2fa94cf7dULL
,
1379 0x6e95954937fbdc95ULL
,
1380 0x47d8d856ad9f8ed8ULL
,
1381 0xcbfbfb70eb308bfbULL
,
1382 0x9feeeecdc17123eeULL
,
1383 0xed7c7cbbf891c77cULL
,
1384 0x85666671cce31766ULL
,
1385 0x53dddd7ba78ea6ddULL
,
1386 0x5c1717af2e4bb817ULL
,
1387 0x014747458e460247ULL
,
1388 0x429e9e1a21dc849eULL
,
1389 0x0fcacad489c51ecaULL
,
1390 0xb42d2d585a99752dULL
,
1391 0xc6bfbf2e637991bfULL
,
1392 0x1c07073f0e1b3807ULL
,
1393 0x8eadadac472301adULL
,
1394 0x755a5ab0b42fea5aULL
,
1395 0x368383ef1bb56c83ULL
,
1396 0xcc3333b666ff8533ULL
,
1397 0x9163635cc6f23f63ULL
,
1398 0x08020212040a1002ULL
,
1399 0x92aaaa93493839aaULL
,
1400 0xd97171dee2a8af71ULL
,
1401 0x07c8c8c68dcf0ec8ULL
,
1402 0x641919d1327dc819ULL
,
1403 0x3949493b92707249ULL
,
1404 0x43d9d95faf9a86d9ULL
,
1405 0xeff2f231f91dc3f2ULL
,
1406 0xabe3e3a8db484be3ULL
,
1407 0x715b5bb9b62ae25bULL
,
1408 0x1a8888bc0d923488ULL
,
1409 0x529a9a3e29c8a49aULL
,
1410 0x9826260b4cbe2d26ULL
,
1411 0xc83232bf64fa8d32ULL
,
1412 0xfab0b0597d4ae9b0ULL
,
1413 0x83e9e9f2cf6a1be9ULL
,
1414 0x3c0f0f771e33780fULL
,
1415 0x73d5d533b7a6e6d5ULL
,
1416 0x3a8080f41dba7480ULL
,
1417 0xc2bebe27617c99beULL
,
1418 0x13cdcdeb87de26cdULL
,
1419 0xd034348968e4bd34ULL
,
1420 0x3d48483290757a48ULL
,
1421 0xdbffff54e324abffULL
,
1422 0xf57a7a8df48ff77aULL
,
1423 0x7a9090643deaf490ULL
,
1424 0x615f5f9dbe3ec25fULL
,
1425 0x8020203d40a01d20ULL
,
1426 0xbd68680fd0d56768ULL
,
1427 0x681a1aca3472d01aULL
,
1428 0x82aeaeb7412c19aeULL
,
1429 0xeab4b47d755ec9b4ULL
,
1430 0x4d5454cea8199a54ULL
,
1431 0x7693937f3be5ec93ULL
,
1432 0x8822222f44aa0d22ULL
,
1433 0x8d646463c8e90764ULL
,
1434 0xe3f1f12aff12dbf1ULL
,
1435 0xd17373cce6a2bf73ULL
,
1436 0x48121282245a9012ULL
,
1437 0x1d40407a805d3a40ULL
,
1438 0x2008084810284008ULL
,
1439 0x2bc3c3959be856c3ULL
,
1440 0x97ececdfc57b33ecULL
,
1441 0x4bdbdb4dab9096dbULL
,
1442 0xbea1a1c05f1f61a1ULL
,
1443 0x0e8d8d9107831c8dULL
,
1444 0xf43d3dc87ac9f53dULL
,
1445 0x6697975b33f1cc97ULL
,
1446 0x0000000000000000ULL
,
1447 0x1bcfcff983d436cfULL
,
1448 0xac2b2b6e5687452bULL
,
1449 0xc57676e1ecb39776ULL
,
1450 0x328282e619b06482ULL
,
1451 0x7fd6d628b1a9fed6ULL
,
1452 0x6c1b1bc33677d81bULL
,
1453 0xeeb5b574775bc1b5ULL
,
1454 0x86afafbe432911afULL
,
1455 0xb56a6a1dd4df776aULL
,
1456 0x5d5050eaa00dba50ULL
,
1457 0x094545578a4c1245ULL
,
1458 0xebf3f338fb18cbf3ULL
,
1459 0xc03030ad60f09d30ULL
,
1460 0x9befefc4c3742befULL
,
1461 0xfc3f3fda7ec3e53fULL
,
1462 0x495555c7aa1c9255ULL
,
1463 0xb2a2a2db591079a2ULL
,
1464 0x8feaeae9c96503eaULL
,
1465 0x8965656acaec0f65ULL
,
1466 0xd2baba036968b9baULL
,
1467 0xbc2f2f4a5e93652fULL
,
1468 0x27c0c08e9de74ec0ULL
,
1469 0x5fdede60a181bedeULL
,
1470 0x701c1cfc386ce01cULL
,
1471 0xd3fdfd46e72ebbfdULL
,
1472 0x294d4d1f9a64524dULL
,
1473 0x7292927639e0e492ULL
,
1474 0xc97575faeabc8f75ULL
,
1475 0x180606360c1e3006ULL
,
1476 0x128a8aae0998248aULL
,
1477 0xf2b2b24b7940f9b2ULL
,
1478 0xbfe6e685d15963e6ULL
,
1479 0x380e0e7e1c36700eULL
,
1480 0x7c1f1fe73e63f81fULL
,
1481 0x95626255c4f73762ULL
,
1482 0x77d4d43ab5a3eed4ULL
,
1483 0x9aa8a8814d3229a8ULL
,
1484 0x6296965231f4c496ULL
,
1485 0xc3f9f962ef3a9bf9ULL
,
1486 0x33c5c5a397f666c5ULL
,
1487 0x942525104ab13525ULL
,
1488 0x795959abb220f259ULL
,
1489 0x2a8484d015ae5484ULL
,
1490 0xd57272c5e4a7b772ULL
,
1491 0xe43939ec72ddd539ULL
,
1492 0x2d4c4c1698615a4cULL
,
1493 0x655e5e94bc3bca5eULL
,
1494 0xfd78789ff085e778ULL
,
1495 0xe03838e570d8dd38ULL
,
1496 0x0a8c8c980586148cULL
,
1497 0x63d1d117bfb2c6d1ULL
,
1498 0xaea5a5e4570b41a5ULL
,
1499 0xafe2e2a1d94d43e2ULL
,
1500 0x9961614ec2f82f61ULL
,
1501 0xf6b3b3427b45f1b3ULL
,
1502 0x8421213442a51521ULL
,
1503 0x4a9c9c0825d6949cULL
,
1504 0x781e1eee3c66f01eULL
,
1505 0x1143436186522243ULL
,
1506 0x3bc7c7b193fc76c7ULL
,
1507 0xd7fcfc4fe52bb3fcULL
,
1508 0x1004042408142004ULL
,
1509 0x595151e3a208b251ULL
,
1510 0x5e9999252fc7bc99ULL
,
1511 0xa96d6d22dac44f6dULL
,
1512 0x340d0d651a39680dULL
,
1513 0xcffafa79e93583faULL
,
1514 0x5bdfdf69a384b6dfULL
,
1515 0xe57e7ea9fc9bd77eULL
,
1516 0x9024241948b43d24ULL
,
1517 0xec3b3bfe76d7c53bULL
,
1518 0x96abab9a4b3d31abULL
,
1519 0x1fcecef081d13eceULL
,
1520 0x4411119922558811ULL
,
1521 0x068f8f8303890c8fULL
,
1522 0x254e4e049c6b4a4eULL
,
1523 0xe6b7b7667351d1b7ULL
,
1524 0x8bebebe0cb600bebULL
,
1525 0xf03c3cc178ccfd3cULL
,
1526 0x3e8181fd1fbf7c81ULL
,
1527 0x6a94944035fed494ULL
,
1528 0xfbf7f71cf30cebf7ULL
,
1529 0xdeb9b9186f67a1b9ULL
,
1530 0x4c13138b265f9813ULL
,
1531 0xb02c2c51589c7d2cULL
,
1532 0x6bd3d305bbb8d6d3ULL
,
1533 0xbbe7e78cd35c6be7ULL
,
1534 0xa56e6e39dccb576eULL
,
1535 0x37c4c4aa95f36ec4ULL
,
1536 0x0c03031b060f1803ULL
,
1537 0x455656dcac138a56ULL
,
1538 0x0d44445e88491a44ULL
,
1539 0xe17f7fa0fe9edf7fULL
,
1540 0x9ea9a9884f3721a9ULL
,
1541 0xa82a2a6754824d2aULL
,
1542 0xd6bbbb0a6b6db1bbULL
,
1543 0x23c1c1879fe246c1ULL
,
1544 0x515353f1a602a253ULL
,
1545 0x57dcdc72a58baedcULL
,
1546 0x2c0b0b531627580bULL
,
1547 0x4e9d9d0127d39c9dULL
,
1548 0xad6c6c2bd8c1476cULL
,
1549 0xc43131a462f59531ULL
,
1550 0xcd7474f3e8b98774ULL
,
1551 0xfff6f615f109e3f6ULL
,
1552 0x0546464c8c430a46ULL
,
1553 0x8aacaca5452609acULL
,
1554 0x1e8989b50f973c89ULL
,
1555 0x501414b42844a014ULL
,
1556 0xa3e1e1badf425be1ULL
,
1557 0x581616a62c4eb016ULL
,
1558 0xe83a3af774d2cd3aULL
,
1559 0xb9696906d2d06f69ULL
,
1560 0x24090941122d4809ULL
,
1561 0xdd7070d7e0ada770ULL
,
1562 0xe2b6b66f7154d9b6ULL
,
1563 0x67d0d01ebdb7ced0ULL
,
1564 0x93ededd6c77e3bedULL
,
1565 0x17cccce285db2eccULL
,
1566 0x1542426884572a42ULL
,
1567 0x5a98982c2dc2b498ULL
,
1568 0xaaa4a4ed550e49a4ULL
,
1569 0xa028287550885d28ULL
,
1570 0x6d5c5c86b831da5cULL
,
1571 0xc7f8f86bed3f93f8ULL
,
1572 0x228686c211a44486ULL
,
1575 static const uint64_t T6
[256] = {
1576 0x1818d83078c01860ULL
,
1577 0x23232646af05238cULL
,
1578 0xc6c6b891f97ec63fULL
,
1579 0xe8e8fbcd6f13e887ULL
,
1580 0x8787cb13a14c8726ULL
,
1581 0xb8b8116d62a9b8daULL
,
1582 0x0101090205080104ULL
,
1583 0x4f4f0d9e6e424f21ULL
,
1584 0x36369b6ceead36d8ULL
,
1585 0xa6a6ff510459a6a2ULL
,
1586 0xd2d20cb9bdded26fULL
,
1587 0xf5f50ef706fbf5f3ULL
,
1588 0x797996f280ef79f9ULL
,
1589 0x6f6f30dece5f6fa1ULL
,
1590 0x91916d3feffc917eULL
,
1591 0x5252f8a407aa5255ULL
,
1592 0x606047c0fd27609dULL
,
1593 0xbcbc35657689bccaULL
,
1594 0x9b9b372bcdac9b56ULL
,
1595 0x8e8e8a018c048e02ULL
,
1596 0xa3a3d25b1571a3b6ULL
,
1597 0x0c0c6c183c600c30ULL
,
1598 0x7b7b84f68aff7bf1ULL
,
1599 0x3535806ae1b535d4ULL
,
1600 0x1d1df53a69e81d74ULL
,
1601 0xe0e0b3dd4753e0a7ULL
,
1602 0xd7d721b3acf6d77bULL
,
1603 0xc2c29c99ed5ec22fULL
,
1604 0x2e2e435c966d2eb8ULL
,
1605 0x4b4b29967a624b31ULL
,
1606 0xfefe5de121a3fedfULL
,
1607 0x5757d5ae16825741ULL
,
1608 0x1515bd2a41a81554ULL
,
1609 0x7777e8eeb69f77c1ULL
,
1610 0x3737926eeba537dcULL
,
1611 0xe5e59ed7567be5b3ULL
,
1612 0x9f9f1323d98c9f46ULL
,
1613 0xf0f023fd17d3f0e7ULL
,
1614 0x4a4a20947f6a4a35ULL
,
1615 0xdada44a9959eda4fULL
,
1616 0x5858a2b025fa587dULL
,
1617 0xc9c9cf8fca06c903ULL
,
1618 0x29297c528d5529a4ULL
,
1619 0x0a0a5a1422500a28ULL
,
1620 0xb1b1507f4fe1b1feULL
,
1621 0xa0a0c95d1a69a0baULL
,
1622 0x6b6b14d6da7f6bb1ULL
,
1623 0x8585d917ab5c852eULL
,
1624 0xbdbd3c677381bdceULL
,
1625 0x5d5d8fba34d25d69ULL
,
1626 0x1010902050801040ULL
,
1627 0xf4f407f503f3f4f7ULL
,
1628 0xcbcbdd8bc016cb0bULL
,
1629 0x3e3ed37cc6ed3ef8ULL
,
1630 0x05052d0a11280514ULL
,
1631 0x676778cee61f6781ULL
,
1632 0xe4e497d55373e4b7ULL
,
1633 0x2727024ebb25279cULL
,
1634 0x4141738258324119ULL
,
1635 0x8b8ba70b9d2c8b16ULL
,
1636 0xa7a7f6530151a7a6ULL
,
1637 0x7d7db2fa94cf7de9ULL
,
1638 0x95954937fbdc956eULL
,
1639 0xd8d856ad9f8ed847ULL
,
1640 0xfbfb70eb308bfbcbULL
,
1641 0xeeeecdc17123ee9fULL
,
1642 0x7c7cbbf891c77cedULL
,
1643 0x666671cce3176685ULL
,
1644 0xdddd7ba78ea6dd53ULL
,
1645 0x1717af2e4bb8175cULL
,
1646 0x4747458e46024701ULL
,
1647 0x9e9e1a21dc849e42ULL
,
1648 0xcacad489c51eca0fULL
,
1649 0x2d2d585a99752db4ULL
,
1650 0xbfbf2e637991bfc6ULL
,
1651 0x07073f0e1b38071cULL
,
1652 0xadadac472301ad8eULL
,
1653 0x5a5ab0b42fea5a75ULL
,
1654 0x8383ef1bb56c8336ULL
,
1655 0x3333b666ff8533ccULL
,
1656 0x63635cc6f23f6391ULL
,
1657 0x020212040a100208ULL
,
1658 0xaaaa93493839aa92ULL
,
1659 0x7171dee2a8af71d9ULL
,
1660 0xc8c8c68dcf0ec807ULL
,
1661 0x1919d1327dc81964ULL
,
1662 0x49493b9270724939ULL
,
1663 0xd9d95faf9a86d943ULL
,
1664 0xf2f231f91dc3f2efULL
,
1665 0xe3e3a8db484be3abULL
,
1666 0x5b5bb9b62ae25b71ULL
,
1667 0x8888bc0d9234881aULL
,
1668 0x9a9a3e29c8a49a52ULL
,
1669 0x26260b4cbe2d2698ULL
,
1670 0x3232bf64fa8d32c8ULL
,
1671 0xb0b0597d4ae9b0faULL
,
1672 0xe9e9f2cf6a1be983ULL
,
1673 0x0f0f771e33780f3cULL
,
1674 0xd5d533b7a6e6d573ULL
,
1675 0x8080f41dba74803aULL
,
1676 0xbebe27617c99bec2ULL
,
1677 0xcdcdeb87de26cd13ULL
,
1678 0x34348968e4bd34d0ULL
,
1679 0x48483290757a483dULL
,
1680 0xffff54e324abffdbULL
,
1681 0x7a7a8df48ff77af5ULL
,
1682 0x9090643deaf4907aULL
,
1683 0x5f5f9dbe3ec25f61ULL
,
1684 0x20203d40a01d2080ULL
,
1685 0x68680fd0d56768bdULL
,
1686 0x1a1aca3472d01a68ULL
,
1687 0xaeaeb7412c19ae82ULL
,
1688 0xb4b47d755ec9b4eaULL
,
1689 0x5454cea8199a544dULL
,
1690 0x93937f3be5ec9376ULL
,
1691 0x22222f44aa0d2288ULL
,
1692 0x646463c8e907648dULL
,
1693 0xf1f12aff12dbf1e3ULL
,
1694 0x7373cce6a2bf73d1ULL
,
1695 0x121282245a901248ULL
,
1696 0x40407a805d3a401dULL
,
1697 0x0808481028400820ULL
,
1698 0xc3c3959be856c32bULL
,
1699 0xececdfc57b33ec97ULL
,
1700 0xdbdb4dab9096db4bULL
,
1701 0xa1a1c05f1f61a1beULL
,
1702 0x8d8d9107831c8d0eULL
,
1703 0x3d3dc87ac9f53df4ULL
,
1704 0x97975b33f1cc9766ULL
,
1705 0x0000000000000000ULL
,
1706 0xcfcff983d436cf1bULL
,
1707 0x2b2b6e5687452bacULL
,
1708 0x7676e1ecb39776c5ULL
,
1709 0x8282e619b0648232ULL
,
1710 0xd6d628b1a9fed67fULL
,
1711 0x1b1bc33677d81b6cULL
,
1712 0xb5b574775bc1b5eeULL
,
1713 0xafafbe432911af86ULL
,
1714 0x6a6a1dd4df776ab5ULL
,
1715 0x5050eaa00dba505dULL
,
1716 0x4545578a4c124509ULL
,
1717 0xf3f338fb18cbf3ebULL
,
1718 0x3030ad60f09d30c0ULL
,
1719 0xefefc4c3742bef9bULL
,
1720 0x3f3fda7ec3e53ffcULL
,
1721 0x5555c7aa1c925549ULL
,
1722 0xa2a2db591079a2b2ULL
,
1723 0xeaeae9c96503ea8fULL
,
1724 0x65656acaec0f6589ULL
,
1725 0xbaba036968b9bad2ULL
,
1726 0x2f2f4a5e93652fbcULL
,
1727 0xc0c08e9de74ec027ULL
,
1728 0xdede60a181bede5fULL
,
1729 0x1c1cfc386ce01c70ULL
,
1730 0xfdfd46e72ebbfdd3ULL
,
1731 0x4d4d1f9a64524d29ULL
,
1732 0x92927639e0e49272ULL
,
1733 0x7575faeabc8f75c9ULL
,
1734 0x0606360c1e300618ULL
,
1735 0x8a8aae0998248a12ULL
,
1736 0xb2b24b7940f9b2f2ULL
,
1737 0xe6e685d15963e6bfULL
,
1738 0x0e0e7e1c36700e38ULL
,
1739 0x1f1fe73e63f81f7cULL
,
1740 0x626255c4f7376295ULL
,
1741 0xd4d43ab5a3eed477ULL
,
1742 0xa8a8814d3229a89aULL
,
1743 0x96965231f4c49662ULL
,
1744 0xf9f962ef3a9bf9c3ULL
,
1745 0xc5c5a397f666c533ULL
,
1746 0x2525104ab1352594ULL
,
1747 0x5959abb220f25979ULL
,
1748 0x8484d015ae54842aULL
,
1749 0x7272c5e4a7b772d5ULL
,
1750 0x3939ec72ddd539e4ULL
,
1751 0x4c4c1698615a4c2dULL
,
1752 0x5e5e94bc3bca5e65ULL
,
1753 0x78789ff085e778fdULL
,
1754 0x3838e570d8dd38e0ULL
,
1755 0x8c8c980586148c0aULL
,
1756 0xd1d117bfb2c6d163ULL
,
1757 0xa5a5e4570b41a5aeULL
,
1758 0xe2e2a1d94d43e2afULL
,
1759 0x61614ec2f82f6199ULL
,
1760 0xb3b3427b45f1b3f6ULL
,
1761 0x21213442a5152184ULL
,
1762 0x9c9c0825d6949c4aULL
,
1763 0x1e1eee3c66f01e78ULL
,
1764 0x4343618652224311ULL
,
1765 0xc7c7b193fc76c73bULL
,
1766 0xfcfc4fe52bb3fcd7ULL
,
1767 0x0404240814200410ULL
,
1768 0x5151e3a208b25159ULL
,
1769 0x9999252fc7bc995eULL
,
1770 0x6d6d22dac44f6da9ULL
,
1771 0x0d0d651a39680d34ULL
,
1772 0xfafa79e93583facfULL
,
1773 0xdfdf69a384b6df5bULL
,
1774 0x7e7ea9fc9bd77ee5ULL
,
1775 0x24241948b43d2490ULL
,
1776 0x3b3bfe76d7c53becULL
,
1777 0xabab9a4b3d31ab96ULL
,
1778 0xcecef081d13ece1fULL
,
1779 0x1111992255881144ULL
,
1780 0x8f8f8303890c8f06ULL
,
1781 0x4e4e049c6b4a4e25ULL
,
1782 0xb7b7667351d1b7e6ULL
,
1783 0xebebe0cb600beb8bULL
,
1784 0x3c3cc178ccfd3cf0ULL
,
1785 0x8181fd1fbf7c813eULL
,
1786 0x94944035fed4946aULL
,
1787 0xf7f71cf30cebf7fbULL
,
1788 0xb9b9186f67a1b9deULL
,
1789 0x13138b265f98134cULL
,
1790 0x2c2c51589c7d2cb0ULL
,
1791 0xd3d305bbb8d6d36bULL
,
1792 0xe7e78cd35c6be7bbULL
,
1793 0x6e6e39dccb576ea5ULL
,
1794 0xc4c4aa95f36ec437ULL
,
1795 0x03031b060f18030cULL
,
1796 0x5656dcac138a5645ULL
,
1797 0x44445e88491a440dULL
,
1798 0x7f7fa0fe9edf7fe1ULL
,
1799 0xa9a9884f3721a99eULL
,
1800 0x2a2a6754824d2aa8ULL
,
1801 0xbbbb0a6b6db1bbd6ULL
,
1802 0xc1c1879fe246c123ULL
,
1803 0x5353f1a602a25351ULL
,
1804 0xdcdc72a58baedc57ULL
,
1805 0x0b0b531627580b2cULL
,
1806 0x9d9d0127d39c9d4eULL
,
1807 0x6c6c2bd8c1476cadULL
,
1808 0x3131a462f59531c4ULL
,
1809 0x7474f3e8b98774cdULL
,
1810 0xf6f615f109e3f6ffULL
,
1811 0x46464c8c430a4605ULL
,
1812 0xacaca5452609ac8aULL
,
1813 0x8989b50f973c891eULL
,
1814 0x1414b42844a01450ULL
,
1815 0xe1e1badf425be1a3ULL
,
1816 0x1616a62c4eb01658ULL
,
1817 0x3a3af774d2cd3ae8ULL
,
1818 0x696906d2d06f69b9ULL
,
1819 0x090941122d480924ULL
,
1820 0x7070d7e0ada770ddULL
,
1821 0xb6b66f7154d9b6e2ULL
,
1822 0xd0d01ebdb7ced067ULL
,
1823 0xededd6c77e3bed93ULL
,
1824 0xcccce285db2ecc17ULL
,
1825 0x42426884572a4215ULL
,
1826 0x98982c2dc2b4985aULL
,
1827 0xa4a4ed550e49a4aaULL
,
1828 0x28287550885d28a0ULL
,
1829 0x5c5c86b831da5c6dULL
,
1830 0xf8f86bed3f93f8c7ULL
,
1831 0x8686c211a4448622ULL
,
1834 static const uint64_t T7
[256] = {
1835 0x18d83078c0186018ULL
,
1836 0x232646af05238c23ULL
,
1837 0xc6b891f97ec63fc6ULL
,
1838 0xe8fbcd6f13e887e8ULL
,
1839 0x87cb13a14c872687ULL
,
1840 0xb8116d62a9b8dab8ULL
,
1841 0x0109020508010401ULL
,
1842 0x4f0d9e6e424f214fULL
,
1843 0x369b6ceead36d836ULL
,
1844 0xa6ff510459a6a2a6ULL
,
1845 0xd20cb9bdded26fd2ULL
,
1846 0xf50ef706fbf5f3f5ULL
,
1847 0x7996f280ef79f979ULL
,
1848 0x6f30dece5f6fa16fULL
,
1849 0x916d3feffc917e91ULL
,
1850 0x52f8a407aa525552ULL
,
1851 0x6047c0fd27609d60ULL
,
1852 0xbc35657689bccabcULL
,
1853 0x9b372bcdac9b569bULL
,
1854 0x8e8a018c048e028eULL
,
1855 0xa3d25b1571a3b6a3ULL
,
1856 0x0c6c183c600c300cULL
,
1857 0x7b84f68aff7bf17bULL
,
1858 0x35806ae1b535d435ULL
,
1859 0x1df53a69e81d741dULL
,
1860 0xe0b3dd4753e0a7e0ULL
,
1861 0xd721b3acf6d77bd7ULL
,
1862 0xc29c99ed5ec22fc2ULL
,
1863 0x2e435c966d2eb82eULL
,
1864 0x4b29967a624b314bULL
,
1865 0xfe5de121a3fedffeULL
,
1866 0x57d5ae1682574157ULL
,
1867 0x15bd2a41a8155415ULL
,
1868 0x77e8eeb69f77c177ULL
,
1869 0x37926eeba537dc37ULL
,
1870 0xe59ed7567be5b3e5ULL
,
1871 0x9f1323d98c9f469fULL
,
1872 0xf023fd17d3f0e7f0ULL
,
1873 0x4a20947f6a4a354aULL
,
1874 0xda44a9959eda4fdaULL
,
1875 0x58a2b025fa587d58ULL
,
1876 0xc9cf8fca06c903c9ULL
,
1877 0x297c528d5529a429ULL
,
1878 0x0a5a1422500a280aULL
,
1879 0xb1507f4fe1b1feb1ULL
,
1880 0xa0c95d1a69a0baa0ULL
,
1881 0x6b14d6da7f6bb16bULL
,
1882 0x85d917ab5c852e85ULL
,
1883 0xbd3c677381bdcebdULL
,
1884 0x5d8fba34d25d695dULL
,
1885 0x1090205080104010ULL
,
1886 0xf407f503f3f4f7f4ULL
,
1887 0xcbdd8bc016cb0bcbULL
,
1888 0x3ed37cc6ed3ef83eULL
,
1889 0x052d0a1128051405ULL
,
1890 0x6778cee61f678167ULL
,
1891 0xe497d55373e4b7e4ULL
,
1892 0x27024ebb25279c27ULL
,
1893 0x4173825832411941ULL
,
1894 0x8ba70b9d2c8b168bULL
,
1895 0xa7f6530151a7a6a7ULL
,
1896 0x7db2fa94cf7de97dULL
,
1897 0x954937fbdc956e95ULL
,
1898 0xd856ad9f8ed847d8ULL
,
1899 0xfb70eb308bfbcbfbULL
,
1900 0xeecdc17123ee9feeULL
,
1901 0x7cbbf891c77ced7cULL
,
1902 0x6671cce317668566ULL
,
1903 0xdd7ba78ea6dd53ddULL
,
1904 0x17af2e4bb8175c17ULL
,
1905 0x47458e4602470147ULL
,
1906 0x9e1a21dc849e429eULL
,
1907 0xcad489c51eca0fcaULL
,
1908 0x2d585a99752db42dULL
,
1909 0xbf2e637991bfc6bfULL
,
1910 0x073f0e1b38071c07ULL
,
1911 0xadac472301ad8eadULL
,
1912 0x5ab0b42fea5a755aULL
,
1913 0x83ef1bb56c833683ULL
,
1914 0x33b666ff8533cc33ULL
,
1915 0x635cc6f23f639163ULL
,
1916 0x0212040a10020802ULL
,
1917 0xaa93493839aa92aaULL
,
1918 0x71dee2a8af71d971ULL
,
1919 0xc8c68dcf0ec807c8ULL
,
1920 0x19d1327dc8196419ULL
,
1921 0x493b927072493949ULL
,
1922 0xd95faf9a86d943d9ULL
,
1923 0xf231f91dc3f2eff2ULL
,
1924 0xe3a8db484be3abe3ULL
,
1925 0x5bb9b62ae25b715bULL
,
1926 0x88bc0d9234881a88ULL
,
1927 0x9a3e29c8a49a529aULL
,
1928 0x260b4cbe2d269826ULL
,
1929 0x32bf64fa8d32c832ULL
,
1930 0xb0597d4ae9b0fab0ULL
,
1931 0xe9f2cf6a1be983e9ULL
,
1932 0x0f771e33780f3c0fULL
,
1933 0xd533b7a6e6d573d5ULL
,
1934 0x80f41dba74803a80ULL
,
1935 0xbe27617c99bec2beULL
,
1936 0xcdeb87de26cd13cdULL
,
1937 0x348968e4bd34d034ULL
,
1938 0x483290757a483d48ULL
,
1939 0xff54e324abffdbffULL
,
1940 0x7a8df48ff77af57aULL
,
1941 0x90643deaf4907a90ULL
,
1942 0x5f9dbe3ec25f615fULL
,
1943 0x203d40a01d208020ULL
,
1944 0x680fd0d56768bd68ULL
,
1945 0x1aca3472d01a681aULL
,
1946 0xaeb7412c19ae82aeULL
,
1947 0xb47d755ec9b4eab4ULL
,
1948 0x54cea8199a544d54ULL
,
1949 0x937f3be5ec937693ULL
,
1950 0x222f44aa0d228822ULL
,
1951 0x6463c8e907648d64ULL
,
1952 0xf12aff12dbf1e3f1ULL
,
1953 0x73cce6a2bf73d173ULL
,
1954 0x1282245a90124812ULL
,
1955 0x407a805d3a401d40ULL
,
1956 0x0848102840082008ULL
,
1957 0xc3959be856c32bc3ULL
,
1958 0xecdfc57b33ec97ecULL
,
1959 0xdb4dab9096db4bdbULL
,
1960 0xa1c05f1f61a1bea1ULL
,
1961 0x8d9107831c8d0e8dULL
,
1962 0x3dc87ac9f53df43dULL
,
1963 0x975b33f1cc976697ULL
,
1964 0x0000000000000000ULL
,
1965 0xcff983d436cf1bcfULL
,
1966 0x2b6e5687452bac2bULL
,
1967 0x76e1ecb39776c576ULL
,
1968 0x82e619b064823282ULL
,
1969 0xd628b1a9fed67fd6ULL
,
1970 0x1bc33677d81b6c1bULL
,
1971 0xb574775bc1b5eeb5ULL
,
1972 0xafbe432911af86afULL
,
1973 0x6a1dd4df776ab56aULL
,
1974 0x50eaa00dba505d50ULL
,
1975 0x45578a4c12450945ULL
,
1976 0xf338fb18cbf3ebf3ULL
,
1977 0x30ad60f09d30c030ULL
,
1978 0xefc4c3742bef9befULL
,
1979 0x3fda7ec3e53ffc3fULL
,
1980 0x55c7aa1c92554955ULL
,
1981 0xa2db591079a2b2a2ULL
,
1982 0xeae9c96503ea8feaULL
,
1983 0x656acaec0f658965ULL
,
1984 0xba036968b9bad2baULL
,
1985 0x2f4a5e93652fbc2fULL
,
1986 0xc08e9de74ec027c0ULL
,
1987 0xde60a181bede5fdeULL
,
1988 0x1cfc386ce01c701cULL
,
1989 0xfd46e72ebbfdd3fdULL
,
1990 0x4d1f9a64524d294dULL
,
1991 0x927639e0e4927292ULL
,
1992 0x75faeabc8f75c975ULL
,
1993 0x06360c1e30061806ULL
,
1994 0x8aae0998248a128aULL
,
1995 0xb24b7940f9b2f2b2ULL
,
1996 0xe685d15963e6bfe6ULL
,
1997 0x0e7e1c36700e380eULL
,
1998 0x1fe73e63f81f7c1fULL
,
1999 0x6255c4f737629562ULL
,
2000 0xd43ab5a3eed477d4ULL
,
2001 0xa8814d3229a89aa8ULL
,
2002 0x965231f4c4966296ULL
,
2003 0xf962ef3a9bf9c3f9ULL
,
2004 0xc5a397f666c533c5ULL
,
2005 0x25104ab135259425ULL
,
2006 0x59abb220f2597959ULL
,
2007 0x84d015ae54842a84ULL
,
2008 0x72c5e4a7b772d572ULL
,
2009 0x39ec72ddd539e439ULL
,
2010 0x4c1698615a4c2d4cULL
,
2011 0x5e94bc3bca5e655eULL
,
2012 0x789ff085e778fd78ULL
,
2013 0x38e570d8dd38e038ULL
,
2014 0x8c980586148c0a8cULL
,
2015 0xd117bfb2c6d163d1ULL
,
2016 0xa5e4570b41a5aea5ULL
,
2017 0xe2a1d94d43e2afe2ULL
,
2018 0x614ec2f82f619961ULL
,
2019 0xb3427b45f1b3f6b3ULL
,
2020 0x213442a515218421ULL
,
2021 0x9c0825d6949c4a9cULL
,
2022 0x1eee3c66f01e781eULL
,
2023 0x4361865222431143ULL
,
2024 0xc7b193fc76c73bc7ULL
,
2025 0xfc4fe52bb3fcd7fcULL
,
2026 0x0424081420041004ULL
,
2027 0x51e3a208b2515951ULL
,
2028 0x99252fc7bc995e99ULL
,
2029 0x6d22dac44f6da96dULL
,
2030 0x0d651a39680d340dULL
,
2031 0xfa79e93583facffaULL
,
2032 0xdf69a384b6df5bdfULL
,
2033 0x7ea9fc9bd77ee57eULL
,
2034 0x241948b43d249024ULL
,
2035 0x3bfe76d7c53bec3bULL
,
2036 0xab9a4b3d31ab96abULL
,
2037 0xcef081d13ece1fceULL
,
2038 0x1199225588114411ULL
,
2039 0x8f8303890c8f068fULL
,
2040 0x4e049c6b4a4e254eULL
,
2041 0xb7667351d1b7e6b7ULL
,
2042 0xebe0cb600beb8bebULL
,
2043 0x3cc178ccfd3cf03cULL
,
2044 0x81fd1fbf7c813e81ULL
,
2045 0x944035fed4946a94ULL
,
2046 0xf71cf30cebf7fbf7ULL
,
2047 0xb9186f67a1b9deb9ULL
,
2048 0x138b265f98134c13ULL
,
2049 0x2c51589c7d2cb02cULL
,
2050 0xd305bbb8d6d36bd3ULL
,
2051 0xe78cd35c6be7bbe7ULL
,
2052 0x6e39dccb576ea56eULL
,
2053 0xc4aa95f36ec437c4ULL
,
2054 0x031b060f18030c03ULL
,
2055 0x56dcac138a564556ULL
,
2056 0x445e88491a440d44ULL
,
2057 0x7fa0fe9edf7fe17fULL
,
2058 0xa9884f3721a99ea9ULL
,
2059 0x2a6754824d2aa82aULL
,
2060 0xbb0a6b6db1bbd6bbULL
,
2061 0xc1879fe246c123c1ULL
,
2062 0x53f1a602a2535153ULL
,
2063 0xdc72a58baedc57dcULL
,
2064 0x0b531627580b2c0bULL
,
2065 0x9d0127d39c9d4e9dULL
,
2066 0x6c2bd8c1476cad6cULL
,
2067 0x31a462f59531c431ULL
,
2068 0x74f3e8b98774cd74ULL
,
2069 0xf615f109e3f6fff6ULL
,
2070 0x464c8c430a460546ULL
,
2071 0xaca5452609ac8aacULL
,
2072 0x89b50f973c891e89ULL
,
2073 0x14b42844a0145014ULL
,
2074 0xe1badf425be1a3e1ULL
,
2075 0x16a62c4eb0165816ULL
,
2076 0x3af774d2cd3ae83aULL
,
2077 0x6906d2d06f69b969ULL
,
2078 0x0941122d48092409ULL
,
2079 0x70d7e0ada770dd70ULL
,
2080 0xb66f7154d9b6e2b6ULL
,
2081 0xd01ebdb7ced067d0ULL
,
2082 0xedd6c77e3bed93edULL
,
2083 0xcce285db2ecc17ccULL
,
2084 0x426884572a421542ULL
,
2085 0x982c2dc2b4985a98ULL
,
2086 0xa4ed550e49a4aaa4ULL
,
2087 0x287550885d28a028ULL
,
2088 0x5c86b831da5c6d5cULL
,
2089 0xf86bed3f93f8c7f8ULL
,
2090 0x86c211a444862286ULL
,
2093 struct whirlpool_context
{
2100 static void __whirlpool_update(void *_ctx
, const uint8_t *m
)
2102 struct whirlpool_context
*ctx
= _ctx
;
2103 uint64_t W
[8], K
[8];
2107 for (i
= 0; i
< 8; i
++) {
2109 W
[i
] = K
[i
] ^ le64toh(*(uint64_t *)(m
+ 8 * i
));
2112 for (r
= 0; r
< R
; r
++) {
2116 K1
[0] = T0
[K
[0] & 0xff] ^
2117 T1
[(K
[7] >> (1 * 8)) & 0xff] ^
2118 T2
[(K
[6] >> (2 * 8)) & 0xff] ^
2119 T3
[(K
[5] >> (3 * 8)) & 0xff] ^
2120 T4
[(K
[4] >> (4 * 8)) & 0xff] ^
2121 T5
[(K
[3] >> (5 * 8)) & 0xff] ^
2122 T6
[(K
[2] >> (6 * 8)) & 0xff] ^
2123 T7
[(K
[1] >> (7 * 8)) & 0xff] ^
2125 K1
[1] = T0
[K
[1] & 0xff] ^
2126 T1
[(K
[0] >> (1 * 8)) & 0xff] ^
2127 T2
[(K
[7] >> (2 * 8)) & 0xff] ^
2128 T3
[(K
[6] >> (3 * 8)) & 0xff] ^
2129 T4
[(K
[5] >> (4 * 8)) & 0xff] ^
2130 T5
[(K
[4] >> (5 * 8)) & 0xff] ^
2131 T6
[(K
[3] >> (6 * 8)) & 0xff] ^
2132 T7
[(K
[2] >> (7 * 8)) & 0xff];
2133 K1
[2] = T0
[K
[2] & 0xff] ^
2134 T1
[(K
[1] >> (1 * 8)) & 0xff] ^
2135 T2
[(K
[0] >> (2 * 8)) & 0xff] ^
2136 T3
[(K
[7] >> (3 * 8)) & 0xff] ^
2137 T4
[(K
[6] >> (4 * 8)) & 0xff] ^
2138 T5
[(K
[5] >> (5 * 8)) & 0xff] ^
2139 T6
[(K
[4] >> (6 * 8)) & 0xff] ^
2140 T7
[(K
[3] >> (7 * 8)) & 0xff];
2141 K1
[3] = T0
[K
[3] & 0xff] ^
2142 T1
[(K
[2] >> (1 * 8)) & 0xff] ^
2143 T2
[(K
[1] >> (2 * 8)) & 0xff] ^
2144 T3
[(K
[0] >> (3 * 8)) & 0xff] ^
2145 T4
[(K
[7] >> (4 * 8)) & 0xff] ^
2146 T5
[(K
[6] >> (5 * 8)) & 0xff] ^
2147 T6
[(K
[5] >> (6 * 8)) & 0xff] ^
2148 T7
[(K
[4] >> (7 * 8)) & 0xff];
2149 K1
[4] = T0
[K
[4] & 0xff] ^
2150 T1
[(K
[3] >> (1 * 8)) & 0xff] ^
2151 T2
[(K
[2] >> (2 * 8)) & 0xff] ^
2152 T3
[(K
[1] >> (3 * 8)) & 0xff] ^
2153 T4
[(K
[0] >> (4 * 8)) & 0xff] ^
2154 T5
[(K
[7] >> (5 * 8)) & 0xff] ^
2155 T6
[(K
[6] >> (6 * 8)) & 0xff] ^
2156 T7
[(K
[5] >> (7 * 8)) & 0xff];
2157 K1
[5] = T0
[K
[5] & 0xff] ^
2158 T1
[(K
[4] >> (1 * 8)) & 0xff] ^
2159 T2
[(K
[3] >> (2 * 8)) & 0xff] ^
2160 T3
[(K
[2] >> (3 * 8)) & 0xff] ^
2161 T4
[(K
[1] >> (4 * 8)) & 0xff] ^
2162 T5
[(K
[0] >> (5 * 8)) & 0xff] ^
2163 T6
[(K
[7] >> (6 * 8)) & 0xff] ^
2164 T7
[(K
[6] >> (7 * 8)) & 0xff];
2165 K1
[6] = T0
[K
[6] & 0xff] ^
2166 T1
[(K
[5] >> (1 * 8)) & 0xff] ^
2167 T2
[(K
[4] >> (2 * 8)) & 0xff] ^
2168 T3
[(K
[3] >> (3 * 8)) & 0xff] ^
2169 T4
[(K
[2] >> (4 * 8)) & 0xff] ^
2170 T5
[(K
[1] >> (5 * 8)) & 0xff] ^
2171 T6
[(K
[0] >> (6 * 8)) & 0xff] ^
2172 T7
[(K
[7] >> (7 * 8)) & 0xff];
2173 K1
[7] = T0
[K
[7] & 0xff] ^
2174 T1
[(K
[6] >> (1 * 8)) & 0xff] ^
2175 T2
[(K
[5] >> (2 * 8)) & 0xff] ^
2176 T3
[(K
[4] >> (3 * 8)) & 0xff] ^
2177 T4
[(K
[3] >> (4 * 8)) & 0xff] ^
2178 T5
[(K
[2] >> (5 * 8)) & 0xff] ^
2179 T6
[(K
[1] >> (6 * 8)) & 0xff] ^
2180 T7
[(K
[0] >> (7 * 8)) & 0xff];
2182 for (i
= 0; i
< 8; i
++)
2185 W1
[0] = T0
[W
[0] & 0xff] ^
2186 T1
[(W
[7] >> (1 * 8)) & 0xff] ^
2187 T2
[(W
[6] >> (2 * 8)) & 0xff] ^
2188 T3
[(W
[5] >> (3 * 8)) & 0xff] ^
2189 T4
[(W
[4] >> (4 * 8)) & 0xff] ^
2190 T5
[(W
[3] >> (5 * 8)) & 0xff] ^
2191 T6
[(W
[2] >> (6 * 8)) & 0xff] ^
2192 T7
[(W
[1] >> (7 * 8)) & 0xff] ^
2194 W1
[1] = T0
[W
[1] & 0xff] ^
2195 T1
[(W
[0] >> (1 * 8)) & 0xff] ^
2196 T2
[(W
[7] >> (2 * 8)) & 0xff] ^
2197 T3
[(W
[6] >> (3 * 8)) & 0xff] ^
2198 T4
[(W
[5] >> (4 * 8)) & 0xff] ^
2199 T5
[(W
[4] >> (5 * 8)) & 0xff] ^
2200 T6
[(W
[3] >> (6 * 8)) & 0xff] ^
2201 T7
[(W
[2] >> (7 * 8)) & 0xff] ^
2203 W1
[2] = T0
[W
[2] & 0xff] ^
2204 T1
[(W
[1] >> (1 * 8)) & 0xff] ^
2205 T2
[(W
[0] >> (2 * 8)) & 0xff] ^
2206 T3
[(W
[7] >> (3 * 8)) & 0xff] ^
2207 T4
[(W
[6] >> (4 * 8)) & 0xff] ^
2208 T5
[(W
[5] >> (5 * 8)) & 0xff] ^
2209 T6
[(W
[4] >> (6 * 8)) & 0xff] ^
2210 T7
[(W
[3] >> (7 * 8)) & 0xff] ^
2212 W1
[3] = T0
[W
[3] & 0xff] ^
2213 T1
[(W
[2] >> (1 * 8)) & 0xff] ^
2214 T2
[(W
[1] >> (2 * 8)) & 0xff] ^
2215 T3
[(W
[0] >> (3 * 8)) & 0xff] ^
2216 T4
[(W
[7] >> (4 * 8)) & 0xff] ^
2217 T5
[(W
[6] >> (5 * 8)) & 0xff] ^
2218 T6
[(W
[5] >> (6 * 8)) & 0xff] ^
2219 T7
[(W
[4] >> (7 * 8)) & 0xff] ^
2221 W1
[4] = T0
[W
[4] & 0xff] ^
2222 T1
[(W
[3] >> (1 * 8)) & 0xff] ^
2223 T2
[(W
[2] >> (2 * 8)) & 0xff] ^
2224 T3
[(W
[1] >> (3 * 8)) & 0xff] ^
2225 T4
[(W
[0] >> (4 * 8)) & 0xff] ^
2226 T5
[(W
[7] >> (5 * 8)) & 0xff] ^
2227 T6
[(W
[6] >> (6 * 8)) & 0xff] ^
2228 T7
[(W
[5] >> (7 * 8)) & 0xff] ^
2230 W1
[5] = T0
[W
[5] & 0xff] ^
2231 T1
[(W
[4] >> (1 * 8)) & 0xff] ^
2232 T2
[(W
[3] >> (2 * 8)) & 0xff] ^
2233 T3
[(W
[2] >> (3 * 8)) & 0xff] ^
2234 T4
[(W
[1] >> (4 * 8)) & 0xff] ^
2235 T5
[(W
[0] >> (5 * 8)) & 0xff] ^
2236 T6
[(W
[7] >> (6 * 8)) & 0xff] ^
2237 T7
[(W
[6] >> (7 * 8)) & 0xff] ^
2239 W1
[6] = T0
[W
[6] & 0xff] ^
2240 T1
[(W
[5] >> (1 * 8)) & 0xff] ^
2241 T2
[(W
[4] >> (2 * 8)) & 0xff] ^
2242 T3
[(W
[3] >> (3 * 8)) & 0xff] ^
2243 T4
[(W
[2] >> (4 * 8)) & 0xff] ^
2244 T5
[(W
[1] >> (5 * 8)) & 0xff] ^
2245 T6
[(W
[0] >> (6 * 8)) & 0xff] ^
2246 T7
[(W
[7] >> (7 * 8)) & 0xff] ^
2248 W1
[7] = T0
[W
[7] & 0xff] ^
2249 T1
[(W
[6] >> (1 * 8)) & 0xff] ^
2250 T2
[(W
[5] >> (2 * 8)) & 0xff] ^
2251 T3
[(W
[4] >> (3 * 8)) & 0xff] ^
2252 T4
[(W
[3] >> (4 * 8)) & 0xff] ^
2253 T5
[(W
[2] >> (5 * 8)) & 0xff] ^
2254 T6
[(W
[1] >> (6 * 8)) & 0xff] ^
2255 T7
[(W
[0] >> (7 * 8)) & 0xff] ^
2258 for (i
= 0; i
< 8; i
++)
2262 for (i
= 0; i
< 8; i
++)
2263 ctx
->H
[i
] ^= W
[i
] ^ le64toh(*(uint64_t *)(m
+ 8 * i
));
2266 void *whirlpool_init_context(void)
2268 struct whirlpool_context
*ctx
;
2270 ctx
= malloc(sizeof(struct whirlpool_context
));
2273 memset(ctx
, 0, sizeof(struct whirlpool_context
));
2277 void whirlpool_fini_context(void *_ctx
)
2279 struct whirlpool_context
*ctx
= _ctx
;
2281 memset(ctx
, 0, sizeof(struct whirlpool_context
));
2285 void whirlpool_update(void *_ctx
, const uint8_t *m
)
2287 struct whirlpool_context
*ctx
= _ctx
;
2289 __whirlpool_update(ctx
, m
);
2293 void _whirlpool_update(void *_ctx
, const uint8_t *m
, unsigned int len
)
2295 struct whirlpool_context
*ctx
= _ctx
;
2300 if (64 - ctx
->m_len
< len
)
2301 inc
= 64 - ctx
->m_len
;
2304 memcpy(&ctx
->m
[ctx
->m_len
], m
, inc
);
2306 ctx
->len
+= inc
* 8;
2310 if (ctx
->m_len
== 512 / 8) {
2311 __whirlpool_update(ctx
, ctx
->m
);
2317 void whirlpool_fini(void *_ctx
)
2319 struct whirlpool_context
*ctx
= _ctx
;
2321 ctx
->m
[ctx
->m_len
] = 0x80;
2323 if (ctx
->m_len
<= 64 - 32) {
2324 memset(&ctx
->m
[ctx
->m_len
], 0, 64 - 8 - ctx
->m_len
);
2326 memset(&ctx
->m
[ctx
->m_len
], 0, 64 - ctx
->m_len
);
2327 __whirlpool_update(ctx
, ctx
->m
);
2328 memset(ctx
->m
, 0, 64 - 8);
2330 *(uint64_t *)&ctx
->m
[64 - 8] = htobe64(ctx
->len
);
2331 __whirlpool_update(ctx
, ctx
->m
);
2334 void whirlpool_digest(void *_ctx
, uint8_t *digest
)
2336 struct whirlpool_context
*ctx
= _ctx
;
2339 for (i
= 0; i
< 8; i
++)
2340 *(uint64_t *)(digest
+ 8 * i
) = htole64(ctx
->H
[i
]);