pub(crate) const ROWS: usize = 8;
pub(crate) const SBOXES: [[u8; 256]; 4] = [
[
0xa8, 0x43, 0x5f, 0x06, 0x6b, 0x75, 0x6c, 0x59, 0x71, 0xdf, 0x87, 0x95, 0x17, 0xf0, 0xd8,
0x09, 0x6d, 0xf3, 0x1d, 0xcb, 0xc9, 0x4d, 0x2c, 0xaf, 0x79, 0xe0, 0x97, 0xfd, 0x6f, 0x4b,
0x45, 0x39, 0x3e, 0xdd, 0xa3, 0x4f, 0xb4, 0xb6, 0x9a, 0x0e, 0x1f, 0xbf, 0x15, 0xe1, 0x49,
0xd2, 0x93, 0xc6, 0x92, 0x72, 0x9e, 0x61, 0xd1, 0x63, 0xfa, 0xee, 0xf4, 0x19, 0xd5, 0xad,
0x58, 0xa4, 0xbb, 0xa1, 0xdc, 0xf2, 0x83, 0x37, 0x42, 0xe4, 0x7a, 0x32, 0x9c, 0xcc, 0xab,
0x4a, 0x8f, 0x6e, 0x04, 0x27, 0x2e, 0xe7, 0xe2, 0x5a, 0x96, 0x16, 0x23, 0x2b, 0xc2, 0x65,
0x66, 0x0f, 0xbc, 0xa9, 0x47, 0x41, 0x34, 0x48, 0xfc, 0xb7, 0x6a, 0x88, 0xa5, 0x53, 0x86,
0xf9, 0x5b, 0xdb, 0x38, 0x7b, 0xc3, 0x1e, 0x22, 0x33, 0x24, 0x28, 0x36, 0xc7, 0xb2, 0x3b,
0x8e, 0x77, 0xba, 0xf5, 0x14, 0x9f, 0x08, 0x55, 0x9b, 0x4c, 0xfe, 0x60, 0x5c, 0xda, 0x18,
0x46, 0xcd, 0x7d, 0x21, 0xb0, 0x3f, 0x1b, 0x89, 0xff, 0xeb, 0x84, 0x69, 0x3a, 0x9d, 0xd7,
0xd3, 0x70, 0x67, 0x40, 0xb5, 0xde, 0x5d, 0x30, 0x91, 0xb1, 0x78, 0x11, 0x01, 0xe5, 0x00,
0x68, 0x98, 0xa0, 0xc5, 0x02, 0xa6, 0x74, 0x2d, 0x0b, 0xa2, 0x76, 0xb3, 0xbe, 0xce, 0xbd,
0xae, 0xe9, 0x8a, 0x31, 0x1c, 0xec, 0xf1, 0x99, 0x94, 0xaa, 0xf6, 0x26, 0x2f, 0xef, 0xe8,
0x8c, 0x35, 0x03, 0xd4, 0x7f, 0xfb, 0x05, 0xc1, 0x5e, 0x90, 0x20, 0x3d, 0x82, 0xf7, 0xea,
0x0a, 0x0d, 0x7e, 0xf8, 0x50, 0x1a, 0xc4, 0x07, 0x57, 0xb8, 0x3c, 0x62, 0xe3, 0xc8, 0xac,
0x52, 0x64, 0x10, 0xd0, 0xd9, 0x13, 0x0c, 0x12, 0x29, 0x51, 0xb9, 0xcf, 0xd6, 0x73, 0x8d,
0x81, 0x54, 0xc0, 0xed, 0x4e, 0x44, 0xa7, 0x2a, 0x85, 0x25, 0xe6, 0xca, 0x7c, 0x8b, 0x56,
0x80,
],
[
0xce, 0xbb, 0xeb, 0x92, 0xea, 0xcb, 0x13, 0xc1, 0xe9, 0x3a, 0xd6, 0xb2, 0xd2, 0x90, 0x17,
0xf8, 0x42, 0x15, 0x56, 0xb4, 0x65, 0x1c, 0x88, 0x43, 0xc5, 0x5c, 0x36, 0xba, 0xf5, 0x57,
0x67, 0x8d, 0x31, 0xf6, 0x64, 0x58, 0x9e, 0xf4, 0x22, 0xaa, 0x75, 0x0f, 0x02, 0xb1, 0xdf,
0x6d, 0x73, 0x4d, 0x7c, 0x26, 0x2e, 0xf7, 0x08, 0x5d, 0x44, 0x3e, 0x9f, 0x14, 0xc8, 0xae,
0x54, 0x10, 0xd8, 0xbc, 0x1a, 0x6b, 0x69, 0xf3, 0xbd, 0x33, 0xab, 0xfa, 0xd1, 0x9b, 0x68,
0x4e, 0x16, 0x95, 0x91, 0xee, 0x4c, 0x63, 0x8e, 0x5b, 0xcc, 0x3c, 0x19, 0xa1, 0x81, 0x49,
0x7b, 0xd9, 0x6f, 0x37, 0x60, 0xca, 0xe7, 0x2b, 0x48, 0xfd, 0x96, 0x45, 0xfc, 0x41, 0x12,
0x0d, 0x79, 0xe5, 0x89, 0x8c, 0xe3, 0x20, 0x30, 0xdc, 0xb7, 0x6c, 0x4a, 0xb5, 0x3f, 0x97,
0xd4, 0x62, 0x2d, 0x06, 0xa4, 0xa5, 0x83, 0x5f, 0x2a, 0xda, 0xc9, 0x00, 0x7e, 0xa2, 0x55,
0xbf, 0x11, 0xd5, 0x9c, 0xcf, 0x0e, 0x0a, 0x3d, 0x51, 0x7d, 0x93, 0x1b, 0xfe, 0xc4, 0x47,
0x09, 0x86, 0x0b, 0x8f, 0x9d, 0x6a, 0x07, 0xb9, 0xb0, 0x98, 0x18, 0x32, 0x71, 0x4b, 0xef,
0x3b, 0x70, 0xa0, 0xe4, 0x40, 0xff, 0xc3, 0xa9, 0xe6, 0x78, 0xf9, 0x8b, 0x46, 0x80, 0x1e,
0x38, 0xe1, 0xb8, 0xa8, 0xe0, 0x0c, 0x23, 0x76, 0x1d, 0x25, 0x24, 0x05, 0xf1, 0x6e, 0x94,
0x28, 0x9a, 0x84, 0xe8, 0xa3, 0x4f, 0x77, 0xd3, 0x85, 0xe2, 0x52, 0xf2, 0x82, 0x50, 0x7a,
0x2f, 0x74, 0x53, 0xb3, 0x61, 0xaf, 0x39, 0x35, 0xde, 0xcd, 0x1f, 0x99, 0xac, 0xad, 0x72,
0x2c, 0xdd, 0xd0, 0x87, 0xbe, 0x5e, 0xa6, 0xec, 0x04, 0xc6, 0x03, 0x34, 0xfb, 0xdb, 0x59,
0xb6, 0xc2, 0x01, 0xf0, 0x5a, 0xed, 0xa7, 0x66, 0x21, 0x7f, 0x8a, 0x27, 0xc7, 0xc0, 0x29,
0xd7,
],
[
0x93, 0xd9, 0x9a, 0xb5, 0x98, 0x22, 0x45, 0xfc, 0xba, 0x6a, 0xdf, 0x02, 0x9f, 0xdc, 0x51,
0x59, 0x4a, 0x17, 0x2b, 0xc2, 0x94, 0xf4, 0xbb, 0xa3, 0x62, 0xe4, 0x71, 0xd4, 0xcd, 0x70,
0x16, 0xe1, 0x49, 0x3c, 0xc0, 0xd8, 0x5c, 0x9b, 0xad, 0x85, 0x53, 0xa1, 0x7a, 0xc8, 0x2d,
0xe0, 0xd1, 0x72, 0xa6, 0x2c, 0xc4, 0xe3, 0x76, 0x78, 0xb7, 0xb4, 0x09, 0x3b, 0x0e, 0x41,
0x4c, 0xde, 0xb2, 0x90, 0x25, 0xa5, 0xd7, 0x03, 0x11, 0x00, 0xc3, 0x2e, 0x92, 0xef, 0x4e,
0x12, 0x9d, 0x7d, 0xcb, 0x35, 0x10, 0xd5, 0x4f, 0x9e, 0x4d, 0xa9, 0x55, 0xc6, 0xd0, 0x7b,
0x18, 0x97, 0xd3, 0x36, 0xe6, 0x48, 0x56, 0x81, 0x8f, 0x77, 0xcc, 0x9c, 0xb9, 0xe2, 0xac,
0xb8, 0x2f, 0x15, 0xa4, 0x7c, 0xda, 0x38, 0x1e, 0x0b, 0x05, 0xd6, 0x14, 0x6e, 0x6c, 0x7e,
0x66, 0xfd, 0xb1, 0xe5, 0x60, 0xaf, 0x5e, 0x33, 0x87, 0xc9, 0xf0, 0x5d, 0x6d, 0x3f, 0x88,
0x8d, 0xc7, 0xf7, 0x1d, 0xe9, 0xec, 0xed, 0x80, 0x29, 0x27, 0xcf, 0x99, 0xa8, 0x50, 0x0f,
0x37, 0x24, 0x28, 0x30, 0x95, 0xd2, 0x3e, 0x5b, 0x40, 0x83, 0xb3, 0x69, 0x57, 0x1f, 0x07,
0x1c, 0x8a, 0xbc, 0x20, 0xeb, 0xce, 0x8e, 0xab, 0xee, 0x31, 0xa2, 0x73, 0xf9, 0xca, 0x3a,
0x1a, 0xfb, 0x0d, 0xc1, 0xfe, 0xfa, 0xf2, 0x6f, 0xbd, 0x96, 0xdd, 0x43, 0x52, 0xb6, 0x08,
0xf3, 0xae, 0xbe, 0x19, 0x89, 0x32, 0x26, 0xb0, 0xea, 0x4b, 0x64, 0x84, 0x82, 0x6b, 0xf5,
0x79, 0xbf, 0x01, 0x5f, 0x75, 0x63, 0x1b, 0x23, 0x3d, 0x68, 0x2a, 0x65, 0xe8, 0x91, 0xf6,
0xff, 0x13, 0x58, 0xf1, 0x47, 0x0a, 0x7f, 0xc5, 0xa7, 0xe7, 0x61, 0x5a, 0x06, 0x46, 0x44,
0x42, 0x04, 0xa0, 0xdb, 0x39, 0x86, 0x54, 0xaa, 0x8c, 0x34, 0x21, 0x8b, 0xf8, 0x0c, 0x74,
0x67,
],
[
0x68, 0x8d, 0xca, 0x4d, 0x73, 0x4b, 0x4e, 0x2a, 0xd4, 0x52, 0x26, 0xb3, 0x54, 0x1e, 0x19,
0x1f, 0x22, 0x03, 0x46, 0x3d, 0x2d, 0x4a, 0x53, 0x83, 0x13, 0x8a, 0xb7, 0xd5, 0x25, 0x79,
0xf5, 0xbd, 0x58, 0x2f, 0x0d, 0x02, 0xed, 0x51, 0x9e, 0x11, 0xf2, 0x3e, 0x55, 0x5e, 0xd1,
0x16, 0x3c, 0x66, 0x70, 0x5d, 0xf3, 0x45, 0x40, 0xcc, 0xe8, 0x94, 0x56, 0x08, 0xce, 0x1a,
0x3a, 0xd2, 0xe1, 0xdf, 0xb5, 0x38, 0x6e, 0x0e, 0xe5, 0xf4, 0xf9, 0x86, 0xe9, 0x4f, 0xd6,
0x85, 0x23, 0xcf, 0x32, 0x99, 0x31, 0x14, 0xae, 0xee, 0xc8, 0x48, 0xd3, 0x30, 0xa1, 0x92,
0x41, 0xb1, 0x18, 0xc4, 0x2c, 0x71, 0x72, 0x44, 0x15, 0xfd, 0x37, 0xbe, 0x5f, 0xaa, 0x9b,
0x88, 0xd8, 0xab, 0x89, 0x9c, 0xfa, 0x60, 0xea, 0xbc, 0x62, 0x0c, 0x24, 0xa6, 0xa8, 0xec,
0x67, 0x20, 0xdb, 0x7c, 0x28, 0xdd, 0xac, 0x5b, 0x34, 0x7e, 0x10, 0xf1, 0x7b, 0x8f, 0x63,
0xa0, 0x05, 0x9a, 0x43, 0x77, 0x21, 0xbf, 0x27, 0x09, 0xc3, 0x9f, 0xb6, 0xd7, 0x29, 0xc2,
0xeb, 0xc0, 0xa4, 0x8b, 0x8c, 0x1d, 0xfb, 0xff, 0xc1, 0xb2, 0x97, 0x2e, 0xf8, 0x65, 0xf6,
0x75, 0x07, 0x04, 0x49, 0x33, 0xe4, 0xd9, 0xb9, 0xd0, 0x42, 0xc7, 0x6c, 0x90, 0x00, 0x8e,
0x6f, 0x50, 0x01, 0xc5, 0xda, 0x47, 0x3f, 0xcd, 0x69, 0xa2, 0xe2, 0x7a, 0xa7, 0xc6, 0x93,
0x0f, 0x0a, 0x06, 0xe6, 0x2b, 0x96, 0xa3, 0x1c, 0xaf, 0x6a, 0x12, 0x84, 0x39, 0xe7, 0xb0,
0x82, 0xf7, 0xfe, 0x9d, 0x87, 0x5c, 0x81, 0x35, 0xde, 0xb4, 0xa5, 0xfc, 0x80, 0xef, 0xcb,
0xbb, 0x6b, 0x76, 0xba, 0x5a, 0x7d, 0x78, 0x0b, 0x95, 0xe3, 0xad, 0x74, 0x98, 0x3b, 0x36,
0x64, 0x6d, 0xdc, 0xf0, 0x59, 0xa9, 0x4c, 0x17, 0x7f, 0x91, 0xb8, 0xc9, 0x57, 0x1b, 0xe0,
0x61,
],
];
pub(crate) const SBOXES_DEC: [[u8; 256]; 4] = [
[
0xa4, 0xa2, 0xa9, 0xc5, 0x4e, 0xc9, 0x03, 0xd9, 0x7e, 0x0f, 0xd2, 0xad, 0xe7, 0xd3, 0x27,
0x5b, 0xe3, 0xa1, 0xe8, 0xe6, 0x7c, 0x2a, 0x55, 0x0c, 0x86, 0x39, 0xd7, 0x8d, 0xb8, 0x12,
0x6f, 0x28, 0xcd, 0x8a, 0x70, 0x56, 0x72, 0xf9, 0xbf, 0x4f, 0x73, 0xe9, 0xf7, 0x57, 0x16,
0xac, 0x50, 0xc0, 0x9d, 0xb7, 0x47, 0x71, 0x60, 0xc4, 0x74, 0x43, 0x6c, 0x1f, 0x93, 0x77,
0xdc, 0xce, 0x20, 0x8c, 0x99, 0x5f, 0x44, 0x01, 0xf5, 0x1e, 0x87, 0x5e, 0x61, 0x2c, 0x4b,
0x1d, 0x81, 0x15, 0xf4, 0x23, 0xd6, 0xea, 0xe1, 0x67, 0xf1, 0x7f, 0xfe, 0xda, 0x3c, 0x07,
0x53, 0x6a, 0x84, 0x9c, 0xcb, 0x02, 0x83, 0x33, 0xdd, 0x35, 0xe2, 0x59, 0x5a, 0x98, 0xa5,
0x92, 0x64, 0x04, 0x06, 0x10, 0x4d, 0x1c, 0x97, 0x08, 0x31, 0xee, 0xab, 0x05, 0xaf, 0x79,
0xa0, 0x18, 0x46, 0x6d, 0xfc, 0x89, 0xd4, 0xc7, 0xff, 0xf0, 0xcf, 0x42, 0x91, 0xf8, 0x68,
0x0a, 0x65, 0x8e, 0xb6, 0xfd, 0xc3, 0xef, 0x78, 0x4c, 0xcc, 0x9e, 0x30, 0x2e, 0xbc, 0x0b,
0x54, 0x1a, 0xa6, 0xbb, 0x26, 0x80, 0x48, 0x94, 0x32, 0x7d, 0xa7, 0x3f, 0xae, 0x22, 0x3d,
0x66, 0xaa, 0xf6, 0x00, 0x5d, 0xbd, 0x4a, 0xe0, 0x3b, 0xb4, 0x17, 0x8b, 0x9f, 0x76, 0xb0,
0x24, 0x9a, 0x25, 0x63, 0xdb, 0xeb, 0x7a, 0x3e, 0x5c, 0xb3, 0xb1, 0x29, 0xf2, 0xca, 0x58,
0x6e, 0xd8, 0xa8, 0x2f, 0x75, 0xdf, 0x14, 0xfb, 0x13, 0x49, 0x88, 0xb2, 0xec, 0xe4, 0x34,
0x2d, 0x96, 0xc6, 0x3a, 0xed, 0x95, 0x0e, 0xe5, 0x85, 0x6b, 0x40, 0x21, 0x9b, 0x09, 0x19,
0x2b, 0x52, 0xde, 0x45, 0xa3, 0xfa, 0x51, 0xc2, 0xb5, 0xd1, 0x90, 0xb9, 0xf3, 0x37, 0xc1,
0x0d, 0xba, 0x41, 0x11, 0x38, 0x7b, 0xbe, 0xd0, 0xd5, 0x69, 0x36, 0xc8, 0x62, 0x1b, 0x82,
0x8f,
],
[
0x83, 0xf2, 0x2a, 0xeb, 0xe9, 0xbf, 0x7b, 0x9c, 0x34, 0x96, 0x8d, 0x98, 0xb9, 0x69, 0x8c,
0x29, 0x3d, 0x88, 0x68, 0x06, 0x39, 0x11, 0x4c, 0x0e, 0xa0, 0x56, 0x40, 0x92, 0x15, 0xbc,
0xb3, 0xdc, 0x6f, 0xf8, 0x26, 0xba, 0xbe, 0xbd, 0x31, 0xfb, 0xc3, 0xfe, 0x80, 0x61, 0xe1,
0x7a, 0x32, 0xd2, 0x70, 0x20, 0xa1, 0x45, 0xec, 0xd9, 0x1a, 0x5d, 0xb4, 0xd8, 0x09, 0xa5,
0x55, 0x8e, 0x37, 0x76, 0xa9, 0x67, 0x10, 0x17, 0x36, 0x65, 0xb1, 0x95, 0x62, 0x59, 0x74,
0xa3, 0x50, 0x2f, 0x4b, 0xc8, 0xd0, 0x8f, 0xcd, 0xd4, 0x3c, 0x86, 0x12, 0x1d, 0x23, 0xef,
0xf4, 0x53, 0x19, 0x35, 0xe6, 0x7f, 0x5e, 0xd6, 0x79, 0x51, 0x22, 0x14, 0xf7, 0x1e, 0x4a,
0x42, 0x9b, 0x41, 0x73, 0x2d, 0xc1, 0x5c, 0xa6, 0xa2, 0xe0, 0x2e, 0xd3, 0x28, 0xbb, 0xc9,
0xae, 0x6a, 0xd1, 0x5a, 0x30, 0x90, 0x84, 0xf9, 0xb2, 0x58, 0xcf, 0x7e, 0xc5, 0xcb, 0x97,
0xe4, 0x16, 0x6c, 0xfa, 0xb0, 0x6d, 0x1f, 0x52, 0x99, 0x0d, 0x4e, 0x03, 0x91, 0xc2, 0x4d,
0x64, 0x77, 0x9f, 0xdd, 0xc4, 0x49, 0x8a, 0x9a, 0x24, 0x38, 0xa7, 0x57, 0x85, 0xc7, 0x7c,
0x7d, 0xe7, 0xf6, 0xb7, 0xac, 0x27, 0x46, 0xde, 0xdf, 0x3b, 0xd7, 0x9e, 0x2b, 0x0b, 0xd5,
0x13, 0x75, 0xf0, 0x72, 0xb6, 0x9d, 0x1b, 0x01, 0x3f, 0x44, 0xe5, 0x87, 0xfd, 0x07, 0xf1,
0xab, 0x94, 0x18, 0xea, 0xfc, 0x3a, 0x82, 0x5f, 0x05, 0x54, 0xdb, 0x00, 0x8b, 0xe3, 0x48,
0x0c, 0xca, 0x78, 0x89, 0x0a, 0xff, 0x3e, 0x5b, 0x81, 0xee, 0x71, 0xe2, 0xda, 0x2c, 0xb8,
0xb5, 0xcc, 0x6e, 0xa8, 0x6b, 0xad, 0x60, 0xc6, 0x08, 0x04, 0x02, 0xe8, 0xf5, 0x4f, 0xa4,
0xf3, 0xc0, 0xce, 0x43, 0x25, 0x1c, 0x21, 0x33, 0x0f, 0xaf, 0x47, 0xed, 0x66, 0x63, 0x93,
0xaa,
],
[
0x45, 0xd4, 0x0b, 0x43, 0xf1, 0x72, 0xed, 0xa4, 0xc2, 0x38, 0xe6, 0x71, 0xfd, 0xb6, 0x3a,
0x95, 0x50, 0x44, 0x4b, 0xe2, 0x74, 0x6b, 0x1e, 0x11, 0x5a, 0xc6, 0xb4, 0xd8, 0xa5, 0x8a,
0x70, 0xa3, 0xa8, 0xfa, 0x05, 0xd9, 0x97, 0x40, 0xc9, 0x90, 0x98, 0x8f, 0xdc, 0x12, 0x31,
0x2c, 0x47, 0x6a, 0x99, 0xae, 0xc8, 0x7f, 0xf9, 0x4f, 0x5d, 0x96, 0x6f, 0xf4, 0xb3, 0x39,
0x21, 0xda, 0x9c, 0x85, 0x9e, 0x3b, 0xf0, 0xbf, 0xef, 0x06, 0xee, 0xe5, 0x5f, 0x20, 0x10,
0xcc, 0x3c, 0x54, 0x4a, 0x52, 0x94, 0x0e, 0xc0, 0x28, 0xf6, 0x56, 0x60, 0xa2, 0xe3, 0x0f,
0xec, 0x9d, 0x24, 0x83, 0x7e, 0xd5, 0x7c, 0xeb, 0x18, 0xd7, 0xcd, 0xdd, 0x78, 0xff, 0xdb,
0xa1, 0x09, 0xd0, 0x76, 0x84, 0x75, 0xbb, 0x1d, 0x1a, 0x2f, 0xb0, 0xfe, 0xd6, 0x34, 0x63,
0x35, 0xd2, 0x2a, 0x59, 0x6d, 0x4d, 0x77, 0xe7, 0x8e, 0x61, 0xcf, 0x9f, 0xce, 0x27, 0xf5,
0x80, 0x86, 0xc7, 0xa6, 0xfb, 0xf8, 0x87, 0xab, 0x62, 0x3f, 0xdf, 0x48, 0x00, 0x14, 0x9a,
0xbd, 0x5b, 0x04, 0x92, 0x02, 0x25, 0x65, 0x4c, 0x53, 0x0c, 0xf2, 0x29, 0xaf, 0x17, 0x6c,
0x41, 0x30, 0xe9, 0x93, 0x55, 0xf7, 0xac, 0x68, 0x26, 0xc4, 0x7d, 0xca, 0x7a, 0x3e, 0xa0,
0x37, 0x03, 0xc1, 0x36, 0x69, 0x66, 0x08, 0x16, 0xa7, 0xbc, 0xc5, 0xd3, 0x22, 0xb7, 0x13,
0x46, 0x32, 0xe8, 0x57, 0x88, 0x2b, 0x81, 0xb2, 0x4e, 0x64, 0x1c, 0xaa, 0x91, 0x58, 0x2e,
0x9b, 0x5c, 0x1b, 0x51, 0x73, 0x42, 0x23, 0x01, 0x6e, 0xf3, 0x0d, 0xbe, 0x3d, 0x0a, 0x2d,
0x1f, 0x67, 0x33, 0x19, 0x7b, 0x5e, 0xea, 0xde, 0x8b, 0xcb, 0xa9, 0x8c, 0x8d, 0xad, 0x49,
0x82, 0xe4, 0xba, 0xc3, 0x15, 0xd1, 0xe0, 0x89, 0xfc, 0xb1, 0xb9, 0xb5, 0x07, 0x79, 0xb8,
0xe1,
],
[
0xb2, 0xb6, 0x23, 0x11, 0xa7, 0x88, 0xc5, 0xa6, 0x39, 0x8f, 0xc4, 0xe8, 0x73, 0x22, 0x43,
0xc3, 0x82, 0x27, 0xcd, 0x18, 0x51, 0x62, 0x2d, 0xf7, 0x5c, 0x0e, 0x3b, 0xfd, 0xca, 0x9b,
0x0d, 0x0f, 0x79, 0x8c, 0x10, 0x4c, 0x74, 0x1c, 0x0a, 0x8e, 0x7c, 0x94, 0x07, 0xc7, 0x5e,
0x14, 0xa1, 0x21, 0x57, 0x50, 0x4e, 0xa9, 0x80, 0xd9, 0xef, 0x64, 0x41, 0xcf, 0x3c, 0xee,
0x2e, 0x13, 0x29, 0xba, 0x34, 0x5a, 0xae, 0x8a, 0x61, 0x33, 0x12, 0xb9, 0x55, 0xa8, 0x15,
0x05, 0xf6, 0x03, 0x06, 0x49, 0xb5, 0x25, 0x09, 0x16, 0x0c, 0x2a, 0x38, 0xfc, 0x20, 0xf4,
0xe5, 0x7f, 0xd7, 0x31, 0x2b, 0x66, 0x6f, 0xff, 0x72, 0x86, 0xf0, 0xa3, 0x2f, 0x78, 0x00,
0xbc, 0xcc, 0xe2, 0xb0, 0xf1, 0x42, 0xb4, 0x30, 0x5f, 0x60, 0x04, 0xec, 0xa5, 0xe3, 0x8b,
0xe7, 0x1d, 0xbf, 0x84, 0x7b, 0xe6, 0x81, 0xf8, 0xde, 0xd8, 0xd2, 0x17, 0xce, 0x4b, 0x47,
0xd6, 0x69, 0x6c, 0x19, 0x99, 0x9a, 0x01, 0xb3, 0x85, 0xb1, 0xf9, 0x59, 0xc2, 0x37, 0xe9,
0xc8, 0xa0, 0xed, 0x4f, 0x89, 0x68, 0x6d, 0xd5, 0x26, 0x91, 0x87, 0x58, 0xbd, 0xc9, 0x98,
0xdc, 0x75, 0xc0, 0x76, 0xf5, 0x67, 0x6b, 0x7e, 0xeb, 0x52, 0xcb, 0xd1, 0x5b, 0x9f, 0x0b,
0xdb, 0x40, 0x92, 0x1a, 0xfa, 0xac, 0xe4, 0xe1, 0x71, 0x1f, 0x65, 0x8d, 0x97, 0x9e, 0x95,
0x90, 0x5d, 0xb7, 0xc1, 0xaf, 0x54, 0xfb, 0x02, 0xe0, 0x35, 0xbb, 0x3a, 0x4d, 0xad, 0x2c,
0x3d, 0x56, 0x08, 0x1b, 0x4a, 0x93, 0x6a, 0xab, 0xb8, 0x7a, 0xf2, 0x7d, 0xda, 0x3f, 0xfe,
0x3e, 0xbe, 0xea, 0xaa, 0x44, 0xc6, 0xd0, 0x36, 0x48, 0x70, 0x96, 0x77, 0x24, 0x53, 0xdf,
0xf3, 0x83, 0x28, 0x32, 0x45, 0x1e, 0xa4, 0xd3, 0xa2, 0x46, 0x6e, 0x9c, 0xdd, 0x63, 0xd4,
0x9d,
],
];
#[allow(dead_code)]
pub(crate) const MDS_MATRIX: [[u8; ROWS]; ROWS] = [
[0x01, 0x01, 0x05, 0x01, 0x08, 0x06, 0x07, 0x04],
[0x04, 0x01, 0x01, 0x05, 0x01, 0x08, 0x06, 0x07],
[0x07, 0x04, 0x01, 0x01, 0x05, 0x01, 0x08, 0x06],
[0x06, 0x07, 0x04, 0x01, 0x01, 0x05, 0x01, 0x08],
[0x08, 0x06, 0x07, 0x04, 0x01, 0x01, 0x05, 0x01],
[0x01, 0x08, 0x06, 0x07, 0x04, 0x01, 0x01, 0x05],
[0x05, 0x01, 0x08, 0x06, 0x07, 0x04, 0x01, 0x01],
[0x01, 0x05, 0x01, 0x08, 0x06, 0x07, 0x04, 0x01],
];
#[allow(dead_code)]
pub(crate) const MDS_INV_MATRIX: [[u8; ROWS]; ROWS] = [
[0xad, 0x95, 0x76, 0xa8, 0x2f, 0x49, 0xd7, 0xca],
[0xca, 0xad, 0x95, 0x76, 0xa8, 0x2f, 0x49, 0xd7],
[0xd7, 0xca, 0xad, 0x95, 0x76, 0xa8, 0x2f, 0x49],
[0x49, 0xd7, 0xca, 0xad, 0x95, 0x76, 0xa8, 0x2f],
[0x2f, 0x49, 0xd7, 0xca, 0xad, 0x95, 0x76, 0xa8],
[0xa8, 0x2f, 0x49, 0xd7, 0xca, 0xad, 0x95, 0x76],
[0x76, 0xa8, 0x2f, 0x49, 0xd7, 0xca, 0xad, 0x95],
[0x95, 0x76, 0xa8, 0x2f, 0x49, 0xd7, 0xca, 0xad],
];
#[cfg(not(feature = "small-tables"))]
#[rustfmt::skip]
#[allow(clippy::unreadable_literal)] pub(crate) const MDS_TABLE: [[u64; 256]; ROWS] = [
[
0x0000000000000000,
0x0105010806070401,
0x020A02100C0E0802,
0x030F03180A090C03,
0x04140420181C1004,
0x051105281E1B1405,
0x061E063014121806,
0x071B073812151C07,
0x0828084030382008,
0x092D0948363F2409,
0x0A220A503C36280A,
0x0B270B583A312C0B,
0x0C3C0C602824300C,
0x0D390D682E23340D,
0x0E360E70242A380E,
0x0F330F78222D3C0F,
0x1050108060704010,
0x1155118866774411,
0x125A12906C7E4812,
0x135F13986A794C13,
0x144414A0786C5014,
0x154115A87E6B5415,
0x164E16B074625816,
0x174B17B872655C17,
0x187818C050486018,
0x197D19C8564F6419,
0x1A721AD05C46681A,
0x1B771BD85A416C1B,
0x1C6C1CE04854701C,
0x1D691DE84E53741D,
0x1E661EF0445A781E,
0x1F631FF8425D7C1F,
0x20A0201DC0E08020,
0x21A52115C6E78421,
0x22AA220DCCEE8822,
0x23AF2305CAE98C23,
0x24B4243DD8FC9024,
0x25B12535DEFB9425,
0x26BE262DD4F29826,
0x27BB2725D2F59C27,
0x2888285DF0D8A028,
0x298D2955F6DFA429,
0x2A822A4DFCD6A82A,
0x2B872B45FAD1AC2B,
0x2C9C2C7DE8C4B02C,
0x2D992D75EEC3B42D,
0x2E962E6DE4CAB82E,
0x2F932F65E2CDBC2F,
0x30F0309DA090C030,
0x31F53195A697C431,
0x32FA328DAC9EC832,
0x33FF3385AA99CC33,
0x34E434BDB88CD034,
0x35E135B5BE8BD435,
0x36EE36ADB482D836,
0x37EB37A5B285DC37,
0x38D838DD90A8E038,
0x39DD39D596AFE439,
0x3AD23ACD9CA6E83A,
0x3BD73BC59AA1EC3B,
0x3CCC3CFD88B4F03C,
0x3DC93DF58EB3F43D,
0x3EC63EED84BAF83E,
0x3FC33FE582BDFC3F,
0x405D403A9DDD1D40,
0x415841329BDA1941,
0x4257422A91D31542,
0x4352432297D41143,
0x4449441A85C10D44,
0x454C451283C60945,
0x4643460A89CF0546,
0x474647028FC80147,
0x4875487AADE53D48,
0x49704972ABE23949,
0x4A7F4A6AA1EB354A,
0x4B7A4B62A7EC314B,
0x4C614C5AB5F92D4C,
0x4D644D52B3FE294D,
0x4E6B4E4AB9F7254E,
0x4F6E4F42BFF0214F,
0x500D50BAFDAD5D50,
0x510851B2FBAA5951,
0x520752AAF1A35552,
0x530253A2F7A45153,
0x5419549AE5B14D54,
0x551C5592E3B64955,
0x5613568AE9BF4556,
0x57165782EFB84157,
0x582558FACD957D58,
0x592059F2CB927959,
0x5A2F5AEAC19B755A,
0x5B2A5BE2C79C715B,
0x5C315CDAD5896D5C,
0x5D345DD2D38E695D,
0x5E3B5ECAD987655E,
0x5F3E5FC2DF80615F,
0x60FD60275D3D9D60,
0x61F8612F5B3A9961,
0x62F7623751339562,
0x63F2633F57349163,
0x64E9640745218D64,
0x65EC650F43268965,
0x66E36617492F8566,
0x67E6671F4F288167,
0x68D568676D05BD68,
0x69D0696F6B02B969,
0x6ADF6A77610BB56A,
0x6BDA6B7F670CB16B,
0x6CC16C477519AD6C,
0x6DC46D4F731EA96D,
0x6ECB6E577917A56E,
0x6FCE6F5F7F10A16F,
0x70AD70A73D4DDD70,
0x71A871AF3B4AD971,
0x72A772B73143D572,
0x73A273BF3744D173,
0x74B974872551CD74,
0x75BC758F2356C975,
0x76B37697295FC576,
0x77B6779F2F58C177,
0x788578E70D75FD78,
0x798079EF0B72F979,
0x7A8F7AF7017BF57A,
0x7B8A7BFF077CF17B,
0x7C917CC71569ED7C,
0x7D947DCF136EE97D,
0x7E9B7ED71967E57E,
0x7F9E7FDF1F60E17F,
0x80BA807427A73A80,
0x81BF817C21A03E81,
0x82B082642BA93282,
0x83B5836C2DAE3683,
0x84AE84543FBB2A84,
0x85AB855C39BC2E85,
0x86A4864433B52286,
0x87A1874C35B22687,
0x88928834179F1A88,
0x8997893C11981E89,
0x8A988A241B91128A,
0x8B9D8B2C1D96168B,
0x8C868C140F830A8C,
0x8D838D1C09840E8D,
0x8E8C8E04038D028E,
0x8F898F0C058A068F,
0x90EA90F447D77A90,
0x91EF91FC41D07E91,
0x92E092E44BD97292,
0x93E593EC4DDE7693,
0x94FE94D45FCB6A94,
0x95FB95DC59CC6E95,
0x96F496C453C56296,
0x97F197CC55C26697,
0x98C298B477EF5A98,
0x99C799BC71E85E99,
0x9AC89AA47BE1529A,
0x9BCD9BAC7DE6569B,
0x9CD69C946FF34A9C,
0x9DD39D9C69F44E9D,
0x9EDC9E8463FD429E,
0x9FD99F8C65FA469F,
0xA01AA069E747BAA0,
0xA11FA161E140BEA1,
0xA210A279EB49B2A2,
0xA315A371ED4EB6A3,
0xA40EA449FF5BAAA4,
0xA50BA541F95CAEA5,
0xA604A659F355A2A6,
0xA701A751F552A6A7,
0xA832A829D77F9AA8,
0xA937A921D1789EA9,
0xAA38AA39DB7192AA,
0xAB3DAB31DD7696AB,
0xAC26AC09CF638AAC,
0xAD23AD01C9648EAD,
0xAE2CAE19C36D82AE,
0xAF29AF11C56A86AF,
0xB04AB0E98737FAB0,
0xB14FB1E18130FEB1,
0xB240B2F98B39F2B2,
0xB345B3F18D3EF6B3,
0xB45EB4C99F2BEAB4,
0xB55BB5C1992CEEB5,
0xB654B6D99325E2B6,
0xB751B7D19522E6B7,
0xB862B8A9B70FDAB8,
0xB967B9A1B108DEB9,
0xBA68BAB9BB01D2BA,
0xBB6DBBB1BD06D6BB,
0xBC76BC89AF13CABC,
0xBD73BD81A914CEBD,
0xBE7CBE99A31DC2BE,
0xBF79BF91A51AC6BF,
0xC0E7C04EBA7A27C0,
0xC1E2C146BC7D23C1,
0xC2EDC25EB6742FC2,
0xC3E8C356B0732BC3,
0xC4F3C46EA26637C4,
0xC5F6C566A46133C5,
0xC6F9C67EAE683FC6,
0xC7FCC776A86F3BC7,
0xC8CFC80E8A4207C8,
0xC9CAC9068C4503C9,
0xCAC5CA1E864C0FCA,
0xCBC0CB16804B0BCB,
0xCCDBCC2E925E17CC,
0xCDDECD26945913CD,
0xCED1CE3E9E501FCE,
0xCFD4CF3698571BCF,
0xD0B7D0CEDA0A67D0,
0xD1B2D1C6DC0D63D1,
0xD2BDD2DED6046FD2,
0xD3B8D3D6D0036BD3,
0xD4A3D4EEC21677D4,
0xD5A6D5E6C41173D5,
0xD6A9D6FECE187FD6,
0xD7ACD7F6C81F7BD7,
0xD89FD88EEA3247D8,
0xD99AD986EC3543D9,
0xDA95DA9EE63C4FDA,
0xDB90DB96E03B4BDB,
0xDC8BDCAEF22E57DC,
0xDD8EDDA6F42953DD,
0xDE81DEBEFE205FDE,
0xDF84DFB6F8275BDF,
0xE047E0537A9AA7E0,
0xE142E15B7C9DA3E1,
0xE24DE2437694AFE2,
0xE348E34B7093ABE3,
0xE453E4736286B7E4,
0xE556E57B6481B3E5,
0xE659E6636E88BFE6,
0xE75CE76B688FBBE7,
0xE86FE8134AA287E8,
0xE96AE91B4CA583E9,
0xEA65EA0346AC8FEA,
0xEB60EB0B40AB8BEB,
0xEC7BEC3352BE97EC,
0xED7EED3B54B993ED,
0xEE71EE235EB09FEE,
0xEF74EF2B58B79BEF,
0xF017F0D31AEAE7F0,
0xF112F1DB1CEDE3F1,
0xF21DF2C316E4EFF2,
0xF318F3CB10E3EBF3,
0xF403F4F302F6F7F4,
0xF506F5FB04F1F3F5,
0xF609F6E30EF8FFF6,
0xF70CF7EB08FFFBF7,
0xF83FF8932AD2C7F8,
0xF93AF99B2CD5C3F9,
0xFA35FA8326DCCFFA,
0xFB30FB8B20DBCBFB,
0xFC2BFCB332CED7FC,
0xFD2EFDBB34C9D3FD,
0xFE21FEA33EC0DFFE,
0xFF24FFAB38C7DBFF,
],
[
0x0000000000000000,
0x0501080607040101,
0x0A02100C0E080202,
0x0F03180A090C0303,
0x140420181C100404,
0x1105281E1B140505,
0x1E06301412180606,
0x1B073812151C0707,
0x2808403038200808,
0x2D0948363F240909,
0x220A503C36280A0A,
0x270B583A312C0B0B,
0x3C0C602824300C0C,
0x390D682E23340D0D,
0x360E70242A380E0E,
0x330F78222D3C0F0F,
0x5010806070401010,
0x5511886677441111,
0x5A12906C7E481212,
0x5F13986A794C1313,
0x4414A0786C501414,
0x4115A87E6B541515,
0x4E16B07462581616,
0x4B17B872655C1717,
0x7818C05048601818,
0x7D19C8564F641919,
0x721AD05C46681A1A,
0x771BD85A416C1B1B,
0x6C1CE04854701C1C,
0x691DE84E53741D1D,
0x661EF0445A781E1E,
0x631FF8425D7C1F1F,
0xA0201DC0E0802020,
0xA52115C6E7842121,
0xAA220DCCEE882222,
0xAF2305CAE98C2323,
0xB4243DD8FC902424,
0xB12535DEFB942525,
0xBE262DD4F2982626,
0xBB2725D2F59C2727,
0x88285DF0D8A02828,
0x8D2955F6DFA42929,
0x822A4DFCD6A82A2A,
0x872B45FAD1AC2B2B,
0x9C2C7DE8C4B02C2C,
0x992D75EEC3B42D2D,
0x962E6DE4CAB82E2E,
0x932F65E2CDBC2F2F,
0xF0309DA090C03030,
0xF53195A697C43131,
0xFA328DAC9EC83232,
0xFF3385AA99CC3333,
0xE434BDB88CD03434,
0xE135B5BE8BD43535,
0xEE36ADB482D83636,
0xEB37A5B285DC3737,
0xD838DD90A8E03838,
0xDD39D596AFE43939,
0xD23ACD9CA6E83A3A,
0xD73BC59AA1EC3B3B,
0xCC3CFD88B4F03C3C,
0xC93DF58EB3F43D3D,
0xC63EED84BAF83E3E,
0xC33FE582BDFC3F3F,
0x5D403A9DDD1D4040,
0x5841329BDA194141,
0x57422A91D3154242,
0x52432297D4114343,
0x49441A85C10D4444,
0x4C451283C6094545,
0x43460A89CF054646,
0x4647028FC8014747,
0x75487AADE53D4848,
0x704972ABE2394949,
0x7F4A6AA1EB354A4A,
0x7A4B62A7EC314B4B,
0x614C5AB5F92D4C4C,
0x644D52B3FE294D4D,
0x6B4E4AB9F7254E4E,
0x6E4F42BFF0214F4F,
0x0D50BAFDAD5D5050,
0x0851B2FBAA595151,
0x0752AAF1A3555252,
0x0253A2F7A4515353,
0x19549AE5B14D5454,
0x1C5592E3B6495555,
0x13568AE9BF455656,
0x165782EFB8415757,
0x2558FACD957D5858,
0x2059F2CB92795959,
0x2F5AEAC19B755A5A,
0x2A5BE2C79C715B5B,
0x315CDAD5896D5C5C,
0x345DD2D38E695D5D,
0x3B5ECAD987655E5E,
0x3E5FC2DF80615F5F,
0xFD60275D3D9D6060,
0xF8612F5B3A996161,
0xF762375133956262,
0xF2633F5734916363,
0xE9640745218D6464,
0xEC650F4326896565,
0xE36617492F856666,
0xE6671F4F28816767,
0xD568676D05BD6868,
0xD0696F6B02B96969,
0xDF6A77610BB56A6A,
0xDA6B7F670CB16B6B,
0xC16C477519AD6C6C,
0xC46D4F731EA96D6D,
0xCB6E577917A56E6E,
0xCE6F5F7F10A16F6F,
0xAD70A73D4DDD7070,
0xA871AF3B4AD97171,
0xA772B73143D57272,
0xA273BF3744D17373,
0xB974872551CD7474,
0xBC758F2356C97575,
0xB37697295FC57676,
0xB6779F2F58C17777,
0x8578E70D75FD7878,
0x8079EF0B72F97979,
0x8F7AF7017BF57A7A,
0x8A7BFF077CF17B7B,
0x917CC71569ED7C7C,
0x947DCF136EE97D7D,
0x9B7ED71967E57E7E,
0x9E7FDF1F60E17F7F,
0xBA807427A73A8080,
0xBF817C21A03E8181,
0xB082642BA9328282,
0xB5836C2DAE368383,
0xAE84543FBB2A8484,
0xAB855C39BC2E8585,
0xA4864433B5228686,
0xA1874C35B2268787,
0x928834179F1A8888,
0x97893C11981E8989,
0x988A241B91128A8A,
0x9D8B2C1D96168B8B,
0x868C140F830A8C8C,
0x838D1C09840E8D8D,
0x8C8E04038D028E8E,
0x898F0C058A068F8F,
0xEA90F447D77A9090,
0xEF91FC41D07E9191,
0xE092E44BD9729292,
0xE593EC4DDE769393,
0xFE94D45FCB6A9494,
0xFB95DC59CC6E9595,
0xF496C453C5629696,
0xF197CC55C2669797,
0xC298B477EF5A9898,
0xC799BC71E85E9999,
0xC89AA47BE1529A9A,
0xCD9BAC7DE6569B9B,
0xD69C946FF34A9C9C,
0xD39D9C69F44E9D9D,
0xDC9E8463FD429E9E,
0xD99F8C65FA469F9F,
0x1AA069E747BAA0A0,
0x1FA161E140BEA1A1,
0x10A279EB49B2A2A2,
0x15A371ED4EB6A3A3,
0x0EA449FF5BAAA4A4,
0x0BA541F95CAEA5A5,
0x04A659F355A2A6A6,
0x01A751F552A6A7A7,
0x32A829D77F9AA8A8,
0x37A921D1789EA9A9,
0x38AA39DB7192AAAA,
0x3DAB31DD7696ABAB,
0x26AC09CF638AACAC,
0x23AD01C9648EADAD,
0x2CAE19C36D82AEAE,
0x29AF11C56A86AFAF,
0x4AB0E98737FAB0B0,
0x4FB1E18130FEB1B1,
0x40B2F98B39F2B2B2,
0x45B3F18D3EF6B3B3,
0x5EB4C99F2BEAB4B4,
0x5BB5C1992CEEB5B5,
0x54B6D99325E2B6B6,
0x51B7D19522E6B7B7,
0x62B8A9B70FDAB8B8,
0x67B9A1B108DEB9B9,
0x68BAB9BB01D2BABA,
0x6DBBB1BD06D6BBBB,
0x76BC89AF13CABCBC,
0x73BD81A914CEBDBD,
0x7CBE99A31DC2BEBE,
0x79BF91A51AC6BFBF,
0xE7C04EBA7A27C0C0,
0xE2C146BC7D23C1C1,
0xEDC25EB6742FC2C2,
0xE8C356B0732BC3C3,
0xF3C46EA26637C4C4,
0xF6C566A46133C5C5,
0xF9C67EAE683FC6C6,
0xFCC776A86F3BC7C7,
0xCFC80E8A4207C8C8,
0xCAC9068C4503C9C9,
0xC5CA1E864C0FCACA,
0xC0CB16804B0BCBCB,
0xDBCC2E925E17CCCC,
0xDECD26945913CDCD,
0xD1CE3E9E501FCECE,
0xD4CF3698571BCFCF,
0xB7D0CEDA0A67D0D0,
0xB2D1C6DC0D63D1D1,
0xBDD2DED6046FD2D2,
0xB8D3D6D0036BD3D3,
0xA3D4EEC21677D4D4,
0xA6D5E6C41173D5D5,
0xA9D6FECE187FD6D6,
0xACD7F6C81F7BD7D7,
0x9FD88EEA3247D8D8,
0x9AD986EC3543D9D9,
0x95DA9EE63C4FDADA,
0x90DB96E03B4BDBDB,
0x8BDCAEF22E57DCDC,
0x8EDDA6F42953DDDD,
0x81DEBEFE205FDEDE,
0x84DFB6F8275BDFDF,
0x47E0537A9AA7E0E0,
0x42E15B7C9DA3E1E1,
0x4DE2437694AFE2E2,
0x48E34B7093ABE3E3,
0x53E4736286B7E4E4,
0x56E57B6481B3E5E5,
0x59E6636E88BFE6E6,
0x5CE76B688FBBE7E7,
0x6FE8134AA287E8E8,
0x6AE91B4CA583E9E9,
0x65EA0346AC8FEAEA,
0x60EB0B40AB8BEBEB,
0x7BEC3352BE97ECEC,
0x7EED3B54B993EDED,
0x71EE235EB09FEEEE,
0x74EF2B58B79BEFEF,
0x17F0D31AEAE7F0F0,
0x12F1DB1CEDE3F1F1,
0x1DF2C316E4EFF2F2,
0x18F3CB10E3EBF3F3,
0x03F4F302F6F7F4F4,
0x06F5FB04F1F3F5F5,
0x09F6E30EF8FFF6F6,
0x0CF7EB08FFFBF7F7,
0x3FF8932AD2C7F8F8,
0x3AF99B2CD5C3F9F9,
0x35FA8326DCCFFAFA,
0x30FB8B20DBCBFBFB,
0x2BFCB332CED7FCFC,
0x2EFDBB34C9D3FDFD,
0x21FEA33EC0DFFEFE,
0x24FFAB38C7DBFFFF,
],
[
0x0000000000000000,
0x0108060704010105,
0x02100C0E0802020A,
0x03180A090C03030F,
0x0420181C10040414,
0x05281E1B14050511,
0x063014121806061E,
0x073812151C07071B,
0x0840303820080828,
0x0948363F2409092D,
0x0A503C36280A0A22,
0x0B583A312C0B0B27,
0x0C602824300C0C3C,
0x0D682E23340D0D39,
0x0E70242A380E0E36,
0x0F78222D3C0F0F33,
0x1080607040101050,
0x1188667744111155,
0x12906C7E4812125A,
0x13986A794C13135F,
0x14A0786C50141444,
0x15A87E6B54151541,
0x16B074625816164E,
0x17B872655C17174B,
0x18C0504860181878,
0x19C8564F6419197D,
0x1AD05C46681A1A72,
0x1BD85A416C1B1B77,
0x1CE04854701C1C6C,
0x1DE84E53741D1D69,
0x1EF0445A781E1E66,
0x1FF8425D7C1F1F63,
0x201DC0E0802020A0,
0x2115C6E7842121A5,
0x220DCCEE882222AA,
0x2305CAE98C2323AF,
0x243DD8FC902424B4,
0x2535DEFB942525B1,
0x262DD4F2982626BE,
0x2725D2F59C2727BB,
0x285DF0D8A0282888,
0x2955F6DFA429298D,
0x2A4DFCD6A82A2A82,
0x2B45FAD1AC2B2B87,
0x2C7DE8C4B02C2C9C,
0x2D75EEC3B42D2D99,
0x2E6DE4CAB82E2E96,
0x2F65E2CDBC2F2F93,
0x309DA090C03030F0,
0x3195A697C43131F5,
0x328DAC9EC83232FA,
0x3385AA99CC3333FF,
0x34BDB88CD03434E4,
0x35B5BE8BD43535E1,
0x36ADB482D83636EE,
0x37A5B285DC3737EB,
0x38DD90A8E03838D8,
0x39D596AFE43939DD,
0x3ACD9CA6E83A3AD2,
0x3BC59AA1EC3B3BD7,
0x3CFD88B4F03C3CCC,
0x3DF58EB3F43D3DC9,
0x3EED84BAF83E3EC6,
0x3FE582BDFC3F3FC3,
0x403A9DDD1D40405D,
0x41329BDA19414158,
0x422A91D315424257,
0x432297D411434352,
0x441A85C10D444449,
0x451283C60945454C,
0x460A89CF05464643,
0x47028FC801474746,
0x487AADE53D484875,
0x4972ABE239494970,
0x4A6AA1EB354A4A7F,
0x4B62A7EC314B4B7A,
0x4C5AB5F92D4C4C61,
0x4D52B3FE294D4D64,
0x4E4AB9F7254E4E6B,
0x4F42BFF0214F4F6E,
0x50BAFDAD5D50500D,
0x51B2FBAA59515108,
0x52AAF1A355525207,
0x53A2F7A451535302,
0x549AE5B14D545419,
0x5592E3B64955551C,
0x568AE9BF45565613,
0x5782EFB841575716,
0x58FACD957D585825,
0x59F2CB9279595920,
0x5AEAC19B755A5A2F,
0x5BE2C79C715B5B2A,
0x5CDAD5896D5C5C31,
0x5DD2D38E695D5D34,
0x5ECAD987655E5E3B,
0x5FC2DF80615F5F3E,
0x60275D3D9D6060FD,
0x612F5B3A996161F8,
0x62375133956262F7,
0x633F5734916363F2,
0x640745218D6464E9,
0x650F4326896565EC,
0x6617492F856666E3,
0x671F4F28816767E6,
0x68676D05BD6868D5,
0x696F6B02B96969D0,
0x6A77610BB56A6ADF,
0x6B7F670CB16B6BDA,
0x6C477519AD6C6CC1,
0x6D4F731EA96D6DC4,
0x6E577917A56E6ECB,
0x6F5F7F10A16F6FCE,
0x70A73D4DDD7070AD,
0x71AF3B4AD97171A8,
0x72B73143D57272A7,
0x73BF3744D17373A2,
0x74872551CD7474B9,
0x758F2356C97575BC,
0x7697295FC57676B3,
0x779F2F58C17777B6,
0x78E70D75FD787885,
0x79EF0B72F9797980,
0x7AF7017BF57A7A8F,
0x7BFF077CF17B7B8A,
0x7CC71569ED7C7C91,
0x7DCF136EE97D7D94,
0x7ED71967E57E7E9B,
0x7FDF1F60E17F7F9E,
0x807427A73A8080BA,
0x817C21A03E8181BF,
0x82642BA9328282B0,
0x836C2DAE368383B5,
0x84543FBB2A8484AE,
0x855C39BC2E8585AB,
0x864433B5228686A4,
0x874C35B2268787A1,
0x8834179F1A888892,
0x893C11981E898997,
0x8A241B91128A8A98,
0x8B2C1D96168B8B9D,
0x8C140F830A8C8C86,
0x8D1C09840E8D8D83,
0x8E04038D028E8E8C,
0x8F0C058A068F8F89,
0x90F447D77A9090EA,
0x91FC41D07E9191EF,
0x92E44BD9729292E0,
0x93EC4DDE769393E5,
0x94D45FCB6A9494FE,
0x95DC59CC6E9595FB,
0x96C453C5629696F4,
0x97CC55C2669797F1,
0x98B477EF5A9898C2,
0x99BC71E85E9999C7,
0x9AA47BE1529A9AC8,
0x9BAC7DE6569B9BCD,
0x9C946FF34A9C9CD6,
0x9D9C69F44E9D9DD3,
0x9E8463FD429E9EDC,
0x9F8C65FA469F9FD9,
0xA069E747BAA0A01A,
0xA161E140BEA1A11F,
0xA279EB49B2A2A210,
0xA371ED4EB6A3A315,
0xA449FF5BAAA4A40E,
0xA541F95CAEA5A50B,
0xA659F355A2A6A604,
0xA751F552A6A7A701,
0xA829D77F9AA8A832,
0xA921D1789EA9A937,
0xAA39DB7192AAAA38,
0xAB31DD7696ABAB3D,
0xAC09CF638AACAC26,
0xAD01C9648EADAD23,
0xAE19C36D82AEAE2C,
0xAF11C56A86AFAF29,
0xB0E98737FAB0B04A,
0xB1E18130FEB1B14F,
0xB2F98B39F2B2B240,
0xB3F18D3EF6B3B345,
0xB4C99F2BEAB4B45E,
0xB5C1992CEEB5B55B,
0xB6D99325E2B6B654,
0xB7D19522E6B7B751,
0xB8A9B70FDAB8B862,
0xB9A1B108DEB9B967,
0xBAB9BB01D2BABA68,
0xBBB1BD06D6BBBB6D,
0xBC89AF13CABCBC76,
0xBD81A914CEBDBD73,
0xBE99A31DC2BEBE7C,
0xBF91A51AC6BFBF79,
0xC04EBA7A27C0C0E7,
0xC146BC7D23C1C1E2,
0xC25EB6742FC2C2ED,
0xC356B0732BC3C3E8,
0xC46EA26637C4C4F3,
0xC566A46133C5C5F6,
0xC67EAE683FC6C6F9,
0xC776A86F3BC7C7FC,
0xC80E8A4207C8C8CF,
0xC9068C4503C9C9CA,
0xCA1E864C0FCACAC5,
0xCB16804B0BCBCBC0,
0xCC2E925E17CCCCDB,
0xCD26945913CDCDDE,
0xCE3E9E501FCECED1,
0xCF3698571BCFCFD4,
0xD0CEDA0A67D0D0B7,
0xD1C6DC0D63D1D1B2,
0xD2DED6046FD2D2BD,
0xD3D6D0036BD3D3B8,
0xD4EEC21677D4D4A3,
0xD5E6C41173D5D5A6,
0xD6FECE187FD6D6A9,
0xD7F6C81F7BD7D7AC,
0xD88EEA3247D8D89F,
0xD986EC3543D9D99A,
0xDA9EE63C4FDADA95,
0xDB96E03B4BDBDB90,
0xDCAEF22E57DCDC8B,
0xDDA6F42953DDDD8E,
0xDEBEFE205FDEDE81,
0xDFB6F8275BDFDF84,
0xE0537A9AA7E0E047,
0xE15B7C9DA3E1E142,
0xE2437694AFE2E24D,
0xE34B7093ABE3E348,
0xE4736286B7E4E453,
0xE57B6481B3E5E556,
0xE6636E88BFE6E659,
0xE76B688FBBE7E75C,
0xE8134AA287E8E86F,
0xE91B4CA583E9E96A,
0xEA0346AC8FEAEA65,
0xEB0B40AB8BEBEB60,
0xEC3352BE97ECEC7B,
0xED3B54B993EDED7E,
0xEE235EB09FEEEE71,
0xEF2B58B79BEFEF74,
0xF0D31AEAE7F0F017,
0xF1DB1CEDE3F1F112,
0xF2C316E4EFF2F21D,
0xF3CB10E3EBF3F318,
0xF4F302F6F7F4F403,
0xF5FB04F1F3F5F506,
0xF6E30EF8FFF6F609,
0xF7EB08FFFBF7F70C,
0xF8932AD2C7F8F83F,
0xF99B2CD5C3F9F93A,
0xFA8326DCCFFAFA35,
0xFB8B20DBCBFBFB30,
0xFCB332CED7FCFC2B,
0xFDBB34C9D3FDFD2E,
0xFEA33EC0DFFEFE21,
0xFFAB38C7DBFFFF24,
],
[
0x0000000000000000,
0x0806070401010501,
0x100C0E0802020A02,
0x180A090C03030F03,
0x20181C1004041404,
0x281E1B1405051105,
0x3014121806061E06,
0x3812151C07071B07,
0x4030382008082808,
0x48363F2409092D09,
0x503C36280A0A220A,
0x583A312C0B0B270B,
0x602824300C0C3C0C,
0x682E23340D0D390D,
0x70242A380E0E360E,
0x78222D3C0F0F330F,
0x8060704010105010,
0x8866774411115511,
0x906C7E4812125A12,
0x986A794C13135F13,
0xA0786C5014144414,
0xA87E6B5415154115,
0xB074625816164E16,
0xB872655C17174B17,
0xC050486018187818,
0xC8564F6419197D19,
0xD05C46681A1A721A,
0xD85A416C1B1B771B,
0xE04854701C1C6C1C,
0xE84E53741D1D691D,
0xF0445A781E1E661E,
0xF8425D7C1F1F631F,
0x1DC0E0802020A020,
0x15C6E7842121A521,
0x0DCCEE882222AA22,
0x05CAE98C2323AF23,
0x3DD8FC902424B424,
0x35DEFB942525B125,
0x2DD4F2982626BE26,
0x25D2F59C2727BB27,
0x5DF0D8A028288828,
0x55F6DFA429298D29,
0x4DFCD6A82A2A822A,
0x45FAD1AC2B2B872B,
0x7DE8C4B02C2C9C2C,
0x75EEC3B42D2D992D,
0x6DE4CAB82E2E962E,
0x65E2CDBC2F2F932F,
0x9DA090C03030F030,
0x95A697C43131F531,
0x8DAC9EC83232FA32,
0x85AA99CC3333FF33,
0xBDB88CD03434E434,
0xB5BE8BD43535E135,
0xADB482D83636EE36,
0xA5B285DC3737EB37,
0xDD90A8E03838D838,
0xD596AFE43939DD39,
0xCD9CA6E83A3AD23A,
0xC59AA1EC3B3BD73B,
0xFD88B4F03C3CCC3C,
0xF58EB3F43D3DC93D,
0xED84BAF83E3EC63E,
0xE582BDFC3F3FC33F,
0x3A9DDD1D40405D40,
0x329BDA1941415841,
0x2A91D31542425742,
0x2297D41143435243,
0x1A85C10D44444944,
0x1283C60945454C45,
0x0A89CF0546464346,
0x028FC80147474647,
0x7AADE53D48487548,
0x72ABE23949497049,
0x6AA1EB354A4A7F4A,
0x62A7EC314B4B7A4B,
0x5AB5F92D4C4C614C,
0x52B3FE294D4D644D,
0x4AB9F7254E4E6B4E,
0x42BFF0214F4F6E4F,
0xBAFDAD5D50500D50,
0xB2FBAA5951510851,
0xAAF1A35552520752,
0xA2F7A45153530253,
0x9AE5B14D54541954,
0x92E3B64955551C55,
0x8AE9BF4556561356,
0x82EFB84157571657,
0xFACD957D58582558,
0xF2CB927959592059,
0xEAC19B755A5A2F5A,
0xE2C79C715B5B2A5B,
0xDAD5896D5C5C315C,
0xD2D38E695D5D345D,
0xCAD987655E5E3B5E,
0xC2DF80615F5F3E5F,
0x275D3D9D6060FD60,
0x2F5B3A996161F861,
0x375133956262F762,
0x3F5734916363F263,
0x0745218D6464E964,
0x0F4326896565EC65,
0x17492F856666E366,
0x1F4F28816767E667,
0x676D05BD6868D568,
0x6F6B02B96969D069,
0x77610BB56A6ADF6A,
0x7F670CB16B6BDA6B,
0x477519AD6C6CC16C,
0x4F731EA96D6DC46D,
0x577917A56E6ECB6E,
0x5F7F10A16F6FCE6F,
0xA73D4DDD7070AD70,
0xAF3B4AD97171A871,
0xB73143D57272A772,
0xBF3744D17373A273,
0x872551CD7474B974,
0x8F2356C97575BC75,
0x97295FC57676B376,
0x9F2F58C17777B677,
0xE70D75FD78788578,
0xEF0B72F979798079,
0xF7017BF57A7A8F7A,
0xFF077CF17B7B8A7B,
0xC71569ED7C7C917C,
0xCF136EE97D7D947D,
0xD71967E57E7E9B7E,
0xDF1F60E17F7F9E7F,
0x7427A73A8080BA80,
0x7C21A03E8181BF81,
0x642BA9328282B082,
0x6C2DAE368383B583,
0x543FBB2A8484AE84,
0x5C39BC2E8585AB85,
0x4433B5228686A486,
0x4C35B2268787A187,
0x34179F1A88889288,
0x3C11981E89899789,
0x241B91128A8A988A,
0x2C1D96168B8B9D8B,
0x140F830A8C8C868C,
0x1C09840E8D8D838D,
0x04038D028E8E8C8E,
0x0C058A068F8F898F,
0xF447D77A9090EA90,
0xFC41D07E9191EF91,
0xE44BD9729292E092,
0xEC4DDE769393E593,
0xD45FCB6A9494FE94,
0xDC59CC6E9595FB95,
0xC453C5629696F496,
0xCC55C2669797F197,
0xB477EF5A9898C298,
0xBC71E85E9999C799,
0xA47BE1529A9AC89A,
0xAC7DE6569B9BCD9B,
0x946FF34A9C9CD69C,
0x9C69F44E9D9DD39D,
0x8463FD429E9EDC9E,
0x8C65FA469F9FD99F,
0x69E747BAA0A01AA0,
0x61E140BEA1A11FA1,
0x79EB49B2A2A210A2,
0x71ED4EB6A3A315A3,
0x49FF5BAAA4A40EA4,
0x41F95CAEA5A50BA5,
0x59F355A2A6A604A6,
0x51F552A6A7A701A7,
0x29D77F9AA8A832A8,
0x21D1789EA9A937A9,
0x39DB7192AAAA38AA,
0x31DD7696ABAB3DAB,
0x09CF638AACAC26AC,
0x01C9648EADAD23AD,
0x19C36D82AEAE2CAE,
0x11C56A86AFAF29AF,
0xE98737FAB0B04AB0,
0xE18130FEB1B14FB1,
0xF98B39F2B2B240B2,
0xF18D3EF6B3B345B3,
0xC99F2BEAB4B45EB4,
0xC1992CEEB5B55BB5,
0xD99325E2B6B654B6,
0xD19522E6B7B751B7,
0xA9B70FDAB8B862B8,
0xA1B108DEB9B967B9,
0xB9BB01D2BABA68BA,
0xB1BD06D6BBBB6DBB,
0x89AF13CABCBC76BC,
0x81A914CEBDBD73BD,
0x99A31DC2BEBE7CBE,
0x91A51AC6BFBF79BF,
0x4EBA7A27C0C0E7C0,
0x46BC7D23C1C1E2C1,
0x5EB6742FC2C2EDC2,
0x56B0732BC3C3E8C3,
0x6EA26637C4C4F3C4,
0x66A46133C5C5F6C5,
0x7EAE683FC6C6F9C6,
0x76A86F3BC7C7FCC7,
0x0E8A4207C8C8CFC8,
0x068C4503C9C9CAC9,
0x1E864C0FCACAC5CA,
0x16804B0BCBCBC0CB,
0x2E925E17CCCCDBCC,
0x26945913CDCDDECD,
0x3E9E501FCECED1CE,
0x3698571BCFCFD4CF,
0xCEDA0A67D0D0B7D0,
0xC6DC0D63D1D1B2D1,
0xDED6046FD2D2BDD2,
0xD6D0036BD3D3B8D3,
0xEEC21677D4D4A3D4,
0xE6C41173D5D5A6D5,
0xFECE187FD6D6A9D6,
0xF6C81F7BD7D7ACD7,
0x8EEA3247D8D89FD8,
0x86EC3543D9D99AD9,
0x9EE63C4FDADA95DA,
0x96E03B4BDBDB90DB,
0xAEF22E57DCDC8BDC,
0xA6F42953DDDD8EDD,
0xBEFE205FDEDE81DE,
0xB6F8275BDFDF84DF,
0x537A9AA7E0E047E0,
0x5B7C9DA3E1E142E1,
0x437694AFE2E24DE2,
0x4B7093ABE3E348E3,
0x736286B7E4E453E4,
0x7B6481B3E5E556E5,
0x636E88BFE6E659E6,
0x6B688FBBE7E75CE7,
0x134AA287E8E86FE8,
0x1B4CA583E9E96AE9,
0x0346AC8FEAEA65EA,
0x0B40AB8BEBEB60EB,
0x3352BE97ECEC7BEC,
0x3B54B993EDED7EED,
0x235EB09FEEEE71EE,
0x2B58B79BEFEF74EF,
0xD31AEAE7F0F017F0,
0xDB1CEDE3F1F112F1,
0xC316E4EFF2F21DF2,
0xCB10E3EBF3F318F3,
0xF302F6F7F4F403F4,
0xFB04F1F3F5F506F5,
0xE30EF8FFF6F609F6,
0xEB08FFFBF7F70CF7,
0x932AD2C7F8F83FF8,
0x9B2CD5C3F9F93AF9,
0x8326DCCFFAFA35FA,
0x8B20DBCBFBFB30FB,
0xB332CED7FCFC2BFC,
0xBB34C9D3FDFD2EFD,
0xA33EC0DFFEFE21FE,
0xAB38C7DBFFFF24FF,
],
[
0x0000000000000000,
0x0607040101050108,
0x0C0E0802020A0210,
0x0A090C03030F0318,
0x181C100404140420,
0x1E1B140505110528,
0x14121806061E0630,
0x12151C07071B0738,
0x3038200808280840,
0x363F2409092D0948,
0x3C36280A0A220A50,
0x3A312C0B0B270B58,
0x2824300C0C3C0C60,
0x2E23340D0D390D68,
0x242A380E0E360E70,
0x222D3C0F0F330F78,
0x6070401010501080,
0x6677441111551188,
0x6C7E4812125A1290,
0x6A794C13135F1398,
0x786C5014144414A0,
0x7E6B5415154115A8,
0x74625816164E16B0,
0x72655C17174B17B8,
0x50486018187818C0,
0x564F6419197D19C8,
0x5C46681A1A721AD0,
0x5A416C1B1B771BD8,
0x4854701C1C6C1CE0,
0x4E53741D1D691DE8,
0x445A781E1E661EF0,
0x425D7C1F1F631FF8,
0xC0E0802020A0201D,
0xC6E7842121A52115,
0xCCEE882222AA220D,
0xCAE98C2323AF2305,
0xD8FC902424B4243D,
0xDEFB942525B12535,
0xD4F2982626BE262D,
0xD2F59C2727BB2725,
0xF0D8A0282888285D,
0xF6DFA429298D2955,
0xFCD6A82A2A822A4D,
0xFAD1AC2B2B872B45,
0xE8C4B02C2C9C2C7D,
0xEEC3B42D2D992D75,
0xE4CAB82E2E962E6D,
0xE2CDBC2F2F932F65,
0xA090C03030F0309D,
0xA697C43131F53195,
0xAC9EC83232FA328D,
0xAA99CC3333FF3385,
0xB88CD03434E434BD,
0xBE8BD43535E135B5,
0xB482D83636EE36AD,
0xB285DC3737EB37A5,
0x90A8E03838D838DD,
0x96AFE43939DD39D5,
0x9CA6E83A3AD23ACD,
0x9AA1EC3B3BD73BC5,
0x88B4F03C3CCC3CFD,
0x8EB3F43D3DC93DF5,
0x84BAF83E3EC63EED,
0x82BDFC3F3FC33FE5,
0x9DDD1D40405D403A,
0x9BDA194141584132,
0x91D315424257422A,
0x97D4114343524322,
0x85C10D444449441A,
0x83C60945454C4512,
0x89CF05464643460A,
0x8FC8014747464702,
0xADE53D484875487A,
0xABE2394949704972,
0xA1EB354A4A7F4A6A,
0xA7EC314B4B7A4B62,
0xB5F92D4C4C614C5A,
0xB3FE294D4D644D52,
0xB9F7254E4E6B4E4A,
0xBFF0214F4F6E4F42,
0xFDAD5D50500D50BA,
0xFBAA5951510851B2,
0xF1A35552520752AA,
0xF7A45153530253A2,
0xE5B14D545419549A,
0xE3B64955551C5592,
0xE9BF45565613568A,
0xEFB8415757165782,
0xCD957D58582558FA,
0xCB927959592059F2,
0xC19B755A5A2F5AEA,
0xC79C715B5B2A5BE2,
0xD5896D5C5C315CDA,
0xD38E695D5D345DD2,
0xD987655E5E3B5ECA,
0xDF80615F5F3E5FC2,
0x5D3D9D6060FD6027,
0x5B3A996161F8612F,
0x5133956262F76237,
0x5734916363F2633F,
0x45218D6464E96407,
0x4326896565EC650F,
0x492F856666E36617,
0x4F28816767E6671F,
0x6D05BD6868D56867,
0x6B02B96969D0696F,
0x610BB56A6ADF6A77,
0x670CB16B6BDA6B7F,
0x7519AD6C6CC16C47,
0x731EA96D6DC46D4F,
0x7917A56E6ECB6E57,
0x7F10A16F6FCE6F5F,
0x3D4DDD7070AD70A7,
0x3B4AD97171A871AF,
0x3143D57272A772B7,
0x3744D17373A273BF,
0x2551CD7474B97487,
0x2356C97575BC758F,
0x295FC57676B37697,
0x2F58C17777B6779F,
0x0D75FD78788578E7,
0x0B72F979798079EF,
0x017BF57A7A8F7AF7,
0x077CF17B7B8A7BFF,
0x1569ED7C7C917CC7,
0x136EE97D7D947DCF,
0x1967E57E7E9B7ED7,
0x1F60E17F7F9E7FDF,
0x27A73A8080BA8074,
0x21A03E8181BF817C,
0x2BA9328282B08264,
0x2DAE368383B5836C,
0x3FBB2A8484AE8454,
0x39BC2E8585AB855C,
0x33B5228686A48644,
0x35B2268787A1874C,
0x179F1A8888928834,
0x11981E898997893C,
0x1B91128A8A988A24,
0x1D96168B8B9D8B2C,
0x0F830A8C8C868C14,
0x09840E8D8D838D1C,
0x038D028E8E8C8E04,
0x058A068F8F898F0C,
0x47D77A9090EA90F4,
0x41D07E9191EF91FC,
0x4BD9729292E092E4,
0x4DDE769393E593EC,
0x5FCB6A9494FE94D4,
0x59CC6E9595FB95DC,
0x53C5629696F496C4,
0x55C2669797F197CC,
0x77EF5A9898C298B4,
0x71E85E9999C799BC,
0x7BE1529A9AC89AA4,
0x7DE6569B9BCD9BAC,
0x6FF34A9C9CD69C94,
0x69F44E9D9DD39D9C,
0x63FD429E9EDC9E84,
0x65FA469F9FD99F8C,
0xE747BAA0A01AA069,
0xE140BEA1A11FA161,
0xEB49B2A2A210A279,
0xED4EB6A3A315A371,
0xFF5BAAA4A40EA449,
0xF95CAEA5A50BA541,
0xF355A2A6A604A659,
0xF552A6A7A701A751,
0xD77F9AA8A832A829,
0xD1789EA9A937A921,
0xDB7192AAAA38AA39,
0xDD7696ABAB3DAB31,
0xCF638AACAC26AC09,
0xC9648EADAD23AD01,
0xC36D82AEAE2CAE19,
0xC56A86AFAF29AF11,
0x8737FAB0B04AB0E9,
0x8130FEB1B14FB1E1,
0x8B39F2B2B240B2F9,
0x8D3EF6B3B345B3F1,
0x9F2BEAB4B45EB4C9,
0x992CEEB5B55BB5C1,
0x9325E2B6B654B6D9,
0x9522E6B7B751B7D1,
0xB70FDAB8B862B8A9,
0xB108DEB9B967B9A1,
0xBB01D2BABA68BAB9,
0xBD06D6BBBB6DBBB1,
0xAF13CABCBC76BC89,
0xA914CEBDBD73BD81,
0xA31DC2BEBE7CBE99,
0xA51AC6BFBF79BF91,
0xBA7A27C0C0E7C04E,
0xBC7D23C1C1E2C146,
0xB6742FC2C2EDC25E,
0xB0732BC3C3E8C356,
0xA26637C4C4F3C46E,
0xA46133C5C5F6C566,
0xAE683FC6C6F9C67E,
0xA86F3BC7C7FCC776,
0x8A4207C8C8CFC80E,
0x8C4503C9C9CAC906,
0x864C0FCACAC5CA1E,
0x804B0BCBCBC0CB16,
0x925E17CCCCDBCC2E,
0x945913CDCDDECD26,
0x9E501FCECED1CE3E,
0x98571BCFCFD4CF36,
0xDA0A67D0D0B7D0CE,
0xDC0D63D1D1B2D1C6,
0xD6046FD2D2BDD2DE,
0xD0036BD3D3B8D3D6,
0xC21677D4D4A3D4EE,
0xC41173D5D5A6D5E6,
0xCE187FD6D6A9D6FE,
0xC81F7BD7D7ACD7F6,
0xEA3247D8D89FD88E,
0xEC3543D9D99AD986,
0xE63C4FDADA95DA9E,
0xE03B4BDBDB90DB96,
0xF22E57DCDC8BDCAE,
0xF42953DDDD8EDDA6,
0xFE205FDEDE81DEBE,
0xF8275BDFDF84DFB6,
0x7A9AA7E0E047E053,
0x7C9DA3E1E142E15B,
0x7694AFE2E24DE243,
0x7093ABE3E348E34B,
0x6286B7E4E453E473,
0x6481B3E5E556E57B,
0x6E88BFE6E659E663,
0x688FBBE7E75CE76B,
0x4AA287E8E86FE813,
0x4CA583E9E96AE91B,
0x46AC8FEAEA65EA03,
0x40AB8BEBEB60EB0B,
0x52BE97ECEC7BEC33,
0x54B993EDED7EED3B,
0x5EB09FEEEE71EE23,
0x58B79BEFEF74EF2B,
0x1AEAE7F0F017F0D3,
0x1CEDE3F1F112F1DB,
0x16E4EFF2F21DF2C3,
0x10E3EBF3F318F3CB,
0x02F6F7F4F403F4F3,
0x04F1F3F5F506F5FB,
0x0EF8FFF6F609F6E3,
0x08FFFBF7F70CF7EB,
0x2AD2C7F8F83FF893,
0x2CD5C3F9F93AF99B,
0x26DCCFFAFA35FA83,
0x20DBCBFBFB30FB8B,
0x32CED7FCFC2BFCB3,
0x34C9D3FDFD2EFDBB,
0x3EC0DFFEFE21FEA3,
0x38C7DBFFFF24FFAB,
],
[
0x0000000000000000,
0x0704010105010806,
0x0E0802020A02100C,
0x090C03030F03180A,
0x1C10040414042018,
0x1B1405051105281E,
0x121806061E063014,
0x151C07071B073812,
0x3820080828084030,
0x3F2409092D094836,
0x36280A0A220A503C,
0x312C0B0B270B583A,
0x24300C0C3C0C6028,
0x23340D0D390D682E,
0x2A380E0E360E7024,
0x2D3C0F0F330F7822,
0x7040101050108060,
0x7744111155118866,
0x7E4812125A12906C,
0x794C13135F13986A,
0x6C5014144414A078,
0x6B5415154115A87E,
0x625816164E16B074,
0x655C17174B17B872,
0x486018187818C050,
0x4F6419197D19C856,
0x46681A1A721AD05C,
0x416C1B1B771BD85A,
0x54701C1C6C1CE048,
0x53741D1D691DE84E,
0x5A781E1E661EF044,
0x5D7C1F1F631FF842,
0xE0802020A0201DC0,
0xE7842121A52115C6,
0xEE882222AA220DCC,
0xE98C2323AF2305CA,
0xFC902424B4243DD8,
0xFB942525B12535DE,
0xF2982626BE262DD4,
0xF59C2727BB2725D2,
0xD8A0282888285DF0,
0xDFA429298D2955F6,
0xD6A82A2A822A4DFC,
0xD1AC2B2B872B45FA,
0xC4B02C2C9C2C7DE8,
0xC3B42D2D992D75EE,
0xCAB82E2E962E6DE4,
0xCDBC2F2F932F65E2,
0x90C03030F0309DA0,
0x97C43131F53195A6,
0x9EC83232FA328DAC,
0x99CC3333FF3385AA,
0x8CD03434E434BDB8,
0x8BD43535E135B5BE,
0x82D83636EE36ADB4,
0x85DC3737EB37A5B2,
0xA8E03838D838DD90,
0xAFE43939DD39D596,
0xA6E83A3AD23ACD9C,
0xA1EC3B3BD73BC59A,
0xB4F03C3CCC3CFD88,
0xB3F43D3DC93DF58E,
0xBAF83E3EC63EED84,
0xBDFC3F3FC33FE582,
0xDD1D40405D403A9D,
0xDA1941415841329B,
0xD315424257422A91,
0xD411434352432297,
0xC10D444449441A85,
0xC60945454C451283,
0xCF05464643460A89,
0xC80147474647028F,
0xE53D484875487AAD,
0xE2394949704972AB,
0xEB354A4A7F4A6AA1,
0xEC314B4B7A4B62A7,
0xF92D4C4C614C5AB5,
0xFE294D4D644D52B3,
0xF7254E4E6B4E4AB9,
0xF0214F4F6E4F42BF,
0xAD5D50500D50BAFD,
0xAA5951510851B2FB,
0xA35552520752AAF1,
0xA45153530253A2F7,
0xB14D545419549AE5,
0xB64955551C5592E3,
0xBF45565613568AE9,
0xB8415757165782EF,
0x957D58582558FACD,
0x927959592059F2CB,
0x9B755A5A2F5AEAC1,
0x9C715B5B2A5BE2C7,
0x896D5C5C315CDAD5,
0x8E695D5D345DD2D3,
0x87655E5E3B5ECAD9,
0x80615F5F3E5FC2DF,
0x3D9D6060FD60275D,
0x3A996161F8612F5B,
0x33956262F7623751,
0x34916363F2633F57,
0x218D6464E9640745,
0x26896565EC650F43,
0x2F856666E3661749,
0x28816767E6671F4F,
0x05BD6868D568676D,
0x02B96969D0696F6B,
0x0BB56A6ADF6A7761,
0x0CB16B6BDA6B7F67,
0x19AD6C6CC16C4775,
0x1EA96D6DC46D4F73,
0x17A56E6ECB6E5779,
0x10A16F6FCE6F5F7F,
0x4DDD7070AD70A73D,
0x4AD97171A871AF3B,
0x43D57272A772B731,
0x44D17373A273BF37,
0x51CD7474B9748725,
0x56C97575BC758F23,
0x5FC57676B3769729,
0x58C17777B6779F2F,
0x75FD78788578E70D,
0x72F979798079EF0B,
0x7BF57A7A8F7AF701,
0x7CF17B7B8A7BFF07,
0x69ED7C7C917CC715,
0x6EE97D7D947DCF13,
0x67E57E7E9B7ED719,
0x60E17F7F9E7FDF1F,
0xA73A8080BA807427,
0xA03E8181BF817C21,
0xA9328282B082642B,
0xAE368383B5836C2D,
0xBB2A8484AE84543F,
0xBC2E8585AB855C39,
0xB5228686A4864433,
0xB2268787A1874C35,
0x9F1A888892883417,
0x981E898997893C11,
0x91128A8A988A241B,
0x96168B8B9D8B2C1D,
0x830A8C8C868C140F,
0x840E8D8D838D1C09,
0x8D028E8E8C8E0403,
0x8A068F8F898F0C05,
0xD77A9090EA90F447,
0xD07E9191EF91FC41,
0xD9729292E092E44B,
0xDE769393E593EC4D,
0xCB6A9494FE94D45F,
0xCC6E9595FB95DC59,
0xC5629696F496C453,
0xC2669797F197CC55,
0xEF5A9898C298B477,
0xE85E9999C799BC71,
0xE1529A9AC89AA47B,
0xE6569B9BCD9BAC7D,
0xF34A9C9CD69C946F,
0xF44E9D9DD39D9C69,
0xFD429E9EDC9E8463,
0xFA469F9FD99F8C65,
0x47BAA0A01AA069E7,
0x40BEA1A11FA161E1,
0x49B2A2A210A279EB,
0x4EB6A3A315A371ED,
0x5BAAA4A40EA449FF,
0x5CAEA5A50BA541F9,
0x55A2A6A604A659F3,
0x52A6A7A701A751F5,
0x7F9AA8A832A829D7,
0x789EA9A937A921D1,
0x7192AAAA38AA39DB,
0x7696ABAB3DAB31DD,
0x638AACAC26AC09CF,
0x648EADAD23AD01C9,
0x6D82AEAE2CAE19C3,
0x6A86AFAF29AF11C5,
0x37FAB0B04AB0E987,
0x30FEB1B14FB1E181,
0x39F2B2B240B2F98B,
0x3EF6B3B345B3F18D,
0x2BEAB4B45EB4C99F,
0x2CEEB5B55BB5C199,
0x25E2B6B654B6D993,
0x22E6B7B751B7D195,
0x0FDAB8B862B8A9B7,
0x08DEB9B967B9A1B1,
0x01D2BABA68BAB9BB,
0x06D6BBBB6DBBB1BD,
0x13CABCBC76BC89AF,
0x14CEBDBD73BD81A9,
0x1DC2BEBE7CBE99A3,
0x1AC6BFBF79BF91A5,
0x7A27C0C0E7C04EBA,
0x7D23C1C1E2C146BC,
0x742FC2C2EDC25EB6,
0x732BC3C3E8C356B0,
0x6637C4C4F3C46EA2,
0x6133C5C5F6C566A4,
0x683FC6C6F9C67EAE,
0x6F3BC7C7FCC776A8,
0x4207C8C8CFC80E8A,
0x4503C9C9CAC9068C,
0x4C0FCACAC5CA1E86,
0x4B0BCBCBC0CB1680,
0x5E17CCCCDBCC2E92,
0x5913CDCDDECD2694,
0x501FCECED1CE3E9E,
0x571BCFCFD4CF3698,
0x0A67D0D0B7D0CEDA,
0x0D63D1D1B2D1C6DC,
0x046FD2D2BDD2DED6,
0x036BD3D3B8D3D6D0,
0x1677D4D4A3D4EEC2,
0x1173D5D5A6D5E6C4,
0x187FD6D6A9D6FECE,
0x1F7BD7D7ACD7F6C8,
0x3247D8D89FD88EEA,
0x3543D9D99AD986EC,
0x3C4FDADA95DA9EE6,
0x3B4BDBDB90DB96E0,
0x2E57DCDC8BDCAEF2,
0x2953DDDD8EDDA6F4,
0x205FDEDE81DEBEFE,
0x275BDFDF84DFB6F8,
0x9AA7E0E047E0537A,
0x9DA3E1E142E15B7C,
0x94AFE2E24DE24376,
0x93ABE3E348E34B70,
0x86B7E4E453E47362,
0x81B3E5E556E57B64,
0x88BFE6E659E6636E,
0x8FBBE7E75CE76B68,
0xA287E8E86FE8134A,
0xA583E9E96AE91B4C,
0xAC8FEAEA65EA0346,
0xAB8BEBEB60EB0B40,
0xBE97ECEC7BEC3352,
0xB993EDED7EED3B54,
0xB09FEEEE71EE235E,
0xB79BEFEF74EF2B58,
0xEAE7F0F017F0D31A,
0xEDE3F1F112F1DB1C,
0xE4EFF2F21DF2C316,
0xE3EBF3F318F3CB10,
0xF6F7F4F403F4F302,
0xF1F3F5F506F5FB04,
0xF8FFF6F609F6E30E,
0xFFFBF7F70CF7EB08,
0xD2C7F8F83FF8932A,
0xD5C3F9F93AF99B2C,
0xDCCFFAFA35FA8326,
0xDBCBFBFB30FB8B20,
0xCED7FCFC2BFCB332,
0xC9D3FDFD2EFDBB34,
0xC0DFFEFE21FEA33E,
0xC7DBFFFF24FFAB38,
],
[
0x0000000000000000,
0x0401010501080607,
0x0802020A02100C0E,
0x0C03030F03180A09,
0x100404140420181C,
0x1405051105281E1B,
0x1806061E06301412,
0x1C07071B07381215,
0x2008082808403038,
0x2409092D0948363F,
0x280A0A220A503C36,
0x2C0B0B270B583A31,
0x300C0C3C0C602824,
0x340D0D390D682E23,
0x380E0E360E70242A,
0x3C0F0F330F78222D,
0x4010105010806070,
0x4411115511886677,
0x4812125A12906C7E,
0x4C13135F13986A79,
0x5014144414A0786C,
0x5415154115A87E6B,
0x5816164E16B07462,
0x5C17174B17B87265,
0x6018187818C05048,
0x6419197D19C8564F,
0x681A1A721AD05C46,
0x6C1B1B771BD85A41,
0x701C1C6C1CE04854,
0x741D1D691DE84E53,
0x781E1E661EF0445A,
0x7C1F1F631FF8425D,
0x802020A0201DC0E0,
0x842121A52115C6E7,
0x882222AA220DCCEE,
0x8C2323AF2305CAE9,
0x902424B4243DD8FC,
0x942525B12535DEFB,
0x982626BE262DD4F2,
0x9C2727BB2725D2F5,
0xA0282888285DF0D8,
0xA429298D2955F6DF,
0xA82A2A822A4DFCD6,
0xAC2B2B872B45FAD1,
0xB02C2C9C2C7DE8C4,
0xB42D2D992D75EEC3,
0xB82E2E962E6DE4CA,
0xBC2F2F932F65E2CD,
0xC03030F0309DA090,
0xC43131F53195A697,
0xC83232FA328DAC9E,
0xCC3333FF3385AA99,
0xD03434E434BDB88C,
0xD43535E135B5BE8B,
0xD83636EE36ADB482,
0xDC3737EB37A5B285,
0xE03838D838DD90A8,
0xE43939DD39D596AF,
0xE83A3AD23ACD9CA6,
0xEC3B3BD73BC59AA1,
0xF03C3CCC3CFD88B4,
0xF43D3DC93DF58EB3,
0xF83E3EC63EED84BA,
0xFC3F3FC33FE582BD,
0x1D40405D403A9DDD,
0x1941415841329BDA,
0x15424257422A91D3,
0x11434352432297D4,
0x0D444449441A85C1,
0x0945454C451283C6,
0x05464643460A89CF,
0x0147474647028FC8,
0x3D484875487AADE5,
0x394949704972ABE2,
0x354A4A7F4A6AA1EB,
0x314B4B7A4B62A7EC,
0x2D4C4C614C5AB5F9,
0x294D4D644D52B3FE,
0x254E4E6B4E4AB9F7,
0x214F4F6E4F42BFF0,
0x5D50500D50BAFDAD,
0x5951510851B2FBAA,
0x5552520752AAF1A3,
0x5153530253A2F7A4,
0x4D545419549AE5B1,
0x4955551C5592E3B6,
0x45565613568AE9BF,
0x415757165782EFB8,
0x7D58582558FACD95,
0x7959592059F2CB92,
0x755A5A2F5AEAC19B,
0x715B5B2A5BE2C79C,
0x6D5C5C315CDAD589,
0x695D5D345DD2D38E,
0x655E5E3B5ECAD987,
0x615F5F3E5FC2DF80,
0x9D6060FD60275D3D,
0x996161F8612F5B3A,
0x956262F762375133,
0x916363F2633F5734,
0x8D6464E964074521,
0x896565EC650F4326,
0x856666E36617492F,
0x816767E6671F4F28,
0xBD6868D568676D05,
0xB96969D0696F6B02,
0xB56A6ADF6A77610B,
0xB16B6BDA6B7F670C,
0xAD6C6CC16C477519,
0xA96D6DC46D4F731E,
0xA56E6ECB6E577917,
0xA16F6FCE6F5F7F10,
0xDD7070AD70A73D4D,
0xD97171A871AF3B4A,
0xD57272A772B73143,
0xD17373A273BF3744,
0xCD7474B974872551,
0xC97575BC758F2356,
0xC57676B37697295F,
0xC17777B6779F2F58,
0xFD78788578E70D75,
0xF979798079EF0B72,
0xF57A7A8F7AF7017B,
0xF17B7B8A7BFF077C,
0xED7C7C917CC71569,
0xE97D7D947DCF136E,
0xE57E7E9B7ED71967,
0xE17F7F9E7FDF1F60,
0x3A8080BA807427A7,
0x3E8181BF817C21A0,
0x328282B082642BA9,
0x368383B5836C2DAE,
0x2A8484AE84543FBB,
0x2E8585AB855C39BC,
0x228686A4864433B5,
0x268787A1874C35B2,
0x1A8888928834179F,
0x1E898997893C1198,
0x128A8A988A241B91,
0x168B8B9D8B2C1D96,
0x0A8C8C868C140F83,
0x0E8D8D838D1C0984,
0x028E8E8C8E04038D,
0x068F8F898F0C058A,
0x7A9090EA90F447D7,
0x7E9191EF91FC41D0,
0x729292E092E44BD9,
0x769393E593EC4DDE,
0x6A9494FE94D45FCB,
0x6E9595FB95DC59CC,
0x629696F496C453C5,
0x669797F197CC55C2,
0x5A9898C298B477EF,
0x5E9999C799BC71E8,
0x529A9AC89AA47BE1,
0x569B9BCD9BAC7DE6,
0x4A9C9CD69C946FF3,
0x4E9D9DD39D9C69F4,
0x429E9EDC9E8463FD,
0x469F9FD99F8C65FA,
0xBAA0A01AA069E747,
0xBEA1A11FA161E140,
0xB2A2A210A279EB49,
0xB6A3A315A371ED4E,
0xAAA4A40EA449FF5B,
0xAEA5A50BA541F95C,
0xA2A6A604A659F355,
0xA6A7A701A751F552,
0x9AA8A832A829D77F,
0x9EA9A937A921D178,
0x92AAAA38AA39DB71,
0x96ABAB3DAB31DD76,
0x8AACAC26AC09CF63,
0x8EADAD23AD01C964,
0x82AEAE2CAE19C36D,
0x86AFAF29AF11C56A,
0xFAB0B04AB0E98737,
0xFEB1B14FB1E18130,
0xF2B2B240B2F98B39,
0xF6B3B345B3F18D3E,
0xEAB4B45EB4C99F2B,
0xEEB5B55BB5C1992C,
0xE2B6B654B6D99325,
0xE6B7B751B7D19522,
0xDAB8B862B8A9B70F,
0xDEB9B967B9A1B108,
0xD2BABA68BAB9BB01,
0xD6BBBB6DBBB1BD06,
0xCABCBC76BC89AF13,
0xCEBDBD73BD81A914,
0xC2BEBE7CBE99A31D,
0xC6BFBF79BF91A51A,
0x27C0C0E7C04EBA7A,
0x23C1C1E2C146BC7D,
0x2FC2C2EDC25EB674,
0x2BC3C3E8C356B073,
0x37C4C4F3C46EA266,
0x33C5C5F6C566A461,
0x3FC6C6F9C67EAE68,
0x3BC7C7FCC776A86F,
0x07C8C8CFC80E8A42,
0x03C9C9CAC9068C45,
0x0FCACAC5CA1E864C,
0x0BCBCBC0CB16804B,
0x17CCCCDBCC2E925E,
0x13CDCDDECD269459,
0x1FCECED1CE3E9E50,
0x1BCFCFD4CF369857,
0x67D0D0B7D0CEDA0A,
0x63D1D1B2D1C6DC0D,
0x6FD2D2BDD2DED604,
0x6BD3D3B8D3D6D003,
0x77D4D4A3D4EEC216,
0x73D5D5A6D5E6C411,
0x7FD6D6A9D6FECE18,
0x7BD7D7ACD7F6C81F,
0x47D8D89FD88EEA32,
0x43D9D99AD986EC35,
0x4FDADA95DA9EE63C,
0x4BDBDB90DB96E03B,
0x57DCDC8BDCAEF22E,
0x53DDDD8EDDA6F429,
0x5FDEDE81DEBEFE20,
0x5BDFDF84DFB6F827,
0xA7E0E047E0537A9A,
0xA3E1E142E15B7C9D,
0xAFE2E24DE2437694,
0xABE3E348E34B7093,
0xB7E4E453E4736286,
0xB3E5E556E57B6481,
0xBFE6E659E6636E88,
0xBBE7E75CE76B688F,
0x87E8E86FE8134AA2,
0x83E9E96AE91B4CA5,
0x8FEAEA65EA0346AC,
0x8BEBEB60EB0B40AB,
0x97ECEC7BEC3352BE,
0x93EDED7EED3B54B9,
0x9FEEEE71EE235EB0,
0x9BEFEF74EF2B58B7,
0xE7F0F017F0D31AEA,
0xE3F1F112F1DB1CED,
0xEFF2F21DF2C316E4,
0xEBF3F318F3CB10E3,
0xF7F4F403F4F302F6,
0xF3F5F506F5FB04F1,
0xFFF6F609F6E30EF8,
0xFBF7F70CF7EB08FF,
0xC7F8F83FF8932AD2,
0xC3F9F93AF99B2CD5,
0xCFFAFA35FA8326DC,
0xCBFBFB30FB8B20DB,
0xD7FCFC2BFCB332CE,
0xD3FDFD2EFDBB34C9,
0xDFFEFE21FEA33EC0,
0xDBFFFF24FFAB38C7,
],
[
0x0000000000000000,
0x0101050108060704,
0x02020A02100C0E08,
0x03030F03180A090C,
0x0404140420181C10,
0x05051105281E1B14,
0x06061E0630141218,
0x07071B073812151C,
0x0808280840303820,
0x09092D0948363F24,
0x0A0A220A503C3628,
0x0B0B270B583A312C,
0x0C0C3C0C60282430,
0x0D0D390D682E2334,
0x0E0E360E70242A38,
0x0F0F330F78222D3C,
0x1010501080607040,
0x1111551188667744,
0x12125A12906C7E48,
0x13135F13986A794C,
0x14144414A0786C50,
0x15154115A87E6B54,
0x16164E16B0746258,
0x17174B17B872655C,
0x18187818C0504860,
0x19197D19C8564F64,
0x1A1A721AD05C4668,
0x1B1B771BD85A416C,
0x1C1C6C1CE0485470,
0x1D1D691DE84E5374,
0x1E1E661EF0445A78,
0x1F1F631FF8425D7C,
0x2020A0201DC0E080,
0x2121A52115C6E784,
0x2222AA220DCCEE88,
0x2323AF2305CAE98C,
0x2424B4243DD8FC90,
0x2525B12535DEFB94,
0x2626BE262DD4F298,
0x2727BB2725D2F59C,
0x282888285DF0D8A0,
0x29298D2955F6DFA4,
0x2A2A822A4DFCD6A8,
0x2B2B872B45FAD1AC,
0x2C2C9C2C7DE8C4B0,
0x2D2D992D75EEC3B4,
0x2E2E962E6DE4CAB8,
0x2F2F932F65E2CDBC,
0x3030F0309DA090C0,
0x3131F53195A697C4,
0x3232FA328DAC9EC8,
0x3333FF3385AA99CC,
0x3434E434BDB88CD0,
0x3535E135B5BE8BD4,
0x3636EE36ADB482D8,
0x3737EB37A5B285DC,
0x3838D838DD90A8E0,
0x3939DD39D596AFE4,
0x3A3AD23ACD9CA6E8,
0x3B3BD73BC59AA1EC,
0x3C3CCC3CFD88B4F0,
0x3D3DC93DF58EB3F4,
0x3E3EC63EED84BAF8,
0x3F3FC33FE582BDFC,
0x40405D403A9DDD1D,
0x41415841329BDA19,
0x424257422A91D315,
0x434352432297D411,
0x444449441A85C10D,
0x45454C451283C609,
0x464643460A89CF05,
0x47474647028FC801,
0x484875487AADE53D,
0x4949704972ABE239,
0x4A4A7F4A6AA1EB35,
0x4B4B7A4B62A7EC31,
0x4C4C614C5AB5F92D,
0x4D4D644D52B3FE29,
0x4E4E6B4E4AB9F725,
0x4F4F6E4F42BFF021,
0x50500D50BAFDAD5D,
0x51510851B2FBAA59,
0x52520752AAF1A355,
0x53530253A2F7A451,
0x545419549AE5B14D,
0x55551C5592E3B649,
0x565613568AE9BF45,
0x5757165782EFB841,
0x58582558FACD957D,
0x59592059F2CB9279,
0x5A5A2F5AEAC19B75,
0x5B5B2A5BE2C79C71,
0x5C5C315CDAD5896D,
0x5D5D345DD2D38E69,
0x5E5E3B5ECAD98765,
0x5F5F3E5FC2DF8061,
0x6060FD60275D3D9D,
0x6161F8612F5B3A99,
0x6262F76237513395,
0x6363F2633F573491,
0x6464E9640745218D,
0x6565EC650F432689,
0x6666E36617492F85,
0x6767E6671F4F2881,
0x6868D568676D05BD,
0x6969D0696F6B02B9,
0x6A6ADF6A77610BB5,
0x6B6BDA6B7F670CB1,
0x6C6CC16C477519AD,
0x6D6DC46D4F731EA9,
0x6E6ECB6E577917A5,
0x6F6FCE6F5F7F10A1,
0x7070AD70A73D4DDD,
0x7171A871AF3B4AD9,
0x7272A772B73143D5,
0x7373A273BF3744D1,
0x7474B974872551CD,
0x7575BC758F2356C9,
0x7676B37697295FC5,
0x7777B6779F2F58C1,
0x78788578E70D75FD,
0x79798079EF0B72F9,
0x7A7A8F7AF7017BF5,
0x7B7B8A7BFF077CF1,
0x7C7C917CC71569ED,
0x7D7D947DCF136EE9,
0x7E7E9B7ED71967E5,
0x7F7F9E7FDF1F60E1,
0x8080BA807427A73A,
0x8181BF817C21A03E,
0x8282B082642BA932,
0x8383B5836C2DAE36,
0x8484AE84543FBB2A,
0x8585AB855C39BC2E,
0x8686A4864433B522,
0x8787A1874C35B226,
0x8888928834179F1A,
0x898997893C11981E,
0x8A8A988A241B9112,
0x8B8B9D8B2C1D9616,
0x8C8C868C140F830A,
0x8D8D838D1C09840E,
0x8E8E8C8E04038D02,
0x8F8F898F0C058A06,
0x9090EA90F447D77A,
0x9191EF91FC41D07E,
0x9292E092E44BD972,
0x9393E593EC4DDE76,
0x9494FE94D45FCB6A,
0x9595FB95DC59CC6E,
0x9696F496C453C562,
0x9797F197CC55C266,
0x9898C298B477EF5A,
0x9999C799BC71E85E,
0x9A9AC89AA47BE152,
0x9B9BCD9BAC7DE656,
0x9C9CD69C946FF34A,
0x9D9DD39D9C69F44E,
0x9E9EDC9E8463FD42,
0x9F9FD99F8C65FA46,
0xA0A01AA069E747BA,
0xA1A11FA161E140BE,
0xA2A210A279EB49B2,
0xA3A315A371ED4EB6,
0xA4A40EA449FF5BAA,
0xA5A50BA541F95CAE,
0xA6A604A659F355A2,
0xA7A701A751F552A6,
0xA8A832A829D77F9A,
0xA9A937A921D1789E,
0xAAAA38AA39DB7192,
0xABAB3DAB31DD7696,
0xACAC26AC09CF638A,
0xADAD23AD01C9648E,
0xAEAE2CAE19C36D82,
0xAFAF29AF11C56A86,
0xB0B04AB0E98737FA,
0xB1B14FB1E18130FE,
0xB2B240B2F98B39F2,
0xB3B345B3F18D3EF6,
0xB4B45EB4C99F2BEA,
0xB5B55BB5C1992CEE,
0xB6B654B6D99325E2,
0xB7B751B7D19522E6,
0xB8B862B8A9B70FDA,
0xB9B967B9A1B108DE,
0xBABA68BAB9BB01D2,
0xBBBB6DBBB1BD06D6,
0xBCBC76BC89AF13CA,
0xBDBD73BD81A914CE,
0xBEBE7CBE99A31DC2,
0xBFBF79BF91A51AC6,
0xC0C0E7C04EBA7A27,
0xC1C1E2C146BC7D23,
0xC2C2EDC25EB6742F,
0xC3C3E8C356B0732B,
0xC4C4F3C46EA26637,
0xC5C5F6C566A46133,
0xC6C6F9C67EAE683F,
0xC7C7FCC776A86F3B,
0xC8C8CFC80E8A4207,
0xC9C9CAC9068C4503,
0xCACAC5CA1E864C0F,
0xCBCBC0CB16804B0B,
0xCCCCDBCC2E925E17,
0xCDCDDECD26945913,
0xCECED1CE3E9E501F,
0xCFCFD4CF3698571B,
0xD0D0B7D0CEDA0A67,
0xD1D1B2D1C6DC0D63,
0xD2D2BDD2DED6046F,
0xD3D3B8D3D6D0036B,
0xD4D4A3D4EEC21677,
0xD5D5A6D5E6C41173,
0xD6D6A9D6FECE187F,
0xD7D7ACD7F6C81F7B,
0xD8D89FD88EEA3247,
0xD9D99AD986EC3543,
0xDADA95DA9EE63C4F,
0xDBDB90DB96E03B4B,
0xDCDC8BDCAEF22E57,
0xDDDD8EDDA6F42953,
0xDEDE81DEBEFE205F,
0xDFDF84DFB6F8275B,
0xE0E047E0537A9AA7,
0xE1E142E15B7C9DA3,
0xE2E24DE2437694AF,
0xE3E348E34B7093AB,
0xE4E453E4736286B7,
0xE5E556E57B6481B3,
0xE6E659E6636E88BF,
0xE7E75CE76B688FBB,
0xE8E86FE8134AA287,
0xE9E96AE91B4CA583,
0xEAEA65EA0346AC8F,
0xEBEB60EB0B40AB8B,
0xECEC7BEC3352BE97,
0xEDED7EED3B54B993,
0xEEEE71EE235EB09F,
0xEFEF74EF2B58B79B,
0xF0F017F0D31AEAE7,
0xF1F112F1DB1CEDE3,
0xF2F21DF2C316E4EF,
0xF3F318F3CB10E3EB,
0xF4F403F4F302F6F7,
0xF5F506F5FB04F1F3,
0xF6F609F6E30EF8FF,
0xF7F70CF7EB08FFFB,
0xF8F83FF8932AD2C7,
0xF9F93AF99B2CD5C3,
0xFAFA35FA8326DCCF,
0xFBFB30FB8B20DBCB,
0xFCFC2BFCB332CED7,
0xFDFD2EFDBB34C9D3,
0xFEFE21FEA33EC0DF,
0xFFFF24FFAB38C7DB,
],
];
#[cfg(not(feature = "small-tables"))]
#[rustfmt::skip]
#[allow(clippy::unreadable_literal)] pub(crate) const MDS_INV_TABLE: [[u64; 256]; ROWS] = [
[
0x0000000000000000,
0x9576A82F49D7CAAD,
0x37EC4D5E92B38947,
0xA29AE571DB6443EA,
0x6EC59ABC397B0F8E,
0xFBB3329370ACC523,
0x5929D7E2ABC886C9,
0xCC5F7FCDE21F4C64,
0xDC97296572F61E01,
0x49E1814A3B21D4AC,
0xEB7B643BE0459746,
0x7E0DCC14A9925DEB,
0xB252B3D94B8D118F,
0x27241BF6025ADB22,
0x85BEFE87D93E98C8,
0x10C856A890E95265,
0xA53352CAE4F13C02,
0x3045FAE5AD26F6AF,
0x92DF1F947642B545,
0x07A9B7BB3F957FE8,
0xCBF6C876DD8A338C,
0x5E806059945DF921,
0xFC1A85284F39BACB,
0x696C2D0706EE7066,
0x79A47BAF96072203,
0xECD2D380DFD0E8AE,
0x4E4836F104B4AB44,
0xDB3E9EDE4D6361E9,
0x1761E113AF7C2D8D,
0x8217493CE6ABE720,
0x208DAC4D3DCFA4CA,
0xB5FB046274186E67,
0x5766A489D5FF7804,
0xC2100CA69C28B2A9,
0x608AE9D7474CF143,
0xF5FC41F80E9B3BEE,
0x39A33E35EC84778A,
0xACD5961AA553BD27,
0x0E4F736B7E37FECD,
0x9B39DB4437E03460,
0x8BF18DECA7096605,
0x1E8725C3EEDEACA8,
0xBC1DC0B235BAEF42,
0x296B689D7C6D25EF,
0xE53417509E72698B,
0x7042BF7FD7A5A326,
0xD2D85A0E0CC1E0CC,
0x47AEF22145162A61,
0xF255F643310E4406,
0x67235E6C78D98EAB,
0xC5B9BB1DA3BDCD41,
0x50CF1332EA6A07EC,
0x9C906CFF08754B88,
0x09E6C4D041A28125,
0xAB7C21A19AC6C2CF,
0x3E0A898ED3110862,
0x2EC2DF2643F85A07,
0xBBB477090A2F90AA,
0x192E9278D14BD340,
0x8C583A57989C19ED,
0x4007459A7A835589,
0xD571EDB533549F24,
0x77EB08C4E830DCCE,
0xE29DA0EBA1E71663,
0xAECC550FB7E3F008,
0x3BBAFD20FE343AA5,
0x992018512550794F,
0x0C56B07E6C87B3E2,
0xC009CFB38E98FF86,
0x557F679CC74F352B,
0xF7E582ED1C2B76C1,
0x62932AC255FCBC6C,
0x725B7C6AC515EE09,
0xE72DD4458CC224A4,
0x45B7313457A6674E,
0xD0C1991B1E71ADE3,
0x1C9EE6D6FC6EE187,
0x89E84EF9B5B92B2A,
0x2B72AB886EDD68C0,
0xBE0403A7270AA26D,
0x0BFF07C55312CC0A,
0x9E89AFEA1AC506A7,
0x3C134A9BC1A1454D,
0xA965E2B488768FE0,
0x653A9D796A69C384,
0xF04C355623BE0929,
0x52D6D027F8DA4AC3,
0xC7A07808B10D806E,
0xD7682EA021E4D20B,
0x421E868F683318A6,
0xE08463FEB3575B4C,
0x75F2CBD1FA8091E1,
0xB9ADB41C189FDD85,
0x2CDB1C3351481728,
0x8E41F9428A2C54C2,
0x1B37516DC3FB9E6F,
0xF9AAF186621C880C,
0x6CDC59A92BCB42A1,
0xCE46BCD8F0AF014B,
0x5B3014F7B978CBE6,
0x976F6B3A5B678782,
0x0219C31512B04D2F,
0xA0832664C9D40EC5,
0x35F58E4B8003C468,
0x253DD8E310EA960D,
0xB04B70CC593D5CA0,
0x12D195BD82591F4A,
0x87A73D92CB8ED5E7,
0x4BF8425F29919983,
0xDE8EEA706046532E,
0x7C140F01BB2210C4,
0xE962A72EF2F5DA69,
0x5C99A34C86EDB40E,
0xC9EF0B63CF3A7EA3,
0x6B75EE12145E3D49,
0xFE03463D5D89F7E4,
0x325C39F0BF96BB80,
0xA72A91DFF641712D,
0x05B074AE2D2532C7,
0x90C6DC8164F2F86A,
0x800E8A29F41BAA0F,
0x15782206BDCC60A2,
0xB7E2C77766A82348,
0x22946F582F7FE9E5,
0xEECB1095CD60A581,
0x7BBDB8BA84B76F2C,
0xD9275DCB5FD32CC6,
0x4C51F5E41604E66B,
0x4185AA1E73DBFD10,
0xD4F302313A0C37BD,
0x7669E740E1687457,
0xE31F4F6FA8BFBEFA,
0x2F4030A24AA0F29E,
0xBA36988D03773833,
0x18AC7DFCD8137BD9,
0x8DDAD5D391C4B174,
0x9D12837B012DE311,
0x08642B5448FA29BC,
0xAAFECE25939E6A56,
0x3F88660ADA49A0FB,
0xF3D719C73856EC9F,
0x66A1B1E871812632,
0xC43B5499AAE565D8,
0x514DFCB6E332AF75,
0xE4B6F8D4972AC112,
0x71C050FBDEFD0BBF,
0xD35AB58A05994855,
0x462C1DA54C4E82F8,
0x8A736268AE51CE9C,
0x1F05CA47E7860431,
0xBD9F2F363CE247DB,
0x28E9871975358D76,
0x3821D1B1E5DCDF13,
0xAD57799EAC0B15BE,
0x0FCD9CEF776F5654,
0x9ABB34C03EB89CF9,
0x56E44B0DDCA7D09D,
0xC392E32295701A30,
0x610806534E1459DA,
0xF47EAE7C07C39377,
0x16E30E97A6248514,
0x8395A6B8EFF34FB9,
0x210F43C934970C53,
0xB479EBE67D40C6FE,
0x7826942B9F5F8A9A,
0xED503C04D6884037,
0x4FCAD9750DEC03DD,
0xDABC715A443BC970,
0xCA7427F2D4D29B15,
0x5F028FDD9D0551B8,
0xFD986AAC46611252,
0x68EEC2830FB6D8FF,
0xA4B1BD4EEDA9949B,
0x31C71561A47E5E36,
0x935DF0107F1A1DDC,
0x062B583F36CDD771,
0xB3D05C5D42D5B916,
0x26A6F4720B0273BB,
0x843C1103D0663051,
0x114AB92C99B1FAFC,
0xDD15C6E17BAEB698,
0x48636ECE32797C35,
0xEAF98BBFE91D3FDF,
0x7F8F2390A0CAF572,
0x6F4775383023A717,
0xFA31DD1779F46DBA,
0x58AB3866A2902E50,
0xCDDD9049EB47E4FD,
0x0182EF840958A899,
0x94F447AB408F6234,
0x366EA2DA9BEB21DE,
0xA3180AF5D23CEB73,
0xEF49FF11C4380D18,
0x7A3F573E8DEFC7B5,
0xD8A5B24F568B845F,
0x4DD31A601F5C4EF2,
0x818C65ADFD430296,
0x14FACD82B494C83B,
0xB66028F36FF08BD1,
0x231680DC2627417C,
0x33DED674B6CE1319,
0xA6A87E5BFF19D9B4,
0x04329B2A247D9A5E,
0x914433056DAA50F3,
0x5D1B4CC88FB51C97,
0xC86DE4E7C662D63A,
0x6AF701961D0695D0,
0xFF81A9B954D15F7D,
0x4A7AADDB20C9311A,
0xDF0C05F4691EFBB7,
0x7D96E085B27AB85D,
0xE8E048AAFBAD72F0,
0x24BF376719B23E94,
0xB1C99F485065F439,
0x13537A398B01B7D3,
0x8625D216C2D67D7E,
0x96ED84BE523F2F1B,
0x039B2C911BE8E5B6,
0xA101C9E0C08CA65C,
0x347761CF895B6CF1,
0xF8281E026B442095,
0x6D5EB62D2293EA38,
0xCFC4535CF9F7A9D2,
0x5AB2FB73B020637F,
0xB82F5B9811C7751C,
0x2D59F3B75810BFB1,
0x8FC316C68374FC5B,
0x1AB5BEE9CAA336F6,
0xD6EAC12428BC7A92,
0x439C690B616BB03F,
0xE1068C7ABA0FF3D5,
0x74702455F3D83978,
0x64B872FD63316B1D,
0xF1CEDAD22AE6A1B0,
0x53543FA3F182E25A,
0xC622978CB85528F7,
0x0A7DE8415A4A6493,
0x9F0B406E139DAE3E,
0x3D91A51FC8F9EDD4,
0xA8E70D30812E2779,
0x1D1C0952F536491E,
0x886AA17DBCE183B3,
0x2AF0440C6785C059,
0xBF86EC232E520AF4,
0x73D993EECC4D4690,
0xE6AF3BC1859A8C3D,
0x4435DEB05EFECFD7,
0xD143769F1729057A,
0xC18B203787C0571F,
0x54FD8818CE179DB2,
0xF6676D691573DE58,
0x6311C5465CA414F5,
0xAF4EBA8BBEBB5891,
0x3A3812A4F76C923C,
0x98A2F7D52C08D1D6,
0x0DD45FFA65DF1B7B,
],
[
0x0000000000000000,
0x76A82F49D7CAAD95,
0xEC4D5E92B3894737,
0x9AE571DB6443EAA2,
0xC59ABC397B0F8E6E,
0xB3329370ACC523FB,
0x29D7E2ABC886C959,
0x5F7FCDE21F4C64CC,
0x97296572F61E01DC,
0xE1814A3B21D4AC49,
0x7B643BE0459746EB,
0x0DCC14A9925DEB7E,
0x52B3D94B8D118FB2,
0x241BF6025ADB2227,
0xBEFE87D93E98C885,
0xC856A890E9526510,
0x3352CAE4F13C02A5,
0x45FAE5AD26F6AF30,
0xDF1F947642B54592,
0xA9B7BB3F957FE807,
0xF6C876DD8A338CCB,
0x806059945DF9215E,
0x1A85284F39BACBFC,
0x6C2D0706EE706669,
0xA47BAF9607220379,
0xD2D380DFD0E8AEEC,
0x4836F104B4AB444E,
0x3E9EDE4D6361E9DB,
0x61E113AF7C2D8D17,
0x17493CE6ABE72082,
0x8DAC4D3DCFA4CA20,
0xFB046274186E67B5,
0x66A489D5FF780457,
0x100CA69C28B2A9C2,
0x8AE9D7474CF14360,
0xFC41F80E9B3BEEF5,
0xA33E35EC84778A39,
0xD5961AA553BD27AC,
0x4F736B7E37FECD0E,
0x39DB4437E034609B,
0xF18DECA70966058B,
0x8725C3EEDEACA81E,
0x1DC0B235BAEF42BC,
0x6B689D7C6D25EF29,
0x3417509E72698BE5,
0x42BF7FD7A5A32670,
0xD85A0E0CC1E0CCD2,
0xAEF22145162A6147,
0x55F643310E4406F2,
0x235E6C78D98EAB67,
0xB9BB1DA3BDCD41C5,
0xCF1332EA6A07EC50,
0x906CFF08754B889C,
0xE6C4D041A2812509,
0x7C21A19AC6C2CFAB,
0x0A898ED31108623E,
0xC2DF2643F85A072E,
0xB477090A2F90AABB,
0x2E9278D14BD34019,
0x583A57989C19ED8C,
0x07459A7A83558940,
0x71EDB533549F24D5,
0xEB08C4E830DCCE77,
0x9DA0EBA1E71663E2,
0xCC550FB7E3F008AE,
0xBAFD20FE343AA53B,
0x2018512550794F99,
0x56B07E6C87B3E20C,
0x09CFB38E98FF86C0,
0x7F679CC74F352B55,
0xE582ED1C2B76C1F7,
0x932AC255FCBC6C62,
0x5B7C6AC515EE0972,
0x2DD4458CC224A4E7,
0xB7313457A6674E45,
0xC1991B1E71ADE3D0,
0x9EE6D6FC6EE1871C,
0xE84EF9B5B92B2A89,
0x72AB886EDD68C02B,
0x0403A7270AA26DBE,
0xFF07C55312CC0A0B,
0x89AFEA1AC506A79E,
0x134A9BC1A1454D3C,
0x65E2B488768FE0A9,
0x3A9D796A69C38465,
0x4C355623BE0929F0,
0xD6D027F8DA4AC352,
0xA07808B10D806EC7,
0x682EA021E4D20BD7,
0x1E868F683318A642,
0x8463FEB3575B4CE0,
0xF2CBD1FA8091E175,
0xADB41C189FDD85B9,
0xDB1C33514817282C,
0x41F9428A2C54C28E,
0x37516DC3FB9E6F1B,
0xAAF186621C880CF9,
0xDC59A92BCB42A16C,
0x46BCD8F0AF014BCE,
0x3014F7B978CBE65B,
0x6F6B3A5B67878297,
0x19C31512B04D2F02,
0x832664C9D40EC5A0,
0xF58E4B8003C46835,
0x3DD8E310EA960D25,
0x4B70CC593D5CA0B0,
0xD195BD82591F4A12,
0xA73D92CB8ED5E787,
0xF8425F299199834B,
0x8EEA706046532EDE,
0x140F01BB2210C47C,
0x62A72EF2F5DA69E9,
0x99A34C86EDB40E5C,
0xEF0B63CF3A7EA3C9,
0x75EE12145E3D496B,
0x03463D5D89F7E4FE,
0x5C39F0BF96BB8032,
0x2A91DFF641712DA7,
0xB074AE2D2532C705,
0xC6DC8164F2F86A90,
0x0E8A29F41BAA0F80,
0x782206BDCC60A215,
0xE2C77766A82348B7,
0x946F582F7FE9E522,
0xCB1095CD60A581EE,
0xBDB8BA84B76F2C7B,
0x275DCB5FD32CC6D9,
0x51F5E41604E66B4C,
0x85AA1E73DBFD1041,
0xF302313A0C37BDD4,
0x69E740E168745776,
0x1F4F6FA8BFBEFAE3,
0x4030A24AA0F29E2F,
0x36988D03773833BA,
0xAC7DFCD8137BD918,
0xDAD5D391C4B1748D,
0x12837B012DE3119D,
0x642B5448FA29BC08,
0xFECE25939E6A56AA,
0x88660ADA49A0FB3F,
0xD719C73856EC9FF3,
0xA1B1E87181263266,
0x3B5499AAE565D8C4,
0x4DFCB6E332AF7551,
0xB6F8D4972AC112E4,
0xC050FBDEFD0BBF71,
0x5AB58A05994855D3,
0x2C1DA54C4E82F846,
0x736268AE51CE9C8A,
0x05CA47E78604311F,
0x9F2F363CE247DBBD,
0xE9871975358D7628,
0x21D1B1E5DCDF1338,
0x57799EAC0B15BEAD,
0xCD9CEF776F56540F,
0xBB34C03EB89CF99A,
0xE44B0DDCA7D09D56,
0x92E32295701A30C3,
0x0806534E1459DA61,
0x7EAE7C07C39377F4,
0xE30E97A624851416,
0x95A6B8EFF34FB983,
0x0F43C934970C5321,
0x79EBE67D40C6FEB4,
0x26942B9F5F8A9A78,
0x503C04D6884037ED,
0xCAD9750DEC03DD4F,
0xBC715A443BC970DA,
0x7427F2D4D29B15CA,
0x028FDD9D0551B85F,
0x986AAC46611252FD,
0xEEC2830FB6D8FF68,
0xB1BD4EEDA9949BA4,
0xC71561A47E5E3631,
0x5DF0107F1A1DDC93,
0x2B583F36CDD77106,
0xD05C5D42D5B916B3,
0xA6F4720B0273BB26,
0x3C1103D066305184,
0x4AB92C99B1FAFC11,
0x15C6E17BAEB698DD,
0x636ECE32797C3548,
0xF98BBFE91D3FDFEA,
0x8F2390A0CAF5727F,
0x4775383023A7176F,
0x31DD1779F46DBAFA,
0xAB3866A2902E5058,
0xDD9049EB47E4FDCD,
0x82EF840958A89901,
0xF447AB408F623494,
0x6EA2DA9BEB21DE36,
0x180AF5D23CEB73A3,
0x49FF11C4380D18EF,
0x3F573E8DEFC7B57A,
0xA5B24F568B845FD8,
0xD31A601F5C4EF24D,
0x8C65ADFD43029681,
0xFACD82B494C83B14,
0x6028F36FF08BD1B6,
0x1680DC2627417C23,
0xDED674B6CE131933,
0xA87E5BFF19D9B4A6,
0x329B2A247D9A5E04,
0x4433056DAA50F391,
0x1B4CC88FB51C975D,
0x6DE4E7C662D63AC8,
0xF701961D0695D06A,
0x81A9B954D15F7DFF,
0x7AADDB20C9311A4A,
0x0C05F4691EFBB7DF,
0x96E085B27AB85D7D,
0xE048AAFBAD72F0E8,
0xBF376719B23E9424,
0xC99F485065F439B1,
0x537A398B01B7D313,
0x25D216C2D67D7E86,
0xED84BE523F2F1B96,
0x9B2C911BE8E5B603,
0x01C9E0C08CA65CA1,
0x7761CF895B6CF134,
0x281E026B442095F8,
0x5EB62D2293EA386D,
0xC4535CF9F7A9D2CF,
0xB2FB73B020637F5A,
0x2F5B9811C7751CB8,
0x59F3B75810BFB12D,
0xC316C68374FC5B8F,
0xB5BEE9CAA336F61A,
0xEAC12428BC7A92D6,
0x9C690B616BB03F43,
0x068C7ABA0FF3D5E1,
0x702455F3D8397874,
0xB872FD63316B1D64,
0xCEDAD22AE6A1B0F1,
0x543FA3F182E25A53,
0x22978CB85528F7C6,
0x7DE8415A4A64930A,
0x0B406E139DAE3E9F,
0x91A51FC8F9EDD43D,
0xE70D30812E2779A8,
0x1C0952F536491E1D,
0x6AA17DBCE183B388,
0xF0440C6785C0592A,
0x86EC232E520AF4BF,
0xD993EECC4D469073,
0xAF3BC1859A8C3DE6,
0x35DEB05EFECFD744,
0x43769F1729057AD1,
0x8B203787C0571FC1,
0xFD8818CE179DB254,
0x676D691573DE58F6,
0x11C5465CA414F563,
0x4EBA8BBEBB5891AF,
0x3812A4F76C923C3A,
0xA2F7D52C08D1D698,
0xD45FFA65DF1B7B0D,
],
[
0x0000000000000000,
0xA82F49D7CAAD9576,
0x4D5E92B3894737EC,
0xE571DB6443EAA29A,
0x9ABC397B0F8E6EC5,
0x329370ACC523FBB3,
0xD7E2ABC886C95929,
0x7FCDE21F4C64CC5F,
0x296572F61E01DC97,
0x814A3B21D4AC49E1,
0x643BE0459746EB7B,
0xCC14A9925DEB7E0D,
0xB3D94B8D118FB252,
0x1BF6025ADB222724,
0xFE87D93E98C885BE,
0x56A890E9526510C8,
0x52CAE4F13C02A533,
0xFAE5AD26F6AF3045,
0x1F947642B54592DF,
0xB7BB3F957FE807A9,
0xC876DD8A338CCBF6,
0x6059945DF9215E80,
0x85284F39BACBFC1A,
0x2D0706EE7066696C,
0x7BAF9607220379A4,
0xD380DFD0E8AEECD2,
0x36F104B4AB444E48,
0x9EDE4D6361E9DB3E,
0xE113AF7C2D8D1761,
0x493CE6ABE7208217,
0xAC4D3DCFA4CA208D,
0x046274186E67B5FB,
0xA489D5FF78045766,
0x0CA69C28B2A9C210,
0xE9D7474CF143608A,
0x41F80E9B3BEEF5FC,
0x3E35EC84778A39A3,
0x961AA553BD27ACD5,
0x736B7E37FECD0E4F,
0xDB4437E034609B39,
0x8DECA70966058BF1,
0x25C3EEDEACA81E87,
0xC0B235BAEF42BC1D,
0x689D7C6D25EF296B,
0x17509E72698BE534,
0xBF7FD7A5A3267042,
0x5A0E0CC1E0CCD2D8,
0xF22145162A6147AE,
0xF643310E4406F255,
0x5E6C78D98EAB6723,
0xBB1DA3BDCD41C5B9,
0x1332EA6A07EC50CF,
0x6CFF08754B889C90,
0xC4D041A2812509E6,
0x21A19AC6C2CFAB7C,
0x898ED31108623E0A,
0xDF2643F85A072EC2,
0x77090A2F90AABBB4,
0x9278D14BD340192E,
0x3A57989C19ED8C58,
0x459A7A8355894007,
0xEDB533549F24D571,
0x08C4E830DCCE77EB,
0xA0EBA1E71663E29D,
0x550FB7E3F008AECC,
0xFD20FE343AA53BBA,
0x18512550794F9920,
0xB07E6C87B3E20C56,
0xCFB38E98FF86C009,
0x679CC74F352B557F,
0x82ED1C2B76C1F7E5,
0x2AC255FCBC6C6293,
0x7C6AC515EE09725B,
0xD4458CC224A4E72D,
0x313457A6674E45B7,
0x991B1E71ADE3D0C1,
0xE6D6FC6EE1871C9E,
0x4EF9B5B92B2A89E8,
0xAB886EDD68C02B72,
0x03A7270AA26DBE04,
0x07C55312CC0A0BFF,
0xAFEA1AC506A79E89,
0x4A9BC1A1454D3C13,
0xE2B488768FE0A965,
0x9D796A69C384653A,
0x355623BE0929F04C,
0xD027F8DA4AC352D6,
0x7808B10D806EC7A0,
0x2EA021E4D20BD768,
0x868F683318A6421E,
0x63FEB3575B4CE084,
0xCBD1FA8091E175F2,
0xB41C189FDD85B9AD,
0x1C33514817282CDB,
0xF9428A2C54C28E41,
0x516DC3FB9E6F1B37,
0xF186621C880CF9AA,
0x59A92BCB42A16CDC,
0xBCD8F0AF014BCE46,
0x14F7B978CBE65B30,
0x6B3A5B678782976F,
0xC31512B04D2F0219,
0x2664C9D40EC5A083,
0x8E4B8003C46835F5,
0xD8E310EA960D253D,
0x70CC593D5CA0B04B,
0x95BD82591F4A12D1,
0x3D92CB8ED5E787A7,
0x425F299199834BF8,
0xEA706046532EDE8E,
0x0F01BB2210C47C14,
0xA72EF2F5DA69E962,
0xA34C86EDB40E5C99,
0x0B63CF3A7EA3C9EF,
0xEE12145E3D496B75,
0x463D5D89F7E4FE03,
0x39F0BF96BB80325C,
0x91DFF641712DA72A,
0x74AE2D2532C705B0,
0xDC8164F2F86A90C6,
0x8A29F41BAA0F800E,
0x2206BDCC60A21578,
0xC77766A82348B7E2,
0x6F582F7FE9E52294,
0x1095CD60A581EECB,
0xB8BA84B76F2C7BBD,
0x5DCB5FD32CC6D927,
0xF5E41604E66B4C51,
0xAA1E73DBFD104185,
0x02313A0C37BDD4F3,
0xE740E16874577669,
0x4F6FA8BFBEFAE31F,
0x30A24AA0F29E2F40,
0x988D03773833BA36,
0x7DFCD8137BD918AC,
0xD5D391C4B1748DDA,
0x837B012DE3119D12,
0x2B5448FA29BC0864,
0xCE25939E6A56AAFE,
0x660ADA49A0FB3F88,
0x19C73856EC9FF3D7,
0xB1E87181263266A1,
0x5499AAE565D8C43B,
0xFCB6E332AF75514D,
0xF8D4972AC112E4B6,
0x50FBDEFD0BBF71C0,
0xB58A05994855D35A,
0x1DA54C4E82F8462C,
0x6268AE51CE9C8A73,
0xCA47E78604311F05,
0x2F363CE247DBBD9F,
0x871975358D7628E9,
0xD1B1E5DCDF133821,
0x799EAC0B15BEAD57,
0x9CEF776F56540FCD,
0x34C03EB89CF99ABB,
0x4B0DDCA7D09D56E4,
0xE32295701A30C392,
0x06534E1459DA6108,
0xAE7C07C39377F47E,
0x0E97A624851416E3,
0xA6B8EFF34FB98395,
0x43C934970C53210F,
0xEBE67D40C6FEB479,
0x942B9F5F8A9A7826,
0x3C04D6884037ED50,
0xD9750DEC03DD4FCA,
0x715A443BC970DABC,
0x27F2D4D29B15CA74,
0x8FDD9D0551B85F02,
0x6AAC46611252FD98,
0xC2830FB6D8FF68EE,
0xBD4EEDA9949BA4B1,
0x1561A47E5E3631C7,
0xF0107F1A1DDC935D,
0x583F36CDD771062B,
0x5C5D42D5B916B3D0,
0xF4720B0273BB26A6,
0x1103D0663051843C,
0xB92C99B1FAFC114A,
0xC6E17BAEB698DD15,
0x6ECE32797C354863,
0x8BBFE91D3FDFEAF9,
0x2390A0CAF5727F8F,
0x75383023A7176F47,
0xDD1779F46DBAFA31,
0x3866A2902E5058AB,
0x9049EB47E4FDCDDD,
0xEF840958A8990182,
0x47AB408F623494F4,
0xA2DA9BEB21DE366E,
0x0AF5D23CEB73A318,
0xFF11C4380D18EF49,
0x573E8DEFC7B57A3F,
0xB24F568B845FD8A5,
0x1A601F5C4EF24DD3,
0x65ADFD430296818C,
0xCD82B494C83B14FA,
0x28F36FF08BD1B660,
0x80DC2627417C2316,
0xD674B6CE131933DE,
0x7E5BFF19D9B4A6A8,
0x9B2A247D9A5E0432,
0x33056DAA50F39144,
0x4CC88FB51C975D1B,
0xE4E7C662D63AC86D,
0x01961D0695D06AF7,
0xA9B954D15F7DFF81,
0xADDB20C9311A4A7A,
0x05F4691EFBB7DF0C,
0xE085B27AB85D7D96,
0x48AAFBAD72F0E8E0,
0x376719B23E9424BF,
0x9F485065F439B1C9,
0x7A398B01B7D31353,
0xD216C2D67D7E8625,
0x84BE523F2F1B96ED,
0x2C911BE8E5B6039B,
0xC9E0C08CA65CA101,
0x61CF895B6CF13477,
0x1E026B442095F828,
0xB62D2293EA386D5E,
0x535CF9F7A9D2CFC4,
0xFB73B020637F5AB2,
0x5B9811C7751CB82F,
0xF3B75810BFB12D59,
0x16C68374FC5B8FC3,
0xBEE9CAA336F61AB5,
0xC12428BC7A92D6EA,
0x690B616BB03F439C,
0x8C7ABA0FF3D5E106,
0x2455F3D839787470,
0x72FD63316B1D64B8,
0xDAD22AE6A1B0F1CE,
0x3FA3F182E25A5354,
0x978CB85528F7C622,
0xE8415A4A64930A7D,
0x406E139DAE3E9F0B,
0xA51FC8F9EDD43D91,
0x0D30812E2779A8E7,
0x0952F536491E1D1C,
0xA17DBCE183B3886A,
0x440C6785C0592AF0,
0xEC232E520AF4BF86,
0x93EECC4D469073D9,
0x3BC1859A8C3DE6AF,
0xDEB05EFECFD74435,
0x769F1729057AD143,
0x203787C0571FC18B,
0x8818CE179DB254FD,
0x6D691573DE58F667,
0xC5465CA414F56311,
0xBA8BBEBB5891AF4E,
0x12A4F76C923C3A38,
0xF7D52C08D1D698A2,
0x5FFA65DF1B7B0DD4,
],
[
0x0000000000000000,
0x2F49D7CAAD9576A8,
0x5E92B3894737EC4D,
0x71DB6443EAA29AE5,
0xBC397B0F8E6EC59A,
0x9370ACC523FBB332,
0xE2ABC886C95929D7,
0xCDE21F4C64CC5F7F,
0x6572F61E01DC9729,
0x4A3B21D4AC49E181,
0x3BE0459746EB7B64,
0x14A9925DEB7E0DCC,
0xD94B8D118FB252B3,
0xF6025ADB2227241B,
0x87D93E98C885BEFE,
0xA890E9526510C856,
0xCAE4F13C02A53352,
0xE5AD26F6AF3045FA,
0x947642B54592DF1F,
0xBB3F957FE807A9B7,
0x76DD8A338CCBF6C8,
0x59945DF9215E8060,
0x284F39BACBFC1A85,
0x0706EE7066696C2D,
0xAF9607220379A47B,
0x80DFD0E8AEECD2D3,
0xF104B4AB444E4836,
0xDE4D6361E9DB3E9E,
0x13AF7C2D8D1761E1,
0x3CE6ABE720821749,
0x4D3DCFA4CA208DAC,
0x6274186E67B5FB04,
0x89D5FF78045766A4,
0xA69C28B2A9C2100C,
0xD7474CF143608AE9,
0xF80E9B3BEEF5FC41,
0x35EC84778A39A33E,
0x1AA553BD27ACD596,
0x6B7E37FECD0E4F73,
0x4437E034609B39DB,
0xECA70966058BF18D,
0xC3EEDEACA81E8725,
0xB235BAEF42BC1DC0,
0x9D7C6D25EF296B68,
0x509E72698BE53417,
0x7FD7A5A3267042BF,
0x0E0CC1E0CCD2D85A,
0x2145162A6147AEF2,
0x43310E4406F255F6,
0x6C78D98EAB67235E,
0x1DA3BDCD41C5B9BB,
0x32EA6A07EC50CF13,
0xFF08754B889C906C,
0xD041A2812509E6C4,
0xA19AC6C2CFAB7C21,
0x8ED31108623E0A89,
0x2643F85A072EC2DF,
0x090A2F90AABBB477,
0x78D14BD340192E92,
0x57989C19ED8C583A,
0x9A7A835589400745,
0xB533549F24D571ED,
0xC4E830DCCE77EB08,
0xEBA1E71663E29DA0,
0x0FB7E3F008AECC55,
0x20FE343AA53BBAFD,
0x512550794F992018,
0x7E6C87B3E20C56B0,
0xB38E98FF86C009CF,
0x9CC74F352B557F67,
0xED1C2B76C1F7E582,
0xC255FCBC6C62932A,
0x6AC515EE09725B7C,
0x458CC224A4E72DD4,
0x3457A6674E45B731,
0x1B1E71ADE3D0C199,
0xD6FC6EE1871C9EE6,
0xF9B5B92B2A89E84E,
0x886EDD68C02B72AB,
0xA7270AA26DBE0403,
0xC55312CC0A0BFF07,
0xEA1AC506A79E89AF,
0x9BC1A1454D3C134A,
0xB488768FE0A965E2,
0x796A69C384653A9D,
0x5623BE0929F04C35,
0x27F8DA4AC352D6D0,
0x08B10D806EC7A078,
0xA021E4D20BD7682E,
0x8F683318A6421E86,
0xFEB3575B4CE08463,
0xD1FA8091E175F2CB,
0x1C189FDD85B9ADB4,
0x33514817282CDB1C,
0x428A2C54C28E41F9,
0x6DC3FB9E6F1B3751,
0x86621C880CF9AAF1,
0xA92BCB42A16CDC59,
0xD8F0AF014BCE46BC,
0xF7B978CBE65B3014,
0x3A5B678782976F6B,
0x1512B04D2F0219C3,
0x64C9D40EC5A08326,
0x4B8003C46835F58E,
0xE310EA960D253DD8,
0xCC593D5CA0B04B70,
0xBD82591F4A12D195,
0x92CB8ED5E787A73D,
0x5F299199834BF842,
0x706046532EDE8EEA,
0x01BB2210C47C140F,
0x2EF2F5DA69E962A7,
0x4C86EDB40E5C99A3,
0x63CF3A7EA3C9EF0B,
0x12145E3D496B75EE,
0x3D5D89F7E4FE0346,
0xF0BF96BB80325C39,
0xDFF641712DA72A91,
0xAE2D2532C705B074,
0x8164F2F86A90C6DC,
0x29F41BAA0F800E8A,
0x06BDCC60A2157822,
0x7766A82348B7E2C7,
0x582F7FE9E522946F,
0x95CD60A581EECB10,
0xBA84B76F2C7BBDB8,
0xCB5FD32CC6D9275D,
0xE41604E66B4C51F5,
0x1E73DBFD104185AA,
0x313A0C37BDD4F302,
0x40E16874577669E7,
0x6FA8BFBEFAE31F4F,
0xA24AA0F29E2F4030,
0x8D03773833BA3698,
0xFCD8137BD918AC7D,
0xD391C4B1748DDAD5,
0x7B012DE3119D1283,
0x5448FA29BC08642B,
0x25939E6A56AAFECE,
0x0ADA49A0FB3F8866,
0xC73856EC9FF3D719,
0xE87181263266A1B1,
0x99AAE565D8C43B54,
0xB6E332AF75514DFC,
0xD4972AC112E4B6F8,
0xFBDEFD0BBF71C050,
0x8A05994855D35AB5,
0xA54C4E82F8462C1D,
0x68AE51CE9C8A7362,
0x47E78604311F05CA,
0x363CE247DBBD9F2F,
0x1975358D7628E987,
0xB1E5DCDF133821D1,
0x9EAC0B15BEAD5779,
0xEF776F56540FCD9C,
0xC03EB89CF99ABB34,
0x0DDCA7D09D56E44B,
0x2295701A30C392E3,
0x534E1459DA610806,
0x7C07C39377F47EAE,
0x97A624851416E30E,
0xB8EFF34FB98395A6,
0xC934970C53210F43,
0xE67D40C6FEB479EB,
0x2B9F5F8A9A782694,
0x04D6884037ED503C,
0x750DEC03DD4FCAD9,
0x5A443BC970DABC71,
0xF2D4D29B15CA7427,
0xDD9D0551B85F028F,
0xAC46611252FD986A,
0x830FB6D8FF68EEC2,
0x4EEDA9949BA4B1BD,
0x61A47E5E3631C715,
0x107F1A1DDC935DF0,
0x3F36CDD771062B58,
0x5D42D5B916B3D05C,
0x720B0273BB26A6F4,
0x03D0663051843C11,
0x2C99B1FAFC114AB9,
0xE17BAEB698DD15C6,
0xCE32797C3548636E,
0xBFE91D3FDFEAF98B,
0x90A0CAF5727F8F23,
0x383023A7176F4775,
0x1779F46DBAFA31DD,
0x66A2902E5058AB38,
0x49EB47E4FDCDDD90,
0x840958A8990182EF,
0xAB408F623494F447,
0xDA9BEB21DE366EA2,
0xF5D23CEB73A3180A,
0x11C4380D18EF49FF,
0x3E8DEFC7B57A3F57,
0x4F568B845FD8A5B2,
0x601F5C4EF24DD31A,
0xADFD430296818C65,
0x82B494C83B14FACD,
0xF36FF08BD1B66028,
0xDC2627417C231680,
0x74B6CE131933DED6,
0x5BFF19D9B4A6A87E,
0x2A247D9A5E04329B,
0x056DAA50F3914433,
0xC88FB51C975D1B4C,
0xE7C662D63AC86DE4,
0x961D0695D06AF701,
0xB954D15F7DFF81A9,
0xDB20C9311A4A7AAD,
0xF4691EFBB7DF0C05,
0x85B27AB85D7D96E0,
0xAAFBAD72F0E8E048,
0x6719B23E9424BF37,
0x485065F439B1C99F,
0x398B01B7D313537A,
0x16C2D67D7E8625D2,
0xBE523F2F1B96ED84,
0x911BE8E5B6039B2C,
0xE0C08CA65CA101C9,
0xCF895B6CF1347761,
0x026B442095F8281E,
0x2D2293EA386D5EB6,
0x5CF9F7A9D2CFC453,
0x73B020637F5AB2FB,
0x9811C7751CB82F5B,
0xB75810BFB12D59F3,
0xC68374FC5B8FC316,
0xE9CAA336F61AB5BE,
0x2428BC7A92D6EAC1,
0x0B616BB03F439C69,
0x7ABA0FF3D5E1068C,
0x55F3D83978747024,
0xFD63316B1D64B872,
0xD22AE6A1B0F1CEDA,
0xA3F182E25A53543F,
0x8CB85528F7C62297,
0x415A4A64930A7DE8,
0x6E139DAE3E9F0B40,
0x1FC8F9EDD43D91A5,
0x30812E2779A8E70D,
0x52F536491E1D1C09,
0x7DBCE183B3886AA1,
0x0C6785C0592AF044,
0x232E520AF4BF86EC,
0xEECC4D469073D993,
0xC1859A8C3DE6AF3B,
0xB05EFECFD74435DE,
0x9F1729057AD14376,
0x3787C0571FC18B20,
0x18CE179DB254FD88,
0x691573DE58F6676D,
0x465CA414F56311C5,
0x8BBEBB5891AF4EBA,
0xA4F76C923C3A3812,
0xD52C08D1D698A2F7,
0xFA65DF1B7B0DD45F,
],
[
0x0000000000000000,
0x49D7CAAD9576A82F,
0x92B3894737EC4D5E,
0xDB6443EAA29AE571,
0x397B0F8E6EC59ABC,
0x70ACC523FBB33293,
0xABC886C95929D7E2,
0xE21F4C64CC5F7FCD,
0x72F61E01DC972965,
0x3B21D4AC49E1814A,
0xE0459746EB7B643B,
0xA9925DEB7E0DCC14,
0x4B8D118FB252B3D9,
0x025ADB2227241BF6,
0xD93E98C885BEFE87,
0x90E9526510C856A8,
0xE4F13C02A53352CA,
0xAD26F6AF3045FAE5,
0x7642B54592DF1F94,
0x3F957FE807A9B7BB,
0xDD8A338CCBF6C876,
0x945DF9215E806059,
0x4F39BACBFC1A8528,
0x06EE7066696C2D07,
0x9607220379A47BAF,
0xDFD0E8AEECD2D380,
0x04B4AB444E4836F1,
0x4D6361E9DB3E9EDE,
0xAF7C2D8D1761E113,
0xE6ABE7208217493C,
0x3DCFA4CA208DAC4D,
0x74186E67B5FB0462,
0xD5FF78045766A489,
0x9C28B2A9C2100CA6,
0x474CF143608AE9D7,
0x0E9B3BEEF5FC41F8,
0xEC84778A39A33E35,
0xA553BD27ACD5961A,
0x7E37FECD0E4F736B,
0x37E034609B39DB44,
0xA70966058BF18DEC,
0xEEDEACA81E8725C3,
0x35BAEF42BC1DC0B2,
0x7C6D25EF296B689D,
0x9E72698BE5341750,
0xD7A5A3267042BF7F,
0x0CC1E0CCD2D85A0E,
0x45162A6147AEF221,
0x310E4406F255F643,
0x78D98EAB67235E6C,
0xA3BDCD41C5B9BB1D,
0xEA6A07EC50CF1332,
0x08754B889C906CFF,
0x41A2812509E6C4D0,
0x9AC6C2CFAB7C21A1,
0xD31108623E0A898E,
0x43F85A072EC2DF26,
0x0A2F90AABBB47709,
0xD14BD340192E9278,
0x989C19ED8C583A57,
0x7A8355894007459A,
0x33549F24D571EDB5,
0xE830DCCE77EB08C4,
0xA1E71663E29DA0EB,
0xB7E3F008AECC550F,
0xFE343AA53BBAFD20,
0x2550794F99201851,
0x6C87B3E20C56B07E,
0x8E98FF86C009CFB3,
0xC74F352B557F679C,
0x1C2B76C1F7E582ED,
0x55FCBC6C62932AC2,
0xC515EE09725B7C6A,
0x8CC224A4E72DD445,
0x57A6674E45B73134,
0x1E71ADE3D0C1991B,
0xFC6EE1871C9EE6D6,
0xB5B92B2A89E84EF9,
0x6EDD68C02B72AB88,
0x270AA26DBE0403A7,
0x5312CC0A0BFF07C5,
0x1AC506A79E89AFEA,
0xC1A1454D3C134A9B,
0x88768FE0A965E2B4,
0x6A69C384653A9D79,
0x23BE0929F04C3556,
0xF8DA4AC352D6D027,
0xB10D806EC7A07808,
0x21E4D20BD7682EA0,
0x683318A6421E868F,
0xB3575B4CE08463FE,
0xFA8091E175F2CBD1,
0x189FDD85B9ADB41C,
0x514817282CDB1C33,
0x8A2C54C28E41F942,
0xC3FB9E6F1B37516D,
0x621C880CF9AAF186,
0x2BCB42A16CDC59A9,
0xF0AF014BCE46BCD8,
0xB978CBE65B3014F7,
0x5B678782976F6B3A,
0x12B04D2F0219C315,
0xC9D40EC5A0832664,
0x8003C46835F58E4B,
0x10EA960D253DD8E3,
0x593D5CA0B04B70CC,
0x82591F4A12D195BD,
0xCB8ED5E787A73D92,
0x299199834BF8425F,
0x6046532EDE8EEA70,
0xBB2210C47C140F01,
0xF2F5DA69E962A72E,
0x86EDB40E5C99A34C,
0xCF3A7EA3C9EF0B63,
0x145E3D496B75EE12,
0x5D89F7E4FE03463D,
0xBF96BB80325C39F0,
0xF641712DA72A91DF,
0x2D2532C705B074AE,
0x64F2F86A90C6DC81,
0xF41BAA0F800E8A29,
0xBDCC60A215782206,
0x66A82348B7E2C777,
0x2F7FE9E522946F58,
0xCD60A581EECB1095,
0x84B76F2C7BBDB8BA,
0x5FD32CC6D9275DCB,
0x1604E66B4C51F5E4,
0x73DBFD104185AA1E,
0x3A0C37BDD4F30231,
0xE16874577669E740,
0xA8BFBEFAE31F4F6F,
0x4AA0F29E2F4030A2,
0x03773833BA36988D,
0xD8137BD918AC7DFC,
0x91C4B1748DDAD5D3,
0x012DE3119D12837B,
0x48FA29BC08642B54,
0x939E6A56AAFECE25,
0xDA49A0FB3F88660A,
0x3856EC9FF3D719C7,
0x7181263266A1B1E8,
0xAAE565D8C43B5499,
0xE332AF75514DFCB6,
0x972AC112E4B6F8D4,
0xDEFD0BBF71C050FB,
0x05994855D35AB58A,
0x4C4E82F8462C1DA5,
0xAE51CE9C8A736268,
0xE78604311F05CA47,
0x3CE247DBBD9F2F36,
0x75358D7628E98719,
0xE5DCDF133821D1B1,
0xAC0B15BEAD57799E,
0x776F56540FCD9CEF,
0x3EB89CF99ABB34C0,
0xDCA7D09D56E44B0D,
0x95701A30C392E322,
0x4E1459DA61080653,
0x07C39377F47EAE7C,
0xA624851416E30E97,
0xEFF34FB98395A6B8,
0x34970C53210F43C9,
0x7D40C6FEB479EBE6,
0x9F5F8A9A7826942B,
0xD6884037ED503C04,
0x0DEC03DD4FCAD975,
0x443BC970DABC715A,
0xD4D29B15CA7427F2,
0x9D0551B85F028FDD,
0x46611252FD986AAC,
0x0FB6D8FF68EEC283,
0xEDA9949BA4B1BD4E,
0xA47E5E3631C71561,
0x7F1A1DDC935DF010,
0x36CDD771062B583F,
0x42D5B916B3D05C5D,
0x0B0273BB26A6F472,
0xD0663051843C1103,
0x99B1FAFC114AB92C,
0x7BAEB698DD15C6E1,
0x32797C3548636ECE,
0xE91D3FDFEAF98BBF,
0xA0CAF5727F8F2390,
0x3023A7176F477538,
0x79F46DBAFA31DD17,
0xA2902E5058AB3866,
0xEB47E4FDCDDD9049,
0x0958A8990182EF84,
0x408F623494F447AB,
0x9BEB21DE366EA2DA,
0xD23CEB73A3180AF5,
0xC4380D18EF49FF11,
0x8DEFC7B57A3F573E,
0x568B845FD8A5B24F,
0x1F5C4EF24DD31A60,
0xFD430296818C65AD,
0xB494C83B14FACD82,
0x6FF08BD1B66028F3,
0x2627417C231680DC,
0xB6CE131933DED674,
0xFF19D9B4A6A87E5B,
0x247D9A5E04329B2A,
0x6DAA50F391443305,
0x8FB51C975D1B4CC8,
0xC662D63AC86DE4E7,
0x1D0695D06AF70196,
0x54D15F7DFF81A9B9,
0x20C9311A4A7AADDB,
0x691EFBB7DF0C05F4,
0xB27AB85D7D96E085,
0xFBAD72F0E8E048AA,
0x19B23E9424BF3767,
0x5065F439B1C99F48,
0x8B01B7D313537A39,
0xC2D67D7E8625D216,
0x523F2F1B96ED84BE,
0x1BE8E5B6039B2C91,
0xC08CA65CA101C9E0,
0x895B6CF1347761CF,
0x6B442095F8281E02,
0x2293EA386D5EB62D,
0xF9F7A9D2CFC4535C,
0xB020637F5AB2FB73,
0x11C7751CB82F5B98,
0x5810BFB12D59F3B7,
0x8374FC5B8FC316C6,
0xCAA336F61AB5BEE9,
0x28BC7A92D6EAC124,
0x616BB03F439C690B,
0xBA0FF3D5E1068C7A,
0xF3D8397874702455,
0x63316B1D64B872FD,
0x2AE6A1B0F1CEDAD2,
0xF182E25A53543FA3,
0xB85528F7C622978C,
0x5A4A64930A7DE841,
0x139DAE3E9F0B406E,
0xC8F9EDD43D91A51F,
0x812E2779A8E70D30,
0xF536491E1D1C0952,
0xBCE183B3886AA17D,
0x6785C0592AF0440C,
0x2E520AF4BF86EC23,
0xCC4D469073D993EE,
0x859A8C3DE6AF3BC1,
0x5EFECFD74435DEB0,
0x1729057AD143769F,
0x87C0571FC18B2037,
0xCE179DB254FD8818,
0x1573DE58F6676D69,
0x5CA414F56311C546,
0xBEBB5891AF4EBA8B,
0xF76C923C3A3812A4,
0x2C08D1D698A2F7D5,
0x65DF1B7B0DD45FFA,
],
[
0x0000000000000000,
0xD7CAAD9576A82F49,
0xB3894737EC4D5E92,
0x6443EAA29AE571DB,
0x7B0F8E6EC59ABC39,
0xACC523FBB3329370,
0xC886C95929D7E2AB,
0x1F4C64CC5F7FCDE2,
0xF61E01DC97296572,
0x21D4AC49E1814A3B,
0x459746EB7B643BE0,
0x925DEB7E0DCC14A9,
0x8D118FB252B3D94B,
0x5ADB2227241BF602,
0x3E98C885BEFE87D9,
0xE9526510C856A890,
0xF13C02A53352CAE4,
0x26F6AF3045FAE5AD,
0x42B54592DF1F9476,
0x957FE807A9B7BB3F,
0x8A338CCBF6C876DD,
0x5DF9215E80605994,
0x39BACBFC1A85284F,
0xEE7066696C2D0706,
0x07220379A47BAF96,
0xD0E8AEECD2D380DF,
0xB4AB444E4836F104,
0x6361E9DB3E9EDE4D,
0x7C2D8D1761E113AF,
0xABE7208217493CE6,
0xCFA4CA208DAC4D3D,
0x186E67B5FB046274,
0xFF78045766A489D5,
0x28B2A9C2100CA69C,
0x4CF143608AE9D747,
0x9B3BEEF5FC41F80E,
0x84778A39A33E35EC,
0x53BD27ACD5961AA5,
0x37FECD0E4F736B7E,
0xE034609B39DB4437,
0x0966058BF18DECA7,
0xDEACA81E8725C3EE,
0xBAEF42BC1DC0B235,
0x6D25EF296B689D7C,
0x72698BE53417509E,
0xA5A3267042BF7FD7,
0xC1E0CCD2D85A0E0C,
0x162A6147AEF22145,
0x0E4406F255F64331,
0xD98EAB67235E6C78,
0xBDCD41C5B9BB1DA3,
0x6A07EC50CF1332EA,
0x754B889C906CFF08,
0xA2812509E6C4D041,
0xC6C2CFAB7C21A19A,
0x1108623E0A898ED3,
0xF85A072EC2DF2643,
0x2F90AABBB477090A,
0x4BD340192E9278D1,
0x9C19ED8C583A5798,
0x8355894007459A7A,
0x549F24D571EDB533,
0x30DCCE77EB08C4E8,
0xE71663E29DA0EBA1,
0xE3F008AECC550FB7,
0x343AA53BBAFD20FE,
0x50794F9920185125,
0x87B3E20C56B07E6C,
0x98FF86C009CFB38E,
0x4F352B557F679CC7,
0x2B76C1F7E582ED1C,
0xFCBC6C62932AC255,
0x15EE09725B7C6AC5,
0xC224A4E72DD4458C,
0xA6674E45B7313457,
0x71ADE3D0C1991B1E,
0x6EE1871C9EE6D6FC,
0xB92B2A89E84EF9B5,
0xDD68C02B72AB886E,
0x0AA26DBE0403A727,
0x12CC0A0BFF07C553,
0xC506A79E89AFEA1A,
0xA1454D3C134A9BC1,
0x768FE0A965E2B488,
0x69C384653A9D796A,
0xBE0929F04C355623,
0xDA4AC352D6D027F8,
0x0D806EC7A07808B1,
0xE4D20BD7682EA021,
0x3318A6421E868F68,
0x575B4CE08463FEB3,
0x8091E175F2CBD1FA,
0x9FDD85B9ADB41C18,
0x4817282CDB1C3351,
0x2C54C28E41F9428A,
0xFB9E6F1B37516DC3,
0x1C880CF9AAF18662,
0xCB42A16CDC59A92B,
0xAF014BCE46BCD8F0,
0x78CBE65B3014F7B9,
0x678782976F6B3A5B,
0xB04D2F0219C31512,
0xD40EC5A0832664C9,
0x03C46835F58E4B80,
0xEA960D253DD8E310,
0x3D5CA0B04B70CC59,
0x591F4A12D195BD82,
0x8ED5E787A73D92CB,
0x9199834BF8425F29,
0x46532EDE8EEA7060,
0x2210C47C140F01BB,
0xF5DA69E962A72EF2,
0xEDB40E5C99A34C86,
0x3A7EA3C9EF0B63CF,
0x5E3D496B75EE1214,
0x89F7E4FE03463D5D,
0x96BB80325C39F0BF,
0x41712DA72A91DFF6,
0x2532C705B074AE2D,
0xF2F86A90C6DC8164,
0x1BAA0F800E8A29F4,
0xCC60A215782206BD,
0xA82348B7E2C77766,
0x7FE9E522946F582F,
0x60A581EECB1095CD,
0xB76F2C7BBDB8BA84,
0xD32CC6D9275DCB5F,
0x04E66B4C51F5E416,
0xDBFD104185AA1E73,
0x0C37BDD4F302313A,
0x6874577669E740E1,
0xBFBEFAE31F4F6FA8,
0xA0F29E2F4030A24A,
0x773833BA36988D03,
0x137BD918AC7DFCD8,
0xC4B1748DDAD5D391,
0x2DE3119D12837B01,
0xFA29BC08642B5448,
0x9E6A56AAFECE2593,
0x49A0FB3F88660ADA,
0x56EC9FF3D719C738,
0x81263266A1B1E871,
0xE565D8C43B5499AA,
0x32AF75514DFCB6E3,
0x2AC112E4B6F8D497,
0xFD0BBF71C050FBDE,
0x994855D35AB58A05,
0x4E82F8462C1DA54C,
0x51CE9C8A736268AE,
0x8604311F05CA47E7,
0xE247DBBD9F2F363C,
0x358D7628E9871975,
0xDCDF133821D1B1E5,
0x0B15BEAD57799EAC,
0x6F56540FCD9CEF77,
0xB89CF99ABB34C03E,
0xA7D09D56E44B0DDC,
0x701A30C392E32295,
0x1459DA610806534E,
0xC39377F47EAE7C07,
0x24851416E30E97A6,
0xF34FB98395A6B8EF,
0x970C53210F43C934,
0x40C6FEB479EBE67D,
0x5F8A9A7826942B9F,
0x884037ED503C04D6,
0xEC03DD4FCAD9750D,
0x3BC970DABC715A44,
0xD29B15CA7427F2D4,
0x0551B85F028FDD9D,
0x611252FD986AAC46,
0xB6D8FF68EEC2830F,
0xA9949BA4B1BD4EED,
0x7E5E3631C71561A4,
0x1A1DDC935DF0107F,
0xCDD771062B583F36,
0xD5B916B3D05C5D42,
0x0273BB26A6F4720B,
0x663051843C1103D0,
0xB1FAFC114AB92C99,
0xAEB698DD15C6E17B,
0x797C3548636ECE32,
0x1D3FDFEAF98BBFE9,
0xCAF5727F8F2390A0,
0x23A7176F47753830,
0xF46DBAFA31DD1779,
0x902E5058AB3866A2,
0x47E4FDCDDD9049EB,
0x58A8990182EF8409,
0x8F623494F447AB40,
0xEB21DE366EA2DA9B,
0x3CEB73A3180AF5D2,
0x380D18EF49FF11C4,
0xEFC7B57A3F573E8D,
0x8B845FD8A5B24F56,
0x5C4EF24DD31A601F,
0x430296818C65ADFD,
0x94C83B14FACD82B4,
0xF08BD1B66028F36F,
0x27417C231680DC26,
0xCE131933DED674B6,
0x19D9B4A6A87E5BFF,
0x7D9A5E04329B2A24,
0xAA50F3914433056D,
0xB51C975D1B4CC88F,
0x62D63AC86DE4E7C6,
0x0695D06AF701961D,
0xD15F7DFF81A9B954,
0xC9311A4A7AADDB20,
0x1EFBB7DF0C05F469,
0x7AB85D7D96E085B2,
0xAD72F0E8E048AAFB,
0xB23E9424BF376719,
0x65F439B1C99F4850,
0x01B7D313537A398B,
0xD67D7E8625D216C2,
0x3F2F1B96ED84BE52,
0xE8E5B6039B2C911B,
0x8CA65CA101C9E0C0,
0x5B6CF1347761CF89,
0x442095F8281E026B,
0x93EA386D5EB62D22,
0xF7A9D2CFC4535CF9,
0x20637F5AB2FB73B0,
0xC7751CB82F5B9811,
0x10BFB12D59F3B758,
0x74FC5B8FC316C683,
0xA336F61AB5BEE9CA,
0xBC7A92D6EAC12428,
0x6BB03F439C690B61,
0x0FF3D5E1068C7ABA,
0xD8397874702455F3,
0x316B1D64B872FD63,
0xE6A1B0F1CEDAD22A,
0x82E25A53543FA3F1,
0x5528F7C622978CB8,
0x4A64930A7DE8415A,
0x9DAE3E9F0B406E13,
0xF9EDD43D91A51FC8,
0x2E2779A8E70D3081,
0x36491E1D1C0952F5,
0xE183B3886AA17DBC,
0x85C0592AF0440C67,
0x520AF4BF86EC232E,
0x4D469073D993EECC,
0x9A8C3DE6AF3BC185,
0xFECFD74435DEB05E,
0x29057AD143769F17,
0xC0571FC18B203787,
0x179DB254FD8818CE,
0x73DE58F6676D6915,
0xA414F56311C5465C,
0xBB5891AF4EBA8BBE,
0x6C923C3A3812A4F7,
0x08D1D698A2F7D52C,
0xDF1B7B0DD45FFA65,
],
[
0x0000000000000000,
0xCAAD9576A82F49D7,
0x894737EC4D5E92B3,
0x43EAA29AE571DB64,
0x0F8E6EC59ABC397B,
0xC523FBB3329370AC,
0x86C95929D7E2ABC8,
0x4C64CC5F7FCDE21F,
0x1E01DC97296572F6,
0xD4AC49E1814A3B21,
0x9746EB7B643BE045,
0x5DEB7E0DCC14A992,
0x118FB252B3D94B8D,
0xDB2227241BF6025A,
0x98C885BEFE87D93E,
0x526510C856A890E9,
0x3C02A53352CAE4F1,
0xF6AF3045FAE5AD26,
0xB54592DF1F947642,
0x7FE807A9B7BB3F95,
0x338CCBF6C876DD8A,
0xF9215E806059945D,
0xBACBFC1A85284F39,
0x7066696C2D0706EE,
0x220379A47BAF9607,
0xE8AEECD2D380DFD0,
0xAB444E4836F104B4,
0x61E9DB3E9EDE4D63,
0x2D8D1761E113AF7C,
0xE7208217493CE6AB,
0xA4CA208DAC4D3DCF,
0x6E67B5FB04627418,
0x78045766A489D5FF,
0xB2A9C2100CA69C28,
0xF143608AE9D7474C,
0x3BEEF5FC41F80E9B,
0x778A39A33E35EC84,
0xBD27ACD5961AA553,
0xFECD0E4F736B7E37,
0x34609B39DB4437E0,
0x66058BF18DECA709,
0xACA81E8725C3EEDE,
0xEF42BC1DC0B235BA,
0x25EF296B689D7C6D,
0x698BE53417509E72,
0xA3267042BF7FD7A5,
0xE0CCD2D85A0E0CC1,
0x2A6147AEF2214516,
0x4406F255F643310E,
0x8EAB67235E6C78D9,
0xCD41C5B9BB1DA3BD,
0x07EC50CF1332EA6A,
0x4B889C906CFF0875,
0x812509E6C4D041A2,
0xC2CFAB7C21A19AC6,
0x08623E0A898ED311,
0x5A072EC2DF2643F8,
0x90AABBB477090A2F,
0xD340192E9278D14B,
0x19ED8C583A57989C,
0x55894007459A7A83,
0x9F24D571EDB53354,
0xDCCE77EB08C4E830,
0x1663E29DA0EBA1E7,
0xF008AECC550FB7E3,
0x3AA53BBAFD20FE34,
0x794F992018512550,
0xB3E20C56B07E6C87,
0xFF86C009CFB38E98,
0x352B557F679CC74F,
0x76C1F7E582ED1C2B,
0xBC6C62932AC255FC,
0xEE09725B7C6AC515,
0x24A4E72DD4458CC2,
0x674E45B7313457A6,
0xADE3D0C1991B1E71,
0xE1871C9EE6D6FC6E,
0x2B2A89E84EF9B5B9,
0x68C02B72AB886EDD,
0xA26DBE0403A7270A,
0xCC0A0BFF07C55312,
0x06A79E89AFEA1AC5,
0x454D3C134A9BC1A1,
0x8FE0A965E2B48876,
0xC384653A9D796A69,
0x0929F04C355623BE,
0x4AC352D6D027F8DA,
0x806EC7A07808B10D,
0xD20BD7682EA021E4,
0x18A6421E868F6833,
0x5B4CE08463FEB357,
0x91E175F2CBD1FA80,
0xDD85B9ADB41C189F,
0x17282CDB1C335148,
0x54C28E41F9428A2C,
0x9E6F1B37516DC3FB,
0x880CF9AAF186621C,
0x42A16CDC59A92BCB,
0x014BCE46BCD8F0AF,
0xCBE65B3014F7B978,
0x8782976F6B3A5B67,
0x4D2F0219C31512B0,
0x0EC5A0832664C9D4,
0xC46835F58E4B8003,
0x960D253DD8E310EA,
0x5CA0B04B70CC593D,
0x1F4A12D195BD8259,
0xD5E787A73D92CB8E,
0x99834BF8425F2991,
0x532EDE8EEA706046,
0x10C47C140F01BB22,
0xDA69E962A72EF2F5,
0xB40E5C99A34C86ED,
0x7EA3C9EF0B63CF3A,
0x3D496B75EE12145E,
0xF7E4FE03463D5D89,
0xBB80325C39F0BF96,
0x712DA72A91DFF641,
0x32C705B074AE2D25,
0xF86A90C6DC8164F2,
0xAA0F800E8A29F41B,
0x60A215782206BDCC,
0x2348B7E2C77766A8,
0xE9E522946F582F7F,
0xA581EECB1095CD60,
0x6F2C7BBDB8BA84B7,
0x2CC6D9275DCB5FD3,
0xE66B4C51F5E41604,
0xFD104185AA1E73DB,
0x37BDD4F302313A0C,
0x74577669E740E168,
0xBEFAE31F4F6FA8BF,
0xF29E2F4030A24AA0,
0x3833BA36988D0377,
0x7BD918AC7DFCD813,
0xB1748DDAD5D391C4,
0xE3119D12837B012D,
0x29BC08642B5448FA,
0x6A56AAFECE25939E,
0xA0FB3F88660ADA49,
0xEC9FF3D719C73856,
0x263266A1B1E87181,
0x65D8C43B5499AAE5,
0xAF75514DFCB6E332,
0xC112E4B6F8D4972A,
0x0BBF71C050FBDEFD,
0x4855D35AB58A0599,
0x82F8462C1DA54C4E,
0xCE9C8A736268AE51,
0x04311F05CA47E786,
0x47DBBD9F2F363CE2,
0x8D7628E987197535,
0xDF133821D1B1E5DC,
0x15BEAD57799EAC0B,
0x56540FCD9CEF776F,
0x9CF99ABB34C03EB8,
0xD09D56E44B0DDCA7,
0x1A30C392E3229570,
0x59DA610806534E14,
0x9377F47EAE7C07C3,
0x851416E30E97A624,
0x4FB98395A6B8EFF3,
0x0C53210F43C93497,
0xC6FEB479EBE67D40,
0x8A9A7826942B9F5F,
0x4037ED503C04D688,
0x03DD4FCAD9750DEC,
0xC970DABC715A443B,
0x9B15CA7427F2D4D2,
0x51B85F028FDD9D05,
0x1252FD986AAC4661,
0xD8FF68EEC2830FB6,
0x949BA4B1BD4EEDA9,
0x5E3631C71561A47E,
0x1DDC935DF0107F1A,
0xD771062B583F36CD,
0xB916B3D05C5D42D5,
0x73BB26A6F4720B02,
0x3051843C1103D066,
0xFAFC114AB92C99B1,
0xB698DD15C6E17BAE,
0x7C3548636ECE3279,
0x3FDFEAF98BBFE91D,
0xF5727F8F2390A0CA,
0xA7176F4775383023,
0x6DBAFA31DD1779F4,
0x2E5058AB3866A290,
0xE4FDCDDD9049EB47,
0xA8990182EF840958,
0x623494F447AB408F,
0x21DE366EA2DA9BEB,
0xEB73A3180AF5D23C,
0x0D18EF49FF11C438,
0xC7B57A3F573E8DEF,
0x845FD8A5B24F568B,
0x4EF24DD31A601F5C,
0x0296818C65ADFD43,
0xC83B14FACD82B494,
0x8BD1B66028F36FF0,
0x417C231680DC2627,
0x131933DED674B6CE,
0xD9B4A6A87E5BFF19,
0x9A5E04329B2A247D,
0x50F3914433056DAA,
0x1C975D1B4CC88FB5,
0xD63AC86DE4E7C662,
0x95D06AF701961D06,
0x5F7DFF81A9B954D1,
0x311A4A7AADDB20C9,
0xFBB7DF0C05F4691E,
0xB85D7D96E085B27A,
0x72F0E8E048AAFBAD,
0x3E9424BF376719B2,
0xF439B1C99F485065,
0xB7D313537A398B01,
0x7D7E8625D216C2D6,
0x2F1B96ED84BE523F,
0xE5B6039B2C911BE8,
0xA65CA101C9E0C08C,
0x6CF1347761CF895B,
0x2095F8281E026B44,
0xEA386D5EB62D2293,
0xA9D2CFC4535CF9F7,
0x637F5AB2FB73B020,
0x751CB82F5B9811C7,
0xBFB12D59F3B75810,
0xFC5B8FC316C68374,
0x36F61AB5BEE9CAA3,
0x7A92D6EAC12428BC,
0xB03F439C690B616B,
0xF3D5E1068C7ABA0F,
0x397874702455F3D8,
0x6B1D64B872FD6331,
0xA1B0F1CEDAD22AE6,
0xE25A53543FA3F182,
0x28F7C622978CB855,
0x64930A7DE8415A4A,
0xAE3E9F0B406E139D,
0xEDD43D91A51FC8F9,
0x2779A8E70D30812E,
0x491E1D1C0952F536,
0x83B3886AA17DBCE1,
0xC0592AF0440C6785,
0x0AF4BF86EC232E52,
0x469073D993EECC4D,
0x8C3DE6AF3BC1859A,
0xCFD74435DEB05EFE,
0x057AD143769F1729,
0x571FC18B203787C0,
0x9DB254FD8818CE17,
0xDE58F6676D691573,
0x14F56311C5465CA4,
0x5891AF4EBA8BBEBB,
0x923C3A3812A4F76C,
0xD1D698A2F7D52C08,
0x1B7B0DD45FFA65DF,
],
[
0x0000000000000000,
0xAD9576A82F49D7CA,
0x4737EC4D5E92B389,
0xEAA29AE571DB6443,
0x8E6EC59ABC397B0F,
0x23FBB3329370ACC5,
0xC95929D7E2ABC886,
0x64CC5F7FCDE21F4C,
0x01DC97296572F61E,
0xAC49E1814A3B21D4,
0x46EB7B643BE04597,
0xEB7E0DCC14A9925D,
0x8FB252B3D94B8D11,
0x2227241BF6025ADB,
0xC885BEFE87D93E98,
0x6510C856A890E952,
0x02A53352CAE4F13C,
0xAF3045FAE5AD26F6,
0x4592DF1F947642B5,
0xE807A9B7BB3F957F,
0x8CCBF6C876DD8A33,
0x215E806059945DF9,
0xCBFC1A85284F39BA,
0x66696C2D0706EE70,
0x0379A47BAF960722,
0xAEECD2D380DFD0E8,
0x444E4836F104B4AB,
0xE9DB3E9EDE4D6361,
0x8D1761E113AF7C2D,
0x208217493CE6ABE7,
0xCA208DAC4D3DCFA4,
0x67B5FB046274186E,
0x045766A489D5FF78,
0xA9C2100CA69C28B2,
0x43608AE9D7474CF1,
0xEEF5FC41F80E9B3B,
0x8A39A33E35EC8477,
0x27ACD5961AA553BD,
0xCD0E4F736B7E37FE,
0x609B39DB4437E034,
0x058BF18DECA70966,
0xA81E8725C3EEDEAC,
0x42BC1DC0B235BAEF,
0xEF296B689D7C6D25,
0x8BE53417509E7269,
0x267042BF7FD7A5A3,
0xCCD2D85A0E0CC1E0,
0x6147AEF22145162A,
0x06F255F643310E44,
0xAB67235E6C78D98E,
0x41C5B9BB1DA3BDCD,
0xEC50CF1332EA6A07,
0x889C906CFF08754B,
0x2509E6C4D041A281,
0xCFAB7C21A19AC6C2,
0x623E0A898ED31108,
0x072EC2DF2643F85A,
0xAABBB477090A2F90,
0x40192E9278D14BD3,
0xED8C583A57989C19,
0x894007459A7A8355,
0x24D571EDB533549F,
0xCE77EB08C4E830DC,
0x63E29DA0EBA1E716,
0x08AECC550FB7E3F0,
0xA53BBAFD20FE343A,
0x4F99201851255079,
0xE20C56B07E6C87B3,
0x86C009CFB38E98FF,
0x2B557F679CC74F35,
0xC1F7E582ED1C2B76,
0x6C62932AC255FCBC,
0x09725B7C6AC515EE,
0xA4E72DD4458CC224,
0x4E45B7313457A667,
0xE3D0C1991B1E71AD,
0x871C9EE6D6FC6EE1,
0x2A89E84EF9B5B92B,
0xC02B72AB886EDD68,
0x6DBE0403A7270AA2,
0x0A0BFF07C55312CC,
0xA79E89AFEA1AC506,
0x4D3C134A9BC1A145,
0xE0A965E2B488768F,
0x84653A9D796A69C3,
0x29F04C355623BE09,
0xC352D6D027F8DA4A,
0x6EC7A07808B10D80,
0x0BD7682EA021E4D2,
0xA6421E868F683318,
0x4CE08463FEB3575B,
0xE175F2CBD1FA8091,
0x85B9ADB41C189FDD,
0x282CDB1C33514817,
0xC28E41F9428A2C54,
0x6F1B37516DC3FB9E,
0x0CF9AAF186621C88,
0xA16CDC59A92BCB42,
0x4BCE46BCD8F0AF01,
0xE65B3014F7B978CB,
0x82976F6B3A5B6787,
0x2F0219C31512B04D,
0xC5A0832664C9D40E,
0x6835F58E4B8003C4,
0x0D253DD8E310EA96,
0xA0B04B70CC593D5C,
0x4A12D195BD82591F,
0xE787A73D92CB8ED5,
0x834BF8425F299199,
0x2EDE8EEA70604653,
0xC47C140F01BB2210,
0x69E962A72EF2F5DA,
0x0E5C99A34C86EDB4,
0xA3C9EF0B63CF3A7E,
0x496B75EE12145E3D,
0xE4FE03463D5D89F7,
0x80325C39F0BF96BB,
0x2DA72A91DFF64171,
0xC705B074AE2D2532,
0x6A90C6DC8164F2F8,
0x0F800E8A29F41BAA,
0xA215782206BDCC60,
0x48B7E2C77766A823,
0xE522946F582F7FE9,
0x81EECB1095CD60A5,
0x2C7BBDB8BA84B76F,
0xC6D9275DCB5FD32C,
0x6B4C51F5E41604E6,
0x104185AA1E73DBFD,
0xBDD4F302313A0C37,
0x577669E740E16874,
0xFAE31F4F6FA8BFBE,
0x9E2F4030A24AA0F2,
0x33BA36988D037738,
0xD918AC7DFCD8137B,
0x748DDAD5D391C4B1,
0x119D12837B012DE3,
0xBC08642B5448FA29,
0x56AAFECE25939E6A,
0xFB3F88660ADA49A0,
0x9FF3D719C73856EC,
0x3266A1B1E8718126,
0xD8C43B5499AAE565,
0x75514DFCB6E332AF,
0x12E4B6F8D4972AC1,
0xBF71C050FBDEFD0B,
0x55D35AB58A059948,
0xF8462C1DA54C4E82,
0x9C8A736268AE51CE,
0x311F05CA47E78604,
0xDBBD9F2F363CE247,
0x7628E9871975358D,
0x133821D1B1E5DCDF,
0xBEAD57799EAC0B15,
0x540FCD9CEF776F56,
0xF99ABB34C03EB89C,
0x9D56E44B0DDCA7D0,
0x30C392E32295701A,
0xDA610806534E1459,
0x77F47EAE7C07C393,
0x1416E30E97A62485,
0xB98395A6B8EFF34F,
0x53210F43C934970C,
0xFEB479EBE67D40C6,
0x9A7826942B9F5F8A,
0x37ED503C04D68840,
0xDD4FCAD9750DEC03,
0x70DABC715A443BC9,
0x15CA7427F2D4D29B,
0xB85F028FDD9D0551,
0x52FD986AAC466112,
0xFF68EEC2830FB6D8,
0x9BA4B1BD4EEDA994,
0x3631C71561A47E5E,
0xDC935DF0107F1A1D,
0x71062B583F36CDD7,
0x16B3D05C5D42D5B9,
0xBB26A6F4720B0273,
0x51843C1103D06630,
0xFC114AB92C99B1FA,
0x98DD15C6E17BAEB6,
0x3548636ECE32797C,
0xDFEAF98BBFE91D3F,
0x727F8F2390A0CAF5,
0x176F4775383023A7,
0xBAFA31DD1779F46D,
0x5058AB3866A2902E,
0xFDCDDD9049EB47E4,
0x990182EF840958A8,
0x3494F447AB408F62,
0xDE366EA2DA9BEB21,
0x73A3180AF5D23CEB,
0x18EF49FF11C4380D,
0xB57A3F573E8DEFC7,
0x5FD8A5B24F568B84,
0xF24DD31A601F5C4E,
0x96818C65ADFD4302,
0x3B14FACD82B494C8,
0xD1B66028F36FF08B,
0x7C231680DC262741,
0x1933DED674B6CE13,
0xB4A6A87E5BFF19D9,
0x5E04329B2A247D9A,
0xF3914433056DAA50,
0x975D1B4CC88FB51C,
0x3AC86DE4E7C662D6,
0xD06AF701961D0695,
0x7DFF81A9B954D15F,
0x1A4A7AADDB20C931,
0xB7DF0C05F4691EFB,
0x5D7D96E085B27AB8,
0xF0E8E048AAFBAD72,
0x9424BF376719B23E,
0x39B1C99F485065F4,
0xD313537A398B01B7,
0x7E8625D216C2D67D,
0x1B96ED84BE523F2F,
0xB6039B2C911BE8E5,
0x5CA101C9E0C08CA6,
0xF1347761CF895B6C,
0x95F8281E026B4420,
0x386D5EB62D2293EA,
0xD2CFC4535CF9F7A9,
0x7F5AB2FB73B02063,
0x1CB82F5B9811C775,
0xB12D59F3B75810BF,
0x5B8FC316C68374FC,
0xF61AB5BEE9CAA336,
0x92D6EAC12428BC7A,
0x3F439C690B616BB0,
0xD5E1068C7ABA0FF3,
0x7874702455F3D839,
0x1D64B872FD63316B,
0xB0F1CEDAD22AE6A1,
0x5A53543FA3F182E2,
0xF7C622978CB85528,
0x930A7DE8415A4A64,
0x3E9F0B406E139DAE,
0xD43D91A51FC8F9ED,
0x79A8E70D30812E27,
0x1E1D1C0952F53649,
0xB3886AA17DBCE183,
0x592AF0440C6785C0,
0xF4BF86EC232E520A,
0x9073D993EECC4D46,
0x3DE6AF3BC1859A8C,
0xD74435DEB05EFECF,
0x7AD143769F172905,
0x1FC18B203787C057,
0xB254FD8818CE179D,
0x58F6676D691573DE,
0xF56311C5465CA414,
0x91AF4EBA8BBEBB58,
0x3C3A3812A4F76C92,
0xD698A2F7D52C08D1,
0x7B0DD45FFA65DF1B,
],
];
#[allow(dead_code)]
pub(crate) fn gf_mul(mut x: u8, mut y: u8) -> u8 {
let mut result = 0u8;
for _ in 0..8 {
if y & 1 == 1 {
result ^= x;
}
let high_bit = x & 0x80;
x <<= 1;
if high_bit == 0x80 {
x ^= 0x1D;
}
y >>= 1;
}
result
}
#[cfg(not(feature = "small-tables"))]
fn apply_matrix(state: &mut [[u8; ROWS]], table: &[[u64; 256]; ROWS]) {
for column in state.iter_mut() {
let mut acc = 0u64;
for (in_row, &byte) in column.iter().enumerate() {
acc ^= table[in_row][byte as usize];
}
*column = acc.to_le_bytes();
}
}
#[cfg(feature = "small-tables")]
fn apply_matrix_via_gf_mul(state: &mut [[u8; ROWS]], matrix: &[[u8; ROWS]; ROWS]) {
for column in state.iter_mut() {
let mut out = [0u8; ROWS];
for (out_row, out_byte) in out.iter_mut().enumerate() {
for (in_row, &byte) in column.iter().enumerate() {
*out_byte ^= gf_mul(byte, matrix[out_row][in_row]);
}
}
*column = out;
}
}
#[cfg(not(feature = "small-tables"))]
pub(crate) fn apply_forward_matrix(state: &mut [[u8; ROWS]]) {
apply_matrix(state, &MDS_TABLE);
}
#[cfg(feature = "small-tables")]
pub(crate) fn apply_forward_matrix(state: &mut [[u8; ROWS]]) {
apply_matrix_via_gf_mul(state, &MDS_MATRIX);
}
#[cfg(not(feature = "small-tables"))]
pub(crate) fn apply_inverse_matrix(state: &mut [[u8; ROWS]]) {
apply_matrix(state, &MDS_INV_TABLE);
}
#[cfg(feature = "small-tables")]
pub(crate) fn apply_inverse_matrix(state: &mut [[u8; ROWS]]) {
apply_matrix_via_gf_mul(state, &MDS_INV_MATRIX);
}
#[cfg(feature = "small-tables")]
fn mds_column_via_gf_mul(matrix: &[[u8; ROWS]; ROWS], in_row: usize, byte: u8) -> u64 {
let mut word = 0u64;
#[allow(clippy::needless_range_loop)]
for out_row in 0..ROWS {
word |= u64::from(gf_mul(byte, matrix[out_row][in_row])) << (8 * out_row);
}
word
}
#[cfg(not(feature = "small-tables"))]
const fn build_sbox_mds() -> [[u64; 256]; ROWS] {
let mut table = [[0u64; 256]; ROWS];
let mut row = 0;
while row < ROWS {
let mut byte = 0usize;
while byte < 256 {
let substituted = SBOXES[row % 4][byte] as usize;
table[row][byte] = MDS_TABLE[row][substituted];
byte += 1;
}
row += 1;
}
table
}
#[cfg(not(feature = "small-tables"))]
pub(crate) const SBOX_MDS: [[u64; 256]; ROWS] = build_sbox_mds();
#[cfg(not(feature = "small-tables"))]
pub(crate) fn forward_sbox_mds(row: usize, byte: u8) -> u64 {
SBOX_MDS[row][byte as usize]
}
#[cfg(feature = "small-tables")]
pub(crate) fn forward_sbox_mds(row: usize, byte: u8) -> u64 {
mds_column_via_gf_mul(&MDS_MATRIX, row, SBOXES[row % 4][byte as usize])
}
#[cfg(not(feature = "small-tables"))]
const fn build_sbox_mds_dec() -> [[u64; 256]; ROWS] {
let mut table = [[0u64; 256]; ROWS];
let mut row = 0;
while row < ROWS {
let mut byte = 0usize;
while byte < 256 {
let substituted = SBOXES_DEC[row % 4][byte] as usize;
table[row][byte] = MDS_INV_TABLE[row][substituted];
byte += 1;
}
row += 1;
}
table
}
#[cfg(not(feature = "small-tables"))]
pub(crate) const SBOX_MDS_DEC: [[u64; 256]; ROWS] = build_sbox_mds_dec();
#[cfg(not(feature = "small-tables"))]
pub(crate) fn inverse_sbox_mds(row: usize, byte: u8) -> u64 {
SBOX_MDS_DEC[row][byte as usize]
}
#[cfg(feature = "small-tables")]
pub(crate) fn inverse_sbox_mds(row: usize, byte: u8) -> u64 {
mds_column_via_gf_mul(&MDS_INV_MATRIX, row, SBOXES_DEC[row % 4][byte as usize])
}
#[cfg(all(test, not(feature = "small-tables")))]
mod tests {
use super::{
gf_mul, MDS_INV_MATRIX, MDS_INV_TABLE, MDS_MATRIX, MDS_TABLE, ROWS, SBOXES, SBOXES_DEC,
SBOX_MDS, SBOX_MDS_DEC,
};
fn expected_column(matrix: &[[u8; ROWS]; ROWS], in_row: usize, byte: u8) -> u64 {
let mut word = 0u64;
for out_row in 0..ROWS {
word |= u64::from(gf_mul(byte, matrix[out_row][in_row])) << (8 * out_row);
}
word
}
#[test]
fn mds_table_matches_gf_mul_exhaustively() {
for in_row in 0..ROWS {
for byte in 0..=u8::MAX {
assert_eq!(
MDS_TABLE[in_row][byte as usize],
expected_column(&MDS_MATRIX, in_row, byte),
"MDS_TABLE[{in_row}][{byte}] mismatch"
);
}
}
}
#[test]
fn mds_inv_table_matches_gf_mul_exhaustively() {
for in_row in 0..ROWS {
for byte in 0..=u8::MAX {
assert_eq!(
MDS_INV_TABLE[in_row][byte as usize],
expected_column(&MDS_INV_MATRIX, in_row, byte),
"MDS_INV_TABLE[{in_row}][{byte}] mismatch"
);
}
}
}
#[test]
fn sbox_mds_matches_gf_mul_and_sbox_exhaustively() {
for row in 0..ROWS {
for byte in 0..=u8::MAX {
let substituted = SBOXES[row % 4][byte as usize];
assert_eq!(
SBOX_MDS[row][byte as usize],
expected_column(&MDS_MATRIX, row, substituted),
"SBOX_MDS[{row}][{byte}] mismatch"
);
}
}
}
#[test]
fn sbox_mds_dec_matches_gf_mul_and_sbox_dec_exhaustively() {
for row in 0..ROWS {
for byte in 0..=u8::MAX {
let substituted = SBOXES_DEC[row % 4][byte as usize];
assert_eq!(
SBOX_MDS_DEC[row][byte as usize],
expected_column(&MDS_INV_MATRIX, row, substituted),
"SBOX_MDS_DEC[{row}][{byte}] mismatch"
);
}
}
}
}