btllib
Loading...
Searching...
No Matches
hashing_internals.hpp
1#pragma once
2
3#include <cstddef>
4#include <iostream>
5#include <limits>
6
7namespace btllib::hashing_internals {
8
9using NUM_HASHES_TYPE = uint8_t;
10using K_TYPE = uint16_t;
11
12template<typename T>
13inline T
14canonical(const T fwd, const T rev)
15{
16 return fwd + rev;
17}
18
19static_assert(std::numeric_limits<uint64_t>::max() + 1 == 0,
20 "Integers don't overflow on this platform which is necessary for "
21 "ntHash canonical hash computation.");
22
29inline uint64_t
30srol(const uint64_t x)
31{
32 uint64_t m = ((x & 0x8000000000000000ULL) >> 30) | // NOLINT
33 ((x & 0x100000000ULL) >> 32); // NOLINT
34 return ((x << 1) & 0xFFFFFFFDFFFFFFFFULL) | m; // NOLINT
35}
36
44inline uint64_t
45srol(const uint64_t x, const unsigned d)
46{
47 uint64_t v = (x << d) | (x >> (64 - d)); // NOLINT
48 uint64_t y = (v ^ (v >> 33)) & // NOLINT
49 (std::numeric_limits<uint64_t>::max() >> (64 - d)); // NOLINT
50 return v ^ (y | (y << 33)); // NOLINT
51}
52
59inline uint64_t
60srol_table(unsigned char c,
61 unsigned d,
62 const uint64_t* const* right_table,
63 const uint64_t* const* left_table);
64
71inline uint64_t
72sror(const uint64_t x)
73{
74 uint64_t m = ((x & 0x200000000ULL) << 30) | ((x & 1ULL) << 32); // NOLINT
75 return ((x >> 1) & 0xFFFFFFFEFFFFFFFFULL) | m; // NOLINT
76}
77
78// shift for generating multiple hash values
79const int MULTISHIFT = 27;
80
81// seed for generating multiple hash values
82const uint64_t MULTISEED = 0x90b45d39fb6da1fa;
83
92inline void
93extend_hashes(uint64_t fwd_hash,
94 uint64_t rev_hash,
95 unsigned k,
96 unsigned h,
97 uint64_t* hash_array)
98{
99 uint64_t t_val;
100 hash_array[0] = canonical(fwd_hash, rev_hash);
101 for (unsigned i = 1; i < h; i++) {
102 t_val = hash_array[0] * (i ^ k * MULTISEED);
103 t_val ^= t_val >> MULTISHIFT;
104 hash_array[i] = t_val;
105 }
106}
107
115inline void
116extend_hashes(uint64_t base_hash, unsigned k, unsigned h, uint64_t* hash_array)
117{
118 uint64_t t_val;
119 hash_array[0] = base_hash;
120 for (unsigned i = 1; i < h; i++) {
121 t_val = hash_array[0] * (i ^ k * MULTISEED);
122 t_val ^= t_val >> MULTISHIFT;
123 hash_array[i] = t_val;
124 }
125}
126
127// offset for the complement base in the random seeds table
128const uint8_t CP_OFF = 0x07;
129
130// 64-bit random seeds corresponding to bases and their complements
131const uint64_t SEED_A = 0x3c8bfbb395c60474;
132const uint64_t SEED_C = 0x3193c18562a02b4c;
133const uint64_t SEED_G = 0x20323ed082572324;
134const uint64_t SEED_T = 0x295549f54be24456;
135const uint64_t SEED_N = 0x0000000000000000;
136
137const int ASCII_SIZE = 256;
138
139const uint64_t SEED_TAB[ASCII_SIZE] = {
140 SEED_N, SEED_T, SEED_N, SEED_G, SEED_A, SEED_A, SEED_N, SEED_C, // 0..7
141 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 8..15
142 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 16..23
143 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 24..31
144 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 32..39
145 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 40..47
146 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 48..55
147 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 56..63
148 SEED_N, SEED_A, SEED_N, SEED_C, SEED_N, SEED_N, SEED_N, SEED_G, // 64..71
149 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 72..79
150 SEED_N, SEED_N, SEED_N, SEED_N, SEED_T, SEED_T, SEED_N, SEED_N, // 80..87
151 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 88..95
152 SEED_N, SEED_A, SEED_N, SEED_C, SEED_N, SEED_N, SEED_N, SEED_G, // 96..103
153 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 104..111
154 SEED_N, SEED_N, SEED_N, SEED_N, SEED_T, SEED_T, SEED_N, SEED_N, // 112..119
155 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 120..127
156 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 128..135
157 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 136..143
158 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 144..151
159 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 152..159
160 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 160..167
161 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 168..175
162 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 176..183
163 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 184..191
164 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 192..199
165 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 200..207
166 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 208..215
167 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 216..223
168 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 224..231
169 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 232..239
170 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, // 240..247
171 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N // 248..255
172};
173
174const uint64_t A33R[33] = {
175 0x195c60474, 0x12b8c08e9, 0x571811d3, 0xae3023a6, 0x15c60474c, 0xb8c08e99,
176 0x171811d32, 0xe3023a65, 0x1c60474ca, 0x18c08e995, 0x11811d32b, 0x3023a657,
177 0x60474cae, 0xc08e995c, 0x1811d32b8, 0x1023a6571, 0x474cae3, 0x8e995c6,
178 0x11d32b8c, 0x23a65718, 0x474cae30, 0x8e995c60, 0x11d32b8c0, 0x3a657181,
179 0x74cae302, 0xe995c604, 0x1d32b8c08, 0x1a6571811, 0x14cae3023, 0x995c6047,
180 0x132b8c08e, 0x6571811d, 0xcae3023a
181};
182
183const uint64_t A31L[31] = {
184 0x3c8bfbb200000000, 0x7917f76400000000, 0xf22feec800000000,
185 0xe45fdd9200000000, 0xc8bfbb2600000000, 0x917f764e00000000,
186 0x22feec9e00000000, 0x45fdd93c00000000, 0x8bfbb27800000000,
187 0x17f764f200000000, 0x2feec9e400000000, 0x5fdd93c800000000,
188 0xbfbb279000000000, 0x7f764f2200000000, 0xfeec9e4400000000,
189 0xfdd93c8a00000000, 0xfbb2791600000000, 0xf764f22e00000000,
190 0xeec9e45e00000000, 0xdd93c8be00000000, 0xbb27917e00000000,
191 0x764f22fe00000000, 0xec9e45fc00000000, 0xd93c8bfa00000000,
192 0xb27917f600000000, 0x64f22fee00000000, 0xc9e45fdc00000000,
193 0x93c8bfba00000000, 0x27917f7600000000, 0x4f22feec00000000,
194 0x9e45fdd800000000
195};
196
197const uint64_t C33R[33] = {
198 0x162a02b4c, 0xc5405699, 0x18a80ad32, 0x115015a65, 0x2a02b4cb, 0x54056996,
199 0xa80ad32c, 0x15015a658, 0xa02b4cb1, 0x140569962, 0x80ad32c5, 0x1015a658a,
200 0x2b4cb15, 0x569962a, 0xad32c54, 0x15a658a8, 0x2b4cb150, 0x569962a0,
201 0xad32c540, 0x15a658a80, 0xb4cb1501, 0x169962a02, 0xd32c5405, 0x1a658a80a,
202 0x14cb15015, 0x9962a02b, 0x132c54056, 0x658a80ad, 0xcb15015a, 0x1962a02b4,
203 0x12c540569, 0x58a80ad3, 0xb15015a6
204};
205
206const uint64_t C31L[31] = {
207 0x3193c18400000000, 0x6327830800000000, 0xc64f061000000000,
208 0x8c9e0c2200000000, 0x193c184600000000, 0x3278308c00000000,
209 0x64f0611800000000, 0xc9e0c23000000000, 0x93c1846200000000,
210 0x278308c600000000, 0x4f06118c00000000, 0x9e0c231800000000,
211 0x3c18463200000000, 0x78308c6400000000, 0xf06118c800000000,
212 0xe0c2319200000000, 0xc184632600000000, 0x8308c64e00000000,
213 0x6118c9e00000000, 0xc23193c00000000, 0x1846327800000000,
214 0x308c64f000000000, 0x6118c9e000000000, 0xc23193c000000000,
215 0x8463278200000000, 0x8c64f0600000000, 0x118c9e0c00000000,
216 0x23193c1800000000, 0x4632783000000000, 0x8c64f06000000000,
217 0x18c9e0c200000000
218};
219
220const uint64_t G33R[33] = {
221 0x82572324, 0x104ae4648, 0x95c8c91, 0x12b91922, 0x25723244, 0x4ae46488,
222 0x95c8c910, 0x12b919220, 0x57232441, 0xae464882, 0x15c8c9104, 0xb9192209,
223 0x172324412, 0xe4648825, 0x1c8c9104a, 0x191922095, 0x12324412b, 0x46488257,
224 0x8c9104ae, 0x11922095c, 0x324412b9, 0x64882572, 0xc9104ae4, 0x1922095c8,
225 0x124412b91, 0x48825723, 0x9104ae46, 0x122095c8c, 0x4412b919, 0x88257232,
226 0x1104ae464, 0x2095c8c9, 0x412b9192
227};
228
229const uint64_t G31L[31] = {
230 0x20323ed000000000, 0x40647da000000000, 0x80c8fb4000000000,
231 0x191f68200000000, 0x323ed0400000000, 0x647da0800000000,
232 0xc8fb41000000000, 0x191f682000000000, 0x323ed04000000000,
233 0x647da08000000000, 0xc8fb410000000000, 0x91f6820200000000,
234 0x23ed040600000000, 0x47da080c00000000, 0x8fb4101800000000,
235 0x1f68203200000000, 0x3ed0406400000000, 0x7da080c800000000,
236 0xfb41019000000000, 0xf682032200000000, 0xed04064600000000,
237 0xda080c8e00000000, 0xb410191e00000000, 0x6820323e00000000,
238 0xd040647c00000000, 0xa080c8fa00000000, 0x410191f600000000,
239 0x820323ec00000000, 0x40647da00000000, 0x80c8fb400000000,
240 0x10191f6800000000
241};
242
243const uint64_t T33R[33] = {
244 0x14be24456, 0x97c488ad, 0x12f89115a, 0x5f1222b5, 0xbe24456a, 0x17c488ad4,
245 0xf89115a9, 0x1f1222b52, 0x1e24456a5, 0x1c488ad4b, 0x189115a97, 0x11222b52f,
246 0x24456a5f, 0x488ad4be, 0x9115a97c, 0x1222b52f8, 0x4456a5f1, 0x88ad4be2,
247 0x1115a97c4, 0x22b52f89, 0x456a5f12, 0x8ad4be24, 0x115a97c48, 0x2b52f891,
248 0x56a5f122, 0xad4be244, 0x15a97c488, 0xb52f8911, 0x16a5f1222, 0xd4be2445,
249 0x1a97c488a, 0x152f89115, 0xa5f1222b
250};
251
252const uint64_t T31L[31] = {
253 0x295549f400000000, 0x52aa93e800000000, 0xa55527d000000000,
254 0x4aaa4fa200000000, 0x95549f4400000000, 0x2aa93e8a00000000,
255 0x55527d1400000000, 0xaaa4fa2800000000, 0x5549f45200000000,
256 0xaa93e8a400000000, 0x5527d14a00000000, 0xaa4fa29400000000,
257 0x549f452a00000000, 0xa93e8a5400000000, 0x527d14aa00000000,
258 0xa4fa295400000000, 0x49f452aa00000000, 0x93e8a55400000000,
259 0x27d14aaa00000000, 0x4fa2955400000000, 0x9f452aa800000000,
260 0x3e8a555200000000, 0x7d14aaa400000000, 0xfa29554800000000,
261 0xf452aa9200000000, 0xe8a5552600000000, 0xd14aaa4e00000000,
262 0xa295549e00000000, 0x452aa93e00000000, 0x8a55527c00000000,
263 0x14aaa4fa00000000
264};
265
266const uint64_t N33R[33] = { SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
267 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
268 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
269 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
270 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
271 SEED_N, SEED_N, SEED_N };
272
273const uint64_t N31L[31] = { SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
274 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
275 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
276 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
277 SEED_N, SEED_N, SEED_N, SEED_N, SEED_N, SEED_N,
278 SEED_N };
279
280const uint64_t* const MS_TAB_33R[ASCII_SIZE] = {
281 N33R, T33R, N33R, G33R, A33R, A33R, N33R, C33R, // 0..7
282 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 8..15
283 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 16..23
284 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 24..31
285 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 32..39
286 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 40..47
287 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 48..55
288 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 56..63
289 N33R, A33R, N33R, C33R, N33R, N33R, N33R, G33R, // 64..71
290 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 72..79
291 N33R, N33R, N33R, N33R, T33R, T33R, N33R, N33R, // 80..87
292 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 88..95
293 N33R, A33R, N33R, C33R, N33R, N33R, N33R, G33R, // 96..103
294 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 104..111
295 N33R, N33R, N33R, N33R, T33R, T33R, N33R, N33R, // 112..119
296 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 120..127
297 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 128..135
298 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 136..143
299 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 144..151
300 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 152..159
301 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 160..167
302 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 168..175
303 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 176..183
304 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 184..191
305 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 192..199
306 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 200..207
307 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 208..215
308 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 216..223
309 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 224..231
310 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 232..239
311 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R, // 240..247
312 N33R, N33R, N33R, N33R, N33R, N33R, N33R, N33R // 248..255
313};
314
315const uint64_t* const MS_TAB_31L[ASCII_SIZE] = {
316 N31L, T31L, N31L, G31L, A31L, A31L, N31L, C31L, // 0..7
317 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 8..15
318 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 16..23
319 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 24..31
320 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 32..39
321 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 40..47
322 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 48..55
323 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 56..63
324 N31L, A31L, N31L, C31L, N31L, N31L, N31L, G31L, // 64..71
325 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 72..79
326 N31L, N31L, N31L, N31L, T31L, T31L, N31L, N31L, // 80..87
327 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 88..95
328 N31L, A31L, N31L, C31L, N31L, N31L, N31L, G31L, // 96..103
329 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 104..111
330 N31L, N31L, N31L, N31L, T31L, T31L, N31L, N31L, // 112..119
331 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 120..127
332 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 128..135
333 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 136..143
334 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 144..151
335 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 152..159
336 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 160..167
337 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 168..175
338 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 176..183
339 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 184..191
340 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 192..199
341 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 200..207
342 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 208..215
343 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 216..223
344 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 224..231
345 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 232..239
346 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L, // 240..247
347 N31L, N31L, N31L, N31L, N31L, N31L, N31L, N31L // 248..255
348};
349
350inline uint64_t
351srol_table(unsigned char c,
352 unsigned d,
353 const uint64_t* const* right_table = MS_TAB_33R,
354 const uint64_t* const* left_table = MS_TAB_31L)
355{
356 return (left_table[c][d < 31 ? d : d % 31] | /* NOLINT */
357 right_table[c][d < 33 ? d : d % 33]); /* NOLINT */
358}
359
360const uint8_t CONVERT_TAB[ASCII_SIZE] = {
361 255, 255, 255, 255, 255, 255, 255, 255, // 0..7
362 255, 255, 255, 255, 255, 255, 255, 255, // 8..15
363 255, 255, 255, 255, 255, 255, 255, 255, // 16..23
364 255, 255, 255, 255, 255, 255, 255, 255, // 24..31
365 255, 255, 255, 255, 255, 255, 255, 255, // 32..39
366 255, 255, 255, 255, 255, 255, 255, 255, // 40..47
367 255, 255, 255, 255, 255, 255, 255, 255, // 48..55
368 255, 255, 255, 255, 255, 255, 255, 255, // 56..63
369 255, 0, 255, 1, 255, 255, 255, 2, // 64..71
370 255, 255, 255, 255, 255, 255, 255, 255, // 72..79
371 255, 255, 255, 255, 3, 3, 255, 255, // 80..87
372 255, 255, 255, 255, 255, 255, 255, 255, // 88..95
373 255, 0, 255, 1, 255, 255, 255, 2, // 96..103
374 255, 255, 255, 255, 255, 255, 255, 255, // 104..111
375 255, 255, 255, 255, 3, 3, 255, 255, // 112..119
376 255, 255, 255, 255, 255, 255, 255, 255, // 120..127
377 255, 255, 255, 255, 255, 255, 255, 255, // 128..135
378 255, 255, 255, 255, 255, 255, 255, 255, // 136..143
379 255, 255, 255, 255, 255, 255, 255, 255, // 144..151
380 255, 255, 255, 255, 255, 255, 255, 255, // 152..159
381 255, 255, 255, 255, 255, 255, 255, 255, // 160..167
382 255, 255, 255, 255, 255, 255, 255, 255, // 168..175
383 255, 255, 255, 255, 255, 255, 255, 255, // 176..183
384 255, 255, 255, 255, 255, 255, 255, 255, // 184..191
385 255, 255, 255, 255, 255, 255, 255, 255, // 192..199
386 255, 255, 255, 255, 255, 255, 255, 255, // 200..207
387 255, 255, 255, 255, 255, 255, 255, 255, // 208..215
388 255, 255, 255, 255, 255, 255, 255, 255, // 216..223
389 255, 255, 255, 255, 255, 255, 255, 255, // 224..231
390 255, 255, 255, 255, 255, 255, 255, 255, // 232..239
391 255, 255, 255, 255, 255, 255, 255, 255, // 240..247
392 255, 255, 255, 255, 255, 255, 255, 255 // 248..255
393};
394
395const uint8_t RC_CONVERT_TAB[ASCII_SIZE] = {
396 255, 255, 255, 255, 255, 255, 255, 255, // 0..7
397 255, 255, 255, 255, 255, 255, 255, 255, // 8..15
398 255, 255, 255, 255, 255, 255, 255, 255, // 16..23
399 255, 255, 255, 255, 255, 255, 255, 255, // 24..31
400 255, 255, 255, 255, 255, 255, 255, 255, // 32..39
401 255, 255, 255, 255, 255, 255, 255, 255, // 40..47
402 255, 255, 255, 255, 255, 255, 255, 255, // 48..55
403 255, 255, 255, 255, 255, 255, 255, 255, // 56..63
404 255, 3, 255, 2, 255, 255, 255, 1, // 64..71
405 255, 255, 255, 255, 255, 255, 255, 255, // 72..79
406 255, 255, 255, 255, 0, 0, 255, 255, // 80..87
407 255, 255, 255, 255, 255, 255, 255, 255, // 88..95
408 255, 3, 255, 2, 255, 255, 255, 1, // 96..103
409 255, 255, 255, 255, 255, 255, 255, 255, // 104..111
410 255, 255, 255, 255, 0, 0, 255, 255, // 112..119
411 255, 255, 255, 255, 255, 255, 255, 255, // 120..127
412 255, 255, 255, 255, 255, 255, 255, 255, // 128..135
413 255, 255, 255, 255, 255, 255, 255, 255, // 136..143
414 255, 255, 255, 255, 255, 255, 255, 255, // 144..151
415 255, 255, 255, 255, 255, 255, 255, 255, // 152..159
416 255, 255, 255, 255, 255, 255, 255, 255, // 160..167
417 255, 255, 255, 255, 255, 255, 255, 255, // 168..175
418 255, 255, 255, 255, 255, 255, 255, 255, // 176..183
419 255, 255, 255, 255, 255, 255, 255, 255, // 184..191
420 255, 255, 255, 255, 255, 255, 255, 255, // 192..199
421 255, 255, 255, 255, 255, 255, 255, 255, // 200..207
422 255, 255, 255, 255, 255, 255, 255, 255, // 208..215
423 255, 255, 255, 255, 255, 255, 255, 255, // 216..223
424 255, 255, 255, 255, 255, 255, 255, 255, // 224..231
425 255, 255, 255, 255, 255, 255, 255, 255, // 232..239
426 255, 255, 255, 255, 255, 255, 255, 255, // 240..247
427 255, 255, 255, 255, 255, 255, 255, 255 // 248..255
428};
429
430const uint64_t DIMER_TAB[4 * 4] = {
431 5015898201438948509U, 5225361804584821669U, 6423762225589857229U,
432 5783394398799547583U, 6894017875502584557U, 5959461383092338133U,
433 4833978511655400893U, 5364573296520205007U, 9002561594443973180U,
434 8212239310050454788U, 6941810030513055084U, 7579897184553533982U,
435 7935738758488558809U, 7149836515649299425U, 8257540373175577481U,
436 8935100007508790523U
437};
438
439const uint64_t TRIMER_TAB[4 * 4 * 4] = {
440 13237172352163388750U, 13451082378889146998U, 12324706752351386142U,
441 11704099346423635308U, 12503002411303846718U, 11573033083854154758U,
442 12770611021816489070U, 13284814289517544220U, 10286336837755622383U,
443 9500434588327378135U, 10554658215321236671U, 11177611689138066381U,
444 11245073286936829194U, 10454751004568891954U, 9274956656780491354U,
445 9930495270120774952U, 9498947889754972591U, 10289371588586147479U,
446 11487222103436658431U, 10812501148518244749U, 11088845979783725023U,
447 10735249574334615783U, 9609199230360475791U, 10105458452942995453U,
448 13447889238169808654U, 13238535845420384310U, 11968673763542288478U,
449 12645600078955589420U, 12136759312206930411U, 11922809957208297171U,
450 13031072242070652603U, 13668666814620918217U, 14219262150204358668U,
451 14433136993975185204U, 15703263506252408668U, 15026899868095529006U,
452 16097136083696541308U, 15167201938128040260U, 14113514427211577644U,
453 14608043031429815902U, 18169629015343943341U, 17383691583363408277U,
454 16185576633819064829U, 16859734366019948175U, 17215452794964541512U,
455 16425095330967072624U, 17460550829194815256U, 18101973914136232042U,
456 16197524846324948423U, 17136496960994620159U, 18190301010467109527U,
457 17660752969549176293U, 18084590689685816247U, 17861669045228104847U,
458 16591430392433501415U, 17233003275094786965U, 15689030113991676774U,
459 15321980360070757470U, 14196301091602199606U, 14727918144983470916U,
460 14660430141886012803U, 14297932370981794491U, 15550237822687034067U,
461 16044915679164358049U
462};
463
464const uint64_t TETRAMER_TAB[4 * 4 * 4 * 4] = {
465 6047278271377325800U, 6842100033257738704U, 5716751207778949560U,
466 5058261232784932554U, 5322212292231585944U, 4955210659836481440U,
467 6153481158060361672U, 6630136099103187130U, 7683058811908681801U,
468 7460089081761259377U, 8513615477720831769U, 9169618076073996395U,
469 8669810821731892908U, 8451393064794886548U, 7271235746105367036U,
470 7894785163577458318U, 7461575445318369801U, 7680024275870068017U,
471 8878022265940976985U, 8237757801848291883U, 9060296013225843833U,
472 8116780716040188737U, 6991106539262573353U, 7521593563379047515U,
473 6845292839028968616U, 6045914992845185936U, 4775672622745250808U,
474 5413871935584767114U, 5490367161684853325U, 4695435745326017909U,
475 5803018666222232861U, 6480400171096490607U, 2381043025085637546U,
476 3175899973157948562U, 4445879008075678970U, 3807116472585741192U,
477 4268108881087626714U, 3901072061426881250U, 2847008385469766282U,
478 3379366782720458232U, 1763336001516006667U, 1540401457157816883U,
479 342666797974407771U, 983493939256405289U, 771890739233563630U,
480 553508169276984534U, 1589643033626739902U, 2263336780810576844U,
481 330722743541775969U, 688712796851212633U, 1742668713148160305U,
482 1245320973785726531U, 2208596672445898769U, 1422777727841816361U,
483 152919646732699457U, 826464124477841459U, 4460107693596700864U,
484 3530055095011467256U, 2403999925630162832U, 2899137386794791138U,
485 3398970977768160805U, 2464498338584432925U, 3716128830812494197U,
486 4248337413163712007U, 4264326372183459627U, 3906261395711551507U,
487 2851952150714671227U, 3383149429014333193U, 2386233046276708699U,
488 3172117876357805667U, 4441779805226941963U, 3801926588820052345U,
489 170684860043692426U, 1100671402695403186U, 2226926226858061530U,
490 1693589575942097320U, 1193606390847620975U, 2128144916583147607U,
491 876319371625685055U, 382305650241144653U, 1102545060664966090U,
492 168107437338776818U, 1437989166537956506U, 1915072878734195688U,
493 1548519783094789562U, 1757891215679916674U, 703889661060612842U,
494 46092416782165400U, 3908715595921208683U, 4262294307145226835U,
495 3064498623987880507U, 2585134797421409609U, 2661735585529691022U,
496 3019760716990469302U, 4055956603131813086U, 3543998858204232620U,
497 5317339067591416425U, 4959238909506745681U, 6157334207435046201U,
498 6635009461133220427U, 6051307208490845209U, 6837227221258447649U,
499 5711490920986878793U, 5054232433096901691U, 8122648135453742280U,
500 9052599496358476784U, 7782418148093113240U, 7307023562816214250U,
501 7095314801322056237U, 8029818144085865749U, 9137340041034366333U,
502 8622472983995947535U, 7806751516869674914U, 7011855109925922970U,
503 8137690373747335410U, 8757695200062998400U, 8531879593853721042U,
504 8898947385530005226U, 7700757522090507906U, 7186022138009770480U,
505 6135219772853324035U, 6358123720871388731U, 5304510851123850835U,
506 4682089562405882145U, 5182028715320330214U, 5400512630465816798U,
507 6580751683450298550U, 5923625422568720324U, 13124074928584983660U,
508 13491146941631638356U, 12293650504952193852U, 11816502978180760654U,
509 12399079312662682140U, 11604187204414436644U, 12730450818222161228U,
510 13388307479092468286U, 10327209524901530317U, 9388215691182564853U,
511 10657868830410829213U, 11137168911054473967U, 11357920004770333736U,
512 10414374197647485712U, 9306325182584103800U, 9818342344138146826U,
513 9386341947321596045U, 10329786896059045813U, 11455812913355464669U,
514 10924692575052363951U, 10984992149858150141U, 10766613702172592581U,
515 9568826821541020077U, 10208598699842184927U, 13488692655530571308U,
516 13126106942075820308U, 12072096584926548348U, 12605510244625659406U,
517 12249677498819492041U, 11882645355480553457U, 13062230760632229785U,
518 13556163143878539499U, 14178740190036597038U, 14545847390080448022U,
519 15599559227675164286U, 15067834145139579148U, 16065876409530435422U,
520 15270949115358734438U, 14000758968863088654U, 14640014089599289212U,
521 18281953465151117199U, 17342994818563569847U, 16217267316526477535U,
522 16746698532205467565U, 17255653680509032810U, 16312143059561297490U,
523 17564497017566543418U, 18061360711745100104U, 16237972021990524133U,
524 17023861349393640413U, 18293930539975648181U, 17619893477009409223U,
525 18115916316835994261U, 17757855915011241389U, 16704251839199542725U,
526 17200966263939144375U, 15576639675766950468U, 15362743113290245500U,
527 14164544455910714644U, 14841019967217601126U, 14620295210399335585U,
528 14410818688327658393U, 15446357621659116529U, 16085462927495578755U,
529 18237799192036655099U, 17294270664133710019U, 16258109964509321387U,
530 16773410497518403545U, 16657084189963477387U, 16875519862962278067U,
531 18127020052323321563U, 17507580374969491881U, 14153168177888129370U,
532 14515696771658964578U, 15624080140268688906U, 15110866744451150200U,
533 15466708232756051903U, 15833797605570023559U, 14563810316809509103U,
534 14085706539145691037U, 14517711175708869402U, 14150731501263563810U,
535 15402451490950456394U, 15899948742203982648U, 15224753927964908906U,
536 16019597712369578578U, 14983744703118572090U, 14310050713553640776U,
537 17296865610423782843U, 18235907873078829699U, 17055988043521714923U,
538 16561000163437350297U, 16340222631939670878U, 17283720110790814822U,
539 18338064546595415054U, 17805706452459078524U, 10375933128878629561U,
540 9432369415202180481U, 10612588863825479145U, 11105888166746317467U,
541 10794790039591648457U, 11013260899437695985U, 9905396050428550041U,
542 9228014311730625771U, 13154226096333843480U, 13516719503928509216U,
543 12264699899470662472U, 11768891770841246778U, 11836546934201131773U,
544 12203601119882644933U, 13328994472388527533U, 12798507759874630367U,
545 12277767672444305266U, 12068343612890878026U, 13176021535246260258U,
546 13816435502572994384U, 12705517425460601090U, 13640043170446921274U,
547 12460006250421962322U, 11929369723008524576U, 10597232027372843475U,
548 11387585128312430315U, 10351852510211364483U, 9713802769929286129U,
549 9357917249443839798U, 10143859113470169102U, 11342251114164164710U,
550 10664720106027613972U
551};
552
553#define AA_ROLL_TABLE(CHAR, LEVEL, ROT) \
554 (LEVEL_X_AA_SEED_LEFT_31BITS_ROLL_TABLE[LEVEL][CHAR] \
555 [(ROT) < 31 ? (ROT) : (ROT) % 31] | \
556 LEVEL_X_AA_SEED_RIGHT_33BITS_ROLL_TABLE[LEVEL][CHAR] \
557 [(ROT) < 33 ? (ROT) : (ROT) % 33])
558
559// 64-bit random seeds corresponding to 20 amino acids
560constexpr inline uint64_t AA_SEED_A = 0xf56d6192468323df;
561constexpr inline uint64_t AA_SEED_C = 0x9b0b2fd724e1e1d2;
562constexpr inline uint64_t AA_SEED_D = 0xe8c583296b03c7af;
563constexpr inline uint64_t AA_SEED_E = 0x6d8186850ee2f67;
564constexpr inline uint64_t AA_SEED_F = 0x921e1da156b717ad;
565constexpr inline uint64_t AA_SEED_G = 0xa70dc450015e3ffe;
566constexpr inline uint64_t AA_SEED_H = 0x2242263a9d5638ff;
567constexpr inline uint64_t AA_SEED_I = 0x2469ca06d519cdef;
568constexpr inline uint64_t AA_SEED_K = 0xd4e7f06ac0593d3b;
569constexpr inline uint64_t AA_SEED_L = 0xa5e19c0b1b40a97f;
570constexpr inline uint64_t AA_SEED_M = 0xfab3d6d4dd74c000;
571constexpr inline uint64_t AA_SEED_N = 0x4b363f2cf7bc5200;
572constexpr inline uint64_t AA_SEED_P = 0x21ac8af2adb65ce4;
573constexpr inline uint64_t AA_SEED_Q = 0x1d3baae9ab7cd800;
574constexpr inline uint64_t AA_SEED_R = 0x49015253a9dbedf;
575constexpr inline uint64_t AA_SEED_S = 0x5bf1f1d7ae699000;
576constexpr inline uint64_t AA_SEED_T = 0xdb0c63dd7282cf90;
577constexpr inline uint64_t AA_SEED_V = 0x7df64ddf78874000;
578constexpr inline uint64_t AA_SEED_W = 0xee9e700cae6aa279;
579constexpr inline uint64_t AA_SEED_Y = 0x5852ffb781a97610;
580constexpr inline uint64_t AA_SEED__ = 0x0000000000000000; // NOLINT
581
582constexpr inline uint64_t AA_SEED_TABLE[ASCII_SIZE] = {
583 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
584 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 0..7
585 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
586 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 8..15
587 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
588 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 16..23
589 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
590 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 24..31
591 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
592 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 32..39
593 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
594 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 40..47
595 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
596 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 48..55
597 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
598 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 56..63
599 AA_SEED__, AA_SEED_A, AA_SEED__, AA_SEED_C,
600 AA_SEED_D, AA_SEED_E, AA_SEED_F, AA_SEED_G, // 64..71
601 AA_SEED_H, AA_SEED_I, AA_SEED__, AA_SEED_K,
602 AA_SEED_L, AA_SEED_M, AA_SEED_N, AA_SEED__, // 72..79
603 AA_SEED_P, AA_SEED_Q, AA_SEED_R, AA_SEED_S,
604 AA_SEED_T, AA_SEED__, AA_SEED_V, AA_SEED_W, // 80..87
605 AA_SEED__, AA_SEED_Y, AA_SEED__, AA_SEED__,
606 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 88..95
607 AA_SEED__, AA_SEED_A, AA_SEED__, AA_SEED_C,
608 AA_SEED_D, AA_SEED_E, AA_SEED_F, AA_SEED_G, // 96..103
609 AA_SEED_H, AA_SEED_I, AA_SEED__, AA_SEED_K,
610 AA_SEED_L, AA_SEED_M, AA_SEED_N, AA_SEED__, // 104..111
611 AA_SEED_P, AA_SEED_Q, AA_SEED_R, AA_SEED_S,
612 AA_SEED_T, AA_SEED__, AA_SEED_V, AA_SEED_W, // 112..119
613 AA_SEED__, AA_SEED_Y, AA_SEED__, AA_SEED__,
614 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 120..127
615 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
616 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 128..135
617 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
618 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 136..143
619 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
620 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 144..151
621 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
622 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 152..159
623 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
624 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 160..167
625 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
626 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 168..175
627 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
628 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 176..183
629 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
630 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 184..191
631 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
632 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 192..199
633 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
634 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 200..207
635 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
636 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 208..215
637 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
638 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 216..223
639 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
640 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 224..231
641 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
642 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 232..239
643 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
644 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, // 240..247
645 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
646 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__ // 248..255
647};
648
649constexpr inline uint64_t AA_SEED_A_RIGHT_33BITS_ROLL_TABLE[33] = {
650 0x468323df, 0x8d0647be, 0x11a0c8f7c, 0x34191ef9, 0x68323df2, 0xd0647be4,
651 0x1a0c8f7c8, 0x14191ef91, 0x8323df23, 0x10647be46, 0xc8f7c8d, 0x191ef91a,
652 0x323df234, 0x647be468, 0xc8f7c8d0, 0x191ef91a0, 0x123df2341, 0x47be4683,
653 0x8f7c8d06, 0x11ef91a0c, 0x3df23419, 0x7be46832, 0xf7c8d064, 0x1ef91a0c8,
654 0x1df234191, 0x1be468323, 0x17c8d0647, 0xf91a0c8f, 0x1f234191e, 0x1e468323d,
655 0x1c8d0647b, 0x191a0c8f7, 0x1234191ef
656};
657constexpr inline uint64_t AA_SEED_A_LEFT_31BITS_ROLL_TABLE[31] = {
658 0xf56d619200000000, 0xeadac32600000000, 0xd5b5864e00000000,
659 0xab6b0c9e00000000, 0x56d6193e00000000, 0xadac327c00000000,
660 0x5b5864fa00000000, 0xb6b0c9f400000000, 0x6d6193ea00000000,
661 0xdac327d400000000, 0xb5864faa00000000, 0x6b0c9f5600000000,
662 0xd6193eac00000000, 0xac327d5a00000000, 0x5864fab600000000,
663 0xb0c9f56c00000000, 0x6193eada00000000, 0xc327d5b400000000,
664 0x864fab6a00000000, 0xc9f56d600000000, 0x193eadac00000000,
665 0x327d5b5800000000, 0x64fab6b000000000, 0xc9f56d6000000000,
666 0x93eadac200000000, 0x27d5b58600000000, 0x4fab6b0c00000000,
667 0x9f56d61800000000, 0x3eadac3200000000, 0x7d5b586400000000,
668 0xfab6b0c800000000
669};
670constexpr inline uint64_t AA_SEED_C_RIGHT_33BITS_ROLL_TABLE[33] = {
671 0x124e1e1d2, 0x49c3c3a5, 0x9387874a, 0x1270f0e94, 0x4e1e1d29, 0x9c3c3a52,
672 0x1387874a4, 0x70f0e949, 0xe1e1d292, 0x1c3c3a524, 0x187874a49, 0x10f0e9493,
673 0x1e1d2927, 0x3c3a524e, 0x7874a49c, 0xf0e94938, 0x1e1d29270, 0x1c3a524e1,
674 0x1874a49c3, 0x10e949387, 0x1d29270f, 0x3a524e1e, 0x74a49c3c, 0xe9493878,
675 0x1d29270f0, 0x1a524e1e1, 0x14a49c3c3, 0x94938787, 0x129270f0e, 0x524e1e1d,
676 0xa49c3c3a, 0x149387874, 0x9270f0e9
677};
678constexpr inline uint64_t AA_SEED_C_LEFT_31BITS_ROLL_TABLE[31] = {
679 0x9b0b2fd600000000, 0x36165fae00000000, 0x6c2cbf5c00000000,
680 0xd8597eb800000000, 0xb0b2fd7200000000, 0x6165fae600000000,
681 0xc2cbf5cc00000000, 0x8597eb9a00000000, 0xb2fd73600000000,
682 0x165fae6c00000000, 0x2cbf5cd800000000, 0x597eb9b000000000,
683 0xb2fd736000000000, 0x65fae6c200000000, 0xcbf5cd8400000000,
684 0x97eb9b0a00000000, 0x2fd7361600000000, 0x5fae6c2c00000000,
685 0xbf5cd85800000000, 0x7eb9b0b200000000, 0xfd73616400000000,
686 0xfae6c2ca00000000, 0xf5cd859600000000, 0xeb9b0b2e00000000,
687 0xd736165e00000000, 0xae6c2cbe00000000, 0x5cd8597e00000000,
688 0xb9b0b2fc00000000, 0x736165fa00000000, 0xe6c2cbf400000000,
689 0xcd8597ea00000000
690};
691constexpr inline uint64_t AA_SEED_D_RIGHT_33BITS_ROLL_TABLE[33] = {
692 0x16b03c7af, 0xd6078f5f, 0x1ac0f1ebe, 0x1581e3d7d, 0xb03c7afb, 0x16078f5f6,
693 0xc0f1ebed, 0x181e3d7da, 0x103c7afb5, 0x78f5f6b, 0xf1ebed6, 0x1e3d7dac,
694 0x3c7afb58, 0x78f5f6b0, 0xf1ebed60, 0x1e3d7dac0, 0x1c7afb581, 0x18f5f6b03,
695 0x11ebed607, 0x3d7dac0f, 0x7afb581e, 0xf5f6b03c, 0x1ebed6078, 0x1d7dac0f1,
696 0x1afb581e3, 0x15f6b03c7, 0xbed6078f, 0x17dac0f1e, 0xfb581e3d, 0x1f6b03c7a,
697 0x1ed6078f5, 0x1dac0f1eb, 0x1b581e3d7
698};
699constexpr inline uint64_t AA_SEED_D_LEFT_31BITS_ROLL_TABLE[31] = {
700 0xe8c5832800000000, 0xd18b065200000000, 0xa3160ca600000000,
701 0x462c194e00000000, 0x8c58329c00000000, 0x18b0653a00000000,
702 0x3160ca7400000000, 0x62c194e800000000, 0xc58329d000000000,
703 0x8b0653a200000000, 0x160ca74600000000, 0x2c194e8c00000000,
704 0x58329d1800000000, 0xb0653a3000000000, 0x60ca746200000000,
705 0xc194e8c400000000, 0x8329d18a00000000, 0x653a31600000000,
706 0xca7462c00000000, 0x194e8c5800000000, 0x329d18b000000000,
707 0x653a316000000000, 0xca7462c000000000, 0x94e8c58200000000,
708 0x29d18b0600000000, 0x53a3160c00000000, 0xa7462c1800000000,
709 0x4e8c583200000000, 0x9d18b06400000000, 0x3a3160ca00000000,
710 0x7462c19400000000
711};
712constexpr inline uint64_t AA_SEED_E_RIGHT_33BITS_ROLL_TABLE[33] = {
713 0x50ee2f67, 0xa1dc5ece, 0x143b8bd9c, 0x87717b39, 0x10ee2f672, 0x1dc5ece5,
714 0x3b8bd9ca, 0x7717b394, 0xee2f6728, 0x1dc5ece50, 0x1b8bd9ca1, 0x1717b3943,
715 0xe2f67287, 0x1c5ece50e, 0x18bd9ca1d, 0x117b3943b, 0x2f672877, 0x5ece50ee,
716 0xbd9ca1dc, 0x17b3943b8, 0xf6728771, 0x1ece50ee2, 0x1d9ca1dc5, 0x1b3943b8b,
717 0x167287717, 0xce50ee2f, 0x19ca1dc5e, 0x13943b8bd, 0x7287717b, 0xe50ee2f6,
718 0x1ca1dc5ec, 0x1943b8bd9, 0x1287717b3
719};
720constexpr inline uint64_t AA_SEED_E_LEFT_31BITS_ROLL_TABLE[31] = {
721 0x6d8186800000000, 0xdb030d000000000, 0x1b6061a000000000,
722 0x36c0c34000000000, 0x6d81868000000000, 0xdb030d0000000000,
723 0xb6061a0200000000, 0x6c0c340600000000, 0xd818680c00000000,
724 0xb030d01a00000000, 0x6061a03600000000, 0xc0c3406c00000000,
725 0x818680da00000000, 0x30d01b600000000, 0x61a036c00000000,
726 0xc3406d800000000, 0x18680db000000000, 0x30d01b6000000000,
727 0x61a036c000000000, 0xc3406d8000000000, 0x8680db0200000000,
728 0xd01b60600000000, 0x1a036c0c00000000, 0x3406d81800000000,
729 0x680db03000000000, 0xd01b606000000000, 0xa036c0c200000000,
730 0x406d818600000000, 0x80db030c00000000, 0x1b6061a00000000,
731 0x36c0c3400000000
732};
733constexpr inline uint64_t AA_SEED_F_RIGHT_33BITS_ROLL_TABLE[33] = {
734 0x156b717ad, 0xad6e2f5b, 0x15adc5eb6, 0xb5b8bd6d, 0x16b717ada, 0xd6e2f5b5,
735 0x1adc5eb6a, 0x15b8bd6d5, 0xb717adab, 0x16e2f5b56, 0xdc5eb6ad, 0x1b8bd6d5a,
736 0x1717adab5, 0xe2f5b56b, 0x1c5eb6ad6, 0x18bd6d5ad, 0x117adab5b, 0x2f5b56b7,
737 0x5eb6ad6e, 0xbd6d5adc, 0x17adab5b8, 0xf5b56b71, 0x1eb6ad6e2, 0x1d6d5adc5,
738 0x1adab5b8b, 0x15b56b717, 0xb6ad6e2f, 0x16d5adc5e, 0xdab5b8bd, 0x1b56b717a,
739 0x16ad6e2f5, 0xd5adc5eb, 0x1ab5b8bd6
740};
741constexpr inline uint64_t AA_SEED_F_LEFT_31BITS_ROLL_TABLE[31] = {
742 0x921e1da000000000, 0x243c3b4200000000, 0x4878768400000000,
743 0x90f0ed0800000000, 0x21e1da1200000000, 0x43c3b42400000000,
744 0x8787684800000000, 0xf0ed09200000000, 0x1e1da12400000000,
745 0x3c3b424800000000, 0x7876849000000000, 0xf0ed092000000000,
746 0xe1da124200000000, 0xc3b4248600000000, 0x8768490e00000000,
747 0xed0921e00000000, 0x1da1243c00000000, 0x3b42487800000000,
748 0x768490f000000000, 0xed0921e000000000, 0xda1243c200000000,
749 0xb424878600000000, 0x68490f0e00000000, 0xd0921e1c00000000,
750 0xa1243c3a00000000, 0x4248787600000000, 0x8490f0ec00000000,
751 0x921e1da00000000, 0x1243c3b400000000, 0x2487876800000000,
752 0x490f0ed000000000
753};
754constexpr inline uint64_t AA_SEED_G_RIGHT_33BITS_ROLL_TABLE[33] = {
755 0x15e3ffe, 0x2bc7ffc, 0x578fff8, 0xaf1fff0, 0x15e3ffe0, 0x2bc7ffc0,
756 0x578fff80, 0xaf1fff00, 0x15e3ffe00, 0xbc7ffc01, 0x178fff802, 0xf1fff005,
757 0x1e3ffe00a, 0x1c7ffc015, 0x18fff802b, 0x11fff0057, 0x3ffe00af, 0x7ffc015e,
758 0xfff802bc, 0x1fff00578, 0x1ffe00af1, 0x1ffc015e3, 0x1ff802bc7, 0x1ff00578f,
759 0x1fe00af1f, 0x1fc015e3f, 0x1f802bc7f, 0x1f00578ff, 0x1e00af1ff, 0x1c015e3ff,
760 0x1802bc7ff, 0x100578fff, 0xaf1fff
761};
762constexpr inline uint64_t AA_SEED_G_LEFT_31BITS_ROLL_TABLE[31] = {
763 0xa70dc45000000000, 0x4e1b88a200000000, 0x9c37114400000000,
764 0x386e228a00000000, 0x70dc451400000000, 0xe1b88a2800000000,
765 0xc371145200000000, 0x86e228a600000000, 0xdc4514e00000000,
766 0x1b88a29c00000000, 0x3711453800000000, 0x6e228a7000000000,
767 0xdc4514e000000000, 0xb88a29c200000000, 0x7114538600000000,
768 0xe228a70c00000000, 0xc4514e1a00000000, 0x88a29c3600000000,
769 0x1145386e00000000, 0x228a70dc00000000, 0x4514e1b800000000,
770 0x8a29c37000000000, 0x145386e200000000, 0x28a70dc400000000,
771 0x514e1b8800000000, 0xa29c371000000000, 0x45386e2200000000,
772 0x8a70dc4400000000, 0x14e1b88a00000000, 0x29c3711400000000,
773 0x5386e22800000000
774};
775constexpr inline uint64_t AA_SEED_H_RIGHT_33BITS_ROLL_TABLE[33] = {
776 0x9d5638ff, 0x13aac71fe, 0x7558e3fd, 0xeab1c7fa, 0x1d5638ff4, 0x1aac71fe9,
777 0x1558e3fd3, 0xab1c7fa7, 0x15638ff4e, 0xac71fe9d, 0x158e3fd3a, 0xb1c7fa75,
778 0x1638ff4ea, 0xc71fe9d5, 0x18e3fd3aa, 0x11c7fa755, 0x38ff4eab, 0x71fe9d56,
779 0xe3fd3aac, 0x1c7fa7558, 0x18ff4eab1, 0x11fe9d563, 0x3fd3aac7, 0x7fa7558e,
780 0xff4eab1c, 0x1fe9d5638, 0x1fd3aac71, 0x1fa7558e3, 0x1f4eab1c7, 0x1e9d5638f,
781 0x1d3aac71f, 0x1a7558e3f, 0x14eab1c7f
782};
783constexpr inline uint64_t AA_SEED_H_LEFT_31BITS_ROLL_TABLE[31] = {
784 0x2242263a00000000, 0x44844c7400000000, 0x890898e800000000,
785 0x121131d200000000, 0x242263a400000000, 0x4844c74800000000,
786 0x90898e9000000000, 0x21131d2200000000, 0x42263a4400000000,
787 0x844c748800000000, 0x898e91200000000, 0x1131d22400000000,
788 0x2263a44800000000, 0x44c7489000000000, 0x898e912000000000,
789 0x131d224200000000, 0x263a448400000000, 0x4c74890800000000,
790 0x98e9121000000000, 0x31d2242200000000, 0x63a4484400000000,
791 0xc748908800000000, 0x8e91211200000000, 0x1d22422600000000,
792 0x3a44844c00000000, 0x7489089800000000, 0xe912113000000000,
793 0xd224226200000000, 0xa44844c600000000, 0x4890898e00000000,
794 0x9121131c00000000
795};
796constexpr inline uint64_t AA_SEED_I_RIGHT_33BITS_ROLL_TABLE[33] = {
797 0xd519cdef, 0x1aa339bde, 0x1546737bd, 0xa8ce6f7b, 0x1519cdef6, 0xa339bded,
798 0x146737bda, 0x8ce6f7b5, 0x119cdef6a, 0x339bded5, 0x6737bdaa, 0xce6f7b54,
799 0x19cdef6a8, 0x139bded51, 0x737bdaa3, 0xe6f7b546, 0x1cdef6a8c, 0x19bded519,
800 0x137bdaa33, 0x6f7b5467, 0xdef6a8ce, 0x1bded519c, 0x17bdaa339, 0xf7b54673,
801 0x1ef6a8ce6, 0x1ded519cd, 0x1bdaa339b, 0x17b546737, 0xf6a8ce6f, 0x1ed519cde,
802 0x1daa339bd, 0x1b546737b, 0x16a8ce6f7
803};
804constexpr inline uint64_t AA_SEED_I_LEFT_31BITS_ROLL_TABLE[31] = {
805 0x2469ca0600000000, 0x48d3940c00000000, 0x91a7281800000000,
806 0x234e503200000000, 0x469ca06400000000, 0x8d3940c800000000,
807 0x1a72819200000000, 0x34e5032400000000, 0x69ca064800000000,
808 0xd3940c9000000000, 0xa728192200000000, 0x4e50324600000000,
809 0x9ca0648c00000000, 0x3940c91a00000000, 0x7281923400000000,
810 0xe503246800000000, 0xca0648d200000000, 0x940c91a600000000,
811 0x2819234e00000000, 0x5032469c00000000, 0xa0648d3800000000,
812 0x40c91a7200000000, 0x819234e400000000, 0x32469ca00000000,
813 0x648d39400000000, 0xc91a72800000000, 0x19234e5000000000,
814 0x32469ca000000000, 0x648d394000000000, 0xc91a728000000000,
815 0x9234e50200000000
816};
817constexpr inline uint64_t AA_SEED_K_RIGHT_33BITS_ROLL_TABLE[33] = {
818 0xc0593d3b, 0x180b27a76, 0x10164f4ed, 0x2c9e9db, 0x593d3b6, 0xb27a76c,
819 0x164f4ed8, 0x2c9e9db0, 0x593d3b60, 0xb27a76c0, 0x164f4ed80, 0xc9e9db01,
820 0x193d3b602, 0x127a76c05, 0x4f4ed80b, 0x9e9db016, 0x13d3b602c, 0x7a76c059,
821 0xf4ed80b2, 0x1e9db0164, 0x1d3b602c9, 0x1a76c0593, 0x14ed80b27, 0x9db0164f,
822 0x13b602c9e, 0x76c0593d, 0xed80b27a, 0x1db0164f4, 0x1b602c9e9, 0x16c0593d3,
823 0xd80b27a7, 0x1b0164f4e, 0x1602c9e9d
824};
825constexpr inline uint64_t AA_SEED_K_LEFT_31BITS_ROLL_TABLE[31] = {
826 0xd4e7f06a00000000, 0xa9cfe0d600000000, 0x539fc1ae00000000,
827 0xa73f835c00000000, 0x4e7f06ba00000000, 0x9cfe0d7400000000,
828 0x39fc1aea00000000, 0x73f835d400000000, 0xe7f06ba800000000,
829 0xcfe0d75200000000, 0x9fc1aea600000000, 0x3f835d4e00000000,
830 0x7f06ba9c00000000, 0xfe0d753800000000, 0xfc1aea7200000000,
831 0xf835d4e600000000, 0xf06ba9ce00000000, 0xe0d7539e00000000,
832 0xc1aea73e00000000, 0x835d4e7e00000000, 0x6ba9cfe00000000,
833 0xd7539fc00000000, 0x1aea73f800000000, 0x35d4e7f000000000,
834 0x6ba9cfe000000000, 0xd7539fc000000000, 0xaea73f8200000000,
835 0x5d4e7f0600000000, 0xba9cfe0c00000000, 0x7539fc1a00000000,
836 0xea73f83400000000
837};
838constexpr inline uint64_t AA_SEED_L_RIGHT_33BITS_ROLL_TABLE[33] = {
839 0x11b40a97f, 0x368152ff, 0x6d02a5fe, 0xda054bfc, 0x1b40a97f8, 0x168152ff1,
840 0xd02a5fe3, 0x1a054bfc6, 0x140a97f8d, 0x8152ff1b, 0x102a5fe36, 0x54bfc6d,
841 0xa97f8da, 0x152ff1b4, 0x2a5fe368, 0x54bfc6d0, 0xa97f8da0, 0x152ff1b40,
842 0xa5fe3681, 0x14bfc6d02, 0x97f8da05, 0x12ff1b40a, 0x5fe36815, 0xbfc6d02a,
843 0x17f8da054, 0xff1b40a9, 0x1fe368152, 0x1fc6d02a5, 0x1f8da054b, 0x1f1b40a97,
844 0x1e368152f, 0x1c6d02a5f, 0x18da054bf
845};
846constexpr inline uint64_t AA_SEED_L_LEFT_31BITS_ROLL_TABLE[31] = {
847 0xa5e19c0a00000000, 0x4bc3381600000000, 0x9786702c00000000,
848 0x2f0ce05a00000000, 0x5e19c0b400000000, 0xbc33816800000000,
849 0x786702d200000000, 0xf0ce05a400000000, 0xe19c0b4a00000000,
850 0xc338169600000000, 0x86702d2e00000000, 0xce05a5e00000000,
851 0x19c0b4bc00000000, 0x3381697800000000, 0x6702d2f000000000,
852 0xce05a5e000000000, 0x9c0b4bc200000000, 0x3816978600000000,
853 0x702d2f0c00000000, 0xe05a5e1800000000, 0xc0b4bc3200000000,
854 0x8169786600000000, 0x2d2f0ce00000000, 0x5a5e19c00000000,
855 0xb4bc33800000000, 0x1697867000000000, 0x2d2f0ce000000000,
856 0x5a5e19c000000000, 0xb4bc338000000000, 0x6978670200000000,
857 0xd2f0ce0400000000
858};
859constexpr inline uint64_t AA_SEED_M_RIGHT_33BITS_ROLL_TABLE[33] = {
860 0xdd74c000, 0x1bae98000, 0x175d30001, 0xeba60003, 0x1d74c0006, 0x1ae98000d,
861 0x15d30001b, 0xba600037, 0x174c0006e, 0xe98000dd, 0x1d30001ba, 0x1a6000375,
862 0x14c0006eb, 0x98000dd7, 0x130001bae, 0x6000375d, 0xc0006eba, 0x18000dd74,
863 0x10001bae9, 0x375d3, 0x6eba6, 0xdd74c, 0x1bae98, 0x375d30,
864 0x6eba60, 0xdd74c0, 0x1bae980, 0x375d300, 0x6eba600, 0xdd74c00,
865 0x1bae9800, 0x375d3000, 0x6eba6000
866};
867constexpr inline uint64_t AA_SEED_M_LEFT_31BITS_ROLL_TABLE[31] = {
868 0xfab3d6d400000000, 0xf567adaa00000000, 0xeacf5b5600000000,
869 0xd59eb6ae00000000, 0xab3d6d5e00000000, 0x567adabe00000000,
870 0xacf5b57c00000000, 0x59eb6afa00000000, 0xb3d6d5f400000000,
871 0x67adabea00000000, 0xcf5b57d400000000, 0x9eb6afaa00000000,
872 0x3d6d5f5600000000, 0x7adabeac00000000, 0xf5b57d5800000000,
873 0xeb6afab200000000, 0xd6d5f56600000000, 0xadabeace00000000,
874 0x5b57d59e00000000, 0xb6afab3c00000000, 0x6d5f567a00000000,
875 0xdabeacf400000000, 0xb57d59ea00000000, 0x6afab3d600000000,
876 0xd5f567ac00000000, 0xabeacf5a00000000, 0x57d59eb600000000,
877 0xafab3d6c00000000, 0x5f567ada00000000, 0xbeacf5b400000000,
878 0x7d59eb6a00000000
879};
880constexpr inline uint64_t AA_SEED_N_RIGHT_33BITS_ROLL_TABLE[33] = {
881 0xf7bc5200, 0x1ef78a400, 0x1def14801, 0x1bde29003, 0x17bc52007, 0xf78a400f,
882 0x1ef14801e, 0x1de29003d, 0x1bc52007b, 0x178a400f7, 0xf14801ef, 0x1e29003de,
883 0x1c52007bd, 0x18a400f7b, 0x114801ef7, 0x29003def, 0x52007bde, 0xa400f7bc,
884 0x14801ef78, 0x9003def1, 0x12007bde2, 0x400f7bc5, 0x801ef78a, 0x1003def14,
885 0x7bde29, 0xf7bc52, 0x1ef78a4, 0x3def148, 0x7bde290, 0xf7bc520,
886 0x1ef78a40, 0x3def1480, 0x7bde2900
887};
888constexpr inline uint64_t AA_SEED_N_LEFT_31BITS_ROLL_TABLE[31] = {
889 0x4b363f2c00000000, 0x966c7e5800000000, 0x2cd8fcb200000000,
890 0x59b1f96400000000, 0xb363f2c800000000, 0x66c7e59200000000,
891 0xcd8fcb2400000000, 0x9b1f964a00000000, 0x363f2c9600000000,
892 0x6c7e592c00000000, 0xd8fcb25800000000, 0xb1f964b200000000,
893 0x63f2c96600000000, 0xc7e592cc00000000, 0x8fcb259a00000000,
894 0x1f964b3600000000, 0x3f2c966c00000000, 0x7e592cd800000000,
895 0xfcb259b000000000, 0xf964b36200000000, 0xf2c966c600000000,
896 0xe592cd8e00000000, 0xcb259b1e00000000, 0x964b363e00000000,
897 0x2c966c7e00000000, 0x592cd8fc00000000, 0xb259b1f800000000,
898 0x64b363f200000000, 0xc966c7e400000000, 0x92cd8fca00000000,
899 0x259b1f9600000000
900};
901constexpr inline uint64_t AA_SEED_P_RIGHT_33BITS_ROLL_TABLE[33] = {
902 0xadb65ce4, 0x15b6cb9c8, 0xb6d97391, 0x16db2e722, 0xdb65ce45, 0x1b6cb9c8a,
903 0x16d973915, 0xdb2e722b, 0x1b65ce456, 0x16cb9c8ad, 0xd973915b, 0x1b2e722b6,
904 0x165ce456d, 0xcb9c8adb, 0x1973915b6, 0x12e722b6d, 0x5ce456db, 0xb9c8adb6,
905 0x173915b6c, 0xe722b6d9, 0x1ce456db2, 0x19c8adb65, 0x13915b6cb, 0x722b6d97,
906 0xe456db2e, 0x1c8adb65c, 0x1915b6cb9, 0x122b6d973, 0x456db2e7, 0x8adb65ce,
907 0x115b6cb9c, 0x2b6d9739, 0x56db2e72
908};
909constexpr inline uint64_t AA_SEED_P_LEFT_31BITS_ROLL_TABLE[31] = {
910 0x21ac8af200000000, 0x435915e400000000, 0x86b22bc800000000,
911 0xd64579200000000, 0x1ac8af2400000000, 0x35915e4800000000,
912 0x6b22bc9000000000, 0xd645792000000000, 0xac8af24200000000,
913 0x5915e48600000000, 0xb22bc90c00000000, 0x6457921a00000000,
914 0xc8af243400000000, 0x915e486a00000000, 0x22bc90d600000000,
915 0x457921ac00000000, 0x8af2435800000000, 0x15e486b200000000,
916 0x2bc90d6400000000, 0x57921ac800000000, 0xaf24359000000000,
917 0x5e486b2200000000, 0xbc90d64400000000, 0x7921ac8a00000000,
918 0xf243591400000000, 0xe486b22a00000000, 0xc90d645600000000,
919 0x921ac8ae00000000, 0x2435915e00000000, 0x486b22bc00000000,
920 0x90d6457800000000
921};
922constexpr inline uint64_t AA_SEED_Q_RIGHT_33BITS_ROLL_TABLE[33] = {
923 0x1ab7cd800, 0x156f9b001, 0xadf36003, 0x15be6c006, 0xb7cd800d, 0x16f9b001a,
924 0xdf360035, 0x1be6c006a, 0x17cd800d5, 0xf9b001ab, 0x1f3600356, 0x1e6c006ad,
925 0x1cd800d5b, 0x19b001ab7, 0x13600356f, 0x6c006adf, 0xd800d5be, 0x1b001ab7c,
926 0x1600356f9, 0xc006adf3, 0x1800d5be6, 0x1001ab7cd, 0x356f9b, 0x6adf36,
927 0xd5be6c, 0x1ab7cd8, 0x356f9b0, 0x6adf360, 0xd5be6c0, 0x1ab7cd80,
928 0x356f9b00, 0x6adf3600, 0xd5be6c00
929};
930constexpr inline uint64_t AA_SEED_Q_LEFT_31BITS_ROLL_TABLE[31] = {
931 0x1d3baae800000000, 0x3a7755d000000000, 0x74eeaba000000000,
932 0xe9dd574000000000, 0xd3baae8200000000, 0xa7755d0600000000,
933 0x4eeaba0e00000000, 0x9dd5741c00000000, 0x3baae83a00000000,
934 0x7755d07400000000, 0xeeaba0e800000000, 0xdd5741d200000000,
935 0xbaae83a600000000, 0x755d074e00000000, 0xeaba0e9c00000000,
936 0xd5741d3a00000000, 0xaae83a7600000000, 0x55d074ee00000000,
937 0xaba0e9dc00000000, 0x5741d3ba00000000, 0xae83a77400000000,
938 0x5d074eea00000000, 0xba0e9dd400000000, 0x741d3baa00000000,
939 0xe83a775400000000, 0xd074eeaa00000000, 0xa0e9dd5600000000,
940 0x41d3baae00000000, 0x83a7755c00000000, 0x74eeaba00000000,
941 0xe9dd57400000000
942};
943constexpr inline uint64_t AA_SEED_R_RIGHT_33BITS_ROLL_TABLE[33] = {
944 0x13a9dbedf, 0x753b7dbf, 0xea76fb7e, 0x1d4edf6fc, 0x1a9dbedf9, 0x153b7dbf3,
945 0xa76fb7e7, 0x14edf6fce, 0x9dbedf9d, 0x13b7dbf3a, 0x76fb7e75, 0xedf6fcea,
946 0x1dbedf9d4, 0x1b7dbf3a9, 0x16fb7e753, 0xdf6fcea7, 0x1bedf9d4e, 0x17dbf3a9d,
947 0xfb7e753b, 0x1f6fcea76, 0x1edf9d4ed, 0x1dbf3a9db, 0x1b7e753b7, 0x16fcea76f,
948 0xdf9d4edf, 0x1bf3a9dbe, 0x17e753b7d, 0xfcea76fb, 0x1f9d4edf6, 0x1f3a9dbed,
949 0x1e753b7db, 0x1cea76fb7, 0x19d4edf6f
950};
951constexpr inline uint64_t AA_SEED_R_LEFT_31BITS_ROLL_TABLE[31] = {
952 0x490152400000000, 0x9202a4800000000, 0x1240549000000000,
953 0x2480a92000000000, 0x4901524000000000, 0x9202a48000000000,
954 0x2405490200000000, 0x480a920400000000, 0x9015240800000000,
955 0x202a481200000000, 0x4054902400000000, 0x80a9204800000000,
956 0x152409200000000, 0x2a4812400000000, 0x549024800000000,
957 0xa92049000000000, 0x1524092000000000, 0x2a48124000000000,
958 0x5490248000000000, 0xa920490000000000, 0x5240920200000000,
959 0xa481240400000000, 0x4902480a00000000, 0x9204901400000000,
960 0x2409202a00000000, 0x4812405400000000, 0x902480a800000000,
961 0x2049015200000000, 0x409202a400000000, 0x8124054800000000,
962 0x2480a9200000000
963};
964constexpr inline uint64_t AA_SEED_S_RIGHT_33BITS_ROLL_TABLE[33] = {
965 0x1ae699000, 0x15cd32001, 0xb9a64003, 0x1734c8006, 0xe699000d, 0x1cd32001a,
966 0x19a640035, 0x134c8006b, 0x699000d7, 0xd32001ae, 0x1a640035c, 0x14c8006b9,
967 0x99000d73, 0x132001ae6, 0x640035cd, 0xc8006b9a, 0x19000d734, 0x12001ae69,
968 0x40035cd3, 0x8006b9a6, 0x1000d734c, 0x1ae699, 0x35cd32, 0x6b9a64,
969 0xd734c8, 0x1ae6990, 0x35cd320, 0x6b9a640, 0xd734c80, 0x1ae69900,
970 0x35cd3200, 0x6b9a6400, 0xd734c800
971};
972constexpr inline uint64_t AA_SEED_S_LEFT_31BITS_ROLL_TABLE[31] = {
973 0x5bf1f1d600000000, 0xb7e3e3ac00000000, 0x6fc7c75a00000000,
974 0xdf8f8eb400000000, 0xbf1f1d6a00000000, 0x7e3e3ad600000000,
975 0xfc7c75ac00000000, 0xf8f8eb5a00000000, 0xf1f1d6b600000000,
976 0xe3e3ad6e00000000, 0xc7c75ade00000000, 0x8f8eb5be00000000,
977 0x1f1d6b7e00000000, 0x3e3ad6fc00000000, 0x7c75adf800000000,
978 0xf8eb5bf000000000, 0xf1d6b7e200000000, 0xe3ad6fc600000000,
979 0xc75adf8e00000000, 0x8eb5bf1e00000000, 0x1d6b7e3e00000000,
980 0x3ad6fc7c00000000, 0x75adf8f800000000, 0xeb5bf1f000000000,
981 0xd6b7e3e200000000, 0xad6fc7c600000000, 0x5adf8f8e00000000,
982 0xb5bf1f1c00000000, 0x6b7e3e3a00000000, 0xd6fc7c7400000000,
983 0xadf8f8ea00000000
984};
985constexpr inline uint64_t AA_SEED_T_RIGHT_33BITS_ROLL_TABLE[33] = {
986 0x17282cf90, 0xe5059f21, 0x1ca0b3e42, 0x194167c85, 0x1282cf90b, 0x5059f217,
987 0xa0b3e42e, 0x14167c85c, 0x82cf90b9, 0x1059f2172, 0xb3e42e5, 0x167c85ca,
988 0x2cf90b94, 0x59f21728, 0xb3e42e50, 0x167c85ca0, 0xcf90b941, 0x19f217282,
989 0x13e42e505, 0x7c85ca0b, 0xf90b9416, 0x1f217282c, 0x1e42e5059, 0x1c85ca0b3,
990 0x190b94167, 0x1217282cf, 0x42e5059f, 0x85ca0b3e, 0x10b94167c, 0x17282cf9,
991 0x2e5059f2, 0x5ca0b3e4, 0xb94167c8
992};
993constexpr inline uint64_t AA_SEED_T_LEFT_31BITS_ROLL_TABLE[31] = {
994 0xdb0c63dc00000000, 0xb618c7ba00000000, 0x6c318f7600000000,
995 0xd8631eec00000000, 0xb0c63dda00000000, 0x618c7bb600000000,
996 0xc318f76c00000000, 0x8631eeda00000000, 0xc63ddb600000000,
997 0x18c7bb6c00000000, 0x318f76d800000000, 0x631eedb000000000,
998 0xc63ddb6000000000, 0x8c7bb6c200000000, 0x18f76d8600000000,
999 0x31eedb0c00000000, 0x63ddb61800000000, 0xc7bb6c3000000000,
1000 0x8f76d86200000000, 0x1eedb0c600000000, 0x3ddb618c00000000,
1001 0x7bb6c31800000000, 0xf76d863000000000, 0xeedb0c6200000000,
1002 0xddb618c600000000, 0xbb6c318e00000000, 0x76d8631e00000000,
1003 0xedb0c63c00000000, 0xdb618c7a00000000, 0xb6c318f600000000,
1004 0x6d8631ee00000000
1005};
1006constexpr inline uint64_t AA_SEED_V_RIGHT_33BITS_ROLL_TABLE[33] = {
1007 0x178874000, 0xf10e8001, 0x1e21d0002, 0x1c43a0005, 0x18874000b, 0x110e80017,
1008 0x21d0002f, 0x43a0005e, 0x874000bc, 0x10e800178, 0x1d0002f1, 0x3a0005e2,
1009 0x74000bc4, 0xe8001788, 0x1d0002f10, 0x1a0005e21, 0x14000bc43, 0x80017887,
1010 0x10002f10e, 0x5e21d, 0xbc43a, 0x178874, 0x2f10e8, 0x5e21d0,
1011 0xbc43a0, 0x1788740, 0x2f10e80, 0x5e21d00, 0xbc43a00, 0x17887400,
1012 0x2f10e800, 0x5e21d000, 0xbc43a000
1013};
1014constexpr inline uint64_t AA_SEED_V_LEFT_31BITS_ROLL_TABLE[31] = {
1015 0x7df64dde00000000, 0xfbec9bbc00000000, 0xf7d9377a00000000,
1016 0xefb26ef600000000, 0xdf64ddee00000000, 0xbec9bbde00000000,
1017 0x7d9377be00000000, 0xfb26ef7c00000000, 0xf64ddefa00000000,
1018 0xec9bbdf600000000, 0xd9377bee00000000, 0xb26ef7de00000000,
1019 0x64ddefbe00000000, 0xc9bbdf7c00000000, 0x9377befa00000000,
1020 0x26ef7df600000000, 0x4ddefbec00000000, 0x9bbdf7d800000000,
1021 0x377befb200000000, 0x6ef7df6400000000, 0xddefbec800000000,
1022 0xbbdf7d9200000000, 0x77befb2600000000, 0xef7df64c00000000,
1023 0xdefbec9a00000000, 0xbdf7d93600000000, 0x7befb26e00000000,
1024 0xf7df64dc00000000, 0xefbec9ba00000000, 0xdf7d937600000000,
1025 0xbefb26ee00000000
1026};
1027constexpr inline uint64_t AA_SEED_W_RIGHT_33BITS_ROLL_TABLE[33] = {
1028 0xae6aa279, 0x15cd544f2, 0xb9aa89e5, 0x1735513ca, 0xe6aa2795, 0x1cd544f2a,
1029 0x19aa89e55, 0x135513cab, 0x6aa27957, 0xd544f2ae, 0x1aa89e55c, 0x15513cab9,
1030 0xaa279573, 0x1544f2ae6, 0xa89e55cd, 0x1513cab9a, 0xa2795735, 0x144f2ae6a,
1031 0x89e55cd5, 0x113cab9aa, 0x27957355, 0x4f2ae6aa, 0x9e55cd54, 0x13cab9aa8,
1032 0x79573551, 0xf2ae6aa2, 0x1e55cd544, 0x1cab9aa89, 0x195735513, 0x12ae6aa27,
1033 0x55cd544f, 0xab9aa89e, 0x15735513c
1034};
1035constexpr inline uint64_t AA_SEED_W_LEFT_31BITS_ROLL_TABLE[31] = {
1036 0xee9e700c00000000, 0xdd3ce01a00000000, 0xba79c03600000000,
1037 0x74f3806e00000000, 0xe9e700dc00000000, 0xd3ce01ba00000000,
1038 0xa79c037600000000, 0x4f3806ee00000000, 0x9e700ddc00000000,
1039 0x3ce01bba00000000, 0x79c0377400000000, 0xf3806ee800000000,
1040 0xe700ddd200000000, 0xce01bba600000000, 0x9c03774e00000000,
1041 0x3806ee9e00000000, 0x700ddd3c00000000, 0xe01bba7800000000,
1042 0xc03774f200000000, 0x806ee9e600000000, 0xddd3ce00000000,
1043 0x1bba79c00000000, 0x3774f3800000000, 0x6ee9e7000000000,
1044 0xddd3ce000000000, 0x1bba79c000000000, 0x3774f38000000000,
1045 0x6ee9e70000000000, 0xddd3ce0000000000, 0xbba79c0200000000,
1046 0x774f380600000000
1047};
1048constexpr inline uint64_t AA_SEED_Y_RIGHT_33BITS_ROLL_TABLE[33] = {
1049 0x181a97610, 0x10352ec21, 0x6a5d843, 0xd4bb086, 0x1a97610c, 0x352ec218,
1050 0x6a5d8430, 0xd4bb0860, 0x1a97610c0, 0x152ec2181, 0xa5d84303, 0x14bb08606,
1051 0x97610c0d, 0x12ec2181a, 0x5d843035, 0xbb08606a, 0x17610c0d4, 0xec2181a9,
1052 0x1d8430352, 0x1b08606a5, 0x1610c0d4b, 0xc2181a97, 0x18430352e, 0x108606a5d,
1053 0x10c0d4bb, 0x2181a976, 0x430352ec, 0x8606a5d8, 0x10c0d4bb0, 0x181a9761,
1054 0x30352ec2, 0x606a5d84, 0xc0d4bb08
1055};
1056constexpr inline uint64_t AA_SEED_Y_LEFT_31BITS_ROLL_TABLE[31] = {
1057 0x5852ffb600000000, 0xb0a5ff6c00000000, 0x614bfeda00000000,
1058 0xc297fdb400000000, 0x852ffb6a00000000, 0xa5ff6d600000000,
1059 0x14bfedac00000000, 0x297fdb5800000000, 0x52ffb6b000000000,
1060 0xa5ff6d6000000000, 0x4bfedac200000000, 0x97fdb58400000000,
1061 0x2ffb6b0a00000000, 0x5ff6d61400000000, 0xbfedac2800000000,
1062 0x7fdb585200000000, 0xffb6b0a400000000, 0xff6d614a00000000,
1063 0xfedac29600000000, 0xfdb5852e00000000, 0xfb6b0a5e00000000,
1064 0xf6d614be00000000, 0xedac297e00000000, 0xdb5852fe00000000,
1065 0xb6b0a5fe00000000, 0x6d614bfe00000000, 0xdac297fc00000000,
1066 0xb5852ffa00000000, 0x6b0a5ff600000000, 0xd614bfec00000000,
1067 0xac297fda00000000
1068};
1069
1070// clang-format off
1071constexpr inline uint64_t AA_SEED___RIGHT_33BITS_ROLL_TABLE[33]{ // NOLINT
1072 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
1073 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
1074 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
1075 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
1076 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__
1077};
1078constexpr inline uint64_t AA_SEED___LEFT_31BITS_ROLL_TABLE[31]{ // NOLINT
1079 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
1080 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
1081 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
1082 AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__, AA_SEED__,
1083 AA_SEED__, AA_SEED__, AA_SEED__
1084};
1085// clang-format on
1086
1087constexpr inline const uint64_t* AA_SEED_RIGHT_33BITS_ROLL_TABLE[ASCII_SIZE] = {
1088 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1089 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1090 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1091 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1092 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 0..7
1093 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1094 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1095 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1096 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1097 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 8..15
1098 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1099 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1100 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1101 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1102 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 16..23
1103 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1104 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1105 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1106 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1107 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 24..31
1108 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1109 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1110 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1111 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1112 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 32..39
1113 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1114 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1115 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1116 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1117 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 40..47
1118 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1119 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1120 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1121 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1122 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 48..55
1123 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1124 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1125 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1126 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1127 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 56..63
1128 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED_A_RIGHT_33BITS_ROLL_TABLE,
1129 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED_C_RIGHT_33BITS_ROLL_TABLE,
1130 AA_SEED_D_RIGHT_33BITS_ROLL_TABLE, AA_SEED_E_RIGHT_33BITS_ROLL_TABLE,
1131 AA_SEED_F_RIGHT_33BITS_ROLL_TABLE,
1132 AA_SEED_G_RIGHT_33BITS_ROLL_TABLE, // 64..71
1133 AA_SEED_H_RIGHT_33BITS_ROLL_TABLE, AA_SEED_I_RIGHT_33BITS_ROLL_TABLE,
1134 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED_K_RIGHT_33BITS_ROLL_TABLE,
1135 AA_SEED_L_RIGHT_33BITS_ROLL_TABLE, AA_SEED_M_RIGHT_33BITS_ROLL_TABLE,
1136 AA_SEED_N_RIGHT_33BITS_ROLL_TABLE,
1137 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 72..79
1138 AA_SEED_P_RIGHT_33BITS_ROLL_TABLE, AA_SEED_Q_RIGHT_33BITS_ROLL_TABLE,
1139 AA_SEED_R_RIGHT_33BITS_ROLL_TABLE, AA_SEED_S_RIGHT_33BITS_ROLL_TABLE,
1140 AA_SEED_T_RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1141 AA_SEED_V_RIGHT_33BITS_ROLL_TABLE,
1142 AA_SEED_W_RIGHT_33BITS_ROLL_TABLE, // 80..87
1143 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED_Y_RIGHT_33BITS_ROLL_TABLE,
1144 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1145 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1146 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1147 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 88..95
1148 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED_A_RIGHT_33BITS_ROLL_TABLE,
1149 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED_C_RIGHT_33BITS_ROLL_TABLE,
1150 AA_SEED_D_RIGHT_33BITS_ROLL_TABLE, AA_SEED_E_RIGHT_33BITS_ROLL_TABLE,
1151 AA_SEED_F_RIGHT_33BITS_ROLL_TABLE,
1152 AA_SEED_G_RIGHT_33BITS_ROLL_TABLE, // 96..103
1153 AA_SEED_H_RIGHT_33BITS_ROLL_TABLE, AA_SEED_I_RIGHT_33BITS_ROLL_TABLE,
1154 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED_K_RIGHT_33BITS_ROLL_TABLE,
1155 AA_SEED_L_RIGHT_33BITS_ROLL_TABLE, AA_SEED_M_RIGHT_33BITS_ROLL_TABLE,
1156 AA_SEED_N_RIGHT_33BITS_ROLL_TABLE,
1157 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 104..111
1158 AA_SEED_P_RIGHT_33BITS_ROLL_TABLE, AA_SEED_Q_RIGHT_33BITS_ROLL_TABLE,
1159 AA_SEED_R_RIGHT_33BITS_ROLL_TABLE, AA_SEED_S_RIGHT_33BITS_ROLL_TABLE,
1160 AA_SEED_T_RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1161 AA_SEED_V_RIGHT_33BITS_ROLL_TABLE,
1162 AA_SEED_W_RIGHT_33BITS_ROLL_TABLE, // 112..119
1163 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED_Y_RIGHT_33BITS_ROLL_TABLE,
1164 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1165 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1166 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1167 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 120..127
1168 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1169 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1170 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1171 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1172 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 128..135
1173 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1174 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1175 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1176 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1177 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 136..143
1178 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1179 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1180 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1181 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1182 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 144..151
1183 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1184 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1185 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1186 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1187 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 152..159
1188 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1189 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1190 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1191 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1192 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 160..167
1193 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1194 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1195 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1196 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1197 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 168..175
1198 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1199 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1200 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1201 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1202 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 176..183
1203 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1204 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1205 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1206 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1207 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 184..191
1208 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1209 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1210 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1211 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1212 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 192..199
1213 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1214 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1215 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1216 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1217 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 200..207
1218 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1219 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1220 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1221 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1222 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 208..215
1223 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1224 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1225 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1226 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1227 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 216..223
1228 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1229 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1230 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1231 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1232 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 224..231
1233 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1234 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1235 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1236 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1237 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 232..239
1238 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1239 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1240 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1241 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1242 AA_SEED___RIGHT_33BITS_ROLL_TABLE, // 240..247
1243 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1244 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1245 AA_SEED___RIGHT_33BITS_ROLL_TABLE, AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1246 AA_SEED___RIGHT_33BITS_ROLL_TABLE,
1247 AA_SEED___RIGHT_33BITS_ROLL_TABLE // 248..255
1248};
1249
1250constexpr inline const uint64_t* AA_SEED_LEFT_31BITS_ROLL_TABLE[ASCII_SIZE] = {
1251 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1252 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1253 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1254 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1255 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 0..7
1256 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1257 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1258 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1259 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1260 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 8..15
1261 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1262 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1263 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1264 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1265 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 16..23
1266 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1267 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1268 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1269 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1270 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 24..31
1271 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1272 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1273 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1274 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1275 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 32..39
1276 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1277 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1278 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1279 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1280 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 40..47
1281 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1282 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1283 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1284 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1285 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 48..55
1286 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1287 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1288 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1289 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1290 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 56..63
1291 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED_A_LEFT_31BITS_ROLL_TABLE,
1292 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED_C_LEFT_31BITS_ROLL_TABLE,
1293 AA_SEED_D_LEFT_31BITS_ROLL_TABLE, AA_SEED_E_LEFT_31BITS_ROLL_TABLE,
1294 AA_SEED_F_LEFT_31BITS_ROLL_TABLE,
1295 AA_SEED_G_LEFT_31BITS_ROLL_TABLE, // 64..71
1296 AA_SEED_H_LEFT_31BITS_ROLL_TABLE, AA_SEED_I_LEFT_31BITS_ROLL_TABLE,
1297 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED_K_LEFT_31BITS_ROLL_TABLE,
1298 AA_SEED_L_LEFT_31BITS_ROLL_TABLE, AA_SEED_M_LEFT_31BITS_ROLL_TABLE,
1299 AA_SEED_N_LEFT_31BITS_ROLL_TABLE,
1300 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 72..79
1301 AA_SEED_P_LEFT_31BITS_ROLL_TABLE, AA_SEED_Q_LEFT_31BITS_ROLL_TABLE,
1302 AA_SEED_R_LEFT_31BITS_ROLL_TABLE, AA_SEED_S_LEFT_31BITS_ROLL_TABLE,
1303 AA_SEED_T_LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1304 AA_SEED_V_LEFT_31BITS_ROLL_TABLE,
1305 AA_SEED_W_LEFT_31BITS_ROLL_TABLE, // 80..87
1306 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED_Y_LEFT_31BITS_ROLL_TABLE,
1307 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1308 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1309 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1310 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 88..95
1311 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED_A_LEFT_31BITS_ROLL_TABLE,
1312 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED_C_LEFT_31BITS_ROLL_TABLE,
1313 AA_SEED_D_LEFT_31BITS_ROLL_TABLE, AA_SEED_E_LEFT_31BITS_ROLL_TABLE,
1314 AA_SEED_F_LEFT_31BITS_ROLL_TABLE,
1315 AA_SEED_G_LEFT_31BITS_ROLL_TABLE, // 96..103
1316 AA_SEED_H_LEFT_31BITS_ROLL_TABLE, AA_SEED_I_LEFT_31BITS_ROLL_TABLE,
1317 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED_K_LEFT_31BITS_ROLL_TABLE,
1318 AA_SEED_L_LEFT_31BITS_ROLL_TABLE, AA_SEED_M_LEFT_31BITS_ROLL_TABLE,
1319 AA_SEED_N_LEFT_31BITS_ROLL_TABLE,
1320 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 104..111
1321 AA_SEED_P_LEFT_31BITS_ROLL_TABLE, AA_SEED_Q_LEFT_31BITS_ROLL_TABLE,
1322 AA_SEED_R_LEFT_31BITS_ROLL_TABLE, AA_SEED_S_LEFT_31BITS_ROLL_TABLE,
1323 AA_SEED_T_LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1324 AA_SEED_V_LEFT_31BITS_ROLL_TABLE,
1325 AA_SEED_W_LEFT_31BITS_ROLL_TABLE, // 112..119
1326 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED_Y_LEFT_31BITS_ROLL_TABLE,
1327 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1328 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1329 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1330 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 120..127
1331 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1332 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1333 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1334 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1335 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 128..135
1336 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1337 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1338 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1339 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1340 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 136..143
1341 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1342 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1343 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1344 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1345 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 144..151
1346 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1347 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1348 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1349 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1350 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 152..159
1351 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1352 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1353 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1354 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1355 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 160..167
1356 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1357 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1358 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1359 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1360 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 168..175
1361 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1362 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1363 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1364 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1365 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 176..183
1366 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1367 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1368 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1369 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1370 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 184..191
1371 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1372 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1373 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1374 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1375 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 192..199
1376 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1377 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1378 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1379 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1380 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 200..207
1381 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1382 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1383 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1384 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1385 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 208..215
1386 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1387 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1388 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1389 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1390 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 216..223
1391 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1392 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1393 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1394 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1395 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 224..231
1396 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1397 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1398 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1399 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1400 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 232..239
1401 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1402 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1403 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1404 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1405 AA_SEED___LEFT_31BITS_ROLL_TABLE, // 240..247
1406 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1407 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1408 AA_SEED___LEFT_31BITS_ROLL_TABLE, AA_SEED___LEFT_31BITS_ROLL_TABLE,
1409 AA_SEED___LEFT_31BITS_ROLL_TABLE,
1410 AA_SEED___LEFT_31BITS_ROLL_TABLE // 248..255
1411};
1412
1413constexpr inline uint64_t LEVEL_2_AA_SEED_C___ = 0x1d07fd644abe9962; // NOLINT
1414constexpr inline uint64_t LEVEL_2_AA_SEED_G___ = 0xf59c50929bdf4360; // NOLINT
1415constexpr inline uint64_t LEVEL_2_AA_SEED_A___ = 0x6f735c82fe9c6c03; // NOLINT
1416constexpr inline uint64_t LEVEL_2_AA_SEED_TS__ = 0xe7392f0ba1dbc3b0; // NOLINT
1417constexpr inline uint64_t LEVEL_2_AA_SEED_N___ = 0x956ddcfcd4b3961f; // NOLINT
1418constexpr inline uint64_t LEVEL_2_AA_SEED_DE__ = 0x4ec0ef1bac4f5efa; // NOLINT
1419constexpr inline uint64_t LEVEL_2_AA_SEED_QKR_ = 0x1cd6ca491872ed78; // NOLINT
1420constexpr inline uint64_t LEVEL_2_AA_SEED_VILM = 0x547ef17894921035; // NOLINT
1421constexpr inline uint64_t LEVEL_2_AA_SEED_WFY_ = 0x419722edb87bf79f; // NOLINT
1422constexpr inline uint64_t LEVEL_2_AA_SEED_H___ = 0xdd5cce5bfdc32de1; // NOLINT
1423constexpr inline uint64_t LEVEL_2_AA_SEED_P___ = 0x90e0c5e0c07d6598; // NOLINT
1424constexpr inline uint64_t LEVEL_2_AA_SEED_____ = AA_SEED__; // NOLINT
1425
1426constexpr inline uint64_t LEVEL_2_AA_SEED_TABLE[ASCII_SIZE] = {
1427 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1428 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1429 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 0..7
1430 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1431 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1432 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 8..15
1433 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1434 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1435 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 16..23
1436 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1437 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1438 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 24..31
1439 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1440 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1441 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 32..39
1442 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1443 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1444 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 40..47
1445 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1446 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1447 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 48..55
1448 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1449 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1450 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 56..63
1451 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_A___, LEVEL_2_AA_SEED_____,
1452 LEVEL_2_AA_SEED_C___, LEVEL_2_AA_SEED_DE__, LEVEL_2_AA_SEED_DE__,
1453 LEVEL_2_AA_SEED_WFY_, LEVEL_2_AA_SEED_G___, // 64..71
1454 LEVEL_2_AA_SEED_H___, LEVEL_2_AA_SEED_VILM, LEVEL_2_AA_SEED_____,
1455 LEVEL_2_AA_SEED_QKR_, LEVEL_2_AA_SEED_VILM, LEVEL_2_AA_SEED_VILM,
1456 LEVEL_2_AA_SEED_N___, LEVEL_2_AA_SEED_____, // 72..79
1457 LEVEL_2_AA_SEED_P___, LEVEL_2_AA_SEED_QKR_, LEVEL_2_AA_SEED_QKR_,
1458 LEVEL_2_AA_SEED_TS__, LEVEL_2_AA_SEED_TS__, LEVEL_2_AA_SEED_____,
1459 LEVEL_2_AA_SEED_VILM, LEVEL_2_AA_SEED_WFY_, // 80..87
1460 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_WFY_, LEVEL_2_AA_SEED_____,
1461 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1462 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 88..95
1463 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_A___, LEVEL_2_AA_SEED_____,
1464 LEVEL_2_AA_SEED_C___, LEVEL_2_AA_SEED_DE__, LEVEL_2_AA_SEED_DE__,
1465 LEVEL_2_AA_SEED_WFY_, LEVEL_2_AA_SEED_G___, // 96..103
1466 LEVEL_2_AA_SEED_H___, LEVEL_2_AA_SEED_VILM, LEVEL_2_AA_SEED_____,
1467 LEVEL_2_AA_SEED_QKR_, LEVEL_2_AA_SEED_VILM, LEVEL_2_AA_SEED_VILM,
1468 LEVEL_2_AA_SEED_N___, LEVEL_2_AA_SEED_____, // 104..111
1469 LEVEL_2_AA_SEED_P___, LEVEL_2_AA_SEED_QKR_, LEVEL_2_AA_SEED_QKR_,
1470 LEVEL_2_AA_SEED_TS__, LEVEL_2_AA_SEED_TS__, LEVEL_2_AA_SEED_____,
1471 LEVEL_2_AA_SEED_VILM, LEVEL_2_AA_SEED_WFY_, // 112..119
1472 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_WFY_, LEVEL_2_AA_SEED_____,
1473 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1474 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 120..127
1475 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1476 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1477 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 128..135
1478 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1479 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1480 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 136..143
1481 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1482 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1483 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 144..151
1484 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1485 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1486 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 152..159
1487 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1488 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1489 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 160..167
1490 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1491 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1492 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 168..175
1493 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1494 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1495 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 176..183
1496 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1497 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1498 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 184..191
1499 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1500 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1501 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 192..199
1502 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1503 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1504 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 200..207
1505 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1506 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1507 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 208..215
1508 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1509 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1510 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 216..223
1511 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1512 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1513 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 224..231
1514 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1515 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1516 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 232..239
1517 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1518 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1519 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, // 240..247
1520 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1521 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____,
1522 LEVEL_2_AA_SEED_____, LEVEL_2_AA_SEED_____ // 248..255
1523};
1524
1525constexpr inline uint64_t
1526 LEVEL_2_AA_SEED_C____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1527 0x4abe9962, 0x957d32c4, 0x12afa6588, 0x55f4cb11, 0xabe99622, 0x157d32c44,
1528 0xafa65889, 0x15f4cb112, 0xbe996225, 0x17d32c44a, 0xfa658895, 0x1f4cb112a,
1529 0x1e9962255, 0x1d32c44ab, 0x1a6588957, 0x14cb112af, 0x9962255f, 0x132c44abe,
1530 0x6588957d, 0xcb112afa, 0x1962255f4, 0x12c44abe9, 0x588957d3, 0xb112afa6,
1531 0x162255f4c, 0xc44abe99, 0x188957d32, 0x1112afa65, 0x2255f4cb, 0x44abe996,
1532 0x8957d32c, 0x112afa658, 0x255f4cb1
1533 };
1534constexpr inline uint64_t
1535 LEVEL_2_AA_SEED_C____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1536 0x1d07fd6400000000, 0x3a0ffac800000000, 0x741ff59000000000,
1537 0xe83feb2000000000, 0xd07fd64200000000, 0xa0ffac8600000000,
1538 0x41ff590e00000000, 0x83feb21c00000000, 0x7fd643a00000000,
1539 0xffac87400000000, 0x1ff590e800000000, 0x3feb21d000000000,
1540 0x7fd643a000000000, 0xffac874000000000, 0xff590e8200000000,
1541 0xfeb21d0600000000, 0xfd643a0e00000000, 0xfac8741e00000000,
1542 0xf590e83e00000000, 0xeb21d07e00000000, 0xd643a0fe00000000,
1543 0xac8741fe00000000, 0x590e83fe00000000, 0xb21d07fc00000000,
1544 0x643a0ffa00000000, 0xc8741ff400000000, 0x90e83fea00000000,
1545 0x21d07fd600000000, 0x43a0ffac00000000, 0x8741ff5800000000,
1546 0xe83feb200000000
1547 };
1548constexpr inline uint64_t
1549 LEVEL_2_AA_SEED_G____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1550 0x9bdf4360, 0x137be86c0, 0x6f7d0d81, 0xdefa1b02, 0x1bdf43604,
1551 0x17be86c09, 0xf7d0d813, 0x1efa1b026, 0x1df43604d, 0x1be86c09b,
1552 0x17d0d8137, 0xfa1b026f, 0x1f43604de, 0x1e86c09bd, 0x1d0d8137b,
1553 0x1a1b026f7, 0x143604def, 0x86c09bdf, 0x10d8137be, 0x1b026f7d,
1554 0x3604defa, 0x6c09bdf4, 0xd8137be8, 0x1b026f7d0, 0x1604defa1,
1555 0xc09bdf43, 0x18137be86, 0x1026f7d0d, 0x4defa1b, 0x9bdf436,
1556 0x137be86c, 0x26f7d0d8, 0x4defa1b0
1557 };
1558constexpr inline uint64_t
1559 LEVEL_2_AA_SEED_G____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1560 0xf59c509200000000, 0xeb38a12600000000, 0xd671424e00000000,
1561 0xace2849e00000000, 0x59c5093e00000000, 0xb38a127c00000000,
1562 0x671424fa00000000, 0xce2849f400000000, 0x9c5093ea00000000,
1563 0x38a127d600000000, 0x71424fac00000000, 0xe2849f5800000000,
1564 0xc5093eb200000000, 0x8a127d6600000000, 0x1424face00000000,
1565 0x2849f59c00000000, 0x5093eb3800000000, 0xa127d67000000000,
1566 0x424face200000000, 0x849f59c400000000, 0x93eb38a00000000,
1567 0x127d671400000000, 0x24face2800000000, 0x49f59c5000000000,
1568 0x93eb38a000000000, 0x27d6714200000000, 0x4face28400000000,
1569 0x9f59c50800000000, 0x3eb38a1200000000, 0x7d67142400000000,
1570 0xface284800000000
1571 };
1572constexpr inline uint64_t
1573 LEVEL_2_AA_SEED_A____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1574 0xfe9c6c03, 0x1fd38d806, 0x1fa71b00d, 0x1f4e3601b, 0x1e9c6c037,
1575 0x1d38d806f, 0x1a71b00df, 0x14e3601bf, 0x9c6c037f, 0x138d806fe,
1576 0x71b00dfd, 0xe3601bfa, 0x1c6c037f4, 0x18d806fe9, 0x11b00dfd3,
1577 0x3601bfa7, 0x6c037f4e, 0xd806fe9c, 0x1b00dfd38, 0x1601bfa71,
1578 0xc037f4e3, 0x1806fe9c6, 0x100dfd38d, 0x1bfa71b, 0x37f4e36,
1579 0x6fe9c6c, 0xdfd38d8, 0x1bfa71b0, 0x37f4e360, 0x6fe9c6c0,
1580 0xdfd38d80, 0x1bfa71b00, 0x17f4e3601
1581 };
1582constexpr inline uint64_t
1583 LEVEL_2_AA_SEED_A____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1584 0x6f735c8200000000, 0xdee6b90400000000, 0xbdcd720a00000000,
1585 0x7b9ae41600000000, 0xf735c82c00000000, 0xee6b905a00000000,
1586 0xdcd720b600000000, 0xb9ae416e00000000, 0x735c82de00000000,
1587 0xe6b905bc00000000, 0xcd720b7a00000000, 0x9ae416f600000000,
1588 0x35c82dee00000000, 0x6b905bdc00000000, 0xd720b7b800000000,
1589 0xae416f7200000000, 0x5c82dee600000000, 0xb905bdcc00000000,
1590 0x720b7b9a00000000, 0xe416f73400000000, 0xc82dee6a00000000,
1591 0x905bdcd600000000, 0x20b7b9ae00000000, 0x416f735c00000000,
1592 0x82dee6b800000000, 0x5bdcd7200000000, 0xb7b9ae400000000,
1593 0x16f735c800000000, 0x2dee6b9000000000, 0x5bdcd72000000000,
1594 0xb7b9ae4000000000
1595 };
1596constexpr inline uint64_t
1597 LEVEL_2_AA_SEED_TS___RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1598 0x1a1dbc3b0, 0x143b78761, 0x876f0ec3, 0x10ede1d86, 0x1dbc3b0d,
1599 0x3b78761a, 0x76f0ec34, 0xede1d868, 0x1dbc3b0d0, 0x1b78761a1,
1600 0x16f0ec343, 0xde1d8687, 0x1bc3b0d0e, 0x178761a1d, 0xf0ec343b,
1601 0x1e1d86876, 0x1c3b0d0ed, 0x18761a1db, 0x10ec343b7, 0x1d86876f,
1602 0x3b0d0ede, 0x761a1dbc, 0xec343b78, 0x1d86876f0, 0x1b0d0ede1,
1603 0x161a1dbc3, 0xc343b787, 0x186876f0e, 0x10d0ede1d, 0x1a1dbc3b,
1604 0x343b7876, 0x6876f0ec, 0xd0ede1d8
1605 };
1606constexpr inline uint64_t
1607 LEVEL_2_AA_SEED_TS___LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1608 0xe7392f0a00000000, 0xce725e1600000000, 0x9ce4bc2e00000000,
1609 0x39c9785e00000000, 0x7392f0bc00000000, 0xe725e17800000000,
1610 0xce4bc2f200000000, 0x9c9785e600000000, 0x392f0bce00000000,
1611 0x725e179c00000000, 0xe4bc2f3800000000, 0xc9785e7200000000,
1612 0x92f0bce600000000, 0x25e179ce00000000, 0x4bc2f39c00000000,
1613 0x9785e73800000000, 0x2f0bce7200000000, 0x5e179ce400000000,
1614 0xbc2f39c800000000, 0x785e739200000000, 0xf0bce72400000000,
1615 0xe179ce4a00000000, 0xc2f39c9600000000, 0x85e7392e00000000,
1616 0xbce725e00000000, 0x179ce4bc00000000, 0x2f39c97800000000,
1617 0x5e7392f000000000, 0xbce725e000000000, 0x79ce4bc200000000,
1618 0xf39c978400000000
1619 };
1620constexpr inline uint64_t
1621 LEVEL_2_AA_SEED_N____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1622 0xd4b3961f, 0x1a9672c3e, 0x152ce587d, 0xa59cb0fb, 0x14b3961f6,
1623 0x9672c3ed, 0x12ce587da, 0x59cb0fb5, 0xb3961f6a, 0x1672c3ed4,
1624 0xce587da9, 0x19cb0fb52, 0x13961f6a5, 0x72c3ed4b, 0xe587da96,
1625 0x1cb0fb52c, 0x1961f6a59, 0x12c3ed4b3, 0x587da967, 0xb0fb52ce,
1626 0x161f6a59c, 0xc3ed4b39, 0x187da9672, 0x10fb52ce5, 0x1f6a59cb,
1627 0x3ed4b396, 0x7da9672c, 0xfb52ce58, 0x1f6a59cb0, 0x1ed4b3961,
1628 0x1da9672c3, 0x1b52ce587, 0x16a59cb0f
1629 };
1630constexpr inline uint64_t
1631 LEVEL_2_AA_SEED_N____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1632 0x956ddcfc00000000, 0x2adbb9fa00000000, 0x55b773f400000000,
1633 0xab6ee7e800000000, 0x56ddcfd200000000, 0xadbb9fa400000000,
1634 0x5b773f4a00000000, 0xb6ee7e9400000000, 0x6ddcfd2a00000000,
1635 0xdbb9fa5400000000, 0xb773f4aa00000000, 0x6ee7e95600000000,
1636 0xddcfd2ac00000000, 0xbb9fa55a00000000, 0x773f4ab600000000,
1637 0xee7e956c00000000, 0xdcfd2ada00000000, 0xb9fa55b600000000,
1638 0x73f4ab6e00000000, 0xe7e956dc00000000, 0xcfd2adba00000000,
1639 0x9fa55b7600000000, 0x3f4ab6ee00000000, 0x7e956ddc00000000,
1640 0xfd2adbb800000000, 0xfa55b77200000000, 0xf4ab6ee600000000,
1641 0xe956ddce00000000, 0xd2adbb9e00000000, 0xa55b773e00000000,
1642 0x4ab6ee7e00000000
1643 };
1644constexpr inline uint64_t
1645 LEVEL_2_AA_SEED_DE___RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1646 0x1ac4f5efa, 0x1589ebdf5, 0xb13d7beb, 0x1627af7d6, 0xc4f5efad,
1647 0x189ebdf5a, 0x113d7beb5, 0x27af7d6b, 0x4f5efad6, 0x9ebdf5ac,
1648 0x13d7beb58, 0x7af7d6b1, 0xf5efad62, 0x1ebdf5ac4, 0x1d7beb589,
1649 0x1af7d6b13, 0x15efad627, 0xbdf5ac4f, 0x17beb589e, 0xf7d6b13d,
1650 0x1efad627a, 0x1df5ac4f5, 0x1beb589eb, 0x17d6b13d7, 0xfad627af,
1651 0x1f5ac4f5e, 0x1eb589ebd, 0x1d6b13d7b, 0x1ad627af7, 0x15ac4f5ef,
1652 0xb589ebdf, 0x16b13d7be, 0xd627af7d
1653 };
1654constexpr inline uint64_t
1655 LEVEL_2_AA_SEED_DE___LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1656 0x4ec0ef1a00000000, 0x9d81de3400000000, 0x3b03bc6a00000000,
1657 0x760778d400000000, 0xec0ef1a800000000, 0xd81de35200000000,
1658 0xb03bc6a600000000, 0x60778d4e00000000, 0xc0ef1a9c00000000,
1659 0x81de353a00000000, 0x3bc6a7600000000, 0x778d4ec00000000,
1660 0xef1a9d800000000, 0x1de353b000000000, 0x3bc6a76000000000,
1661 0x778d4ec000000000, 0xef1a9d8000000000, 0xde353b0200000000,
1662 0xbc6a760600000000, 0x78d4ec0e00000000, 0xf1a9d81c00000000,
1663 0xe353b03a00000000, 0xc6a7607600000000, 0x8d4ec0ee00000000,
1664 0x1a9d81de00000000, 0x353b03bc00000000, 0x6a76077800000000,
1665 0xd4ec0ef000000000, 0xa9d81de200000000, 0x53b03bc600000000,
1666 0xa760778c00000000
1667 };
1668constexpr inline uint64_t
1669 LEVEL_2_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1670 0x11872ed78, 0x30e5daf1, 0x61cbb5e2, 0xc3976bc4, 0x1872ed788,
1671 0x10e5daf11, 0x1cbb5e23, 0x3976bc46, 0x72ed788c, 0xe5daf118,
1672 0x1cbb5e230, 0x1976bc461, 0x12ed788c3, 0x5daf1187, 0xbb5e230e,
1673 0x176bc461c, 0xed788c39, 0x1daf11872, 0x1b5e230e5, 0x16bc461cb,
1674 0xd788c397, 0x1af11872e, 0x15e230e5d, 0xbc461cbb, 0x1788c3976,
1675 0xf11872ed, 0x1e230e5da, 0x1c461cbb5, 0x188c3976b, 0x111872ed7,
1676 0x230e5daf, 0x461cbb5e, 0x8c3976bc
1677 };
1678constexpr inline uint64_t
1679 LEVEL_2_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1680 0x1cd6ca4800000000, 0x39ad949000000000, 0x735b292000000000,
1681 0xe6b6524000000000, 0xcd6ca48200000000, 0x9ad9490600000000,
1682 0x35b2920e00000000, 0x6b65241c00000000, 0xd6ca483800000000,
1683 0xad94907200000000, 0x5b2920e600000000, 0xb65241cc00000000,
1684 0x6ca4839a00000000, 0xd949073400000000, 0xb2920e6a00000000,
1685 0x65241cd600000000, 0xca4839ac00000000, 0x9490735a00000000,
1686 0x2920e6b600000000, 0x5241cd6c00000000, 0xa4839ad800000000,
1687 0x490735b200000000, 0x920e6b6400000000, 0x241cd6ca00000000,
1688 0x4839ad9400000000, 0x90735b2800000000, 0x20e6b65200000000,
1689 0x41cd6ca400000000, 0x839ad94800000000, 0x735b29200000000,
1690 0xe6b652400000000
1691 };
1692constexpr inline uint64_t LEVEL_2_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE[33] = {
1693 0x94921035, 0x12924206a, 0x524840d5, 0xa49081aa, 0x149210354, 0x924206a9,
1694 0x124840d52, 0x49081aa5, 0x9210354a, 0x124206a94, 0x4840d529, 0x9081aa52,
1695 0x1210354a4, 0x4206a949, 0x840d5292, 0x1081aa524, 0x10354a49, 0x206a9492,
1696 0x40d52924, 0x81aa5248, 0x10354a490, 0x6a94921, 0xd529242, 0x1aa52484,
1697 0x354a4908, 0x6a949210, 0xd5292420, 0x1aa524840, 0x154a49081, 0xa9492103,
1698 0x152924206, 0xa524840d, 0x14a49081a
1699};
1700constexpr inline uint64_t LEVEL_2_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE[31] = {
1701 0x547ef17800000000, 0xa8fde2f000000000, 0x51fbc5e200000000,
1702 0xa3f78bc400000000, 0x47ef178a00000000, 0x8fde2f1400000000,
1703 0x1fbc5e2a00000000, 0x3f78bc5400000000, 0x7ef178a800000000,
1704 0xfde2f15000000000, 0xfbc5e2a200000000, 0xf78bc54600000000,
1705 0xef178a8e00000000, 0xde2f151e00000000, 0xbc5e2a3e00000000,
1706 0x78bc547e00000000, 0xf178a8fc00000000, 0xe2f151fa00000000,
1707 0xc5e2a3f600000000, 0x8bc547ee00000000, 0x178a8fde00000000,
1708 0x2f151fbc00000000, 0x5e2a3f7800000000, 0xbc547ef000000000,
1709 0x78a8fde200000000, 0xf151fbc400000000, 0xe2a3f78a00000000,
1710 0xc547ef1600000000, 0x8a8fde2e00000000, 0x151fbc5e00000000,
1711 0x2a3f78bc00000000
1712};
1713constexpr inline uint64_t
1714 LEVEL_2_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1715 0x1b87bf79f, 0x170f7ef3f, 0xe1efde7f, 0x1c3dfbcfe, 0x187bf79fd,
1716 0x10f7ef3fb, 0x1efde7f7, 0x3dfbcfee, 0x7bf79fdc, 0xf7ef3fb8,
1717 0x1efde7f70, 0x1dfbcfee1, 0x1bf79fdc3, 0x17ef3fb87, 0xfde7f70f,
1718 0x1fbcfee1e, 0x1f79fdc3d, 0x1ef3fb87b, 0x1de7f70f7, 0x1bcfee1ef,
1719 0x179fdc3df, 0xf3fb87bf, 0x1e7f70f7e, 0x1cfee1efd, 0x19fdc3dfb,
1720 0x13fb87bf7, 0x7f70f7ef, 0xfee1efde, 0x1fdc3dfbc, 0x1fb87bf79,
1721 0x1f70f7ef3, 0x1ee1efde7, 0x1dc3dfbcf
1722 };
1723constexpr inline uint64_t
1724 LEVEL_2_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1725 0x419722ec00000000, 0x832e45d800000000, 0x65c8bb200000000,
1726 0xcb9176400000000, 0x19722ec800000000, 0x32e45d9000000000,
1727 0x65c8bb2000000000, 0xcb91764000000000, 0x9722ec8200000000,
1728 0x2e45d90600000000, 0x5c8bb20c00000000, 0xb917641800000000,
1729 0x722ec83200000000, 0xe45d906400000000, 0xc8bb20ca00000000,
1730 0x9176419600000000, 0x22ec832e00000000, 0x45d9065c00000000,
1731 0x8bb20cb800000000, 0x1764197200000000, 0x2ec832e400000000,
1732 0x5d9065c800000000, 0xbb20cb9000000000, 0x7641972200000000,
1733 0xec832e4400000000, 0xd9065c8a00000000, 0xb20cb91600000000,
1734 0x6419722e00000000, 0xc832e45c00000000, 0x9065c8ba00000000,
1735 0x20cb917600000000
1736 };
1737constexpr inline uint64_t
1738 LEVEL_2_AA_SEED_H____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1739 0x1fdc32de1, 0x1fb865bc3, 0x1f70cb787, 0x1ee196f0f, 0x1dc32de1f,
1740 0x1b865bc3f, 0x170cb787f, 0xe196f0ff, 0x1c32de1fe, 0x1865bc3fd,
1741 0x10cb787fb, 0x196f0ff7, 0x32de1fee, 0x65bc3fdc, 0xcb787fb8,
1742 0x196f0ff70, 0x12de1fee1, 0x5bc3fdc3, 0xb787fb86, 0x16f0ff70c,
1743 0xde1fee19, 0x1bc3fdc32, 0x1787fb865, 0xf0ff70cb, 0x1e1fee196,
1744 0x1c3fdc32d, 0x187fb865b, 0x10ff70cb7, 0x1fee196f, 0x3fdc32de,
1745 0x7fb865bc, 0xff70cb78, 0x1fee196f0
1746 };
1747constexpr inline uint64_t
1748 LEVEL_2_AA_SEED_H____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1749 0xdd5cce5a00000000, 0xbab99cb600000000, 0x7573396e00000000,
1750 0xeae672dc00000000, 0xd5cce5ba00000000, 0xab99cb7600000000,
1751 0x573396ee00000000, 0xae672ddc00000000, 0x5cce5bba00000000,
1752 0xb99cb77400000000, 0x73396eea00000000, 0xe672ddd400000000,
1753 0xcce5bbaa00000000, 0x99cb775600000000, 0x3396eeae00000000,
1754 0x672ddd5c00000000, 0xce5bbab800000000, 0x9cb7757200000000,
1755 0x396eeae600000000, 0x72ddd5cc00000000, 0xe5bbab9800000000,
1756 0xcb77573200000000, 0x96eeae6600000000, 0x2ddd5cce00000000,
1757 0x5bbab99c00000000, 0xb775733800000000, 0x6eeae67200000000,
1758 0xddd5cce400000000, 0xbbab99ca00000000, 0x7757339600000000,
1759 0xeeae672c00000000
1760 };
1761constexpr inline uint64_t
1762 LEVEL_2_AA_SEED_P____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
1763 0xc07d6598, 0x180facb30, 0x101f59661, 0x3eb2cc3, 0x7d65986, 0xfacb30c,
1764 0x1f596618, 0x3eb2cc30, 0x7d659860, 0xfacb30c0, 0x1f5966180, 0x1eb2cc301,
1765 0x1d6598603, 0x1acb30c07, 0x15966180f, 0xb2cc301f, 0x16598603e, 0xcb30c07d,
1766 0x1966180fa, 0x12cc301f5, 0x598603eb, 0xb30c07d6, 0x166180fac, 0xcc301f59,
1767 0x198603eb2, 0x130c07d65, 0x6180facb, 0xc301f596, 0x18603eb2c, 0x10c07d659,
1768 0x180facb3, 0x301f5966, 0x603eb2cc
1769 };
1770constexpr inline uint64_t
1771 LEVEL_2_AA_SEED_P____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
1772 0x90e0c5e000000000, 0x21c18bc200000000, 0x4383178400000000,
1773 0x87062f0800000000, 0xe0c5e1200000000, 0x1c18bc2400000000,
1774 0x3831784800000000, 0x7062f09000000000, 0xe0c5e12000000000,
1775 0xc18bc24200000000, 0x8317848600000000, 0x62f090e00000000,
1776 0xc5e121c00000000, 0x18bc243800000000, 0x3178487000000000,
1777 0x62f090e000000000, 0xc5e121c000000000, 0x8bc2438200000000,
1778 0x1784870600000000, 0x2f090e0c00000000, 0x5e121c1800000000,
1779 0xbc24383000000000, 0x7848706200000000, 0xf090e0c400000000,
1780 0xe121c18a00000000, 0xc243831600000000, 0x8487062e00000000,
1781 0x90e0c5e00000000, 0x121c18bc00000000, 0x2438317800000000,
1782 0x487062f000000000
1783 };
1784
1785constexpr inline const uint64_t*
1786 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE = // NOLINT
1787 AA_SEED___RIGHT_33BITS_ROLL_TABLE;
1788constexpr inline const uint64_t*
1789 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE = // NOLINT
1790 AA_SEED___LEFT_31BITS_ROLL_TABLE;
1791
1792constexpr inline const uint64_t*
1793 LEVEL_2_AA_SEED_RIGHT_33BITS_ROLL_TABLE[ASCII_SIZE] = {
1794 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1795 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1796 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1797 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1798 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1799 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1800 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1801 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 0..7
1802 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1803 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1804 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1805 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1806 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1807 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1808 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1809 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 8..15
1810 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1811 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1812 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1813 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1814 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1815 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1816 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1817 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 16..23
1818 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1819 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1820 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1821 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1822 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1823 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1824 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1825 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 24..31
1826 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1827 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1828 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1829 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1830 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1831 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1832 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1833 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 32..39
1834 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1835 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1836 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1837 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1838 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1839 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1840 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1841 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 40..47
1842 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1843 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1844 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1845 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1846 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1847 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1848 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1849 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 48..55
1850 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1851 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1852 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1853 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1854 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1855 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1856 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1857 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 56..63
1858 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1859 LEVEL_2_AA_SEED_A____RIGHT_33BITS_ROLL_TABLE,
1860 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1861 LEVEL_2_AA_SEED_C____RIGHT_33BITS_ROLL_TABLE,
1862 LEVEL_2_AA_SEED_DE___RIGHT_33BITS_ROLL_TABLE,
1863 LEVEL_2_AA_SEED_DE___RIGHT_33BITS_ROLL_TABLE,
1864 LEVEL_2_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE,
1865 LEVEL_2_AA_SEED_G____RIGHT_33BITS_ROLL_TABLE, // 64..71
1866 LEVEL_2_AA_SEED_H____RIGHT_33BITS_ROLL_TABLE,
1867 LEVEL_2_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
1868 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1869 LEVEL_2_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
1870 LEVEL_2_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
1871 LEVEL_2_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
1872 LEVEL_2_AA_SEED_N____RIGHT_33BITS_ROLL_TABLE,
1873 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 72..79
1874 LEVEL_2_AA_SEED_P____RIGHT_33BITS_ROLL_TABLE,
1875 LEVEL_2_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
1876 LEVEL_2_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
1877 LEVEL_2_AA_SEED_TS___RIGHT_33BITS_ROLL_TABLE,
1878 LEVEL_2_AA_SEED_TS___RIGHT_33BITS_ROLL_TABLE,
1879 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1880 LEVEL_2_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
1881 LEVEL_2_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE, // 80..87
1882 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1883 LEVEL_2_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE,
1884 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1885 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1886 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1887 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1888 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1889 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 88..95
1890 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1891 LEVEL_2_AA_SEED_A____RIGHT_33BITS_ROLL_TABLE,
1892 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1893 LEVEL_2_AA_SEED_C____RIGHT_33BITS_ROLL_TABLE,
1894 LEVEL_2_AA_SEED_DE___RIGHT_33BITS_ROLL_TABLE,
1895 LEVEL_2_AA_SEED_DE___RIGHT_33BITS_ROLL_TABLE,
1896 LEVEL_2_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE,
1897 LEVEL_2_AA_SEED_G____RIGHT_33BITS_ROLL_TABLE, // 96..103
1898 LEVEL_2_AA_SEED_H____RIGHT_33BITS_ROLL_TABLE,
1899 LEVEL_2_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
1900 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1901 LEVEL_2_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
1902 LEVEL_2_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
1903 LEVEL_2_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
1904 LEVEL_2_AA_SEED_N____RIGHT_33BITS_ROLL_TABLE,
1905 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 104..111
1906 LEVEL_2_AA_SEED_P____RIGHT_33BITS_ROLL_TABLE,
1907 LEVEL_2_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
1908 LEVEL_2_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
1909 LEVEL_2_AA_SEED_TS___RIGHT_33BITS_ROLL_TABLE,
1910 LEVEL_2_AA_SEED_TS___RIGHT_33BITS_ROLL_TABLE,
1911 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1912 LEVEL_2_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
1913 LEVEL_2_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE, // 112..119
1914 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1915 LEVEL_2_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE,
1916 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1917 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1918 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1919 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1920 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1921 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 120..127
1922 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1923 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1924 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1925 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1926 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1927 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1928 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1929 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 128..135
1930 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1931 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1932 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1933 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1934 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1935 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1936 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1937 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 136..143
1938 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1939 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1940 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1941 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1942 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1943 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1944 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1945 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 144..151
1946 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1947 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1948 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1949 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1950 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1951 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1952 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1953 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 152..159
1954 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1955 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1956 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1957 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1958 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1959 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1960 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1961 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 160..167
1962 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1963 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1964 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1965 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1966 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1967 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1968 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1969 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 168..175
1970 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1971 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1972 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1973 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1974 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1975 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1976 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1977 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 176..183
1978 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1979 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1980 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1981 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1982 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1983 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1984 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1985 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 184..191
1986 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1987 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1988 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1989 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1990 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1991 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1992 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1993 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 192..199
1994 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1995 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1996 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1997 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1998 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
1999 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2000 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2001 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 200..207
2002 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2003 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2004 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2005 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2006 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2007 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2008 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2009 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 208..215
2010 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2011 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2012 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2013 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2014 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2015 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2016 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2017 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 216..223
2018 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2019 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2020 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2021 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2022 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2023 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2024 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2025 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 224..231
2026 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2027 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2028 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2029 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2030 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2031 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2032 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2033 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 232..239
2034 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2035 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2036 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2037 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2038 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2039 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2040 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2041 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 240..247
2042 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2043 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2044 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2045 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2046 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2047 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2048 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2049 LEVEL_2_AA_SEED______RIGHT_33BITS_ROLL_TABLE // 248..255
2050 };
2051
2052constexpr inline const uint64_t*
2053 LEVEL_2_AA_SEED_LEFT_31BITS_ROLL_TABLE[ASCII_SIZE] = {
2054 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2055 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2056 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2057 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2058 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2059 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2060 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2061 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 0..7
2062 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2063 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2064 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2065 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2066 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2067 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2068 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2069 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 8..15
2070 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2071 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2072 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2073 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2074 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2075 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2076 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2077 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 16..23
2078 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2079 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2080 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2081 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2082 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2083 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2084 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2085 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 24..31
2086 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2087 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2088 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2089 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2090 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2091 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2092 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2093 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 32..39
2094 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2095 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2096 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2097 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2098 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2099 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2100 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2101 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 40..47
2102 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2103 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2104 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2105 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2106 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2107 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2108 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2109 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 48..55
2110 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2111 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2112 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2113 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2114 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2115 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2116 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2117 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 56..63
2118 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2119 LEVEL_2_AA_SEED_A____LEFT_31BITS_ROLL_TABLE,
2120 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2121 LEVEL_2_AA_SEED_C____LEFT_31BITS_ROLL_TABLE,
2122 LEVEL_2_AA_SEED_DE___LEFT_31BITS_ROLL_TABLE,
2123 LEVEL_2_AA_SEED_DE___LEFT_31BITS_ROLL_TABLE,
2124 LEVEL_2_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE,
2125 LEVEL_2_AA_SEED_G____LEFT_31BITS_ROLL_TABLE, // 64..71
2126 LEVEL_2_AA_SEED_H____LEFT_31BITS_ROLL_TABLE,
2127 LEVEL_2_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2128 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2129 LEVEL_2_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
2130 LEVEL_2_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2131 LEVEL_2_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2132 LEVEL_2_AA_SEED_N____LEFT_31BITS_ROLL_TABLE,
2133 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 72..79
2134 LEVEL_2_AA_SEED_P____LEFT_31BITS_ROLL_TABLE,
2135 LEVEL_2_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
2136 LEVEL_2_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
2137 LEVEL_2_AA_SEED_TS___LEFT_31BITS_ROLL_TABLE,
2138 LEVEL_2_AA_SEED_TS___LEFT_31BITS_ROLL_TABLE,
2139 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2140 LEVEL_2_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2141 LEVEL_2_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE, // 80..87
2142 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2143 LEVEL_2_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE,
2144 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2145 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2146 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2147 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2148 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2149 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 88..95
2150 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2151 LEVEL_2_AA_SEED_A____LEFT_31BITS_ROLL_TABLE,
2152 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2153 LEVEL_2_AA_SEED_C____LEFT_31BITS_ROLL_TABLE,
2154 LEVEL_2_AA_SEED_DE___LEFT_31BITS_ROLL_TABLE,
2155 LEVEL_2_AA_SEED_DE___LEFT_31BITS_ROLL_TABLE,
2156 LEVEL_2_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE,
2157 LEVEL_2_AA_SEED_G____LEFT_31BITS_ROLL_TABLE, // 96..103
2158 LEVEL_2_AA_SEED_H____LEFT_31BITS_ROLL_TABLE,
2159 LEVEL_2_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2160 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2161 LEVEL_2_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
2162 LEVEL_2_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2163 LEVEL_2_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2164 LEVEL_2_AA_SEED_N____LEFT_31BITS_ROLL_TABLE,
2165 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 104..111
2166 LEVEL_2_AA_SEED_P____LEFT_31BITS_ROLL_TABLE,
2167 LEVEL_2_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
2168 LEVEL_2_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
2169 LEVEL_2_AA_SEED_TS___LEFT_31BITS_ROLL_TABLE,
2170 LEVEL_2_AA_SEED_TS___LEFT_31BITS_ROLL_TABLE,
2171 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2172 LEVEL_2_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2173 LEVEL_2_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE, // 112..119
2174 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2175 LEVEL_2_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE,
2176 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2177 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2178 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2179 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2180 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2181 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 120..127
2182 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2183 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2184 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2185 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2186 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2187 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2188 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2189 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 128..135
2190 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2191 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2192 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2193 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2194 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2195 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2196 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2197 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 136..143
2198 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2199 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2200 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2201 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2202 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2203 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2204 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2205 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 144..151
2206 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2207 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2208 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2209 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2210 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2211 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2212 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2213 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 152..159
2214 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2215 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2216 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2217 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2218 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2219 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2220 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2221 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 160..167
2222 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2223 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2224 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2225 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2226 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2227 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2228 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2229 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 168..175
2230 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2231 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2232 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2233 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2234 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2235 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2236 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2237 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 176..183
2238 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2239 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2240 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2241 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2242 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2243 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2244 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2245 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 184..191
2246 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2247 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2248 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2249 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2250 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2251 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2252 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2253 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 192..199
2254 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2255 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2256 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2257 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2258 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2259 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2260 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2261 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 200..207
2262 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2263 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2264 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2265 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2266 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2267 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2268 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2269 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 208..215
2270 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2271 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2272 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2273 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2274 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2275 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2276 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2277 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 216..223
2278 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2279 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2280 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2281 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2282 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2283 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2284 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2285 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 224..231
2286 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2287 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2288 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2289 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2290 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2291 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2292 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2293 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 232..239
2294 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2295 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2296 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2297 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2298 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2299 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2300 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2301 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 240..247
2302 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2303 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2304 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2305 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2306 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2307 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2308 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2309 LEVEL_2_AA_SEED______LEFT_31BITS_ROLL_TABLE // 248..255
2310 };
2311
2312constexpr inline uint64_t LEVEL_3_AA_SEED_C___ = 0x5713e4c10cebbfa3; // NOLINT
2313constexpr inline uint64_t LEVEL_3_AA_SEED_G___ = 0xbe084b869537379b; // NOLINT
2314constexpr inline uint64_t LEVEL_3_AA_SEED_ATS_ = 0x985fd9efa0fe5b82; // NOLINT
2315constexpr inline uint64_t LEVEL_3_AA_SEED_NDE_ = 0x9aca6c4f4ef69df0; // NOLINT
2316constexpr inline uint64_t LEVEL_3_AA_SEED_QKR_ = 0x917de473b721df0e; // NOLINT
2317constexpr inline uint64_t LEVEL_3_AA_SEED_VILM = 0x37cdd84aa07c5bd7;
2318constexpr inline uint64_t LEVEL_3_AA_SEED_WFY_ = 0x51a7955f1a67a896; // NOLINT
2319constexpr inline uint64_t LEVEL_3_AA_SEED_H___ = 0x1d2a0ba493708fbf; // NOLINT
2320constexpr inline uint64_t LEVEL_3_AA_SEED_P___ = 0xfe4c47da16611245; // NOLINT
2321constexpr inline uint64_t LEVEL_3_AA_SEED_____ = AA_SEED__; // NOLINT
2322
2323constexpr inline uint64_t LEVEL_3_AA_SEED_TABLE[ASCII_SIZE] = {
2324 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2325 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2326 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 0..7
2327 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2328 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2329 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 8..15
2330 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2331 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2332 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 16..23
2333 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2334 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2335 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 24..31
2336 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2337 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2338 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 32..39
2339 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2340 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2341 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 40..47
2342 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2343 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2344 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 48..55
2345 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2346 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2347 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 56..63
2348 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_ATS_, LEVEL_3_AA_SEED_____,
2349 LEVEL_3_AA_SEED_C___, LEVEL_3_AA_SEED_NDE_, LEVEL_3_AA_SEED_NDE_,
2350 LEVEL_3_AA_SEED_WFY_, LEVEL_3_AA_SEED_G___, // 64..71
2351 LEVEL_3_AA_SEED_H___, LEVEL_3_AA_SEED_VILM, LEVEL_3_AA_SEED_____,
2352 LEVEL_3_AA_SEED_QKR_, LEVEL_3_AA_SEED_VILM, LEVEL_3_AA_SEED_VILM,
2353 LEVEL_3_AA_SEED_NDE_, LEVEL_3_AA_SEED_____, // 72..79
2354 LEVEL_3_AA_SEED_P___, LEVEL_3_AA_SEED_QKR_, LEVEL_3_AA_SEED_QKR_,
2355 LEVEL_3_AA_SEED_ATS_, LEVEL_3_AA_SEED_ATS_, LEVEL_3_AA_SEED_____,
2356 LEVEL_3_AA_SEED_VILM, LEVEL_3_AA_SEED_WFY_, // 80..87
2357 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_WFY_, LEVEL_3_AA_SEED_____,
2358 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2359 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 88..95
2360 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_ATS_, LEVEL_3_AA_SEED_____,
2361 LEVEL_3_AA_SEED_C___, LEVEL_3_AA_SEED_NDE_, LEVEL_3_AA_SEED_NDE_,
2362 LEVEL_3_AA_SEED_WFY_, LEVEL_3_AA_SEED_G___, // 96..103
2363 LEVEL_3_AA_SEED_H___, LEVEL_3_AA_SEED_VILM, LEVEL_3_AA_SEED_____,
2364 LEVEL_3_AA_SEED_QKR_, LEVEL_3_AA_SEED_VILM, LEVEL_3_AA_SEED_VILM,
2365 LEVEL_3_AA_SEED_NDE_, LEVEL_3_AA_SEED_____, // 104..111
2366 LEVEL_3_AA_SEED_P___, LEVEL_3_AA_SEED_QKR_, LEVEL_3_AA_SEED_QKR_,
2367 LEVEL_3_AA_SEED_ATS_, LEVEL_3_AA_SEED_ATS_, LEVEL_3_AA_SEED_____,
2368 LEVEL_3_AA_SEED_VILM, LEVEL_3_AA_SEED_WFY_, // 112..119
2369 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_WFY_, LEVEL_3_AA_SEED_____,
2370 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2371 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 120..127
2372 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2373 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2374 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 128..135
2375 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2376 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2377 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 136..143
2378 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2379 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2380 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 144..151
2381 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2382 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2383 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 152..159
2384 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2385 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2386 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 160..167
2387 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2388 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2389 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 168..175
2390 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2391 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2392 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 176..183
2393 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2394 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2395 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 184..191
2396 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2397 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2398 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 192..199
2399 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2400 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2401 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 200..207
2402 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2403 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2404 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 208..215
2405 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2406 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2407 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 216..223
2408 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2409 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2410 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 224..231
2411 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2412 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2413 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 232..239
2414 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2415 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2416 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, // 240..247
2417 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2418 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____,
2419 LEVEL_3_AA_SEED_____, LEVEL_3_AA_SEED_____ // 248..255
2420};
2421
2422constexpr inline uint64_t
2423 LEVEL_3_AA_SEED_C____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
2424 0x10cebbfa3, 0x19d77f47, 0x33aefe8e, 0x675dfd1c, 0xcebbfa38,
2425 0x19d77f470, 0x13aefe8e1, 0x75dfd1c3, 0xebbfa386, 0x1d77f470c,
2426 0x1aefe8e19, 0x15dfd1c33, 0xbbfa3867, 0x177f470ce, 0xefe8e19d,
2427 0x1dfd1c33a, 0x1bfa38675, 0x17f470ceb, 0xfe8e19d7, 0x1fd1c33ae,
2428 0x1fa38675d, 0x1f470cebb, 0x1e8e19d77, 0x1d1c33aef, 0x1a38675df,
2429 0x1470cebbf, 0x8e19d77f, 0x11c33aefe, 0x38675dfd, 0x70cebbfa,
2430 0xe19d77f4, 0x1c33aefe8, 0x18675dfd1
2431 };
2432constexpr inline uint64_t
2433 LEVEL_3_AA_SEED_C____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
2434 0x5713e4c000000000, 0xae27c98000000000, 0x5c4f930200000000,
2435 0xb89f260400000000, 0x713e4c0a00000000, 0xe27c981400000000,
2436 0xc4f9302a00000000, 0x89f2605600000000, 0x13e4c0ae00000000,
2437 0x27c9815c00000000, 0x4f9302b800000000, 0x9f26057000000000,
2438 0x3e4c0ae200000000, 0x7c9815c400000000, 0xf9302b8800000000,
2439 0xf260571200000000, 0xe4c0ae2600000000, 0xc9815c4e00000000,
2440 0x9302b89e00000000, 0x2605713e00000000, 0x4c0ae27c00000000,
2441 0x9815c4f800000000, 0x302b89f200000000, 0x605713e400000000,
2442 0xc0ae27c800000000, 0x815c4f9200000000, 0x2b89f2600000000,
2443 0x5713e4c00000000, 0xae27c9800000000, 0x15c4f93000000000,
2444 0x2b89f26000000000
2445 };
2446constexpr inline uint64_t
2447 LEVEL_3_AA_SEED_G____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
2448 0x9537379b, 0x12a6e6f36, 0x54dcde6d, 0xa9b9bcda, 0x1537379b4,
2449 0xa6e6f369, 0x14dcde6d2, 0x9b9bcda5, 0x137379b4a, 0x6e6f3695,
2450 0xdcde6d2a, 0x1b9bcda54, 0x17379b4a9, 0xe6f36953, 0x1cde6d2a6,
2451 0x19bcda54d, 0x1379b4a9b, 0x6f369537, 0xde6d2a6e, 0x1bcda54dc,
2452 0x179b4a9b9, 0xf3695373, 0x1e6d2a6e6, 0x1cda54dcd, 0x19b4a9b9b,
2453 0x136953737, 0x6d2a6e6f, 0xda54dcde, 0x1b4a9b9bc, 0x169537379,
2454 0xd2a6e6f3, 0x1a54dcde6, 0x14a9b9bcd
2455 };
2456constexpr inline uint64_t
2457 LEVEL_3_AA_SEED_G____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
2458 0xbe084b8600000000, 0x7c10970e00000000, 0xf8212e1c00000000,
2459 0xf0425c3a00000000, 0xe084b87600000000, 0xc10970ee00000000,
2460 0x8212e1de00000000, 0x425c3be00000000, 0x84b877c00000000,
2461 0x10970ef800000000, 0x212e1df000000000, 0x425c3be000000000,
2462 0x84b877c000000000, 0x970ef8200000000, 0x12e1df0400000000,
2463 0x25c3be0800000000, 0x4b877c1000000000, 0x970ef82000000000,
2464 0x2e1df04200000000, 0x5c3be08400000000, 0xb877c10800000000,
2465 0x70ef821200000000, 0xe1df042400000000, 0xc3be084a00000000,
2466 0x877c109600000000, 0xef8212e00000000, 0x1df0425c00000000,
2467 0x3be084b800000000, 0x77c1097000000000, 0xef8212e000000000,
2468 0xdf0425c200000000
2469 };
2470constexpr inline uint64_t
2471 LEVEL_3_AA_SEED_ATS__RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
2472 0x1a0fe5b82, 0x141fcb705, 0x83f96e0b, 0x107f2dc16, 0xfe5b82d,
2473 0x1fcb705a, 0x3f96e0b4, 0x7f2dc168, 0xfe5b82d0, 0x1fcb705a0,
2474 0x1f96e0b41, 0x1f2dc1683, 0x1e5b82d07, 0x1cb705a0f, 0x196e0b41f,
2475 0x12dc1683f, 0x5b82d07f, 0xb705a0fe, 0x16e0b41fc, 0xdc1683f9,
2476 0x1b82d07f2, 0x1705a0fe5, 0xe0b41fcb, 0x1c1683f96, 0x182d07f2d,
2477 0x105a0fe5b, 0xb41fcb7, 0x1683f96e, 0x2d07f2dc, 0x5a0fe5b8,
2478 0xb41fcb70, 0x1683f96e0, 0xd07f2dc1
2479 };
2480constexpr inline uint64_t
2481 LEVEL_3_AA_SEED_ATS__LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
2482 0x985fd9ee00000000, 0x30bfb3de00000000, 0x617f67bc00000000,
2483 0xc2fecf7800000000, 0x85fd9ef200000000, 0xbfb3de600000000,
2484 0x17f67bcc00000000, 0x2fecf79800000000, 0x5fd9ef3000000000,
2485 0xbfb3de6000000000, 0x7f67bcc200000000, 0xfecf798400000000,
2486 0xfd9ef30a00000000, 0xfb3de61600000000, 0xf67bcc2e00000000,
2487 0xecf7985e00000000, 0xd9ef30be00000000, 0xb3de617e00000000,
2488 0x67bcc2fe00000000, 0xcf7985fc00000000, 0x9ef30bfa00000000,
2489 0x3de617f600000000, 0x7bcc2fec00000000, 0xf7985fd800000000,
2490 0xef30bfb200000000, 0xde617f6600000000, 0xbcc2fece00000000,
2491 0x7985fd9e00000000, 0xf30bfb3c00000000, 0xe617f67a00000000,
2492 0xcc2fecf600000000
2493 };
2494constexpr inline uint64_t
2495 LEVEL_3_AA_SEED_NDE__RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
2496 0x14ef69df0, 0x9ded3be1, 0x13bda77c2, 0x77b4ef85, 0xef69df0a,
2497 0x1ded3be14, 0x1bda77c29, 0x17b4ef853, 0xf69df0a7, 0x1ed3be14e,
2498 0x1da77c29d, 0x1b4ef853b, 0x169df0a77, 0xd3be14ef, 0x1a77c29de,
2499 0x14ef853bd, 0x9df0a77b, 0x13be14ef6, 0x77c29ded, 0xef853bda,
2500 0x1df0a77b4, 0x1be14ef69, 0x17c29ded3, 0xf853bda7, 0x1f0a77b4e,
2501 0x1e14ef69d, 0x1c29ded3b, 0x1853bda77, 0x10a77b4ef, 0x14ef69df,
2502 0x29ded3be, 0x53bda77c, 0xa77b4ef8
2503 };
2504constexpr inline uint64_t
2505 LEVEL_3_AA_SEED_NDE__LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
2506 0x9aca6c4e00000000, 0x3594d89e00000000, 0x6b29b13c00000000,
2507 0xd653627800000000, 0xaca6c4f200000000, 0x594d89e600000000,
2508 0xb29b13cc00000000, 0x6536279a00000000, 0xca6c4f3400000000,
2509 0x94d89e6a00000000, 0x29b13cd600000000, 0x536279ac00000000,
2510 0xa6c4f35800000000, 0x4d89e6b200000000, 0x9b13cd6400000000,
2511 0x36279aca00000000, 0x6c4f359400000000, 0xd89e6b2800000000,
2512 0xb13cd65200000000, 0x6279aca600000000, 0xc4f3594c00000000,
2513 0x89e6b29a00000000, 0x13cd653600000000, 0x279aca6c00000000,
2514 0x4f3594d800000000, 0x9e6b29b000000000, 0x3cd6536200000000,
2515 0x79aca6c400000000, 0xf3594d8800000000, 0xe6b29b1200000000,
2516 0xcd65362600000000
2517 };
2518constexpr inline uint64_t
2519 LEVEL_3_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
2520 0x1b721df0e, 0x16e43be1d, 0xdc877c3b, 0x1b90ef876, 0x1721df0ed,
2521 0xe43be1db, 0x1c877c3b6, 0x190ef876d, 0x121df0edb, 0x43be1db7,
2522 0x877c3b6e, 0x10ef876dc, 0x1df0edb9, 0x3be1db72, 0x77c3b6e4,
2523 0xef876dc8, 0x1df0edb90, 0x1be1db721, 0x17c3b6e43, 0xf876dc87,
2524 0x1f0edb90e, 0x1e1db721d, 0x1c3b6e43b, 0x1876dc877, 0x10edb90ef,
2525 0x1db721df, 0x3b6e43be, 0x76dc877c, 0xedb90ef8, 0x1db721df0,
2526 0x1b6e43be1, 0x16dc877c3, 0xdb90ef87
2527 };
2528constexpr inline uint64_t
2529 LEVEL_3_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
2530 0x917de47200000000, 0x22fbc8e600000000, 0x45f791cc00000000,
2531 0x8bef239800000000, 0x17de473200000000, 0x2fbc8e6400000000,
2532 0x5f791cc800000000, 0xbef2399000000000, 0x7de4732200000000,
2533 0xfbc8e64400000000, 0xf791cc8a00000000, 0xef23991600000000,
2534 0xde47322e00000000, 0xbc8e645e00000000, 0x791cc8be00000000,
2535 0xf239917c00000000, 0xe47322fa00000000, 0xc8e645f600000000,
2536 0x91cc8bee00000000, 0x239917de00000000, 0x47322fbc00000000,
2537 0x8e645f7800000000, 0x1cc8bef200000000, 0x39917de400000000,
2538 0x7322fbc800000000, 0xe645f79000000000, 0xcc8bef2200000000,
2539 0x9917de4600000000, 0x322fbc8e00000000, 0x645f791c00000000,
2540 0xc8bef23800000000
2541 };
2542constexpr inline uint64_t LEVEL_3_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE[33] = {
2543 0xa07c5bd7, 0x140f8b7ae, 0x81f16f5d, 0x103e2deba, 0x7c5bd75, 0xf8b7aea,
2544 0x1f16f5d4, 0x3e2deba8, 0x7c5bd750, 0xf8b7aea0, 0x1f16f5d40, 0x1e2deba81,
2545 0x1c5bd7503, 0x18b7aea07, 0x116f5d40f, 0x2deba81f, 0x5bd7503e, 0xb7aea07c,
2546 0x16f5d40f8, 0xdeba81f1, 0x1bd7503e2, 0x17aea07c5, 0xf5d40f8b, 0x1eba81f16,
2547 0x1d7503e2d, 0x1aea07c5b, 0x15d40f8b7, 0xba81f16f, 0x17503e2de, 0xea07c5bd,
2548 0x1d40f8b7a, 0x1a81f16f5, 0x1503e2deb
2549};
2550constexpr inline uint64_t LEVEL_3_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE[31] = {
2551 0x37cdd84a00000000, 0x6f9bb09400000000, 0xdf37612800000000,
2552 0xbe6ec25200000000, 0x7cdd84a600000000, 0xf9bb094c00000000,
2553 0xf376129a00000000, 0xe6ec253600000000, 0xcdd84a6e00000000,
2554 0x9bb094de00000000, 0x376129be00000000, 0x6ec2537c00000000,
2555 0xdd84a6f800000000, 0xbb094df200000000, 0x76129be600000000,
2556 0xec2537cc00000000, 0xd84a6f9a00000000, 0xb094df3600000000,
2557 0x6129be6e00000000, 0xc2537cdc00000000, 0x84a6f9ba00000000,
2558 0x94df37600000000, 0x129be6ec00000000, 0x2537cdd800000000,
2559 0x4a6f9bb000000000, 0x94df376000000000, 0x29be6ec200000000,
2560 0x537cdd8400000000, 0xa6f9bb0800000000, 0x4df3761200000000,
2561 0x9be6ec2400000000
2562};
2563constexpr inline uint64_t
2564 LEVEL_3_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
2565 0x11a67a896, 0x34cf512d, 0x699ea25a, 0xd33d44b4, 0x1a67a8968,
2566 0x14cf512d1, 0x99ea25a3, 0x133d44b46, 0x67a8968d, 0xcf512d1a,
2567 0x19ea25a34, 0x13d44b469, 0x7a8968d3, 0xf512d1a6, 0x1ea25a34c,
2568 0x1d44b4699, 0x1a8968d33, 0x1512d1a67, 0xa25a34cf, 0x144b4699e,
2569 0x8968d33d, 0x112d1a67a, 0x25a34cf5, 0x4b4699ea, 0x968d33d4,
2570 0x12d1a67a8, 0x5a34cf51, 0xb4699ea2, 0x168d33d44, 0xd1a67a89,
2571 0x1a34cf512, 0x14699ea25, 0x8d33d44b
2572 };
2573constexpr inline uint64_t
2574 LEVEL_3_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
2575 0x51a7955e00000000, 0xa34f2abc00000000, 0x469e557a00000000,
2576 0x8d3caaf400000000, 0x1a7955ea00000000, 0x34f2abd400000000,
2577 0x69e557a800000000, 0xd3caaf5000000000, 0xa7955ea200000000,
2578 0x4f2abd4600000000, 0x9e557a8c00000000, 0x3caaf51a00000000,
2579 0x7955ea3400000000, 0xf2abd46800000000, 0xe557a8d200000000,
2580 0xcaaf51a600000000, 0x955ea34e00000000, 0x2abd469e00000000,
2581 0x557a8d3c00000000, 0xaaf51a7800000000, 0x55ea34f200000000,
2582 0xabd469e400000000, 0x57a8d3ca00000000, 0xaf51a79400000000,
2583 0x5ea34f2a00000000, 0xbd469e5400000000, 0x7a8d3caa00000000,
2584 0xf51a795400000000, 0xea34f2aa00000000, 0xd469e55600000000,
2585 0xa8d3caae00000000
2586 };
2587constexpr inline uint64_t
2588 LEVEL_3_AA_SEED_H____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
2589 0x93708fbf, 0x126e11f7e, 0x4dc23efd, 0x9b847dfa, 0x13708fbf4,
2590 0x6e11f7e9, 0xdc23efd2, 0x1b847dfa4, 0x1708fbf49, 0xe11f7e93,
2591 0x1c23efd26, 0x1847dfa4d, 0x108fbf49b, 0x11f7e937, 0x23efd26e,
2592 0x47dfa4dc, 0x8fbf49b8, 0x11f7e9370, 0x3efd26e1, 0x7dfa4dc2,
2593 0xfbf49b84, 0x1f7e93708, 0x1efd26e11, 0x1dfa4dc23, 0x1bf49b847,
2594 0x17e93708f, 0xfd26e11f, 0x1fa4dc23e, 0x1f49b847d, 0x1e93708fb,
2595 0x1d26e11f7, 0x1a4dc23ef, 0x149b847df
2596 };
2597constexpr inline uint64_t
2598 LEVEL_3_AA_SEED_H____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
2599 0x1d2a0ba400000000, 0x3a54174800000000, 0x74a82e9000000000,
2600 0xe9505d2000000000, 0xd2a0ba4200000000, 0xa541748600000000,
2601 0x4a82e90e00000000, 0x9505d21c00000000, 0x2a0ba43a00000000,
2602 0x5417487400000000, 0xa82e90e800000000, 0x505d21d200000000,
2603 0xa0ba43a400000000, 0x4174874a00000000, 0x82e90e9400000000,
2604 0x5d21d2a00000000, 0xba43a5400000000, 0x174874a800000000,
2605 0x2e90e95000000000, 0x5d21d2a000000000, 0xba43a54000000000,
2606 0x74874a8200000000, 0xe90e950400000000, 0xd21d2a0a00000000,
2607 0xa43a541600000000, 0x4874a82e00000000, 0x90e9505c00000000,
2608 0x21d2a0ba00000000, 0x43a5417400000000, 0x874a82e800000000,
2609 0xe9505d200000000
2610 };
2611constexpr inline uint64_t
2612 LEVEL_3_AA_SEED_P____RIGHT_33BITS_ROLL_TABLE[33] = { // NOLINT
2613 0x16611245, 0x2cc2248a, 0x59844914, 0xb3089228, 0x166112450, 0xcc2248a1,
2614 0x198449142, 0x130892285, 0x6112450b, 0xc2248a16, 0x18449142c, 0x108922859,
2615 0x112450b3, 0x2248a166, 0x449142cc, 0x89228598, 0x112450b30, 0x248a1661,
2616 0x49142cc2, 0x92285984, 0x12450b308, 0x48a16611, 0x9142cc22, 0x122859844,
2617 0x450b3089, 0x8a166112, 0x1142cc224, 0x28598449, 0x50b30892, 0xa1661124,
2618 0x142cc2248, 0x85984491, 0x10b308922
2619 };
2620constexpr inline uint64_t
2621 LEVEL_3_AA_SEED_P____LEFT_31BITS_ROLL_TABLE[31] = { // NOLINT
2622 0xfe4c47da00000000, 0xfc988fb600000000, 0xf9311f6e00000000,
2623 0xf2623ede00000000, 0xe4c47dbe00000000, 0xc988fb7e00000000,
2624 0x9311f6fe00000000, 0x2623edfe00000000, 0x4c47dbfc00000000,
2625 0x988fb7f800000000, 0x311f6ff200000000, 0x623edfe400000000,
2626 0xc47dbfc800000000, 0x88fb7f9200000000, 0x11f6ff2600000000,
2627 0x23edfe4c00000000, 0x47dbfc9800000000, 0x8fb7f93000000000,
2628 0x1f6ff26200000000, 0x3edfe4c400000000, 0x7dbfc98800000000,
2629 0xfb7f931000000000, 0xf6ff262200000000, 0xedfe4c4600000000,
2630 0xdbfc988e00000000, 0xb7f9311e00000000, 0x6ff2623e00000000,
2631 0xdfe4c47c00000000, 0xbfc988fa00000000, 0x7f9311f600000000,
2632 0xff2623ec00000000
2633 };
2634
2635constexpr inline const uint64_t*
2636 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE = // NOLINT
2637 AA_SEED___RIGHT_33BITS_ROLL_TABLE;
2638constexpr inline const uint64_t*
2639 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE = // NOLINT
2640 AA_SEED___LEFT_31BITS_ROLL_TABLE;
2641
2642constexpr inline const uint64_t*
2643 LEVEL_3_AA_SEED_RIGHT_33BITS_ROLL_TABLE[ASCII_SIZE] = {
2644 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2645 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2646 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2647 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2648 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2649 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2650 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2651 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 0..7
2652 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2653 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2654 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2655 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2656 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2657 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2658 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2659 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 8..15
2660 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2661 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2662 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2663 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2664 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2665 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2666 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2667 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 16..23
2668 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2669 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2670 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2671 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2672 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2673 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2674 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2675 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 24..31
2676 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2677 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2678 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2679 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2680 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2681 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2682 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2683 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 32..39
2684 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2685 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2686 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2687 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2688 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2689 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2690 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2691 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 40..47
2692 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2693 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2694 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2695 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2696 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2697 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2698 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2699 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 48..55
2700 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2701 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2702 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2703 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2704 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2705 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2706 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2707 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 56..63
2708 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2709 LEVEL_3_AA_SEED_ATS__RIGHT_33BITS_ROLL_TABLE,
2710 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2711 LEVEL_3_AA_SEED_C____RIGHT_33BITS_ROLL_TABLE,
2712 LEVEL_3_AA_SEED_NDE__RIGHT_33BITS_ROLL_TABLE,
2713 LEVEL_3_AA_SEED_NDE__RIGHT_33BITS_ROLL_TABLE,
2714 LEVEL_3_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE,
2715 LEVEL_3_AA_SEED_G____RIGHT_33BITS_ROLL_TABLE, // 64..71
2716 LEVEL_3_AA_SEED_H____RIGHT_33BITS_ROLL_TABLE,
2717 LEVEL_3_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
2718 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2719 LEVEL_3_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
2720 LEVEL_3_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
2721 LEVEL_3_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
2722 LEVEL_3_AA_SEED_NDE__RIGHT_33BITS_ROLL_TABLE,
2723 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 72..79
2724 LEVEL_3_AA_SEED_P____RIGHT_33BITS_ROLL_TABLE,
2725 LEVEL_3_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
2726 LEVEL_3_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
2727 LEVEL_3_AA_SEED_ATS__RIGHT_33BITS_ROLL_TABLE,
2728 LEVEL_3_AA_SEED_ATS__RIGHT_33BITS_ROLL_TABLE,
2729 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2730 LEVEL_3_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
2731 LEVEL_3_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE, // 80..87
2732 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2733 LEVEL_3_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE,
2734 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2735 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2736 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2737 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2738 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2739 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 88..95
2740 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2741 LEVEL_3_AA_SEED_ATS__RIGHT_33BITS_ROLL_TABLE,
2742 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2743 LEVEL_3_AA_SEED_C____RIGHT_33BITS_ROLL_TABLE,
2744 LEVEL_3_AA_SEED_NDE__RIGHT_33BITS_ROLL_TABLE,
2745 LEVEL_3_AA_SEED_NDE__RIGHT_33BITS_ROLL_TABLE,
2746 LEVEL_3_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE,
2747 LEVEL_3_AA_SEED_G____RIGHT_33BITS_ROLL_TABLE, // 96..103
2748 LEVEL_3_AA_SEED_H____RIGHT_33BITS_ROLL_TABLE,
2749 LEVEL_3_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
2750 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2751 LEVEL_3_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
2752 LEVEL_3_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
2753 LEVEL_3_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
2754 LEVEL_3_AA_SEED_NDE__RIGHT_33BITS_ROLL_TABLE,
2755 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 104..111
2756 LEVEL_3_AA_SEED_P____RIGHT_33BITS_ROLL_TABLE,
2757 LEVEL_3_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
2758 LEVEL_3_AA_SEED_QKR__RIGHT_33BITS_ROLL_TABLE,
2759 LEVEL_3_AA_SEED_ATS__RIGHT_33BITS_ROLL_TABLE,
2760 LEVEL_3_AA_SEED_ATS__RIGHT_33BITS_ROLL_TABLE,
2761 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2762 LEVEL_3_AA_SEED_VILM_RIGHT_33BITS_ROLL_TABLE,
2763 LEVEL_3_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE, // 112..119
2764 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2765 LEVEL_3_AA_SEED_WFY__RIGHT_33BITS_ROLL_TABLE,
2766 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2767 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2768 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2769 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2770 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2771 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 120..127
2772 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2773 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2774 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2775 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2776 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2777 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2778 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2779 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 128..135
2780 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2781 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2782 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2783 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2784 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2785 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2786 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2787 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 136..143
2788 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2789 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2790 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2791 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2792 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2793 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2794 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2795 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 144..151
2796 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2797 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2798 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2799 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2800 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2801 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2802 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2803 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 152..159
2804 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2805 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2806 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2807 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2808 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2809 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2810 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2811 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 160..167
2812 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2813 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2814 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2815 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2816 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2817 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2818 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2819 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 168..175
2820 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2821 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2822 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2823 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2824 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2825 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2826 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2827 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 176..183
2828 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2829 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2830 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2831 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2832 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2833 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2834 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2835 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 184..191
2836 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2837 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2838 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2839 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2840 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2841 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2842 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2843 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 192..199
2844 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2845 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2846 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2847 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2848 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2849 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2850 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2851 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 200..207
2852 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2853 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2854 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2855 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2856 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2857 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2858 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2859 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 208..215
2860 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2861 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2862 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2863 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2864 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2865 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2866 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2867 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 216..223
2868 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2869 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2870 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2871 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2872 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2873 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2874 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2875 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 224..231
2876 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2877 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2878 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2879 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2880 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2881 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2882 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2883 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 232..239
2884 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2885 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2886 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2887 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2888 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2889 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2890 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2891 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE, // 240..247
2892 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2893 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2894 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2895 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2896 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2897 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2898 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE,
2899 LEVEL_3_AA_SEED______RIGHT_33BITS_ROLL_TABLE // 248..255
2900 };
2901
2902constexpr inline const uint64_t*
2903 LEVEL_3_AA_SEED_LEFT_31BITS_ROLL_TABLE[ASCII_SIZE] = {
2904 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2905 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2906 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2907 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2908 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2909 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2910 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2911 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 0..7
2912 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2913 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2914 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2915 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2916 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2917 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2918 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2919 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 8..15
2920 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2921 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2922 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2923 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2924 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2925 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2926 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2927 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 16..23
2928 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2929 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2930 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2931 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2932 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2933 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2934 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2935 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 24..31
2936 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2937 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2938 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2939 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2940 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2941 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2942 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2943 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 32..39
2944 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2945 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2946 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2947 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2948 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2949 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2950 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2951 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 40..47
2952 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2953 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2954 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2955 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2956 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2957 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2958 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2959 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 48..55
2960 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2961 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2962 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2963 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2964 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2965 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2966 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2967 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 56..63
2968 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2969 LEVEL_3_AA_SEED_ATS__LEFT_31BITS_ROLL_TABLE,
2970 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2971 LEVEL_3_AA_SEED_C____LEFT_31BITS_ROLL_TABLE,
2972 LEVEL_3_AA_SEED_NDE__LEFT_31BITS_ROLL_TABLE,
2973 LEVEL_3_AA_SEED_NDE__LEFT_31BITS_ROLL_TABLE,
2974 LEVEL_3_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE,
2975 LEVEL_3_AA_SEED_G____LEFT_31BITS_ROLL_TABLE, // 64..71
2976 LEVEL_3_AA_SEED_H____LEFT_31BITS_ROLL_TABLE,
2977 LEVEL_3_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2978 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2979 LEVEL_3_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
2980 LEVEL_3_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2981 LEVEL_3_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2982 LEVEL_3_AA_SEED_NDE__LEFT_31BITS_ROLL_TABLE,
2983 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 72..79
2984 LEVEL_3_AA_SEED_P____LEFT_31BITS_ROLL_TABLE,
2985 LEVEL_3_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
2986 LEVEL_3_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
2987 LEVEL_3_AA_SEED_ATS__LEFT_31BITS_ROLL_TABLE,
2988 LEVEL_3_AA_SEED_ATS__LEFT_31BITS_ROLL_TABLE,
2989 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2990 LEVEL_3_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
2991 LEVEL_3_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE, // 80..87
2992 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2993 LEVEL_3_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE,
2994 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2995 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2996 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2997 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2998 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
2999 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 88..95
3000 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3001 LEVEL_3_AA_SEED_ATS__LEFT_31BITS_ROLL_TABLE,
3002 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3003 LEVEL_3_AA_SEED_C____LEFT_31BITS_ROLL_TABLE,
3004 LEVEL_3_AA_SEED_NDE__LEFT_31BITS_ROLL_TABLE,
3005 LEVEL_3_AA_SEED_NDE__LEFT_31BITS_ROLL_TABLE,
3006 LEVEL_3_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE,
3007 LEVEL_3_AA_SEED_G____LEFT_31BITS_ROLL_TABLE, // 96..103
3008 LEVEL_3_AA_SEED_H____LEFT_31BITS_ROLL_TABLE,
3009 LEVEL_3_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
3010 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3011 LEVEL_3_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
3012 LEVEL_3_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
3013 LEVEL_3_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
3014 LEVEL_3_AA_SEED_NDE__LEFT_31BITS_ROLL_TABLE,
3015 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 104..111
3016 LEVEL_3_AA_SEED_P____LEFT_31BITS_ROLL_TABLE,
3017 LEVEL_3_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
3018 LEVEL_3_AA_SEED_QKR__LEFT_31BITS_ROLL_TABLE,
3019 LEVEL_3_AA_SEED_ATS__LEFT_31BITS_ROLL_TABLE,
3020 LEVEL_3_AA_SEED_ATS__LEFT_31BITS_ROLL_TABLE,
3021 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3022 LEVEL_3_AA_SEED_VILM_LEFT_31BITS_ROLL_TABLE,
3023 LEVEL_3_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE, // 112..119
3024 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3025 LEVEL_3_AA_SEED_WFY__LEFT_31BITS_ROLL_TABLE,
3026 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3027 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3028 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3029 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3030 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3031 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 120..127
3032 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3033 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3034 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3035 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3036 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3037 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3038 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3039 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 128..135
3040 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3041 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3042 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3043 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3044 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3045 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3046 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3047 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 136..143
3048 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3049 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3050 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3051 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3052 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3053 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3054 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3055 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 144..151
3056 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3057 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3058 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3059 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3060 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3061 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3062 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3063 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 152..159
3064 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3065 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3066 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3067 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3068 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3069 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3070 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3071 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 160..167
3072 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3073 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3074 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3075 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3076 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3077 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3078 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3079 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 168..175
3080 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3081 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3082 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3083 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3084 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3085 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3086 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3087 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 176..183
3088 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3089 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3090 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3091 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3092 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3093 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3094 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3095 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 184..191
3096 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3097 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3098 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3099 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3100 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3101 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3102 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3103 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 192..199
3104 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3105 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3106 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3107 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3108 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3109 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3110 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3111 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 200..207
3112 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3113 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3114 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3115 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3116 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3117 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3118 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3119 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 208..215
3120 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3121 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3122 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3123 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3124 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3125 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3126 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3127 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 216..223
3128 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3129 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3130 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3131 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3132 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3133 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3134 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3135 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 224..231
3136 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3137 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3138 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3139 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3140 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3141 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3142 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3143 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 232..239
3144 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3145 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3146 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3147 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3148 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3149 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3150 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3151 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE, // 240..247
3152 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3153 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3154 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3155 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3156 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3157 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3158 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE,
3159 LEVEL_3_AA_SEED______LEFT_31BITS_ROLL_TABLE // 248..255
3160 };
3161
3162constexpr inline const uint64_t* const LEVEL_X_AA_SEED_TABLE[4] = {
3163 nullptr,
3164 AA_SEED_TABLE,
3165 LEVEL_2_AA_SEED_TABLE,
3166 LEVEL_3_AA_SEED_TABLE
3167};
3168constexpr inline const uint64_t* const*
3169 LEVEL_X_AA_SEED_RIGHT_33BITS_ROLL_TABLE[4] = {
3170 nullptr,
3171 AA_SEED_RIGHT_33BITS_ROLL_TABLE,
3172 LEVEL_2_AA_SEED_RIGHT_33BITS_ROLL_TABLE,
3173 LEVEL_3_AA_SEED_RIGHT_33BITS_ROLL_TABLE
3174 };
3175constexpr inline const uint64_t* const*
3176 LEVEL_X_AA_SEED_LEFT_31BITS_ROLL_TABLE[4] = {
3177 nullptr,
3178 AA_SEED_LEFT_31BITS_ROLL_TABLE,
3179 LEVEL_2_AA_SEED_LEFT_31BITS_ROLL_TABLE,
3180 LEVEL_3_AA_SEED_LEFT_31BITS_ROLL_TABLE
3181 };
3182
3183} // namespace btllib::hashing_internals