Repository: RustCrypto/hashes (language: rust)

Issue:
streebog: Use const fn to generate `SHUFFLED_LIN_TABLE`
It will significantly reduce size of source code and will make it more robust.

It will require bumping MSRV, so it should be done in the next breaking release.


Discussion / hints:

Fix patch:
diff --git a/streebog/src/consts.rs b/streebog/src/consts.rs
index f6e45f3a1..e356b9fac 100644
--- a/streebog/src/consts.rs
+++ b/streebog/src/consts.rs
@@ -6,7 +6,6 @@
 pub const BLOCK_SIZE: usize = 64;
 
 /// Linear transformation matrix
-#[cfg(test)]
 pub const A: [u64; BLOCK_SIZE] = [
     0x641c314b2b8ee083,
     0xc83862965601dd1b,
@@ -75,7 +74,6 @@ pub const A: [u64; BLOCK_SIZE] = [
 ];
 
 /// Substitution table
-#[cfg(test)]
 pub const P: [u8; 256] = [
     252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, 77, 233, 119, 240, 219,
     147, 46, 153, 186, 23, 54, 241, 187, 20, 205, 95, 193, 249, 24, 101, 90, 226, 92, 239, 33, 129,
@@ -179,3 +177,27 @@ pub const C: [[u8; BLOCK_SIZE]; 12] = [
         0x67, 0xe7, 0x8e, 0x37,
     ],
 ];
+
+/// Precomputed, pre-shuffled table for linear transformation using matrix
+/// `const::A` and shuffled using `const::P`
+pub const SHUFFLED_LIN_TABLE: [[u64; 256]; 8] = {
+    let mut table = [[0u64; 256]; 8];
+    let mut i = 0;
+    while i < 8 {
+        let mut j = 0;
+        while j < 256 {
+            let mut accum = 0u64;
+            let mut k = 0;
+            while k < 8 {
+                if P[j] & (1u8 << k) != 0 {
+                    accum ^= A[8 * i + k];
+                }
+                k += 1;
+            }
+            table[i][j] = accum;
+            j += 1;
+        }
+        i += 1;
+    }
+    table
+};
diff --git a/streebog/src/core_api.rs b/streebog/src/core_api.rs
index b36c655b5..50adfc1b5 100644
--- a/streebog/src/core_api.rs
+++ b/streebog/src/core_api.rs
@@ -9,8 +9,7 @@ use digest::{
     HashMarker, InvalidOutputSize, Output,
 };
 
-use crate::consts::{BLOCK_SIZE, C};
-use crate::table::SHUFFLED_LIN_TABLE;
+use crate::consts::{BLOCK_SIZE, C, SHUFFLED_LIN_TABLE};
 
 type Block = [u8; 64];
 
diff --git a/streebog/src/lib.rs b/streebog/src/lib.rs
index 6da989be5..26ab42235 100644
--- a/streebog/src/lib.rs
+++ b/streebog/src/lib.rs
@@ -20,7 +20,6 @@ use digest::{
 
 mod consts;
 mod core_api;
-mod table;
 
 pub use core_api::StreebogVarCore;
 pub use digest::{self, Digest};
diff --git a/streebog/src/table.rs b/streebog/src/table.rs
deleted file mode 100644
index f47eb6133..000000000
--- a/streebog/src/table.rs
+++ /dev/null
@@ -1,2106 +0,0 @@
-//! Precomputed, pre-shuffled table for linear transformation using matrix
-//! `const::A` and shuffled using `const::P`
-//!
-//! It was created using `gen_table` function
-
-#![allow(clippy::unreadable_literal)]
-
-pub const SHUFFLED_LIN_TABLE: [[u64; 256]; 8] = [
-    [
-        0xD01F715B5C7EF8E6,
-        0x16FA240980778325,
-        0xA8A42E857EE049C8,
-        0x6AC1068FA186465B,
-        0x6E417BD7A2E9320B,
-        0x665C8167A437DAAB,
-        0x7666681AA89617F6,
-        0x4B959163700BDCF5,
-        0xF14BE6B78DF36248,
-        0xC585BD689A625CFF,
-        0x9557D7FCA67D82CB,
-        0x89F0B969AF6DD366,
-        0xB0833D48749F6C35,
-        0xA1998C23B1ECBC7C,
-        0x8D70C431AC02A736,
-        0xD6DFBC2FD0A8B69E,
-        0x37AEB3E551FA198B,
-        0x0B7D128A40B5CF9C,
-        0x5A8F2008B5780CBC,
-        0xEDEC882284E333E5,
-        0xD25FC177D3C7C2CE,
-        0x5E0F5D50B61778EC,
-        0x1D873683C0C24CB9,
-        0xAD040BCBB45D208C,
-        0x2F89A0285B853C76,
-        0x5732FFF6791B8D58,
-        0x3E9311439EF6EC3F,
-        0xC9183A809FD3C00F,
-        0x83ADF3F5260A01EE,
-        0xA6791941F4E8EF10,
-        0x103AE97D0CA1CD5D,
-        0x2CE948121DEE1B4A,
-        0x39738421DBF2BF53,
-        0x093DA2A6CF0CF5B4,
-        0xCD9847D89CBCB45F,
-        0xF9561C078B2D8AE8,
-        0x9C6A755A6971777F,
-        0xBC1EBAA0712EF0C5,
-        0x72E61542ABF963A6,
-        0x78BB5FDE229EB12E,
-        0x14BA94250FCEB90D,
-        0x844D6697630E5282,
-        0x98EA08026A1E032F,
-        0xF06BBEA144217F5C,
-        0xDB6263D11CCB377A,
-        0x641C314B2B8EE083,
-        0x320E96AB9B4770CF,
-        0x1EE7DEB986A96B85,
-        0xE96CF57A878C47B5,
-        0xFDD6615F8842FEB8,
-        0xC83862965601DD1B,
-        0x2EA9F83E92572162,
-        0xF876441142FF97FC,
-        0xEB2C455608357D9D,
-        0x5612A7E0B0C9904C,
-        0x6C01CBFB2D500823,
-        0x4548A6A7FA037A2D,
-        0xABC4C6BF388B6EF4,
-        0xBADE77D4FDF8BEBD,
-        0x799B07C8EB4CAC3A,
-        0x0C9D87E805B19CF0,
-        0xCB588AAC106AFA27,
-        0xEA0C1D40C1E76089,
-        0x2869354A1E816F1A,
-        0xFF96D17307FBC490,
-        0x9F0A9D602F1A5043,
-        0x96373FC6E016A5F7,
-        0x5292DAB8B3A6E41C,
-        0x9B8AE0382C752413,
-        0x4F15EC3B7364A8A5,
-        0x3FB349555724F12B,
-        0xC7C50D4415DB66D7,
-        0x92B7429EE379D1A7,
-        0xD37F99611A15DFDA,
-        0x231427C05E34A086,
-        0xA439A96D7B51D538,
-        0xB403401077F01865,
-        0xDDA2AEA5901D7902,
-        0x0A5D4A9C8967D288,
-        0xC265280ADF660F93,
-        0x8BB0094520D4E94E,
-        0x2A29856691385532,
-        0x42A833C5BF072941,
-        0x73C64D54622B7EB2,
-        0x07E095624504536C,
-        0x8A905153E906F45A,
-        0x6F6123C16B3B2F1F,
-        0xC6E55552DC097BC3,
-        0x4468FEB133D16739,
-        0xE211E7F0C7398829,
-        0xA2F96419F7879B40,
-        0x19074BDBC3AD38E9,
-        0xF4EBC3F9474E0B0C,
-        0x43886BD376D53455,
-        0xD8028BEB5AA01046,
-        0x51F23282F5CDC320,
-        0xE7B1C2BE0D84E16D,
-        0x081DFAB006DEE8A0,
-        0x3B33340D544B857B,
-        0x7F5BCABC679AE242,
-        0x0EDD37C48A08A6D8,
-        0x81ED43D9A9B33BC6,
-        0xB1A3655EBD4D7121,
-        0x69A1EEB5E7ED6167,
-        0xF6AB73D5C8F73124,
-        0x1A67A3E185C61FD5,
-        0x2DC91004D43C065E,
-        0x0240B02C8FB93A28,
-        0x90F7F2B26CC0EB8F,
-        0x3CD3A16F114FD617,
-        0xAAE49EA9F15973E0,
-        0x06C0CD748CD64E78,
-        0xDA423BC7D5192A6E,
-        0xC345701C16B41287,
-        0x6D2193EDE4821537,
-        0xFCF639494190E3AC,
-        0x7C3B228621F1C57E,
-        0xFB16AC2B0494B0C0,
-        0xBF7E529A3745D7F9,
-        0x6881B6A32E3F7C73,
-        0xCA78D2BAD9B8E733,
-        0xBBFE2FC2342AA3A9,
-        0x0DBDDFFECC6381E4,
-        0x70A6A56E2440598E,
-        0xE4D12A844BEFC651,
-        0x8C509C2765D0BA22,
-        0xEE8C6018C28814D9,
-        0x17DA7C1F49A59E31,
-        0x609C4C1328E194D3,
-        0xB3E3D57232F44B09,
-        0x91D7AAA4A512F69B,
-        0x0FFD6FD243DABBCC,
-        0x50D26A943C1FDE34,
-        0x6BE15E9968545B4F,
-        0x94778FEA6FAF9FDF,
-        0x2B09DD7058EA4826,
-        0x677CD9716DE5C7BF,
-        0x49D5214FFFB2E6DD,
-        0x0360E83A466B273C,
-        0x1FC786AF4F7B7691,
-        0xA0B9D435783EA168,
-        0xD49F0C035F118CB6,
-        0x01205816C9D21D14,
-        0xAC2453DD7D8F3D98,
-        0x545217CC3F70AA64,
-        0x26B4028E9489C9C2,
-        0xDEC2469FD6765E3E,
-        0x04807D58036F7450,
-        0xE5F17292823DDB45,
-        0xF30B569B024A5860,
-        0x62DCFC3FA758AEFB,
-        0xE84CAD6C4E5E5AA1,
-        0xCCB81FCE556EA94B,
-        0x53B282AE7A74F908,
-        0x1B47FBF74C1402C1,
-        0x368EEBF39828049F,
-        0x7AFBEFF2AD278B06,
-        0xBE5E0A8CFE97CAED,
-        0xCFD8F7F413058E77,
-        0xF78B2BC301252C30,
-        0x4D555C17FCDD928D,
-        0x5F2F05467FC565F8,
-        0x24F4B2A21B30F3EA,
-        0x860DD6BBECB768AA,
-        0x4C750401350F8F99,
-        0x0000000000000000,
-        0xECCCD0344D312EF1,
-        0xB5231806BE220571,
-        0xC105C030990D28AF,
-        0x653C695DE25CFD97,
-        0x159ACC33C61CA419,
-        0xB89EC7F872418495,
-        0xA9847693B73254DC,
-        0x58CF90243AC13694,
-        0x59EFC832F3132B80,
-        0x5C4FED7C39AE42C4,
-        0x828DABE3EFD81CFA,
-        0xD13F294D95ACE5F2,
-        0x7D1B7A90E823D86A,
-        0xB643F03CF849224D,
-        0x3DF3F979D89DCB03,
-        0x7426D836272F2DDE,
-        0xDFE21E891FA4432A,
-        0x3A136C1B9D99986F,
-        0xFA36F43DCD46ADD4,
-        0xC025982650DF35BB,
-        0x856D3E81AADC4F96,
-        0xC4A5E57E53B041EB,
-        0x4708168B75BA4005,
-        0xAF44BBE73BE41AA4,
-        0x971767D029C4B8E3,
-        0xB9BE9FEEBB939981,
-        0x215497ECD18D9AAE,
-        0x316E7E91DD2C57F3,
-        0xCEF8AFE2DAD79363,
-        0x3853DC371220A247,
-        0x35EE03C9DE4323A3,
-        0xE6919AA8C456FC79,
-        0xE05157DC4880B201,
-        0x7BDBB7E464F59612,
-        0x127A59518318F775,
-        0x332ECEBD52956DDB,
-        0x8F30741D23BB9D1E,
-        0xD922D3FD93720D52,
-        0x7746300C61440AE2,
-        0x25D4EAB4D2E2EEFE,
-        0x75068020EEFD30CA,
-        0x135A01474ACAEA61,
-        0x304E268714FE4AE7,
-        0xA519F17BB283C82C,
-        0xDC82F6B359CF6416,
-        0x5BAF781E7CAA11A8,
-        0xB2C38D64FB26561D,
-        0x34CE5BDF17913EB7,
-        0x5D6FB56AF07C5FD0,
-        0x182713CD0A7F25FD,
-        0x9E2AC576E6C84D57,
-        0x9AAAB82EE5A73907,
-        0xA3D93C0F3E558654,
-        0x7E7B92AAAE48FF56,
-        0x872D8EAD256575BE,
-        0x41C8DBFFF96C0E7D,
-        0x99CA5014A3CC1E3B,
-        0x40E883E930BE1369,
-        0x1CA76E95091051AD,
-        0x4E35B42DBAB6B5B1,
-        0x05A0254ECABD6944,
-        0xE1710FCA8152AF15,
-        0xF22B0E8DCB984574,
-        0xB763A82A319B3F59,
-        0x63FCA4296E8AB3EF,
-        0x9D4A2D4CA0A36A6B,
-        0xE331BFE60EEB953D,
-        0xD5BF541596C391A2,
-        0xF5CB9BEF8E9C1618,
-        0x46284E9DBC685D11,
-        0x2074CFFA185F87BA,
-        0xBD3EE2B6B8FCEDD1,
-        0xAE64E3F1F23607B0,
-        0xFEB68965CE29D984,
-        0x55724FDAF6A2B770,
-        0x29496D5CD753720E,
-        0xA75941573D3AF204,
-        0x8E102C0BEA69800A,
-        0x111AB16BC573D049,
-        0xD7FFE439197AAB8A,
-        0xEFAC380E0B5A09CD,
-        0x48F579593660FBC9,
-        0x22347FD697E6BD92,
-        0x61BC1405E13389C7,
-        0x4AB5C975B9D9C1E1,
-        0x80CD1BCF606126D2,
-        0x7186FD78ED92449A,
-        0x93971A882AABCCB3,
-        0x88D0E17F66BFCE72,
-        0x27945A985D5BD4D6,
-    ],
-    [
-        0xDE553F8C05A811C8,
-        0x1906B59631B4F565,
-        0x436E70D6B1964FF7,
-        0x36D343CB8B1E9D85,
-        0x843DFACC858AAB5A,
-        0xFDFC95C299BFC7F9,
-        0x0F634BDEA1D51FA2,
-        0x6D458B3B76EFB3CD,
-        0x85C3F77CF8593F80,
-        0x3C91315FBE737CB2,
-        0x2148B03366ACE398,
-        0x18F8B8264C6761BF,
-        0xC830C1C495C9FB0F,
-        0x981A76102086A0AA,
-        0xAA16012142F35760,
-        0x35CC54060C763CF6,
-        0x42907D66CC45DB2D,
-        0x8203D44B965AF4BC,
-        0x3D6F3CEFC3A0E868,
-        0xBC73FF69D292BDA7,
-        0x8722ED0102E20A29,
-        0x8F8185E8CD34DEB7,
-        0x9B0561DDA7EE01D9,
-        0x5335A0193227FAD6,
-        0xC9CECC74E81A6FD5,
-        0x54F5832E5C2431EA,
-        0x99E47BA05D553470,
-        0xF7BEE756ACD226CE,
-        0x384E05A5571816FD,
-        0xD1367452A47D0E6A,
-        0xF29FDE1C386AD85B,
-        0x320C77316275F7CA,
-        0xD0C879E2D9AE9AB0,
-        0xDB7406C69110EF5D,
-        0x45505E51A2461011,
-        0xFC029872E46C5323,
-        0xFA3CB6F5F7BC0CC5,
-        0x031F17CD8768A173,
-        0xBD8DF2D9AF41297D,
-        0x9D3B4F5AB43E5E3F,
-        0x4071671B36FEEE84,
-        0x716207E7D3E3B83D,
-        0x48D20FF2F9283A1A,
-        0x27769EB4757CBC7E,
-        0x5C56EBC793F2E574,
-        0xA48B474F9EF5DC18,
-        0x52CBADA94FF46E0C,
-        0x60C7DA982D8199C6,
-        0x0E9D466EDC068B78,
-        0x4EEC2175EAF865FC,
-        0x550B8E9E21F7A530,
-        0x6B7BA5BC653FEC2B,
-        0x5EB7F1BA6949D0DD,
-        0x57EA94E3DB4C9099,
-        0xF640EAE6D101B214,
-        0xDD4A284182C0B0BB,
-        0xFF1D8FBF6304F250,
-        0xB8ACCB933BF9D7E8,
-        0xE8867C478EB68C4D,
-        0x3F8E2692391BDDC1,
-        0xCB2FD60912A15A7C,
-        0xAEC935DBAB983D2F,
-        0xF55FFD2B56691367,
-        0x80E2CE366CE1C115,
-        0x179BF3F8EDB27E1D,
-        0x01FE0DB07DD394DA,
-        0xDA8A0B76ECC37B87,
-        0x44AE53E1DF9584CB,
-        0xB310B4B77347A205,
-        0xDFAB323C787B8512,
-        0x3B511268D070B78E,
-        0x65E6E3D2B9396753,
-        0x6864B271E2574D58,
-        0x259784C98FC789D7,
-        0x02E11A7DFABB35A9,
-        0x8841A6DFA337158B,
-        0x7ADE78C39B5DCDD0,
-        0xB7CF804D9A2CC84A,
-        0x20B6BD831B7F7742,
-        0x75BD331D3A88D272,
-        0x418F6AAB4B2D7A5E,
-        0xD9951CBB6BABDAF4,
-        0xB6318DFDE7FF5C90,
-        0x1F389B112264AA83,
-        0x492C024284FBAEC0,
-        0xE33A0363C608F9A0,
-        0x2688930408AF28A4,
-        0xC7538A1A341CE4AD,
-        0x5DA8E677EE2171AE,
-        0x8C9E92254A5C7FC4,
-        0x63D8CD55AAE938B5,
-        0x29EBD8DAA97A3706,
-        0x959827B37BE88AA1,
-        0x1484E4356ADADF6E,
-        0xA7945082199D7D6B,
-        0xBF6CE8A455FA1CD4,
-        0x9CC542EAC9EDCAE5,
-        0x79C16F0E1C356CA3,
-        0x89BFAB6FDEE48151,
-        0xD4174D1830C5F0FF,
-        0x9258048415EB419D,
-        0x6139D72850520D1C,
-        0x6A85A80C18EC78F1,
-        0xCD11F88E0171059A,
-        0xCCEFF53E7CA29140,
-        0xD229639F2315AF19,
-        0x90B91EF9EF507434,
-        0x5977D28D074A1BE1,
-        0x311360FCE51D56B9,
-        0xC093A92D5A1F2F91,
-        0x1A19A25BB6DC5416,
-        0xEB996B8A09DE2D3E,
-        0xFEE3820F1ED7668A,
-        0xD7085AD5B7AD518C,
-        0x7FFF41890FE53345,
-        0xEC5948BD67DDE602,
-        0x2FD5F65DBAAA68E0,
-        0xA5754AFFE32648C2,
-        0xF8DDAC880D07396C,
-        0x6FA491468C548664,
-        0x0C7C5C1326BDBED1,
-        0x4A33158F03930FB3,
-        0x699ABFC19F84D982,
-        0xE4FA2054A80B329C,
-        0x6707F9AF438252FA,
-        0x08A368E9CFD6D49E,
-        0x47B1442C58FD25B8,
-        0xBBB3DC5EBC91769B,
-        0x1665FE489061EAC7,
-        0x33F27A811FA66310,
-        0x93A609346838D547,
-        0x30ED6D4C98CEC263,
-        0x1DD9816CD8DF9F2A,
-        0x94662A03063B1E7B,
-        0x83FDD9FBEB896066,
-        0x7B207573E68E590A,
-        0x5F49FC0A149A4407,
-        0x343259B671A5A82C,
-        0xFBC2BB458A6F981F,
-        0xC272B350A0A41A38,
-        0x3AAF1FD8ADA32354,
-        0x6CBB868B0B3C2717,
-        0xA2B569C88D2583FE,
-        0xF180C9D1BF027928,
-        0xAF37386BD64BA9F5,
-        0x12BACAB2790A8088,
-        0x4C0D3B0810435055,
-        0xB2EEB9070E9436DF,
-        0xC5B29067CEA7D104,
-        0xDCB425F1FF132461,
-        0x4F122CC5972BF126,
-        0xAC282FA651230886,
-        0xE7E537992F6393EF,
-        0xE61B3A2952B00735,
-        0x709C0A57AE302CE7,
-        0xE02514AE416058D3,
-        0xC44C9DD7B37445DE,
-        0x5A68C5408022BA92,
-        0x1C278CDCA50C0BF0,
-        0x6E5A9CF6F18712BE,
-        0x86DCE0B17F319EF3,
-        0x2D34EC2040115D49,
-        0x4BCD183F7E409B69,
-        0x2815D56AD4A9A3DC,
-        0x24698979F2141D0D,
-        0x0000000000000000,
-        0x1EC696A15FB73E59,
-        0xD86B110B16784E2E,
-        0x8E7F8858B0E74A6D,
-        0x063E2E8713D05FE6,
-        0xE2C40ED3BBDB6D7A,
-        0xB1F1AECA89FC97AC,
-        0xE1DB191E3CB3CC09,
-        0x6418EE62C4EAF389,
-        0xC6AD87AA49CF7077,
-        0xD6F65765CA7EC556,
-        0x9AFB6C6DDA3D9503,
-        0x7CE05644888D9236,
-        0x8D609F95378FEB1E,
-        0x23A9AA4E9C17D631,
-        0x6226C0E5D73AAC6F,
-        0x56149953A69F0443,
-        0xEEB852C09D66D3AB,
-        0x2B0AC2A753C102AF,
-        0x07C023376E03CB3C,
-        0x2CCAE1903DC2C993,
-        0xD3D76E2F5EC63BC3,
-        0x9E2458973356FF4C,
-        0xA66A5D32644EE9B1,
-        0x0A427294356DE137,
-        0x783F62BE61E6F879,
-        0x1344C70204D91452,
-        0x5B96C8F0FDF12E48,
-        0xA90916ECC59BF613,
-        0xBE92E5142829880E,
-        0x727D102A548B194E,
-        0x1BE7AFEBCB0FC0CC,
-        0x3E702B2244C8491B,
-        0xD5E940A84D166425,
-        0x66F9F41F3E51C620,
-        0xABE80C913F20C3BA,
-        0xF07EC461C2D1EDF2,
-        0xF361D3AC45B94C81,
-        0x0521394A94B8FE95,
-        0xADD622162CF09C5C,
-        0xE97871F7F3651897,
-        0xF4A1F09B2BBA87BD,
-        0x095D6559B2054044,
-        0x0BBC7F2448BE75ED,
-        0x2AF4CF172E129675,
-        0x157AE98517094BB4,
-        0x9FDA55274E856B96,
-        0x914713499283E0EE,
-        0xB952C623462A4332,
-        0x74433EAD475B46A8,
-        0x8B5EB112245FB4F8,
-        0xA34B6478F0F61724,
-        0x11A5DD7FFE6221FB,
-        0xC16DA49D27CCBB4B,
-        0x76A224D0BDE07301,
-        0x8AA0BCA2598C2022,
-        0x4DF336B86D90C48F,
-        0xEA67663A740DB9E4,
-        0xEF465F70E0B54771,
-        0x39B008152ACB8227,
-        0x7D1E5BF4F55E06EC,
-        0x105BD0CF83B1B521,
-        0x775C2960C033E7DB,
-        0x7E014C397236A79F,
-        0x811CC386113255CF,
-        0xEDA7450D1A0E72D8,
-        0x5889DF3D7A998F3B,
-        0x2E2BFBEDC779FC3A,
-        0xCE0EEF438619A4E9,
-        0x372D4E7BF6CD095F,
-        0x04DF34FAE96B6A4F,
-        0xF923A13870D4ADB6,
-        0xA1AA7E050A4D228D,
-        0xA8F71B5CB84862C9,
-        0xB52E9A306097FDE3,
-        0x0D8251A35B6E2A0B,
-        0x2257A7FEE1C442EB,
-        0x73831D9A29588D94,
-        0x51D4BA64C89CCF7F,
-        0x502AB7D4B54F5BA5,
-        0x97793DCE8153BF08,
-        0xE5042DE4D5D8A646,
-        0x9687307EFC802BD2,
-        0xA05473B5779EB657,
-        0xB4D097801D446939,
-        0xCFF0E2F3FBCA3033,
-        0xC38CBEE0DD778EE2,
-        0x464F499C252EB162,
-        0xCAD1DBB96F72CEA6,
-        0xBA4DD1EEC142E241,
-        0xB00FA37AF42F0376,
-    ],
-    [
-        0xCCE4CD3AA968B245,
-        0x089D5484E80B7FAF,
-        0x638246C1B3548304,
-        0xD2FE0EC8C2355492,
-        0xA7FBDF7FF2374EEE,
-        0x4DF1600C92337A16,
-        0x84E503EA523B12FB,
-        0x0790BBFD53AB0C4A,
-        0x198A780F38F6EA9D,
-        0x2AB30C8F55EC48CB,
-        0xE0F7FED6B2C49DB5,
-        0xB6ECF3F422CADBDC,
-        0x409C9A541358DF11,
-        0xD3CE8A56DFDE3FE3,
-        0xC3E9224312C8C1A0,
-        0x0D6DFA58816BA507,
-        0xDDF3E1B179952777,
-        0x04C02A42748BB1D9,
-        0x94C2ABFF9F2DECB8,
-        0x4F91752DA8F8ACF4,
-        0x78682BEFB169BF7B,
-        0xE1C77A48AF2FF6C4,
-        0x0C5D7EC69C80CE76,
-        0x4CC1E4928FD81167,
-        0xFEED3D24D9997B62,
-        0x518BB6DFC3A54A23,
-        0x6DBF2D26151F9B90,
-        0xB5BC624B05EA664F,
-        0xE86AAA525ACFE21A,
-        0x4801CED0FB53A0BE,
-        0xC91463E6C00868ED,
-        0x1027A815CD16FE43,
-        0xF67069A0319204CD,
-        0xB04CCC976C8ABCE7,
-        0xC0B9B3FC35E87C33,
-        0xF380C77C58F2DE65,
-        0x50BB3241DE4E2152,
-        0xDF93F490435EF195,
-        0xF1E0D25D62390887,
-        0xAF668BFB1A3C3141,
-        0xBC11B251F00A7291,
-        0x73A5EED47E427D47,
-        0x25BEE3F6EE4C3B2E,
-        0x43CC0BEB34786282,
-        0xC824E778DDE3039C,
-        0xF97D86D98A327728,
-        0xF2B043E24519B514,
-        0xE297EBF7880F4B57,
-        0x3A94A49A98FAB688,
-        0x868516CB68F0C419,
-        0xEFFA11AF0964EE50,
-        0xA4AB4EC0D517F37D,
-        0xA9C6B498547C567A,
-        0x8E18424F80FBBBB6,
-        0x0BCDC53BCF2BC23C,
-        0x137739AAEA3643D0,
-        0x2C1333EC1BAC2FF0,
-        0x8D48D3F0A7DB0625,
-        0x1E1AC3F26B5DE6D7,
-        0xF520F81F16B2B95E,
-        0x9F0F6EC450062E84,
-        0x0130849E1DEB6B71,
-        0xD45E31AB8C7533A9,
-        0x652279A2FD14E43F,
-        0x3209F01E70F1C927,
-        0xBE71A770CAC1A473,
-        0x0E3D6BE7A64B1894,
-        0x7EC8148CFF29D840,
-        0xCB7476C7FAC3BE0F,
-        0x72956A4A63A91636,
-        0x37F95EC21991138F,
-        0x9E3FEA5A4DED45F5,
-        0x7B38BA50964902E8,
-        0x222E580BBDE73764,
-        0x61E253E0899F55E6,
-        0xFC8D2805E352AD80,
-        0x35994BE3235AC56D,
-        0x09ADD01AF5E014DE,
-        0x5E8659A6780539C6,
-        0xB17C48097161D796,
-        0x026015213ACBD6E2,
-        0xD1AE9F77E515E901,
-        0xB7DC776A3F21B0AD,
-        0xABA6A1B96EB78098,
-        0x9BCF4486248D9F5D,
-        0x582666C536455EFD,
-        0xFDBDAC9BFEB9C6F1,
-        0xC47999BE4163CDEA,
-        0x765540081722A7EF,
-        0x3E548ED8EC710751,
-        0x3D041F67CB51BAC2,
-        0x7958AF71AC82D40A,
-        0x36C9DA5C047A78FE,
-        0xED9A048E33AF38B2,
-        0x26EE7249C96C86BD,
-        0x900281BDEBA65D61,
-        0x11172C8BD0FD9532,
-        0xEA0ABF73600434F8,
-        0x42FC8F75299309F3,
-        0x34A9CF7D3EB1AE1C,
-        0x2B838811480723BA,
-        0x5CE64C8742CEEF24,
-        0x1ADAE9B01FD6570E,
-        0x3C349BF9D6BAD1B3,
-        0x82453C891C7B75C0,
-        0x97923A40B80D512B,
-        0x4A61DBF1C198765C,
-        0xB48CE6D518010D3E,
-        0xCFB45C858E480FD6,
-        0xD933CBF30D1E96AE,
-        0xD70EA014AB558E3A,
-        0xC189376228031742,
-        0x9262949CD16D8B83,
-        0xEB3A3BED7DEF5F89,
-        0x49314A4EE6B8CBCF,
-        0xDCC3652F647E4C06,
-        0xDA635A4C2A3E2B3D,
-        0x470C21A940F3D35B,
-        0x315961A157D174B4,
-        0x6672E81DDA3459AC,
-        0x5B76F77A1165E36E,
-        0x445CB01667D36EC8,
-        0xC5491D205C88A69B,
-        0x456C34887A3805B9,
-        0xFFDDB9BAC4721013,
-        0x99AF51A71E4649BF,
-        0xA15BE01CBC7729D5,
-        0x52DB2760E485F7B0,
-        0x8C78576EBA306D54,
-        0xAE560F6507D75A30,
-        0x95F22F6182C687C9,
-        0x71C5FBF54489ABA5,
-        0xCA44F259E728D57E,
-        0x88B87D2CCEBBDC8D,
-        0xBAB18D32BE4A15AA,
-        0x8BE8EC93E99B611E,
-        0x17B713E89EBDF209,
-        0xB31C5D284BAA0174,
-        0xEECA9531148F8521,
-        0xB8D198138481C348,
-        0x8988F9B2D350B7FC,
-        0xB9E11C8D996AA839,
-        0x5A4673E40C8E881F,
-        0x1687977683569978,
-        0xBF4123EED72ACF02,
-        0x4EA1F1B3B513C785,
-        0xE767452BE16F91FF,
-        0x7505D1B730021A7C,
-        0xA59BCA5EC8FC980C,
-        0xAD069EDA20F7E7A3,
-        0x38F4B1BBA231606A,
-        0x60D2D77E94743E97,
-        0x9AFFC0183966F42C,
-        0x248E6768F3A7505F,
-        0xCDD449A4B483D934,
-        0x87B59255751BAF68,
-        0x1BEA6D2E023D3C7F,
-        0x6B1F12455B5FFCAB,
-        0x743555292DE9710D,
-        0xD8034F6D10F5FDDF,
-        0xC6198C9F7BA81B08,
-        0xBB8109ACA3A17EDB,
-        0xFA2D1766AD12CABB,
-        0xC729080166437079,
-        0x9C5FFF7B77269317,
-        0x0000000000000000,
-        0x15D706C9A47624EB,
-        0x6FDF38072FD44D72,
-        0x5FB6DD3865EE52B7,
-        0xA33BF53D86BCFF37,
-        0xE657C1B5FC84FA8E,
-        0xAA962527735CEBE9,
-        0x39C43525BFDA0B1B,
-        0x204E4D2A872CE186,
-        0x7A083ECE8BA26999,
-        0x554B9C9DB72EFBFA,
-        0xB22CD9B656416A05,
-        0x96A2BEDEA5E63A5A,
-        0x802529A826B0A322,
-        0x8115AD363B5BC853,
-        0x8375B81701901EB1,
-        0x3069E53F4A3A1FC5,
-        0xBD2136CFEDE119E0,
-        0x18BAFC91251D81EC,
-        0x1D4A524D4C7D5B44,
-        0x05F0AEDC6960DAA8,
-        0x29E39D3072CCF558,
-        0x70F57F6B5962C0D4,
-        0x989FD53903AD22CE,
-        0xF84D024797D91C59,
-        0x547B1803AAC5908B,
-        0xF0D056C37FD263F6,
-        0xD56EB535919E58D8,
-        0x1C7AD6D351963035,
-        0x2E7326CD2167F912,
-        0xAC361A443D1C8CD2,
-        0x697F076461942A49,
-        0x4B515F6FDC731D2D,
-        0x8AD8680DF4700A6F,
-        0x41AC1ECA0EB3B460,
-        0x7D988533D80965D3,
-        0xA8F6300649973D0B,
-        0x7765C4960AC9CC9E,
-        0x7CA801ADC5E20EA2,
-        0xDEA3700E5EB59AE4,
-        0xA06B6482A19C42A4,
-        0x6A2F96DB46B497DA,
-        0x27DEF6D7D487EDCC,
-        0x463CA5375D18B82A,
-        0xA6CB5BE1EFDC259F,
-        0x53EBA3FEF96E9CC1,
-        0xCE84D81B93A364A7,
-        0xF4107C810B59D22F,
-        0x333974806D1AA256,
-        0x0F0DEF79BBA073E5,
-        0x231EDC95A00C5C15,
-        0xE437D494C64F2C6C,
-        0x91320523F64D3610,
-        0x67426C83C7DF32DD,
-        0x6EEFBC99323F2603,
-        0x9D6F7BE56ACDF866,
-        0x5916E25B2BAE358C,
-        0x7FF89012E2C2B331,
-        0x035091BF2720BD93,
-        0x561B0D22900E4669,
-        0x28D319AE6F279E29,
-        0x2F43A2533C8C9263,
-        0xD09E1BE9F8FE8270,
-        0xF740ED3E2C796FBC,
-        0xDB53DED237D5404C,
-        0x62B2C25FAEBFE875,
-        0x0AFD41A5D2C0A94D,
-        0x6412FD3CE0FF8F4E,
-        0xE3A76F6995E42026,
-        0x6C8FA9B808F4F0E1,
-        0xC2D9A6DD0F23AAD1,
-        0x8F28C6D19D10D0C7,
-        0x85D587744FD0798A,
-        0xA20B71A39B579446,
-        0x684F83FA7C7F4138,
-        0xE507500ADBA4471D,
-        0x3F640A46F19A6C20,
-        0x1247BD34F7DD28A1,
-        0x2D23B77206474481,
-        0x93521002CC86E0F2,
-        0x572B89BC8DE52D18,
-        0xFB1D93F8B0F9A1CA,
-        0xE95A2ECC4724896B,
-        0x3BA420048511DDF9,
-        0xD63E248AB6BEE54B,
-        0x5DD6C8195F258455,
-        0x06A03F634E40673B,
-        0x1F2A476C76B68DA6,
-        0x217EC9B49AC78AF7,
-        0xECAA80102E4453C3,
-        0x14E78257B99D4F9A,
-    ],
-    [
-        0x20329B2CC87BBA05,
-        0x4F5EB6F86546A531,
-        0xD4F44775F751B6B1,
-        0x8266A47B850DFA8B,
-        0xBB986AA15A6CA985,
-        0xC979EB08F9AE0F99,
-        0x2DA6F447A2375EA1,
-        0x1E74275DCD7D8576,
-        0xBC20180A800BC5F8,
-        0xB4A2F701B2DC65BE,
-        0xE726946F981B6D66,
-        0x48E6C453BF21C94C,
-        0x42CAD9930F0A4195,
-        0xEFA47B64AACCCD20,
-        0x71180A8960409A42,
-        0x8BB3329BF6A44E0C,
-        0xD34C35DE2D36DACC,
-        0xA92F5B7CBC23DC96,
-        0xB31A85AA68BB09C3,
-        0x13E04836A73161D2,
-        0xB24DFC4129C51D02,
-        0x8AE44B70B7DA5ACD,
-        0xE671ED84D96579A7,
-        0xA4BB3417D66F3832,
-        0x4572AB38D56D2DE8,
-        0xB1B47761EA47215C,
-        0xE81C09CF70ABA15D,
-        0xFFBDB872CE7F90AC,
-        0xA8782297FD5DC857,
-        0x0D946F6B6A4CE4A4,
-        0xE4DF1F4F5B995138,
-        0x9EBC71EDCA8C5762,
-        0x0A2C1DC0B02B88D9,
-        0x3B503C115D9D7B91,
-        0xC64376A8111EC3A2,
-        0xCEC199A323C963E4,
-        0xDC76A87EC58616F7,
-        0x09D596E073A9B487,
-        0x14583A9D7D560DAF,
-        0xF4C6DC593F2A0CB4,
-        0xDD21D19584F80236,
-        0x4A4836983DDDE1D3,
-        0xE58866A41AE745F9,
-        0xF591A5B27E541875,
-        0x891DC05074586693,
-        0x5B068C651810A89E,
-        0xA30346BC0C08544F,
-        0x3DBF3751C684032D,
-        0x2A1E86EC785032DC,
-        0xF73F5779FCA830EA,
-        0xB60C05CA30204D21,
-        0x0CC316802B32F065,
-        0x8770241BDD96BE69,
-        0xB861E18199EE95DB,
-        0xF805CAD91418FCD1,
-        0x29E70DCCBBD20E82,
-        0xC7140F435060D763,
-        0x0F3A9DA0E8B0CC3B,
-        0xA2543F574D76408E,
-        0xBD7761E1C175D139,
-        0x4B1F4F737CA3F512,
-        0x6DC2DF1F2FC137AB,
-        0xF1D05C3967B14856,
-        0xA742BF3715ED046C,
-        0x654030141D1697ED,
-        0x07B872ABDA676C7D,
-        0x3CE84EBA87FA17EC,
-        0xC1FB0403CB79AFDF,
-        0x3E46BC7105063F73,
-        0x278AE987121CD678,
-        0xA1ADB4778EF47CD0,
-        0x26DD906C5362C2B9,
-        0x05168060589B44E2,
-        0xFBFC41F9D79AC08F,
-        0x0E6DE44BA9CED8FA,
-        0x9FEB08068BF243A3,
-        0x7B341749D06B129B,
-        0x229C69E74A87929A,
-        0xE09EE6C4427C011B,
-        0x5692E30E725C4C3A,
-        0xDA99A33E5E9F6E4B,
-        0x353DD85AF453A36B,
-        0x25241B4C90E0FEE7,
-        0x5DE987258309D022,
-        0xE230140FC0802984,
-        0x93281E86A0C0B3C6,
-        0xF229D719A4337408,
-        0x6F6C2DD4AD3D1F34,
-        0x8EA5B2FBAE3F0AEE,
-        0x8331DD90C473EE4A,
-        0x346AA1B1B52DB7AA,
-        0xDF8F235E06042AA9,
-        0xCC6F6B68A1354B7B,
-        0x6C95A6F46EBF236A,
-        0x52D31A856BB91C19,
-        0x1A35DED6D498D555,
-        0xF37EAEF2E54D60C9,
-        0x72E181A9A3C2A61C,
-        0x98537AAD51952FDE,
-        0x16F6C856FFAA2530,
-        0xD960281E9D1D5215,
-        0x3A0745FA1CE36F50,
-        0x0B7B642BF1559C18,
-        0x59A87EAE9AEC8001,
-        0x5E100C05408BEC7C,
-        0x0441F98B19E55023,
-        0xD70DCC5534D38AEF,
-        0x927F676DE1BEA707,
-        0x9769E70DB925E3E5,
-        0x7A636EA29115065A,
-        0x468B201816EF11B6,
-        0xAB81A9B73EDFF409,
-        0xC0AC7DE88A07BB1E,
-        0x1F235EB68C0391B7,
-        0x6056B074458DD30F,
-        0xBE8EEAC102F7ED67,
-        0xCD381283E04B5FBA,
-        0x5CBEFECEC277C4E3,
-        0xD21B4C356C48CE0D,
-        0x1019C31664B35D8C,
-        0x247362A7D19EEA26,
-        0xEBE582EFB3299D03,
-        0x02AEF2CB82FC289F,
-        0x86275DF09CE8AAA8,
-        0x28B07427FAAC1A43,
-        0x38A9B7319E1F47CF,
-        0xC82E92E3B8D01B58,
-        0x06EF0B409B1978BC,
-        0x62F842BFC771FB90,
-        0x9904034610EB3B1F,
-        0xDED85AB5477A3E68,
-        0x90D195A663428F98,
-        0x5384636E2AC708D8,
-        0xCBD719C37B522706,
-        0xAE9729D76644B0EB,
-        0x7C8C65E20A0C7EE6,
-        0x80C856B007F1D214,
-        0x8C0B40302CC32271,
-        0xDBCEDAD51FE17A8A,
-        0x740E8AE938DBDEA0,
-        0xA615C6DC549310AD,
-        0x19CC55F6171AE90B,
-        0x49B1BDB8FE5FDD8D,
-        0xED0A89AF2830E5BF,
-        0x6A7AADB4F5A65BD6,
-        0x7E22972988F05679,
-        0xF952B3325566E810,
-        0x39FECEDADF61530E,
-        0x6101C99F04F3C7CE,
-        0x2E5F7F6761B562FF,
-        0xF08725D226CF5C97,
-        0x63AF3B54860FEF51,
-        0x8FF2CB10EF411E2F,
-        0x884AB9BB35267252,
-        0x4DF04433E7BA8DAE,
-        0x9AFD8866D3690741,
-        0x66B9BB34DE94ABB3,
-        0x9BAAF18D92171380,
-        0x543C11C5F0A064A5,
-        0x17A1B1BDBED431F1,
-        0xB5F58EEAF3A2717F,
-        0xC355F6C849858740,
-        0xEC5DF044694EF17E,
-        0xD83751F5DC6346D4,
-        0xFC4433520DFDACF2,
-        0x0000000000000000,
-        0x5A51F58E596EBC5F,
-        0x3285AAF12E34CF16,
-        0x8D5C39DB6DBD36B0,
-        0x12B731DDE64F7513,
-        0x94906C2D7AA7DFBB,
-        0x302B583AACC8E789,
-        0x9D45FACD090E6B3C,
-        0x2165E2C78905AEC4,
-        0x68D45F7F775A7349,
-        0x189B2C1D5664FDCA,
-        0xE1C99F2F030215DA,
-        0x6983269436246788,
-        0x8489AF3B1E148237,
-        0xE94B702431D5B59C,
-        0x33D2D31A6F4ADBD7,
-        0xBFD9932A4389F9A6,
-        0xB0E30E8AAB39359D,
-        0xD1E2C715AFCAF253,
-        0x150F43763C28196E,
-        0xC4ED846393E2EB3D,
-        0x03F98B20C3823C5E,
-        0xFD134AB94C83B833,
-        0x556B682EB1DE7064,
-        0x36C4537A37D19F35,
-        0x7559F30279A5CA61,
-        0x799AE58252973A04,
-        0x9C12832648707FFD,
-        0x78CD9C6913E92EC5,
-        0x1D8DAC7D0EFFB928,
-        0x439DA0784E745554,
-        0x413352B3CC887DCB,
-        0xBACF134A1B12BD44,
-        0x114EBAFD25CD494D,
-        0x2F08068C20CB763E,
-        0x76A07822BA27F63F,
-        0xEAB2FB04F25789C2,
-        0xE3676DE481FE3D45,
-        0x1B62A73D95E6C194,
-        0x641749FF5C68832C,
-        0xA5EC4DFC97112CF3,
-        0xF6682E92BDD6242B,
-        0x3F11C59A44782BB2,
-        0x317C21D1EDB6F348,
-        0xD65AB5BE75AD9E2E,
-        0x6B2DD45FB4D84F17,
-        0xFAAB381296E4D44E,
-        0xD0B5BEFEEEB4E692,
-        0x0882EF0B32D7A046,
-        0x512A91A5A83B2047,
-        0x963E9EE6F85BF724,
-        0x4E09CF132438B1F0,
-        0x77F701C9FB59E2FE,
-        0x7DDB1C094B726A27,
-        0x5F4775EE01F5F8BD,
-        0x9186EC4D223C9B59,
-        0xFEEAC1998F01846D,
-        0xAC39DB1CE4B89874,
-        0xB75B7C21715E59E0,
-        0xAFC0503C273AA42A,
-        0x6E3B543FEC430BF5,
-        0x704F7362213E8E83,
-        0x58FF0745DB9294C0,
-        0x67EEC2DF9FEABF72,
-        0xA0FACD9CCF8A6811,
-        0xB936986AD890811A,
-        0x95C715C63BD9CB7A,
-        0xCA8060283A2C33C7,
-        0x507DE84EE9453486,
-        0x85DED6D05F6A96F6,
-        0x1CDAD5964F81ADE9,
-        0xD5A33E9EB62FA270,
-        0x40642B588DF6690A,
-        0x7F75EEC2C98E42B8,
-        0x2CF18DACE3494A60,
-        0x23CB100C0BF9865B,
-        0xEEF3028FEBB2D9E1,
-        0x4425D2D394133929,
-        0xAAD6D05C7FA1E0C8,
-        0xAD6EA2F7A5C68CB5,
-        0xC2028F2308FB9381,
-        0x819F2F5B468FC6D5,
-        0xC5BAFD88D29CFFFC,
-        0x47DC59F357910577,
-        0x2B49FF07392E261D,
-        0x57C59AE5332258FB,
-        0x73B6F842E2BCB2DD,
-        0xCF96E04862B77725,
-        0x4CA73DD8A6C4996F,
-        0x015779EB417E14C1,
-        0x37932A9176AF8BF4,
-    ],
-    [
-        0x190A2C9B249DF23E,
-        0x2F62F8B62263E1E9,
-        0x7A7F754740993655,
-        0x330B7BA4D5564D9F,
-        0x4C17A16A46672582,
-        0xB22F08EB7D05F5B8,
-        0x535F47F40BC148CC,
-        0x3AEC5D27D4883037,
-        0x10ED0A1825438F96,
-        0x516101F72C233D17,
-        0x13CC6F949FD04EAE,
-        0x739853C441474BFD,
-        0x653793D90D3F5B1B,
-        0x5240647B96B0FC2F,
-        0x0C84890AD27623E0,
-        0xD7189B32703AAEA3,
-        0x2685DE3523BD9C41,
-        0x99317C5B11BFFEFA,
-        0x0D9BAA854F079703,
-        0x70B93648FBD48AC5,
-        0xA80441FCE30BC6BE,
-        0x7287704BDC36FF1E,
-        0xB65384ED33DC1F13,
-        0xD36417343EE34408,
-        0x39CD38AB6E1BF10F,
-        0x5AB861770A1F3564,
-        0x0EBACF09F594563B,
-        0xD04572B884708530,
-        0x3CAE9722BDB3AF47,
-        0x4A556B6F2F5CBAF2,
-        0xE1704F1F76C4BD74,
-        0x5EC4ED7144C6DFCF,
-        0x16AFC01D4C7810E6,
-        0x283F113CD629CA7A,
-        0xAF59A8761741ED2D,
-        0xEED5A3991E215FAC,
-        0x3BF37EA849F984D4,
-        0xE413E096A56CE33C,
-        0x2C439D3A98F020D1,
-        0x637559DC6404C46B,
-        0x9E6C95D1E5F5D569,
-        0x24BB9836045FE99A,
-        0x44EFA466DAC8ECC9,
-        0xC6EAB2A5C80895D6,
-        0x803B50C035220CC4,
-        0x0321658CBA93C138,
-        0x8F9EBC465DC7EE1C,
-        0xD15A5137190131D3,
-        0x0FA5EC8668E5E2D8,
-        0x91C979578D1037B1,
-        0x0642CA05693B9F70,
-        0xEFCA80168350EB4F,
-        0x38D21B24F36A45EC,
-        0xBEAB81E1AF73D658,
-        0x8CBFD9CAE7542F24,
-        0xFD19CC0D81F11102,
-        0x0AC6430FBB4DBC90,
-        0x1D76A09D6A441895,
-        0x2A01573FF1CBBFA1,
-        0xB572E161894FDE2B,
-        0x8124734FA853B827,
-        0x614B1FDF43E6B1B0,
-        0x68AC395C4238CC18,
-        0x21D837BFD7F7B7D2,
-        0x20C714304A860331,
-        0x5CFAAB726324AA14,
-        0x74C5BA4EB50D606E,
-        0xF3A3030474654739,
-        0x23E671BCF015C209,
-        0x45F087E947B9582A,
-        0xD8BD77B418DF4C7B,
-        0xE06F6C90EBB50997,
-        0x0BD96080263C0873,
-        0x7E03F9410E40DCFE,
-        0xB8E94BE4C6484928,
-        0xFB5B0608E8CA8E72,
-        0x1A2B49179E0E3306,
-        0x4E29E76961855059,
-        0x4F36C4E6FCF4E4BA,
-        0x49740EE395CF7BCA,
-        0xC2963EA386D17F7D,
-        0x90D65AD810618352,
-        0x12D34C1B02A1FA4D,
-        0xFA44258775BB3A91,
-        0x18150F14B9EC46DD,
-        0x1491861E6B9A653D,
-        0x9A1019D7AB2C3FC2,
-        0x3668D42D06FE13D7,
-        0xDCC1FBB25606A6D0,
-        0x969490DD795A1C22,
-        0x3549B1A1BC6DD2EF,
-        0xC94F5E23A0ED770E,
-        0xB9F6686B5B39FDCB,
-        0xC4D4F4A6EFEAE00D,
-        0xE732851A1FFF2204,
-        0x94AAD6DE5EB869F9,
-        0x3F8FF2AE07206E7F,
-        0xFE38A9813B62D03A,
-        0xA7A1AD7A8BEE2466,
-        0x7B6056C8DDE882B6,
-        0x302A1E286FC58CA7,
-        0x8DA0FA457A259BC7,
-        0xB3302B64E074415B,
-        0x5402AE7EFF8B635F,
-        0x08F8050C9CAFC94B,
-        0xAE468BF98A3059CE,
-        0x88C355CCA98DC58F,
-        0xB10E6D67C7963480,
-        0xBAD70DE7E1AA3CF3,
-        0xBFB4A26E320262BB,
-        0xCB711820870F02D5,
-        0xCE12B7A954A75C9D,
-        0x563CE87DD8691684,
-        0x9F73B65E7884618A,
-        0x2B1E74B06CBA0B42,
-        0x47CEC1EA605B2DF1,
-        0x1C698312F735AC76,
-        0x5FDBCEFED9B76B2C,
-        0x831A354C8FB1CDFC,
-        0x820516C312C0791F,
-        0xB74CA762AEADABF0,
-        0xFC06EF821C80A5E1,
-        0x5723CBF24518A267,
-        0x9D4DF05D5F661451,
-        0x588627742DFD40BF,
-        0xDA8331B73F3D39A0,
-        0x17B0E392D109A405,
-        0xF965400BCF28FBA9,
-        0x7C3DBF4229A2A925,
-        0x023E460327E275DB,
-        0x6CD0B55A0CE126B3,
-        0xE62DA695828E96E7,
-        0x42AD6E63B3F373B9,
-        0xE50CC319381D57DF,
-        0xC5CBD729729B54EE,
-        0x46D1E265FD2A9912,
-        0x6428B056904EEFF8,
-        0x8BE23040131E04B7,
-        0x6709D5DA2ADD2EC0,
-        0x075DE98AF44A2B93,
-        0x8447DCC67BFBE66F,
-        0x6616F655B7AC9A23,
-        0xD607B8BDED4B1A40,
-        0x0563AF89D3A85E48,
-        0x3DB1B4AD20C21BA4,
-        0x11F22997B8323B75,
-        0x292032B34B587E99,
-        0x7F1CDACE9331681D,
-        0x8E819FC9C0B65AFF,
-        0xA1E3677FE2D5BB16,
-        0xCD33D225EE349DA5,
-        0xD9A2543B85AEF898,
-        0x795E10CBFA0AF76D,
-        0x25A4BBB9992E5D79,
-        0x78413344677B438E,
-        0xF0826688CEF68601,
-        0xD27B34BBA392F0EB,
-        0x551D8DF162FAD7BC,
-        0x1E57C511D0D7D9AD,
-        0xDEFFBDB171E4D30B,
-        0xF4FEEA8E802F6CAA,
-        0xA480C8F6317DE55E,
-        0xA0FC44F07FA40FF5,
-        0x95B5F551C3C9DD1A,
-        0x22F952336D6476EA,
-        0x0000000000000000,
-        0xA6BE8EF5169F9085,
-        0xCC2CF1AA73452946,
-        0x2E7DDB39BF12550A,
-        0xD526DD3157D8DB78,
-        0x486B2D6C08BECF29,
-        0x9B0F3A58365D8B21,
-        0xAC78CDFAADD22C15,
-        0xBC95C7E28891A383,
-        0x6A927F5F65DAB9C3,
-        0xC3891D2C1BA0CB9E,
-        0xEAA92F9F50F8B507,
-        0xCF0D9426C9D6E87E,
-        0xCA6E3BAF1A7EB636,
-        0xAB25247059980786,
-        0x69B31AD3DF4978FB,
-        0xE2512A93CC577C4C,
-        0xFF278A0EA61364D9,
-        0x71A615C766A53E26,
-        0x89DC764334FC716C,
-        0xF87A638452594F4A,
-        0xF2BC208BE914F3DA,
-        0x8766B94AC1682757,
-        0xBBC82E687CDB8810,
-        0x626A7A53F9757088,
-        0xA2C202F358467A2E,
-        0x4D0882E5DB169161,
-        0x09E7268301DE7DA8,
-        0xE897699C771AC0DC,
-        0xC8507DAC3D9CC3ED,
-        0xC0A878A0A1330AA6,
-        0x978BB352E42BA8C1,
-        0xE9884A13EA6B743F,
-        0x279AFDBABECC28A2,
-        0x047C8C064ED9EAAB,
-        0x507E2278B15289F4,
-        0x599904FBB08CF45C,
-        0xBD8AE46D15E01760,
-        0x31353DA7F2B43844,
-        0x8558FF49E68A528C,
-        0x76FBFC4D92EF15B5,
-        0x3456922E211C660C,
-        0x86799AC55C1993B4,
-        0x3E90D1219A51DA9C,
-        0x2D5CBEB505819432,
-        0x982E5FD48CCE4A19,
-        0xDB9C1238A24C8D43,
-        0xD439FEBECAA96F9B,
-        0x418C0BEF0960B281,
-        0x158EA591F6EBD1DE,
-        0x1F48E69E4DA66D4E,
-        0x8AFD13CF8E6FB054,
-        0xF5E1C9011D5ED849,
-        0xE34E091C5126C8AF,
-        0xAD67EE7530A398F6,
-        0x43B24DEC2E82C75A,
-        0x75DA99C1287CD48D,
-        0x92E81CDB3783F689,
-        0xA3DD217CC537CECD,
-        0x60543C50DE970553,
-        0x93F73F54AAF2426A,
-        0xA91B62737E7A725D,
-        0xF19D4507538732E2,
-        0x77E4DFC20F9EA156,
-        0x7D229CCDB4D31DC6,
-        0x1B346A98037F87E5,
-        0xEDF4C615A4B29E94,
-        0x4093286094110662,
-        0xB0114EE85AE78063,
-        0x6FF1D0D6B672E78B,
-        0x6DCF96D591909250,
-        0xDFE09E3EEC9567E8,
-        0x3214582B4827F97C,
-        0xB46DC2EE143E6AC8,
-        0xF6C0AC8DA7CD1971,
-        0xEBB60C10CD8901E4,
-        0xF7DF8F023ABCAD92,
-        0x9C52D3D2C217A0B2,
-        0x6B8D5CD0F8AB0D20,
-        0x3777F7A29B8FA734,
-        0x011F238F9D71B4E3,
-        0xC1B75B2F3C42BE45,
-        0x5DE588FDFE551EF7,
-        0x6EEEF3592B035368,
-        0xAA3A07FFC4E9B365,
-        0xECEBE59A39C32A77,
-        0x5BA742F8976E8187,
-        0x4B4A48E0B22D0E11,
-        0xDDDED83DCB771233,
-        0xA59FEB79AC0C51BD,
-        0xC7F5912A55792135,
-    ],
-    [
-        0x6D6AE04668A9B08A,
-        0x3AB3F04B0BE8C743,
-        0xE51E166B54B3C908,
-        0xBE90A9EB35C2F139,
-        0xB2C7066637F2BEC1,
-        0xAA6945613392202C,
-        0x9A28C36F3B5201EB,
-        0xDDCE5A93AB536994,
-        0x0E34133EF6382827,
-        0x52A02BA1EC55048B,
-        0xA2F88F97C4B2A177,
-        0x8640E513CA2251A5,
-        0xCDF1D36258137622,
-        0xFE6CB708DEDF8DDB,
-        0x8A174A9EC8121E5D,
-        0x679896036B81560E,
-        0x59ED033395795FEE,
-        0x1DD778AB8B74EDAF,
-        0xEE533EF92D9F926D,
-        0x2A8C79BAF8A8D8F5,
-        0x6BCF398E69B119F6,
-        0xE20491742FAFDD95,
-        0x276488E0809C2AEC,
-        0xEA955B82D88F5CCE,
-        0x7102C63A99D9E0C4,
-        0xF9763017A5C39946,
-        0x429FA2501F151B3D,
-        0x4659C72BEA05D59E,
-        0x984B7FDCCF5A6634,
-        0xF742232953FBB161,
-        0x3041860E08C021C7,
-        0x747BFD9616CD9386,
-        0x4BB1367192312787,
-        0x1B72A1638A6C44D3,
-        0x4A0E68A6E8359A66,
-        0x169A5039F258B6CA,
-        0xB98A2EF44EDEE5A4,
-        0xD9083FE85E43A737,
-        0x967F6CE239624E13,
-        0x8874F62D3C1A7982,
-        0x3C1629830AF06E3F,
-        0x9165EBFD427E5A8E,
-        0xB5DD81794CEEAA5C,
-        0x0DE8F15A7834F219,
-        0x70BD98EDE3DD5D25,
-        0xACCC9CA9328A8950,
-        0x56664EDA1945CA28,
-        0x221DB34C0F8859AE,
-        0x26DBD637FA98970D,
-        0x1ACDFFB4F068F932,
-        0x4585254F64090FA0,
-        0x72DE245E17D53AFA,
-        0x1546B25D7C546CF4,
-        0x207E0FFFFB803E71,
-        0xFAAAD2732BCF4378,
-        0xB462DFAE36EA17BD,
-        0xCF926FD1AC1B11FD,
-        0xE0672DC7DBA7BA4A,
-        0xD3FA49AD5D6B41B3,
-        0x8BA81449B216A3BC,
-        0x14F9EC8A0650D115,
-        0x40FC1EE3EB1D7CE2,
-        0x23A2ED9B758CE44F,
-        0x782C521B14FDDC7E,
-        0x1C68267CF170504E,
-        0xBCF31558C1CA96E6,
-        0xA781B43B4BA6D235,
-        0xF6FD7DFE29FF0C80,
-        0xB0A4BAD5C3FAD91E,
-        0xD199F51EA963266C,
-        0x414340349119C103,
-        0x5405F269ED4DADF7,
-        0xABD61BB649969DCD,
-        0x6813DBEAE7BDC3C8,
-        0x65FB2AB09F8931D1,
-        0xF1E7FAE152E3181D,
-        0xC1A67CEF5A2339DA,
-        0x7A4FEEA8E0F5BBA1,
-        0x1E0B9ACF05783791,
-        0x5B8EBF8061713831,
-        0x80E53CDBCB3AF8D9,
-        0x7E898BD315E57502,
-        0xC6BCFBF0213F2D47,
-        0x95A38E86B76E942D,
-        0x092E94218D243CBA,
-        0x8339DEBF453622E7,
-        0xB11BE402B9FE64FF,
-        0x57D9100D634177C9,
-        0xCC4E8DB52217CBC3,
-        0x3B0CAE9C71EC7AA2,
-        0xFB158CA451CBFE99,
-        0x2B33276D82AC6514,
-        0x01BF5ED77A04BDE1,
-        0xC5601994AF33F779,
-        0x75C4A3416CC92E67,
-        0xF3844652A6EB7FC2,
-        0x3487E375FDD0EF64,
-        0x18AE430704609EED,
-        0x4D14EFB993298EFB,
-        0x815A620CB13E4538,
-        0x125C354207487869,
-        0x9EEEA614CE42CF48,
-        0xCE2D3106D61FAC1C,
-        0xBBE99247BAD6827B,
-        0x071A871F7B1C149D,
-        0x2E4A1CC10DB81656,
-        0x77A71FF298C149B8,
-        0x06A5D9C80118A97C,
-        0xAD73C27E488E34B1,
-        0x443A7B981E0DB241,
-        0xE3BBCFA355AB6074,
-        0x0AF276450328E684,
-        0x73617A896DD1871B,
-        0x58525DE4EF7DE20F,
-        0xB7BE3DCAB8E6CD83,
-        0x19111DD07E64230C,
-        0x842359A03E2A367A,
-        0x103F89F1F3401FB6,
-        0xDC710444D157D475,
-        0xB835702334DA5845,
-        0x4320FC876511A6DC,
-        0xD026ABC9D3679B8D,
-        0x17250EEE885C0B2B,
-        0x90DAB52A387AE76F,
-        0x31FED8D972C49C26,
-        0x89CBA8FA461EC463,
-        0x2FF5421677BCABB7,
-        0x396F122F85E41D7D,
-        0xA09B332430BAC6A8,
-        0xC888E8CED7070560,
-        0xAEAF201AC682EE8F,
-        0x1180D7268944A257,
-        0xF058A43628E7A5FC,
-        0xBD4C4B8FBBCE2B07,
-        0xA1246DF34ABE7B49,
-        0x7D5569B79BE9AF3C,
-        0xA9B5A705BD9EFA12,
-        0xDB6B835BAA4BC0E8,
-        0x05793BAC8F147342,
-        0x21C1512881848390,
-        0xFDB0556C50D357E5,
-        0x613D4FCB6A99FF72,
-        0x03DCE2648E0CDA3E,
-        0xE949B9E6568386F0,
-        0xFC0F0BBB2AD7EA04,
-        0x6A70675913B5A417,
-        0x7F36D5046FE1C8E3,
-        0x0C57AF8D02304FF8,
-        0x32223ABDFCC84618,
-        0x0891CAF6F720815B,
-        0xA63EEAEC31A26FD4,
-        0x2507345374944D33,
-        0x49D28AC266394058,
-        0xF5219F9AA7F3D6BE,
-        0x2D96FEA583B4CC68,
-        0x5A31E1571B7585D0,
-        0x8ED12FE53D02D0FE,
-        0xDFADE6205F5B0E4B,
-        0x4CABB16EE92D331A,
-        0x04C6657BF510CEA3,
-        0xD73C2CD6A87B8F10,
-        0xE1D87310A1A307AB,
-        0x6CD5BE9112AD0D6B,
-        0x97C032354366F3F2,
-        0xD4E0CEB22677552E,
-        0x0000000000000000,
-        0x29509BDE76A402CB,
-        0xC27A9E8BD42FE3E4,
-        0x5EF7842CEE654B73,
-        0xAF107ECDBC86536E,
-        0x3FCACBE784FCB401,
-        0xD55F90655C73E8CF,
-        0xE6C2F40FDABF1336,
-        0xE8F6E7312C873B11,
-        0xEB2A0555A28BE12F,
-        0xE4A148BC2EB774E9,
-        0x9B979DB84156BC0A,
-        0x6EB60222E6A56AB4,
-        0x87FFBBC4B026EC44,
-        0xC703A5275B3B90A6,
-        0x47E699FC9001687F,
-        0x9C8D1AA73A4AA897,
-        0x7CEA3760E1ED12DD,
-        0x4EC80DDD1D2554C5,
-        0x13E36B957D4CC588,
-        0x5D2B66486069914D,
-        0x92B90999CC7280B0,
-        0x517CC9C56259DEB5,
-        0xC937B619AD03B881,
-        0xEC30824AD997F5B2,
-        0xA45D565FC5AA080B,
-        0xD6837201D27F32F1,
-        0x635EF3789E9198AD,
-        0x531F75769651B96A,
-        0x4F77530A6721E924,
-        0x486DD4151C3DFDB9,
-        0x5F48DAFB9461F692,
-        0x375B011173DC355A,
-        0x3DA9775470F4D3DE,
-        0x8D0DCD81B30E0AC0,
-        0x36E45FC609D888BB,
-        0x55BAACBE97491016,
-        0x8CB29356C90AB721,
-        0x76184125E2C5F459,
-        0x99F4210BB55EDBD5,
-        0x6F095CF59CA1D755,
-        0x9F51F8C3B44672A9,
-        0x3538BDA287D45285,
-        0x50C39712185D6354,
-        0xF23B1885DCEFC223,
-        0x79930CCC6EF9619F,
-        0xED8FDC9DA3934853,
-        0xCB540AAA590BDF5E,
-        0x5C94389F1A6D2CAC,
-        0xE77DAAD8A0BBAED7,
-        0x28EFC5090CA0BF2A,
-        0xBF2FF73C4FC64CD8,
-        0xB37858B14DF60320,
-        0xF8C96EC0DFC724A7,
-        0x828680683F329F06,
-        0x941CD051CD6A29CC,
-        0xC3C5C05CAE2B5E05,
-        0xB601631DC2E27062,
-        0xC01922382027843B,
-        0x24B86A840E90F0D2,
-        0xD245177A276FFC52,
-        0x0F8B4DE98C3C95C6,
-        0x3E759530FEF809E0,
-        0x0B4D2892792C5B65,
-        0xC4DF4743D5374A98,
-        0xA5E20888BFAEB5EA,
-        0xBA56CC90C0D23F9A,
-        0x38D04CF8FFE0A09C,
-        0x62E1ADAFE495254C,
-        0x0263BCB3F40867DF,
-        0xCAEB547D230F62BF,
-        0x6082111C109D4293,
-        0xDAD4DD8CD04F7D09,
-        0xEFEC602E579B2F8C,
-        0x1FB4C4187F7C8A70,
-        0xFFD3E9DFA4DB303A,
-        0x7BF0B07F9AF10640,
-        0xF49EC14DDDF76B5F,
-        0x8F6E713247066D1F,
-        0x339D646A86CCFBF9,
-        0x64447467E58D8C30,
-        0x2C29A072F9B07189,
-        0xD8B7613F24471AD6,
-        0x6627C8D41185EBEF,
-        0xA347D140BEB61C96,
-        0xDE12B8F7255FB3AA,
-        0x9D324470404E1576,
-        0x9306574EB6763D51,
-        0xA80AF9D2C79A47F3,
-        0x859C0777442E8B9B,
-        0x69AC853D9DB97E29,
-    ],
-    [
-        0xC3407DFC2DE6377E,
-        0x5B9E93EEA4256F77,
-        0xADB58FDD50C845E0,
-        0x5219FF11A75BED86,
-        0x356B61CFD90B1DE9,
-        0xFB8F406E25ABE037,
-        0x7A5A0231C0F60796,
-        0x9D3CD216E1F5020B,
-        0x0C6550FB6B48D8F3,
-        0xF57508C427FF1C62,
-        0x4AD35FFA71CB407D,
-        0x6290A2DA1666AA6D,
-        0xE284EC2349355F9F,
-        0xB3C307C53D7C84EC,
-        0x05E23C0468365A02,
-        0x190BAC4D6C9EBFA8,
-        0x94BBBEE9E28B80FA,
-        0xA34FC777529CB9B5,
-        0xCC7B39F095BCD978,
-        0x2426ADDB0CE532E3,
-        0x7E79329312CE4FC7,
-        0xAB09A72EEBEC2917,
-        0xF8D15499F6B9D6C2,
-        0x1A55B8BABF8C895D,
-        0xDB8ADD17FB769A85,
-        0xB57F2F368658E81B,
-        0x8ACD36F18F3F41F6,
-        0x5CE3B7BBA50F11D3,
-        0x114DCC14D5EE2F0A,
-        0xB91A7FCDED1030E8,
-        0x81D5425FE55DE7A1,
-        0xB6213BC1554ADEEE,
-        0x80144EF95F53F5F2,
-        0x1E7688186DB4C10C,
-        0x3B912965DB5FE1BC,
-        0xC281715A97E8252D,
-        0x54A5D7E21C7F8171,
-        0x4B12535CCBC5522E,
-        0x1D289CEFBEA6F7F9,
-        0x6EF5F2217D2E729E,
-        0xE6A7DC819B0D17CE,
-        0x1B94B41C05829B0E,
-        0x33D7493C622F711E,
-        0xDCF7F942FA5CE421,
-        0x600FBA8B7F7A8ECB,
-        0x46B60F011A83988E,
-        0x235B898E0DCF4C47,
-        0x957AB24F588592A9,
-        0x4354330572B5C28C,
-        0xA5F3EF84E9B8D542,
-        0x8C711E02341B2D01,
-        0x0B1874AE6A62A657,
-        0x1213D8E306FC19FF,
-        0xFE6D7C6A4D9DBA35,
-        0x65ED868F174CD4C9,
-        0x88522EA0E6236550,
-        0x899322065C2D7703,
-        0xC01E690BFEF4018B,
-        0x915982ED8ABDDAF8,
-        0xBE675B98EC3A4E4C,
-        0xA996BF7F82F00DB1,
-        0xE1DAF8D49A27696A,
-        0x2EFFD5D3DC8986E7,
-        0xD153A51F2B1A2E81,
-        0x18CAA0EBD690ADFB,
-        0x390E3134B243C51A,
-        0x2778B92CDFF70416,
-        0x029F1851691C24A6,
-        0x5E7CAFEACC133575,
-        0xFA4E4CC89FA5F264,
-        0x5A5F9F481E2B7D24,
-        0x484C47AB18D764DB,
-        0x400A27F2A1A7F479,
-        0xAEEB9B2A83DA7315,
-        0x721C626879869734,
-        0x042330A2D2384851,
-        0x85F672FD3765AFF0,
-        0xBA446B3A3E02061D,
-        0x73DD6ECEC3888567,
-        0xFFAC70CCF793A866,
-        0xDFA9EDB5294ED2D4,
-        0x6C6AEA7014325638,
-        0x834A5A0E8C41C307,
-        0xCDBA35562FB2CB2B,
-        0x0AD97808D06CB404,
-        0x0F3B440CB85AEE06,
-        0xE5F9C876481F213B,
-        0x98DEEE1289C35809,
-        0x59018BBFCD394BD1,
-        0xE01BF47220297B39,
-        0xDE68E1139340C087,
-        0x9FA3CA4788E926AD,
-        0xBB85679C840C144E,
-        0x53D8F3B71D55FFD5,
-        0x0DA45C5DD146CAA0,
-        0x6F34FE87C72060CD,
-        0x57FBC315CF6DB784,
-        0xCEE421A1FCA0FDDE,
-        0x3D2D0196607B8D4B,
-        0x642C8A29AD42C69A,
-        0x14AFF010BDD87508,
-        0xAC74837BEAC657B3,
-        0x3216459AD821634D,
-        0x3FB219C70967A9ED,
-        0x06BC28F3BB246CF7,
-        0xF2082C9126D562C6,
-        0x66B39278C45EE23C,
-        0xBD394F6F3F2878B9,
-        0xFD33689D9E8F8CC0,
-        0x37F4799EB017394F,
-        0x108CC0B26FE03D59,
-        0xDA4BD1B1417888D6,
-        0xB09D1332EE6EB219,
-        0x2F3ED975668794B4,
-        0x58C0871977375982,
-        0x7561463D78ACE990,
-        0x09876CFF037E82F1,
-        0x7FB83E35A8C05D94,
-        0x26B9B58A65F91645,
-        0xEF20B07E9873953F,
-        0x3148516D0B3355B8,
-        0x41CB2B541BA9E62A,
-        0x790416C613E43163,
-        0xA011D380818E8F40,
-        0x3A5025C36151F3EF,
-        0xD57095BDF92266D0,
-        0x498D4B0DA2D97688,
-        0x8B0C3A57353153A5,
-        0x21C491DF64D368E1,
-        0x8F2F0AF5E7091BF4,
-        0x2DA1C1240F9BB012,
-        0xC43D59A92CCC49DA,
-        0xBFA6573E56345C1F,
-        0x828B56A8364FD154,
-        0x9A41F643E0DF7CAF,
-        0xBCF843C985266AEA,
-        0x2B1DE9D7B4BFDCE5,
-        0x20059D79DEDD7AB2,
-        0x6DABE6D6AE3C446B,
-        0x45E81BF6C991AE7B,
-        0x6351AE7CAC68B83E,
-        0xA432E32253B6C711,
-        0xD092A9B991143CD2,
-        0xCAC711032E98B58F,
-        0xD8D4C9E02864AC70,
-        0xC5FC550F96C25B89,
-        0xD7EF8DEC903E4276,
-        0x67729EDE7E50F06F,
-        0xEAC28C7AF045CF3D,
-        0xB15C1F945460A04A,
-        0x9CFDDEB05BFB1058,
-        0x93C69ABCE3A1FE5E,
-        0xEB0380DC4A4BDD6E,
-        0xD20DB1E8F8081874,
-        0x229A8528B7C15E14,
-        0x44291750739FBC28,
-        0xD3CCBD4E42060A27,
-        0xF62B1C33F4ED2A97,
-        0x86A8660AE4779905,
-        0xD62E814A2A305025,
-        0x477703A7A08D8ADD,
-        0x7B9B0E977AF815C5,
-        0x78C51A60A9EA2330,
-        0xA6ADFB733AAAE3B7,
-        0x97E5AA1E3199B60F,
-        0x0000000000000000,
-        0xF4B404629DF10E31,
-        0x5564DB44A6719322,
-        0x9207961A59AFEC0D,
-        0x9624A6B88B97A45C,
-        0x363575380A192B1C,
-        0x2C60CD82B595A241,
-        0x7D272664C1DC7932,
-        0x7142769FAA94A1C1,
-        0xA1D0DF263B809D13,
-        0x1630E841D4C451AE,
-        0xC1DF65AD44FA13D8,
-        0x13D2D445BCF20BAC,
-        0xD915C546926ABE23,
-        0x38CF3D92084DD749,
-        0xE766D0272103059D,
-        0xC7634D5EFFDE7F2F,
-        0x077D2455012A7EA4,
-        0xEDBFA82FF16FB199,
-        0xAF2A978C39D46146,
-        0x42953FA3C8BBD0DF,
-        0xCB061DA59496A7DC,
-        0x25E7A17DB6EB20B0,
-        0x34AA6D6963050FBA,
-        0xA76CF7D580A4F1E4,
-        0xF7EA10954EE338C4,
-        0xFCF2643B24819E93,
-        0xCF252D0746AEEF8D,
-        0x4EF06F58A3F3082C,
-        0x563ACFB37563A5D7,
-        0x5086E740CE47C920,
-        0x2982F186DDA3F843,
-        0x87696AAC5E798B56,
-        0x5D22BB1D1F010380,
-        0x035E14F7D31236F5,
-        0x3CEC0D30DA759F18,
-        0xF3C920379CDB7095,
-        0xB8DB736B571E22BB,
-        0xDD36F5E44052F672,
-        0xAAC8AB8851E23B44,
-        0xA857B3D938FE1FE2,
-        0x17F1E4E76ECA43FD,
-        0xEC7EA4894B61A3CA,
-        0x9E62C6E132E734FE,
-        0xD4B1991B432C7483,
-        0x6AD6C283AF163ACF,
-        0x1CE9904904A8E5AA,
-        0x5FBDA34C761D2726,
-        0xF910583F4CB7C491,
-        0xC6A241F845D06D7C,
-        0x4F3163FE19FD1A7F,
-        0xE99C988D2357F9C8,
-        0x8EEE06535D0709A7,
-        0x0EFA48AA0254FC55,
-        0xB4BE23903C56FA48,
-        0x763F52CAABBEDF65,
-        0xEEE1BCD8227D876C,
-        0xE345E085F33B4DCC,
-        0x3E731561B369BBBE,
-        0x2843FD2067ADEA10,
-        0x2ADCE5710EB1CEB6,
-        0xB7E03767EF44CCBD,
-        0x8DB012A48E153F52,
-        0x61CEB62DC5749C98,
-        0xE85D942B9959EB9B,
-        0x4C6F7709CAEF2C8A,
-        0x84377E5B8D6BBDA3,
-        0x30895DCBB13D47EB,
-        0x74A04A9BC2A2FBC3,
-        0x6B17CE251518289C,
-        0xE438C4D0F2113368,
-        0x1FB784BED7BAD35F,
-        0x9B80FAE55AD16EFC,
-        0x77FE5E6C11B0CD36,
-        0xC858095247849129,
-        0x08466059B97090A2,
-        0x01C10CA6BA0E1253,
-        0x6988D6747C040C3A,
-        0x6849DAD2C60A1E69,
-        0x5147EBE67449DB73,
-        0xC99905F4FD8A837A,
-        0x991FE2B433CD4A5A,
-        0xF09734C04FC94660,
-        0xA28ECBD1E892ABE6,
-        0xF1563866F5C75433,
-        0x4DAE7BAF70E13ED9,
-        0x7CE62AC27BD26B61,
-        0x70837A39109AB392,
-        0x90988E4B30B3C8AB,
-        0xB2020B63877296BF,
-        0x156EFCB607D6675B,
-    ],
-    [
-        0xE63F55CE97C331D0,
-        0x25B506B0015BBA16,
-        0xC8706E29E6AD9BA8,
-        0x5B43D3775D521F6A,
-        0x0BFA3D577035106E,
-        0xAB95FC172AFB0E66,
-        0xF64B63979E7A3276,
-        0xF58B4562649DAD4B,
-        0x48F7C3DBAE0C83F1,
-        0xFF31916642F5C8C5,
-        0xCBB048DC1C4A0495,
-        0x66B8F83CDF622989,
-        0x35C130E908E2B9B0,
-        0x7C761A61F0B34FA1,
-        0x3601161CF205268D,
-        0x9E54CCFE2219B7D6,
-        0x8B7D90A538940837,
-        0x9CD403588EA35D0B,
-        0xBC3C6FEA9CCC5B5A,
-        0xE5FF733B6D24AEED,
-        0xCEED22DE0F7EB8D2,
-        0xEC8581CAB1AB545E,
-        0xB96105E88FF8E71D,
-        0x8CA03501871A5EAD,
-        0x76CCCE65D6DB2A2F,
-        0x5883F582A7B58057,
-        0x3F7BE4ED2E8ADC3E,
-        0x0FE7BE06355CD9C9,
-        0xEE054E6C1D11BE83,
-        0x1074365909B903A6,
-        0x5DDE9F80B4813C10,
-        0x4A770C7D02B6692C,
-        0x5379C8D5D7809039,
-        0xB4067448161ED409,
-        0x5F5E5026183BD6CD,
-        0xE898029BF4C29DF9,
-        0x7FB63C940A54D09C,
-        0xC5171F897F4BA8BC,
-        0xA6F28DB7B31D3D72,
-        0x2E4F3BE7716EAA78,
-        0x0D6771A099E63314,
-        0x82076254E41BF284,
-        0x2F0FD2B42733DF98,
-        0x5C9E76D3E2DC49F0,
-        0x7AEB569619606CDB,
-        0x83478B07B2468764,
-        0xCFADCB8D5923CD32,
-        0x85DAC7F05B95A41E,
-        0xB5469D1B4043A1E9,
-        0xB821ECBBD9A592FD,
-        0x1B8E0B0E798C13C8,
-        0x62A57B6D9A0BE02E,
-        0xFCF1B793B81257F8,
-        0x9D94EA0BD8FE28EB,
-        0x4CEA408AEB654A56,
-        0x23284A47E888996C,
-        0x2D8F1D128B893545,
-        0xF4CBAC3132C0D8AB,
-        0xBD7C86B9CA912EBA,
-        0x3A268EEF3DBE6079,
-        0xF0D62F6077A9110C,
-        0x2735C916ADE150CB,
-        0x89FD5F03942EE2EA,
-        0x1ACEE25D2FD16628,
-        0x90F39BAB41181BFF,
-        0x430DFE8CDE39939F,
-        0xF70B8AC4C8274796,
-        0x1C53AEAAC6024552,
-        0x13B410ACF35E9C9B,
-        0xA532AB4249FAA24F,
-        0x2B1251E5625A163F,
-        0xD7E3E676DA4841C7,
-        0xA7B264E4E5404892,
-        0xDA8497D643AE72D3,
-        0x861AE105A1723B23,
-        0x38A6414991048AA4,
-        0x6578DEC92585B6B4,
-        0x0280CFA6ACBAEADD,
-        0x88BDB650C273970A,
-        0x9333BD5EBBFF84C2,
-        0x4E6A8F2C47DFA08B,
-        0x321C954DB76CEF2A,
-        0x418D312A72837942,
-        0xB29B38BFFFCDF773,
-        0x6C022C38F90A4C07,
-        0x5A033A240B0F6A8A,
-        0x1F93885F3CE5DA6F,
-        0xC38A537E96988BC6,
-        0x39E6A81AC759FF44,
-        0x29929E43CEE0FCE2,
-        0x40CDD87924DE0CA2,
-        0xE9D8EBC8A29FE819,
-        0x0C2798F3CFBB46F4,
-        0x55E484223E53B343,
-        0x4650948ECD0D2FD8,
-        0x20E86CB2126F0651,
-        0x6D42C56BAF5739E7,
-        0xA06FC1405ACE1E08,
-        0x7BABBFC54F3D193B,
-        0x424D17DF8864E67F,
-        0xD8045870EF14980E,
-        0xC6D7397C85AC3781,
-        0x21A885E1443273B1,
-        0x67F8116F893F5C69,
-        0x24F5EFE35706CFF6,
-        0xD56329D076F2AB1A,
-        0x5E1EB9754E66A32D,
-        0x28D2771098BD8902,
-        0x8F6013F47DFDC190,
-        0x17A993FDB637553C,
-        0xE0A219397E1012AA,
-        0x786B9930B5DA8606,
-        0x6E82E39E55B0A6DA,
-        0x875A0856F72F4EC3,
-        0x3741FF4FA458536D,
-        0xAC4859B3957558FC,
-        0x7EF6D5C75C09A57C,
-        0xC04A758B6C7F14FB,
-        0xF9ACDD91AB26EBBF,
-        0x7391A467C5EF9668,
-        0x335C7C1EE1319ACA,
-        0xA91533B18641E4BB,
-        0xE4BF9A683B79DB0D,
-        0x8E20FAA72BA0B470,
-        0x51F907737B3A7AE4,
-        0x2268A314BED5EC8C,
-        0xD944B123B949EDEE,
-        0x31DCB3B84D8B7017,
-        0xD3FE65279F218860,
-        0x097AF2F1DC8FFAB3,
-        0x9B09A6FC312D0B91,
-        0xCC6DED78A3C4520F,
-        0x3481D9BA5EBFCC50,
-        0x4F2A667F1182D56B,
-        0xDFD9FDD4509ACE94,
-        0x26752045FBBC252B,
-        0xBFFC491F662BC467,
-        0xDD593272FC202449,
-        0x3CBBC218D46D4303,
-        0x91B372F817456E1F,
-        0x681FAF69BC6385A0,
-        0xB686BBEEBAA43ED4,
-        0x1469B5084CD0CA01,
-        0x98C98009CBCA94AC,
-        0x6438379A73D8C354,
-        0xC2CABA2DC0C5FE26,
-        0x3E3B0DBE78D7A9DE,
-        0x50B9EE202D670F04,
-        0x4590B27B37EAB0E5,
-        0x6025B4CB36B10AF3,
-        0xFB2C1237079C0162,
-        0xA12F28130C936BE8,
-        0x4B37E52E54EB1CCC,
-        0x083A1BA28AD28F53,
-        0xC10A9CD83A22611B,
-        0x9F1425AD7444C236,
-        0x069D4CF7E9D3237A,
-        0xEDC56899E7F621BE,
-        0x778C273680865FCF,
-        0x309C5AEB1BD605F7,
-        0x8DE0DC52D1472B4D,
-        0xF8EC34C2FD7B9E5F,
-        0xEA18CD3D58787724,
-        0xAAD515447CA67B86,
-        0x9989695A9D97E14C,
-        0x0000000000000000,
-        0xF196C63321F464EC,
-        0x71116BC169557CB5,
-        0xAF887F466F92C7C1,
-        0x972E3E0FFE964D65,
-        0x190EC4A8D536F915,
-        0x95AEF1A9522CA7B8,
-        0xDC19DB21AA7D51A9,
-        0x94EE18FA0471D258,
-        0x8087ADF248A11859,
-        0xC457F6DA2916DD5C,
-        0xFA6CFB6451C17482,
-        0xF256E0C6DB13FBD1,
-        0x6A9F60CF10D96F7D,
-        0x4DAAA9D9BD383FB6,
-        0x03C026F5FAE79F3D,
-        0xDE99148706C7BB74,
-        0x2A52B8B6340763DF,
-        0x6FC20ACD03EDD33A,
-        0xD423C08320AFDEFA,
-        0xBBE1CA4E23420DC0,
-        0x966ED75CA8CB3885,
-        0xEB58246E0E2502C4,
-        0x055D6A021334BC47,
-        0xA47242111FA7D7AF,
-        0xE3623FCC84F78D97,
-        0x81C744A11EFC6DB9,
-        0xAEC8961539CFB221,
-        0xF31609958D4E8E31,
-        0x63E5923ECC5695CE,
-        0x47107DDD9B505A38,
-        0xA3AFE7B5A0298135,
-        0x792B7063E387F3E6,
-        0x0140E953565D75E0,
-        0x12F4F9FFA503E97B,
-        0x750CE8902C3CB512,
-        0xDBC47E8515F30733,
-        0x1ED3610C6AB8AF8F,
-        0x5239218681DDE5D9,
-        0xE222D69FD2AAF877,
-        0xFE71783514A8BD25,
-        0xCAF0A18F4A177175,
-        0x61655D9860EC7F13,
-        0xE77FBC9DC19E4430,
-        0x2CCFF441DDD440A5,
-        0x16E97AAEE06A20DC,
-        0xA855DAE2D01C915B,
-        0x1D1347F9905F30B2,
-        0xB7C652BDECF94B34,
-        0xD03E43D265C6175D,
-        0xFDB15EC0EE4F2218,
-        0x57644B8492E9599E,
-        0x07DDA5A4BF8E569A,
-        0x54A46D71680EC6A3,
-        0x5624A2D7C4B42C7E,
-        0xBEBCA04C3076B187,
-        0x7D36F332A6EE3A41,
-        0x3B6667BC6BE31599,
-        0x695F463AEA3EF040,
-        0xAD08B0E0C3282D1C,
-        0xB15B1E4A052A684E,
-        0x44D05B2861B7C505,
-        0x15295C5B1A8DBFE1,
-        0x744C01C37A61C0F2,
-        0x59C31CD1F1E8F5B7,
-        0xEF45A73F4B4CCB63,
-        0x6BDF899C46841A9D,
-        0x3DFB2B4B823036E3,
-        0xA2EF0EE6F674F4D5,
-        0x184E2DFB836B8CF5,
-        0x1134DF0A5FE47646,
-        0xBAA1231D751F7820,
-        0xD17EAA81339B62BD,
-        0xB01BF71953771DAE,
-        0x849A2EA30DC8D1FE,
-        0x705182923F080955,
-        0x0EA757556301AC29,
-        0x041D83514569C9A7,
-        0x0ABAD4042668658E,
-        0x49B72A88F851F611,
-        0x8A3D79F66EC97DD7,
-        0xCD2D042BF59927EF,
-        0xC930877AB0F0EE48,
-        0x9273540DEDA2F122,
-        0xC797D02FD3F14261,
-        0xE1E2F06A284D674A,
-        0xD2BE8C74C97CFD80,
-        0x9A494FAF67707E71,
-        0xB3DBD1ECA9908293,
-        0x72D14D3493B2E388,
-        0xD6A30F258C153427,
-    ],
-];
-
-#[cfg(test)]
-mod test {
-    use super::SHUFFLED_LIN_TABLE;
-    use crate::consts::{A, P};
-
-    #[allow(clippy::needless_range_loop)]
-    fn gen_table() -> [[u64; 256]; 8] {
-        let mut table: [[u64; 256]; 8] = [[0; 256]; 8];
-        for i in 0..8 {
-            for j in 0..256 {
-                let mut accum = 0u64;
-                for k in 0..8 {
-                    if P[j] & (1 << k) != 0 {
-                        accum ^= A[8 * i + k];
-                    }
-                }
-                table[i][j] = accum;
-            }
-        }
-        table
-    }
-
-    #[test]
-    fn test_table() {
-        let table = gen_table();
-        for i in 0..8 {
-            for j in 0..256 {
-                assert_eq!(SHUFFLED_LIN_TABLE[i][j], table[i][j]);
-            }
-        }
-    }
-}


Test patch: