Commit 00587dc5 authored by Hal Finkel's avatar Hal Finkel
Browse files

Initial Commit (gio-base-20150317)

parents
#ifndef CRC64_H
#define CRC64_H
#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif
#include <cstdlib>
#include <stdint.h>
#ifdef _OPENMP
#include <omp.h>
#endif
// These functions compute the CRC-64 checksum on a block of data
// and provide a way to combine the checksums on two blocks of data.
// For more information, see:
// http://en.wikipedia.org/wiki/Computation_of_CRC
// http://checksumcrc.blogspot.com/2011/12/should-you-use-crc-or-checksum.html
// http://crcutil.googlecode.com/files/crc-doc.1.0.pdf
// http://www.ross.net/crc/download/crc_v3.txt
// This uses the ECMA-182 polynomial with -1 initialization, and computes
// the bit-reversed CRC.
// The polynomial here is the bit-reversed encoding of 0x42f0e1eba9ea3693.
static const uint64_t crc64_poly = UINT64_C(0xc96c5795d7870f42);
static const uint64_t crc64_table[4][256] = {
{
UINT64_C(0x0000000000000000), UINT64_C(0x1dee8a5e222ca1dc),
UINT64_C(0x3bdd14bc445943b8), UINT64_C(0x26339ee26675e264),
UINT64_C(0x77ba297888b28770), UINT64_C(0x6a54a326aa9e26ac),
UINT64_C(0x4c673dc4ccebc4c8), UINT64_C(0x5189b79aeec76514),
UINT64_C(0xef7452f111650ee0), UINT64_C(0xf29ad8af3349af3c),
UINT64_C(0xd4a9464d553c4d58), UINT64_C(0xc947cc137710ec84),
UINT64_C(0x98ce7b8999d78990), UINT64_C(0x8520f1d7bbfb284c),
UINT64_C(0xa3136f35dd8eca28), UINT64_C(0xbefde56bffa26bf4),
UINT64_C(0x4c300ac98dc40345), UINT64_C(0x51de8097afe8a299),
UINT64_C(0x77ed1e75c99d40fd), UINT64_C(0x6a03942bebb1e121),
UINT64_C(0x3b8a23b105768435), UINT64_C(0x2664a9ef275a25e9),
UINT64_C(0x0057370d412fc78d), UINT64_C(0x1db9bd5363036651),
UINT64_C(0xa34458389ca10da5), UINT64_C(0xbeaad266be8dac79),
UINT64_C(0x98994c84d8f84e1d), UINT64_C(0x8577c6dafad4efc1),
UINT64_C(0xd4fe714014138ad5), UINT64_C(0xc910fb1e363f2b09),
UINT64_C(0xef2365fc504ac96d), UINT64_C(0xf2cdefa2726668b1),
UINT64_C(0x986015931b88068a), UINT64_C(0x858e9fcd39a4a756),
UINT64_C(0xa3bd012f5fd14532), UINT64_C(0xbe538b717dfde4ee),
UINT64_C(0xefda3ceb933a81fa), UINT64_C(0xf234b6b5b1162026),
UINT64_C(0xd4072857d763c242), UINT64_C(0xc9e9a209f54f639e),
UINT64_C(0x771447620aed086a), UINT64_C(0x6afacd3c28c1a9b6),
UINT64_C(0x4cc953de4eb44bd2), UINT64_C(0x5127d9806c98ea0e),
UINT64_C(0x00ae6e1a825f8f1a), UINT64_C(0x1d40e444a0732ec6),
UINT64_C(0x3b737aa6c606cca2), UINT64_C(0x269df0f8e42a6d7e),
UINT64_C(0xd4501f5a964c05cf), UINT64_C(0xc9be9504b460a413),
UINT64_C(0xef8d0be6d2154677), UINT64_C(0xf26381b8f039e7ab),
UINT64_C(0xa3ea36221efe82bf), UINT64_C(0xbe04bc7c3cd22363),
UINT64_C(0x9837229e5aa7c107), UINT64_C(0x85d9a8c0788b60db),
UINT64_C(0x3b244dab87290b2f), UINT64_C(0x26cac7f5a505aaf3),
UINT64_C(0x00f95917c3704897), UINT64_C(0x1d17d349e15ce94b),
UINT64_C(0x4c9e64d30f9b8c5f), UINT64_C(0x5170ee8d2db72d83),
UINT64_C(0x7743706f4bc2cfe7), UINT64_C(0x6aadfa3169ee6e3b),
UINT64_C(0xa218840d981e1391), UINT64_C(0xbff60e53ba32b24d),
UINT64_C(0x99c590b1dc475029), UINT64_C(0x842b1aeffe6bf1f5),
UINT64_C(0xd5a2ad7510ac94e1), UINT64_C(0xc84c272b3280353d),
UINT64_C(0xee7fb9c954f5d759), UINT64_C(0xf391339776d97685),
UINT64_C(0x4d6cd6fc897b1d71), UINT64_C(0x50825ca2ab57bcad),
UINT64_C(0x76b1c240cd225ec9), UINT64_C(0x6b5f481eef0eff15),
UINT64_C(0x3ad6ff8401c99a01), UINT64_C(0x273875da23e53bdd),
UINT64_C(0x010beb384590d9b9), UINT64_C(0x1ce5616667bc7865),
UINT64_C(0xee288ec415da10d4), UINT64_C(0xf3c6049a37f6b108),
UINT64_C(0xd5f59a785183536c), UINT64_C(0xc81b102673aff2b0),
UINT64_C(0x9992a7bc9d6897a4), UINT64_C(0x847c2de2bf443678),
UINT64_C(0xa24fb300d931d41c), UINT64_C(0xbfa1395efb1d75c0),
UINT64_C(0x015cdc3504bf1e34), UINT64_C(0x1cb2566b2693bfe8),
UINT64_C(0x3a81c88940e65d8c), UINT64_C(0x276f42d762cafc50),
UINT64_C(0x76e6f54d8c0d9944), UINT64_C(0x6b087f13ae213898),
UINT64_C(0x4d3be1f1c854dafc), UINT64_C(0x50d56bafea787b20),
UINT64_C(0x3a78919e8396151b), UINT64_C(0x27961bc0a1bab4c7),
UINT64_C(0x01a58522c7cf56a3), UINT64_C(0x1c4b0f7ce5e3f77f),
UINT64_C(0x4dc2b8e60b24926b), UINT64_C(0x502c32b8290833b7),
UINT64_C(0x761fac5a4f7dd1d3), UINT64_C(0x6bf126046d51700f),
UINT64_C(0xd50cc36f92f31bfb), UINT64_C(0xc8e24931b0dfba27),
UINT64_C(0xeed1d7d3d6aa5843), UINT64_C(0xf33f5d8df486f99f),
UINT64_C(0xa2b6ea171a419c8b), UINT64_C(0xbf586049386d3d57),
UINT64_C(0x996bfeab5e18df33), UINT64_C(0x848574f57c347eef),
UINT64_C(0x76489b570e52165e), UINT64_C(0x6ba611092c7eb782),
UINT64_C(0x4d958feb4a0b55e6), UINT64_C(0x507b05b56827f43a),
UINT64_C(0x01f2b22f86e0912e), UINT64_C(0x1c1c3871a4cc30f2),
UINT64_C(0x3a2fa693c2b9d296), UINT64_C(0x27c12ccde095734a),
UINT64_C(0x993cc9a61f3718be), UINT64_C(0x84d243f83d1bb962),
UINT64_C(0xa2e1dd1a5b6e5b06), UINT64_C(0xbf0f57447942fada),
UINT64_C(0xee86e0de97859fce), UINT64_C(0xf3686a80b5a93e12),
UINT64_C(0xd55bf462d3dcdc76), UINT64_C(0xc8b57e3cf1f07daa),
UINT64_C(0xd6e9a7309f3239a7), UINT64_C(0xcb072d6ebd1e987b),
UINT64_C(0xed34b38cdb6b7a1f), UINT64_C(0xf0da39d2f947dbc3),
UINT64_C(0xa1538e481780bed7), UINT64_C(0xbcbd041635ac1f0b),
UINT64_C(0x9a8e9af453d9fd6f), UINT64_C(0x876010aa71f55cb3),
UINT64_C(0x399df5c18e573747), UINT64_C(0x24737f9fac7b969b),
UINT64_C(0x0240e17dca0e74ff), UINT64_C(0x1fae6b23e822d523),
UINT64_C(0x4e27dcb906e5b037), UINT64_C(0x53c956e724c911eb),
UINT64_C(0x75fac80542bcf38f), UINT64_C(0x6814425b60905253),
UINT64_C(0x9ad9adf912f63ae2), UINT64_C(0x873727a730da9b3e),
UINT64_C(0xa104b94556af795a), UINT64_C(0xbcea331b7483d886),
UINT64_C(0xed6384819a44bd92), UINT64_C(0xf08d0edfb8681c4e),
UINT64_C(0xd6be903dde1dfe2a), UINT64_C(0xcb501a63fc315ff6),
UINT64_C(0x75adff0803933402), UINT64_C(0x6843755621bf95de),
UINT64_C(0x4e70ebb447ca77ba), UINT64_C(0x539e61ea65e6d666),
UINT64_C(0x0217d6708b21b372), UINT64_C(0x1ff95c2ea90d12ae),
UINT64_C(0x39cac2cccf78f0ca), UINT64_C(0x24244892ed545116),
UINT64_C(0x4e89b2a384ba3f2d), UINT64_C(0x536738fda6969ef1),
UINT64_C(0x7554a61fc0e37c95), UINT64_C(0x68ba2c41e2cfdd49),
UINT64_C(0x39339bdb0c08b85d), UINT64_C(0x24dd11852e241981),
UINT64_C(0x02ee8f674851fbe5), UINT64_C(0x1f0005396a7d5a39),
UINT64_C(0xa1fde05295df31cd), UINT64_C(0xbc136a0cb7f39011),
UINT64_C(0x9a20f4eed1867275), UINT64_C(0x87ce7eb0f3aad3a9),
UINT64_C(0xd647c92a1d6db6bd), UINT64_C(0xcba943743f411761),
UINT64_C(0xed9add965934f505), UINT64_C(0xf07457c87b1854d9),
UINT64_C(0x02b9b86a097e3c68), UINT64_C(0x1f5732342b529db4),
UINT64_C(0x3964acd64d277fd0), UINT64_C(0x248a26886f0bde0c),
UINT64_C(0x7503911281ccbb18), UINT64_C(0x68ed1b4ca3e01ac4),
UINT64_C(0x4ede85aec595f8a0), UINT64_C(0x53300ff0e7b9597c),
UINT64_C(0xedcdea9b181b3288), UINT64_C(0xf02360c53a379354),
UINT64_C(0xd610fe275c427130), UINT64_C(0xcbfe74797e6ed0ec),
UINT64_C(0x9a77c3e390a9b5f8), UINT64_C(0x879949bdb2851424),
UINT64_C(0xa1aad75fd4f0f640), UINT64_C(0xbc445d01f6dc579c),
UINT64_C(0x74f1233d072c2a36), UINT64_C(0x691fa96325008bea),
UINT64_C(0x4f2c37814375698e), UINT64_C(0x52c2bddf6159c852),
UINT64_C(0x034b0a458f9ead46), UINT64_C(0x1ea5801badb20c9a),
UINT64_C(0x38961ef9cbc7eefe), UINT64_C(0x257894a7e9eb4f22),
UINT64_C(0x9b8571cc164924d6), UINT64_C(0x866bfb923465850a),
UINT64_C(0xa05865705210676e), UINT64_C(0xbdb6ef2e703cc6b2),
UINT64_C(0xec3f58b49efba3a6), UINT64_C(0xf1d1d2eabcd7027a),
UINT64_C(0xd7e24c08daa2e01e), UINT64_C(0xca0cc656f88e41c2),
UINT64_C(0x38c129f48ae82973), UINT64_C(0x252fa3aaa8c488af),
UINT64_C(0x031c3d48ceb16acb), UINT64_C(0x1ef2b716ec9dcb17),
UINT64_C(0x4f7b008c025aae03), UINT64_C(0x52958ad220760fdf),
UINT64_C(0x74a614304603edbb), UINT64_C(0x69489e6e642f4c67),
UINT64_C(0xd7b57b059b8d2793), UINT64_C(0xca5bf15bb9a1864f),
UINT64_C(0xec686fb9dfd4642b), UINT64_C(0xf186e5e7fdf8c5f7),
UINT64_C(0xa00f527d133fa0e3), UINT64_C(0xbde1d8233113013f),
UINT64_C(0x9bd246c15766e35b), UINT64_C(0x863ccc9f754a4287),
UINT64_C(0xec9136ae1ca42cbc), UINT64_C(0xf17fbcf03e888d60),
UINT64_C(0xd74c221258fd6f04), UINT64_C(0xcaa2a84c7ad1ced8),
UINT64_C(0x9b2b1fd69416abcc), UINT64_C(0x86c59588b63a0a10),
UINT64_C(0xa0f60b6ad04fe874), UINT64_C(0xbd188134f26349a8),
UINT64_C(0x03e5645f0dc1225c), UINT64_C(0x1e0bee012fed8380),
UINT64_C(0x383870e3499861e4), UINT64_C(0x25d6fabd6bb4c038),
UINT64_C(0x745f4d278573a52c), UINT64_C(0x69b1c779a75f04f0),
UINT64_C(0x4f82599bc12ae694), UINT64_C(0x526cd3c5e3064748),
UINT64_C(0xa0a13c6791602ff9), UINT64_C(0xbd4fb639b34c8e25),
UINT64_C(0x9b7c28dbd5396c41), UINT64_C(0x8692a285f715cd9d),
UINT64_C(0xd71b151f19d2a889), UINT64_C(0xcaf59f413bfe0955),
UINT64_C(0xecc601a35d8beb31), UINT64_C(0xf1288bfd7fa74aed),
UINT64_C(0x4fd56e9680052119), UINT64_C(0x523be4c8a22980c5),
UINT64_C(0x74087a2ac45c62a1), UINT64_C(0x69e6f074e670c37d),
UINT64_C(0x386f47ee08b7a669), UINT64_C(0x2581cdb02a9b07b5),
UINT64_C(0x03b253524ceee5d1), UINT64_C(0x1e5cd90c6ec2440d)
},
{
UINT64_C(0x0000000000000000), UINT64_C(0x3f0be14a916a6dcb),
UINT64_C(0x7e17c29522d4db96), UINT64_C(0x411c23dfb3beb65d),
UINT64_C(0xfc2f852a45a9b72c), UINT64_C(0xc3246460d4c3dae7),
UINT64_C(0x823847bf677d6cba), UINT64_C(0xbd33a6f5f6170171),
UINT64_C(0x6a87a57f245d70dd), UINT64_C(0x558c4435b5371d16),
UINT64_C(0x149067ea0689ab4b), UINT64_C(0x2b9b86a097e3c680),
UINT64_C(0x96a8205561f4c7f1), UINT64_C(0xa9a3c11ff09eaa3a),
UINT64_C(0xe8bfe2c043201c67), UINT64_C(0xd7b4038ad24a71ac),
UINT64_C(0xd50f4afe48bae1ba), UINT64_C(0xea04abb4d9d08c71),
UINT64_C(0xab18886b6a6e3a2c), UINT64_C(0x94136921fb0457e7),
UINT64_C(0x2920cfd40d135696), UINT64_C(0x162b2e9e9c793b5d),
UINT64_C(0x57370d412fc78d00), UINT64_C(0x683cec0bbeade0cb),
UINT64_C(0xbf88ef816ce79167), UINT64_C(0x80830ecbfd8dfcac),
UINT64_C(0xc19f2d144e334af1), UINT64_C(0xfe94cc5edf59273a),
UINT64_C(0x43a76aab294e264b), UINT64_C(0x7cac8be1b8244b80),
UINT64_C(0x3db0a83e0b9afddd), UINT64_C(0x02bb49749af09016),
UINT64_C(0x38c63ad73e7bddf1), UINT64_C(0x07cddb9daf11b03a),
UINT64_C(0x46d1f8421caf0667), UINT64_C(0x79da19088dc56bac),
UINT64_C(0xc4e9bffd7bd26add), UINT64_C(0xfbe25eb7eab80716),
UINT64_C(0xbafe7d685906b14b), UINT64_C(0x85f59c22c86cdc80),
UINT64_C(0x52419fa81a26ad2c), UINT64_C(0x6d4a7ee28b4cc0e7),
UINT64_C(0x2c565d3d38f276ba), UINT64_C(0x135dbc77a9981b71),
UINT64_C(0xae6e1a825f8f1a00), UINT64_C(0x9165fbc8cee577cb),
UINT64_C(0xd079d8177d5bc196), UINT64_C(0xef72395dec31ac5d),
UINT64_C(0xedc9702976c13c4b), UINT64_C(0xd2c29163e7ab5180),
UINT64_C(0x93deb2bc5415e7dd), UINT64_C(0xacd553f6c57f8a16),
UINT64_C(0x11e6f50333688b67), UINT64_C(0x2eed1449a202e6ac),
UINT64_C(0x6ff1379611bc50f1), UINT64_C(0x50fad6dc80d63d3a),
UINT64_C(0x874ed556529c4c96), UINT64_C(0xb845341cc3f6215d),
UINT64_C(0xf95917c370489700), UINT64_C(0xc652f689e122facb),
UINT64_C(0x7b61507c1735fbba), UINT64_C(0x446ab136865f9671),
UINT64_C(0x057692e935e1202c), UINT64_C(0x3a7d73a3a48b4de7),
UINT64_C(0x718c75ae7cf7bbe2), UINT64_C(0x4e8794e4ed9dd629),
UINT64_C(0x0f9bb73b5e236074), UINT64_C(0x30905671cf490dbf),
UINT64_C(0x8da3f084395e0cce), UINT64_C(0xb2a811cea8346105),
UINT64_C(0xf3b432111b8ad758), UINT64_C(0xccbfd35b8ae0ba93),
UINT64_C(0x1b0bd0d158aacb3f), UINT64_C(0x2400319bc9c0a6f4),
UINT64_C(0x651c12447a7e10a9), UINT64_C(0x5a17f30eeb147d62),
UINT64_C(0xe72455fb1d037c13), UINT64_C(0xd82fb4b18c6911d8),
UINT64_C(0x9933976e3fd7a785), UINT64_C(0xa6387624aebdca4e),
UINT64_C(0xa4833f50344d5a58), UINT64_C(0x9b88de1aa5273793),
UINT64_C(0xda94fdc5169981ce), UINT64_C(0xe59f1c8f87f3ec05),
UINT64_C(0x58acba7a71e4ed74), UINT64_C(0x67a75b30e08e80bf),
UINT64_C(0x26bb78ef533036e2), UINT64_C(0x19b099a5c25a5b29),
UINT64_C(0xce049a2f10102a85), UINT64_C(0xf10f7b65817a474e),
UINT64_C(0xb01358ba32c4f113), UINT64_C(0x8f18b9f0a3ae9cd8),
UINT64_C(0x322b1f0555b99da9), UINT64_C(0x0d20fe4fc4d3f062),
UINT64_C(0x4c3cdd90776d463f), UINT64_C(0x73373cdae6072bf4),
UINT64_C(0x494a4f79428c6613), UINT64_C(0x7641ae33d3e60bd8),
UINT64_C(0x375d8dec6058bd85), UINT64_C(0x08566ca6f132d04e),
UINT64_C(0xb565ca530725d13f), UINT64_C(0x8a6e2b19964fbcf4),
UINT64_C(0xcb7208c625f10aa9), UINT64_C(0xf479e98cb49b6762),
UINT64_C(0x23cdea0666d116ce), UINT64_C(0x1cc60b4cf7bb7b05),
UINT64_C(0x5dda28934405cd58), UINT64_C(0x62d1c9d9d56fa093),
UINT64_C(0xdfe26f2c2378a1e2), UINT64_C(0xe0e98e66b212cc29),
UINT64_C(0xa1f5adb901ac7a74), UINT64_C(0x9efe4cf390c617bf),
UINT64_C(0x9c4505870a3687a9), UINT64_C(0xa34ee4cd9b5cea62),
UINT64_C(0xe252c71228e25c3f), UINT64_C(0xdd592658b98831f4),
UINT64_C(0x606a80ad4f9f3085), UINT64_C(0x5f6161e7def55d4e),
UINT64_C(0x1e7d42386d4beb13), UINT64_C(0x2176a372fc2186d8),
UINT64_C(0xf6c2a0f82e6bf774), UINT64_C(0xc9c941b2bf019abf),
UINT64_C(0x88d5626d0cbf2ce2), UINT64_C(0xb7de83279dd54129),
UINT64_C(0x0aed25d26bc24058), UINT64_C(0x35e6c498faa82d93),
UINT64_C(0x74fae74749169bce), UINT64_C(0x4bf1060dd87cf605),
UINT64_C(0xe318eb5cf9ef77c4), UINT64_C(0xdc130a1668851a0f),
UINT64_C(0x9d0f29c9db3bac52), UINT64_C(0xa204c8834a51c199),
UINT64_C(0x1f376e76bc46c0e8), UINT64_C(0x203c8f3c2d2cad23),
UINT64_C(0x6120ace39e921b7e), UINT64_C(0x5e2b4da90ff876b5),
UINT64_C(0x899f4e23ddb20719), UINT64_C(0xb694af694cd86ad2),
UINT64_C(0xf7888cb6ff66dc8f), UINT64_C(0xc8836dfc6e0cb144),
UINT64_C(0x75b0cb09981bb035), UINT64_C(0x4abb2a430971ddfe),
UINT64_C(0x0ba7099cbacf6ba3), UINT64_C(0x34ace8d62ba50668),
UINT64_C(0x3617a1a2b155967e), UINT64_C(0x091c40e8203ffbb5),
UINT64_C(0x4800633793814de8), UINT64_C(0x770b827d02eb2023),
UINT64_C(0xca382488f4fc2152), UINT64_C(0xf533c5c265964c99),
UINT64_C(0xb42fe61dd628fac4), UINT64_C(0x8b2407574742970f),
UINT64_C(0x5c9004dd9508e6a3), UINT64_C(0x639be59704628b68),
UINT64_C(0x2287c648b7dc3d35), UINT64_C(0x1d8c270226b650fe),
UINT64_C(0xa0bf81f7d0a1518f), UINT64_C(0x9fb460bd41cb3c44),
UINT64_C(0xdea84362f2758a19), UINT64_C(0xe1a3a228631fe7d2),
UINT64_C(0xdbded18bc794aa35), UINT64_C(0xe4d530c156fec7fe),
UINT64_C(0xa5c9131ee54071a3), UINT64_C(0x9ac2f254742a1c68),
UINT64_C(0x27f154a1823d1d19), UINT64_C(0x18fab5eb135770d2),
UINT64_C(0x59e69634a0e9c68f), UINT64_C(0x66ed777e3183ab44),
UINT64_C(0xb15974f4e3c9dae8), UINT64_C(0x8e5295be72a3b723),
UINT64_C(0xcf4eb661c11d017e), UINT64_C(0xf045572b50776cb5),
UINT64_C(0x4d76f1dea6606dc4), UINT64_C(0x727d1094370a000f),
UINT64_C(0x3361334b84b4b652), UINT64_C(0x0c6ad20115dedb99),
UINT64_C(0x0ed19b758f2e4b8f), UINT64_C(0x31da7a3f1e442644),
UINT64_C(0x70c659e0adfa9019), UINT64_C(0x4fcdb8aa3c90fdd2),
UINT64_C(0xf2fe1e5fca87fca3), UINT64_C(0xcdf5ff155bed9168),
UINT64_C(0x8ce9dccae8532735), UINT64_C(0xb3e23d8079394afe),
UINT64_C(0x64563e0aab733b52), UINT64_C(0x5b5ddf403a195699),
UINT64_C(0x1a41fc9f89a7e0c4), UINT64_C(0x254a1dd518cd8d0f),
UINT64_C(0x9879bb20eeda8c7e), UINT64_C(0xa7725a6a7fb0e1b5),
UINT64_C(0xe66e79b5cc0e57e8), UINT64_C(0xd96598ff5d643a23),
UINT64_C(0x92949ef28518cc26), UINT64_C(0xad9f7fb81472a1ed),
UINT64_C(0xec835c67a7cc17b0), UINT64_C(0xd388bd2d36a67a7b),
UINT64_C(0x6ebb1bd8c0b17b0a), UINT64_C(0x51b0fa9251db16c1),
UINT64_C(0x10acd94de265a09c), UINT64_C(0x2fa73807730fcd57),
UINT64_C(0xf8133b8da145bcfb), UINT64_C(0xc718dac7302fd130),
UINT64_C(0x8604f9188391676d), UINT64_C(0xb90f185212fb0aa6),
UINT64_C(0x043cbea7e4ec0bd7), UINT64_C(0x3b375fed7586661c),
UINT64_C(0x7a2b7c32c638d041), UINT64_C(0x45209d785752bd8a),
UINT64_C(0x479bd40ccda22d9c), UINT64_C(0x789035465cc84057),
UINT64_C(0x398c1699ef76f60a), UINT64_C(0x0687f7d37e1c9bc1),
UINT64_C(0xbbb45126880b9ab0), UINT64_C(0x84bfb06c1961f77b),
UINT64_C(0xc5a393b3aadf4126), UINT64_C(0xfaa872f93bb52ced),
UINT64_C(0x2d1c7173e9ff5d41), UINT64_C(0x121790397895308a),
UINT64_C(0x530bb3e6cb2b86d7), UINT64_C(0x6c0052ac5a41eb1c),
UINT64_C(0xd133f459ac56ea6d), UINT64_C(0xee3815133d3c87a6),
UINT64_C(0xaf2436cc8e8231fb), UINT64_C(0x902fd7861fe85c30),
UINT64_C(0xaa52a425bb6311d7), UINT64_C(0x9559456f2a097c1c),
UINT64_C(0xd44566b099b7ca41), UINT64_C(0xeb4e87fa08dda78a),
UINT64_C(0x567d210ffecaa6fb), UINT64_C(0x6976c0456fa0cb30),
UINT64_C(0x286ae39adc1e7d6d), UINT64_C(0x176102d04d7410a6),
UINT64_C(0xc0d5015a9f3e610a), UINT64_C(0xffdee0100e540cc1),
UINT64_C(0xbec2c3cfbdeaba9c), UINT64_C(0x81c922852c80d757),
UINT64_C(0x3cfa8470da97d626), UINT64_C(0x03f1653a4bfdbbed),
UINT64_C(0x42ed46e5f8430db0), UINT64_C(0x7de6a7af6929607b),
UINT64_C(0x7f5deedbf3d9f06d), UINT64_C(0x40560f9162b39da6),
UINT64_C(0x014a2c4ed10d2bfb), UINT64_C(0x3e41cd0440674630),
UINT64_C(0x83726bf1b6704741), UINT64_C(0xbc798abb271a2a8a),
UINT64_C(0xfd65a96494a49cd7), UINT64_C(0xc26e482e05cef11c),
UINT64_C(0x15da4ba4d78480b0), UINT64_C(0x2ad1aaee46eeed7b),
UINT64_C(0x6bcd8931f5505b26), UINT64_C(0x54c6687b643a36ed),
UINT64_C(0xe9f5ce8e922d379c), UINT64_C(0xd6fe2fc403475a57),
UINT64_C(0x97e20c1bb0f9ec0a), UINT64_C(0xa8e9ed51219381c1)
},
{
UINT64_C(0x0000000000000000), UINT64_C(0x54e979925cd0f10d),
UINT64_C(0xa9d2f324b9a1e21a), UINT64_C(0xfd3b8ab6e5711317),
UINT64_C(0xc17d4962dc4ddab1), UINT64_C(0x959430f0809d2bbc),
UINT64_C(0x68afba4665ec38ab), UINT64_C(0x3c46c3d4393cc9a6),
UINT64_C(0x10223dee1795abe7), UINT64_C(0x44cb447c4b455aea),
UINT64_C(0xb9f0cecaae3449fd), UINT64_C(0xed19b758f2e4b8f0),
UINT64_C(0xd15f748ccbd87156), UINT64_C(0x85b60d1e9708805b),
UINT64_C(0x788d87a87279934c), UINT64_C(0x2c64fe3a2ea96241),
UINT64_C(0x20447bdc2f2b57ce), UINT64_C(0x74ad024e73fba6c3),
UINT64_C(0x899688f8968ab5d4), UINT64_C(0xdd7ff16aca5a44d9),
UINT64_C(0xe13932bef3668d7f), UINT64_C(0xb5d04b2cafb67c72),
UINT64_C(0x48ebc19a4ac76f65), UINT64_C(0x1c02b80816179e68),
UINT64_C(0x3066463238befc29), UINT64_C(0x648f3fa0646e0d24),
UINT64_C(0x99b4b516811f1e33), UINT64_C(0xcd5dcc84ddcfef3e),
UINT64_C(0xf11b0f50e4f32698), UINT64_C(0xa5f276c2b823d795),
UINT64_C(0x58c9fc745d52c482), UINT64_C(0x0c2085e60182358f),
UINT64_C(0x4088f7b85e56af9c), UINT64_C(0x14618e2a02865e91),
UINT64_C(0xe95a049ce7f74d86), UINT64_C(0xbdb37d0ebb27bc8b),
UINT64_C(0x81f5beda821b752d), UINT64_C(0xd51cc748decb8420),
UINT64_C(0x28274dfe3bba9737), UINT64_C(0x7cce346c676a663a),
UINT64_C(0x50aaca5649c3047b), UINT64_C(0x0443b3c41513f576),
UINT64_C(0xf9783972f062e661), UINT64_C(0xad9140e0acb2176c),
UINT64_C(0x91d78334958edeca), UINT64_C(0xc53efaa6c95e2fc7),
UINT64_C(0x380570102c2f3cd0), UINT64_C(0x6cec098270ffcddd),
UINT64_C(0x60cc8c64717df852), UINT64_C(0x3425f5f62dad095f),
UINT64_C(0xc91e7f40c8dc1a48), UINT64_C(0x9df706d2940ceb45),
UINT64_C(0xa1b1c506ad3022e3), UINT64_C(0xf558bc94f1e0d3ee),
UINT64_C(0x086336221491c0f9), UINT64_C(0x5c8a4fb0484131f4),
UINT64_C(0x70eeb18a66e853b5), UINT64_C(0x2407c8183a38a2b8),
UINT64_C(0xd93c42aedf49b1af), UINT64_C(0x8dd53b3c839940a2),
UINT64_C(0xb193f8e8baa58904), UINT64_C(0xe57a817ae6757809),
UINT64_C(0x18410bcc03046b1e), UINT64_C(0x4ca8725e5fd49a13),
UINT64_C(0x8111ef70bcad5f38), UINT64_C(0xd5f896e2e07dae35),
UINT64_C(0x28c31c54050cbd22), UINT64_C(0x7c2a65c659dc4c2f),
UINT64_C(0x406ca61260e08589), UINT64_C(0x1485df803c307484),
UINT64_C(0xe9be5536d9416793), UINT64_C(0xbd572ca48591969e),
UINT64_C(0x9133d29eab38f4df), UINT64_C(0xc5daab0cf7e805d2),
UINT64_C(0x38e121ba129916c5), UINT64_C(0x6c0858284e49e7c8),
UINT64_C(0x504e9bfc77752e6e), UINT64_C(0x04a7e26e2ba5df63),
UINT64_C(0xf99c68d8ced4cc74), UINT64_C(0xad75114a92043d79),
UINT64_C(0xa15594ac938608f6), UINT64_C(0xf5bced3ecf56f9fb),
UINT64_C(0x088767882a27eaec), UINT64_C(0x5c6e1e1a76f71be1),
UINT64_C(0x6028ddce4fcbd247), UINT64_C(0x34c1a45c131b234a),
UINT64_C(0xc9fa2eeaf66a305d), UINT64_C(0x9d135778aabac150),
UINT64_C(0xb177a9428413a311), UINT64_C(0xe59ed0d0d8c3521c),
UINT64_C(0x18a55a663db2410b), UINT64_C(0x4c4c23f46162b006),
UINT64_C(0x700ae020585e79a0), UINT64_C(0x24e399b2048e88ad),
UINT64_C(0xd9d81304e1ff9bba), UINT64_C(0x8d316a96bd2f6ab7),
UINT64_C(0xc19918c8e2fbf0a4), UINT64_C(0x9570615abe2b01a9),
UINT64_C(0x684bebec5b5a12be), UINT64_C(0x3ca2927e078ae3b3),
UINT64_C(0x00e451aa3eb62a15), UINT64_C(0x540d28386266db18),
UINT64_C(0xa936a28e8717c80f), UINT64_C(0xfddfdb1cdbc73902),
UINT64_C(0xd1bb2526f56e5b43), UINT64_C(0x85525cb4a9beaa4e),
UINT64_C(0x7869d6024ccfb959), UINT64_C(0x2c80af90101f4854),
UINT64_C(0x10c66c44292381f2), UINT64_C(0x442f15d675f370ff),
UINT64_C(0xb9149f60908263e8), UINT64_C(0xedfde6f2cc5292e5),
UINT64_C(0xe1dd6314cdd0a76a), UINT64_C(0xb5341a8691005667),
UINT64_C(0x480f903074714570), UINT64_C(0x1ce6e9a228a1b47d),
UINT64_C(0x20a02a76119d7ddb), UINT64_C(0x744953e44d4d8cd6),
UINT64_C(0x8972d952a83c9fc1), UINT64_C(0xdd9ba0c0f4ec6ecc),
UINT64_C(0xf1ff5efada450c8d), UINT64_C(0xa51627688695fd80),
UINT64_C(0x582dadde63e4ee97), UINT64_C(0x0cc4d44c3f341f9a),
UINT64_C(0x308217980608d63c), UINT64_C(0x646b6e0a5ad82731),
UINT64_C(0x9950e4bcbfa93426), UINT64_C(0xcdb99d2ee379c52b),
UINT64_C(0x90fb71cad654a0f5), UINT64_C(0xc41208588a8451f8),
UINT64_C(0x392982ee6ff542ef), UINT64_C(0x6dc0fb7c3325b3e2),
UINT64_C(0x518638a80a197a44), UINT64_C(0x056f413a56c98b49),
UINT64_C(0xf854cb8cb3b8985e), UINT64_C(0xacbdb21eef686953),
UINT64_C(0x80d94c24c1c10b12), UINT64_C(0xd43035b69d11fa1f),
UINT64_C(0x290bbf007860e908), UINT64_C(0x7de2c69224b01805),
UINT64_C(0x41a405461d8cd1a3), UINT64_C(0x154d7cd4415c20ae),
UINT64_C(0xe876f662a42d33b9), UINT64_C(0xbc9f8ff0f8fdc2b4),
UINT64_C(0xb0bf0a16f97ff73b), UINT64_C(0xe4567384a5af0636),
UINT64_C(0x196df93240de1521), UINT64_C(0x4d8480a01c0ee42c),
UINT64_C(0x71c2437425322d8a), UINT64_C(0x252b3ae679e2dc87),
UINT64_C(0xd810b0509c93cf90), UINT64_C(0x8cf9c9c2c0433e9d),
UINT64_C(0xa09d37f8eeea5cdc), UINT64_C(0xf4744e6ab23aadd1),
UINT64_C(0x094fc4dc574bbec6), UINT64_C(0x5da6bd4e0b9b4fcb),
UINT64_C(0x61e07e9a32a7866d), UINT64_C(0x350907086e777760),
UINT64_C(0xc8328dbe8b066477), UINT64_C(0x9cdbf42cd7d6957a),
UINT64_C(0xd073867288020f69), UINT64_C(0x849affe0d4d2fe64),
UINT64_C(0x79a1755631a3ed73), UINT64_C(0x2d480cc46d731c7e),
UINT64_C(0x110ecf10544fd5d8), UINT64_C(0x45e7b682089f24d5),
UINT64_C(0xb8dc3c34edee37c2), UINT64_C(0xec3545a6b13ec6cf),
UINT64_C(0xc051bb9c9f97a48e), UINT64_C(0x94b8c20ec3475583),
UINT64_C(0x698348b826364694), UINT64_C(0x3d6a312a7ae6b799),
UINT64_C(0x012cf2fe43da7e3f), UINT64_C(0x55c58b6c1f0a8f32),
UINT64_C(0xa8fe01dafa7b9c25), UINT64_C(0xfc177848a6ab6d28),
UINT64_C(0xf037fdaea72958a7), UINT64_C(0xa4de843cfbf9a9aa),
UINT64_C(0x59e50e8a1e88babd), UINT64_C(0x0d0c771842584bb0),
UINT64_C(0x314ab4cc7b648216), UINT64_C(0x65a3cd5e27b4731b),
UINT64_C(0x989847e8c2c5600c), UINT64_C(0xcc713e7a9e159101),
UINT64_C(0xe015c040b0bcf340), UINT64_C(0xb4fcb9d2ec6c024d),
UINT64_C(0x49c73364091d115a), UINT64_C(0x1d2e4af655cde057),
UINT64_C(0x216889226cf129f1), UINT64_C(0x7581f0b03021d8fc),
UINT64_C(0x88ba7a06d550cbeb), UINT64_C(0xdc53039489803ae6),
UINT64_C(0x11ea9eba6af9ffcd), UINT64_C(0x4503e72836290ec0),
UINT64_C(0xb8386d9ed3581dd7), UINT64_C(0xecd1140c8f88ecda),
UINT64_C(0xd097d7d8b6b4257c), UINT64_C(0x847eae4aea64d471),
UINT64_C(0x794524fc0f15c766), UINT64_C(0x2dac5d6e53c5366b),
UINT64_C(0x01c8a3547d6c542a), UINT64_C(0x5521dac621bca527),
UINT64_C(0xa81a5070c4cdb630), UINT64_C(0xfcf329e2981d473d),
UINT64_C(0xc0b5ea36a1218e9b), UINT64_C(0x945c93a4fdf17f96),
UINT64_C(0x6967191218806c81), UINT64_C(0x3d8e608044509d8c),
UINT64_C(0x31aee56645d2a803), UINT64_C(0x65479cf41902590e),
UINT64_C(0x987c1642fc734a19), UINT64_C(0xcc956fd0a0a3bb14),
UINT64_C(0xf0d3ac04999f72b2), UINT64_C(0xa43ad596c54f83bf),
UINT64_C(0x59015f20203e90a8), UINT64_C(0x0de826b27cee61a5),
UINT64_C(0x218cd888524703e4), UINT64_C(0x7565a11a0e97f2e9),
UINT64_C(0x885e2bacebe6e1fe), UINT64_C(0xdcb7523eb73610f3),
UINT64_C(0xe0f191ea8e0ad955), UINT64_C(0xb418e878d2da2858),
UINT64_C(0x492362ce37ab3b4f), UINT64_C(0x1dca1b5c6b7bca42),
UINT64_C(0x5162690234af5051), UINT64_C(0x058b1090687fa15c),
UINT64_C(0xf8b09a268d0eb24b), UINT64_C(0xac59e3b4d1de4346),
UINT64_C(0x901f2060e8e28ae0), UINT64_C(0xc4f659f2b4327bed),
UINT64_C(0x39cdd344514368fa), UINT64_C(0x6d24aad60d9399f7),
UINT64_C(0x414054ec233afbb6), UINT64_C(0x15a92d7e7fea0abb),
UINT64_C(0xe892a7c89a9b19ac), UINT64_C(0xbc7bde5ac64be8a1),
UINT64_C(0x803d1d8eff772107), UINT64_C(0xd4d4641ca3a7d00a),
UINT64_C(0x29efeeaa46d6c31d), UINT64_C(0x7d0697381a063210),
UINT64_C(0x712612de1b84079f), UINT64_C(0x25cf6b4c4754f692),
UINT64_C(0xd8f4e1faa225e585), UINT64_C(0x8c1d9868fef51488),
UINT64_C(0xb05b5bbcc7c9dd2e), UINT64_C(0xe4b2222e9b192c23),
UINT64_C(0x1989a8987e683f34), UINT64_C(0x4d60d10a22b8ce39),
UINT64_C(0x61042f300c11ac78), UINT64_C(0x35ed56a250c15d75),
UINT64_C(0xc8d6dc14b5b04e62), UINT64_C(0x9c3fa586e960bf6f),
UINT64_C(0xa0796652d05c76c9), UINT64_C(0xf4901fc08c8c87c4),
UINT64_C(0x09ab957669fd94d3), UINT64_C(0x5d42ece4352d65de)
},
{
UINT64_C(0x0000000000000000), UINT64_C(0xb32e4cbe03a75f6f),
UINT64_C(0xf4843657a840a05b), UINT64_C(0x47aa7ae9abe7ff34),
UINT64_C(0x7bd0c384ff8f5e33), UINT64_C(0xc8fe8f3afc28015c),
UINT64_C(0x8f54f5d357cffe68), UINT64_C(0x3c7ab96d5468a107),
UINT64_C(0xf7a18709ff1ebc66), UINT64_C(0x448fcbb7fcb9e309),
UINT64_C(0x0325b15e575e1c3d), UINT64_C(0xb00bfde054f94352),
UINT64_C(0x8c71448d0091e255), UINT64_C(0x3f5f08330336bd3a),
UINT64_C(0x78f572daa8d1420e), UINT64_C(0xcbdb3e64ab761d61),
UINT64_C(0x7d9ba13851336649), UINT64_C(0xceb5ed8652943926),
UINT64_C(0x891f976ff973c612), UINT64_C(0x3a31dbd1fad4997d),
UINT64_C(0x064b62bcaebc387a), UINT64_C(0xb5652e02ad1b6715),
UINT64_C(0xf2cf54eb06fc9821), UINT64_C(0x41e11855055bc74e),
UINT64_C(0x8a3a2631ae2dda2f), UINT64_C(0x39146a8fad8a8540),
UINT64_C(0x7ebe1066066d7a74), UINT64_C(0xcd905cd805ca251b),
UINT64_C(0xf1eae5b551a2841c), UINT64_C(0x42c4a90b5205db73),
UINT64_C(0x056ed3e2f9e22447), UINT64_C(0xb6409f5cfa457b28),
UINT64_C(0xfb374270a266cc92), UINT64_C(0x48190ecea1c193fd),
UINT64_C(0x0fb374270a266cc9), UINT64_C(0xbc9d3899098133a6),
UINT64_C(0x80e781f45de992a1), UINT64_C(0x33c9cd4a5e4ecdce),
UINT64_C(0x7463b7a3f5a932fa), UINT64_C(0xc74dfb1df60e6d95),
UINT64_C(0x0c96c5795d7870f4), UINT64_C(0xbfb889c75edf2f9b),
UINT64_C(0xf812f32ef538d0af), UINT64_C(0x4b3cbf90f69f8fc0),
UINT64_C(0x774606fda2f72ec7), UINT64_C(0xc4684a43a15071a8),
UINT64_C(0x83c230aa0ab78e9c), UINT64_C(0x30ec7c140910d1f3),
UINT64_C(0x86ace348f355aadb), UINT64_C(0x3582aff6f0f2f5b4),
UINT64_C(0x7228d51f5b150a80), UINT64_C(0xc10699a158b255ef),
UINT64_C(0xfd7c20cc0cdaf4e8), UINT64_C(0x4e526c720f7dab87),
UINT64_C(0x09f8169ba49a54b3), UINT64_C(0xbad65a25a73d0bdc),
UINT64_C(0x710d64410c4b16bd), UINT64_C(0xc22328ff0fec49d2),
UINT64_C(0x85895216a40bb6e6), UINT64_C(0x36a71ea8a7ace989),
UINT64_C(0x0adda7c5f3c4488e), UINT64_C(0xb9f3eb7bf06317e1),
UINT64_C(0xfe5991925b84e8d5), UINT64_C(0x4d77dd2c5823b7ba),
UINT64_C(0x64b62bcaebc387a1), UINT64_C(0xd7986774e864d8ce),
UINT64_C(0x90321d9d438327fa), UINT64_C(0x231c512340247895),
UINT64_C(0x1f66e84e144cd992), UINT64_C(0xac48a4f017eb86fd),
UINT64_C(0xebe2de19bc0c79c9), UINT64_C(0x58cc92a7bfab26a6),
UINT64_C(0x9317acc314dd3bc7), UINT64_C(0x2039e07d177a64a8),
UINT64_C(0x67939a94bc9d9b9c), UINT64_C(0xd4bdd62abf3ac4f3),
UINT64_C(0xe8c76f47eb5265f4), UINT64_C(0x5be923f9e8f53a9b),
UINT64_C(0x1c4359104312c5af), UINT64_C(0xaf6d15ae40b59ac0),
UINT64_C(0x192d8af2baf0e1e8), UINT64_C(0xaa03c64cb957be87),
UINT64_C(0xeda9bca512b041b3), UINT64_C(0x5e87f01b11171edc),
UINT64_C(0x62fd4976457fbfdb), UINT64_C(0xd1d305c846d8e0b4),
UINT64_C(0x96797f21ed3f1f80), UINT64_C(0x2557339fee9840ef),
UINT64_C(0xee8c0dfb45ee5d8e), UINT64_C(0x5da24145464902e1),
UINT64_C(0x1a083bacedaefdd5), UINT64_C(0xa9267712ee09a2ba),
UINT64_C(0x955cce7fba6103bd), UINT64_C(0x267282c1b9c65cd2),
UINT64_C(0x61d8f8281221a3e6), UINT64_C(0xd2f6b4961186fc89),
UINT64_C(0x9f8169ba49a54b33), UINT64_C(0x2caf25044a02145c),
UINT64_C(0x6b055fede1e5eb68), UINT64_C(0xd82b1353e242b407),
UINT64_C(0xe451aa3eb62a1500), UINT64_C(0x577fe680b58d4a6f),
UINT64_C(0x10d59c691e6ab55b), UINT64_C(0xa3fbd0d71dcdea34),
UINT64_C(0x6820eeb3b6bbf755), UINT64_C(0xdb0ea20db51ca83a),
UINT64_C(0x9ca4d8e41efb570e), UINT64_C(0x2f8a945a1d5c0861),
UINT64_C(0x13f02d374934a966), UINT64_C(0xa0de61894a93f609),
UINT64_C(0xe7741b60e174093d), UINT64_C(0x545a57dee2d35652),
UINT64_C(0xe21ac88218962d7a), UINT64_C(0x5134843c1b317215),
UINT64_C(0x169efed5b0d68d21), UINT64_C(0xa5b0b26bb371d24e),
UINT64_C(0x99ca0b06e7197349), UINT64_C(0x2ae447b8e4be2c26),
UINT64_C(0x6d4e3d514f59d312), UINT64_C(0xde6071ef4cfe8c7d),
UINT64_C(0x15bb4f8be788911c), UINT64_C(0xa6950335e42fce73),
UINT64_C(0xe13f79dc4fc83147), UINT64_C(0x521135624c6f6e28),
UINT64_C(0x6e6b8c0f1807cf2f), UINT64_C(0xdd45c0b11ba09040),
UINT64_C(0x9aefba58b0476f74), UINT64_C(0x29c1f6e6b3e0301b),
UINT64_C(0xc96c5795d7870f42), UINT64_C(0x7a421b2bd420502d),
UINT64_C(0x3de861c27fc7af19), UINT64_C(0x8ec62d7c7c60f076),
UINT64_C(0xb2bc941128085171), UINT64_C(0x0192d8af2baf0e1e),
UINT64_C(0x4638a2468048f12a), UINT64_C(0xf516eef883efae45),
UINT64_C(0x3ecdd09c2899b324), UINT64_C(0x8de39c222b3eec4b),
UINT64_C(0xca49e6cb80d9137f), UINT64_C(0x7967aa75837e4c10),
UINT64_C(0x451d1318d716ed17), UINT64_C(0xf6335fa6d4b1b278),
UINT64_C(0xb199254f7f564d4c), UINT64_C(0x02b769f17cf11223),
UINT64_C(0xb4f7f6ad86b4690b), UINT64_C(0x07d9ba1385133664),
UINT64_C(0x4073c0fa2ef4c950), UINT64_C(0xf35d8c442d53963f),
UINT64_C(0xcf273529793b3738), UINT64_C(0x7c0979977a9c6857),
UINT64_C(0x3ba3037ed17b9763), UINT64_C(0x888d4fc0d2dcc80c),
UINT64_C(0x435671a479aad56d), UINT64_C(0xf0783d1a7a0d8a02),
UINT64_C(0xb7d247f3d1ea7536), UINT64_C(0x04fc0b4dd24d2a59),
UINT64_C(0x3886b22086258b5e), UINT64_C(0x8ba8fe9e8582d431),
UINT64_C(0xcc0284772e652b05), UINT64_C(0x7f2cc8c92dc2746a),
UINT64_C(0x325b15e575e1c3d0), UINT64_C(0x8175595b76469cbf),
UINT64_C(0xc6df23b2dda1638b), UINT64_C(0x75f16f0cde063ce4),
UINT64_C(0x498bd6618a6e9de3), UINT64_C(0xfaa59adf89c9c28c),
UINT64_C(0xbd0fe036222e3db8), UINT64_C(0x0e21ac88218962d7),
UINT64_C(0xc5fa92ec8aff7fb6), UINT64_C(0x76d4de52895820d9),
UINT64_C(0x317ea4bb22bfdfed), UINT64_C(0x8250e80521188082),
UINT64_C(0xbe2a516875702185), UINT64_C(0x0d041dd676d77eea),
UINT64_C(0x4aae673fdd3081de), UINT64_C(0xf9802b81de97deb1),
UINT64_C(0x4fc0b4dd24d2a599), UINT64_C(0xfceef8632775faf6),
UINT64_C(0xbb44828a8c9205c2), UINT64_C(0x086ace348f355aad),
UINT64_C(0x34107759db5dfbaa), UINT64_C(0x873e3be7d8faa4c5),
UINT64_C(0xc094410e731d5bf1), UINT64_C(0x73ba0db070ba049e),
UINT64_C(0xb86133d4dbcc19ff), UINT64_C(0x0b4f7f6ad86b4690),
UINT64_C(0x4ce50583738cb9a4), UINT64_C(0xffcb493d702be6cb),
UINT64_C(0xc3b1f050244347cc), UINT64_C(0x709fbcee27e418a3),
UINT64_C(0x3735c6078c03e797), UINT64_C(0x841b8ab98fa4b8f8),
UINT64_C(0xadda7c5f3c4488e3), UINT64_C(0x1ef430e13fe3d78c),
UINT64_C(0x595e4a08940428b8), UINT64_C(0xea7006b697a377d7),
UINT64_C(0xd60abfdbc3cbd6d0), UINT64_C(0x6524f365c06c89bf),
UINT64_C(0x228e898c6b8b768b), UINT64_C(0x91a0c532682c29e4),
UINT64_C(0x5a7bfb56c35a3485), UINT64_C(0xe955b7e8c0fd6bea),
UINT64_C(0xaeffcd016b1a94de), UINT64_C(0x1dd181bf68bdcbb1),
UINT64_C(0x21ab38d23cd56ab6), UINT64_C(0x9285746c3f7235d9),
UINT64_C(0xd52f0e859495caed), UINT64_C(0x6601423b97329582),
UINT64_C(0xd041dd676d77eeaa), UINT64_C(0x636f91d96ed0b1c5),
UINT64_C(0x24c5eb30c5374ef1), UINT64_C(0x97eba78ec690119e),
UINT64_C(0xab911ee392f8b099), UINT64_C(0x18bf525d915feff6),
UINT64_C(0x5f1528b43ab810c2), UINT64_C(0xec3b640a391f4fad),
UINT64_C(0x27e05a6e926952cc), UINT64_C(0x94ce16d091ce0da3),
UINT64_C(0xd3646c393a29f297), UINT64_C(0x604a2087398eadf8),
UINT64_C(0x5c3099ea6de60cff), UINT64_C(0xef1ed5546e415390),
UINT64_C(0xa8b4afbdc5a6aca4), UINT64_C(0x1b9ae303c601f3cb),
UINT64_C(0x56ed3e2f9e224471), UINT64_C(0xe5c372919d851b1e),
UINT64_C(0xa26908783662e42a), UINT64_C(0x114744c635c5bb45),
UINT64_C(0x2d3dfdab61ad1a42), UINT64_C(0x9e13b115620a452d),
UINT64_C(0xd9b9cbfcc9edba19), UINT64_C(0x6a978742ca4ae576),
UINT64_C(0xa14cb926613cf817), UINT64_C(0x1262f598629ba778),
UINT64_C(0x55c88f71c97c584c), UINT64_C(0xe6e6c3cfcadb0723),
UINT64_C(0xda9c7aa29eb3a624), UINT64_C(0x69b2361c9d14f94b),
UINT64_C(0x2e184cf536f3067f), UINT64_C(0x9d36004b35545910),
UINT64_C(0x2b769f17cf112238), UINT64_C(0x9858d3a9ccb67d57),
UINT64_C(0xdff2a94067518263), UINT64_C(0x6cdce5fe64f6dd0c),
UINT64_C(0x50a65c93309e7c0b), UINT64_C(0xe388102d33392364),
UINT64_C(0xa4226ac498dedc50), UINT64_C(0x170c267a9b79833f),
UINT64_C(0xdcd7181e300f9e5e), UINT64_C(0x6ff954a033a8c131),
UINT64_C(0x28532e49984f3e05), UINT64_C(0x9b7d62f79be8616a),
UINT64_C(0xa707db9acf80c06d), UINT64_C(0x14299724cc279f02),
UINT64_C(0x5383edcd67c06036), UINT64_C(0xe0ada17364673f59)
}
};
static const uint64_t crc64_interleaved_table[4][256] = {
{
UINT64_C(0x0000000000000000), UINT64_C(0xe88a0d0c5521de3d),
UINT64_C(0x43ccb533054da2ff), UINT64_C(0xab46b83f506c7cc2),
UINT64_C(0x87996a660a9b45fe), UINT64_C(0x6f13676a5fba9bc3),
UINT64_C(0xc455df550fd6e701), UINT64_C(0x2cdfd2595af7393c),
UINT64_C(0x9dea7be7ba389579), UINT64_C(0x756076ebef194b44),
UINT64_C(0xde26ced4bf753786), UINT64_C(0x36acc3d8ea54e9bb),
UINT64_C(0x1a731181b0a3d087), UINT64_C(0xf2f91c8de5820eba),
UINT64_C(0x59bfa4b2b5ee7278), UINT64_C(0xb135a9bee0cfac45),
UINT64_C(0xa90c58e4db7f3477), UINT64_C(0x418655e88e5eea4a),
UINT64_C(0xeac0edd7de329688), UINT64_C(0x024ae0db8b1348b5),
UINT64_C(0x2e953282d1e47189), UINT64_C(0xc61f3f8e84c5afb4),
UINT64_C(0x6d5987b1d4a9d376), UINT64_C(0x85d38abd81880d4b),
UINT64_C(0x34e623036147a10e), UINT64_C(0xdc6c2e0f34667f33),
UINT64_C(0x772a9630640a03f1), UINT64_C(0x9fa09b3c312bddcc),
UINT64_C(0xb37f49656bdce4f0), UINT64_C(0x5bf544693efd3acd),
UINT64_C(0xf0b3fc566e91460f), UINT64_C(0x1839f15a3bb09832),
UINT64_C(0xc0c01ee219f0766b), UINT64_C(0x284a13ee4cd1a856),
UINT64_C(0x830cabd11cbdd494), UINT64_C(0x6b86a6dd499c0aa9),
UINT64_C(0x47597484136b3395), UINT64_C(0xafd37988464aeda8),
UINT64_C(0x0495c1b71626916a), UINT64_C(0xec1fccbb43074f57),
UINT64_C(0x5d2a6505a3c8e312), UINT64_C(0xb5a06809f6e93d2f),
UINT64_C(0x1ee6d036a68541ed), UINT64_C(0xf66cdd3af3a49fd0),
UINT64_C(0xdab30f63a953a6ec), UINT64_C(0x3239026ffc7278d1),
UINT64_C(0x997fba50ac1e0413), UINT64_C(0x71f5b75cf93fda2e),
UINT64_C(0x69cc4606c28f421c), UINT64_C(0x81464b0a97ae9c21),
UINT64_C(0x2a00f335c7c2e0e3), UINT64_C(0xc28afe3992e33ede),
UINT64_C(0xee552c60c81407e2), UINT64_C(0x06df216c9d35d9df),
UINT64_C(0xad999953cd59a51d), UINT64_C(0x4513945f98787b20),
UINT64_C(0xf4263de178b7d765), UINT64_C(0x1cac30ed2d960958),
UINT64_C(0xb7ea88d27dfa759a), UINT64_C(0x5f6085de28dbaba7),
UINT64_C(0x73bf5787722c929b), UINT64_C(0x9b355a8b270d4ca6),
UINT64_C(0x3073e2b477613064), UINT64_C(0xd8f9efb82240ee59),
UINT64_C(0x135892ef9ceef253), UINT64_C(0xfbd29fe3c9cf2c6e),
UINT64_C(0x509427dc99a350ac), UINT64_C(0xb81e2ad0cc828e91),