crc64fast/
table.rs

1// Copyright 2019 TiKV Project Authors. Licensed under MIT or Apache-2.0.
2
3//! Table-based CRC-64-ECMA computer.
4//!
5//! The update function computes the CRC value 16 bytes at a time.
6//! The processing speed is roughly 5× of the one-byte-at-a-time method.
7
8#![allow(clippy::unreadable_literal)]
9
10pub(crate) fn update(mut state: u64, bytes: &[u8]) -> u64 {
11    // Safe.
12    let (left, middle, right) = unsafe { bytes.align_to::<[u8; 16]>() };
13    for b in left {
14        state = update_1(state, *b);
15    }
16    for b in middle {
17        state = update_16(state, b);
18    }
19    for b in right {
20        state = update_1(state, *b);
21    }
22    state
23}
24
25/// Performs the CRC-64-ECMA update, one byte at a time.
26fn update_1(state: u64, b: u8) -> u64 {
27    (state >> 8) ^ TABLE_0[usize::from(b ^ (state as u8))]
28}
29
30/// Performs the CRC-64-ECMA update, 16 bytes at a time.
31fn update_16(state: u64, b: &[u8; 16]) -> u64 {
32    let s = state.to_le_bytes();
33    TABLE_0[usize::from(b[15])]
34        ^ TABLE_1[usize::from(b[14])]
35        ^ TABLE_2[usize::from(b[13])]
36        ^ TABLE_3[usize::from(b[12])]
37        ^ TABLE_4[usize::from(b[11])]
38        ^ TABLE_5[usize::from(b[10])]
39        ^ TABLE_6[usize::from(b[9])]
40        ^ TABLE_7[usize::from(b[8])]
41        ^ TABLE_8[usize::from(b[7] ^ s[7])]
42        ^ TABLE_9[usize::from(b[6] ^ s[6])]
43        ^ TABLE_10[usize::from(b[5] ^ s[5])]
44        ^ TABLE_11[usize::from(b[4] ^ s[4])]
45        ^ TABLE_12[usize::from(b[3] ^ s[3])]
46        ^ TABLE_13[usize::from(b[2] ^ s[2])]
47        ^ TABLE_14[usize::from(b[1] ^ s[1])]
48        ^ TABLE_15[usize::from(b[0] ^ s[0])]
49}
50
51// Constants used in SIMD-based computations.
52// All K_nnn constants are computed by bit_reverse(x^nnn mod POLY).
53pub(crate) const K_127: u64 = 0xdabe_95af_c787_5f40; // same as table::TABLE_7[1]
54pub(crate) const K_191: u64 = 0xe05d_d497_ca39_3ae4; // same as table::TABLE_15[1]
55pub(crate) const K_255: u64 = 0x3be6_53a3_0fe1_af51;
56pub(crate) const K_319: u64 = 0x6009_5b00_8a9e_fa44;
57pub(crate) const K_383: u64 = 0x69a3_5d91_c373_0254;
58pub(crate) const K_447: u64 = 0xb5ea_1af9_c013_aca4;
59pub(crate) const K_511: u64 = 0x081f_6054_a784_2df4;
60pub(crate) const K_575: u64 = 0x6ae3_efbb_9dd4_41f3;
61pub(crate) const K_639: u64 = 0x0e31_d519_421a_63a5;
62pub(crate) const K_703: u64 = 0x2e30_2032_12ca_c325;
63pub(crate) const K_767: u64 = 0xe4ce_2cd5_5fea_0037;
64pub(crate) const K_831: u64 = 0x2fe3_fd29_20ce_82ec;
65pub(crate) const K_895: u64 = 0x9478_74de_5950_52cb;
66pub(crate) const K_959: u64 = 0x9e73_5cb5_9b47_24da;
67pub(crate) const K_1023: u64 = 0xd7d8_6b2a_f73d_e740;
68pub(crate) const K_1087: u64 = 0x8757_d71d_4fcc_1000;
69
70/// The reciprocal of the ECMA polynomial.
71pub(crate) const POLY: u64 = 0x92d8_af2b_af0e_1e85;
72
73/// The polynomial quotient x¹²⁸/POLY.
74pub(crate) const MU: u64 = 0x9c3e_466c_1729_63d5;
75
76// CRC table for the ECMA polynomial (`0x42F0E1EBA9EA3693`).
77// Generated by running `./build_table 0`.
78//
79// Essentially, `TABLE_0[m]` is the polynomial remainder in GF(2) when `m`
80// (`1 = x⁷¹, 2 = x⁷⁰, 4 = x⁶⁹, …, 128 = x⁶⁴`) is divided by the ECMA poly.
81static TABLE_0: [u64; 256] = [
82    0x0000000000000000,
83    0xb32e4cbe03a75f6f,
84    0xf4843657a840a05b,
85    0x47aa7ae9abe7ff34,
86    0x7bd0c384ff8f5e33,
87    0xc8fe8f3afc28015c,
88    0x8f54f5d357cffe68,
89    0x3c7ab96d5468a107,
90    0xf7a18709ff1ebc66,
91    0x448fcbb7fcb9e309,
92    0x0325b15e575e1c3d,
93    0xb00bfde054f94352,
94    0x8c71448d0091e255,
95    0x3f5f08330336bd3a,
96    0x78f572daa8d1420e,
97    0xcbdb3e64ab761d61,
98    0x7d9ba13851336649,
99    0xceb5ed8652943926,
100    0x891f976ff973c612,
101    0x3a31dbd1fad4997d,
102    0x064b62bcaebc387a,
103    0xb5652e02ad1b6715,
104    0xf2cf54eb06fc9821,
105    0x41e11855055bc74e,
106    0x8a3a2631ae2dda2f,
107    0x39146a8fad8a8540,
108    0x7ebe1066066d7a74,
109    0xcd905cd805ca251b,
110    0xf1eae5b551a2841c,
111    0x42c4a90b5205db73,
112    0x056ed3e2f9e22447,
113    0xb6409f5cfa457b28,
114    0xfb374270a266cc92,
115    0x48190ecea1c193fd,
116    0x0fb374270a266cc9,
117    0xbc9d3899098133a6,
118    0x80e781f45de992a1,
119    0x33c9cd4a5e4ecdce,
120    0x7463b7a3f5a932fa,
121    0xc74dfb1df60e6d95,
122    0x0c96c5795d7870f4,
123    0xbfb889c75edf2f9b,
124    0xf812f32ef538d0af,
125    0x4b3cbf90f69f8fc0,
126    0x774606fda2f72ec7,
127    0xc4684a43a15071a8,
128    0x83c230aa0ab78e9c,
129    0x30ec7c140910d1f3,
130    0x86ace348f355aadb,
131    0x3582aff6f0f2f5b4,
132    0x7228d51f5b150a80,
133    0xc10699a158b255ef,
134    0xfd7c20cc0cdaf4e8,
135    0x4e526c720f7dab87,
136    0x09f8169ba49a54b3,
137    0xbad65a25a73d0bdc,
138    0x710d64410c4b16bd,
139    0xc22328ff0fec49d2,
140    0x85895216a40bb6e6,
141    0x36a71ea8a7ace989,
142    0x0adda7c5f3c4488e,
143    0xb9f3eb7bf06317e1,
144    0xfe5991925b84e8d5,
145    0x4d77dd2c5823b7ba,
146    0x64b62bcaebc387a1,
147    0xd7986774e864d8ce,
148    0x90321d9d438327fa,
149    0x231c512340247895,
150    0x1f66e84e144cd992,
151    0xac48a4f017eb86fd,
152    0xebe2de19bc0c79c9,
153    0x58cc92a7bfab26a6,
154    0x9317acc314dd3bc7,
155    0x2039e07d177a64a8,
156    0x67939a94bc9d9b9c,
157    0xd4bdd62abf3ac4f3,
158    0xe8c76f47eb5265f4,
159    0x5be923f9e8f53a9b,
160    0x1c4359104312c5af,
161    0xaf6d15ae40b59ac0,
162    0x192d8af2baf0e1e8,
163    0xaa03c64cb957be87,
164    0xeda9bca512b041b3,
165    0x5e87f01b11171edc,
166    0x62fd4976457fbfdb,
167    0xd1d305c846d8e0b4,
168    0x96797f21ed3f1f80,
169    0x2557339fee9840ef,
170    0xee8c0dfb45ee5d8e,
171    0x5da24145464902e1,
172    0x1a083bacedaefdd5,
173    0xa9267712ee09a2ba,
174    0x955cce7fba6103bd,
175    0x267282c1b9c65cd2,
176    0x61d8f8281221a3e6,
177    0xd2f6b4961186fc89,
178    0x9f8169ba49a54b33,
179    0x2caf25044a02145c,
180    0x6b055fede1e5eb68,
181    0xd82b1353e242b407,
182    0xe451aa3eb62a1500,
183    0x577fe680b58d4a6f,
184    0x10d59c691e6ab55b,
185    0xa3fbd0d71dcdea34,
186    0x6820eeb3b6bbf755,
187    0xdb0ea20db51ca83a,
188    0x9ca4d8e41efb570e,
189    0x2f8a945a1d5c0861,
190    0x13f02d374934a966,
191    0xa0de61894a93f609,
192    0xe7741b60e174093d,
193    0x545a57dee2d35652,
194    0xe21ac88218962d7a,
195    0x5134843c1b317215,
196    0x169efed5b0d68d21,
197    0xa5b0b26bb371d24e,
198    0x99ca0b06e7197349,
199    0x2ae447b8e4be2c26,
200    0x6d4e3d514f59d312,
201    0xde6071ef4cfe8c7d,
202    0x15bb4f8be788911c,
203    0xa6950335e42fce73,
204    0xe13f79dc4fc83147,
205    0x521135624c6f6e28,
206    0x6e6b8c0f1807cf2f,
207    0xdd45c0b11ba09040,
208    0x9aefba58b0476f74,
209    0x29c1f6e6b3e0301b,
210    0xc96c5795d7870f42,
211    0x7a421b2bd420502d,
212    0x3de861c27fc7af19,
213    0x8ec62d7c7c60f076,
214    0xb2bc941128085171,
215    0x0192d8af2baf0e1e,
216    0x4638a2468048f12a,
217    0xf516eef883efae45,
218    0x3ecdd09c2899b324,
219    0x8de39c222b3eec4b,
220    0xca49e6cb80d9137f,
221    0x7967aa75837e4c10,
222    0x451d1318d716ed17,
223    0xf6335fa6d4b1b278,
224    0xb199254f7f564d4c,
225    0x02b769f17cf11223,
226    0xb4f7f6ad86b4690b,
227    0x07d9ba1385133664,
228    0x4073c0fa2ef4c950,
229    0xf35d8c442d53963f,
230    0xcf273529793b3738,
231    0x7c0979977a9c6857,
232    0x3ba3037ed17b9763,
233    0x888d4fc0d2dcc80c,
234    0x435671a479aad56d,
235    0xf0783d1a7a0d8a02,
236    0xb7d247f3d1ea7536,
237    0x04fc0b4dd24d2a59,
238    0x3886b22086258b5e,
239    0x8ba8fe9e8582d431,
240    0xcc0284772e652b05,
241    0x7f2cc8c92dc2746a,
242    0x325b15e575e1c3d0,
243    0x8175595b76469cbf,
244    0xc6df23b2dda1638b,
245    0x75f16f0cde063ce4,
246    0x498bd6618a6e9de3,
247    0xfaa59adf89c9c28c,
248    0xbd0fe036222e3db8,
249    0x0e21ac88218962d7,
250    0xc5fa92ec8aff7fb6,
251    0x76d4de52895820d9,
252    0x317ea4bb22bfdfed,
253    0x8250e80521188082,
254    0xbe2a516875702185,
255    0x0d041dd676d77eea,
256    0x4aae673fdd3081de,
257    0xf9802b81de97deb1,
258    0x4fc0b4dd24d2a599,
259    0xfceef8632775faf6,
260    0xbb44828a8c9205c2,
261    0x086ace348f355aad,
262    0x34107759db5dfbaa,
263    0x873e3be7d8faa4c5,
264    0xc094410e731d5bf1,
265    0x73ba0db070ba049e,
266    0xb86133d4dbcc19ff,
267    0x0b4f7f6ad86b4690,
268    0x4ce50583738cb9a4,
269    0xffcb493d702be6cb,
270    0xc3b1f050244347cc,
271    0x709fbcee27e418a3,
272    0x3735c6078c03e797,
273    0x841b8ab98fa4b8f8,
274    0xadda7c5f3c4488e3,
275    0x1ef430e13fe3d78c,
276    0x595e4a08940428b8,
277    0xea7006b697a377d7,
278    0xd60abfdbc3cbd6d0,
279    0x6524f365c06c89bf,
280    0x228e898c6b8b768b,
281    0x91a0c532682c29e4,
282    0x5a7bfb56c35a3485,
283    0xe955b7e8c0fd6bea,
284    0xaeffcd016b1a94de,
285    0x1dd181bf68bdcbb1,
286    0x21ab38d23cd56ab6,
287    0x9285746c3f7235d9,
288    0xd52f0e859495caed,
289    0x6601423b97329582,
290    0xd041dd676d77eeaa,
291    0x636f91d96ed0b1c5,
292    0x24c5eb30c5374ef1,
293    0x97eba78ec690119e,
294    0xab911ee392f8b099,
295    0x18bf525d915feff6,
296    0x5f1528b43ab810c2,
297    0xec3b640a391f4fad,
298    0x27e05a6e926952cc,
299    0x94ce16d091ce0da3,
300    0xd3646c393a29f297,
301    0x604a2087398eadf8,
302    0x5c3099ea6de60cff,
303    0xef1ed5546e415390,
304    0xa8b4afbdc5a6aca4,
305    0x1b9ae303c601f3cb,
306    0x56ed3e2f9e224471,
307    0xe5c372919d851b1e,
308    0xa26908783662e42a,
309    0x114744c635c5bb45,
310    0x2d3dfdab61ad1a42,
311    0x9e13b115620a452d,
312    0xd9b9cbfcc9edba19,
313    0x6a978742ca4ae576,
314    0xa14cb926613cf817,
315    0x1262f598629ba778,
316    0x55c88f71c97c584c,
317    0xe6e6c3cfcadb0723,
318    0xda9c7aa29eb3a624,
319    0x69b2361c9d14f94b,
320    0x2e184cf536f3067f,
321    0x9d36004b35545910,
322    0x2b769f17cf112238,
323    0x9858d3a9ccb67d57,
324    0xdff2a94067518263,
325    0x6cdce5fe64f6dd0c,
326    0x50a65c93309e7c0b,
327    0xe388102d33392364,
328    0xa4226ac498dedc50,
329    0x170c267a9b79833f,
330    0xdcd7181e300f9e5e,
331    0x6ff954a033a8c131,
332    0x28532e49984f3e05,
333    0x9b7d62f79be8616a,
334    0xa707db9acf80c06d,
335    0x14299724cc279f02,
336    0x5383edcd67c06036,
337    0xe0ada17364673f59,
338];
339
340// CRC table for the ECMA polynomial in the range (`1 = x⁷⁹, …, 128 = x⁷²`).
341// Generated by running `./build_table 1`.
342static TABLE_1: [u64; 256] = [
343    0x0000000000000000,
344    0x54e979925cd0f10d,
345    0xa9d2f324b9a1e21a,
346    0xfd3b8ab6e5711317,
347    0xc17d4962dc4ddab1,
348    0x959430f0809d2bbc,
349    0x68afba4665ec38ab,
350    0x3c46c3d4393cc9a6,
351    0x10223dee1795abe7,
352    0x44cb447c4b455aea,
353    0xb9f0cecaae3449fd,
354    0xed19b758f2e4b8f0,
355    0xd15f748ccbd87156,
356    0x85b60d1e9708805b,
357    0x788d87a87279934c,
358    0x2c64fe3a2ea96241,
359    0x20447bdc2f2b57ce,
360    0x74ad024e73fba6c3,
361    0x899688f8968ab5d4,
362    0xdd7ff16aca5a44d9,
363    0xe13932bef3668d7f,
364    0xb5d04b2cafb67c72,
365    0x48ebc19a4ac76f65,
366    0x1c02b80816179e68,
367    0x3066463238befc29,
368    0x648f3fa0646e0d24,
369    0x99b4b516811f1e33,
370    0xcd5dcc84ddcfef3e,
371    0xf11b0f50e4f32698,
372    0xa5f276c2b823d795,
373    0x58c9fc745d52c482,
374    0x0c2085e60182358f,
375    0x4088f7b85e56af9c,
376    0x14618e2a02865e91,
377    0xe95a049ce7f74d86,
378    0xbdb37d0ebb27bc8b,
379    0x81f5beda821b752d,
380    0xd51cc748decb8420,
381    0x28274dfe3bba9737,
382    0x7cce346c676a663a,
383    0x50aaca5649c3047b,
384    0x0443b3c41513f576,
385    0xf9783972f062e661,
386    0xad9140e0acb2176c,
387    0x91d78334958edeca,
388    0xc53efaa6c95e2fc7,
389    0x380570102c2f3cd0,
390    0x6cec098270ffcddd,
391    0x60cc8c64717df852,
392    0x3425f5f62dad095f,
393    0xc91e7f40c8dc1a48,
394    0x9df706d2940ceb45,
395    0xa1b1c506ad3022e3,
396    0xf558bc94f1e0d3ee,
397    0x086336221491c0f9,
398    0x5c8a4fb0484131f4,
399    0x70eeb18a66e853b5,
400    0x2407c8183a38a2b8,
401    0xd93c42aedf49b1af,
402    0x8dd53b3c839940a2,
403    0xb193f8e8baa58904,
404    0xe57a817ae6757809,
405    0x18410bcc03046b1e,
406    0x4ca8725e5fd49a13,
407    0x8111ef70bcad5f38,
408    0xd5f896e2e07dae35,
409    0x28c31c54050cbd22,
410    0x7c2a65c659dc4c2f,
411    0x406ca61260e08589,
412    0x1485df803c307484,
413    0xe9be5536d9416793,
414    0xbd572ca48591969e,
415    0x9133d29eab38f4df,
416    0xc5daab0cf7e805d2,
417    0x38e121ba129916c5,
418    0x6c0858284e49e7c8,
419    0x504e9bfc77752e6e,
420    0x04a7e26e2ba5df63,
421    0xf99c68d8ced4cc74,
422    0xad75114a92043d79,
423    0xa15594ac938608f6,
424    0xf5bced3ecf56f9fb,
425    0x088767882a27eaec,
426    0x5c6e1e1a76f71be1,
427    0x6028ddce4fcbd247,
428    0x34c1a45c131b234a,
429    0xc9fa2eeaf66a305d,
430    0x9d135778aabac150,
431    0xb177a9428413a311,
432    0xe59ed0d0d8c3521c,
433    0x18a55a663db2410b,
434    0x4c4c23f46162b006,
435    0x700ae020585e79a0,
436    0x24e399b2048e88ad,
437    0xd9d81304e1ff9bba,
438    0x8d316a96bd2f6ab7,
439    0xc19918c8e2fbf0a4,
440    0x9570615abe2b01a9,
441    0x684bebec5b5a12be,
442    0x3ca2927e078ae3b3,
443    0x00e451aa3eb62a15,
444    0x540d28386266db18,
445    0xa936a28e8717c80f,
446    0xfddfdb1cdbc73902,
447    0xd1bb2526f56e5b43,
448    0x85525cb4a9beaa4e,
449    0x7869d6024ccfb959,
450    0x2c80af90101f4854,
451    0x10c66c44292381f2,
452    0x442f15d675f370ff,
453    0xb9149f60908263e8,
454    0xedfde6f2cc5292e5,
455    0xe1dd6314cdd0a76a,
456    0xb5341a8691005667,
457    0x480f903074714570,
458    0x1ce6e9a228a1b47d,
459    0x20a02a76119d7ddb,
460    0x744953e44d4d8cd6,
461    0x8972d952a83c9fc1,
462    0xdd9ba0c0f4ec6ecc,
463    0xf1ff5efada450c8d,
464    0xa51627688695fd80,
465    0x582dadde63e4ee97,
466    0x0cc4d44c3f341f9a,
467    0x308217980608d63c,
468    0x646b6e0a5ad82731,
469    0x9950e4bcbfa93426,
470    0xcdb99d2ee379c52b,
471    0x90fb71cad654a0f5,
472    0xc41208588a8451f8,
473    0x392982ee6ff542ef,
474    0x6dc0fb7c3325b3e2,
475    0x518638a80a197a44,
476    0x056f413a56c98b49,
477    0xf854cb8cb3b8985e,
478    0xacbdb21eef686953,
479    0x80d94c24c1c10b12,
480    0xd43035b69d11fa1f,
481    0x290bbf007860e908,
482    0x7de2c69224b01805,
483    0x41a405461d8cd1a3,
484    0x154d7cd4415c20ae,
485    0xe876f662a42d33b9,
486    0xbc9f8ff0f8fdc2b4,
487    0xb0bf0a16f97ff73b,
488    0xe4567384a5af0636,
489    0x196df93240de1521,
490    0x4d8480a01c0ee42c,
491    0x71c2437425322d8a,
492    0x252b3ae679e2dc87,
493    0xd810b0509c93cf90,
494    0x8cf9c9c2c0433e9d,
495    0xa09d37f8eeea5cdc,
496    0xf4744e6ab23aadd1,
497    0x094fc4dc574bbec6,
498    0x5da6bd4e0b9b4fcb,
499    0x61e07e9a32a7866d,
500    0x350907086e777760,
501    0xc8328dbe8b066477,
502    0x9cdbf42cd7d6957a,
503    0xd073867288020f69,
504    0x849affe0d4d2fe64,
505    0x79a1755631a3ed73,
506    0x2d480cc46d731c7e,
507    0x110ecf10544fd5d8,
508    0x45e7b682089f24d5,
509    0xb8dc3c34edee37c2,
510    0xec3545a6b13ec6cf,
511    0xc051bb9c9f97a48e,
512    0x94b8c20ec3475583,
513    0x698348b826364694,
514    0x3d6a312a7ae6b799,
515    0x012cf2fe43da7e3f,
516    0x55c58b6c1f0a8f32,
517    0xa8fe01dafa7b9c25,
518    0xfc177848a6ab6d28,
519    0xf037fdaea72958a7,
520    0xa4de843cfbf9a9aa,
521    0x59e50e8a1e88babd,
522    0x0d0c771842584bb0,
523    0x314ab4cc7b648216,
524    0x65a3cd5e27b4731b,
525    0x989847e8c2c5600c,
526    0xcc713e7a9e159101,
527    0xe015c040b0bcf340,
528    0xb4fcb9d2ec6c024d,
529    0x49c73364091d115a,
530    0x1d2e4af655cde057,
531    0x216889226cf129f1,
532    0x7581f0b03021d8fc,
533    0x88ba7a06d550cbeb,
534    0xdc53039489803ae6,
535    0x11ea9eba6af9ffcd,
536    0x4503e72836290ec0,
537    0xb8386d9ed3581dd7,
538    0xecd1140c8f88ecda,
539    0xd097d7d8b6b4257c,
540    0x847eae4aea64d471,
541    0x794524fc0f15c766,
542    0x2dac5d6e53c5366b,
543    0x01c8a3547d6c542a,
544    0x5521dac621bca527,
545    0xa81a5070c4cdb630,
546    0xfcf329e2981d473d,
547    0xc0b5ea36a1218e9b,
548    0x945c93a4fdf17f96,
549    0x6967191218806c81,
550    0x3d8e608044509d8c,
551    0x31aee56645d2a803,
552    0x65479cf41902590e,
553    0x987c1642fc734a19,
554    0xcc956fd0a0a3bb14,
555    0xf0d3ac04999f72b2,
556    0xa43ad596c54f83bf,
557    0x59015f20203e90a8,
558    0x0de826b27cee61a5,
559    0x218cd888524703e4,
560    0x7565a11a0e97f2e9,
561    0x885e2bacebe6e1fe,
562    0xdcb7523eb73610f3,
563    0xe0f191ea8e0ad955,
564    0xb418e878d2da2858,
565    0x492362ce37ab3b4f,
566    0x1dca1b5c6b7bca42,
567    0x5162690234af5051,
568    0x058b1090687fa15c,
569    0xf8b09a268d0eb24b,
570    0xac59e3b4d1de4346,
571    0x901f2060e8e28ae0,
572    0xc4f659f2b4327bed,
573    0x39cdd344514368fa,
574    0x6d24aad60d9399f7,
575    0x414054ec233afbb6,
576    0x15a92d7e7fea0abb,
577    0xe892a7c89a9b19ac,
578    0xbc7bde5ac64be8a1,
579    0x803d1d8eff772107,
580    0xd4d4641ca3a7d00a,
581    0x29efeeaa46d6c31d,
582    0x7d0697381a063210,
583    0x712612de1b84079f,
584    0x25cf6b4c4754f692,
585    0xd8f4e1faa225e585,
586    0x8c1d9868fef51488,
587    0xb05b5bbcc7c9dd2e,
588    0xe4b2222e9b192c23,
589    0x1989a8987e683f34,
590    0x4d60d10a22b8ce39,
591    0x61042f300c11ac78,
592    0x35ed56a250c15d75,
593    0xc8d6dc14b5b04e62,
594    0x9c3fa586e960bf6f,
595    0xa0796652d05c76c9,
596    0xf4901fc08c8c87c4,
597    0x09ab957669fd94d3,
598    0x5d42ece4352d65de,
599];
600
601// CRC table for the ECMA polynomial in the range (`1 = x⁸⁷, …, 128 = x⁸⁰`).
602// Generated by running `./build_table 2`.
603static TABLE_2: [u64; 256] = [
604    0x0000000000000000,
605    0x3f0be14a916a6dcb,
606    0x7e17c29522d4db96,
607    0x411c23dfb3beb65d,
608    0xfc2f852a45a9b72c,
609    0xc3246460d4c3dae7,
610    0x823847bf677d6cba,
611    0xbd33a6f5f6170171,
612    0x6a87a57f245d70dd,
613    0x558c4435b5371d16,
614    0x149067ea0689ab4b,
615    0x2b9b86a097e3c680,
616    0x96a8205561f4c7f1,
617    0xa9a3c11ff09eaa3a,
618    0xe8bfe2c043201c67,
619    0xd7b4038ad24a71ac,
620    0xd50f4afe48bae1ba,
621    0xea04abb4d9d08c71,
622    0xab18886b6a6e3a2c,
623    0x94136921fb0457e7,
624    0x2920cfd40d135696,
625    0x162b2e9e9c793b5d,
626    0x57370d412fc78d00,
627    0x683cec0bbeade0cb,
628    0xbf88ef816ce79167,
629    0x80830ecbfd8dfcac,
630    0xc19f2d144e334af1,
631    0xfe94cc5edf59273a,
632    0x43a76aab294e264b,
633    0x7cac8be1b8244b80,
634    0x3db0a83e0b9afddd,
635    0x02bb49749af09016,
636    0x38c63ad73e7bddf1,
637    0x07cddb9daf11b03a,
638    0x46d1f8421caf0667,
639    0x79da19088dc56bac,
640    0xc4e9bffd7bd26add,
641    0xfbe25eb7eab80716,
642    0xbafe7d685906b14b,
643    0x85f59c22c86cdc80,
644    0x52419fa81a26ad2c,
645    0x6d4a7ee28b4cc0e7,
646    0x2c565d3d38f276ba,
647    0x135dbc77a9981b71,
648    0xae6e1a825f8f1a00,
649    0x9165fbc8cee577cb,
650    0xd079d8177d5bc196,
651    0xef72395dec31ac5d,
652    0xedc9702976c13c4b,
653    0xd2c29163e7ab5180,
654    0x93deb2bc5415e7dd,
655    0xacd553f6c57f8a16,
656    0x11e6f50333688b67,
657    0x2eed1449a202e6ac,
658    0x6ff1379611bc50f1,
659    0x50fad6dc80d63d3a,
660    0x874ed556529c4c96,
661    0xb845341cc3f6215d,
662    0xf95917c370489700,
663    0xc652f689e122facb,
664    0x7b61507c1735fbba,
665    0x446ab136865f9671,
666    0x057692e935e1202c,
667    0x3a7d73a3a48b4de7,
668    0x718c75ae7cf7bbe2,
669    0x4e8794e4ed9dd629,
670    0x0f9bb73b5e236074,
671    0x30905671cf490dbf,
672    0x8da3f084395e0cce,
673    0xb2a811cea8346105,
674    0xf3b432111b8ad758,
675    0xccbfd35b8ae0ba93,
676    0x1b0bd0d158aacb3f,
677    0x2400319bc9c0a6f4,
678    0x651c12447a7e10a9,
679    0x5a17f30eeb147d62,
680    0xe72455fb1d037c13,
681    0xd82fb4b18c6911d8,
682    0x9933976e3fd7a785,
683    0xa6387624aebdca4e,
684    0xa4833f50344d5a58,
685    0x9b88de1aa5273793,
686    0xda94fdc5169981ce,
687    0xe59f1c8f87f3ec05,
688    0x58acba7a71e4ed74,
689    0x67a75b30e08e80bf,
690    0x26bb78ef533036e2,
691    0x19b099a5c25a5b29,
692    0xce049a2f10102a85,
693    0xf10f7b65817a474e,
694    0xb01358ba32c4f113,
695    0x8f18b9f0a3ae9cd8,
696    0x322b1f0555b99da9,
697    0x0d20fe4fc4d3f062,
698    0x4c3cdd90776d463f,
699    0x73373cdae6072bf4,
700    0x494a4f79428c6613,
701    0x7641ae33d3e60bd8,
702    0x375d8dec6058bd85,
703    0x08566ca6f132d04e,
704    0xb565ca530725d13f,
705    0x8a6e2b19964fbcf4,
706    0xcb7208c625f10aa9,
707    0xf479e98cb49b6762,
708    0x23cdea0666d116ce,
709    0x1cc60b4cf7bb7b05,
710    0x5dda28934405cd58,
711    0x62d1c9d9d56fa093,
712    0xdfe26f2c2378a1e2,
713    0xe0e98e66b212cc29,
714    0xa1f5adb901ac7a74,
715    0x9efe4cf390c617bf,
716    0x9c4505870a3687a9,
717    0xa34ee4cd9b5cea62,
718    0xe252c71228e25c3f,
719    0xdd592658b98831f4,
720    0x606a80ad4f9f3085,
721    0x5f6161e7def55d4e,
722    0x1e7d42386d4beb13,
723    0x2176a372fc2186d8,
724    0xf6c2a0f82e6bf774,
725    0xc9c941b2bf019abf,
726    0x88d5626d0cbf2ce2,
727    0xb7de83279dd54129,
728    0x0aed25d26bc24058,
729    0x35e6c498faa82d93,
730    0x74fae74749169bce,
731    0x4bf1060dd87cf605,
732    0xe318eb5cf9ef77c4,
733    0xdc130a1668851a0f,
734    0x9d0f29c9db3bac52,
735    0xa204c8834a51c199,
736    0x1f376e76bc46c0e8,
737    0x203c8f3c2d2cad23,
738    0x6120ace39e921b7e,
739    0x5e2b4da90ff876b5,
740    0x899f4e23ddb20719,
741    0xb694af694cd86ad2,
742    0xf7888cb6ff66dc8f,
743    0xc8836dfc6e0cb144,
744    0x75b0cb09981bb035,
745    0x4abb2a430971ddfe,
746    0x0ba7099cbacf6ba3,
747    0x34ace8d62ba50668,
748    0x3617a1a2b155967e,
749    0x091c40e8203ffbb5,
750    0x4800633793814de8,
751    0x770b827d02eb2023,
752    0xca382488f4fc2152,
753    0xf533c5c265964c99,
754    0xb42fe61dd628fac4,
755    0x8b2407574742970f,
756    0x5c9004dd9508e6a3,
757    0x639be59704628b68,
758    0x2287c648b7dc3d35,
759    0x1d8c270226b650fe,
760    0xa0bf81f7d0a1518f,
761    0x9fb460bd41cb3c44,
762    0xdea84362f2758a19,
763    0xe1a3a228631fe7d2,
764    0xdbded18bc794aa35,
765    0xe4d530c156fec7fe,
766    0xa5c9131ee54071a3,
767    0x9ac2f254742a1c68,
768    0x27f154a1823d1d19,
769    0x18fab5eb135770d2,
770    0x59e69634a0e9c68f,
771    0x66ed777e3183ab44,
772    0xb15974f4e3c9dae8,
773    0x8e5295be72a3b723,
774    0xcf4eb661c11d017e,
775    0xf045572b50776cb5,
776    0x4d76f1dea6606dc4,
777    0x727d1094370a000f,
778    0x3361334b84b4b652,
779    0x0c6ad20115dedb99,
780    0x0ed19b758f2e4b8f,
781    0x31da7a3f1e442644,
782    0x70c659e0adfa9019,
783    0x4fcdb8aa3c90fdd2,
784    0xf2fe1e5fca87fca3,
785    0xcdf5ff155bed9168,
786    0x8ce9dccae8532735,
787    0xb3e23d8079394afe,
788    0x64563e0aab733b52,
789    0x5b5ddf403a195699,
790    0x1a41fc9f89a7e0c4,
791    0x254a1dd518cd8d0f,
792    0x9879bb20eeda8c7e,
793    0xa7725a6a7fb0e1b5,
794    0xe66e79b5cc0e57e8,
795    0xd96598ff5d643a23,
796    0x92949ef28518cc26,
797    0xad9f7fb81472a1ed,
798    0xec835c67a7cc17b0,
799    0xd388bd2d36a67a7b,
800    0x6ebb1bd8c0b17b0a,
801    0x51b0fa9251db16c1,
802    0x10acd94de265a09c,
803    0x2fa73807730fcd57,
804    0xf8133b8da145bcfb,
805    0xc718dac7302fd130,
806    0x8604f9188391676d,
807    0xb90f185212fb0aa6,
808    0x043cbea7e4ec0bd7,
809    0x3b375fed7586661c,
810    0x7a2b7c32c638d041,
811    0x45209d785752bd8a,
812    0x479bd40ccda22d9c,
813    0x789035465cc84057,
814    0x398c1699ef76f60a,
815    0x0687f7d37e1c9bc1,
816    0xbbb45126880b9ab0,
817    0x84bfb06c1961f77b,
818    0xc5a393b3aadf4126,
819    0xfaa872f93bb52ced,
820    0x2d1c7173e9ff5d41,
821    0x121790397895308a,
822    0x530bb3e6cb2b86d7,
823    0x6c0052ac5a41eb1c,
824    0xd133f459ac56ea6d,
825    0xee3815133d3c87a6,
826    0xaf2436cc8e8231fb,
827    0x902fd7861fe85c30,
828    0xaa52a425bb6311d7,
829    0x9559456f2a097c1c,
830    0xd44566b099b7ca41,
831    0xeb4e87fa08dda78a,
832    0x567d210ffecaa6fb,
833    0x6976c0456fa0cb30,
834    0x286ae39adc1e7d6d,
835    0x176102d04d7410a6,
836    0xc0d5015a9f3e610a,
837    0xffdee0100e540cc1,
838    0xbec2c3cfbdeaba9c,
839    0x81c922852c80d757,
840    0x3cfa8470da97d626,
841    0x03f1653a4bfdbbed,
842    0x42ed46e5f8430db0,
843    0x7de6a7af6929607b,
844    0x7f5deedbf3d9f06d,
845    0x40560f9162b39da6,
846    0x014a2c4ed10d2bfb,
847    0x3e41cd0440674630,
848    0x83726bf1b6704741,
849    0xbc798abb271a2a8a,
850    0xfd65a96494a49cd7,
851    0xc26e482e05cef11c,
852    0x15da4ba4d78480b0,
853    0x2ad1aaee46eeed7b,
854    0x6bcd8931f5505b26,
855    0x54c6687b643a36ed,
856    0xe9f5ce8e922d379c,
857    0xd6fe2fc403475a57,
858    0x97e20c1bb0f9ec0a,
859    0xa8e9ed51219381c1,
860];
861
862// CRC table for the ECMA polynomial in the range (`1 = x⁹⁵, …, 128 = x⁸⁸`).
863// Generated by running `./build_table 3`.
864static TABLE_3: [u64; 256] = [
865    0x0000000000000000,
866    0x1dee8a5e222ca1dc,
867    0x3bdd14bc445943b8,
868    0x26339ee26675e264,
869    0x77ba297888b28770,
870    0x6a54a326aa9e26ac,
871    0x4c673dc4ccebc4c8,
872    0x5189b79aeec76514,
873    0xef7452f111650ee0,
874    0xf29ad8af3349af3c,
875    0xd4a9464d553c4d58,
876    0xc947cc137710ec84,
877    0x98ce7b8999d78990,
878    0x8520f1d7bbfb284c,
879    0xa3136f35dd8eca28,
880    0xbefde56bffa26bf4,
881    0x4c300ac98dc40345,
882    0x51de8097afe8a299,
883    0x77ed1e75c99d40fd,
884    0x6a03942bebb1e121,
885    0x3b8a23b105768435,
886    0x2664a9ef275a25e9,
887    0x0057370d412fc78d,
888    0x1db9bd5363036651,
889    0xa34458389ca10da5,
890    0xbeaad266be8dac79,
891    0x98994c84d8f84e1d,
892    0x8577c6dafad4efc1,
893    0xd4fe714014138ad5,
894    0xc910fb1e363f2b09,
895    0xef2365fc504ac96d,
896    0xf2cdefa2726668b1,
897    0x986015931b88068a,
898    0x858e9fcd39a4a756,
899    0xa3bd012f5fd14532,
900    0xbe538b717dfde4ee,
901    0xefda3ceb933a81fa,
902    0xf234b6b5b1162026,
903    0xd4072857d763c242,
904    0xc9e9a209f54f639e,
905    0x771447620aed086a,
906    0x6afacd3c28c1a9b6,
907    0x4cc953de4eb44bd2,
908    0x5127d9806c98ea0e,
909    0x00ae6e1a825f8f1a,
910    0x1d40e444a0732ec6,
911    0x3b737aa6c606cca2,
912    0x269df0f8e42a6d7e,
913    0xd4501f5a964c05cf,
914    0xc9be9504b460a413,
915    0xef8d0be6d2154677,
916    0xf26381b8f039e7ab,
917    0xa3ea36221efe82bf,
918    0xbe04bc7c3cd22363,
919    0x9837229e5aa7c107,
920    0x85d9a8c0788b60db,
921    0x3b244dab87290b2f,
922    0x26cac7f5a505aaf3,
923    0x00f95917c3704897,
924    0x1d17d349e15ce94b,
925    0x4c9e64d30f9b8c5f,
926    0x5170ee8d2db72d83,
927    0x7743706f4bc2cfe7,
928    0x6aadfa3169ee6e3b,
929    0xa218840d981e1391,
930    0xbff60e53ba32b24d,
931    0x99c590b1dc475029,
932    0x842b1aeffe6bf1f5,
933    0xd5a2ad7510ac94e1,
934    0xc84c272b3280353d,
935    0xee7fb9c954f5d759,
936    0xf391339776d97685,
937    0x4d6cd6fc897b1d71,
938    0x50825ca2ab57bcad,
939    0x76b1c240cd225ec9,
940    0x6b5f481eef0eff15,
941    0x3ad6ff8401c99a01,
942    0x273875da23e53bdd,
943    0x010beb384590d9b9,
944    0x1ce5616667bc7865,
945    0xee288ec415da10d4,
946    0xf3c6049a37f6b108,
947    0xd5f59a785183536c,
948    0xc81b102673aff2b0,
949    0x9992a7bc9d6897a4,
950    0x847c2de2bf443678,
951    0xa24fb300d931d41c,
952    0xbfa1395efb1d75c0,
953    0x015cdc3504bf1e34,
954    0x1cb2566b2693bfe8,
955    0x3a81c88940e65d8c,
956    0x276f42d762cafc50,
957    0x76e6f54d8c0d9944,
958    0x6b087f13ae213898,
959    0x4d3be1f1c854dafc,
960    0x50d56bafea787b20,
961    0x3a78919e8396151b,
962    0x27961bc0a1bab4c7,
963    0x01a58522c7cf56a3,
964    0x1c4b0f7ce5e3f77f,
965    0x4dc2b8e60b24926b,
966    0x502c32b8290833b7,
967    0x761fac5a4f7dd1d3,
968    0x6bf126046d51700f,
969    0xd50cc36f92f31bfb,
970    0xc8e24931b0dfba27,
971    0xeed1d7d3d6aa5843,
972    0xf33f5d8df486f99f,
973    0xa2b6ea171a419c8b,
974    0xbf586049386d3d57,
975    0x996bfeab5e18df33,
976    0x848574f57c347eef,
977    0x76489b570e52165e,
978    0x6ba611092c7eb782,
979    0x4d958feb4a0b55e6,
980    0x507b05b56827f43a,
981    0x01f2b22f86e0912e,
982    0x1c1c3871a4cc30f2,
983    0x3a2fa693c2b9d296,
984    0x27c12ccde095734a,
985    0x993cc9a61f3718be,
986    0x84d243f83d1bb962,
987    0xa2e1dd1a5b6e5b06,
988    0xbf0f57447942fada,
989    0xee86e0de97859fce,
990    0xf3686a80b5a93e12,
991    0xd55bf462d3dcdc76,
992    0xc8b57e3cf1f07daa,
993    0xd6e9a7309f3239a7,
994    0xcb072d6ebd1e987b,
995    0xed34b38cdb6b7a1f,
996    0xf0da39d2f947dbc3,
997    0xa1538e481780bed7,
998    0xbcbd041635ac1f0b,
999    0x9a8e9af453d9fd6f,
1000    0x876010aa71f55cb3,
1001    0x399df5c18e573747,
1002    0x24737f9fac7b969b,
1003    0x0240e17dca0e74ff,
1004    0x1fae6b23e822d523,
1005    0x4e27dcb906e5b037,
1006    0x53c956e724c911eb,
1007    0x75fac80542bcf38f,
1008    0x6814425b60905253,
1009    0x9ad9adf912f63ae2,
1010    0x873727a730da9b3e,
1011    0xa104b94556af795a,
1012    0xbcea331b7483d886,
1013    0xed6384819a44bd92,
1014    0xf08d0edfb8681c4e,
1015    0xd6be903dde1dfe2a,
1016    0xcb501a63fc315ff6,
1017    0x75adff0803933402,
1018    0x6843755621bf95de,
1019    0x4e70ebb447ca77ba,
1020    0x539e61ea65e6d666,
1021    0x0217d6708b21b372,
1022    0x1ff95c2ea90d12ae,
1023    0x39cac2cccf78f0ca,
1024    0x24244892ed545116,
1025    0x4e89b2a384ba3f2d,
1026    0x536738fda6969ef1,
1027    0x7554a61fc0e37c95,
1028    0x68ba2c41e2cfdd49,
1029    0x39339bdb0c08b85d,
1030    0x24dd11852e241981,
1031    0x02ee8f674851fbe5,
1032    0x1f0005396a7d5a39,
1033    0xa1fde05295df31cd,
1034    0xbc136a0cb7f39011,
1035    0x9a20f4eed1867275,
1036    0x87ce7eb0f3aad3a9,
1037    0xd647c92a1d6db6bd,
1038    0xcba943743f411761,
1039    0xed9add965934f505,
1040    0xf07457c87b1854d9,
1041    0x02b9b86a097e3c68,
1042    0x1f5732342b529db4,
1043    0x3964acd64d277fd0,
1044    0x248a26886f0bde0c,
1045    0x7503911281ccbb18,
1046    0x68ed1b4ca3e01ac4,
1047    0x4ede85aec595f8a0,
1048    0x53300ff0e7b9597c,
1049    0xedcdea9b181b3288,
1050    0xf02360c53a379354,
1051    0xd610fe275c427130,
1052    0xcbfe74797e6ed0ec,
1053    0x9a77c3e390a9b5f8,
1054    0x879949bdb2851424,
1055    0xa1aad75fd4f0f640,
1056    0xbc445d01f6dc579c,
1057    0x74f1233d072c2a36,
1058    0x691fa96325008bea,
1059    0x4f2c37814375698e,
1060    0x52c2bddf6159c852,
1061    0x034b0a458f9ead46,
1062    0x1ea5801badb20c9a,
1063    0x38961ef9cbc7eefe,
1064    0x257894a7e9eb4f22,
1065    0x9b8571cc164924d6,
1066    0x866bfb923465850a,
1067    0xa05865705210676e,
1068    0xbdb6ef2e703cc6b2,
1069    0xec3f58b49efba3a6,
1070    0xf1d1d2eabcd7027a,
1071    0xd7e24c08daa2e01e,
1072    0xca0cc656f88e41c2,
1073    0x38c129f48ae82973,
1074    0x252fa3aaa8c488af,
1075    0x031c3d48ceb16acb,
1076    0x1ef2b716ec9dcb17,
1077    0x4f7b008c025aae03,
1078    0x52958ad220760fdf,
1079    0x74a614304603edbb,
1080    0x69489e6e642f4c67,
1081    0xd7b57b059b8d2793,
1082    0xca5bf15bb9a1864f,
1083    0xec686fb9dfd4642b,
1084    0xf186e5e7fdf8c5f7,
1085    0xa00f527d133fa0e3,
1086    0xbde1d8233113013f,
1087    0x9bd246c15766e35b,
1088    0x863ccc9f754a4287,
1089    0xec9136ae1ca42cbc,
1090    0xf17fbcf03e888d60,
1091    0xd74c221258fd6f04,
1092    0xcaa2a84c7ad1ced8,
1093    0x9b2b1fd69416abcc,
1094    0x86c59588b63a0a10,
1095    0xa0f60b6ad04fe874,
1096    0xbd188134f26349a8,
1097    0x03e5645f0dc1225c,
1098    0x1e0bee012fed8380,
1099    0x383870e3499861e4,
1100    0x25d6fabd6bb4c038,
1101    0x745f4d278573a52c,
1102    0x69b1c779a75f04f0,
1103    0x4f82599bc12ae694,
1104    0x526cd3c5e3064748,
1105    0xa0a13c6791602ff9,
1106    0xbd4fb639b34c8e25,
1107    0x9b7c28dbd5396c41,
1108    0x8692a285f715cd9d,
1109    0xd71b151f19d2a889,
1110    0xcaf59f413bfe0955,
1111    0xecc601a35d8beb31,
1112    0xf1288bfd7fa74aed,
1113    0x4fd56e9680052119,
1114    0x523be4c8a22980c5,
1115    0x74087a2ac45c62a1,
1116    0x69e6f074e670c37d,
1117    0x386f47ee08b7a669,
1118    0x2581cdb02a9b07b5,
1119    0x03b253524ceee5d1,
1120    0x1e5cd90c6ec2440d,
1121];
1122
1123// CRC table for the ECMA polynomial in the range (`1 = x¹⁰³, …, 128 = x⁹⁶`).
1124// Generated by running `./build_table 4`.
1125static TABLE_4: [u64; 256] = [
1126    0x0000000000000000,
1127    0x5c2d776033c4205e,
1128    0xb85aeec0678840bc,
1129    0xe47799a0544c60e2,
1130    0xe26d72ab601e9ffd,
1131    0xbe4005cb53dabfa3,
1132    0x5a379c6b0796df41,
1133    0x061aeb0b3452ff1f,
1134    0x56024a7d6f33217f,
1135    0x0a2f3d1d5cf70121,
1136    0xee58a4bd08bb61c3,
1137    0xb275d3dd3b7f419d,
1138    0xb46f38d60f2dbe82,
1139    0xe8424fb63ce99edc,
1140    0x0c35d61668a5fe3e,
1141    0x5018a1765b61de60,
1142    0xac0494fade6642fe,
1143    0xf029e39aeda262a0,
1144    0x145e7a3ab9ee0242,
1145    0x48730d5a8a2a221c,
1146    0x4e69e651be78dd03,
1147    0x124491318dbcfd5d,
1148    0xf6330891d9f09dbf,
1149    0xaa1e7ff1ea34bde1,
1150    0xfa06de87b1556381,
1151    0xa62ba9e7829143df,
1152    0x425c3047d6dd233d,
1153    0x1e714727e5190363,
1154    0x186bac2cd14bfc7c,
1155    0x4446db4ce28fdc22,
1156    0xa03142ecb6c3bcc0,
1157    0xfc1c358c85079c9e,
1158    0xcad186de13c29b79,
1159    0x96fcf1be2006bb27,
1160    0x728b681e744adbc5,
1161    0x2ea61f7e478efb9b,
1162    0x28bcf47573dc0484,
1163    0x74918315401824da,
1164    0x90e61ab514544438,
1165    0xcccb6dd527906466,
1166    0x9cd3cca37cf1ba06,
1167    0xc0febbc34f359a58,
1168    0x248922631b79faba,
1169    0x78a4550328bddae4,
1170    0x7ebebe081cef25fb,
1171    0x2293c9682f2b05a5,
1172    0xc6e450c87b676547,
1173    0x9ac927a848a34519,
1174    0x66d51224cda4d987,
1175    0x3af86544fe60f9d9,
1176    0xde8ffce4aa2c993b,
1177    0x82a28b8499e8b965,
1178    0x84b8608fadba467a,
1179    0xd89517ef9e7e6624,
1180    0x3ce28e4fca3206c6,
1181    0x60cff92ff9f62698,
1182    0x30d75859a297f8f8,
1183    0x6cfa2f399153d8a6,
1184    0x888db699c51fb844,
1185    0xd4a0c1f9f6db981a,
1186    0xd2ba2af2c2896705,
1187    0x8e975d92f14d475b,
1188    0x6ae0c432a50127b9,
1189    0x36cdb35296c507e7,
1190    0x077ba297888b2877,
1191    0x5b56d5f7bb4f0829,
1192    0xbf214c57ef0368cb,
1193    0xe30c3b37dcc74895,
1194    0xe516d03ce895b78a,
1195    0xb93ba75cdb5197d4,
1196    0x5d4c3efc8f1df736,
1197    0x0161499cbcd9d768,
1198    0x5179e8eae7b80908,
1199    0x0d549f8ad47c2956,
1200    0xe923062a803049b4,
1201    0xb50e714ab3f469ea,
1202    0xb3149a4187a696f5,
1203    0xef39ed21b462b6ab,
1204    0x0b4e7481e02ed649,
1205    0x576303e1d3eaf617,
1206    0xab7f366d56ed6a89,
1207    0xf752410d65294ad7,
1208    0x1325d8ad31652a35,
1209    0x4f08afcd02a10a6b,
1210    0x491244c636f3f574,
1211    0x153f33a60537d52a,
1212    0xf148aa06517bb5c8,
1213    0xad65dd6662bf9596,
1214    0xfd7d7c1039de4bf6,
1215    0xa1500b700a1a6ba8,
1216    0x452792d05e560b4a,
1217    0x190ae5b06d922b14,
1218    0x1f100ebb59c0d40b,
1219    0x433d79db6a04f455,
1220    0xa74ae07b3e4894b7,
1221    0xfb67971b0d8cb4e9,
1222    0xcdaa24499b49b30e,
1223    0x91875329a88d9350,
1224    0x75f0ca89fcc1f3b2,
1225    0x29ddbde9cf05d3ec,
1226    0x2fc756e2fb572cf3,
1227    0x73ea2182c8930cad,
1228    0x979db8229cdf6c4f,
1229    0xcbb0cf42af1b4c11,
1230    0x9ba86e34f47a9271,
1231    0xc7851954c7beb22f,
1232    0x23f280f493f2d2cd,
1233    0x7fdff794a036f293,
1234    0x79c51c9f94640d8c,
1235    0x25e86bffa7a02dd2,
1236    0xc19ff25ff3ec4d30,
1237    0x9db2853fc0286d6e,
1238    0x61aeb0b3452ff1f0,
1239    0x3d83c7d376ebd1ae,
1240    0xd9f45e7322a7b14c,
1241    0x85d9291311639112,
1242    0x83c3c21825316e0d,
1243    0xdfeeb57816f54e53,
1244    0x3b992cd842b92eb1,
1245    0x67b45bb8717d0eef,
1246    0x37acface2a1cd08f,
1247    0x6b818dae19d8f0d1,
1248    0x8ff6140e4d949033,
1249    0xd3db636e7e50b06d,
1250    0xd5c188654a024f72,
1251    0x89ecff0579c66f2c,
1252    0x6d9b66a52d8a0fce,
1253    0x31b611c51e4e2f90,
1254    0x0ef7452f111650ee,
1255    0x52da324f22d270b0,
1256    0xb6adabef769e1052,
1257    0xea80dc8f455a300c,
1258    0xec9a37847108cf13,
1259    0xb0b740e442ccef4d,
1260    0x54c0d94416808faf,
1261    0x08edae242544aff1,
1262    0x58f50f527e257191,
1263    0x04d878324de151cf,
1264    0xe0afe19219ad312d,
1265    0xbc8296f22a691173,
1266    0xba987df91e3bee6c,
1267    0xe6b50a992dffce32,
1268    0x02c2933979b3aed0,
1269    0x5eefe4594a778e8e,
1270    0xa2f3d1d5cf701210,
1271    0xfedea6b5fcb4324e,
1272    0x1aa93f15a8f852ac,
1273    0x468448759b3c72f2,
1274    0x409ea37eaf6e8ded,
1275    0x1cb3d41e9caaadb3,
1276    0xf8c44dbec8e6cd51,
1277    0xa4e93adefb22ed0f,
1278    0xf4f19ba8a043336f,
1279    0xa8dcecc893871331,
1280    0x4cab7568c7cb73d3,
1281    0x10860208f40f538d,
1282    0x169ce903c05dac92,
1283    0x4ab19e63f3998ccc,
1284    0xaec607c3a7d5ec2e,
1285    0xf2eb70a39411cc70,
1286    0xc426c3f102d4cb97,
1287    0x980bb4913110ebc9,
1288    0x7c7c2d31655c8b2b,
1289    0x20515a515698ab75,
1290    0x264bb15a62ca546a,
1291    0x7a66c63a510e7434,
1292    0x9e115f9a054214d6,
1293    0xc23c28fa36863488,
1294    0x9224898c6de7eae8,
1295    0xce09feec5e23cab6,
1296    0x2a7e674c0a6faa54,
1297    0x7653102c39ab8a0a,
1298    0x7049fb270df97515,
1299    0x2c648c473e3d554b,
1300    0xc81315e76a7135a9,
1301    0x943e628759b515f7,
1302    0x6822570bdcb28969,
1303    0x340f206bef76a937,
1304    0xd078b9cbbb3ac9d5,
1305    0x8c55ceab88fee98b,
1306    0x8a4f25a0bcac1694,
1307    0xd66252c08f6836ca,
1308    0x3215cb60db245628,
1309    0x6e38bc00e8e07676,
1310    0x3e201d76b381a816,
1311    0x620d6a1680458848,
1312    0x867af3b6d409e8aa,
1313    0xda5784d6e7cdc8f4,
1314    0xdc4d6fddd39f37eb,
1315    0x806018bde05b17b5,
1316    0x6417811db4177757,
1317    0x383af67d87d35709,
1318    0x098ce7b8999d7899,
1319    0x55a190d8aa5958c7,
1320    0xb1d60978fe153825,
1321    0xedfb7e18cdd1187b,
1322    0xebe19513f983e764,
1323    0xb7cce273ca47c73a,
1324    0x53bb7bd39e0ba7d8,
1325    0x0f960cb3adcf8786,
1326    0x5f8eadc5f6ae59e6,
1327    0x03a3daa5c56a79b8,
1328    0xe7d443059126195a,
1329    0xbbf93465a2e23904,
1330    0xbde3df6e96b0c61b,
1331    0xe1cea80ea574e645,
1332    0x05b931aef13886a7,
1333    0x599446cec2fca6f9,
1334    0xa588734247fb3a67,
1335    0xf9a50422743f1a39,
1336    0x1dd29d8220737adb,
1337    0x41ffeae213b75a85,
1338    0x47e501e927e5a59a,
1339    0x1bc87689142185c4,
1340    0xffbfef29406de526,
1341    0xa392984973a9c578,
1342    0xf38a393f28c81b18,
1343    0xafa74e5f1b0c3b46,
1344    0x4bd0d7ff4f405ba4,
1345    0x17fda09f7c847bfa,
1346    0x11e74b9448d684e5,
1347    0x4dca3cf47b12a4bb,
1348    0xa9bda5542f5ec459,
1349    0xf590d2341c9ae407,
1350    0xc35d61668a5fe3e0,
1351    0x9f701606b99bc3be,
1352    0x7b078fa6edd7a35c,
1353    0x272af8c6de138302,
1354    0x213013cdea417c1d,
1355    0x7d1d64add9855c43,
1356    0x996afd0d8dc93ca1,
1357    0xc5478a6dbe0d1cff,
1358    0x955f2b1be56cc29f,
1359    0xc9725c7bd6a8e2c1,
1360    0x2d05c5db82e48223,
1361    0x7128b2bbb120a27d,
1362    0x773259b085725d62,
1363    0x2b1f2ed0b6b67d3c,
1364    0xcf68b770e2fa1dde,
1365    0x9345c010d13e3d80,
1366    0x6f59f59c5439a11e,
1367    0x337482fc67fd8140,
1368    0xd7031b5c33b1e1a2,
1369    0x8b2e6c3c0075c1fc,
1370    0x8d34873734273ee3,
1371    0xd119f05707e31ebd,
1372    0x356e69f753af7e5f,
1373    0x69431e97606b5e01,
1374    0x395bbfe13b0a8061,
1375    0x6576c88108cea03f,
1376    0x810151215c82c0dd,
1377    0xdd2c26416f46e083,
1378    0xdb36cd4a5b141f9c,
1379    0x871bba2a68d03fc2,
1380    0x636c238a3c9c5f20,
1381    0x3f4154ea0f587f7e,
1382];
1383
1384// CRC table for the ECMA polynomial in the range (`1 = x¹¹¹, …, 128 = x¹⁰⁴`).
1385// Generated by running `./build_table 5`.
1386static TABLE_5: [u64; 256] = [
1387    0x0000000000000000,
1388    0x6184d55f721267c6,
1389    0xc309aabee424cf8c,
1390    0xa28d7fe19636a84a,
1391    0x14cbfa566747819d,
1392    0x754f2f091555e65b,
1393    0xd7c250e883634e11,
1394    0xb64685b7f17129d7,
1395    0x2997f4acce8f033a,
1396    0x481321f3bc9d64fc,
1397    0xea9e5e122aabccb6,
1398    0x8b1a8b4d58b9ab70,
1399    0x3d5c0efaa9c882a7,
1400    0x5cd8dba5dbdae561,
1401    0xfe55a4444dec4d2b,
1402    0x9fd1711b3ffe2aed,
1403    0x532fe9599d1e0674,
1404    0x32ab3c06ef0c61b2,
1405    0x902643e7793ac9f8,
1406    0xf1a296b80b28ae3e,
1407    0x47e4130ffa5987e9,
1408    0x2660c650884be02f,
1409    0x84edb9b11e7d4865,
1410    0xe5696cee6c6f2fa3,
1411    0x7ab81df55391054e,
1412    0x1b3cc8aa21836288,
1413    0xb9b1b74bb7b5cac2,
1414    0xd8356214c5a7ad04,
1415    0x6e73e7a334d684d3,
1416    0x0ff732fc46c4e315,
1417    0xad7a4d1dd0f24b5f,
1418    0xccfe9842a2e02c99,
1419    0xa65fd2b33a3c0ce8,
1420    0xc7db07ec482e6b2e,
1421    0x6556780dde18c364,
1422    0x04d2ad52ac0aa4a2,
1423    0xb29428e55d7b8d75,
1424    0xd310fdba2f69eab3,
1425    0x719d825bb95f42f9,
1426    0x10195704cb4d253f,
1427    0x8fc8261ff4b30fd2,
1428    0xee4cf34086a16814,
1429    0x4cc18ca11097c05e,
1430    0x2d4559fe6285a798,
1431    0x9b03dc4993f48e4f,
1432    0xfa870916e1e6e989,
1433    0x580a76f777d041c3,
1434    0x398ea3a805c22605,
1435    0xf5703beaa7220a9c,
1436    0x94f4eeb5d5306d5a,
1437    0x367991544306c510,
1438    0x57fd440b3114a2d6,
1439    0xe1bbc1bcc0658b01,
1440    0x803f14e3b277ecc7,
1441    0x22b26b022441448d,
1442    0x4336be5d5653234b,
1443    0xdce7cf4669ad09a6,
1444    0xbd631a191bbf6e60,
1445    0x1fee65f88d89c62a,
1446    0x7e6ab0a7ff9ba1ec,
1447    0xc82c35100eea883b,
1448    0xa9a8e04f7cf8effd,
1449    0x0b259faeeace47b7,
1450    0x6aa14af198dc2071,
1451    0xde670a4ddb760755,
1452    0xbfe3df12a9646093,
1453    0x1d6ea0f33f52c8d9,
1454    0x7cea75ac4d40af1f,
1455    0xcaacf01bbc3186c8,
1456    0xab282544ce23e10e,
1457    0x09a55aa558154944,
1458    0x68218ffa2a072e82,
1459    0xf7f0fee115f9046f,
1460    0x96742bbe67eb63a9,
1461    0x34f9545ff1ddcbe3,
1462    0x557d810083cfac25,
1463    0xe33b04b772be85f2,
1464    0x82bfd1e800ace234,
1465    0x2032ae09969a4a7e,
1466    0x41b67b56e4882db8,
1467    0x8d48e31446680121,
1468    0xeccc364b347a66e7,
1469    0x4e4149aaa24ccead,
1470    0x2fc59cf5d05ea96b,
1471    0x99831942212f80bc,
1472    0xf807cc1d533de77a,
1473    0x5a8ab3fcc50b4f30,
1474    0x3b0e66a3b71928f6,
1475    0xa4df17b888e7021b,
1476    0xc55bc2e7faf565dd,
1477    0x67d6bd066cc3cd97,
1478    0x065268591ed1aa51,
1479    0xb014edeeefa08386,
1480    0xd19038b19db2e440,
1481    0x731d47500b844c0a,
1482    0x1299920f79962bcc,
1483    0x7838d8fee14a0bbd,
1484    0x19bc0da193586c7b,
1485    0xbb317240056ec431,
1486    0xdab5a71f777ca3f7,
1487    0x6cf322a8860d8a20,
1488    0x0d77f7f7f41fede6,
1489    0xaffa8816622945ac,
1490    0xce7e5d49103b226a,
1491    0x51af2c522fc50887,
1492    0x302bf90d5dd76f41,
1493    0x92a686eccbe1c70b,
1494    0xf32253b3b9f3a0cd,
1495    0x4564d6044882891a,
1496    0x24e0035b3a90eedc,
1497    0x866d7cbaaca64696,
1498    0xe7e9a9e5deb42150,
1499    0x2b1731a77c540dc9,
1500    0x4a93e4f80e466a0f,
1501    0xe81e9b199870c245,
1502    0x899a4e46ea62a583,
1503    0x3fdccbf11b138c54,
1504    0x5e581eae6901eb92,
1505    0xfcd5614fff3743d8,
1506    0x9d51b4108d25241e,
1507    0x0280c50bb2db0ef3,
1508    0x63041054c0c96935,
1509    0xc1896fb556ffc17f,
1510    0xa00dbaea24eda6b9,
1511    0x164b3f5dd59c8f6e,
1512    0x77cfea02a78ee8a8,
1513    0xd54295e331b840e2,
1514    0xb4c640bc43aa2724,
1515    0x2e16bbb019e2102f,
1516    0x4f926eef6bf077e9,
1517    0xed1f110efdc6dfa3,
1518    0x8c9bc4518fd4b865,
1519    0x3add41e67ea591b2,
1520    0x5b5994b90cb7f674,
1521    0xf9d4eb589a815e3e,
1522    0x98503e07e89339f8,
1523    0x07814f1cd76d1315,
1524    0x66059a43a57f74d3,
1525    0xc488e5a23349dc99,
1526    0xa50c30fd415bbb5f,
1527    0x134ab54ab02a9288,
1528    0x72ce6015c238f54e,
1529    0xd0431ff4540e5d04,
1530    0xb1c7caab261c3ac2,
1531    0x7d3952e984fc165b,
1532    0x1cbd87b6f6ee719d,
1533    0xbe30f85760d8d9d7,
1534    0xdfb42d0812cabe11,
1535    0x69f2a8bfe3bb97c6,
1536    0x08767de091a9f000,
1537    0xaafb0201079f584a,
1538    0xcb7fd75e758d3f8c,
1539    0x54aea6454a731561,
1540    0x352a731a386172a7,
1541    0x97a70cfbae57daed,
1542    0xf623d9a4dc45bd2b,
1543    0x40655c132d3494fc,
1544    0x21e1894c5f26f33a,
1545    0x836cf6adc9105b70,
1546    0xe2e823f2bb023cb6,
1547    0x8849690323de1cc7,
1548    0xe9cdbc5c51cc7b01,
1549    0x4b40c3bdc7fad34b,
1550    0x2ac416e2b5e8b48d,
1551    0x9c82935544999d5a,
1552    0xfd06460a368bfa9c,
1553    0x5f8b39eba0bd52d6,
1554    0x3e0fecb4d2af3510,
1555    0xa1de9dafed511ffd,
1556    0xc05a48f09f43783b,
1557    0x62d737110975d071,
1558    0x0353e24e7b67b7b7,
1559    0xb51567f98a169e60,
1560    0xd491b2a6f804f9a6,
1561    0x761ccd476e3251ec,
1562    0x179818181c20362a,
1563    0xdb66805abec01ab3,
1564    0xbae25505ccd27d75,
1565    0x186f2ae45ae4d53f,
1566    0x79ebffbb28f6b2f9,
1567    0xcfad7a0cd9879b2e,
1568    0xae29af53ab95fce8,
1569    0x0ca4d0b23da354a2,
1570    0x6d2005ed4fb13364,
1571    0xf2f174f6704f1989,
1572    0x9375a1a9025d7e4f,
1573    0x31f8de48946bd605,
1574    0x507c0b17e679b1c3,
1575    0xe63a8ea017089814,
1576    0x87be5bff651affd2,
1577    0x2533241ef32c5798,
1578    0x44b7f141813e305e,
1579    0xf071b1fdc294177a,
1580    0x91f564a2b08670bc,
1581    0x33781b4326b0d8f6,
1582    0x52fcce1c54a2bf30,
1583    0xe4ba4baba5d396e7,
1584    0x853e9ef4d7c1f121,
1585    0x27b3e11541f7596b,
1586    0x4637344a33e53ead,
1587    0xd9e645510c1b1440,
1588    0xb862900e7e097386,
1589    0x1aefefefe83fdbcc,
1590    0x7b6b3ab09a2dbc0a,
1591    0xcd2dbf076b5c95dd,
1592    0xaca96a58194ef21b,
1593    0x0e2415b98f785a51,
1594    0x6fa0c0e6fd6a3d97,
1595    0xa35e58a45f8a110e,
1596    0xc2da8dfb2d9876c8,
1597    0x6057f21abbaede82,
1598    0x01d32745c9bcb944,
1599    0xb795a2f238cd9093,
1600    0xd61177ad4adff755,
1601    0x749c084cdce95f1f,
1602    0x1518dd13aefb38d9,
1603    0x8ac9ac0891051234,
1604    0xeb4d7957e31775f2,
1605    0x49c006b67521ddb8,
1606    0x2844d3e90733ba7e,
1607    0x9e02565ef64293a9,
1608    0xff8683018450f46f,
1609    0x5d0bfce012665c25,
1610    0x3c8f29bf60743be3,
1611    0x562e634ef8a81b92,
1612    0x37aab6118aba7c54,
1613    0x9527c9f01c8cd41e,
1614    0xf4a31caf6e9eb3d8,
1615    0x42e599189fef9a0f,
1616    0x23614c47edfdfdc9,
1617    0x81ec33a67bcb5583,
1618    0xe068e6f909d93245,
1619    0x7fb997e2362718a8,
1620    0x1e3d42bd44357f6e,
1621    0xbcb03d5cd203d724,
1622    0xdd34e803a011b0e2,
1623    0x6b726db451609935,
1624    0x0af6b8eb2372fef3,
1625    0xa87bc70ab54456b9,
1626    0xc9ff1255c756317f,
1627    0x05018a1765b61de6,
1628    0x64855f4817a47a20,
1629    0xc60820a98192d26a,
1630    0xa78cf5f6f380b5ac,
1631    0x11ca704102f19c7b,
1632    0x704ea51e70e3fbbd,
1633    0xd2c3daffe6d553f7,
1634    0xb3470fa094c73431,
1635    0x2c967ebbab391edc,
1636    0x4d12abe4d92b791a,
1637    0xef9fd4054f1dd150,
1638    0x8e1b015a3d0fb696,
1639    0x385d84edcc7e9f41,
1640    0x59d951b2be6cf887,
1641    0xfb542e53285a50cd,
1642    0x9ad0fb0c5a48370b,
1643];
1644
1645// CRC table for the ECMA polynomial in the range (`1 = x¹¹⁹, …, 128 = x¹¹²`).
1646// Generated by running `./build_table 6`.
1647static TABLE_6: [u64; 256] = [
1648    0x0000000000000000,
1649    0x22ef0d5934f964ec,
1650    0x45de1ab269f2c9d8,
1651    0x673117eb5d0bad34,
1652    0x8bbc3564d3e593b0,
1653    0xa953383de71cf75c,
1654    0xce622fd6ba175a68,
1655    0xec8d228f8eee3e84,
1656    0x85a0c5e208c539e5,
1657    0xa74fc8bb3c3c5d09,
1658    0xc07edf506137f03d,
1659    0xe291d20955ce94d1,
1660    0x0e1cf086db20aa55,
1661    0x2cf3fddfefd9ceb9,
1662    0x4bc2ea34b2d2638d,
1663    0x692de76d862b0761,
1664    0x999924efbe846d4f,
1665    0xbb7629b68a7d09a3,
1666    0xdc473e5dd776a497,
1667    0xfea83304e38fc07b,
1668    0x1225118b6d61feff,
1669    0x30ca1cd259989a13,
1670    0x57fb0b3904933727,
1671    0x75140660306a53cb,
1672    0x1c39e10db64154aa,
1673    0x3ed6ec5482b83046,
1674    0x59e7fbbfdfb39d72,
1675    0x7b08f6e6eb4af99e,
1676    0x9785d46965a4c71a,
1677    0xb56ad930515da3f6,
1678    0xd25bcedb0c560ec2,
1679    0xf0b4c38238af6a2e,
1680    0xa1eae6f4d206c41b,
1681    0x8305ebade6ffa0f7,
1682    0xe434fc46bbf40dc3,
1683    0xc6dbf11f8f0d692f,
1684    0x2a56d39001e357ab,
1685    0x08b9dec9351a3347,
1686    0x6f88c92268119e73,
1687    0x4d67c47b5ce8fa9f,
1688    0x244a2316dac3fdfe,
1689    0x06a52e4fee3a9912,
1690    0x619439a4b3313426,
1691    0x437b34fd87c850ca,
1692    0xaff6167209266e4e,
1693    0x8d191b2b3ddf0aa2,
1694    0xea280cc060d4a796,
1695    0xc8c70199542dc37a,
1696    0x3873c21b6c82a954,
1697    0x1a9ccf42587bcdb8,
1698    0x7dadd8a90570608c,
1699    0x5f42d5f031890460,
1700    0xb3cff77fbf673ae4,
1701    0x9120fa268b9e5e08,
1702    0xf611edcdd695f33c,
1703    0xd4fee094e26c97d0,
1704    0xbdd307f9644790b1,
1705    0x9f3c0aa050bef45d,
1706    0xf80d1d4b0db55969,
1707    0xdae21012394c3d85,
1708    0x366f329db7a20301,
1709    0x14803fc4835b67ed,
1710    0x73b1282fde50cad9,
1711    0x515e2576eaa9ae35,
1712    0xd10d62c20b0396b3,
1713    0xf3e26f9b3ffaf25f,
1714    0x94d3787062f15f6b,
1715    0xb63c752956083b87,
1716    0x5ab157a6d8e60503,
1717    0x785e5affec1f61ef,
1718    0x1f6f4d14b114ccdb,
1719    0x3d80404d85eda837,
1720    0x54ada72003c6af56,
1721    0x7642aa79373fcbba,
1722    0x1173bd926a34668e,
1723    0x339cb0cb5ecd0262,
1724    0xdf119244d0233ce6,
1725    0xfdfe9f1de4da580a,
1726    0x9acf88f6b9d1f53e,
1727    0xb82085af8d2891d2,
1728    0x4894462db587fbfc,
1729    0x6a7b4b74817e9f10,
1730    0x0d4a5c9fdc753224,
1731    0x2fa551c6e88c56c8,
1732    0xc32873496662684c,
1733    0xe1c77e10529b0ca0,
1734    0x86f669fb0f90a194,
1735    0xa41964a23b69c578,
1736    0xcd3483cfbd42c219,
1737    0xefdb8e9689bba6f5,
1738    0x88ea997dd4b00bc1,
1739    0xaa059424e0496f2d,
1740    0x4688b6ab6ea751a9,
1741    0x6467bbf25a5e3545,
1742    0x0356ac1907559871,
1743    0x21b9a14033acfc9d,
1744    0x70e78436d90552a8,
1745    0x5208896fedfc3644,
1746    0x35399e84b0f79b70,
1747    0x17d693dd840eff9c,
1748    0xfb5bb1520ae0c118,
1749    0xd9b4bc0b3e19a5f4,
1750    0xbe85abe0631208c0,
1751    0x9c6aa6b957eb6c2c,
1752    0xf54741d4d1c06b4d,
1753    0xd7a84c8de5390fa1,
1754    0xb0995b66b832a295,
1755    0x9276563f8ccbc679,
1756    0x7efb74b00225f8fd,
1757    0x5c1479e936dc9c11,
1758    0x3b256e026bd73125,
1759    0x19ca635b5f2e55c9,
1760    0xe97ea0d967813fe7,
1761    0xcb91ad8053785b0b,
1762    0xaca0ba6b0e73f63f,
1763    0x8e4fb7323a8a92d3,
1764    0x62c295bdb464ac57,
1765    0x402d98e4809dc8bb,
1766    0x271c8f0fdd96658f,
1767    0x05f38256e96f0163,
1768    0x6cde653b6f440602,
1769    0x4e3168625bbd62ee,
1770    0x29007f8906b6cfda,
1771    0x0bef72d0324fab36,
1772    0xe762505fbca195b2,
1773    0xc58d5d068858f15e,
1774    0xa2bc4aedd5535c6a,
1775    0x805347b4e1aa3886,
1776    0x30c26aafb90933e3,
1777    0x122d67f68df0570f,
1778    0x751c701dd0fbfa3b,
1779    0x57f37d44e4029ed7,
1780    0xbb7e5fcb6aeca053,
1781    0x999152925e15c4bf,
1782    0xfea04579031e698b,
1783    0xdc4f482037e70d67,
1784    0xb562af4db1cc0a06,
1785    0x978da21485356eea,
1786    0xf0bcb5ffd83ec3de,
1787    0xd253b8a6ecc7a732,
1788    0x3ede9a29622999b6,
1789    0x1c31977056d0fd5a,
1790    0x7b00809b0bdb506e,
1791    0x59ef8dc23f223482,
1792    0xa95b4e40078d5eac,
1793    0x8bb4431933743a40,
1794    0xec8554f26e7f9774,
1795    0xce6a59ab5a86f398,
1796    0x22e77b24d468cd1c,
1797    0x0008767de091a9f0,
1798    0x67396196bd9a04c4,
1799    0x45d66ccf89636028,
1800    0x2cfb8ba20f486749,
1801    0x0e1486fb3bb103a5,
1802    0x6925911066baae91,
1803    0x4bca9c495243ca7d,
1804    0xa747bec6dcadf4f9,
1805    0x85a8b39fe8549015,
1806    0xe299a474b55f3d21,
1807    0xc076a92d81a659cd,
1808    0x91288c5b6b0ff7f8,
1809    0xb3c781025ff69314,
1810    0xd4f696e902fd3e20,
1811    0xf6199bb036045acc,
1812    0x1a94b93fb8ea6448,
1813    0x387bb4668c1300a4,
1814    0x5f4aa38dd118ad90,
1815    0x7da5aed4e5e1c97c,
1816    0x148849b963cace1d,
1817    0x366744e05733aaf1,
1818    0x5156530b0a3807c5,
1819    0x73b95e523ec16329,
1820    0x9f347cddb02f5dad,
1821    0xbddb718484d63941,
1822    0xdaea666fd9dd9475,
1823    0xf8056b36ed24f099,
1824    0x08b1a8b4d58b9ab7,
1825    0x2a5ea5ede172fe5b,
1826    0x4d6fb206bc79536f,
1827    0x6f80bf5f88803783,
1828    0x830d9dd0066e0907,
1829    0xa1e2908932976deb,
1830    0xc6d387626f9cc0df,
1831    0xe43c8a3b5b65a433,
1832    0x8d116d56dd4ea352,
1833    0xaffe600fe9b7c7be,
1834    0xc8cf77e4b4bc6a8a,
1835    0xea207abd80450e66,
1836    0x06ad58320eab30e2,
1837    0x2442556b3a52540e,
1838    0x437342806759f93a,
1839    0x619c4fd953a09dd6,
1840    0xe1cf086db20aa550,
1841    0xc320053486f3c1bc,
1842    0xa41112dfdbf86c88,
1843    0x86fe1f86ef010864,
1844    0x6a733d0961ef36e0,
1845    0x489c30505516520c,
1846    0x2fad27bb081dff38,
1847    0x0d422ae23ce49bd4,
1848    0x646fcd8fbacf9cb5,
1849    0x4680c0d68e36f859,
1850    0x21b1d73dd33d556d,
1851    0x035eda64e7c43181,
1852    0xefd3f8eb692a0f05,
1853    0xcd3cf5b25dd36be9,
1854    0xaa0de25900d8c6dd,
1855    0x88e2ef003421a231,
1856    0x78562c820c8ec81f,
1857    0x5ab921db3877acf3,
1858    0x3d883630657c01c7,
1859    0x1f673b695185652b,
1860    0xf3ea19e6df6b5baf,
1861    0xd10514bfeb923f43,
1862    0xb6340354b6999277,
1863    0x94db0e0d8260f69b,
1864    0xfdf6e960044bf1fa,
1865    0xdf19e43930b29516,
1866    0xb828f3d26db93822,
1867    0x9ac7fe8b59405cce,
1868    0x764adc04d7ae624a,
1869    0x54a5d15de35706a6,
1870    0x3394c6b6be5cab92,
1871    0x117bcbef8aa5cf7e,
1872    0x4025ee99600c614b,
1873    0x62cae3c054f505a7,
1874    0x05fbf42b09fea893,
1875    0x2714f9723d07cc7f,
1876    0xcb99dbfdb3e9f2fb,
1877    0xe976d6a487109617,
1878    0x8e47c14fda1b3b23,
1879    0xaca8cc16eee25fcf,
1880    0xc5852b7b68c958ae,
1881    0xe76a26225c303c42,
1882    0x805b31c9013b9176,
1883    0xa2b43c9035c2f59a,
1884    0x4e391e1fbb2ccb1e,
1885    0x6cd613468fd5aff2,
1886    0x0be704add2de02c6,
1887    0x290809f4e627662a,
1888    0xd9bcca76de880c04,
1889    0xfb53c72fea7168e8,
1890    0x9c62d0c4b77ac5dc,
1891    0xbe8ddd9d8383a130,
1892    0x5200ff120d6d9fb4,
1893    0x70eff24b3994fb58,
1894    0x17dee5a0649f566c,
1895    0x3531e8f950663280,
1896    0x5c1c0f94d64d35e1,
1897    0x7ef302cde2b4510d,
1898    0x19c21526bfbffc39,
1899    0x3b2d187f8b4698d5,
1900    0xd7a03af005a8a651,
1901    0xf54f37a93151c2bd,
1902    0x927e20426c5a6f89,
1903    0xb0912d1b58a30b65,
1904];
1905
1906// CRC table for the ECMA polynomial in the range (`1 = x¹²⁷, …, 128 = x¹²⁰`).
1907// Generated by running `./build_table 7`.
1908static TABLE_7: [u64; 256] = [
1909    0x0000000000000000,
1910    0xdabe95afc7875f40,
1911    0x27a584742000a005,
1912    0xfd1b11dbe787ff45,
1913    0x4f4b08e84001400a,
1914    0x95f59d4787861f4a,
1915    0x68ee8c9c6001e00f,
1916    0xb2501933a786bf4f,
1917    0x9e9611d080028014,
1918    0x4428847f4785df54,
1919    0xb93395a4a0022011,
1920    0x638d000b67857f51,
1921    0xd1dd1938c003c01e,
1922    0x0b638c9707849f5e,
1923    0xf6789d4ce003601b,
1924    0x2cc608e327843f5b,
1925    0xaff48c8aaf0b1ead,
1926    0x754a1925688c41ed,
1927    0x885108fe8f0bbea8,
1928    0x52ef9d51488ce1e8,
1929    0xe0bf8462ef0a5ea7,
1930    0x3a0111cd288d01e7,
1931    0xc71a0016cf0afea2,
1932    0x1da495b9088da1e2,
1933    0x31629d5a2f099eb9,
1934    0xebdc08f5e88ec1f9,
1935    0x16c7192e0f093ebc,
1936    0xcc798c81c88e61fc,
1937    0x7e2995b26f08deb3,
1938    0xa497001da88f81f3,
1939    0x598c11c64f087eb6,
1940    0x83328469888f21f6,
1941    0xcd31b63ef11823df,
1942    0x178f2391369f7c9f,
1943    0xea94324ad11883da,
1944    0x302aa7e5169fdc9a,
1945    0x827abed6b11963d5,
1946    0x58c42b79769e3c95,
1947    0xa5df3aa29119c3d0,
1948    0x7f61af0d569e9c90,
1949    0x53a7a7ee711aa3cb,
1950    0x89193241b69dfc8b,
1951    0x7402239a511a03ce,
1952    0xaebcb635969d5c8e,
1953    0x1cecaf06311be3c1,
1954    0xc6523aa9f69cbc81,
1955    0x3b492b72111b43c4,
1956    0xe1f7beddd69c1c84,
1957    0x62c53ab45e133d72,
1958    0xb87baf1b99946232,
1959    0x4560bec07e139d77,
1960    0x9fde2b6fb994c237,
1961    0x2d8e325c1e127d78,
1962    0xf730a7f3d9952238,
1963    0x0a2bb6283e12dd7d,
1964    0xd0952387f995823d,
1965    0xfc532b64de11bd66,
1966    0x26edbecb1996e226,
1967    0xdbf6af10fe111d63,
1968    0x01483abf39964223,
1969    0xb318238c9e10fd6c,
1970    0x69a6b6235997a22c,
1971    0x94bda7f8be105d69,
1972    0x4e03325779970229,
1973    0x08bbc3564d3e593b,
1974    0xd20556f98ab9067b,
1975    0x2f1e47226d3ef93e,
1976    0xf5a0d28daab9a67e,
1977    0x47f0cbbe0d3f1931,
1978    0x9d4e5e11cab84671,
1979    0x60554fca2d3fb934,
1980    0xbaebda65eab8e674,
1981    0x962dd286cd3cd92f,
1982    0x4c9347290abb866f,
1983    0xb18856f2ed3c792a,
1984    0x6b36c35d2abb266a,
1985    0xd966da6e8d3d9925,
1986    0x03d84fc14abac665,
1987    0xfec35e1aad3d3920,
1988    0x247dcbb56aba6660,
1989    0xa74f4fdce2354796,
1990    0x7df1da7325b218d6,
1991    0x80eacba8c235e793,
1992    0x5a545e0705b2b8d3,
1993    0xe8044734a234079c,
1994    0x32bad29b65b358dc,
1995    0xcfa1c3408234a799,
1996    0x151f56ef45b3f8d9,
1997    0x39d95e0c6237c782,
1998    0xe367cba3a5b098c2,
1999    0x1e7cda7842376787,
2000    0xc4c24fd785b038c7,
2001    0x769256e422368788,
2002    0xac2cc34be5b1d8c8,
2003    0x5137d2900236278d,
2004    0x8b89473fc5b178cd,
2005    0xc58a7568bc267ae4,
2006    0x1f34e0c77ba125a4,
2007    0xe22ff11c9c26dae1,
2008    0x389164b35ba185a1,
2009    0x8ac17d80fc273aee,
2010    0x507fe82f3ba065ae,
2011    0xad64f9f4dc279aeb,
2012    0x77da6c5b1ba0c5ab,
2013    0x5b1c64b83c24faf0,
2014    0x81a2f117fba3a5b0,
2015    0x7cb9e0cc1c245af5,
2016    0xa6077563dba305b5,
2017    0x14576c507c25bafa,
2018    0xcee9f9ffbba2e5ba,
2019    0x33f2e8245c251aff,
2020    0xe94c7d8b9ba245bf,
2021    0x6a7ef9e2132d6449,
2022    0xb0c06c4dd4aa3b09,
2023    0x4ddb7d96332dc44c,
2024    0x9765e839f4aa9b0c,
2025    0x2535f10a532c2443,
2026    0xff8b64a594ab7b03,
2027    0x0290757e732c8446,
2028    0xd82ee0d1b4abdb06,
2029    0xf4e8e832932fe45d,
2030    0x2e567d9d54a8bb1d,
2031    0xd34d6c46b32f4458,
2032    0x09f3f9e974a81b18,
2033    0xbba3e0dad32ea457,
2034    0x611d757514a9fb17,
2035    0x9c0664aef32e0452,
2036    0x46b8f10134a95b12,
2037    0x117786ac9a7cb276,
2038    0xcbc913035dfbed36,
2039    0x36d202d8ba7c1273,
2040    0xec6c97777dfb4d33,
2041    0x5e3c8e44da7df27c,
2042    0x84821beb1dfaad3c,
2043    0x79990a30fa7d5279,
2044    0xa3279f9f3dfa0d39,
2045    0x8fe1977c1a7e3262,
2046    0x555f02d3ddf96d22,
2047    0xa84413083a7e9267,
2048    0x72fa86a7fdf9cd27,
2049    0xc0aa9f945a7f7268,
2050    0x1a140a3b9df82d28,
2051    0xe70f1be07a7fd26d,
2052    0x3db18e4fbdf88d2d,
2053    0xbe830a263577acdb,
2054    0x643d9f89f2f0f39b,
2055    0x99268e5215770cde,
2056    0x43981bfdd2f0539e,
2057    0xf1c802ce7576ecd1,
2058    0x2b769761b2f1b391,
2059    0xd66d86ba55764cd4,
2060    0x0cd3131592f11394,
2061    0x20151bf6b5752ccf,
2062    0xfaab8e5972f2738f,
2063    0x07b09f8295758cca,
2064    0xdd0e0a2d52f2d38a,
2065    0x6f5e131ef5746cc5,
2066    0xb5e086b132f33385,
2067    0x48fb976ad574ccc0,
2068    0x924502c512f39380,
2069    0xdc4630926b6491a9,
2070    0x06f8a53dace3cee9,
2071    0xfbe3b4e64b6431ac,
2072    0x215d21498ce36eec,
2073    0x930d387a2b65d1a3,
2074    0x49b3add5ece28ee3,
2075    0xb4a8bc0e0b6571a6,
2076    0x6e1629a1cce22ee6,
2077    0x42d02142eb6611bd,
2078    0x986eb4ed2ce14efd,
2079    0x6575a536cb66b1b8,
2080    0xbfcb30990ce1eef8,
2081    0x0d9b29aaab6751b7,
2082    0xd725bc056ce00ef7,
2083    0x2a3eadde8b67f1b2,
2084    0xf08038714ce0aef2,
2085    0x73b2bc18c46f8f04,
2086    0xa90c29b703e8d044,
2087    0x5417386ce46f2f01,
2088    0x8ea9adc323e87041,
2089    0x3cf9b4f0846ecf0e,
2090    0xe647215f43e9904e,
2091    0x1b5c3084a46e6f0b,
2092    0xc1e2a52b63e9304b,
2093    0xed24adc8446d0f10,
2094    0x379a386783ea5050,
2095    0xca8129bc646daf15,
2096    0x103fbc13a3eaf055,
2097    0xa26fa520046c4f1a,
2098    0x78d1308fc3eb105a,
2099    0x85ca2154246cef1f,
2100    0x5f74b4fbe3ebb05f,
2101    0x19cc45fad742eb4d,
2102    0xc372d05510c5b40d,
2103    0x3e69c18ef7424b48,
2104    0xe4d7542130c51408,
2105    0x56874d129743ab47,
2106    0x8c39d8bd50c4f407,
2107    0x7122c966b7430b42,
2108    0xab9c5cc970c45402,
2109    0x875a542a57406b59,
2110    0x5de4c18590c73419,
2111    0xa0ffd05e7740cb5c,
2112    0x7a4145f1b0c7941c,
2113    0xc8115cc217412b53,
2114    0x12afc96dd0c67413,
2115    0xefb4d8b637418b56,
2116    0x350a4d19f0c6d416,
2117    0xb638c9707849f5e0,
2118    0x6c865cdfbfceaaa0,
2119    0x919d4d04584955e5,
2120    0x4b23d8ab9fce0aa5,
2121    0xf973c1983848b5ea,
2122    0x23cd5437ffcfeaaa,
2123    0xded645ec184815ef,
2124    0x0468d043dfcf4aaf,
2125    0x28aed8a0f84b75f4,
2126    0xf2104d0f3fcc2ab4,
2127    0x0f0b5cd4d84bd5f1,
2128    0xd5b5c97b1fcc8ab1,
2129    0x67e5d048b84a35fe,
2130    0xbd5b45e77fcd6abe,
2131    0x4040543c984a95fb,
2132    0x9afec1935fcdcabb,
2133    0xd4fdf3c4265ac892,
2134    0x0e43666be1dd97d2,
2135    0xf35877b0065a6897,
2136    0x29e6e21fc1dd37d7,
2137    0x9bb6fb2c665b8898,
2138    0x41086e83a1dcd7d8,
2139    0xbc137f58465b289d,
2140    0x66adeaf781dc77dd,
2141    0x4a6be214a6584886,
2142    0x90d577bb61df17c6,
2143    0x6dce66608658e883,
2144    0xb770f3cf41dfb7c3,
2145    0x0520eafce659088c,
2146    0xdf9e7f5321de57cc,
2147    0x22856e88c659a889,
2148    0xf83bfb2701def7c9,
2149    0x7b097f4e8951d63f,
2150    0xa1b7eae14ed6897f,
2151    0x5cacfb3aa951763a,
2152    0x86126e956ed6297a,
2153    0x344277a6c9509635,
2154    0xeefce2090ed7c975,
2155    0x13e7f3d2e9503630,
2156    0xc959667d2ed76970,
2157    0xe59f6e9e0953562b,
2158    0x3f21fb31ced4096b,
2159    0xc23aeaea2953f62e,
2160    0x18847f45eed4a96e,
2161    0xaad4667649521621,
2162    0x706af3d98ed54961,
2163    0x8d71e2026952b624,
2164    0x57cf77adaed5e964,
2165];
2166
2167// CRC table for the ECMA polynomial in the range (`1 = x¹³⁵, …, 128 = x¹²⁸`).
2168// Generated by running `./build_table 8`.
2169static TABLE_8: [u64; 256] = [
2170    0x0000000000000000,
2171    0x646c955f440400fe,
2172    0xc8d92abe880801fc,
2173    0xacb5bfe1cc0c0102,
2174    0x036afa56bf1e1d7d,
2175    0x67066f09fb1a1d83,
2176    0xcbb3d0e837161c81,
2177    0xafdf45b773121c7f,
2178    0x06d5f4ad7e3c3afa,
2179    0x62b961f23a383a04,
2180    0xce0cde13f6343b06,
2181    0xaa604b4cb2303bf8,
2182    0x05bf0efbc1222787,
2183    0x61d39ba485262779,
2184    0xcd662445492a267b,
2185    0xa90ab11a0d2e2685,
2186    0x0dabe95afc7875f4,
2187    0x69c77c05b87c750a,
2188    0xc572c3e474707408,
2189    0xa11e56bb307474f6,
2190    0x0ec1130c43666889,
2191    0x6aad865307626877,
2192    0xc61839b2cb6e6975,
2193    0xa274aced8f6a698b,
2194    0x0b7e1df782444f0e,
2195    0x6f1288a8c6404ff0,
2196    0xc3a737490a4c4ef2,
2197    0xa7cba2164e484e0c,
2198    0x0814e7a13d5a5273,
2199    0x6c7872fe795e528d,
2200    0xc0cdcd1fb552538f,
2201    0xa4a15840f1565371,
2202    0x1b57d2b5f8f0ebe8,
2203    0x7f3b47eabcf4eb16,
2204    0xd38ef80b70f8ea14,
2205    0xb7e26d5434fceaea,
2206    0x183d28e347eef695,
2207    0x7c51bdbc03eaf66b,
2208    0xd0e4025dcfe6f769,
2209    0xb48897028be2f797,
2210    0x1d82261886ccd112,
2211    0x79eeb347c2c8d1ec,
2212    0xd55b0ca60ec4d0ee,
2213    0xb13799f94ac0d010,
2214    0x1ee8dc4e39d2cc6f,
2215    0x7a8449117dd6cc91,
2216    0xd631f6f0b1dacd93,
2217    0xb25d63aff5decd6d,
2218    0x16fc3bef04889e1c,
2219    0x7290aeb0408c9ee2,
2220    0xde2511518c809fe0,
2221    0xba49840ec8849f1e,
2222    0x1596c1b9bb968361,
2223    0x71fa54e6ff92839f,
2224    0xdd4feb07339e829d,
2225    0xb9237e58779a8263,
2226    0x1029cf427ab4a4e6,
2227    0x74455a1d3eb0a418,
2228    0xd8f0e5fcf2bca51a,
2229    0xbc9c70a3b6b8a5e4,
2230    0x13433514c5aab99b,
2231    0x772fa04b81aeb965,
2232    0xdb9a1faa4da2b867,
2233    0xbff68af509a6b899,
2234    0x36afa56bf1e1d7d0,
2235    0x52c33034b5e5d72e,
2236    0xfe768fd579e9d62c,
2237    0x9a1a1a8a3dedd6d2,
2238    0x35c55f3d4effcaad,
2239    0x51a9ca620afbca53,
2240    0xfd1c7583c6f7cb51,
2241    0x9970e0dc82f3cbaf,
2242    0x307a51c68fdded2a,
2243    0x5416c499cbd9edd4,
2244    0xf8a37b7807d5ecd6,
2245    0x9ccfee2743d1ec28,
2246    0x3310ab9030c3f057,
2247    0x577c3ecf74c7f0a9,
2248    0xfbc9812eb8cbf1ab,
2249    0x9fa51471fccff155,
2250    0x3b044c310d99a224,
2251    0x5f68d96e499da2da,
2252    0xf3dd668f8591a3d8,
2253    0x97b1f3d0c195a326,
2254    0x386eb667b287bf59,
2255    0x5c022338f683bfa7,
2256    0xf0b79cd93a8fbea5,
2257    0x94db09867e8bbe5b,
2258    0x3dd1b89c73a598de,
2259    0x59bd2dc337a19820,
2260    0xf5089222fbad9922,
2261    0x9164077dbfa999dc,
2262    0x3ebb42caccbb85a3,
2263    0x5ad7d79588bf855d,
2264    0xf662687444b3845f,
2265    0x920efd2b00b784a1,
2266    0x2df877de09113c38,
2267    0x4994e2814d153cc6,
2268    0xe5215d6081193dc4,
2269    0x814dc83fc51d3d3a,
2270    0x2e928d88b60f2145,
2271    0x4afe18d7f20b21bb,
2272    0xe64ba7363e0720b9,
2273    0x822732697a032047,
2274    0x2b2d8373772d06c2,
2275    0x4f41162c3329063c,
2276    0xe3f4a9cdff25073e,
2277    0x87983c92bb2107c0,
2278    0x28477925c8331bbf,
2279    0x4c2bec7a8c371b41,
2280    0xe09e539b403b1a43,
2281    0x84f2c6c4043f1abd,
2282    0x20539e84f56949cc,
2283    0x443f0bdbb16d4932,
2284    0xe88ab43a7d614830,
2285    0x8ce62165396548ce,
2286    0x233964d24a7754b1,
2287    0x4755f18d0e73544f,
2288    0xebe04e6cc27f554d,
2289    0x8f8cdb33867b55b3,
2290    0x26866a298b557336,
2291    0x42eaff76cf5173c8,
2292    0xee5f4097035d72ca,
2293    0x8a33d5c847597234,
2294    0x25ec907f344b6e4b,
2295    0x41800520704f6eb5,
2296    0xed35bac1bc436fb7,
2297    0x89592f9ef8476f49,
2298    0x6d5f4ad7e3c3afa0,
2299    0x0933df88a7c7af5e,
2300    0xa58660696bcbae5c,
2301    0xc1eaf5362fcfaea2,
2302    0x6e35b0815cddb2dd,
2303    0x0a5925de18d9b223,
2304    0xa6ec9a3fd4d5b321,
2305    0xc2800f6090d1b3df,
2306    0x6b8abe7a9dff955a,
2307    0x0fe62b25d9fb95a4,
2308    0xa35394c415f794a6,
2309    0xc73f019b51f39458,
2310    0x68e0442c22e18827,
2311    0x0c8cd17366e588d9,
2312    0xa0396e92aae989db,
2313    0xc455fbcdeeed8925,
2314    0x60f4a38d1fbbda54,
2315    0x049836d25bbfdaaa,
2316    0xa82d893397b3dba8,
2317    0xcc411c6cd3b7db56,
2318    0x639e59dba0a5c729,
2319    0x07f2cc84e4a1c7d7,
2320    0xab47736528adc6d5,
2321    0xcf2be63a6ca9c62b,
2322    0x662157206187e0ae,
2323    0x024dc27f2583e050,
2324    0xaef87d9ee98fe152,
2325    0xca94e8c1ad8be1ac,
2326    0x654bad76de99fdd3,
2327    0x012738299a9dfd2d,
2328    0xad9287c85691fc2f,
2329    0xc9fe12971295fcd1,
2330    0x760898621b334448,
2331    0x12640d3d5f3744b6,
2332    0xbed1b2dc933b45b4,
2333    0xdabd2783d73f454a,
2334    0x75626234a42d5935,
2335    0x110ef76be02959cb,
2336    0xbdbb488a2c2558c9,
2337    0xd9d7ddd568215837,
2338    0x70dd6ccf650f7eb2,
2339    0x14b1f990210b7e4c,
2340    0xb8044671ed077f4e,
2341    0xdc68d32ea9037fb0,
2342    0x73b79699da1163cf,
2343    0x17db03c69e156331,
2344    0xbb6ebc2752196233,
2345    0xdf022978161d62cd,
2346    0x7ba37138e74b31bc,
2347    0x1fcfe467a34f3142,
2348    0xb37a5b866f433040,
2349    0xd716ced92b4730be,
2350    0x78c98b6e58552cc1,
2351    0x1ca51e311c512c3f,
2352    0xb010a1d0d05d2d3d,
2353    0xd47c348f94592dc3,
2354    0x7d76859599770b46,
2355    0x191a10cadd730bb8,
2356    0xb5afaf2b117f0aba,
2357    0xd1c33a74557b0a44,
2358    0x7e1c7fc32669163b,
2359    0x1a70ea9c626d16c5,
2360    0xb6c5557dae6117c7,
2361    0xd2a9c022ea651739,
2362    0x5bf0efbc12227870,
2363    0x3f9c7ae35626788e,
2364    0x9329c5029a2a798c,
2365    0xf745505dde2e7972,
2366    0x589a15eaad3c650d,
2367    0x3cf680b5e93865f3,
2368    0x90433f54253464f1,
2369    0xf42faa0b6130640f,
2370    0x5d251b116c1e428a,
2371    0x39498e4e281a4274,
2372    0x95fc31afe4164376,
2373    0xf190a4f0a0124388,
2374    0x5e4fe147d3005ff7,
2375    0x3a23741897045f09,
2376    0x9696cbf95b085e0b,
2377    0xf2fa5ea61f0c5ef5,
2378    0x565b06e6ee5a0d84,
2379    0x323793b9aa5e0d7a,
2380    0x9e822c5866520c78,
2381    0xfaeeb90722560c86,
2382    0x5531fcb0514410f9,
2383    0x315d69ef15401007,
2384    0x9de8d60ed94c1105,
2385    0xf98443519d4811fb,
2386    0x508ef24b9066377e,
2387    0x34e26714d4623780,
2388    0x9857d8f5186e3682,
2389    0xfc3b4daa5c6a367c,
2390    0x53e4081d2f782a03,
2391    0x37889d426b7c2afd,
2392    0x9b3d22a3a7702bff,
2393    0xff51b7fce3742b01,
2394    0x40a73d09ead29398,
2395    0x24cba856aed69366,
2396    0x887e17b762da9264,
2397    0xec1282e826de929a,
2398    0x43cdc75f55cc8ee5,
2399    0x27a1520011c88e1b,
2400    0x8b14ede1ddc48f19,
2401    0xef7878be99c08fe7,
2402    0x4672c9a494eea962,
2403    0x221e5cfbd0eaa99c,
2404    0x8eabe31a1ce6a89e,
2405    0xeac7764558e2a860,
2406    0x451833f22bf0b41f,
2407    0x2174a6ad6ff4b4e1,
2408    0x8dc1194ca3f8b5e3,
2409    0xe9ad8c13e7fcb51d,
2410    0x4d0cd45316aae66c,
2411    0x2960410c52aee692,
2412    0x85d5feed9ea2e790,
2413    0xe1b96bb2daa6e76e,
2414    0x4e662e05a9b4fb11,
2415    0x2a0abb5aedb0fbef,
2416    0x86bf04bb21bcfaed,
2417    0xe2d391e465b8fa13,
2418    0x4bd920fe6896dc96,
2419    0x2fb5b5a12c92dc68,
2420    0x83000a40e09edd6a,
2421    0xe76c9f1fa49add94,
2422    0x48b3daa8d788c1eb,
2423    0x2cdf4ff7938cc115,
2424    0x806af0165f80c017,
2425    0xe40665491b84c0e9,
2426];
2427
2428// CRC table for the ECMA polynomial in the range (`1 = x¹⁴³, …, 128 = x¹³⁶`).
2429// Generated by running `./build_table 9`.
2430static TABLE_9: [u64; 256] = [
2431    0x0000000000000000,
2432    0x53e7815838846436,
2433    0xa7cf02b07108c86c,
2434    0xf42883e8498cac5a,
2435    0xdd46aa4b4d1f8e5d,
2436    0x8ea12b13759bea6b,
2437    0x7a89a8fb3c174631,
2438    0x296e29a304932207,
2439    0x2855fbbd3531023f,
2440    0x7bb27ae50db56609,
2441    0x8f9af90d4439ca53,
2442    0xdc7d78557cbdae65,
2443    0xf51351f6782e8c62,
2444    0xa6f4d0ae40aae854,
2445    0x52dc53460926440e,
2446    0x013bd21e31a22038,
2447    0x50abf77a6a62047e,
2448    0x034c762252e66048,
2449    0xf764f5ca1b6acc12,
2450    0xa483749223eea824,
2451    0x8ded5d31277d8a23,
2452    0xde0adc691ff9ee15,
2453    0x2a225f815675424f,
2454    0x79c5ded96ef12679,
2455    0x78fe0cc75f530641,
2456    0x2b198d9f67d76277,
2457    0xdf310e772e5bce2d,
2458    0x8cd68f2f16dfaa1b,
2459    0xa5b8a68c124c881c,
2460    0xf65f27d42ac8ec2a,
2461    0x0277a43c63444070,
2462    0x519025645bc02446,
2463    0xa157eef4d4c408fc,
2464    0xf2b06facec406cca,
2465    0x0698ec44a5ccc090,
2466    0x557f6d1c9d48a4a6,
2467    0x7c1144bf99db86a1,
2468    0x2ff6c5e7a15fe297,
2469    0xdbde460fe8d34ecd,
2470    0x8839c757d0572afb,
2471    0x89021549e1f50ac3,
2472    0xdae59411d9716ef5,
2473    0x2ecd17f990fdc2af,
2474    0x7d2a96a1a879a699,
2475    0x5444bf02acea849e,
2476    0x07a33e5a946ee0a8,
2477    0xf38bbdb2dde24cf2,
2478    0xa06c3ceae56628c4,
2479    0xf1fc198ebea60c82,
2480    0xa21b98d6862268b4,
2481    0x56331b3ecfaec4ee,
2482    0x05d49a66f72aa0d8,
2483    0x2cbab3c5f3b982df,
2484    0x7f5d329dcb3de6e9,
2485    0x8b75b17582b14ab3,
2486    0xd892302dba352e85,
2487    0xd9a9e2338b970ebd,
2488    0x8a4e636bb3136a8b,
2489    0x7e66e083fa9fc6d1,
2490    0x2d8161dbc21ba2e7,
2491    0x04ef4878c68880e0,
2492    0x5708c920fe0ce4d6,
2493    0xa3204ac8b780488c,
2494    0xf0c7cb908f042cba,
2495    0xd07772c206860f7d,
2496    0x8390f39a3e026b4b,
2497    0x77b87072778ec711,
2498    0x245ff12a4f0aa327,
2499    0x0d31d8894b998120,
2500    0x5ed659d1731de516,
2501    0xaafeda393a91494c,
2502    0xf9195b6102152d7a,
2503    0xf822897f33b70d42,
2504    0xabc508270b336974,
2505    0x5fed8bcf42bfc52e,
2506    0x0c0a0a977a3ba118,
2507    0x256423347ea8831f,
2508    0x7683a26c462ce729,
2509    0x82ab21840fa04b73,
2510    0xd14ca0dc37242f45,
2511    0x80dc85b86ce40b03,
2512    0xd33b04e054606f35,
2513    0x271387081decc36f,
2514    0x74f406502568a759,
2515    0x5d9a2ff321fb855e,
2516    0x0e7daeab197fe168,
2517    0xfa552d4350f34d32,
2518    0xa9b2ac1b68772904,
2519    0xa8897e0559d5093c,
2520    0xfb6eff5d61516d0a,
2521    0x0f467cb528ddc150,
2522    0x5ca1fded1059a566,
2523    0x75cfd44e14ca8761,
2524    0x262855162c4ee357,
2525    0xd200d6fe65c24f0d,
2526    0x81e757a65d462b3b,
2527    0x71209c36d2420781,
2528    0x22c71d6eeac663b7,
2529    0xd6ef9e86a34acfed,
2530    0x85081fde9bceabdb,
2531    0xac66367d9f5d89dc,
2532    0xff81b725a7d9edea,
2533    0x0ba934cdee5541b0,
2534    0x584eb595d6d12586,
2535    0x5975678be77305be,
2536    0x0a92e6d3dff76188,
2537    0xfeba653b967bcdd2,
2538    0xad5de463aeffa9e4,
2539    0x8433cdc0aa6c8be3,
2540    0xd7d44c9892e8efd5,
2541    0x23fccf70db64438f,
2542    0x701b4e28e3e027b9,
2543    0x218b6b4cb82003ff,
2544    0x726cea1480a467c9,
2545    0x864469fcc928cb93,
2546    0xd5a3e8a4f1acafa5,
2547    0xfccdc107f53f8da2,
2548    0xaf2a405fcdbbe994,
2549    0x5b02c3b7843745ce,
2550    0x08e542efbcb321f8,
2551    0x09de90f18d1101c0,
2552    0x5a3911a9b59565f6,
2553    0xae119241fc19c9ac,
2554    0xfdf61319c49dad9a,
2555    0xd4983abac00e8f9d,
2556    0x877fbbe2f88aebab,
2557    0x7357380ab10647f1,
2558    0x20b0b952898223c7,
2559    0x32364aafa202007f,
2560    0x61d1cbf79a866449,
2561    0x95f9481fd30ac813,
2562    0xc61ec947eb8eac25,
2563    0xef70e0e4ef1d8e22,
2564    0xbc9761bcd799ea14,
2565    0x48bfe2549e15464e,
2566    0x1b58630ca6912278,
2567    0x1a63b11297330240,
2568    0x4984304aafb76676,
2569    0xbdacb3a2e63bca2c,
2570    0xee4b32fadebfae1a,
2571    0xc7251b59da2c8c1d,
2572    0x94c29a01e2a8e82b,
2573    0x60ea19e9ab244471,
2574    0x330d98b193a02047,
2575    0x629dbdd5c8600401,
2576    0x317a3c8df0e46037,
2577    0xc552bf65b968cc6d,
2578    0x96b53e3d81eca85b,
2579    0xbfdb179e857f8a5c,
2580    0xec3c96c6bdfbee6a,
2581    0x1814152ef4774230,
2582    0x4bf39476ccf32606,
2583    0x4ac84668fd51063e,
2584    0x192fc730c5d56208,
2585    0xed0744d88c59ce52,
2586    0xbee0c580b4ddaa64,
2587    0x978eec23b04e8863,
2588    0xc4696d7b88caec55,
2589    0x3041ee93c146400f,
2590    0x63a66fcbf9c22439,
2591    0x9361a45b76c60883,
2592    0xc08625034e426cb5,
2593    0x34aea6eb07cec0ef,
2594    0x674927b33f4aa4d9,
2595    0x4e270e103bd986de,
2596    0x1dc08f48035de2e8,
2597    0xe9e80ca04ad14eb2,
2598    0xba0f8df872552a84,
2599    0xbb345fe643f70abc,
2600    0xe8d3debe7b736e8a,
2601    0x1cfb5d5632ffc2d0,
2602    0x4f1cdc0e0a7ba6e6,
2603    0x6672f5ad0ee884e1,
2604    0x359574f5366ce0d7,
2605    0xc1bdf71d7fe04c8d,
2606    0x925a7645476428bb,
2607    0xc3ca53211ca40cfd,
2608    0x902dd279242068cb,
2609    0x640551916dacc491,
2610    0x37e2d0c95528a0a7,
2611    0x1e8cf96a51bb82a0,
2612    0x4d6b7832693fe696,
2613    0xb943fbda20b34acc,
2614    0xeaa47a8218372efa,
2615    0xeb9fa89c29950ec2,
2616    0xb87829c411116af4,
2617    0x4c50aa2c589dc6ae,
2618    0x1fb72b746019a298,
2619    0x36d902d7648a809f,
2620    0x653e838f5c0ee4a9,
2621    0x91160067158248f3,
2622    0xc2f1813f2d062cc5,
2623    0xe241386da4840f02,
2624    0xb1a6b9359c006b34,
2625    0x458e3addd58cc76e,
2626    0x1669bb85ed08a358,
2627    0x3f079226e99b815f,
2628    0x6ce0137ed11fe569,
2629    0x98c8909698934933,
2630    0xcb2f11cea0172d05,
2631    0xca14c3d091b50d3d,
2632    0x99f34288a931690b,
2633    0x6ddbc160e0bdc551,
2634    0x3e3c4038d839a167,
2635    0x1752699bdcaa8360,
2636    0x44b5e8c3e42ee756,
2637    0xb09d6b2bada24b0c,
2638    0xe37aea7395262f3a,
2639    0xb2eacf17cee60b7c,
2640    0xe10d4e4ff6626f4a,
2641    0x1525cda7bfeec310,
2642    0x46c24cff876aa726,
2643    0x6fac655c83f98521,
2644    0x3c4be404bb7de117,
2645    0xc86367ecf2f14d4d,
2646    0x9b84e6b4ca75297b,
2647    0x9abf34aafbd70943,
2648    0xc958b5f2c3536d75,
2649    0x3d70361a8adfc12f,
2650    0x6e97b742b25ba519,
2651    0x47f99ee1b6c8871e,
2652    0x141e1fb98e4ce328,
2653    0xe0369c51c7c04f72,
2654    0xb3d11d09ff442b44,
2655    0x4316d699704007fe,
2656    0x10f157c148c463c8,
2657    0xe4d9d4290148cf92,
2658    0xb73e557139ccaba4,
2659    0x9e507cd23d5f89a3,
2660    0xcdb7fd8a05dbed95,
2661    0x399f7e624c5741cf,
2662    0x6a78ff3a74d325f9,
2663    0x6b432d24457105c1,
2664    0x38a4ac7c7df561f7,
2665    0xcc8c2f943479cdad,
2666    0x9f6baecc0cfda99b,
2667    0xb605876f086e8b9c,
2668    0xe5e2063730eaefaa,
2669    0x11ca85df796643f0,
2670    0x422d048741e227c6,
2671    0x13bd21e31a220380,
2672    0x405aa0bb22a667b6,
2673    0xb47223536b2acbec,
2674    0xe795a20b53aeafda,
2675    0xcefb8ba8573d8ddd,
2676    0x9d1c0af06fb9e9eb,
2677    0x69348918263545b1,
2678    0x3ad308401eb12187,
2679    0x3be8da5e2f1301bf,
2680    0x680f5b0617976589,
2681    0x9c27d8ee5e1bc9d3,
2682    0xcfc059b6669fade5,
2683    0xe6ae7015620c8fe2,
2684    0xb549f14d5a88ebd4,
2685    0x416172a51304478e,
2686    0x1286f3fd2b8023b8,
2687];
2688
2689// CRC table for the ECMA polynomial in the range (`1 = x¹⁵¹, …, 128 = x¹⁴⁴`).
2690// Generated by running `./build_table 10`.
2691static TABLE_10: [u64; 256] = [
2692    0x0000000000000000,
2693    0x09abf11afca2d0d7,
2694    0x1357e235f945a1ae,
2695    0x1afc132f05e77179,
2696    0x26afc46bf28b435c,
2697    0x2f0435710e29938b,
2698    0x35f8265e0bcee2f2,
2699    0x3c53d744f76c3225,
2700    0x4d5f88d7e51686b8,
2701    0x44f479cd19b4566f,
2702    0x5e086ae21c532716,
2703    0x57a39bf8e0f1f7c1,
2704    0x6bf04cbc179dc5e4,
2705    0x625bbda6eb3f1533,
2706    0x78a7ae89eed8644a,
2707    0x710c5f93127ab49d,
2708    0x9abf11afca2d0d70,
2709    0x9314e0b5368fdda7,
2710    0x89e8f39a3368acde,
2711    0x80430280cfca7c09,
2712    0xbc10d5c438a64e2c,
2713    0xb5bb24dec4049efb,
2714    0xaf4737f1c1e3ef82,
2715    0xa6ecc6eb3d413f55,
2716    0xd7e099782f3b8bc8,
2717    0xde4b6862d3995b1f,
2718    0xc4b77b4dd67e2a66,
2719    0xcd1c8a572adcfab1,
2720    0xf14f5d13ddb0c894,
2721    0xf8e4ac0921121843,
2722    0xe218bf2624f5693a,
2723    0xebb34e3cd857b9ed,
2724    0xa7a68c743b540465,
2725    0xae0d7d6ec7f6d4b2,
2726    0xb4f16e41c211a5cb,
2727    0xbd5a9f5b3eb3751c,
2728    0x8109481fc9df4739,
2729    0x88a2b905357d97ee,
2730    0x925eaa2a309ae697,
2731    0x9bf55b30cc383640,
2732    0xeaf904a3de4282dd,
2733    0xe352f5b922e0520a,
2734    0xf9aee69627072373,
2735    0xf005178cdba5f3a4,
2736    0xcc56c0c82cc9c181,
2737    0xc5fd31d2d06b1156,
2738    0xdf0122fdd58c602f,
2739    0xd6aad3e7292eb0f8,
2740    0x3d199ddbf1790915,
2741    0x34b26cc10ddbd9c2,
2742    0x2e4e7fee083ca8bb,
2743    0x27e58ef4f49e786c,
2744    0x1bb659b003f24a49,
2745    0x121da8aaff509a9e,
2746    0x08e1bb85fab7ebe7,
2747    0x014a4a9f06153b30,
2748    0x7046150c146f8fad,
2749    0x79ede416e8cd5f7a,
2750    0x6311f739ed2a2e03,
2751    0x6aba06231188fed4,
2752    0x56e9d167e6e4ccf1,
2753    0x5f42207d1a461c26,
2754    0x45be33521fa16d5f,
2755    0x4c15c248e303bd88,
2756    0xdd95b7c3d9a6164f,
2757    0xd43e46d92504c698,
2758    0xcec255f620e3b7e1,
2759    0xc769a4ecdc416736,
2760    0xfb3a73a82b2d5513,
2761    0xf29182b2d78f85c4,
2762    0xe86d919dd268f4bd,
2763    0xe1c660872eca246a,
2764    0x90ca3f143cb090f7,
2765    0x9961ce0ec0124020,
2766    0x839ddd21c5f53159,
2767    0x8a362c3b3957e18e,
2768    0xb665fb7fce3bd3ab,
2769    0xbfce0a653299037c,
2770    0xa532194a377e7205,
2771    0xac99e850cbdca2d2,
2772    0x472aa66c138b1b3f,
2773    0x4e815776ef29cbe8,
2774    0x547d4459eaceba91,
2775    0x5dd6b543166c6a46,
2776    0x61856207e1005863,
2777    0x682e931d1da288b4,
2778    0x72d280321845f9cd,
2779    0x7b797128e4e7291a,
2780    0x0a752ebbf69d9d87,
2781    0x03dedfa10a3f4d50,
2782    0x1922cc8e0fd83c29,
2783    0x10893d94f37aecfe,
2784    0x2cdaead00416dedb,
2785    0x25711bcaf8b40e0c,
2786    0x3f8d08e5fd537f75,
2787    0x3626f9ff01f1afa2,
2788    0x7a333bb7e2f2122a,
2789    0x7398caad1e50c2fd,
2790    0x6964d9821bb7b384,
2791    0x60cf2898e7156353,
2792    0x5c9cffdc10795176,
2793    0x55370ec6ecdb81a1,
2794    0x4fcb1de9e93cf0d8,
2795    0x4660ecf3159e200f,
2796    0x376cb36007e49492,
2797    0x3ec7427afb464445,
2798    0x243b5155fea1353c,
2799    0x2d90a04f0203e5eb,
2800    0x11c3770bf56fd7ce,
2801    0x1868861109cd0719,
2802    0x0294953e0c2a7660,
2803    0x0b3f6424f088a6b7,
2804    0xe08c2a1828df1f5a,
2805    0xe927db02d47dcf8d,
2806    0xf3dbc82dd19abef4,
2807    0xfa7039372d386e23,
2808    0xc623ee73da545c06,
2809    0xcf881f6926f68cd1,
2810    0xd5740c462311fda8,
2811    0xdcdffd5cdfb32d7f,
2812    0xadd3a2cfcdc999e2,
2813    0xa47853d5316b4935,
2814    0xbe8440fa348c384c,
2815    0xb72fb1e0c82ee89b,
2816    0x8b7c66a43f42dabe,
2817    0x82d797bec3e00a69,
2818    0x982b8491c6077b10,
2819    0x9180758b3aa5abc7,
2820    0x29f3c0ac1c42321b,
2821    0x205831b6e0e0e2cc,
2822    0x3aa42299e50793b5,
2823    0x330fd38319a54362,
2824    0x0f5c04c7eec97147,
2825    0x06f7f5dd126ba190,
2826    0x1c0be6f2178cd0e9,
2827    0x15a017e8eb2e003e,
2828    0x64ac487bf954b4a3,
2829    0x6d07b96105f66474,
2830    0x77fbaa4e0011150d,
2831    0x7e505b54fcb3c5da,
2832    0x42038c100bdff7ff,
2833    0x4ba87d0af77d2728,
2834    0x51546e25f29a5651,
2835    0x58ff9f3f0e388686,
2836    0xb34cd103d66f3f6b,
2837    0xbae720192acdefbc,
2838    0xa01b33362f2a9ec5,
2839    0xa9b0c22cd3884e12,
2840    0x95e3156824e47c37,
2841    0x9c48e472d846ace0,
2842    0x86b4f75ddda1dd99,
2843    0x8f1f064721030d4e,
2844    0xfe1359d43379b9d3,
2845    0xf7b8a8cecfdb6904,
2846    0xed44bbe1ca3c187d,
2847    0xe4ef4afb369ec8aa,
2848    0xd8bc9dbfc1f2fa8f,
2849    0xd1176ca53d502a58,
2850    0xcbeb7f8a38b75b21,
2851    0xc2408e90c4158bf6,
2852    0x8e554cd82716367e,
2853    0x87febdc2dbb4e6a9,
2854    0x9d02aeedde5397d0,
2855    0x94a95ff722f14707,
2856    0xa8fa88b3d59d7522,
2857    0xa15179a9293fa5f5,
2858    0xbbad6a862cd8d48c,
2859    0xb2069b9cd07a045b,
2860    0xc30ac40fc200b0c6,
2861    0xcaa135153ea26011,
2862    0xd05d263a3b451168,
2863    0xd9f6d720c7e7c1bf,
2864    0xe5a50064308bf39a,
2865    0xec0ef17ecc29234d,
2866    0xf6f2e251c9ce5234,
2867    0xff59134b356c82e3,
2868    0x14ea5d77ed3b3b0e,
2869    0x1d41ac6d1199ebd9,
2870    0x07bdbf42147e9aa0,
2871    0x0e164e58e8dc4a77,
2872    0x3245991c1fb07852,
2873    0x3bee6806e312a885,
2874    0x21127b29e6f5d9fc,
2875    0x28b98a331a57092b,
2876    0x59b5d5a0082dbdb6,
2877    0x501e24baf48f6d61,
2878    0x4ae23795f1681c18,
2879    0x4349c68f0dcacccf,
2880    0x7f1a11cbfaa6feea,
2881    0x76b1e0d106042e3d,
2882    0x6c4df3fe03e35f44,
2883    0x65e602e4ff418f93,
2884    0xf466776fc5e42454,
2885    0xfdcd86753946f483,
2886    0xe731955a3ca185fa,
2887    0xee9a6440c003552d,
2888    0xd2c9b304376f6708,
2889    0xdb62421ecbcdb7df,
2890    0xc19e5131ce2ac6a6,
2891    0xc835a02b32881671,
2892    0xb939ffb820f2a2ec,
2893    0xb0920ea2dc50723b,
2894    0xaa6e1d8dd9b70342,
2895    0xa3c5ec972515d395,
2896    0x9f963bd3d279e1b0,
2897    0x963dcac92edb3167,
2898    0x8cc1d9e62b3c401e,
2899    0x856a28fcd79e90c9,
2900    0x6ed966c00fc92924,
2901    0x677297daf36bf9f3,
2902    0x7d8e84f5f68c888a,
2903    0x742575ef0a2e585d,
2904    0x4876a2abfd426a78,
2905    0x41dd53b101e0baaf,
2906    0x5b21409e0407cbd6,
2907    0x528ab184f8a51b01,
2908    0x2386ee17eadfaf9c,
2909    0x2a2d1f0d167d7f4b,
2910    0x30d10c22139a0e32,
2911    0x397afd38ef38dee5,
2912    0x05292a7c1854ecc0,
2913    0x0c82db66e4f63c17,
2914    0x167ec849e1114d6e,
2915    0x1fd539531db39db9,
2916    0x53c0fb1bfeb02031,
2917    0x5a6b0a010212f0e6,
2918    0x4097192e07f5819f,
2919    0x493ce834fb575148,
2920    0x756f3f700c3b636d,
2921    0x7cc4ce6af099b3ba,
2922    0x6638dd45f57ec2c3,
2923    0x6f932c5f09dc1214,
2924    0x1e9f73cc1ba6a689,
2925    0x173482d6e704765e,
2926    0x0dc891f9e2e30727,
2927    0x046360e31e41d7f0,
2928    0x3830b7a7e92de5d5,
2929    0x319b46bd158f3502,
2930    0x2b6755921068447b,
2931    0x22cca488ecca94ac,
2932    0xc97feab4349d2d41,
2933    0xc0d41baec83ffd96,
2934    0xda280881cdd88cef,
2935    0xd383f99b317a5c38,
2936    0xefd02edfc6166e1d,
2937    0xe67bdfc53ab4beca,
2938    0xfc87ccea3f53cfb3,
2939    0xf52c3df0c3f11f64,
2940    0x84206263d18babf9,
2941    0x8d8b93792d297b2e,
2942    0x9777805628ce0a57,
2943    0x9edc714cd46cda80,
2944    0xa28fa6082300e8a5,
2945    0xab245712dfa23872,
2946    0xb1d8443dda45490b,
2947    0xb873b52726e799dc,
2948];
2949
2950// CRC table for the ECMA polynomial in the range (`1 = x¹⁵⁹, …, 128 = x¹⁵²`).
2951// Generated by running `./build_table 11`.
2952static TABLE_11: [u64; 256] = [
2953    0x0000000000000000,
2954    0xec32cffb23e3ed7d,
2955    0x4abd30dde8c9c47f,
2956    0xa68fff26cb2a2902,
2957    0x957a61bbd19388fe,
2958    0x7948ae40f2706583,
2959    0xdfc75166395a4c81,
2960    0x33f59e9d1ab9a1fc,
2961    0xb82c6c5c0c290f79,
2962    0x541ea3a72fcae204,
2963    0xf2915c81e4e0cb06,
2964    0x1ea3937ac703267b,
2965    0x2d560de7ddba8787,
2966    0xc164c21cfe596afa,
2967    0x67eb3d3a357343f8,
2968    0x8bd9f2c11690ae85,
2969    0xe2807793b75c0077,
2970    0x0eb2b86894bfed0a,
2971    0xa83d474e5f95c408,
2972    0x440f88b57c762975,
2973    0x77fa162866cf8889,
2974    0x9bc8d9d3452c65f4,
2975    0x3d4726f58e064cf6,
2976    0xd175e90eade5a18b,
2977    0x5aac1bcfbb750f0e,
2978    0xb69ed4349896e273,
2979    0x10112b1253bccb71,
2980    0xfc23e4e9705f260c,
2981    0xcfd67a746ae687f0,
2982    0x23e4b58f49056a8d,
2983    0x856b4aa9822f438f,
2984    0x69598552a1ccaef2,
2985    0x57d8400cc1b61e6b,
2986    0xbbea8ff7e255f316,
2987    0x1d6570d1297fda14,
2988    0xf157bf2a0a9c3769,
2989    0xc2a221b710259695,
2990    0x2e90ee4c33c67be8,
2991    0x881f116af8ec52ea,
2992    0x642dde91db0fbf97,
2993    0xeff42c50cd9f1112,
2994    0x03c6e3abee7cfc6f,
2995    0xa5491c8d2556d56d,
2996    0x497bd37606b53810,
2997    0x7a8e4deb1c0c99ec,
2998    0x96bc82103fef7491,
2999    0x30337d36f4c55d93,
3000    0xdc01b2cdd726b0ee,
3001    0xb558379f76ea1e1c,
3002    0x596af8645509f361,
3003    0xffe507429e23da63,
3004    0x13d7c8b9bdc0371e,
3005    0x20225624a77996e2,
3006    0xcc1099df849a7b9f,
3007    0x6a9f66f94fb0529d,
3008    0x86ada9026c53bfe0,
3009    0x0d745bc37ac31165,
3010    0xe14694385920fc18,
3011    0x47c96b1e920ad51a,
3012    0xabfba4e5b1e93867,
3013    0x980e3a78ab50999b,
3014    0x743cf58388b374e6,
3015    0xd2b30aa543995de4,
3016    0x3e81c55e607ab099,
3017    0xafb08019836c3cd6,
3018    0x43824fe2a08fd1ab,
3019    0xe50db0c46ba5f8a9,
3020    0x093f7f3f484615d4,
3021    0x3acae1a252ffb428,
3022    0xd6f82e59711c5955,
3023    0x7077d17fba367057,
3024    0x9c451e8499d59d2a,
3025    0x179cec458f4533af,
3026    0xfbae23beaca6ded2,
3027    0x5d21dc98678cf7d0,
3028    0xb1131363446f1aad,
3029    0x82e68dfe5ed6bb51,
3030    0x6ed442057d35562c,
3031    0xc85bbd23b61f7f2e,
3032    0x246972d895fc9253,
3033    0x4d30f78a34303ca1,
3034    0xa102387117d3d1dc,
3035    0x078dc757dcf9f8de,
3036    0xebbf08acff1a15a3,
3037    0xd84a9631e5a3b45f,
3038    0x347859cac6405922,
3039    0x92f7a6ec0d6a7020,
3040    0x7ec569172e899d5d,
3041    0xf51c9bd6381933d8,
3042    0x192e542d1bfadea5,
3043    0xbfa1ab0bd0d0f7a7,
3044    0x539364f0f3331ada,
3045    0x6066fa6de98abb26,
3046    0x8c543596ca69565b,
3047    0x2adbcab001437f59,
3048    0xc6e9054b22a09224,
3049    0xf868c01542da22bd,
3050    0x145a0fee6139cfc0,
3051    0xb2d5f0c8aa13e6c2,
3052    0x5ee73f3389f00bbf,
3053    0x6d12a1ae9349aa43,
3054    0x81206e55b0aa473e,
3055    0x27af91737b806e3c,
3056    0xcb9d5e8858638341,
3057    0x4044ac494ef32dc4,
3058    0xac7663b26d10c0b9,
3059    0x0af99c94a63ae9bb,
3060    0xe6cb536f85d904c6,
3061    0xd53ecdf29f60a53a,
3062    0x390c0209bc834847,
3063    0x9f83fd2f77a96145,
3064    0x73b132d4544a8c38,
3065    0x1ae8b786f58622ca,
3066    0xf6da787dd665cfb7,
3067    0x5055875b1d4fe6b5,
3068    0xbc6748a03eac0bc8,
3069    0x8f92d63d2415aa34,
3070    0x63a019c607f64749,
3071    0xc52fe6e0ccdc6e4b,
3072    0x291d291bef3f8336,
3073    0xa2c4dbdaf9af2db3,
3074    0x4ef61421da4cc0ce,
3075    0xe879eb071166e9cc,
3076    0x044b24fc328504b1,
3077    0x37beba61283ca54d,
3078    0xdb8c759a0bdf4830,
3079    0x7d038abcc0f56132,
3080    0x91314547e3168c4f,
3081    0xcdb9af18a9d66729,
3082    0x218b60e38a358a54,
3083    0x87049fc5411fa356,
3084    0x6b36503e62fc4e2b,
3085    0x58c3cea37845efd7,
3086    0xb4f101585ba602aa,
3087    0x127efe7e908c2ba8,
3088    0xfe4c3185b36fc6d5,
3089    0x7595c344a5ff6850,
3090    0x99a70cbf861c852d,
3091    0x3f28f3994d36ac2f,
3092    0xd31a3c626ed54152,
3093    0xe0efa2ff746ce0ae,
3094    0x0cdd6d04578f0dd3,
3095    0xaa5292229ca524d1,
3096    0x46605dd9bf46c9ac,
3097    0x2f39d88b1e8a675e,
3098    0xc30b17703d698a23,
3099    0x6584e856f643a321,
3100    0x89b627add5a04e5c,
3101    0xba43b930cf19efa0,
3102    0x567176cbecfa02dd,
3103    0xf0fe89ed27d02bdf,
3104    0x1ccc46160433c6a2,
3105    0x9715b4d712a36827,
3106    0x7b277b2c3140855a,
3107    0xdda8840afa6aac58,
3108    0x319a4bf1d9894125,
3109    0x026fd56cc330e0d9,
3110    0xee5d1a97e0d30da4,
3111    0x48d2e5b12bf924a6,
3112    0xa4e02a4a081ac9db,
3113    0x9a61ef1468607942,
3114    0x765320ef4b83943f,
3115    0xd0dcdfc980a9bd3d,
3116    0x3cee1032a34a5040,
3117    0x0f1b8eafb9f3f1bc,
3118    0xe32941549a101cc1,
3119    0x45a6be72513a35c3,
3120    0xa994718972d9d8be,
3121    0x224d83486449763b,
3122    0xce7f4cb347aa9b46,
3123    0x68f0b3958c80b244,
3124    0x84c27c6eaf635f39,
3125    0xb737e2f3b5dafec5,
3126    0x5b052d08963913b8,
3127    0xfd8ad22e5d133aba,
3128    0x11b81dd57ef0d7c7,
3129    0x78e19887df3c7935,
3130    0x94d3577cfcdf9448,
3131    0x325ca85a37f5bd4a,
3132    0xde6e67a114165037,
3133    0xed9bf93c0eaff1cb,
3134    0x01a936c72d4c1cb6,
3135    0xa726c9e1e66635b4,
3136    0x4b14061ac585d8c9,
3137    0xc0cdf4dbd315764c,
3138    0x2cff3b20f0f69b31,
3139    0x8a70c4063bdcb233,
3140    0x66420bfd183f5f4e,
3141    0x55b795600286feb2,
3142    0xb9855a9b216513cf,
3143    0x1f0aa5bdea4f3acd,
3144    0xf3386a46c9acd7b0,
3145    0x62092f012aba5bff,
3146    0x8e3be0fa0959b682,
3147    0x28b41fdcc2739f80,
3148    0xc486d027e19072fd,
3149    0xf7734ebafb29d301,
3150    0x1b418141d8ca3e7c,
3151    0xbdce7e6713e0177e,
3152    0x51fcb19c3003fa03,
3153    0xda25435d26935486,
3154    0x36178ca60570b9fb,
3155    0x90987380ce5a90f9,
3156    0x7caabc7bedb97d84,
3157    0x4f5f22e6f700dc78,
3158    0xa36ded1dd4e33105,
3159    0x05e2123b1fc91807,
3160    0xe9d0ddc03c2af57a,
3161    0x808958929de65b88,
3162    0x6cbb9769be05b6f5,
3163    0xca34684f752f9ff7,
3164    0x2606a7b456cc728a,
3165    0x15f339294c75d376,
3166    0xf9c1f6d26f963e0b,
3167    0x5f4e09f4a4bc1709,
3168    0xb37cc60f875ffa74,
3169    0x38a534ce91cf54f1,
3170    0xd497fb35b22cb98c,
3171    0x721804137906908e,
3172    0x9e2acbe85ae57df3,
3173    0xaddf5575405cdc0f,
3174    0x41ed9a8e63bf3172,
3175    0xe76265a8a8951870,
3176    0x0b50aa538b76f50d,
3177    0x35d16f0deb0c4594,
3178    0xd9e3a0f6c8efa8e9,
3179    0x7f6c5fd003c581eb,
3180    0x935e902b20266c96,
3181    0xa0ab0eb63a9fcd6a,
3182    0x4c99c14d197c2017,
3183    0xea163e6bd2560915,
3184    0x0624f190f1b5e468,
3185    0x8dfd0351e7254aed,
3186    0x61cfccaac4c6a790,
3187    0xc740338c0fec8e92,
3188    0x2b72fc772c0f63ef,
3189    0x188762ea36b6c213,
3190    0xf4b5ad1115552f6e,
3191    0x523a5237de7f066c,
3192    0xbe089dccfd9ceb11,
3193    0xd751189e5c5045e3,
3194    0x3b63d7657fb3a89e,
3195    0x9dec2843b499819c,
3196    0x71dee7b8977a6ce1,
3197    0x422b79258dc3cd1d,
3198    0xae19b6deae202060,
3199    0x089649f8650a0962,
3200    0xe4a4860346e9e41f,
3201    0x6f7d74c250794a9a,
3202    0x834fbb39739aa7e7,
3203    0x25c0441fb8b08ee5,
3204    0xc9f28be49b536398,
3205    0xfa07157981eac264,
3206    0x1635da82a2092f19,
3207    0xb0ba25a46923061b,
3208    0x5c88ea5f4ac0eb66,
3209];
3210
3211// CRC table for the ECMA polynomial in the range (`1 = x¹⁶⁷, …, 128 = x¹⁶⁰`).
3212// Generated by running `./build_table 12`.
3213static TABLE_12: [u64; 256] = [
3214    0x0000000000000000,
3215    0xdda9f27ee08373ad,
3216    0x298b4bd66e08f9df,
3217    0xf422b9a88e8b8a72,
3218    0x531697acdc11f3be,
3219    0x8ebf65d23c928013,
3220    0x7a9ddc7ab2190a61,
3221    0xa7342e04529a79cc,
3222    0xa62d2f59b823e77c,
3223    0x7b84dd2758a094d1,
3224    0x8fa6648fd62b1ea3,
3225    0x520f96f136a86d0e,
3226    0xf53bb8f5643214c2,
3227    0x28924a8b84b1676f,
3228    0xdcb0f3230a3aed1d,
3229    0x0119015deab99eb0,
3230    0xde82f198df49d07d,
3231    0x032b03e63fcaa3d0,
3232    0xf709ba4eb14129a2,
3233    0x2aa0483051c25a0f,
3234    0x8d946634035823c3,
3235    0x503d944ae3db506e,
3236    0xa41f2de26d50da1c,
3237    0x79b6df9c8dd3a9b1,
3238    0x78afdec1676a3701,
3239    0xa5062cbf87e944ac,
3240    0x512495170962cede,
3241    0x8c8d6769e9e1bd73,
3242    0x2bb9496dbb7bc4bf,
3243    0xf610bb135bf8b712,
3244    0x023202bbd5733d60,
3245    0xdf9bf0c535f04ecd,
3246    0x2fdd4c1a119dbe7f,
3247    0xf274be64f11ecdd2,
3248    0x065607cc7f9547a0,
3249    0xdbfff5b29f16340d,
3250    0x7ccbdbb6cd8c4dc1,
3251    0xa16229c82d0f3e6c,
3252    0x55409060a384b41e,
3253    0x88e9621e4307c7b3,
3254    0x89f06343a9be5903,
3255    0x5459913d493d2aae,
3256    0xa07b2895c7b6a0dc,
3257    0x7dd2daeb2735d371,
3258    0xdae6f4ef75afaabd,
3259    0x074f0691952cd910,
3260    0xf36dbf391ba75362,
3261    0x2ec44d47fb2420cf,
3262    0xf15fbd82ced46e02,
3263    0x2cf64ffc2e571daf,
3264    0xd8d4f654a0dc97dd,
3265    0x057d042a405fe470,
3266    0xa2492a2e12c59dbc,
3267    0x7fe0d850f246ee11,
3268    0x8bc261f87ccd6463,
3269    0x566b93869c4e17ce,
3270    0x577292db76f7897e,
3271    0x8adb60a59674fad3,
3272    0x7ef9d90d18ff70a1,
3273    0xa3502b73f87c030c,
3274    0x04640577aae67ac0,
3275    0xd9cdf7094a65096d,
3276    0x2def4ea1c4ee831f,
3277    0xf046bcdf246df0b2,
3278    0x5fba9834233b7cfe,
3279    0x82136a4ac3b80f53,
3280    0x7631d3e24d338521,
3281    0xab98219cadb0f68c,
3282    0x0cac0f98ff2a8f40,
3283    0xd105fde61fa9fced,
3284    0x2527444e9122769f,
3285    0xf88eb63071a10532,
3286    0xf997b76d9b189b82,
3287    0x243e45137b9be82f,
3288    0xd01cfcbbf510625d,
3289    0x0db50ec5159311f0,
3290    0xaa8120c14709683c,
3291    0x7728d2bfa78a1b91,
3292    0x830a6b17290191e3,
3293    0x5ea39969c982e24e,
3294    0x813869acfc72ac83,
3295    0x5c919bd21cf1df2e,
3296    0xa8b3227a927a555c,
3297    0x751ad00472f926f1,
3298    0xd22efe0020635f3d,
3299    0x0f870c7ec0e02c90,
3300    0xfba5b5d64e6ba6e2,
3301    0x260c47a8aee8d54f,
3302    0x271546f544514bff,
3303    0xfabcb48ba4d23852,
3304    0x0e9e0d232a59b220,
3305    0xd337ff5dcadac18d,
3306    0x7403d1599840b841,
3307    0xa9aa232778c3cbec,
3308    0x5d889a8ff648419e,
3309    0x802168f116cb3233,
3310    0x7067d42e32a6c281,
3311    0xadce2650d225b12c,
3312    0x59ec9ff85cae3b5e,
3313    0x84456d86bc2d48f3,
3314    0x23714382eeb7313f,
3315    0xfed8b1fc0e344292,
3316    0x0afa085480bfc8e0,
3317    0xd753fa2a603cbb4d,
3318    0xd64afb778a8525fd,
3319    0x0be309096a065650,
3320    0xffc1b0a1e48ddc22,
3321    0x226842df040eaf8f,
3322    0x855c6cdb5694d643,
3323    0x58f59ea5b617a5ee,
3324    0xacd7270d389c2f9c,
3325    0x717ed573d81f5c31,
3326    0xaee525b6edef12fc,
3327    0x734cd7c80d6c6151,
3328    0x876e6e6083e7eb23,
3329    0x5ac79c1e6364988e,
3330    0xfdf3b21a31fee142,
3331    0x205a4064d17d92ef,
3332    0xd478f9cc5ff6189d,
3333    0x09d10bb2bf756b30,
3334    0x08c80aef55ccf580,
3335    0xd561f891b54f862d,
3336    0x214341393bc40c5f,
3337    0xfceab347db477ff2,
3338    0x5bde9d4389dd063e,
3339    0x86776f3d695e7593,
3340    0x7255d695e7d5ffe1,
3341    0xaffc24eb07568c4c,
3342    0xbf7530684676f9fc,
3343    0x62dcc216a6f58a51,
3344    0x96fe7bbe287e0023,
3345    0x4b5789c0c8fd738e,
3346    0xec63a7c49a670a42,
3347    0x31ca55ba7ae479ef,
3348    0xc5e8ec12f46ff39d,
3349    0x18411e6c14ec8030,
3350    0x19581f31fe551e80,
3351    0xc4f1ed4f1ed66d2d,
3352    0x30d354e7905de75f,
3353    0xed7aa69970de94f2,
3354    0x4a4e889d2244ed3e,
3355    0x97e77ae3c2c79e93,
3356    0x63c5c34b4c4c14e1,
3357    0xbe6c3135accf674c,
3358    0x61f7c1f0993f2981,
3359    0xbc5e338e79bc5a2c,
3360    0x487c8a26f737d05e,
3361    0x95d5785817b4a3f3,
3362    0x32e1565c452eda3f,
3363    0xef48a422a5ada992,
3364    0x1b6a1d8a2b2623e0,
3365    0xc6c3eff4cba5504d,
3366    0xc7daeea9211ccefd,
3367    0x1a731cd7c19fbd50,
3368    0xee51a57f4f143722,
3369    0x33f85701af97448f,
3370    0x94cc7905fd0d3d43,
3371    0x49658b7b1d8e4eee,
3372    0xbd4732d39305c49c,
3373    0x60eec0ad7386b731,
3374    0x90a87c7257eb4783,
3375    0x4d018e0cb768342e,
3376    0xb92337a439e3be5c,
3377    0x648ac5dad960cdf1,
3378    0xc3beebde8bfab43d,
3379    0x1e1719a06b79c790,
3380    0xea35a008e5f24de2,
3381    0x379c527605713e4f,
3382    0x3685532befc8a0ff,
3383    0xeb2ca1550f4bd352,
3384    0x1f0e18fd81c05920,
3385    0xc2a7ea8361432a8d,
3386    0x6593c48733d95341,
3387    0xb83a36f9d35a20ec,
3388    0x4c188f515dd1aa9e,
3389    0x91b17d2fbd52d933,
3390    0x4e2a8dea88a297fe,
3391    0x93837f946821e453,
3392    0x67a1c63ce6aa6e21,
3393    0xba08344206291d8c,
3394    0x1d3c1a4654b36440,
3395    0xc095e838b43017ed,
3396    0x34b751903abb9d9f,
3397    0xe91ea3eeda38ee32,
3398    0xe807a2b330817082,
3399    0x35ae50cdd002032f,
3400    0xc18ce9655e89895d,
3401    0x1c251b1bbe0afaf0,
3402    0xbb11351fec90833c,
3403    0x66b8c7610c13f091,
3404    0x929a7ec982987ae3,
3405    0x4f338cb7621b094e,
3406    0xe0cfa85c654d8502,
3407    0x3d665a2285cef6af,
3408    0xc944e38a0b457cdd,
3409    0x14ed11f4ebc60f70,
3410    0xb3d93ff0b95c76bc,
3411    0x6e70cd8e59df0511,
3412    0x9a527426d7548f63,
3413    0x47fb865837d7fcce,
3414    0x46e28705dd6e627e,
3415    0x9b4b757b3ded11d3,
3416    0x6f69ccd3b3669ba1,
3417    0xb2c03ead53e5e80c,
3418    0x15f410a9017f91c0,
3419    0xc85de2d7e1fce26d,
3420    0x3c7f5b7f6f77681f,
3421    0xe1d6a9018ff41bb2,
3422    0x3e4d59c4ba04557f,
3423    0xe3e4abba5a8726d2,
3424    0x17c61212d40caca0,
3425    0xca6fe06c348fdf0d,
3426    0x6d5bce686615a6c1,
3427    0xb0f23c168696d56c,
3428    0x44d085be081d5f1e,
3429    0x997977c0e89e2cb3,
3430    0x9860769d0227b203,
3431    0x45c984e3e2a4c1ae,
3432    0xb1eb3d4b6c2f4bdc,
3433    0x6c42cf358cac3871,
3434    0xcb76e131de3641bd,
3435    0x16df134f3eb53210,
3436    0xe2fdaae7b03eb862,
3437    0x3f54589950bdcbcf,
3438    0xcf12e44674d03b7d,
3439    0x12bb1638945348d0,
3440    0xe699af901ad8c2a2,
3441    0x3b305deefa5bb10f,
3442    0x9c0473eaa8c1c8c3,
3443    0x41ad81944842bb6e,
3444    0xb58f383cc6c9311c,
3445    0x6826ca42264a42b1,
3446    0x693fcb1fccf3dc01,
3447    0xb49639612c70afac,
3448    0x40b480c9a2fb25de,
3449    0x9d1d72b742785673,
3450    0x3a295cb310e22fbf,
3451    0xe780aecdf0615c12,
3452    0x13a217657eead660,
3453    0xce0be51b9e69a5cd,
3454    0x119015deab99eb00,
3455    0xcc39e7a04b1a98ad,
3456    0x381b5e08c59112df,
3457    0xe5b2ac7625126172,
3458    0x42868272778818be,
3459    0x9f2f700c970b6b13,
3460    0x6b0dc9a41980e161,
3461    0xb6a43bdaf90392cc,
3462    0xb7bd3a8713ba0c7c,
3463    0x6a14c8f9f3397fd1,
3464    0x9e3671517db2f5a3,
3465    0x439f832f9d31860e,
3466    0xe4abad2bcfabffc2,
3467    0x39025f552f288c6f,
3468    0xcd20e6fda1a3061d,
3469    0x10891483412075b0,
3470];
3471
3472// CRC table for the ECMA polynomial in the range (`1 = x¹⁷⁵, …, 128 = x¹⁶⁸`).
3473// Generated by running `./build_table 13`.
3474static TABLE_13: [u64; 256] = [
3475    0x0000000000000000,
3476    0x0dd9b4240837fd99,
3477    0x1bb36848106ffb32,
3478    0x166adc6c185806ab,
3479    0x3766d09020dff664,
3480    0x3abf64b428e80bfd,
3481    0x2cd5b8d830b00d56,
3482    0x210c0cfc3887f0cf,
3483    0x6ecda12041bfecc8,
3484    0x6314150449881151,
3485    0x757ec96851d017fa,
3486    0x78a77d4c59e7ea63,
3487    0x59ab71b061601aac,
3488    0x5472c5946957e735,
3489    0x421819f8710fe19e,
3490    0x4fc1addc79381c07,
3491    0xdd9b4240837fd990,
3492    0xd042f6648b482409,
3493    0xc6282a08931022a2,
3494    0xcbf19e2c9b27df3b,
3495    0xeafd92d0a3a02ff4,
3496    0xe72426f4ab97d26d,
3497    0xf14efa98b3cfd4c6,
3498    0xfc974ebcbbf8295f,
3499    0xb356e360c2c03558,
3500    0xbe8f5744caf7c8c1,
3501    0xa8e58b28d2afce6a,
3502    0xa53c3f0cda9833f3,
3503    0x843033f0e21fc33c,
3504    0x89e987d4ea283ea5,
3505    0x9f835bb8f270380e,
3506    0x925aef9cfa47c597,
3507    0x29ee2baaa9f1ada5,
3508    0x24379f8ea1c6503c,
3509    0x325d43e2b99e5697,
3510    0x3f84f7c6b1a9ab0e,
3511    0x1e88fb3a892e5bc1,
3512    0x13514f1e8119a658,
3513    0x053b93729941a0f3,
3514    0x08e2275691765d6a,
3515    0x47238a8ae84e416d,
3516    0x4afa3eaee079bcf4,
3517    0x5c90e2c2f821ba5f,
3518    0x514956e6f01647c6,
3519    0x70455a1ac891b709,
3520    0x7d9cee3ec0a64a90,
3521    0x6bf63252d8fe4c3b,
3522    0x662f8676d0c9b1a2,
3523    0xf47569ea2a8e7435,
3524    0xf9acddce22b989ac,
3525    0xefc601a23ae18f07,
3526    0xe21fb58632d6729e,
3527    0xc313b97a0a518251,
3528    0xceca0d5e02667fc8,
3529    0xd8a0d1321a3e7963,
3530    0xd5796516120984fa,
3531    0x9ab8c8ca6b3198fd,
3532    0x97617cee63066564,
3533    0x810ba0827b5e63cf,
3534    0x8cd214a673699e56,
3535    0xadde185a4bee6e99,
3536    0xa007ac7e43d99300,
3537    0xb66d70125b8195ab,
3538    0xbbb4c43653b66832,
3539    0x53dc575553e35b4a,
3540    0x5e05e3715bd4a6d3,
3541    0x486f3f1d438ca078,
3542    0x45b68b394bbb5de1,
3543    0x64ba87c5733cad2e,
3544    0x696333e17b0b50b7,
3545    0x7f09ef8d6353561c,
3546    0x72d05ba96b64ab85,
3547    0x3d11f675125cb782,
3548    0x30c842511a6b4a1b,
3549    0x26a29e3d02334cb0,
3550    0x2b7b2a190a04b129,
3551    0x0a7726e5328341e6,
3552    0x07ae92c13ab4bc7f,
3553    0x11c44ead22ecbad4,
3554    0x1c1dfa892adb474d,
3555    0x8e471515d09c82da,
3556    0x839ea131d8ab7f43,
3557    0x95f47d5dc0f379e8,
3558    0x982dc979c8c48471,
3559    0xb921c585f04374be,
3560    0xb4f871a1f8748927,
3561    0xa292adcde02c8f8c,
3562    0xaf4b19e9e81b7215,
3563    0xe08ab43591236e12,
3564    0xed5300119914938b,
3565    0xfb39dc7d814c9520,
3566    0xf6e06859897b68b9,
3567    0xd7ec64a5b1fc9876,
3568    0xda35d081b9cb65ef,
3569    0xcc5f0ceda1936344,
3570    0xc186b8c9a9a49edd,
3571    0x7a327cfffa12f6ef,
3572    0x77ebc8dbf2250b76,
3573    0x618114b7ea7d0ddd,
3574    0x6c58a093e24af044,
3575    0x4d54ac6fdacd008b,
3576    0x408d184bd2fafd12,
3577    0x56e7c427caa2fbb9,
3578    0x5b3e7003c2950620,
3579    0x14ffdddfbbad1a27,
3580    0x192669fbb39ae7be,
3581    0x0f4cb597abc2e115,
3582    0x029501b3a3f51c8c,
3583    0x23990d4f9b72ec43,
3584    0x2e40b96b934511da,
3585    0x382a65078b1d1771,
3586    0x35f3d123832aeae8,
3587    0xa7a93ebf796d2f7f,
3588    0xaa708a9b715ad2e6,
3589    0xbc1a56f76902d44d,
3590    0xb1c3e2d3613529d4,
3591    0x90cfee2f59b2d91b,
3592    0x9d165a0b51852482,
3593    0x8b7c866749dd2229,
3594    0x86a5324341eadfb0,
3595    0xc9649f9f38d2c3b7,
3596    0xc4bd2bbb30e53e2e,
3597    0xd2d7f7d728bd3885,
3598    0xdf0e43f3208ac51c,
3599    0xfe024f0f180d35d3,
3600    0xf3dbfb2b103ac84a,
3601    0xe5b127470862cee1,
3602    0xe868936300553378,
3603    0xa7b8aeaaa7c6b694,
3604    0xaa611a8eaff14b0d,
3605    0xbc0bc6e2b7a94da6,
3606    0xb1d272c6bf9eb03f,
3607    0x90de7e3a871940f0,
3608    0x9d07ca1e8f2ebd69,
3609    0x8b6d16729776bbc2,
3610    0x86b4a2569f41465b,
3611    0xc9750f8ae6795a5c,
3612    0xc4acbbaeee4ea7c5,
3613    0xd2c667c2f616a16e,
3614    0xdf1fd3e6fe215cf7,
3615    0xfe13df1ac6a6ac38,
3616    0xf3ca6b3ece9151a1,
3617    0xe5a0b752d6c9570a,
3618    0xe8790376defeaa93,
3619    0x7a23ecea24b96f04,
3620    0x77fa58ce2c8e929d,
3621    0x619084a234d69436,
3622    0x6c4930863ce169af,
3623    0x4d453c7a04669960,
3624    0x409c885e0c5164f9,
3625    0x56f6543214096252,
3626    0x5b2fe0161c3e9fcb,
3627    0x14ee4dca650683cc,
3628    0x1937f9ee6d317e55,
3629    0x0f5d2582756978fe,
3630    0x028491a67d5e8567,
3631    0x23889d5a45d975a8,
3632    0x2e51297e4dee8831,
3633    0x383bf51255b68e9a,
3634    0x35e241365d817303,
3635    0x8e5685000e371b31,
3636    0x838f31240600e6a8,
3637    0x95e5ed481e58e003,
3638    0x983c596c166f1d9a,
3639    0xb93055902ee8ed55,
3640    0xb4e9e1b426df10cc,
3641    0xa2833dd83e871667,
3642    0xaf5a89fc36b0ebfe,
3643    0xe09b24204f88f7f9,
3644    0xed42900447bf0a60,
3645    0xfb284c685fe70ccb,
3646    0xf6f1f84c57d0f152,
3647    0xd7fdf4b06f57019d,
3648    0xda2440946760fc04,
3649    0xcc4e9cf87f38faaf,
3650    0xc19728dc770f0736,
3651    0x53cdc7408d48c2a1,
3652    0x5e147364857f3f38,
3653    0x487eaf089d273993,
3654    0x45a71b2c9510c40a,
3655    0x64ab17d0ad9734c5,
3656    0x6972a3f4a5a0c95c,
3657    0x7f187f98bdf8cff7,
3658    0x72c1cbbcb5cf326e,
3659    0x3d006660ccf72e69,
3660    0x30d9d244c4c0d3f0,
3661    0x26b30e28dc98d55b,
3662    0x2b6aba0cd4af28c2,
3663    0x0a66b6f0ec28d80d,
3664    0x07bf02d4e41f2594,
3665    0x11d5deb8fc47233f,
3666    0x1c0c6a9cf470dea6,
3667    0xf464f9fff425edde,
3668    0xf9bd4ddbfc121047,
3669    0xefd791b7e44a16ec,
3670    0xe20e2593ec7deb75,
3671    0xc302296fd4fa1bba,
3672    0xcedb9d4bdccde623,
3673    0xd8b14127c495e088,
3674    0xd568f503cca21d11,
3675    0x9aa958dfb59a0116,
3676    0x9770ecfbbdadfc8f,
3677    0x811a3097a5f5fa24,
3678    0x8cc384b3adc207bd,
3679    0xadcf884f9545f772,
3680    0xa0163c6b9d720aeb,
3681    0xb67ce007852a0c40,
3682    0xbba554238d1df1d9,
3683    0x29ffbbbf775a344e,
3684    0x24260f9b7f6dc9d7,
3685    0x324cd3f76735cf7c,
3686    0x3f9567d36f0232e5,
3687    0x1e996b2f5785c22a,
3688    0x1340df0b5fb23fb3,
3689    0x052a036747ea3918,
3690    0x08f3b7434fddc481,
3691    0x47321a9f36e5d886,
3692    0x4aebaebb3ed2251f,
3693    0x5c8172d7268a23b4,
3694    0x5158c6f32ebdde2d,
3695    0x7054ca0f163a2ee2,
3696    0x7d8d7e2b1e0dd37b,
3697    0x6be7a2470655d5d0,
3698    0x663e16630e622849,
3699    0xdd8ad2555dd4407b,
3700    0xd053667155e3bde2,
3701    0xc639ba1d4dbbbb49,
3702    0xcbe00e39458c46d0,
3703    0xeaec02c57d0bb61f,
3704    0xe735b6e1753c4b86,
3705    0xf15f6a8d6d644d2d,
3706    0xfc86dea96553b0b4,
3707    0xb34773751c6bacb3,
3708    0xbe9ec751145c512a,
3709    0xa8f41b3d0c045781,
3710    0xa52daf190433aa18,
3711    0x8421a3e53cb45ad7,
3712    0x89f817c13483a74e,
3713    0x9f92cbad2cdba1e5,
3714    0x924b7f8924ec5c7c,
3715    0x00119015deab99eb,
3716    0x0dc82431d69c6472,
3717    0x1ba2f85dcec462d9,
3718    0x167b4c79c6f39f40,
3719    0x37774085fe746f8f,
3720    0x3aaef4a1f6439216,
3721    0x2cc428cdee1b94bd,
3722    0x211d9ce9e62c6924,
3723    0x6edc31359f147523,
3724    0x63058511972388ba,
3725    0x756f597d8f7b8e11,
3726    0x78b6ed59874c7388,
3727    0x59bae1a5bfcb8347,
3728    0x54635581b7fc7ede,
3729    0x420989edafa47875,
3730    0x4fd03dc9a79385ec,
3731];
3732
3733// CRC table for the ECMA polynomial in the range (`1 = x¹⁸³, …, 128 = x¹⁷⁶`).
3734// Generated by running `./build_table 14`.
3735static TABLE_14: [u64; 256] = [
3736    0x0000000000000000,
3737    0xf075e4ae5e05bdff,
3738    0x723366771305657b,
3739    0x824682d94d00d884,
3740    0xe466ccee260acaf6,
3741    0x14132840780f7709,
3742    0x9655aa99350faf8d,
3743    0x66204e376b0a1272,
3744    0x5a1536f7e31b8b69,
3745    0xaa60d259bd1e3696,
3746    0x28265080f01eee12,
3747    0xd853b42eae1b53ed,
3748    0xbe73fa19c511419f,
3749    0x4e061eb79b14fc60,
3750    0xcc409c6ed61424e4,
3751    0x3c3578c08811991b,
3752    0xb42a6defc63716d2,
3753    0x445f89419832ab2d,
3754    0xc6190b98d53273a9,
3755    0x366cef368b37ce56,
3756    0x504ca101e03ddc24,
3757    0xa03945afbe3861db,
3758    0x227fc776f338b95f,
3759    0xd20a23d8ad3d04a0,
3760    0xee3f5b18252c9dbb,
3761    0x1e4abfb67b292044,
3762    0x9c0c3d6f3629f8c0,
3763    0x6c79d9c1682c453f,
3764    0x0a5997f60326574d,
3765    0xfa2c73585d23eab2,
3766    0x786af18110233236,
3767    0x881f152f4e268fc9,
3768    0xfa8c74f423603321,
3769    0x0af9905a7d658ede,
3770    0x88bf12833065565a,
3771    0x78caf62d6e60eba5,
3772    0x1eeab81a056af9d7,
3773    0xee9f5cb45b6f4428,
3774    0x6cd9de6d166f9cac,
3775    0x9cac3ac3486a2153,
3776    0xa0994203c07bb848,
3777    0x50eca6ad9e7e05b7,
3778    0xd2aa2474d37edd33,
3779    0x22dfc0da8d7b60cc,
3780    0x44ff8eede67172be,
3781    0xb48a6a43b874cf41,
3782    0x36cce89af57417c5,
3783    0xc6b90c34ab71aa3a,
3784    0x4ea6191be55725f3,
3785    0xbed3fdb5bb52980c,
3786    0x3c957f6cf6524088,
3787    0xcce09bc2a857fd77,
3788    0xaac0d5f5c35def05,
3789    0x5ab5315b9d5852fa,
3790    0xd8f3b382d0588a7e,
3791    0x2886572c8e5d3781,
3792    0x14b32fec064cae9a,
3793    0xe4c6cb4258491365,
3794    0x6680499b1549cbe1,
3795    0x96f5ad354b4c761e,
3796    0xf0d5e3022046646c,
3797    0x00a007ac7e43d993,
3798    0x82e6857533430117,
3799    0x729361db6d46bce8,
3800    0x67c046c3e9ce78c7,
3801    0x97b5a26db7cbc538,
3802    0x15f320b4facb1dbc,
3803    0xe586c41aa4cea043,
3804    0x83a68a2dcfc4b231,
3805    0x73d36e8391c10fce,
3806    0xf195ec5adcc1d74a,
3807    0x01e008f482c46ab5,
3808    0x3dd570340ad5f3ae,
3809    0xcda0949a54d04e51,
3810    0x4fe6164319d096d5,
3811    0xbf93f2ed47d52b2a,
3812    0xd9b3bcda2cdf3958,
3813    0x29c6587472da84a7,
3814    0xab80daad3fda5c23,
3815    0x5bf53e0361dfe1dc,
3816    0xd3ea2b2c2ff96e15,
3817    0x239fcf8271fcd3ea,
3818    0xa1d94d5b3cfc0b6e,
3819    0x51aca9f562f9b691,
3820    0x378ce7c209f3a4e3,
3821    0xc7f9036c57f6191c,
3822    0x45bf81b51af6c198,
3823    0xb5ca651b44f37c67,
3824    0x89ff1ddbcce2e57c,
3825    0x798af97592e75883,
3826    0xfbcc7bacdfe78007,
3827    0x0bb99f0281e23df8,
3828    0x6d99d135eae82f8a,
3829    0x9dec359bb4ed9275,
3830    0x1faab742f9ed4af1,
3831    0xefdf53eca7e8f70e,
3832    0x9d4c3237caae4be6,
3833    0x6d39d69994abf619,
3834    0xef7f5440d9ab2e9d,
3835    0x1f0ab0ee87ae9362,
3836    0x792afed9eca48110,
3837    0x895f1a77b2a13cef,
3838    0x0b1998aeffa1e46b,
3839    0xfb6c7c00a1a45994,
3840    0xc75904c029b5c08f,
3841    0x372ce06e77b07d70,
3842    0xb56a62b73ab0a5f4,
3843    0x451f861964b5180b,
3844    0x233fc82e0fbf0a79,
3845    0xd34a2c8051bab786,
3846    0x510cae591cba6f02,
3847    0xa1794af742bfd2fd,
3848    0x29665fd80c995d34,
3849    0xd913bb76529ce0cb,
3850    0x5b5539af1f9c384f,
3851    0xab20dd01419985b0,
3852    0xcd0093362a9397c2,
3853    0x3d75779874962a3d,
3854    0xbf33f5413996f2b9,
3855    0x4f4611ef67934f46,
3856    0x7373692fef82d65d,
3857    0x83068d81b1876ba2,
3858    0x01400f58fc87b326,
3859    0xf135ebf6a2820ed9,
3860    0x9715a5c1c9881cab,
3861    0x6760416f978da154,
3862    0xe526c3b6da8d79d0,
3863    0x155327188488c42f,
3864    0xcf808d87d39cf18e,
3865    0x3ff569298d994c71,
3866    0xbdb3ebf0c09994f5,
3867    0x4dc60f5e9e9c290a,
3868    0x2be64169f5963b78,
3869    0xdb93a5c7ab938687,
3870    0x59d5271ee6935e03,
3871    0xa9a0c3b0b896e3fc,
3872    0x9595bb7030877ae7,
3873    0x65e05fde6e82c718,
3874    0xe7a6dd0723821f9c,
3875    0x17d339a97d87a263,
3876    0x71f3779e168db011,
3877    0x8186933048880dee,
3878    0x03c011e90588d56a,
3879    0xf3b5f5475b8d6895,
3880    0x7baae06815abe75c,
3881    0x8bdf04c64bae5aa3,
3882    0x0999861f06ae8227,
3883    0xf9ec62b158ab3fd8,
3884    0x9fcc2c8633a12daa,
3885    0x6fb9c8286da49055,
3886    0xedff4af120a448d1,
3887    0x1d8aae5f7ea1f52e,
3888    0x21bfd69ff6b06c35,
3889    0xd1ca3231a8b5d1ca,
3890    0x538cb0e8e5b5094e,
3891    0xa3f95446bbb0b4b1,
3892    0xc5d91a71d0baa6c3,
3893    0x35acfedf8ebf1b3c,
3894    0xb7ea7c06c3bfc3b8,
3895    0x479f98a89dba7e47,
3896    0x350cf973f0fcc2af,
3897    0xc5791dddaef97f50,
3898    0x473f9f04e3f9a7d4,
3899    0xb74a7baabdfc1a2b,
3900    0xd16a359dd6f60859,
3901    0x211fd13388f3b5a6,
3902    0xa35953eac5f36d22,
3903    0x532cb7449bf6d0dd,
3904    0x6f19cf8413e749c6,
3905    0x9f6c2b2a4de2f439,
3906    0x1d2aa9f300e22cbd,
3907    0xed5f4d5d5ee79142,
3908    0x8b7f036a35ed8330,
3909    0x7b0ae7c46be83ecf,
3910    0xf94c651d26e8e64b,
3911    0x093981b378ed5bb4,
3912    0x8126949c36cbd47d,
3913    0x7153703268ce6982,
3914    0xf315f2eb25ceb106,
3915    0x036016457bcb0cf9,
3916    0x6540587210c11e8b,
3917    0x9535bcdc4ec4a374,
3918    0x17733e0503c47bf0,
3919    0xe706daab5dc1c60f,
3920    0xdb33a26bd5d05f14,
3921    0x2b4646c58bd5e2eb,
3922    0xa900c41cc6d53a6f,
3923    0x597520b298d08790,
3924    0x3f556e85f3da95e2,
3925    0xcf208a2baddf281d,
3926    0x4d6608f2e0dff099,
3927    0xbd13ec5cbeda4d66,
3928    0xa840cb443a528949,
3929    0x58352fea645734b6,
3930    0xda73ad332957ec32,
3931    0x2a06499d775251cd,
3932    0x4c2607aa1c5843bf,
3933    0xbc53e304425dfe40,
3934    0x3e1561dd0f5d26c4,
3935    0xce60857351589b3b,
3936    0xf255fdb3d9490220,
3937    0x0220191d874cbfdf,
3938    0x80669bc4ca4c675b,
3939    0x70137f6a9449daa4,
3940    0x1633315dff43c8d6,
3941    0xe646d5f3a1467529,
3942    0x6400572aec46adad,
3943    0x9475b384b2431052,
3944    0x1c6aa6abfc659f9b,
3945    0xec1f4205a2602264,
3946    0x6e59c0dcef60fae0,
3947    0x9e2c2472b165471f,
3948    0xf80c6a45da6f556d,
3949    0x08798eeb846ae892,
3950    0x8a3f0c32c96a3016,
3951    0x7a4ae89c976f8de9,
3952    0x467f905c1f7e14f2,
3953    0xb60a74f2417ba90d,
3954    0x344cf62b0c7b7189,
3955    0xc4391285527ecc76,
3956    0xa2195cb23974de04,
3957    0x526cb81c677163fb,
3958    0xd02a3ac52a71bb7f,
3959    0x205fde6b74740680,
3960    0x52ccbfb01932ba68,
3961    0xa2b95b1e47370797,
3962    0x20ffd9c70a37df13,
3963    0xd08a3d69543262ec,
3964    0xb6aa735e3f38709e,
3965    0x46df97f0613dcd61,
3966    0xc49915292c3d15e5,
3967    0x34ecf1877238a81a,
3968    0x08d98947fa293101,
3969    0xf8ac6de9a42c8cfe,
3970    0x7aeaef30e92c547a,
3971    0x8a9f0b9eb729e985,
3972    0xecbf45a9dc23fbf7,
3973    0x1ccaa10782264608,
3974    0x9e8c23decf269e8c,
3975    0x6ef9c77091232373,
3976    0xe6e6d25fdf05acba,
3977    0x169336f181001145,
3978    0x94d5b428cc00c9c1,
3979    0x64a050869205743e,
3980    0x02801eb1f90f664c,
3981    0xf2f5fa1fa70adbb3,
3982    0x70b378c6ea0a0337,
3983    0x80c69c68b40fbec8,
3984    0xbcf3e4a83c1e27d3,
3985    0x4c860006621b9a2c,
3986    0xcec082df2f1b42a8,
3987    0x3eb56671711eff57,
3988    0x589528461a14ed25,
3989    0xa8e0cce8441150da,
3990    0x2aa64e310911885e,
3991    0xdad3aa9f571435a1,
3992];
3993
3994// CRC table for the ECMA polynomial in the range (`1 = x¹⁹¹, …, 128 = x¹⁸⁴`).
3995// Generated by running `./build_table 15`.
3996static TABLE_15: [u64; 256] = [
3997    0x0000000000000000,
3998    0xe05dd497ca393ae4,
3999    0x526306043b7c6b4d,
4000    0xb23ed293f14551a9,
4001    0xa4c60c0876f8d69a,
4002    0x449bd89fbcc1ec7e,
4003    0xf6a50a0c4d84bdd7,
4004    0x16f8de9b87bd8733,
4005    0xdb54b73b42ffb3b1,
4006    0x3b0963ac88c68955,
4007    0x8937b13f7983d8fc,
4008    0x696a65a8b3bae218,
4009    0x7f92bb333407652b,
4010    0x9fcf6fa4fe3e5fcf,
4011    0x2df1bd370f7b0e66,
4012    0xcdac69a0c5423482,
4013    0x2471c15d2af179e7,
4014    0xc42c15cae0c84303,
4015    0x7612c759118d12aa,
4016    0x964f13cedbb4284e,
4017    0x80b7cd555c09af7d,
4018    0x60ea19c296309599,
4019    0xd2d4cb516775c430,
4020    0x32891fc6ad4cfed4,
4021    0xff257666680eca56,
4022    0x1f78a2f1a237f0b2,
4023    0xad4670625372a11b,
4024    0x4d1ba4f5994b9bff,
4025    0x5be37a6e1ef61ccc,
4026    0xbbbeaef9d4cf2628,
4027    0x09807c6a258a7781,
4028    0xe9dda8fdefb34d65,
4029    0x48e382ba55e2f3ce,
4030    0xa8be562d9fdbc92a,
4031    0x1a8084be6e9e9883,
4032    0xfadd5029a4a7a267,
4033    0xec258eb2231a2554,
4034    0x0c785a25e9231fb0,
4035    0xbe4688b618664e19,
4036    0x5e1b5c21d25f74fd,
4037    0x93b73581171d407f,
4038    0x73eae116dd247a9b,
4039    0xc1d433852c612b32,
4040    0x2189e712e65811d6,
4041    0x3771398961e596e5,
4042    0xd72ced1eabdcac01,
4043    0x65123f8d5a99fda8,
4044    0x854feb1a90a0c74c,
4045    0x6c9243e77f138a29,
4046    0x8ccf9770b52ab0cd,
4047    0x3ef145e3446fe164,
4048    0xdeac91748e56db80,
4049    0xc8544fef09eb5cb3,
4050    0x28099b78c3d26657,
4051    0x9a3749eb329737fe,
4052    0x7a6a9d7cf8ae0d1a,
4053    0xb7c6f4dc3dec3998,
4054    0x579b204bf7d5037c,
4055    0xe5a5f2d8069052d5,
4056    0x05f8264fcca96831,
4057    0x1300f8d44b14ef02,
4058    0xf35d2c43812dd5e6,
4059    0x4163fed07068844f,
4060    0xa13e2a47ba51beab,
4061    0x91c70574abc5e79c,
4062    0x719ad1e361fcdd78,
4063    0xc3a4037090b98cd1,
4064    0x23f9d7e75a80b635,
4065    0x3501097cdd3d3106,
4066    0xd55cddeb17040be2,
4067    0x67620f78e6415a4b,
4068    0x873fdbef2c7860af,
4069    0x4a93b24fe93a542d,
4070    0xaace66d823036ec9,
4071    0x18f0b44bd2463f60,
4072    0xf8ad60dc187f0584,
4073    0xee55be479fc282b7,
4074    0x0e086ad055fbb853,
4075    0xbc36b843a4bee9fa,
4076    0x5c6b6cd46e87d31e,
4077    0xb5b6c42981349e7b,
4078    0x55eb10be4b0da49f,
4079    0xe7d5c22dba48f536,
4080    0x078816ba7071cfd2,
4081    0x1170c821f7cc48e1,
4082    0xf12d1cb63df57205,
4083    0x4313ce25ccb023ac,
4084    0xa34e1ab206891948,
4085    0x6ee27312c3cb2dca,
4086    0x8ebfa78509f2172e,
4087    0x3c817516f8b74687,
4088    0xdcdca181328e7c63,
4089    0xca247f1ab533fb50,
4090    0x2a79ab8d7f0ac1b4,
4091    0x9847791e8e4f901d,
4092    0x781aad894476aaf9,
4093    0xd92487cefe271452,
4094    0x39795359341e2eb6,
4095    0x8b4781cac55b7f1f,
4096    0x6b1a555d0f6245fb,
4097    0x7de28bc688dfc2c8,
4098    0x9dbf5f5142e6f82c,
4099    0x2f818dc2b3a3a985,
4100    0xcfdc5955799a9361,
4101    0x027030f5bcd8a7e3,
4102    0xe22de46276e19d07,
4103    0x501336f187a4ccae,
4104    0xb04ee2664d9df64a,
4105    0xa6b63cfdca207179,
4106    0x46ebe86a00194b9d,
4107    0xf4d53af9f15c1a34,
4108    0x1488ee6e3b6520d0,
4109    0xfd554693d4d66db5,
4110    0x1d0892041eef5751,
4111    0xaf364097efaa06f8,
4112    0x4f6b940025933c1c,
4113    0x59934a9ba22ebb2f,
4114    0xb9ce9e0c681781cb,
4115    0x0bf04c9f9952d062,
4116    0xebad9808536bea86,
4117    0x2601f1a89629de04,
4118    0xc65c253f5c10e4e0,
4119    0x7462f7acad55b549,
4120    0x943f233b676c8fad,
4121    0x82c7fda0e0d1089e,
4122    0x629a29372ae8327a,
4123    0xd0a4fba4dbad63d3,
4124    0x30f92f3311945937,
4125    0xb156a5c2f885d1bd,
4126    0x510b715532bceb59,
4127    0xe335a3c6c3f9baf0,
4128    0x0368775109c08014,
4129    0x1590a9ca8e7d0727,
4130    0xf5cd7d5d44443dc3,
4131    0x47f3afceb5016c6a,
4132    0xa7ae7b597f38568e,
4133    0x6a0212f9ba7a620c,
4134    0x8a5fc66e704358e8,
4135    0x386114fd81060941,
4136    0xd83cc06a4b3f33a5,
4137    0xcec41ef1cc82b496,
4138    0x2e99ca6606bb8e72,
4139    0x9ca718f5f7fedfdb,
4140    0x7cfacc623dc7e53f,
4141    0x9527649fd274a85a,
4142    0x757ab008184d92be,
4143    0xc744629be908c317,
4144    0x2719b60c2331f9f3,
4145    0x31e16897a48c7ec0,
4146    0xd1bcbc006eb54424,
4147    0x63826e939ff0158d,
4148    0x83dfba0455c92f69,
4149    0x4e73d3a4908b1beb,
4150    0xae2e07335ab2210f,
4151    0x1c10d5a0abf770a6,
4152    0xfc4d013761ce4a42,
4153    0xeab5dface673cd71,
4154    0x0ae80b3b2c4af795,
4155    0xb8d6d9a8dd0fa63c,
4156    0x588b0d3f17369cd8,
4157    0xf9b52778ad672273,
4158    0x19e8f3ef675e1897,
4159    0xabd6217c961b493e,
4160    0x4b8bf5eb5c2273da,
4161    0x5d732b70db9ff4e9,
4162    0xbd2effe711a6ce0d,
4163    0x0f102d74e0e39fa4,
4164    0xef4df9e32adaa540,
4165    0x22e19043ef9891c2,
4166    0xc2bc44d425a1ab26,
4167    0x70829647d4e4fa8f,
4168    0x90df42d01eddc06b,
4169    0x86279c4b99604758,
4170    0x667a48dc53597dbc,
4171    0xd4449a4fa21c2c15,
4172    0x34194ed8682516f1,
4173    0xddc4e62587965b94,
4174    0x3d9932b24daf6170,
4175    0x8fa7e021bcea30d9,
4176    0x6ffa34b676d30a3d,
4177    0x7902ea2df16e8d0e,
4178    0x995f3eba3b57b7ea,
4179    0x2b61ec29ca12e643,
4180    0xcb3c38be002bdca7,
4181    0x0690511ec569e825,
4182    0xe6cd85890f50d2c1,
4183    0x54f3571afe158368,
4184    0xb4ae838d342cb98c,
4185    0xa2565d16b3913ebf,
4186    0x420b898179a8045b,
4187    0xf0355b1288ed55f2,
4188    0x10688f8542d46f16,
4189    0x2091a0b653403621,
4190    0xc0cc742199790cc5,
4191    0x72f2a6b2683c5d6c,
4192    0x92af7225a2056788,
4193    0x8457acbe25b8e0bb,
4194    0x640a7829ef81da5f,
4195    0xd634aaba1ec48bf6,
4196    0x36697e2dd4fdb112,
4197    0xfbc5178d11bf8590,
4198    0x1b98c31adb86bf74,
4199    0xa9a611892ac3eedd,
4200    0x49fbc51ee0fad439,
4201    0x5f031b856747530a,
4202    0xbf5ecf12ad7e69ee,
4203    0x0d601d815c3b3847,
4204    0xed3dc916960202a3,
4205    0x04e061eb79b14fc6,
4206    0xe4bdb57cb3887522,
4207    0x568367ef42cd248b,
4208    0xb6deb37888f41e6f,
4209    0xa0266de30f49995c,
4210    0x407bb974c570a3b8,
4211    0xf2456be73435f211,
4212    0x1218bf70fe0cc8f5,
4213    0xdfb4d6d03b4efc77,
4214    0x3fe90247f177c693,
4215    0x8dd7d0d40032973a,
4216    0x6d8a0443ca0badde,
4217    0x7b72dad84db62aed,
4218    0x9b2f0e4f878f1009,
4219    0x2911dcdc76ca41a0,
4220    0xc94c084bbcf37b44,
4221    0x6872220c06a2c5ef,
4222    0x882ff69bcc9bff0b,
4223    0x3a1124083ddeaea2,
4224    0xda4cf09ff7e79446,
4225    0xccb42e04705a1375,
4226    0x2ce9fa93ba632991,
4227    0x9ed728004b267838,
4228    0x7e8afc97811f42dc,
4229    0xb3269537445d765e,
4230    0x537b41a08e644cba,
4231    0xe14593337f211d13,
4232    0x011847a4b51827f7,
4233    0x17e0993f32a5a0c4,
4234    0xf7bd4da8f89c9a20,
4235    0x45839f3b09d9cb89,
4236    0xa5de4bacc3e0f16d,
4237    0x4c03e3512c53bc08,
4238    0xac5e37c6e66a86ec,
4239    0x1e60e555172fd745,
4240    0xfe3d31c2dd16eda1,
4241    0xe8c5ef595aab6a92,
4242    0x08983bce90925076,
4243    0xbaa6e95d61d701df,
4244    0x5afb3dcaabee3b3b,
4245    0x9757546a6eac0fb9,
4246    0x770a80fda495355d,
4247    0xc534526e55d064f4,
4248    0x256986f99fe95e10,
4249    0x339158621854d923,
4250    0xd3cc8cf5d26de3c7,
4251    0x61f25e662328b26e,
4252    0x81af8af1e911888a,
4253];