use std::mem;
pub static CRC64_TAB : &'static [&'static [u64; 256]; 8] = &[
&[ 0x0000000000000000, 0x7ad870c830358979,
0xf5b0e190606b12f2, 0x8f689158505e9b8b,
0xc038e5739841b68f, 0xbae095bba8743ff6,
0x358804e3f82aa47d, 0x4f50742bc81f2d04,
0xab28ecb46814fe75, 0xd1f09c7c5821770c,
0x5e980d24087fec87, 0x24407dec384a65fe,
0x6b1009c7f05548fa, 0x11c8790fc060c183,
0x9ea0e857903e5a08, 0xe478989fa00bd371,
0x7d08ff3b88be6f81, 0x07d08ff3b88be6f8,
0x88b81eabe8d57d73, 0xf2606e63d8e0f40a,
0xbd301a4810ffd90e, 0xc7e86a8020ca5077,
0x4880fbd87094cbfc, 0x32588b1040a14285,
0xd620138fe0aa91f4, 0xacf86347d09f188d,
0x2390f21f80c18306, 0x594882d7b0f40a7f,
0x1618f6fc78eb277b, 0x6cc0863448deae02,
0xe3a8176c18803589, 0x997067a428b5bcf0,
0xfa11fe77117cdf02, 0x80c98ebf2149567b,
0x0fa11fe77117cdf0, 0x75796f2f41224489,
0x3a291b04893d698d, 0x40f16bccb908e0f4,
0xcf99fa94e9567b7f, 0xb5418a5cd963f206,
0x513912c379682177, 0x2be1620b495da80e,
0xa489f35319033385, 0xde51839b2936bafc,
0x9101f7b0e12997f8, 0xebd98778d11c1e81,
0x64b116208142850a, 0x1e6966e8b1770c73,
0x8719014c99c2b083, 0xfdc17184a9f739fa,
0x72a9e0dcf9a9a271, 0x08719014c99c2b08,
0x4721e43f0183060c, 0x3df994f731b68f75,
0xb29105af61e814fe, 0xc849756751dd9d87,
0x2c31edf8f1d64ef6, 0x56e99d30c1e3c78f,
0xd9810c6891bd5c04, 0xa3597ca0a188d57d,
0xec09088b6997f879, 0x96d1784359a27100,
0x19b9e91b09fcea8b, 0x636199d339c963f2,
0xdf7adabd7a6e2d6f, 0xa5a2aa754a5ba416,
0x2aca3b2d1a053f9d, 0x50124be52a30b6e4,
0x1f423fcee22f9be0, 0x659a4f06d21a1299,
0xeaf2de5e82448912, 0x902aae96b271006b,
0x74523609127ad31a, 0x0e8a46c1224f5a63,
0x81e2d7997211c1e8, 0xfb3aa75142244891,
0xb46ad37a8a3b6595, 0xceb2a3b2ba0eecec,
0x41da32eaea507767, 0x3b024222da65fe1e,
0xa2722586f2d042ee, 0xd8aa554ec2e5cb97,
0x57c2c41692bb501c, 0x2d1ab4dea28ed965,
0x624ac0f56a91f461, 0x1892b03d5aa47d18,
0x97fa21650afae693, 0xed2251ad3acf6fea,
0x095ac9329ac4bc9b, 0x7382b9faaaf135e2,
0xfcea28a2faafae69, 0x8632586aca9a2710,
0xc9622c4102850a14, 0xb3ba5c8932b0836d,
0x3cd2cdd162ee18e6, 0x460abd1952db919f,
0x256b24ca6b12f26d, 0x5fb354025b277b14,
0xd0dbc55a0b79e09f, 0xaa03b5923b4c69e6,
0xe553c1b9f35344e2, 0x9f8bb171c366cd9b,
0x10e3202993385610, 0x6a3b50e1a30ddf69,
0x8e43c87e03060c18, 0xf49bb8b633338561,
0x7bf329ee636d1eea, 0x012b592653589793,
0x4e7b2d0d9b47ba97, 0x34a35dc5ab7233ee,
0xbbcbcc9dfb2ca865, 0xc113bc55cb19211c,
0x5863dbf1e3ac9dec, 0x22bbab39d3991495,
0xadd33a6183c78f1e, 0xd70b4aa9b3f20667,
0x985b3e827bed2b63, 0xe2834e4a4bd8a21a,
0x6debdf121b863991, 0x1733afda2bb3b0e8,
0xf34b37458bb86399, 0x8993478dbb8deae0,
0x06fbd6d5ebd3716b, 0x7c23a61ddbe6f812,
0x3373d23613f9d516, 0x49aba2fe23cc5c6f,
0xc6c333a67392c7e4, 0xbc1b436e43a74e9d,
0x95ac9329ac4bc9b5, 0xef74e3e19c7e40cc,
0x601c72b9cc20db47, 0x1ac40271fc15523e,
0x5594765a340a7f3a, 0x2f4c0692043ff643,
0xa02497ca54616dc8, 0xdafce7026454e4b1,
0x3e847f9dc45f37c0, 0x445c0f55f46abeb9,
0xcb349e0da4342532, 0xb1eceec59401ac4b,
0xfebc9aee5c1e814f, 0x8464ea266c2b0836,
0x0b0c7b7e3c7593bd, 0x71d40bb60c401ac4,
0xe8a46c1224f5a634, 0x927c1cda14c02f4d,
0x1d148d82449eb4c6, 0x67ccfd4a74ab3dbf,
0x289c8961bcb410bb, 0x5244f9a98c8199c2,
0xdd2c68f1dcdf0249, 0xa7f41839ecea8b30,
0x438c80a64ce15841, 0x3954f06e7cd4d138,
0xb63c61362c8a4ab3, 0xcce411fe1cbfc3ca,
0x83b465d5d4a0eece, 0xf96c151de49567b7,
0x76048445b4cbfc3c, 0x0cdcf48d84fe7545,
0x6fbd6d5ebd3716b7, 0x15651d968d029fce,
0x9a0d8ccedd5c0445, 0xe0d5fc06ed698d3c,
0xaf85882d2576a038, 0xd55df8e515432941,
0x5a3569bd451db2ca, 0x20ed197575283bb3,
0xc49581ead523e8c2, 0xbe4df122e51661bb,
0x3125607ab548fa30, 0x4bfd10b2857d7349,
0x04ad64994d625e4d, 0x7e7514517d57d734,
0xf11d85092d094cbf, 0x8bc5f5c11d3cc5c6,
0x12b5926535897936, 0x686de2ad05bcf04f,
0xe70573f555e26bc4, 0x9ddd033d65d7e2bd,
0xd28d7716adc8cfb9, 0xa85507de9dfd46c0,
0x273d9686cda3dd4b, 0x5de5e64efd965432,
0xb99d7ed15d9d8743, 0xc3450e196da80e3a,
0x4c2d9f413df695b1, 0x36f5ef890dc31cc8,
0x79a59ba2c5dc31cc, 0x037deb6af5e9b8b5,
0x8c157a32a5b7233e, 0xf6cd0afa9582aa47,
0x4ad64994d625e4da, 0x300e395ce6106da3,
0xbf66a804b64ef628, 0xc5bed8cc867b7f51,
0x8aeeace74e645255, 0xf036dc2f7e51db2c,
0x7f5e4d772e0f40a7, 0x05863dbf1e3ac9de,
0xe1fea520be311aaf, 0x9b26d5e88e0493d6,
0x144e44b0de5a085d, 0x6e963478ee6f8124,
0x21c640532670ac20, 0x5b1e309b16452559,
0xd476a1c3461bbed2, 0xaeaed10b762e37ab,
0x37deb6af5e9b8b5b, 0x4d06c6676eae0222,
0xc26e573f3ef099a9, 0xb8b627f70ec510d0,
0xf7e653dcc6da3dd4, 0x8d3e2314f6efb4ad,
0x0256b24ca6b12f26, 0x788ec2849684a65f,
0x9cf65a1b368f752e, 0xe62e2ad306bafc57,
0x6946bb8b56e467dc, 0x139ecb4366d1eea5,
0x5ccebf68aecec3a1, 0x2616cfa09efb4ad8,
0xa97e5ef8cea5d153, 0xd3a62e30fe90582a,
0xb0c7b7e3c7593bd8, 0xca1fc72bf76cb2a1,
0x45775673a732292a, 0x3faf26bb9707a053,
0x70ff52905f188d57, 0x0a2722586f2d042e,
0x854fb3003f739fa5, 0xff97c3c80f4616dc,
0x1bef5b57af4dc5ad, 0x61372b9f9f784cd4,
0xee5fbac7cf26d75f, 0x9487ca0fff135e26,
0xdbd7be24370c7322, 0xa10fceec0739fa5b,
0x2e675fb4576761d0, 0x54bf2f7c6752e8a9,
0xcdcf48d84fe75459, 0xb71738107fd2dd20,
0x387fa9482f8c46ab, 0x42a7d9801fb9cfd2,
0x0df7adabd7a6e2d6, 0x772fdd63e7936baf,
0xf8474c3bb7cdf024, 0x829f3cf387f8795d,
0x66e7a46c27f3aa2c, 0x1c3fd4a417c62355,
0x935745fc4798b8de, 0xe98f353477ad31a7,
0xa6df411fbfb21ca3, 0xdc0731d78f8795da,
0x536fa08fdfd90e51, 0x29b7d047efec8728 ],
&[ 0x0000000000000000, 0x89e99ffd73bddf69,
0x388a19a9bfec2db9, 0xb1638654cc51f2d0,
0x711433537fd85b72, 0xf8fdacae0c65841b,
0x499e2afac03476cb, 0xc077b507b389a9a2,
0xe22866a6ffb0b6e4, 0x6bc1f95b8c0d698d,
0xdaa27f0f405c9b5d, 0x534be0f233e14434,
0x933c55f58068ed96, 0x1ad5ca08f3d532ff,
0xabb64c5c3f84c02f, 0x225fd3a14c391f46,
0xef09eb1ea7f6fea3, 0x66e074e3d44b21ca,
0xd783f2b7181ad31a, 0x5e6a6d4a6ba70c73,
0x9e1dd84dd82ea5d1, 0x17f447b0ab937ab8,
0xa697c1e467c28868, 0x2f7e5e19147f5701,
0x0d218db858464847, 0x84c812452bfb972e,
0x35ab9411e7aa65fe, 0xbc420bec9417ba97,
0x7c35beeb279e1335, 0xf5dc21165423cc5c,
0x44bfa74298723e8c, 0xcd5638bfebcfe1e5,
0xf54af06e177a6e2d, 0x7ca36f9364c7b144,
0xcdc0e9c7a8964394, 0x4429763adb2b9cfd,
0x845ec33d68a2355f, 0x0db75cc01b1fea36,
0xbcd4da94d74e18e6, 0x353d4569a4f3c78f,
0x176296c8e8cad8c9, 0x9e8b09359b7707a0,
0x2fe88f615726f570, 0xa601109c249b2a19,
0x6676a59b971283bb, 0xef9f3a66e4af5cd2,
0x5efcbc3228feae02, 0xd71523cf5b43716b,
0x1a431b70b08c908e, 0x93aa848dc3314fe7,
0x22c902d90f60bd37, 0xab209d247cdd625e,
0x6b572823cf54cbfc, 0xe2beb7debce91495,
0x53dd318a70b8e645, 0xda34ae770305392c,
0xf86b7dd64f3c266a, 0x7182e22b3c81f903,
0xc0e1647ff0d00bd3, 0x4908fb82836dd4ba,
0x897f4e8530e47d18, 0x0096d1784359a271,
0xb1f5572c8f0850a1, 0x381cc8d1fcb58fc8,
0xc1ccc68f76634f31, 0x4825597205de9058,
0xf946df26c98f6288, 0x70af40dbba32bde1,
0xb0d8f5dc09bb1443, 0x39316a217a06cb2a,
0x8852ec75b65739fa, 0x01bb7388c5eae693,
0x23e4a02989d3f9d5, 0xaa0d3fd4fa6e26bc,
0x1b6eb980363fd46c, 0x9287267d45820b05,
0x52f0937af60ba2a7, 0xdb190c8785b67dce,
0x6a7a8ad349e78f1e, 0xe393152e3a5a5077,
0x2ec52d91d195b192, 0xa72cb26ca2286efb,
0x164f34386e799c2b, 0x9fa6abc51dc44342,
0x5fd11ec2ae4deae0, 0xd638813fddf03589,
0x675b076b11a1c759, 0xeeb29896621c1830,
0xcced4b372e250776, 0x4504d4ca5d98d81f,
0xf467529e91c92acf, 0x7d8ecd63e274f5a6,
0xbdf9786451fd5c04, 0x3410e7992240836d,
0x857361cdee1171bd, 0x0c9afe309dacaed4,
0x348636e16119211c, 0xbd6fa91c12a4fe75,
0x0c0c2f48def50ca5, 0x85e5b0b5ad48d3cc,
0x459205b21ec17a6e, 0xcc7b9a4f6d7ca507,
0x7d181c1ba12d57d7, 0xf4f183e6d29088be,
0xd6ae50479ea997f8, 0x5f47cfbaed144891,
0xee2449ee2145ba41, 0x67cdd61352f86528,
0xa7ba6314e171cc8a, 0x2e53fce992cc13e3,
0x9f307abd5e9de133, 0x16d9e5402d203e5a,
0xdb8fddffc6efdfbf, 0x52664202b55200d6,
0xe305c4567903f206, 0x6aec5bab0abe2d6f,
0xaa9beeacb93784cd, 0x23727151ca8a5ba4,
0x9211f70506dba974, 0x1bf868f87566761d,
0x39a7bb59395f695b, 0xb04e24a44ae2b632,
0x012da2f086b344e2, 0x88c43d0df50e9b8b,
0x48b3880a46873229, 0xc15a17f7353aed40,
0x703991a3f96b1f90, 0xf9d00e5e8ad6c0f9,
0xa8c0ab4db4510d09, 0x212934b0c7ecd260,
0x904ab2e40bbd20b0, 0x19a32d197800ffd9,
0xd9d4981ecb89567b, 0x503d07e3b8348912,
0xe15e81b774657bc2, 0x68b71e4a07d8a4ab,
0x4ae8cdeb4be1bbed, 0xc3015216385c6484,
0x7262d442f40d9654, 0xfb8b4bbf87b0493d,
0x3bfcfeb83439e09f, 0xb215614547843ff6,
0x0376e7118bd5cd26, 0x8a9f78ecf868124f,
0x47c9405313a7f3aa, 0xce20dfae601a2cc3,
0x7f4359faac4bde13, 0xf6aac607dff6017a,
0x36dd73006c7fa8d8, 0xbf34ecfd1fc277b1,
0x0e576aa9d3938561, 0x87bef554a02e5a08,
0xa5e126f5ec17454e, 0x2c08b9089faa9a27,
0x9d6b3f5c53fb68f7, 0x1482a0a12046b79e,
0xd4f515a693cf1e3c, 0x5d1c8a5be072c155,
0xec7f0c0f2c233385, 0x659693f25f9eecec,
0x5d8a5b23a32b6324, 0xd463c4ded096bc4d,
0x6500428a1cc74e9d, 0xece9dd776f7a91f4,
0x2c9e6870dcf33856, 0xa577f78daf4ee73f,
0x141471d9631f15ef, 0x9dfdee2410a2ca86,
0xbfa23d855c9bd5c0, 0x364ba2782f260aa9,
0x8728242ce377f879, 0x0ec1bbd190ca2710,
0xceb60ed623438eb2, 0x475f912b50fe51db,
0xf63c177f9cafa30b, 0x7fd58882ef127c62,
0xb283b03d04dd9d87, 0x3b6a2fc0776042ee,
0x8a09a994bb31b03e, 0x03e03669c88c6f57,
0xc397836e7b05c6f5, 0x4a7e1c9308b8199c,
0xfb1d9ac7c4e9eb4c, 0x72f4053ab7543425,
0x50abd69bfb6d2b63, 0xd942496688d0f40a,
0x6821cf32448106da, 0xe1c850cf373cd9b3,
0x21bfe5c884b57011, 0xa8567a35f708af78,
0x1935fc613b595da8, 0x90dc639c48e482c1,
0x690c6dc2c2324238, 0xe0e5f23fb18f9d51,
0x5186746b7dde6f81, 0xd86feb960e63b0e8,
0x18185e91bdea194a, 0x91f1c16cce57c623,
0x20924738020634f3, 0xa97bd8c571bbeb9a,
0x8b240b643d82f4dc, 0x02cd94994e3f2bb5,
0xb3ae12cd826ed965, 0x3a478d30f1d3060c,
0xfa303837425aafae, 0x73d9a7ca31e770c7,
0xc2ba219efdb68217, 0x4b53be638e0b5d7e,
0x860586dc65c4bc9b, 0x0fec1921167963f2,
0xbe8f9f75da289122, 0x37660088a9954e4b,
0xf711b58f1a1ce7e9, 0x7ef82a7269a13880,
0xcf9bac26a5f0ca50, 0x467233dbd64d1539,
0x642de07a9a740a7f, 0xedc47f87e9c9d516,
0x5ca7f9d3259827c6, 0xd54e662e5625f8af,
0x1539d329e5ac510d, 0x9cd04cd496118e64,
0x2db3ca805a407cb4, 0xa45a557d29fda3dd,
0x9c469dacd5482c15, 0x15af0251a6f5f37c,
0xa4cc84056aa401ac, 0x2d251bf81919dec5,
0xed52aeffaa907767, 0x64bb3102d92da80e,
0xd5d8b756157c5ade, 0x5c3128ab66c185b7,
0x7e6efb0a2af89af1, 0xf78764f759454598,
0x46e4e2a39514b748, 0xcf0d7d5ee6a96821,
0x0f7ac8595520c183, 0x869357a4269d1eea,
0x37f0d1f0eaccec3a, 0xbe194e0d99713353,
0x734f76b272bed2b6, 0xfaa6e94f01030ddf,
0x4bc56f1bcd52ff0f, 0xc22cf0e6beef2066,
0x025b45e10d6689c4, 0x8bb2da1c7edb56ad,
0x3ad15c48b28aa47d, 0xb338c3b5c1377b14,
0x916710148d0e6452, 0x188e8fe9feb3bb3b,
0xa9ed09bd32e249eb, 0x20049640415f9682,
0xe0732347f2d63f20, 0x699abcba816be049,
0xd8f93aee4d3a1299, 0x5110a5133e87cdf0,
],
&[ 0x0000000000000000, 0xf4125129ce4038be,
0xc37d8400c417e217, 0x376fd5290a57daa9,
0xada22e52d0b85745, 0x59b07f7b1ef86ffb,
0x6edfaa5214afb552, 0x9acdfb7bdaef8dec,
0x701d7af6f9e73de1, 0x840f2bdf37a7055f,
0xb360fef63df0dff6, 0x4772afdff3b0e748,
0xddbf54a4295f6aa4, 0x29ad058de71f521a,
0x1ec2d0a4ed4888b3, 0xead0818d2308b00d,
0xe03af5edf3ce7bc2, 0x1428a4c43d8e437c,
0x234771ed37d999d5, 0xd75520c4f999a16b,
0x4d98dbbf23762c87, 0xb98a8a96ed361439,
0x8ee55fbfe761ce90, 0x7af70e962921f62e,
0x90278f1b0a294623, 0x6435de32c4697e9d,
0x535a0b1bce3ea434, 0xa7485a32007e9c8a,
0x3d85a149da911166, 0xc997f06014d129d8,
0xfef825491e86f371, 0x0aea7460d0c6cbcf,
0xeb2ccd88bf0b64ef, 0x1f3e9ca1714b5c51,
0x285149887b1c86f8, 0xdc4318a1b55cbe46,
0x468ee3da6fb333aa, 0xb29cb2f3a1f30b14,
0x85f367daaba4d1bd, 0x71e136f365e4e903,
0x9b31b77e46ec590e, 0x6f23e65788ac61b0,
0x584c337e82fbbb19, 0xac5e62574cbb83a7,
0x3693992c96540e4b, 0xc281c805581436f5,
0xf5ee1d2c5243ec5c, 0x01fc4c059c03d4e2,
0x0b1638654cc51f2d, 0xff04694c82852793,
0xc86bbc6588d2fd3a, 0x3c79ed4c4692c584,
0xa6b416379c7d4868, 0x52a6471e523d70d6,
0x65c99237586aaa7f, 0x91dbc31e962a92c1,
0x7b0b4293b52222cc, 0x8f1913ba7b621a72,
0xb876c6937135c0db, 0x4c6497babf75f865,
0xd6a96cc1659a7589, 0x22bb3de8abda4d37,
0x15d4e8c1a18d979e, 0xe1c6b9e86fcdaf20,
0xfd00bd4226815ab5, 0x0912ec6be8c1620b,
0x3e7d3942e296b8a2, 0xca6f686b2cd6801c,
0x50a29310f6390df0, 0xa4b0c2393879354e,
0x93df1710322eefe7, 0x67cd4639fc6ed759,
0x8d1dc7b4df666754, 0x790f969d11265fea,
0x4e6043b41b718543, 0xba72129dd531bdfd,
0x20bfe9e60fde3011, 0xd4adb8cfc19e08af,
0xe3c26de6cbc9d206, 0x17d03ccf0589eab8,
0x1d3a48afd54f2177, 0xe92819861b0f19c9,
0xde47ccaf1158c360, 0x2a559d86df18fbde,
0xb09866fd05f77632, 0x448a37d4cbb74e8c,
0x73e5e2fdc1e09425, 0x87f7b3d40fa0ac9b,
0x6d2732592ca81c96, 0x99356370e2e82428,
0xae5ab659e8bffe81, 0x5a48e77026ffc63f,
0xc0851c0bfc104bd3, 0x34974d223250736d,
0x03f8980b3807a9c4, 0xf7eac922f647917a,
0x162c70ca998a3e5a, 0xe23e21e357ca06e4,
0xd551f4ca5d9ddc4d, 0x2143a5e393dde4f3,
0xbb8e5e984932691f, 0x4f9c0fb1877251a1,
0x78f3da988d258b08, 0x8ce18bb14365b3b6,
0x66310a3c606d03bb, 0x92235b15ae2d3b05,
0xa54c8e3ca47ae1ac, 0x515edf156a3ad912,
0xcb93246eb0d554fe, 0x3f8175477e956c40,
0x08eea06e74c2b6e9, 0xfcfcf147ba828e57,
0xf61685276a444598, 0x0204d40ea4047d26,
0x356b0127ae53a78f, 0xc179500e60139f31,
0x5bb4ab75bafc12dd, 0xafa6fa5c74bc2a63,
0x98c92f757eebf0ca, 0x6cdb7e5cb0abc874,
0x860bffd193a37879, 0x7219aef85de340c7,
0x45767bd157b49a6e, 0xb1642af899f4a2d0,
0x2ba9d183431b2f3c, 0xdfbb80aa8d5b1782,
0xe8d45583870ccd2b, 0x1cc604aa494cf595,
0xd1585cd715952601, 0x254a0dfedbd51ebf,
0x1225d8d7d182c416, 0xe63789fe1fc2fca8,
0x7cfa7285c52d7144, 0x88e823ac0b6d49fa,
0xbf87f685013a9353, 0x4b95a7accf7aabed,
0xa1452621ec721be0, 0x555777082232235e,
0x6238a2212865f9f7, 0x962af308e625c149,
0x0ce708733cca4ca5, 0xf8f5595af28a741b,
0xcf9a8c73f8ddaeb2, 0x3b88dd5a369d960c,
0x3162a93ae65b5dc3, 0xc570f813281b657d,
0xf21f2d3a224cbfd4, 0x060d7c13ec0c876a,
0x9cc0876836e30a86, 0x68d2d641f8a33238,
0x5fbd0368f2f4e891, 0xabaf52413cb4d02f,
0x417fd3cc1fbc6022, 0xb56d82e5d1fc589c,
0x820257ccdbab8235, 0x761006e515ebba8b,
0xecddfd9ecf043767, 0x18cfacb701440fd9,
0x2fa0799e0b13d570, 0xdbb228b7c553edce,
0x3a74915faa9e42ee, 0xce66c07664de7a50,
0xf909155f6e89a0f9, 0x0d1b4476a0c99847,
0x97d6bf0d7a2615ab, 0x63c4ee24b4662d15,
0x54ab3b0dbe31f7bc, 0xa0b96a247071cf02,
0x4a69eba953797f0f, 0xbe7bba809d3947b1,
0x89146fa9976e9d18, 0x7d063e80592ea5a6,
0xe7cbc5fb83c1284a, 0x13d994d24d8110f4,
0x24b641fb47d6ca5d, 0xd0a410d28996f2e3,
0xda4e64b25950392c, 0x2e5c359b97100192,
0x1933e0b29d47db3b, 0xed21b19b5307e385,
0x77ec4ae089e86e69, 0x83fe1bc947a856d7,
0xb491cee04dff8c7e, 0x40839fc983bfb4c0,
0xaa531e44a0b704cd, 0x5e414f6d6ef73c73,
0x692e9a4464a0e6da, 0x9d3ccb6daae0de64,
0x07f13016700f5388, 0xf3e3613fbe4f6b36,
0xc48cb416b418b19f, 0x309ee53f7a588921,
0x2c58e19533147cb4, 0xd84ab0bcfd54440a,
0xef256595f7039ea3, 0x1b3734bc3943a61d,
0x81facfc7e3ac2bf1, 0x75e89eee2dec134f,
0x42874bc727bbc9e6, 0xb6951aeee9fbf158,
0x5c459b63caf34155, 0xa857ca4a04b379eb,
0x9f381f630ee4a342, 0x6b2a4e4ac0a49bfc,
0xf1e7b5311a4b1610, 0x05f5e418d40b2eae,
0x329a3131de5cf407, 0xc6886018101cccb9,
0xcc621478c0da0776, 0x387045510e9a3fc8,
0x0f1f907804cde561, 0xfb0dc151ca8ddddf,
0x61c03a2a10625033, 0x95d26b03de22688d,
0xa2bdbe2ad475b224, 0x56afef031a358a9a,
0xbc7f6e8e393d3a97, 0x486d3fa7f77d0229,
0x7f02ea8efd2ad880, 0x8b10bba7336ae03e,
0x11dd40dce9856dd2, 0xe5cf11f527c5556c,
0xd2a0c4dc2d928fc5, 0x26b295f5e3d2b77b,
0xc7742c1d8c1f185b, 0x33667d34425f20e5,
0x0409a81d4808fa4c, 0xf01bf9348648c2f2,
0x6ad6024f5ca74f1e, 0x9ec4536692e777a0,
0xa9ab864f98b0ad09, 0x5db9d76656f095b7,
0xb76956eb75f825ba, 0x437b07c2bbb81d04,
0x7414d2ebb1efc7ad, 0x800683c27fafff13,
0x1acb78b9a54072ff, 0xeed929906b004a41,
0xd9b6fcb9615790e8, 0x2da4ad90af17a856,
0x274ed9f07fd16399, 0xd35c88d9b1915b27,
0xe4335df0bbc6818e, 0x10210cd97586b930,
0x8aecf7a2af6934dc, 0x7efea68b61290c62,
0x499173a26b7ed6cb, 0xbd83228ba53eee75,
0x5753a30686365e78, 0xa341f22f487666c6,
0x942e27064221bc6f, 0x603c762f8c6184d1,
0xfaf18d54568e093d, 0x0ee3dc7d98ce3183,
0x398c09549299eb2a, 0xcd9e587d5cd9d394,
],
&[ 0x0000000000000000, 0x8ce168638c796306,
0x329bf69440655567, 0xbe7a9ef7cc1c3661,
0x6537ed2880caaace, 0xe9d6854b0cb3c9c8,
0x57ac1bbcc0afffa9, 0xdb4d73df4cd69caf,
0xca6fda510195559c, 0x468eb2328dec369a,
0xf8f42cc541f000fb, 0x741544a6cd8963fd,
0xaf583779815fff52, 0x23b95f1a0d269c54,
0x9dc3c1edc13aaa35, 0x1122a98e4d43c933,
0xbf8692f15bbd3853, 0x3367fa92d7c45b55,
0x8d1d64651bd86d34, 0x01fc0c0697a10e32,
0xdab17fd9db77929d, 0x565017ba570ef19b,
0xe82a894d9b12c7fa, 0x64cbe12e176ba4fc,
0x75e948a05a286dcf, 0xf90820c3d6510ec9,
0x4772be341a4d38a8, 0xcb93d65796345bae,
0x10dea588dae2c701, 0x9c3fcdeb569ba407,
0x2245531c9a879266, 0xaea43b7f16fef160,
0x545403b1efede3cd, 0xd8b56bd2639480cb,
0x66cff525af88b6aa, 0xea2e9d4623f1d5ac,
0x3163ee996f274903, 0xbd8286fae35e2a05,
0x03f8180d2f421c64, 0x8f19706ea33b7f62,
0x9e3bd9e0ee78b651, 0x12dab1836201d557,
0xaca02f74ae1de336, 0x2041471722648030,
0xfb0c34c86eb21c9f, 0x77ed5cabe2cb7f99,
0xc997c25c2ed749f8, 0x4576aa3fa2ae2afe,
0xebd29140b450db9e, 0x6733f9233829b898,
0xd94967d4f4358ef9, 0x55a80fb7784cedff,
0x8ee57c68349a7150, 0x0204140bb8e31256,
0xbc7e8afc74ff2437, 0x309fe29ff8864731,
0x21bd4b11b5c58e02, 0xad5c237239bced04,
0x1326bd85f5a0db65, 0x9fc7d5e679d9b863,
0x448aa639350f24cc, 0xc86bce5ab97647ca,
0x761150ad756a71ab, 0xfaf038cef91312ad,
0xa8a80763dfdbc79a, 0x24496f0053a2a49c,
0x9a33f1f79fbe92fd, 0x16d2999413c7f1fb,
0xcd9fea4b5f116d54, 0x417e8228d3680e52,
0xff041cdf1f743833, 0x73e574bc930d5b35,
0x62c7dd32de4e9206, 0xee26b5515237f100,
0x505c2ba69e2bc761, 0xdcbd43c51252a467,
0x07f0301a5e8438c8, 0x8b115879d2fd5bce,
0x356bc68e1ee16daf, 0xb98aaeed92980ea9,
0x172e95928466ffc9, 0x9bcffdf1081f9ccf,
0x25b56306c403aaae, 0xa9540b65487ac9a8,
0x721978ba04ac5507, 0xfef810d988d53601,
0x40828e2e44c90060, 0xcc63e64dc8b06366,
0xdd414fc385f3aa55, 0x51a027a0098ac953,
0xefdab957c596ff32, 0x633bd13449ef9c34,
0xb876a2eb0539009b, 0x3497ca888940639d,
0x8aed547f455c55fc, 0x060c3c1cc92536fa,
0xfcfc04d230362457, 0x701d6cb1bc4f4751,
0xce67f24670537130, 0x42869a25fc2a1236,
0x99cbe9fab0fc8e99, 0x152a81993c85ed9f,
0xab501f6ef099dbfe, 0x27b1770d7ce0b8f8,
0x3693de8331a371cb, 0xba72b6e0bdda12cd,
0x0408281771c624ac, 0x88e94074fdbf47aa,
0x53a433abb169db05, 0xdf455bc83d10b803,
0x613fc53ff10c8e62, 0xeddead5c7d75ed64,
0x437a96236b8b1c04, 0xcf9bfe40e7f27f02,
0x71e160b72bee4963, 0xfd0008d4a7972a65,
0x264d7b0beb41b6ca, 0xaaac13686738d5cc,
0x14d68d9fab24e3ad, 0x9837e5fc275d80ab,
0x89154c726a1e4998, 0x05f42411e6672a9e,
0xbb8ebae62a7b1cff, 0x376fd285a6027ff9,
0xec22a15aead4e356, 0x60c3c93966ad8050,
0xdeb957ceaab1b631, 0x52583fad26c8d537,
0x7a092894e7201c5f, 0xf6e840f76b597f59,
0x4892de00a7454938, 0xc473b6632b3c2a3e,
0x1f3ec5bc67eab691, 0x93dfaddfeb93d597,
0x2da53328278fe3f6, 0xa1445b4babf680f0,
0xb066f2c5e6b549c3, 0x3c879aa66acc2ac5,
0x82fd0451a6d01ca4, 0x0e1c6c322aa97fa2,
0xd5511fed667fe30d, 0x59b0778eea06800b,
0xe7cae979261ab66a, 0x6b2b811aaa63d56c,
0xc58fba65bc9d240c, 0x496ed20630e4470a,
0xf7144cf1fcf8716b, 0x7bf524927081126d,
0xa0b8574d3c578ec2, 0x2c593f2eb02eedc4,
0x9223a1d97c32dba5, 0x1ec2c9baf04bb8a3,
0x0fe06034bd087190, 0x8301085731711296,
0x3d7b96a0fd6d24f7, 0xb19afec3711447f1,
0x6ad78d1c3dc2db5e, 0xe636e57fb1bbb858,
0x584c7b887da78e39, 0xd4ad13ebf1deed3f,
0x2e5d2b2508cdff92, 0xa2bc434684b49c94,
0x1cc6ddb148a8aaf5, 0x9027b5d2c4d1c9f3,
0x4b6ac60d8807555c, 0xc78bae6e047e365a,
0x79f13099c862003b, 0xf51058fa441b633d,
0xe432f1740958aa0e, 0x68d399178521c908,
0xd6a907e0493dff69, 0x5a486f83c5449c6f,
0x81051c5c899200c0, 0x0de4743f05eb63c6,
0xb39eeac8c9f755a7, 0x3f7f82ab458e36a1,
0x91dbb9d45370c7c1, 0x1d3ad1b7df09a4c7,
0xa3404f40131592a6, 0x2fa127239f6cf1a0,
0xf4ec54fcd3ba6d0f, 0x780d3c9f5fc30e09,
0xc677a26893df3868, 0x4a96ca0b1fa65b6e,
0x5bb4638552e5925d, 0xd7550be6de9cf15b,
0x692f95111280c73a, 0xe5cefd729ef9a43c,
0x3e838eadd22f3893, 0xb262e6ce5e565b95,
0x0c187839924a6df4, 0x80f9105a1e330ef2,
0xd2a12ff738fbdbc5, 0x5e404794b482b8c3,
0xe03ad963789e8ea2, 0x6cdbb100f4e7eda4,
0xb796c2dfb831710b, 0x3b77aabc3448120d,
0x850d344bf854246c, 0x09ec5c28742d476a,
0x18cef5a6396e8e59, 0x942f9dc5b517ed5f,
0x2a550332790bdb3e, 0xa6b46b51f572b838,
0x7df9188eb9a42497, 0xf11870ed35dd4791,
0x4f62ee1af9c171f0, 0xc383867975b812f6,
0x6d27bd066346e396, 0xe1c6d565ef3f8090,
0x5fbc4b922323b6f1, 0xd35d23f1af5ad5f7,
0x0810502ee38c4958, 0x84f1384d6ff52a5e,
0x3a8ba6baa3e91c3f, 0xb66aced92f907f39,
0xa748675762d3b60a, 0x2ba90f34eeaad50c,
0x95d391c322b6e36d, 0x1932f9a0aecf806b,
0xc27f8a7fe2191cc4, 0x4e9ee21c6e607fc2,
0xf0e47ceba27c49a3, 0x7c0514882e052aa5,
0x86f52c46d7163808, 0x0a1444255b6f5b0e,
0xb46edad297736d6f, 0x388fb2b11b0a0e69,
0xe3c2c16e57dc92c6, 0x6f23a90ddba5f1c0,
0xd15937fa17b9c7a1, 0x5db85f999bc0a4a7,
0x4c9af617d6836d94, 0xc07b9e745afa0e92,
0x7e01008396e638f3, 0xf2e068e01a9f5bf5,
0x29ad1b3f5649c75a, 0xa54c735cda30a45c,
0x1b36edab162c923d, 0x97d785c89a55f13b,
0x3973beb78cab005b, 0xb592d6d400d2635d,
0x0be84823ccce553c, 0x8709204040b7363a,
0x5c44539f0c61aa95, 0xd0a53bfc8018c993,
0x6edfa50b4c04fff2, 0xe23ecd68c07d9cf4,
0xf31c64e68d3e55c7, 0x7ffd0c85014736c1,
0xc1879272cd5b00a0, 0x4d66fa11412263a6,
0x962b89ce0df4ff09, 0x1acae1ad818d9c0f,
0xa4b07f5a4d91aa6e, 0x28511739c1e8c968,
],
&[ 0x0000000000000000, 0x3504e58b9ba6dd1e,
0x6a09cb17374dba3c, 0x5f0d2e9caceb6722,
0xd413962e6e9b7478, 0xe11773a5f53da966,
0xbe1a5d3959d6ce44, 0x8b1eb8b2c270135a,
0x837e0a0f85a17b9b, 0xb67aef841e07a685,
0xe977c118b2ecc1a7, 0xdc732493294a1cb9,
0x576d9c21eb3a0fe3, 0x626979aa709cd2fd,
0x3d645736dc77b5df, 0x0860b2bd47d168c1,
0x2da5324c53d5645d, 0x18a1d7c7c873b943,
0x47acf95b6498de61, 0x72a81cd0ff3e037f,
0xf9b6a4623d4e1025, 0xccb241e9a6e8cd3b,
0x93bf6f750a03aa19, 0xa6bb8afe91a57707,
0xaedb3843d6741fc6, 0x9bdfddc84dd2c2d8,
0xc4d2f354e139a5fa, 0xf1d616df7a9f78e4,
0x7ac8ae6db8ef6bbe, 0x4fcc4be62349b6a0,
0x10c1657a8fa2d182, 0x25c580f114040c9c,
0x5b4a6498a7aac8ba, 0x6e4e81133c0c15a4,
0x3143af8f90e77286, 0x04474a040b41af98,
0x8f59f2b6c931bcc2, 0xba5d173d529761dc,
0xe55039a1fe7c06fe, 0xd054dc2a65dadbe0,
0xd8346e97220bb321, 0xed308b1cb9ad6e3f,
0xb23da5801546091d, 0x8739400b8ee0d403,
0x0c27f8b94c90c759, 0x39231d32d7361a47,
0x662e33ae7bdd7d65, 0x532ad625e07ba07b,
0x76ef56d4f47face7, 0x43ebb35f6fd971f9,
0x1ce69dc3c33216db, 0x29e278485894cbc5,
0xa2fcc0fa9ae4d89f, 0x97f8257101420581,
0xc8f50bedada962a3, 0xfdf1ee66360fbfbd,
0xf5915cdb71ded77c, 0xc095b950ea780a62,
0x9f9897cc46936d40, 0xaa9c7247dd35b05e,
0x2182caf51f45a304, 0x14862f7e84e37e1a,
0x4b8b01e228081938, 0x7e8fe469b3aec426,
0xb694c9314f559174, 0x83902cbad4f34c6a,
0xdc9d022678182b48, 0xe999e7ade3bef656,
0x62875f1f21cee50c, 0x5783ba94ba683812,
0x088e940816835f30, 0x3d8a71838d25822e,
0x35eac33ecaf4eaef, 0x00ee26b5515237f1,
0x5fe30829fdb950d3, 0x6ae7eda2661f8dcd,
0xe1f95510a46f9e97, 0xd4fdb09b3fc94389,
0x8bf09e07932224ab, 0xbef47b8c0884f9b5,
0x9b31fb7d1c80f529, 0xae351ef687262837,
0xf138306a2bcd4f15, 0xc43cd5e1b06b920b,
0x4f226d53721b8151, 0x7a2688d8e9bd5c4f,
0x252ba64445563b6d, 0x102f43cfdef0e673,
0x184ff17299218eb2, 0x2d4b14f9028753ac,
0x72463a65ae6c348e, 0x4742dfee35cae990,
0xcc5c675cf7bafaca, 0xf95882d76c1c27d4,
0xa655ac4bc0f740f6, 0x935149c05b519de8,
0xeddeada9e8ff59ce, 0xd8da4822735984d0,
0x87d766bedfb2e3f2, 0xb2d3833544143eec,
0x39cd3b8786642db6, 0x0cc9de0c1dc2f0a8,
0x53c4f090b129978a, 0x66c0151b2a8f4a94,
0x6ea0a7a66d5e2255, 0x5ba4422df6f8ff4b,
0x04a96cb15a139869, 0x31ad893ac1b54577,
0xbab3318803c5562d, 0x8fb7d40398638b33,
0xd0bafa9f3488ec11, 0xe5be1f14af2e310f,
0xc07b9fe5bb2a3d93, 0xf57f7a6e208ce08d,
0xaa7254f28c6787af, 0x9f76b17917c15ab1,
0x146809cbd5b149eb, 0x216cec404e1794f5,
0x7e61c2dce2fcf3d7, 0x4b652757795a2ec9,
0x430595ea3e8b4608, 0x76017061a52d9b16,
0x290c5efd09c6fc34, 0x1c08bb769260212a,
0x971603c450103270, 0xa212e64fcbb6ef6e,
0xfd1fc8d3675d884c, 0xc81b2d58fcfb5552,
0x4670b431c63cb183, 0x737451ba5d9a6c9d,
0x2c797f26f1710bbf, 0x197d9aad6ad7d6a1,
0x9263221fa8a7c5fb, 0xa767c794330118e5,
0xf86ae9089fea7fc7, 0xcd6e0c83044ca2d9,
0xc50ebe3e439dca18, 0xf00a5bb5d83b1706,
0xaf07752974d07024, 0x9a0390a2ef76ad3a,
0x111d28102d06be60, 0x2419cd9bb6a0637e,
0x7b14e3071a4b045c, 0x4e10068c81edd942,
0x6bd5867d95e9d5de, 0x5ed163f60e4f08c0,
0x01dc4d6aa2a46fe2, 0x34d8a8e13902b2fc,
0xbfc61053fb72a1a6, 0x8ac2f5d860d47cb8,
0xd5cfdb44cc3f1b9a, 0xe0cb3ecf5799c684,
0xe8ab8c721048ae45, 0xddaf69f98bee735b,
0x82a2476527051479, 0xb7a6a2eebca3c967,
0x3cb81a5c7ed3da3d, 0x09bcffd7e5750723,
0x56b1d14b499e6001, 0x63b534c0d238bd1f,
0x1d3ad0a961967939, 0x283e3522fa30a427,
0x77331bbe56dbc305, 0x4237fe35cd7d1e1b,
0xc92946870f0d0d41, 0xfc2da30c94abd05f,
0xa3208d903840b77d, 0x9624681ba3e66a63,
0x9e44daa6e43702a2, 0xab403f2d7f91dfbc,
0xf44d11b1d37ab89e, 0xc149f43a48dc6580,
0x4a574c888aac76da, 0x7f53a903110aabc4,
0x205e879fbde1cce6, 0x155a6214264711f8,
0x309fe2e532431d64, 0x059b076ea9e5c07a,
0x5a9629f2050ea758, 0x6f92cc799ea87a46,
0xe48c74cb5cd8691c, 0xd1889140c77eb402,
0x8e85bfdc6b95d320, 0xbb815a57f0330e3e,
0xb3e1e8eab7e266ff, 0x86e50d612c44bbe1,
0xd9e823fd80afdcc3, 0xececc6761b0901dd,
0x67f27ec4d9791287, 0x52f69b4f42dfcf99,
0x0dfbb5d3ee34a8bb, 0x38ff5058759275a5,
0xf0e47d00896920f7, 0xc5e0988b12cffde9,
0x9aedb617be249acb, 0xafe9539c258247d5,
0x24f7eb2ee7f2548f, 0x11f30ea57c548991,
0x4efe2039d0bfeeb3, 0x7bfac5b24b1933ad,
0x739a770f0cc85b6c, 0x469e9284976e8672,
0x1993bc183b85e150, 0x2c975993a0233c4e,
0xa789e12162532f14, 0x928d04aaf9f5f20a,
0xcd802a36551e9528, 0xf884cfbdceb84836,
0xdd414f4cdabc44aa, 0xe845aac7411a99b4,
0xb748845bedf1fe96, 0x824c61d076572388,
0x0952d962b42730d2, 0x3c563ce92f81edcc,
0x635b1275836a8aee, 0x565ff7fe18cc57f0,
0x5e3f45435f1d3f31, 0x6b3ba0c8c4bbe22f,
0x34368e546850850d, 0x01326bdff3f65813,
0x8a2cd36d31864b49, 0xbf2836e6aa209657,
0xe025187a06cbf175, 0xd521fdf19d6d2c6b,
0xabae19982ec3e84d, 0x9eaafc13b5653553,
0xc1a7d28f198e5271, 0xf4a3370482288f6f,
0x7fbd8fb640589c35, 0x4ab96a3ddbfe412b,
0x15b444a177152609, 0x20b0a12aecb3fb17,
0x28d01397ab6293d6, 0x1dd4f61c30c44ec8,
0x42d9d8809c2f29ea, 0x77dd3d0b0789f4f4,
0xfcc385b9c5f9e7ae, 0xc9c760325e5f3ab0,
0x96ca4eaef2b45d92, 0xa3ceab256912808c,
0x860b2bd47d168c10, 0xb30fce5fe6b0510e,
0xec02e0c34a5b362c, 0xd9060548d1fdeb32,
0x5218bdfa138df868, 0x671c5871882b2576,
0x381176ed24c04254, 0x0d159366bf669f4a,
0x057521dbf8b7f78b, 0x3071c45063112a95,
0x6f7ceacccffa4db7, 0x5a780f47545c90a9,
0xd166b7f5962c83f3, 0xe462527e0d8a5eed,
0xbb6f7ce2a16139cf, 0x8e6b99693ac7e4d1,
],
&[ 0x0000000000000000, 0xe39d1389931b9354,
0xec6301407ea0b5c3, 0x0ffe12c9edbb2697,
0xf39f24d3a5d6f8ed, 0x1002375a36cd6bb9,
0x1ffc2593db764d2e, 0xfc61361a486dde7a,
0xcc676ff4133a62b1, 0x2ffa7c7d8021f1e5,
0x20046eb46d9ad772, 0xc3997d3dfe814426,
0x3ff84b27b6ec9a5c, 0xdc6558ae25f70908,
0xd39b4a67c84c2f9f, 0x300659ee5b57bccb,
0xb397f9bb7ee35609, 0x500aea32edf8c55d,
0x5ff4f8fb0043e3ca, 0xbc69eb729358709e,
0x4008dd68db35aee4, 0xa395cee1482e3db0,
0xac6bdc28a5951b27, 0x4ff6cfa1368e8873,
0x7ff0964f6dd934b8, 0x9c6d85c6fec2a7ec,
0x9393970f1379817b, 0x700e84868062122f,
0x8c6fb29cc80fcc55, 0x6ff2a1155b145f01,
0x600cb3dcb6af7996, 0x8391a05525b4eac2,
0x4c76d525a5513f79, 0xafebc6ac364aac2d,
0xa015d465dbf18aba, 0x4388c7ec48ea19ee,
0xbfe9f1f60087c794, 0x5c74e27f939c54c0,
0x538af0b67e277257, 0xb017e33fed3ce103,
0x8011bad1b66b5dc8, 0x638ca9582570ce9c,
0x6c72bb91c8cbe80b, 0x8fefa8185bd07b5f,
0x738e9e0213bda525, 0x90138d8b80a63671,
0x9fed9f426d1d10e6, 0x7c708ccbfe0683b2,
0xffe12c9edbb26970, 0x1c7c3f1748a9fa24,
0x13822ddea512dcb3, 0xf01f3e5736094fe7,
0x0c7e084d7e64919d, 0xefe31bc4ed7f02c9,
0xe01d090d00c4245e, 0x03801a8493dfb70a,
0x3386436ac8880bc1, 0xd01b50e35b939895,
0xdfe5422ab628be02, 0x3c7851a325332d56,
0xc01967b96d5ef32c, 0x23847430fe456078,
0x2c7a66f913fe46ef, 0xcfe7757080e5d5bb,
0x98edaa4b4aa27ef2, 0x7b70b9c2d9b9eda6,
0x748eab0b3402cb31, 0x9713b882a7195865,
0x6b728e98ef74861f, 0x88ef9d117c6f154b,
0x87118fd891d433dc, 0x648c9c5102cfa088,
0x548ac5bf59981c43, 0xb717d636ca838f17,
0xb8e9c4ff2738a980, 0x5b74d776b4233ad4,
0xa715e16cfc4ee4ae, 0x4488f2e56f5577fa,
0x4b76e02c82ee516d, 0xa8ebf3a511f5c239,
0x2b7a53f0344128fb, 0xc8e74079a75abbaf,
0xc71952b04ae19d38, 0x24844139d9fa0e6c,
0xd8e577239197d016, 0x3b7864aa028c4342,
0x34867663ef3765d5, 0xd71b65ea7c2cf681,
0xe71d3c04277b4a4a, 0x04802f8db460d91e,
0x0b7e3d4459dbff89, 0xe8e32ecdcac06cdd,
0x148218d782adb2a7, 0xf71f0b5e11b621f3,
0xf8e11997fc0d0764, 0x1b7c0a1e6f169430,
0xd49b7f6eeff3418b, 0x37066ce77ce8d2df,
0x38f87e2e9153f448, 0xdb656da70248671c,
0x27045bbd4a25b966, 0xc4994834d93e2a32,
0xcb675afd34850ca5, 0x28fa4974a79e9ff1,
0x18fc109afcc9233a, 0xfb6103136fd2b06e,
0xf49f11da826996f9, 0x17020253117205ad,
0xeb633449591fdbd7, 0x08fe27c0ca044883,
0x0700350927bf6e14, 0xe49d2680b4a4fd40,
0x670c86d591101782, 0x8491955c020b84d6,
0x8b6f8795efb0a241, 0x68f2941c7cab3115,
0x9493a20634c6ef6f, 0x770eb18fa7dd7c3b,
0x78f0a3464a665aac, 0x9b6db0cfd97dc9f8,
0xab6be921822a7533, 0x48f6faa81131e667,
0x4708e861fc8ac0f0, 0xa495fbe86f9153a4,
0x58f4cdf227fc8dde, 0xbb69de7bb4e71e8a,
0xb497ccb2595c381d, 0x570adf3bca47ab49,
0x1a8272c5cdd36e8f, 0xf91f614c5ec8fddb,
0xf6e17385b373db4c, 0x157c600c20684818,
0xe91d561668059662, 0x0a80459ffb1e0536,
0x057e575616a523a1, 0xe6e344df85beb0f5,
0xd6e51d31dee90c3e, 0x35780eb84df29f6a,
0x3a861c71a049b9fd, 0xd91b0ff833522aa9,
0x257a39e27b3ff4d3, 0xc6e72a6be8246787,
0xc91938a2059f4110, 0x2a842b2b9684d244,
0xa9158b7eb3303886, 0x4a8898f7202babd2,
0x45768a3ecd908d45, 0xa6eb99b75e8b1e11,
0x5a8aafad16e6c06b, 0xb917bc2485fd533f,
0xb6e9aeed684675a8, 0x5574bd64fb5de6fc,
0x6572e48aa00a5a37, 0x86eff7033311c963,
0x8911e5cadeaaeff4, 0x6a8cf6434db17ca0,
0x96edc05905dca2da, 0x7570d3d096c7318e,
0x7a8ec1197b7c1719, 0x9913d290e867844d,
0x56f4a7e0688251f6, 0xb569b469fb99c2a2,
0xba97a6a01622e435, 0x590ab52985397761,
0xa56b8333cd54a91b, 0x46f690ba5e4f3a4f,
0x49088273b3f41cd8, 0xaa9591fa20ef8f8c,
0x9a93c8147bb83347, 0x790edb9de8a3a013,
0x76f0c95405188684, 0x956ddadd960315d0,
0x690cecc7de6ecbaa, 0x8a91ff4e4d7558fe,
0x856fed87a0ce7e69, 0x66f2fe0e33d5ed3d,
0xe5635e5b166107ff, 0x06fe4dd2857a94ab,
0x09005f1b68c1b23c, 0xea9d4c92fbda2168,
0x16fc7a88b3b7ff12, 0xf561690120ac6c46,
0xfa9f7bc8cd174ad1, 0x190268415e0cd985,
0x290431af055b654e, 0xca9922269640f61a,
0xc56730ef7bfbd08d, 0x26fa2366e8e043d9,
0xda9b157ca08d9da3, 0x390606f533960ef7,
0x36f8143cde2d2860, 0xd56507b54d36bb34,
0x826fd88e8771107d, 0x61f2cb07146a8329,
0x6e0cd9cef9d1a5be, 0x8d91ca476aca36ea,
0x71f0fc5d22a7e890, 0x926defd4b1bc7bc4,
0x9d93fd1d5c075d53, 0x7e0eee94cf1cce07,
0x4e08b77a944b72cc, 0xad95a4f30750e198,
0xa26bb63aeaebc70f, 0x41f6a5b379f0545b,
0xbd9793a9319d8a21, 0x5e0a8020a2861975,
0x51f492e94f3d3fe2, 0xb2698160dc26acb6,
0x31f82135f9924674, 0xd26532bc6a89d520,
0xdd9b20758732f3b7, 0x3e0633fc142960e3,
0xc26705e65c44be99, 0x21fa166fcf5f2dcd,
0x2e0404a622e40b5a, 0xcd99172fb1ff980e,
0xfd9f4ec1eaa824c5, 0x1e025d4879b3b791,
0x11fc4f8194089106, 0xf2615c0807130252,
0x0e006a124f7edc28, 0xed9d799bdc654f7c,
0xe2636b5231de69eb, 0x01fe78dba2c5fabf,
0xce190dab22202f04, 0x2d841e22b13bbc50,
0x227a0ceb5c809ac7, 0xc1e71f62cf9b0993,
0x3d86297887f6d7e9, 0xde1b3af114ed44bd,
0xd1e52838f956622a, 0x32783bb16a4df17e,
0x027e625f311a4db5, 0xe1e371d6a201dee1,
0xee1d631f4fbaf876, 0x0d807096dca16b22,
0xf1e1468c94ccb558, 0x127c550507d7260c,
0x1d8247ccea6c009b, 0xfe1f5445797793cf,
0x7d8ef4105cc3790d, 0x9e13e799cfd8ea59,
0x91edf5502263ccce, 0x7270e6d9b1785f9a,
0x8e11d0c3f91581e0, 0x6d8cc34a6a0e12b4,
0x6272d18387b53423, 0x81efc20a14aea777,
0xb1e99be44ff91bbc, 0x5274886ddce288e8,
0x5d8a9aa43159ae7f, 0xbe17892da2423d2b,
0x4276bf37ea2fe351, 0xa1ebacbe79347005,
0xae15be77948f5692, 0x4d88adfe0794c5c6,
],
&[ 0x0000000000000000, 0x62a95de6e302eff2,
0xc552bbcdc605dfe4, 0xa7fbe62b25073016,
0xa1fc51c8d49c2ca3, 0xc3550c2e379ec351,
0x64aeea051299f347, 0x0607b7e3f19b1cb5,
0x68a185c2f1afca2d, 0x0a08d82412ad25df,
0xadf33e0f37aa15c9, 0xcf5a63e9d4a8fa3b,
0xc95dd40a2533e68e, 0xabf489ecc631097c,
0x0c0f6fc7e336396a, 0x6ea632210034d698,
0xd1430b85e35f945a, 0xb3ea5663005d7ba8,
0x1411b048255a4bbe, 0x76b8edaec658a44c,
0x70bf5a4d37c3b8f9, 0x121607abd4c1570b,
0xb5ede180f1c6671d, 0xd744bc6612c488ef,
0xb9e28e4712f05e77, 0xdb4bd3a1f1f2b185,
0x7cb0358ad4f58193, 0x1e19686c37f76e61,
0x181edf8fc66c72d4, 0x7ab78269256e9d26,
0xdd4c64420069ad30, 0xbfe539a4e36b42c2,
0x89df31589e28bbdf, 0xeb766cbe7d2a542d,
0x4c8d8a95582d643b, 0x2e24d773bb2f8bc9,
0x282360904ab4977c, 0x4a8a3d76a9b6788e,
0xed71db5d8cb14898, 0x8fd886bb6fb3a76a,
0xe17eb49a6f8771f2, 0x83d7e97c8c859e00,
0x242c0f57a982ae16, 0x468552b14a8041e4,
0x4082e552bb1b5d51, 0x222bb8b45819b2a3,
0x85d05e9f7d1e82b5, 0xe77903799e1c6d47,
0x589c3add7d772f85, 0x3a35673b9e75c077,
0x9dce8110bb72f061, 0xff67dcf658701f93,
0xf9606b15a9eb0326, 0x9bc936f34ae9ecd4,
0x3c32d0d86feedcc2, 0x5e9b8d3e8cec3330,
0x303dbf1f8cd8e5a8, 0x5294e2f96fda0a5a,
0xf56f04d24add3a4c, 0x97c65934a9dfd5be,
0x91c1eed75844c90b, 0xf368b331bb4626f9,
0x5493551a9e4116ef, 0x363a08fc7d43f91d,
0x38e744e264c6e4d5, 0x5a4e190487c40b27,
0xfdb5ff2fa2c33b31, 0x9f1ca2c941c1d4c3,
0x991b152ab05ac876, 0xfbb248cc53582784,
0x5c49aee7765f1792, 0x3ee0f301955df860,
0x5046c12095692ef8, 0x32ef9cc6766bc10a,
0x95147aed536cf11c, 0xf7bd270bb06e1eee,
0xf1ba90e841f5025b, 0x9313cd0ea2f7eda9,
0x34e82b2587f0ddbf, 0x564176c364f2324d,
0xe9a44f678799708f, 0x8b0d1281649b9f7d,
0x2cf6f4aa419caf6b, 0x4e5fa94ca29e4099,
0x48581eaf53055c2c, 0x2af14349b007b3de,
0x8d0aa562950083c8, 0xefa3f88476026c3a,
0x8105caa57636baa2, 0xe3ac974395345550,
0x44577168b0336546, 0x26fe2c8e53318ab4,
0x20f99b6da2aa9601, 0x4250c68b41a879f3,
0xe5ab20a064af49e5, 0x87027d4687ada617,
0xb13875bafaee5f0a, 0xd391285c19ecb0f8,
0x746ace773ceb80ee, 0x16c39391dfe96f1c,
0x10c424722e7273a9, 0x726d7994cd709c5b,
0xd5969fbfe877ac4d, 0xb73fc2590b7543bf,
0xd999f0780b419527, 0xbb30ad9ee8437ad5,
0x1ccb4bb5cd444ac3, 0x7e6216532e46a531,
0x7865a1b0dfddb984, 0x1accfc563cdf5676,
0xbd371a7d19d86660, 0xdf9e479bfada8992,
0x607b7e3f19b1cb50, 0x02d223d9fab324a2,
0xa529c5f2dfb414b4, 0xc78098143cb6fb46,
0xc1872ff7cd2de7f3, 0xa32e72112e2f0801,
0x04d5943a0b283817, 0x667cc9dce82ad7e5,
0x08dafbfde81e017d, 0x6a73a61b0b1cee8f,
0xcd8840302e1bde99, 0xaf211dd6cd19316b,
0xa926aa353c822dde, 0xcb8ff7d3df80c22c,
0x6c7411f8fa87f23a, 0x0edd4c1e19851dc8,
0x71ce89c4c98dc9aa, 0x1367d4222a8f2658,
0xb49c32090f88164e, 0xd6356fefec8af9bc,
0xd032d80c1d11e509, 0xb29b85eafe130afb,
0x156063c1db143aed, 0x77c93e273816d51f,
0x196f0c0638220387, 0x7bc651e0db20ec75,
0xdc3db7cbfe27dc63, 0xbe94ea2d1d253391,
0xb8935dceecbe2f24, 0xda3a00280fbcc0d6,
0x7dc1e6032abbf0c0, 0x1f68bbe5c9b91f32,
0xa08d82412ad25df0, 0xc224dfa7c9d0b202,
0x65df398cecd78214, 0x0776646a0fd56de6,
0x0171d389fe4e7153, 0x63d88e6f1d4c9ea1,
0xc4236844384baeb7, 0xa68a35a2db494145,
0xc82c0783db7d97dd, 0xaa855a65387f782f,
0x0d7ebc4e1d784839, 0x6fd7e1a8fe7aa7cb,
0x69d0564b0fe1bb7e, 0x0b790badece3548c,
0xac82ed86c9e4649a, 0xce2bb0602ae68b68,
0xf811b89c57a57275, 0x9ab8e57ab4a79d87,
0x3d43035191a0ad91, 0x5fea5eb772a24263,
0x59ede95483395ed6, 0x3b44b4b2603bb124,
0x9cbf5299453c8132, 0xfe160f7fa63e6ec0,
0x90b03d5ea60ab858, 0xf21960b8450857aa,
0x55e28693600f67bc, 0x374bdb75830d884e,
0x314c6c96729694fb, 0x53e5317091947b09,
0xf41ed75bb4934b1f, 0x96b78abd5791a4ed,
0x2952b319b4fae62f, 0x4bfbeeff57f809dd,
0xec0008d472ff39cb, 0x8ea9553291fdd639,
0x88aee2d16066ca8c, 0xea07bf378364257e,
0x4dfc591ca6631568, 0x2f5504fa4561fa9a,
0x41f336db45552c02, 0x235a6b3da657c3f0,
0x84a18d168350f3e6, 0xe608d0f060521c14,
0xe00f671391c900a1, 0x82a63af572cbef53,
0x255ddcde57ccdf45, 0x47f48138b4ce30b7,
0x4929cd26ad4b2d7f, 0x2b8090c04e49c28d,
0x8c7b76eb6b4ef29b, 0xeed22b0d884c1d69,
0xe8d59cee79d701dc, 0x8a7cc1089ad5ee2e,
0x2d872723bfd2de38, 0x4f2e7ac55cd031ca,
0x218848e45ce4e752, 0x43211502bfe608a0,
0xe4daf3299ae138b6, 0x8673aecf79e3d744,
0x8074192c8878cbf1, 0xe2dd44ca6b7a2403,
0x4526a2e14e7d1415, 0x278fff07ad7ffbe7,
0x986ac6a34e14b925, 0xfac39b45ad1656d7,
0x5d387d6e881166c1, 0x3f9120886b138933,
0x3996976b9a889586, 0x5b3fca8d798a7a74,
0xfcc42ca65c8d4a62, 0x9e6d7140bf8fa590,
0xf0cb4361bfbb7308, 0x92621e875cb99cfa,
0x3599f8ac79beacec, 0x5730a54a9abc431e,
0x513712a96b275fab, 0x339e4f4f8825b059,
0x9465a964ad22804f, 0xf6ccf4824e206fbd,
0xc0f6fc7e336396a0, 0xa25fa198d0617952,
0x05a447b3f5664944, 0x670d1a551664a6b6,
0x610aadb6e7ffba03, 0x03a3f05004fd55f1,
0xa458167b21fa65e7, 0xc6f14b9dc2f88a15,
0xa85779bcc2cc5c8d, 0xcafe245a21ceb37f,
0x6d05c27104c98369, 0x0fac9f97e7cb6c9b,
0x09ab28741650702e, 0x6b027592f5529fdc,
0xccf993b9d055afca, 0xae50ce5f33574038,
0x11b5f7fbd03c02fa, 0x731caa1d333eed08,
0xd4e74c361639dd1e, 0xb64e11d0f53b32ec,
0xb049a63304a02e59, 0xd2e0fbd5e7a2c1ab,
0x751b1dfec2a5f1bd, 0x17b2401821a71e4f,
0x791472392193c8d7, 0x1bbd2fdfc2912725,
0xbc46c9f4e7961733, 0xdeef94120494f8c1,
0xd8e823f1f50fe474, 0xba417e17160d0b86,
0x1dba983c330a3b90, 0x7f13c5dad008d462,
],
&[ 0x0000000000000000, 0x381d0015c96f4444,
0x703a002b92de8888, 0x4827003e5bb1cccc,
0xe074005725bd1110, 0xd8690042ecd25554,
0x904e007cb7639998, 0xa85300697e0cdddc,
0xebb126fd13edb14b, 0xd3ac26e8da82f50f,
0x9b8b26d6813339c3, 0xa39626c3485c7d87,
0x0bc526aa3650a05b, 0x33d826bfff3fe41f,
0x7bff2681a48e28d3, 0x43e226946de16c97,
0xfc3b6ba97f4cf1fd, 0xc4266bbcb623b5b9,
0x8c016b82ed927975, 0xb41c6b9724fd3d31,
0x1c4f6bfe5af1e0ed, 0x24526beb939ea4a9,
0x6c756bd5c82f6865, 0x54686bc001402c21,
0x178a4d546ca140b6, 0x2f974d41a5ce04f2,
0x67b04d7ffe7fc83e, 0x5fad4d6a37108c7a,
0xf7fe4d03491c51a6, 0xcfe34d16807315e2,
0x87c44d28dbc2d92e, 0xbfd94d3d12ad9d6a,
0xd32ff101a60e7091, 0xeb32f1146f6134d5,
0xa315f12a34d0f819, 0x9b08f13ffdbfbc5d,
0x335bf15683b36181, 0x0b46f1434adc25c5,
0x4361f17d116de909, 0x7b7cf168d802ad4d,
0x389ed7fcb5e3c1da, 0x0083d7e97c8c859e,
0x48a4d7d7273d4952, 0x70b9d7c2ee520d16,
0xd8ead7ab905ed0ca, 0xe0f7d7be5931948e,
0xa8d0d78002805842, 0x90cdd795cbef1c06,
0x2f149aa8d942816c, 0x17099abd102dc528,
0x5f2e9a834b9c09e4, 0x67339a9682f34da0,
0xcf609afffcff907c, 0xf77d9aea3590d438,
0xbf5a9ad46e2118f4, 0x87479ac1a74e5cb0,
0xc4a5bc55caaf3027, 0xfcb8bc4003c07463,
0xb49fbc7e5871b8af, 0x8c82bc6b911efceb,
0x24d1bc02ef122137, 0x1cccbc17267d6573,
0x54ebbc297dcca9bf, 0x6cf6bc3cb4a3edfb,
0x8d06c450148b7249, 0xb51bc445dde4360d,
0xfd3cc47b8655fac1, 0xc521c46e4f3abe85,
0x6d72c40731366359, 0x556fc412f859271d,
0x1d48c42ca3e8ebd1, 0x2555c4396a87af95,
0x66b7e2ad0766c302, 0x5eaae2b8ce098746,
0x168de28695b84b8a, 0x2e90e2935cd70fce,
0x86c3e2fa22dbd212, 0xbedee2efebb49656,
0xf6f9e2d1b0055a9a, 0xcee4e2c4796a1ede,
0x713daff96bc783b4, 0x4920afeca2a8c7f0,
0x0107afd2f9190b3c, 0x391aafc730764f78,
0x9149afae4e7a92a4, 0xa954afbb8715d6e0,
0xe173af85dca41a2c, 0xd96eaf9015cb5e68,
0x9a8c8904782a32ff, 0xa2918911b14576bb,
0xeab6892feaf4ba77, 0xd2ab893a239bfe33,
0x7af889535d9723ef, 0x42e5894694f867ab,
0x0ac28978cf49ab67, 0x32df896d0626ef23,
0x5e293551b28502d8, 0x663435447bea469c,
0x2e13357a205b8a50, 0x160e356fe934ce14,
0xbe5d3506973813c8, 0x864035135e57578c,
0xce67352d05e69b40, 0xf67a3538cc89df04,
0xb59813aca168b393, 0x8d8513b96807f7d7,
0xc5a2138733b63b1b, 0xfdbf1392fad97f5f,
0x55ec13fb84d5a283, 0x6df113ee4dbae6c7,
0x25d613d0160b2a0b, 0x1dcb13c5df646e4f,
0xa2125ef8cdc9f325, 0x9a0f5eed04a6b761,
0xd2285ed35f177bad, 0xea355ec696783fe9,
0x42665eafe874e235, 0x7a7b5eba211ba671,
0x325c5e847aaa6abd, 0x0a415e91b3c52ef9,
0x49a37805de24426e, 0x71be7810174b062a,
0x3999782e4cfacae6, 0x0184783b85958ea2,
0xa9d77852fb99537e, 0x91ca784732f6173a,
0xd9ed78796947dbf6, 0xe1f0786ca0289fb2,
0x3154aef3718177f9, 0x0949aee6b8ee33bd,
0x416eaed8e35fff71, 0x7973aecd2a30bb35,
0xd120aea4543c66e9, 0xe93daeb19d5322ad,
0xa11aae8fc6e2ee61, 0x9907ae9a0f8daa25,
0xdae5880e626cc6b2, 0xe2f8881bab0382f6,
0xaadf8825f0b24e3a, 0x92c2883039dd0a7e,
0x3a91885947d1d7a2, 0x028c884c8ebe93e6,
0x4aab8872d50f5f2a, 0x72b688671c601b6e,
0xcd6fc55a0ecd8604, 0xf572c54fc7a2c240,
0xbd55c5719c130e8c, 0x8548c564557c4ac8,
0x2d1bc50d2b709714, 0x1506c518e21fd350,
0x5d21c526b9ae1f9c, 0x653cc53370c15bd8,
0x26dee3a71d20374f, 0x1ec3e3b2d44f730b,
0x56e4e38c8ffebfc7, 0x6ef9e3994691fb83,
0xc6aae3f0389d265f, 0xfeb7e3e5f1f2621b,
0xb690e3dbaa43aed7, 0x8e8de3ce632cea93,
0xe27b5ff2d78f0768, 0xda665fe71ee0432c,
0x92415fd945518fe0, 0xaa5c5fcc8c3ecba4,
0x020f5fa5f2321678, 0x3a125fb03b5d523c,
0x72355f8e60ec9ef0, 0x4a285f9ba983dab4,
0x09ca790fc462b623, 0x31d7791a0d0df267,
0x79f0792456bc3eab, 0x41ed79319fd37aef,
0xe9be7958e1dfa733, 0xd1a3794d28b0e377,
0x9984797373012fbb, 0xa1997966ba6e6bff,
0x1e40345ba8c3f695, 0x265d344e61acb2d1,
0x6e7a34703a1d7e1d, 0x56673465f3723a59,
0xfe34340c8d7ee785, 0xc62934194411a3c1,
0x8e0e34271fa06f0d, 0xb6133432d6cf2b49,
0xf5f112a6bb2e47de, 0xcdec12b37241039a,
0x85cb128d29f0cf56, 0xbdd61298e09f8b12,
0x158512f19e9356ce, 0x2d9812e457fc128a,
0x65bf12da0c4dde46, 0x5da212cfc5229a02,
0xbc526aa3650a05b0, 0x844f6ab6ac6541f4,
0xcc686a88f7d48d38, 0xf4756a9d3ebbc97c,
0x5c266af440b714a0, 0x643b6ae189d850e4,
0x2c1c6adfd2699c28, 0x14016aca1b06d86c,
0x57e34c5e76e7b4fb, 0x6ffe4c4bbf88f0bf,
0x27d94c75e4393c73, 0x1fc44c602d567837,
0xb7974c09535aa5eb, 0x8f8a4c1c9a35e1af,
0xc7ad4c22c1842d63, 0xffb04c3708eb6927,
0x4069010a1a46f44d, 0x7874011fd329b009,
0x3053012188987cc5, 0x084e013441f73881,
0xa01d015d3ffbe55d, 0x98000148f694a119,
0xd0270176ad256dd5, 0xe83a0163644a2991,
0xabd827f709ab4506, 0x93c527e2c0c40142,
0xdbe227dc9b75cd8e, 0xe3ff27c9521a89ca,
0x4bac27a02c165416, 0x73b127b5e5791052,
0x3b96278bbec8dc9e, 0x038b279e77a798da,
0x6f7d9ba2c3047521, 0x57609bb70a6b3165,
0x1f479b8951dafda9, 0x275a9b9c98b5b9ed,
0x8f099bf5e6b96431, 0xb7149be02fd62075,
0xff339bde7467ecb9, 0xc72e9bcbbd08a8fd,
0x84ccbd5fd0e9c46a, 0xbcd1bd4a1986802e,
0xf4f6bd7442374ce2, 0xccebbd618b5808a6,
0x64b8bd08f554d57a, 0x5ca5bd1d3c3b913e,
0x1482bd23678a5df2, 0x2c9fbd36aee519b6,
0x9346f00bbc4884dc, 0xab5bf01e7527c098,
0xe37cf0202e960c54, 0xdb61f035e7f94810,
0x7332f05c99f595cc, 0x4b2ff049509ad188,
0x0308f0770b2b1d44, 0x3b15f062c2445900,
0x78f7d6f6afa53597, 0x40ead6e366ca71d3,
0x08cdd6dd3d7bbd1f, 0x30d0d6c8f414f95b,
0x9883d6a18a182487, 0xa09ed6b4437760c3,
0xe8b9d68a18c6ac0f, 0xd0a4d69fd1a9e84b
]
];
macro_rules! slice_to_long {
($curVec:expr) => {
{
unsafe {
let (tmp, _) : (*const u64, usize) = mem::transmute(&$curVec);
*tmp
}
}
}
}
pub fn crc64(crc: u64, data: &[u8]) -> u64 {
let mut crc = crc;
let mut len = data.len();
let mut offset = 0usize;
while len >= 8 {
crc ^= slice_to_long!(data[offset..(offset+8)]);
crc = CRC64_TAB[7][(crc & 0xff) as usize] ^
CRC64_TAB[6][((crc >> 8) & 0xff) as usize] ^
CRC64_TAB[5][((crc >> 16) & 0xff) as usize] ^
CRC64_TAB[4][((crc >> 24) & 0xff) as usize] ^
CRC64_TAB[3][((crc >> 32) & 0xff) as usize] ^
CRC64_TAB[2][((crc >> 40) & 0xff) as usize] ^
CRC64_TAB[1][((crc >> 48) & 0xff) as usize] ^
CRC64_TAB[0][(crc >> 56) as usize];
offset += 8;
len -= 8;
}
while len > 0 {
crc = CRC64_TAB[0][((crc ^ data[offset] as u64) & 0xff) as usize] ^ (crc >> 8);
offset += 1;
len -= 1;
}
crc
}