Skip to main content

rhdl_ubft/kv/
tabulation.rs

1//! Exact upstream tabulation constants; see PROVENANCE.md and LICENSE-ETH-BSD-3-Clause.
2use rhdl::prelude::*;
3/// Upstream constants indexed by bank, key-bit value, then key-bit position.
4/// Addresses use only the low six bits; provenance and license are adjacent.
5pub const TABULATION: [[[u16; 64]; 2]; 9] = [
6    [
7        [
8            0, 538, 3094, 1878, 2182, 896, 192, 2780, 2782, 3828, 1570, 2127, 3403, 141, 218, 2169,
9            2749, 31, 1570, 273, 1710, 2813, 2412, 3811, 3465, 2158, 376, 2678, 1703, 2872, 3728,
10            3121, 1075, 194, 3014, 1344, 2591, 3098, 4059, 1496, 1011, 4024, 2960, 3085, 2668, 297,
11            2587, 3623, 1117, 1787, 3139, 1956, 973, 1126, 1471, 682, 1992, 3676, 3724, 248, 3705,
12            2066, 2114, 1306,
13        ],
14        [
15            4041, 2023, 1090, 371, 3882, 302, 2050, 1573, 1134, 3743, 2169, 1902, 3854, 205, 3119,
16            3154, 3390, 513, 64, 2819, 3556, 2578, 3015, 2971, 4093, 3639, 955, 1254, 1437, 2102,
17            2421, 3465, 1687, 3446, 1103, 1701, 2200, 1916, 1176, 730, 629, 2341, 3286, 135, 2189,
18            2041, 3913, 3065, 2271, 3648, 2559, 3449, 654, 871, 2927, 534, 372, 1124, 12, 1696,
19            110, 2907, 3841, 982,
20        ],
21    ],
22    [
23        [
24            740, 1300, 3633, 2670, 615, 2790, 1580, 1588, 2046, 604, 2405, 3463, 2417, 3913, 2277,
25            606, 4027, 1674, 580, 2313, 1032, 2000, 1900, 3936, 516, 818, 1307, 2577, 519, 2667,
26            2546, 3289, 1015, 1951, 1594, 832, 116, 3693, 1746, 581, 3880, 1680, 537, 3627, 377,
27            664, 291, 1496, 1036, 553, 3207, 1864, 1431, 1852, 3313, 3816, 2669, 881, 2783, 3722,
28            1024, 3526, 1930, 2072,
29        ],
30        [
31            2459, 3348, 3095, 1893, 3896, 2591, 1799, 3377, 2822, 2876, 4043, 3909, 3486, 1185,
32            2201, 2107, 423, 1695, 2362, 3590, 1802, 2989, 3560, 2931, 3279, 2893, 3038, 78, 3629,
33            2150, 1897, 267, 2922, 2002, 2734, 2793, 817, 3754, 3546, 3645, 2228, 570, 1844, 4052,
34            882, 1826, 1293, 2108, 3610, 1801, 1915, 3304, 1495, 866, 4092, 629, 2582, 2524, 2, 3,
35            3167, 2979, 1307, 1710,
36        ],
37    ],
38    [
39        [
40            2795, 2787, 840, 3425, 2903, 3394, 387, 334, 3129, 2578, 875, 874, 332, 1592, 3900,
41            3881, 1596, 1102, 2835, 1163, 3182, 3210, 1730, 1155, 794, 46, 785, 4027, 999, 3357,
42            558, 1630, 2461, 724, 3392, 646, 4046, 1053, 956, 416, 898, 2599, 2850, 3255, 2851,
43            3084, 2742, 2594, 231, 2450, 929, 1305, 2866, 481, 3123, 2155, 2268, 2408, 1350, 2879,
44            585, 662, 1987, 3523,
45        ],
46        [
47            3331, 2280, 3026, 1294, 554, 2164, 1272, 2408, 2122, 1764, 1060, 1516, 1609, 1830,
48            1949, 1588, 1143, 320, 1514, 1040, 2751, 2769, 2105, 2984, 2952, 3869, 1887, 3850,
49            1317, 1885, 2118, 2708, 1645, 2480, 4040, 616, 2744, 1408, 2218, 2141, 3396, 61, 1123,
50            2633, 2236, 3759, 1092, 3973, 1010, 3456, 2842, 1866, 3346, 90, 658, 2895, 2899, 1788,
51            2385, 3079, 4061, 2849, 1144, 3087,
52        ],
53    ],
54    [
55        [
56            701, 17, 2030, 327, 667, 3699, 3207, 3058, 1787, 25, 2395, 2123, 273, 2228, 1596, 884,
57            1580, 2567, 2699, 2905, 2206, 1148, 3342, 1523, 2810, 1270, 38, 425, 2133, 3178, 903,
58            226, 289, 656, 2964, 1216, 207, 1957, 1872, 2129, 1828, 615, 1171, 3414, 2849, 2366,
59            2790, 1356, 235, 4042, 2221, 6, 3506, 120, 1546, 2005, 2360, 3026, 2782, 2196, 145,
60            501, 3986, 771,
61        ],
62        [
63            1439, 2515, 2488, 515, 2264, 3907, 1461, 3432, 3990, 1060, 1030, 1738, 3330, 3677,
64            1001, 3115, 2846, 1850, 1079, 2725, 477, 858, 465, 2240, 24, 720, 2454, 1769, 337,
65            2815, 1537, 3425, 506, 3986, 121, 329, 2024, 3151, 3825, 1024, 1473, 3150, 2047, 3068,
66            2752, 2792, 3099, 148, 944, 907, 2304, 2673, 2525, 1521, 920, 957, 2674, 679, 3047,
67            654, 195, 2711, 511, 3887,
68        ],
69    ],
70    [
71        [
72            1983, 2543, 3743, 73, 2431, 2956, 2034, 219, 1808, 2126, 3161, 267, 1813, 4002, 1915,
73            1347, 1826, 3044, 841, 701, 1525, 3849, 3952, 1044, 288, 507, 2155, 655, 2120, 430,
74            3447, 1509, 1736, 1340, 2922, 2362, 3571, 3105, 3426, 2866, 1593, 3830, 2480, 1483,
75            2209, 1863, 1645, 984, 340, 1726, 1934, 1186, 429, 886, 3285, 2160, 2739, 3537, 998,
76            2914, 1079, 1568, 331, 1883,
77        ],
78        [
79            953, 3257, 2012, 13, 1090, 2722, 1741, 765, 3946, 549, 3259, 3875, 701, 2482, 261,
80            1423, 1197, 2087, 3382, 3417, 2975, 1349, 3285, 2587, 185, 169, 627, 3141, 252, 2127,
81            3805, 903, 837, 364, 2865, 2893, 2026, 1072, 2914, 1549, 821, 952, 1786, 1923, 3527,
82            4002, 1820, 140, 2145, 129, 3085, 2423, 3370, 1349, 950, 2197, 1763, 1653, 4044, 3960,
83            3483, 3553, 1276, 607,
84        ],
85    ],
86    [
87        [
88            4086, 2619, 1917, 3817, 2829, 3339, 2218, 2346, 652, 3871, 3364, 636, 168, 1407, 450,
89            395, 2124, 91, 2299, 3509, 2117, 2762, 3019, 2860, 93, 786, 2748, 1416, 271, 576, 3772,
90            907, 1556, 2400, 685, 107, 2830, 3122, 2923, 316, 2415, 3790, 3808, 1763, 2072, 3404,
91            3765, 2464, 2964, 2127, 2010, 661, 3998, 2352, 1119, 2176, 2861, 2732, 399, 2247, 2501,
92            2735, 2028, 2341,
93        ],
94        [
95            2412, 1807, 619, 2057, 2995, 129, 211, 2138, 1313, 143, 1004, 439, 1568, 2260, 2446,
96            2503, 3830, 3162, 2101, 1993, 2662, 2854, 1669, 1994, 1965, 2910, 2188, 1133, 2480,
97            1147, 2881, 2172, 3843, 964, 1693, 2447, 3207, 3769, 2791, 3363, 2160, 943, 588, 3684,
98            1029, 2668, 19, 3833, 1127, 3517, 1142, 3901, 2075, 503, 1705, 2877, 1787, 441, 3138,
99            409, 1807, 1411, 1216, 3103,
100        ],
101    ],
102    [
103        [
104            1386, 1354, 227, 2347, 1987, 829, 468, 3990, 3541, 2014, 1504, 3296, 664, 653, 236,
105            611, 1917, 1558, 3619, 1737, 1688, 2667, 1262, 246, 3335, 3676, 3766, 3691, 3154, 699,
106            2344, 128, 3290, 2138, 3529, 1135, 3561, 2403, 1594, 3325, 2153, 3849, 1720, 2375,
107            3068, 3607, 1384, 776, 3043, 2944, 3601, 298, 2908, 3600, 1472, 368, 659, 1707, 394,
108            2763, 2304, 3330, 3597, 3151,
109        ],
110        [
111            2601, 3672, 3597, 1992, 463, 1546, 1567, 2816, 498, 314, 586, 1956, 2902, 974, 1601,
112            3997, 2575, 2790, 3722, 1484, 3519, 3253, 1756, 301, 2042, 1981, 1846, 2046, 3034,
113            3820, 1229, 598, 450, 328, 3983, 1671, 976, 3945, 3413, 811, 530, 804, 1389, 2357,
114            1803, 2398, 1773, 1508, 1565, 2458, 1759, 609, 2745, 4077, 2859, 1649, 3478, 3356,
115            3249, 1532, 39, 1965, 2617, 2648,
116        ],
117    ],
118    [
119        [
120            2641, 3272, 1545, 1465, 1595, 1369, 2840, 593, 1194, 2731, 3499, 1289, 590, 2466, 22,
121            3771, 1564, 2115, 1410, 1081, 1191, 3414, 509, 2599, 199, 1876, 1543, 638, 3095, 2727,
122            47, 3255, 2297, 1182, 1702, 1313, 2107, 2945, 3449, 949, 1904, 1529, 204, 302, 829,
123            2319, 3405, 1730, 3438, 1200, 742, 1464, 3826, 2414, 1511, 1896, 2571, 3868, 1662, 206,
124            1822, 2440, 3065, 3539,
125        ],
126        [
127            536, 428, 2725, 3413, 2380, 2697, 4022, 77, 3774, 797, 3963, 2142, 1141, 2948, 2418,
128            3428, 3418, 2702, 2991, 2633, 1431, 2190, 2720, 1324, 3560, 1811, 3760, 1133, 3898,
129            480, 1703, 3425, 3942, 1363, 2155, 2195, 3350, 3808, 2715, 996, 3856, 2444, 516, 1011,
130            3632, 803, 667, 3424, 2467, 2552, 3435, 2751, 1603, 3568, 2733, 473, 0, 2769, 2575,
131            1861, 2352, 132, 1439, 3502,
132        ],
133    ],
134    [
135        [
136            1518, 2709, 2361, 245, 3049, 1144, 1812, 722, 376, 3675, 4064, 2433, 135, 2830, 1995,
137            2332, 3668, 1779, 2820, 832, 1973, 1115, 3879, 1000, 3904, 1953, 520, 3938, 3510, 890,
138            28, 3205, 206, 3932, 2627, 2348, 561, 528, 3377, 2055, 2686, 2068, 2156, 484, 3698,
139            2739, 1136, 1583, 1603, 3404, 995, 505, 2983, 2654, 824, 3476, 92, 432, 769, 1478,
140            3193, 2945, 2729, 2379,
141        ],
142        [
143            1438, 643, 1196, 692, 916, 2749, 1657, 3631, 2373, 1400, 1790, 2865, 3417, 3243, 3477,
144            1155, 1084, 696, 2185, 299, 4090, 3072, 500, 674, 1741, 3167, 874, 1777, 135, 3806,
145            434, 1090, 1974, 3247, 1054, 876, 1156, 1559, 852, 3803, 3129, 2525, 2358, 1459, 3718,
146            810, 467, 3240, 2859, 74, 3063, 469, 3665, 2681, 1416, 1566, 880, 1356, 72, 3745, 3217,
147            1611, 2990, 3406,
148        ],
149    ],
150];
151/// Nine six-bit addresses formed by XORing the constants selected by key bits.
152/// This fixed affine mapping is neither cryptographic nor resistant to
153/// adversarial collision sets; the reference tests verify the expanded logic.
154#[kernel]
155pub fn hashes(key: b64) -> [b6; 9] {
156    let mut out = [b6(0); 9];
157    out[0] = out[0]
158        ^ if (key & b64(1)) != b64(0) {
159            b6(9)
160        } else {
161            b6(0)
162        };
163    out[0] = out[0]
164        ^ if (key & b64(2)) != b64(0) {
165            b6(39)
166        } else {
167            b6(26)
168        };
169    out[0] = out[0]
170        ^ if (key & b64(4)) != b64(0) {
171            b6(2)
172        } else {
173            b6(22)
174        };
175    out[0] = out[0]
176        ^ if (key & b64(8)) != b64(0) {
177            b6(51)
178        } else {
179            b6(22)
180        };
181    out[0] = out[0]
182        ^ if (key & b64(16)) != b64(0) {
183            b6(42)
184        } else {
185            b6(6)
186        };
187    out[0] = out[0]
188        ^ if (key & b64(32)) != b64(0) {
189            b6(46)
190        } else {
191            b6(0)
192        };
193    out[0] = out[0]
194        ^ if (key & b64(64)) != b64(0) {
195            b6(2)
196        } else {
197            b6(0)
198        };
199    out[0] = out[0]
200        ^ if (key & b64(128)) != b64(0) {
201            b6(37)
202        } else {
203            b6(28)
204        };
205    out[0] = out[0]
206        ^ if (key & b64(256)) != b64(0) {
207            b6(46)
208        } else {
209            b6(30)
210        };
211    out[0] = out[0]
212        ^ if (key & b64(512)) != b64(0) {
213            b6(31)
214        } else {
215            b6(52)
216        };
217    out[0] = out[0]
218        ^ if (key & b64(1024)) != b64(0) {
219            b6(57)
220        } else {
221            b6(34)
222        };
223    out[0] = out[0]
224        ^ if (key & b64(2048)) != b64(0) {
225            b6(46)
226        } else {
227            b6(15)
228        };
229    out[0] = out[0]
230        ^ if (key & b64(4096)) != b64(0) {
231            b6(14)
232        } else {
233            b6(11)
234        };
235    out[0] = out[0]
236        ^ if (key & b64(8192)) != b64(0) {
237            b6(13)
238        } else {
239            b6(13)
240        };
241    out[0] = out[0]
242        ^ if (key & b64(16384)) != b64(0) {
243            b6(47)
244        } else {
245            b6(26)
246        };
247    out[0] = out[0]
248        ^ if (key & b64(32768)) != b64(0) {
249            b6(18)
250        } else {
251            b6(57)
252        };
253    out[0] = out[0]
254        ^ if (key & b64(65536)) != b64(0) {
255            b6(62)
256        } else {
257            b6(61)
258        };
259    out[0] = out[0]
260        ^ if (key & b64(131072)) != b64(0) {
261            b6(1)
262        } else {
263            b6(31)
264        };
265    out[0] = out[0]
266        ^ if (key & b64(262144)) != b64(0) {
267            b6(0)
268        } else {
269            b6(34)
270        };
271    out[0] = out[0]
272        ^ if (key & b64(524288)) != b64(0) {
273            b6(3)
274        } else {
275            b6(17)
276        };
277    out[0] = out[0]
278        ^ if (key & b64(1048576)) != b64(0) {
279            b6(36)
280        } else {
281            b6(46)
282        };
283    out[0] = out[0]
284        ^ if (key & b64(2097152)) != b64(0) {
285            b6(18)
286        } else {
287            b6(61)
288        };
289    out[0] = out[0]
290        ^ if (key & b64(4194304)) != b64(0) {
291            b6(7)
292        } else {
293            b6(44)
294        };
295    out[0] = out[0]
296        ^ if (key & b64(8388608)) != b64(0) {
297            b6(27)
298        } else {
299            b6(35)
300        };
301    out[0] = out[0]
302        ^ if (key & b64(16777216)) != b64(0) {
303            b6(61)
304        } else {
305            b6(9)
306        };
307    out[0] = out[0]
308        ^ if (key & b64(33554432)) != b64(0) {
309            b6(55)
310        } else {
311            b6(46)
312        };
313    out[0] = out[0]
314        ^ if (key & b64(67108864)) != b64(0) {
315            b6(59)
316        } else {
317            b6(56)
318        };
319    out[0] = out[0]
320        ^ if (key & b64(134217728)) != b64(0) {
321            b6(38)
322        } else {
323            b6(54)
324        };
325    out[0] = out[0]
326        ^ if (key & b64(268435456)) != b64(0) {
327            b6(29)
328        } else {
329            b6(39)
330        };
331    out[0] = out[0]
332        ^ if (key & b64(536870912)) != b64(0) {
333            b6(54)
334        } else {
335            b6(56)
336        };
337    out[0] = out[0]
338        ^ if (key & b64(1073741824)) != b64(0) {
339            b6(53)
340        } else {
341            b6(16)
342        };
343    out[0] = out[0]
344        ^ if (key & b64(2147483648)) != b64(0) {
345            b6(9)
346        } else {
347            b6(49)
348        };
349    out[0] = out[0]
350        ^ if (key & b64(4294967296)) != b64(0) {
351            b6(23)
352        } else {
353            b6(51)
354        };
355    out[0] = out[0]
356        ^ if (key & b64(8589934592)) != b64(0) {
357            b6(54)
358        } else {
359            b6(2)
360        };
361    out[0] = out[0]
362        ^ if (key & b64(17179869184)) != b64(0) {
363            b6(15)
364        } else {
365            b6(6)
366        };
367    out[0] = out[0]
368        ^ if (key & b64(34359738368)) != b64(0) {
369            b6(37)
370        } else {
371            b6(0)
372        };
373    out[0] = out[0]
374        ^ if (key & b64(68719476736)) != b64(0) {
375            b6(24)
376        } else {
377            b6(31)
378        };
379    out[0] = out[0]
380        ^ if (key & b64(137438953472)) != b64(0) {
381            b6(60)
382        } else {
383            b6(26)
384        };
385    out[0] = out[0]
386        ^ if (key & b64(274877906944)) != b64(0) {
387            b6(24)
388        } else {
389            b6(27)
390        };
391    out[0] = out[0]
392        ^ if (key & b64(549755813888)) != b64(0) {
393            b6(26)
394        } else {
395            b6(24)
396        };
397    out[0] = out[0]
398        ^ if (key & b64(1099511627776)) != b64(0) {
399            b6(53)
400        } else {
401            b6(51)
402        };
403    out[0] = out[0]
404        ^ if (key & b64(2199023255552)) != b64(0) {
405            b6(37)
406        } else {
407            b6(56)
408        };
409    out[0] = out[0]
410        ^ if (key & b64(4398046511104)) != b64(0) {
411            b6(22)
412        } else {
413            b6(16)
414        };
415    out[0] = out[0]
416        ^ if (key & b64(8796093022208)) != b64(0) {
417            b6(7)
418        } else {
419            b6(13)
420        };
421    out[0] = out[0]
422        ^ if (key & b64(17592186044416)) != b64(0) {
423            b6(13)
424        } else {
425            b6(44)
426        };
427    out[0] = out[0]
428        ^ if (key & b64(35184372088832)) != b64(0) {
429            b6(57)
430        } else {
431            b6(41)
432        };
433    out[0] = out[0]
434        ^ if (key & b64(70368744177664)) != b64(0) {
435            b6(9)
436        } else {
437            b6(27)
438        };
439    out[0] = out[0]
440        ^ if (key & b64(140737488355328)) != b64(0) {
441            b6(57)
442        } else {
443            b6(39)
444        };
445    out[0] = out[0]
446        ^ if (key & b64(281474976710656)) != b64(0) {
447            b6(31)
448        } else {
449            b6(29)
450        };
451    out[0] = out[0]
452        ^ if (key & b64(562949953421312)) != b64(0) {
453            b6(0)
454        } else {
455            b6(59)
456        };
457    out[0] = out[0]
458        ^ if (key & b64(1125899906842624)) != b64(0) {
459            b6(63)
460        } else {
461            b6(3)
462        };
463    out[0] = out[0]
464        ^ if (key & b64(2251799813685248)) != b64(0) {
465            b6(57)
466        } else {
467            b6(36)
468        };
469    out[0] = out[0]
470        ^ if (key & b64(4503599627370496)) != b64(0) {
471            b6(14)
472        } else {
473            b6(13)
474        };
475    out[0] = out[0]
476        ^ if (key & b64(9007199254740992)) != b64(0) {
477            b6(39)
478        } else {
479            b6(38)
480        };
481    out[0] = out[0]
482        ^ if (key & b64(18014398509481984)) != b64(0) {
483            b6(47)
484        } else {
485            b6(63)
486        };
487    out[0] = out[0]
488        ^ if (key & b64(36028797018963968)) != b64(0) {
489            b6(22)
490        } else {
491            b6(42)
492        };
493    out[0] = out[0]
494        ^ if (key & b64(72057594037927936)) != b64(0) {
495            b6(52)
496        } else {
497            b6(8)
498        };
499    out[0] = out[0]
500        ^ if (key & b64(144115188075855872)) != b64(0) {
501            b6(36)
502        } else {
503            b6(28)
504        };
505    out[0] = out[0]
506        ^ if (key & b64(288230376151711744)) != b64(0) {
507            b6(12)
508        } else {
509            b6(12)
510        };
511    out[0] = out[0]
512        ^ if (key & b64(576460752303423488)) != b64(0) {
513            b6(32)
514        } else {
515            b6(56)
516        };
517    out[0] = out[0]
518        ^ if (key & b64(1152921504606846976)) != b64(0) {
519            b6(46)
520        } else {
521            b6(57)
522        };
523    out[0] = out[0]
524        ^ if (key & b64(2305843009213693952)) != b64(0) {
525            b6(27)
526        } else {
527            b6(18)
528        };
529    out[0] = out[0]
530        ^ if (key & b64(4611686018427387904)) != b64(0) {
531            b6(1)
532        } else {
533            b6(2)
534        };
535    out[0] = out[0]
536        ^ if (key & b64(9223372036854775808)) != b64(0) {
537            b6(22)
538        } else {
539            b6(26)
540        };
541    out[1] = out[1]
542        ^ if (key & b64(1)) != b64(0) {
543            b6(27)
544        } else {
545            b6(36)
546        };
547    out[1] = out[1]
548        ^ if (key & b64(2)) != b64(0) {
549            b6(20)
550        } else {
551            b6(20)
552        };
553    out[1] = out[1]
554        ^ if (key & b64(4)) != b64(0) {
555            b6(23)
556        } else {
557            b6(49)
558        };
559    out[1] = out[1]
560        ^ if (key & b64(8)) != b64(0) {
561            b6(37)
562        } else {
563            b6(46)
564        };
565    out[1] = out[1]
566        ^ if (key & b64(16)) != b64(0) {
567            b6(56)
568        } else {
569            b6(39)
570        };
571    out[1] = out[1]
572        ^ if (key & b64(32)) != b64(0) {
573            b6(31)
574        } else {
575            b6(38)
576        };
577    out[1] = out[1]
578        ^ if (key & b64(64)) != b64(0) {
579            b6(7)
580        } else {
581            b6(44)
582        };
583    out[1] = out[1]
584        ^ if (key & b64(128)) != b64(0) {
585            b6(49)
586        } else {
587            b6(52)
588        };
589    out[1] = out[1]
590        ^ if (key & b64(256)) != b64(0) {
591            b6(6)
592        } else {
593            b6(62)
594        };
595    out[1] = out[1]
596        ^ if (key & b64(512)) != b64(0) {
597            b6(60)
598        } else {
599            b6(28)
600        };
601    out[1] = out[1]
602        ^ if (key & b64(1024)) != b64(0) {
603            b6(11)
604        } else {
605            b6(37)
606        };
607    out[1] = out[1]
608        ^ if (key & b64(2048)) != b64(0) {
609            b6(5)
610        } else {
611            b6(7)
612        };
613    out[1] = out[1]
614        ^ if (key & b64(4096)) != b64(0) {
615            b6(30)
616        } else {
617            b6(49)
618        };
619    out[1] = out[1]
620        ^ if (key & b64(8192)) != b64(0) {
621            b6(33)
622        } else {
623            b6(9)
624        };
625    out[1] = out[1]
626        ^ if (key & b64(16384)) != b64(0) {
627            b6(25)
628        } else {
629            b6(37)
630        };
631    out[1] = out[1]
632        ^ if (key & b64(32768)) != b64(0) {
633            b6(59)
634        } else {
635            b6(30)
636        };
637    out[1] = out[1]
638        ^ if (key & b64(65536)) != b64(0) {
639            b6(39)
640        } else {
641            b6(59)
642        };
643    out[1] = out[1]
644        ^ if (key & b64(131072)) != b64(0) {
645            b6(31)
646        } else {
647            b6(10)
648        };
649    out[1] = out[1]
650        ^ if (key & b64(262144)) != b64(0) {
651            b6(58)
652        } else {
653            b6(4)
654        };
655    out[1] = out[1]
656        ^ if (key & b64(524288)) != b64(0) {
657            b6(6)
658        } else {
659            b6(9)
660        };
661    out[1] = out[1]
662        ^ if (key & b64(1048576)) != b64(0) {
663            b6(10)
664        } else {
665            b6(8)
666        };
667    out[1] = out[1]
668        ^ if (key & b64(2097152)) != b64(0) {
669            b6(45)
670        } else {
671            b6(16)
672        };
673    out[1] = out[1]
674        ^ if (key & b64(4194304)) != b64(0) {
675            b6(40)
676        } else {
677            b6(44)
678        };
679    out[1] = out[1]
680        ^ if (key & b64(8388608)) != b64(0) {
681            b6(51)
682        } else {
683            b6(32)
684        };
685    out[1] = out[1]
686        ^ if (key & b64(16777216)) != b64(0) {
687            b6(15)
688        } else {
689            b6(4)
690        };
691    out[1] = out[1]
692        ^ if (key & b64(33554432)) != b64(0) {
693            b6(13)
694        } else {
695            b6(50)
696        };
697    out[1] = out[1]
698        ^ if (key & b64(67108864)) != b64(0) {
699            b6(30)
700        } else {
701            b6(27)
702        };
703    out[1] = out[1]
704        ^ if (key & b64(134217728)) != b64(0) {
705            b6(14)
706        } else {
707            b6(17)
708        };
709    out[1] = out[1]
710        ^ if (key & b64(268435456)) != b64(0) {
711            b6(45)
712        } else {
713            b6(7)
714        };
715    out[1] = out[1]
716        ^ if (key & b64(536870912)) != b64(0) {
717            b6(38)
718        } else {
719            b6(43)
720        };
721    out[1] = out[1]
722        ^ if (key & b64(1073741824)) != b64(0) {
723            b6(41)
724        } else {
725            b6(50)
726        };
727    out[1] = out[1]
728        ^ if (key & b64(2147483648)) != b64(0) {
729            b6(11)
730        } else {
731            b6(25)
732        };
733    out[1] = out[1]
734        ^ if (key & b64(4294967296)) != b64(0) {
735            b6(42)
736        } else {
737            b6(55)
738        };
739    out[1] = out[1]
740        ^ if (key & b64(8589934592)) != b64(0) {
741            b6(18)
742        } else {
743            b6(31)
744        };
745    out[1] = out[1]
746        ^ if (key & b64(17179869184)) != b64(0) {
747            b6(46)
748        } else {
749            b6(58)
750        };
751    out[1] = out[1]
752        ^ if (key & b64(34359738368)) != b64(0) {
753            b6(41)
754        } else {
755            b6(0)
756        };
757    out[1] = out[1]
758        ^ if (key & b64(68719476736)) != b64(0) {
759            b6(49)
760        } else {
761            b6(52)
762        };
763    out[1] = out[1]
764        ^ if (key & b64(137438953472)) != b64(0) {
765            b6(42)
766        } else {
767            b6(45)
768        };
769    out[1] = out[1]
770        ^ if (key & b64(274877906944)) != b64(0) {
771            b6(26)
772        } else {
773            b6(18)
774        };
775    out[1] = out[1]
776        ^ if (key & b64(549755813888)) != b64(0) {
777            b6(61)
778        } else {
779            b6(5)
780        };
781    out[1] = out[1]
782        ^ if (key & b64(1099511627776)) != b64(0) {
783            b6(52)
784        } else {
785            b6(40)
786        };
787    out[1] = out[1]
788        ^ if (key & b64(2199023255552)) != b64(0) {
789            b6(58)
790        } else {
791            b6(16)
792        };
793    out[1] = out[1]
794        ^ if (key & b64(4398046511104)) != b64(0) {
795            b6(52)
796        } else {
797            b6(25)
798        };
799    out[1] = out[1]
800        ^ if (key & b64(8796093022208)) != b64(0) {
801            b6(20)
802        } else {
803            b6(43)
804        };
805    out[1] = out[1]
806        ^ if (key & b64(17592186044416)) != b64(0) {
807            b6(50)
808        } else {
809            b6(57)
810        };
811    out[1] = out[1]
812        ^ if (key & b64(35184372088832)) != b64(0) {
813            b6(34)
814        } else {
815            b6(24)
816        };
817    out[1] = out[1]
818        ^ if (key & b64(70368744177664)) != b64(0) {
819            b6(13)
820        } else {
821            b6(35)
822        };
823    out[1] = out[1]
824        ^ if (key & b64(140737488355328)) != b64(0) {
825            b6(60)
826        } else {
827            b6(24)
828        };
829    out[1] = out[1]
830        ^ if (key & b64(281474976710656)) != b64(0) {
831            b6(26)
832        } else {
833            b6(12)
834        };
835    out[1] = out[1]
836        ^ if (key & b64(562949953421312)) != b64(0) {
837            b6(9)
838        } else {
839            b6(41)
840        };
841    out[1] = out[1]
842        ^ if (key & b64(1125899906842624)) != b64(0) {
843            b6(59)
844        } else {
845            b6(7)
846        };
847    out[1] = out[1]
848        ^ if (key & b64(2251799813685248)) != b64(0) {
849            b6(40)
850        } else {
851            b6(8)
852        };
853    out[1] = out[1]
854        ^ if (key & b64(4503599627370496)) != b64(0) {
855            b6(23)
856        } else {
857            b6(23)
858        };
859    out[1] = out[1]
860        ^ if (key & b64(9007199254740992)) != b64(0) {
861            b6(34)
862        } else {
863            b6(60)
864        };
865    out[1] = out[1]
866        ^ if (key & b64(18014398509481984)) != b64(0) {
867            b6(60)
868        } else {
869            b6(49)
870        };
871    out[1] = out[1]
872        ^ if (key & b64(36028797018963968)) != b64(0) {
873            b6(53)
874        } else {
875            b6(40)
876        };
877    out[1] = out[1]
878        ^ if (key & b64(72057594037927936)) != b64(0) {
879            b6(22)
880        } else {
881            b6(45)
882        };
883    out[1] = out[1]
884        ^ if (key & b64(144115188075855872)) != b64(0) {
885            b6(28)
886        } else {
887            b6(49)
888        };
889    out[1] = out[1]
890        ^ if (key & b64(288230376151711744)) != b64(0) {
891            b6(2)
892        } else {
893            b6(31)
894        };
895    out[1] = out[1]
896        ^ if (key & b64(576460752303423488)) != b64(0) {
897            b6(3)
898        } else {
899            b6(10)
900        };
901    out[1] = out[1]
902        ^ if (key & b64(1152921504606846976)) != b64(0) {
903            b6(31)
904        } else {
905            b6(0)
906        };
907    out[1] = out[1]
908        ^ if (key & b64(2305843009213693952)) != b64(0) {
909            b6(35)
910        } else {
911            b6(6)
912        };
913    out[1] = out[1]
914        ^ if (key & b64(4611686018427387904)) != b64(0) {
915            b6(27)
916        } else {
917            b6(10)
918        };
919    out[1] = out[1]
920        ^ if (key & b64(9223372036854775808)) != b64(0) {
921            b6(46)
922        } else {
923            b6(24)
924        };
925    out[2] = out[2]
926        ^ if (key & b64(1)) != b64(0) {
927            b6(3)
928        } else {
929            b6(43)
930        };
931    out[2] = out[2]
932        ^ if (key & b64(2)) != b64(0) {
933            b6(40)
934        } else {
935            b6(35)
936        };
937    out[2] = out[2]
938        ^ if (key & b64(4)) != b64(0) {
939            b6(18)
940        } else {
941            b6(8)
942        };
943    out[2] = out[2]
944        ^ if (key & b64(8)) != b64(0) {
945            b6(14)
946        } else {
947            b6(33)
948        };
949    out[2] = out[2]
950        ^ if (key & b64(16)) != b64(0) {
951            b6(42)
952        } else {
953            b6(23)
954        };
955    out[2] = out[2]
956        ^ if (key & b64(32)) != b64(0) {
957            b6(52)
958        } else {
959            b6(2)
960        };
961    out[2] = out[2]
962        ^ if (key & b64(64)) != b64(0) {
963            b6(56)
964        } else {
965            b6(3)
966        };
967    out[2] = out[2]
968        ^ if (key & b64(128)) != b64(0) {
969            b6(40)
970        } else {
971            b6(14)
972        };
973    out[2] = out[2]
974        ^ if (key & b64(256)) != b64(0) {
975            b6(10)
976        } else {
977            b6(57)
978        };
979    out[2] = out[2]
980        ^ if (key & b64(512)) != b64(0) {
981            b6(36)
982        } else {
983            b6(18)
984        };
985    out[2] = out[2]
986        ^ if (key & b64(1024)) != b64(0) {
987            b6(36)
988        } else {
989            b6(43)
990        };
991    out[2] = out[2]
992        ^ if (key & b64(2048)) != b64(0) {
993            b6(44)
994        } else {
995            b6(42)
996        };
997    out[2] = out[2]
998        ^ if (key & b64(4096)) != b64(0) {
999            b6(9)
1000        } else {
1001            b6(12)
1002        };
1003    out[2] = out[2]
1004        ^ if (key & b64(8192)) != b64(0) {
1005            b6(38)
1006        } else {
1007            b6(56)
1008        };
1009    out[2] = out[2]
1010        ^ if (key & b64(16384)) != b64(0) {
1011            b6(29)
1012        } else {
1013            b6(60)
1014        };
1015    out[2] = out[2]
1016        ^ if (key & b64(32768)) != b64(0) {
1017            b6(52)
1018        } else {
1019            b6(41)
1020        };
1021    out[2] = out[2]
1022        ^ if (key & b64(65536)) != b64(0) {
1023            b6(55)
1024        } else {
1025            b6(60)
1026        };
1027    out[2] = out[2]
1028        ^ if (key & b64(131072)) != b64(0) {
1029            b6(0)
1030        } else {
1031            b6(14)
1032        };
1033    out[2] = out[2]
1034        ^ if (key & b64(262144)) != b64(0) {
1035            b6(42)
1036        } else {
1037            b6(19)
1038        };
1039    out[2] = out[2]
1040        ^ if (key & b64(524288)) != b64(0) {
1041            b6(16)
1042        } else {
1043            b6(11)
1044        };
1045    out[2] = out[2]
1046        ^ if (key & b64(1048576)) != b64(0) {
1047            b6(63)
1048        } else {
1049            b6(46)
1050        };
1051    out[2] = out[2]
1052        ^ if (key & b64(2097152)) != b64(0) {
1053            b6(17)
1054        } else {
1055            b6(10)
1056        };
1057    out[2] = out[2]
1058        ^ if (key & b64(4194304)) != b64(0) {
1059            b6(57)
1060        } else {
1061            b6(2)
1062        };
1063    out[2] = out[2]
1064        ^ if (key & b64(8388608)) != b64(0) {
1065            b6(40)
1066        } else {
1067            b6(3)
1068        };
1069    out[2] = out[2]
1070        ^ if (key & b64(16777216)) != b64(0) {
1071            b6(8)
1072        } else {
1073            b6(26)
1074        };
1075    out[2] = out[2]
1076        ^ if (key & b64(33554432)) != b64(0) {
1077            b6(29)
1078        } else {
1079            b6(46)
1080        };
1081    out[2] = out[2]
1082        ^ if (key & b64(67108864)) != b64(0) {
1083            b6(31)
1084        } else {
1085            b6(17)
1086        };
1087    out[2] = out[2]
1088        ^ if (key & b64(134217728)) != b64(0) {
1089            b6(10)
1090        } else {
1091            b6(59)
1092        };
1093    out[2] = out[2]
1094        ^ if (key & b64(268435456)) != b64(0) {
1095            b6(37)
1096        } else {
1097            b6(39)
1098        };
1099    out[2] = out[2]
1100        ^ if (key & b64(536870912)) != b64(0) {
1101            b6(29)
1102        } else {
1103            b6(29)
1104        };
1105    out[2] = out[2]
1106        ^ if (key & b64(1073741824)) != b64(0) {
1107            b6(6)
1108        } else {
1109            b6(46)
1110        };
1111    out[2] = out[2]
1112        ^ if (key & b64(2147483648)) != b64(0) {
1113            b6(20)
1114        } else {
1115            b6(30)
1116        };
1117    out[2] = out[2]
1118        ^ if (key & b64(4294967296)) != b64(0) {
1119            b6(45)
1120        } else {
1121            b6(29)
1122        };
1123    out[2] = out[2]
1124        ^ if (key & b64(8589934592)) != b64(0) {
1125            b6(48)
1126        } else {
1127            b6(20)
1128        };
1129    out[2] = out[2]
1130        ^ if (key & b64(17179869184)) != b64(0) {
1131            b6(8)
1132        } else {
1133            b6(0)
1134        };
1135    out[2] = out[2]
1136        ^ if (key & b64(34359738368)) != b64(0) {
1137            b6(40)
1138        } else {
1139            b6(6)
1140        };
1141    out[2] = out[2]
1142        ^ if (key & b64(68719476736)) != b64(0) {
1143            b6(56)
1144        } else {
1145            b6(14)
1146        };
1147    out[2] = out[2]
1148        ^ if (key & b64(137438953472)) != b64(0) {
1149            b6(0)
1150        } else {
1151            b6(29)
1152        };
1153    out[2] = out[2]
1154        ^ if (key & b64(274877906944)) != b64(0) {
1155            b6(42)
1156        } else {
1157            b6(60)
1158        };
1159    out[2] = out[2]
1160        ^ if (key & b64(549755813888)) != b64(0) {
1161            b6(29)
1162        } else {
1163            b6(32)
1164        };
1165    out[2] = out[2]
1166        ^ if (key & b64(1099511627776)) != b64(0) {
1167            b6(4)
1168        } else {
1169            b6(2)
1170        };
1171    out[2] = out[2]
1172        ^ if (key & b64(2199023255552)) != b64(0) {
1173            b6(61)
1174        } else {
1175            b6(39)
1176        };
1177    out[2] = out[2]
1178        ^ if (key & b64(4398046511104)) != b64(0) {
1179            b6(35)
1180        } else {
1181            b6(34)
1182        };
1183    out[2] = out[2]
1184        ^ if (key & b64(8796093022208)) != b64(0) {
1185            b6(9)
1186        } else {
1187            b6(55)
1188        };
1189    out[2] = out[2]
1190        ^ if (key & b64(17592186044416)) != b64(0) {
1191            b6(60)
1192        } else {
1193            b6(35)
1194        };
1195    out[2] = out[2]
1196        ^ if (key & b64(35184372088832)) != b64(0) {
1197            b6(47)
1198        } else {
1199            b6(12)
1200        };
1201    out[2] = out[2]
1202        ^ if (key & b64(70368744177664)) != b64(0) {
1203            b6(4)
1204        } else {
1205            b6(54)
1206        };
1207    out[2] = out[2]
1208        ^ if (key & b64(140737488355328)) != b64(0) {
1209            b6(5)
1210        } else {
1211            b6(34)
1212        };
1213    out[2] = out[2]
1214        ^ if (key & b64(281474976710656)) != b64(0) {
1215            b6(50)
1216        } else {
1217            b6(39)
1218        };
1219    out[2] = out[2]
1220        ^ if (key & b64(562949953421312)) != b64(0) {
1221            b6(0)
1222        } else {
1223            b6(18)
1224        };
1225    out[2] = out[2]
1226        ^ if (key & b64(1125899906842624)) != b64(0) {
1227            b6(26)
1228        } else {
1229            b6(33)
1230        };
1231    out[2] = out[2]
1232        ^ if (key & b64(2251799813685248)) != b64(0) {
1233            b6(10)
1234        } else {
1235            b6(25)
1236        };
1237    out[2] = out[2]
1238        ^ if (key & b64(4503599627370496)) != b64(0) {
1239            b6(18)
1240        } else {
1241            b6(50)
1242        };
1243    out[2] = out[2]
1244        ^ if (key & b64(9007199254740992)) != b64(0) {
1245            b6(26)
1246        } else {
1247            b6(33)
1248        };
1249    out[2] = out[2]
1250        ^ if (key & b64(18014398509481984)) != b64(0) {
1251            b6(18)
1252        } else {
1253            b6(51)
1254        };
1255    out[2] = out[2]
1256        ^ if (key & b64(36028797018963968)) != b64(0) {
1257            b6(15)
1258        } else {
1259            b6(43)
1260        };
1261    out[2] = out[2]
1262        ^ if (key & b64(72057594037927936)) != b64(0) {
1263            b6(19)
1264        } else {
1265            b6(28)
1266        };
1267    out[2] = out[2]
1268        ^ if (key & b64(144115188075855872)) != b64(0) {
1269            b6(60)
1270        } else {
1271            b6(40)
1272        };
1273    out[2] = out[2]
1274        ^ if (key & b64(288230376151711744)) != b64(0) {
1275            b6(17)
1276        } else {
1277            b6(6)
1278        };
1279    out[2] = out[2]
1280        ^ if (key & b64(576460752303423488)) != b64(0) {
1281            b6(7)
1282        } else {
1283            b6(63)
1284        };
1285    out[2] = out[2]
1286        ^ if (key & b64(1152921504606846976)) != b64(0) {
1287            b6(29)
1288        } else {
1289            b6(9)
1290        };
1291    out[2] = out[2]
1292        ^ if (key & b64(2305843009213693952)) != b64(0) {
1293            b6(33)
1294        } else {
1295            b6(22)
1296        };
1297    out[2] = out[2]
1298        ^ if (key & b64(4611686018427387904)) != b64(0) {
1299            b6(56)
1300        } else {
1301            b6(3)
1302        };
1303    out[2] = out[2]
1304        ^ if (key & b64(9223372036854775808)) != b64(0) {
1305            b6(15)
1306        } else {
1307            b6(3)
1308        };
1309    out[3] = out[3]
1310        ^ if (key & b64(1)) != b64(0) {
1311            b6(31)
1312        } else {
1313            b6(61)
1314        };
1315    out[3] = out[3]
1316        ^ if (key & b64(2)) != b64(0) {
1317            b6(19)
1318        } else {
1319            b6(17)
1320        };
1321    out[3] = out[3]
1322        ^ if (key & b64(4)) != b64(0) {
1323            b6(56)
1324        } else {
1325            b6(46)
1326        };
1327    out[3] = out[3]
1328        ^ if (key & b64(8)) != b64(0) {
1329            b6(3)
1330        } else {
1331            b6(7)
1332        };
1333    out[3] = out[3]
1334        ^ if (key & b64(16)) != b64(0) {
1335            b6(24)
1336        } else {
1337            b6(27)
1338        };
1339    out[3] = out[3]
1340        ^ if (key & b64(32)) != b64(0) {
1341            b6(3)
1342        } else {
1343            b6(51)
1344        };
1345    out[3] = out[3]
1346        ^ if (key & b64(64)) != b64(0) {
1347            b6(53)
1348        } else {
1349            b6(7)
1350        };
1351    out[3] = out[3]
1352        ^ if (key & b64(128)) != b64(0) {
1353            b6(40)
1354        } else {
1355            b6(50)
1356        };
1357    out[3] = out[3]
1358        ^ if (key & b64(256)) != b64(0) {
1359            b6(22)
1360        } else {
1361            b6(59)
1362        };
1363    out[3] = out[3]
1364        ^ if (key & b64(512)) != b64(0) {
1365            b6(36)
1366        } else {
1367            b6(25)
1368        };
1369    out[3] = out[3]
1370        ^ if (key & b64(1024)) != b64(0) {
1371            b6(6)
1372        } else {
1373            b6(27)
1374        };
1375    out[3] = out[3]
1376        ^ if (key & b64(2048)) != b64(0) {
1377            b6(10)
1378        } else {
1379            b6(11)
1380        };
1381    out[3] = out[3]
1382        ^ if (key & b64(4096)) != b64(0) {
1383            b6(2)
1384        } else {
1385            b6(17)
1386        };
1387    out[3] = out[3]
1388        ^ if (key & b64(8192)) != b64(0) {
1389            b6(29)
1390        } else {
1391            b6(52)
1392        };
1393    out[3] = out[3]
1394        ^ if (key & b64(16384)) != b64(0) {
1395            b6(41)
1396        } else {
1397            b6(60)
1398        };
1399    out[3] = out[3]
1400        ^ if (key & b64(32768)) != b64(0) {
1401            b6(43)
1402        } else {
1403            b6(52)
1404        };
1405    out[3] = out[3]
1406        ^ if (key & b64(65536)) != b64(0) {
1407            b6(30)
1408        } else {
1409            b6(44)
1410        };
1411    out[3] = out[3]
1412        ^ if (key & b64(131072)) != b64(0) {
1413            b6(58)
1414        } else {
1415            b6(7)
1416        };
1417    out[3] = out[3]
1418        ^ if (key & b64(262144)) != b64(0) {
1419            b6(55)
1420        } else {
1421            b6(11)
1422        };
1423    out[3] = out[3]
1424        ^ if (key & b64(524288)) != b64(0) {
1425            b6(37)
1426        } else {
1427            b6(25)
1428        };
1429    out[3] = out[3]
1430        ^ if (key & b64(1048576)) != b64(0) {
1431            b6(29)
1432        } else {
1433            b6(30)
1434        };
1435    out[3] = out[3]
1436        ^ if (key & b64(2097152)) != b64(0) {
1437            b6(26)
1438        } else {
1439            b6(60)
1440        };
1441    out[3] = out[3]
1442        ^ if (key & b64(4194304)) != b64(0) {
1443            b6(17)
1444        } else {
1445            b6(14)
1446        };
1447    out[3] = out[3]
1448        ^ if (key & b64(8388608)) != b64(0) {
1449            b6(0)
1450        } else {
1451            b6(51)
1452        };
1453    out[3] = out[3]
1454        ^ if (key & b64(16777216)) != b64(0) {
1455            b6(24)
1456        } else {
1457            b6(58)
1458        };
1459    out[3] = out[3]
1460        ^ if (key & b64(33554432)) != b64(0) {
1461            b6(16)
1462        } else {
1463            b6(54)
1464        };
1465    out[3] = out[3]
1466        ^ if (key & b64(67108864)) != b64(0) {
1467            b6(22)
1468        } else {
1469            b6(38)
1470        };
1471    out[3] = out[3]
1472        ^ if (key & b64(134217728)) != b64(0) {
1473            b6(41)
1474        } else {
1475            b6(41)
1476        };
1477    out[3] = out[3]
1478        ^ if (key & b64(268435456)) != b64(0) {
1479            b6(17)
1480        } else {
1481            b6(21)
1482        };
1483    out[3] = out[3]
1484        ^ if (key & b64(536870912)) != b64(0) {
1485            b6(63)
1486        } else {
1487            b6(42)
1488        };
1489    out[3] = out[3]
1490        ^ if (key & b64(1073741824)) != b64(0) {
1491            b6(1)
1492        } else {
1493            b6(7)
1494        };
1495    out[3] = out[3]
1496        ^ if (key & b64(2147483648)) != b64(0) {
1497            b6(33)
1498        } else {
1499            b6(34)
1500        };
1501    out[3] = out[3]
1502        ^ if (key & b64(4294967296)) != b64(0) {
1503            b6(58)
1504        } else {
1505            b6(33)
1506        };
1507    out[3] = out[3]
1508        ^ if (key & b64(8589934592)) != b64(0) {
1509            b6(18)
1510        } else {
1511            b6(16)
1512        };
1513    out[3] = out[3]
1514        ^ if (key & b64(17179869184)) != b64(0) {
1515            b6(57)
1516        } else {
1517            b6(20)
1518        };
1519    out[3] = out[3]
1520        ^ if (key & b64(34359738368)) != b64(0) {
1521            b6(9)
1522        } else {
1523            b6(0)
1524        };
1525    out[3] = out[3]
1526        ^ if (key & b64(68719476736)) != b64(0) {
1527            b6(40)
1528        } else {
1529            b6(15)
1530        };
1531    out[3] = out[3]
1532        ^ if (key & b64(137438953472)) != b64(0) {
1533            b6(15)
1534        } else {
1535            b6(37)
1536        };
1537    out[3] = out[3]
1538        ^ if (key & b64(274877906944)) != b64(0) {
1539            b6(49)
1540        } else {
1541            b6(16)
1542        };
1543    out[3] = out[3]
1544        ^ if (key & b64(549755813888)) != b64(0) {
1545            b6(0)
1546        } else {
1547            b6(17)
1548        };
1549    out[3] = out[3]
1550        ^ if (key & b64(1099511627776)) != b64(0) {
1551            b6(1)
1552        } else {
1553            b6(36)
1554        };
1555    out[3] = out[3]
1556        ^ if (key & b64(2199023255552)) != b64(0) {
1557            b6(14)
1558        } else {
1559            b6(39)
1560        };
1561    out[3] = out[3]
1562        ^ if (key & b64(4398046511104)) != b64(0) {
1563            b6(63)
1564        } else {
1565            b6(19)
1566        };
1567    out[3] = out[3]
1568        ^ if (key & b64(8796093022208)) != b64(0) {
1569            b6(60)
1570        } else {
1571            b6(22)
1572        };
1573    out[3] = out[3]
1574        ^ if (key & b64(17592186044416)) != b64(0) {
1575            b6(0)
1576        } else {
1577            b6(33)
1578        };
1579    out[3] = out[3]
1580        ^ if (key & b64(35184372088832)) != b64(0) {
1581            b6(40)
1582        } else {
1583            b6(62)
1584        };
1585    out[3] = out[3]
1586        ^ if (key & b64(70368744177664)) != b64(0) {
1587            b6(27)
1588        } else {
1589            b6(38)
1590        };
1591    out[3] = out[3]
1592        ^ if (key & b64(140737488355328)) != b64(0) {
1593            b6(20)
1594        } else {
1595            b6(12)
1596        };
1597    out[3] = out[3]
1598        ^ if (key & b64(281474976710656)) != b64(0) {
1599            b6(48)
1600        } else {
1601            b6(43)
1602        };
1603    out[3] = out[3]
1604        ^ if (key & b64(562949953421312)) != b64(0) {
1605            b6(11)
1606        } else {
1607            b6(10)
1608        };
1609    out[3] = out[3]
1610        ^ if (key & b64(1125899906842624)) != b64(0) {
1611            b6(0)
1612        } else {
1613            b6(45)
1614        };
1615    out[3] = out[3]
1616        ^ if (key & b64(2251799813685248)) != b64(0) {
1617            b6(49)
1618        } else {
1619            b6(6)
1620        };
1621    out[3] = out[3]
1622        ^ if (key & b64(4503599627370496)) != b64(0) {
1623            b6(29)
1624        } else {
1625            b6(50)
1626        };
1627    out[3] = out[3]
1628        ^ if (key & b64(9007199254740992)) != b64(0) {
1629            b6(49)
1630        } else {
1631            b6(56)
1632        };
1633    out[3] = out[3]
1634        ^ if (key & b64(18014398509481984)) != b64(0) {
1635            b6(24)
1636        } else {
1637            b6(10)
1638        };
1639    out[3] = out[3]
1640        ^ if (key & b64(36028797018963968)) != b64(0) {
1641            b6(61)
1642        } else {
1643            b6(21)
1644        };
1645    out[3] = out[3]
1646        ^ if (key & b64(72057594037927936)) != b64(0) {
1647            b6(50)
1648        } else {
1649            b6(56)
1650        };
1651    out[3] = out[3]
1652        ^ if (key & b64(144115188075855872)) != b64(0) {
1653            b6(39)
1654        } else {
1655            b6(18)
1656        };
1657    out[3] = out[3]
1658        ^ if (key & b64(288230376151711744)) != b64(0) {
1659            b6(39)
1660        } else {
1661            b6(30)
1662        };
1663    out[3] = out[3]
1664        ^ if (key & b64(576460752303423488)) != b64(0) {
1665            b6(14)
1666        } else {
1667            b6(20)
1668        };
1669    out[3] = out[3]
1670        ^ if (key & b64(1152921504606846976)) != b64(0) {
1671            b6(3)
1672        } else {
1673            b6(17)
1674        };
1675    out[3] = out[3]
1676        ^ if (key & b64(2305843009213693952)) != b64(0) {
1677            b6(23)
1678        } else {
1679            b6(53)
1680        };
1681    out[3] = out[3]
1682        ^ if (key & b64(4611686018427387904)) != b64(0) {
1683            b6(63)
1684        } else {
1685            b6(18)
1686        };
1687    out[3] = out[3]
1688        ^ if (key & b64(9223372036854775808)) != b64(0) {
1689            b6(47)
1690        } else {
1691            b6(3)
1692        };
1693    out[4] = out[4]
1694        ^ if (key & b64(1)) != b64(0) {
1695            b6(57)
1696        } else {
1697            b6(63)
1698        };
1699    out[4] = out[4]
1700        ^ if (key & b64(2)) != b64(0) {
1701            b6(57)
1702        } else {
1703            b6(47)
1704        };
1705    out[4] = out[4]
1706        ^ if (key & b64(4)) != b64(0) {
1707            b6(28)
1708        } else {
1709            b6(31)
1710        };
1711    out[4] = out[4]
1712        ^ if (key & b64(8)) != b64(0) {
1713            b6(13)
1714        } else {
1715            b6(9)
1716        };
1717    out[4] = out[4]
1718        ^ if (key & b64(16)) != b64(0) {
1719            b6(2)
1720        } else {
1721            b6(63)
1722        };
1723    out[4] = out[4]
1724        ^ if (key & b64(32)) != b64(0) {
1725            b6(34)
1726        } else {
1727            b6(12)
1728        };
1729    out[4] = out[4]
1730        ^ if (key & b64(64)) != b64(0) {
1731            b6(13)
1732        } else {
1733            b6(50)
1734        };
1735    out[4] = out[4]
1736        ^ if (key & b64(128)) != b64(0) {
1737            b6(61)
1738        } else {
1739            b6(27)
1740        };
1741    out[4] = out[4]
1742        ^ if (key & b64(256)) != b64(0) {
1743            b6(42)
1744        } else {
1745            b6(16)
1746        };
1747    out[4] = out[4]
1748        ^ if (key & b64(512)) != b64(0) {
1749            b6(37)
1750        } else {
1751            b6(14)
1752        };
1753    out[4] = out[4]
1754        ^ if (key & b64(1024)) != b64(0) {
1755            b6(59)
1756        } else {
1757            b6(25)
1758        };
1759    out[4] = out[4]
1760        ^ if (key & b64(2048)) != b64(0) {
1761            b6(35)
1762        } else {
1763            b6(11)
1764        };
1765    out[4] = out[4]
1766        ^ if (key & b64(4096)) != b64(0) {
1767            b6(61)
1768        } else {
1769            b6(21)
1770        };
1771    out[4] = out[4]
1772        ^ if (key & b64(8192)) != b64(0) {
1773            b6(50)
1774        } else {
1775            b6(34)
1776        };
1777    out[4] = out[4]
1778        ^ if (key & b64(16384)) != b64(0) {
1779            b6(5)
1780        } else {
1781            b6(59)
1782        };
1783    out[4] = out[4]
1784        ^ if (key & b64(32768)) != b64(0) {
1785            b6(15)
1786        } else {
1787            b6(3)
1788        };
1789    out[4] = out[4]
1790        ^ if (key & b64(65536)) != b64(0) {
1791            b6(45)
1792        } else {
1793            b6(34)
1794        };
1795    out[4] = out[4]
1796        ^ if (key & b64(131072)) != b64(0) {
1797            b6(39)
1798        } else {
1799            b6(36)
1800        };
1801    out[4] = out[4]
1802        ^ if (key & b64(262144)) != b64(0) {
1803            b6(54)
1804        } else {
1805            b6(9)
1806        };
1807    out[4] = out[4]
1808        ^ if (key & b64(524288)) != b64(0) {
1809            b6(25)
1810        } else {
1811            b6(61)
1812        };
1813    out[4] = out[4]
1814        ^ if (key & b64(1048576)) != b64(0) {
1815            b6(31)
1816        } else {
1817            b6(53)
1818        };
1819    out[4] = out[4]
1820        ^ if (key & b64(2097152)) != b64(0) {
1821            b6(5)
1822        } else {
1823            b6(9)
1824        };
1825    out[4] = out[4]
1826        ^ if (key & b64(4194304)) != b64(0) {
1827            b6(21)
1828        } else {
1829            b6(48)
1830        };
1831    out[4] = out[4]
1832        ^ if (key & b64(8388608)) != b64(0) {
1833            b6(27)
1834        } else {
1835            b6(20)
1836        };
1837    out[4] = out[4]
1838        ^ if (key & b64(16777216)) != b64(0) {
1839            b6(57)
1840        } else {
1841            b6(32)
1842        };
1843    out[4] = out[4]
1844        ^ if (key & b64(33554432)) != b64(0) {
1845            b6(41)
1846        } else {
1847            b6(59)
1848        };
1849    out[4] = out[4]
1850        ^ if (key & b64(67108864)) != b64(0) {
1851            b6(51)
1852        } else {
1853            b6(43)
1854        };
1855    out[4] = out[4]
1856        ^ if (key & b64(134217728)) != b64(0) {
1857            b6(5)
1858        } else {
1859            b6(15)
1860        };
1861    out[4] = out[4]
1862        ^ if (key & b64(268435456)) != b64(0) {
1863            b6(60)
1864        } else {
1865            b6(8)
1866        };
1867    out[4] = out[4]
1868        ^ if (key & b64(536870912)) != b64(0) {
1869            b6(15)
1870        } else {
1871            b6(46)
1872        };
1873    out[4] = out[4]
1874        ^ if (key & b64(1073741824)) != b64(0) {
1875            b6(29)
1876        } else {
1877            b6(55)
1878        };
1879    out[4] = out[4]
1880        ^ if (key & b64(2147483648)) != b64(0) {
1881            b6(7)
1882        } else {
1883            b6(37)
1884        };
1885    out[4] = out[4]
1886        ^ if (key & b64(4294967296)) != b64(0) {
1887            b6(5)
1888        } else {
1889            b6(8)
1890        };
1891    out[4] = out[4]
1892        ^ if (key & b64(8589934592)) != b64(0) {
1893            b6(44)
1894        } else {
1895            b6(60)
1896        };
1897    out[4] = out[4]
1898        ^ if (key & b64(17179869184)) != b64(0) {
1899            b6(49)
1900        } else {
1901            b6(42)
1902        };
1903    out[4] = out[4]
1904        ^ if (key & b64(34359738368)) != b64(0) {
1905            b6(13)
1906        } else {
1907            b6(58)
1908        };
1909    out[4] = out[4]
1910        ^ if (key & b64(68719476736)) != b64(0) {
1911            b6(42)
1912        } else {
1913            b6(51)
1914        };
1915    out[4] = out[4]
1916        ^ if (key & b64(137438953472)) != b64(0) {
1917            b6(48)
1918        } else {
1919            b6(33)
1920        };
1921    out[4] = out[4]
1922        ^ if (key & b64(274877906944)) != b64(0) {
1923            b6(34)
1924        } else {
1925            b6(34)
1926        };
1927    out[4] = out[4]
1928        ^ if (key & b64(549755813888)) != b64(0) {
1929            b6(13)
1930        } else {
1931            b6(50)
1932        };
1933    out[4] = out[4]
1934        ^ if (key & b64(1099511627776)) != b64(0) {
1935            b6(53)
1936        } else {
1937            b6(57)
1938        };
1939    out[4] = out[4]
1940        ^ if (key & b64(2199023255552)) != b64(0) {
1941            b6(56)
1942        } else {
1943            b6(54)
1944        };
1945    out[4] = out[4]
1946        ^ if (key & b64(4398046511104)) != b64(0) {
1947            b6(58)
1948        } else {
1949            b6(48)
1950        };
1951    out[4] = out[4]
1952        ^ if (key & b64(8796093022208)) != b64(0) {
1953            b6(3)
1954        } else {
1955            b6(11)
1956        };
1957    out[4] = out[4]
1958        ^ if (key & b64(17592186044416)) != b64(0) {
1959            b6(7)
1960        } else {
1961            b6(33)
1962        };
1963    out[4] = out[4]
1964        ^ if (key & b64(35184372088832)) != b64(0) {
1965            b6(34)
1966        } else {
1967            b6(7)
1968        };
1969    out[4] = out[4]
1970        ^ if (key & b64(70368744177664)) != b64(0) {
1971            b6(28)
1972        } else {
1973            b6(45)
1974        };
1975    out[4] = out[4]
1976        ^ if (key & b64(140737488355328)) != b64(0) {
1977            b6(12)
1978        } else {
1979            b6(24)
1980        };
1981    out[4] = out[4]
1982        ^ if (key & b64(281474976710656)) != b64(0) {
1983            b6(33)
1984        } else {
1985            b6(20)
1986        };
1987    out[4] = out[4]
1988        ^ if (key & b64(562949953421312)) != b64(0) {
1989            b6(1)
1990        } else {
1991            b6(62)
1992        };
1993    out[4] = out[4]
1994        ^ if (key & b64(1125899906842624)) != b64(0) {
1995            b6(13)
1996        } else {
1997            b6(14)
1998        };
1999    out[4] = out[4]
2000        ^ if (key & b64(2251799813685248)) != b64(0) {
2001            b6(55)
2002        } else {
2003            b6(34)
2004        };
2005    out[4] = out[4]
2006        ^ if (key & b64(4503599627370496)) != b64(0) {
2007            b6(42)
2008        } else {
2009            b6(45)
2010        };
2011    out[4] = out[4]
2012        ^ if (key & b64(9007199254740992)) != b64(0) {
2013            b6(5)
2014        } else {
2015            b6(54)
2016        };
2017    out[4] = out[4]
2018        ^ if (key & b64(18014398509481984)) != b64(0) {
2019            b6(54)
2020        } else {
2021            b6(21)
2022        };
2023    out[4] = out[4]
2024        ^ if (key & b64(36028797018963968)) != b64(0) {
2025            b6(21)
2026        } else {
2027            b6(48)
2028        };
2029    out[4] = out[4]
2030        ^ if (key & b64(72057594037927936)) != b64(0) {
2031            b6(35)
2032        } else {
2033            b6(51)
2034        };
2035    out[4] = out[4]
2036        ^ if (key & b64(144115188075855872)) != b64(0) {
2037            b6(53)
2038        } else {
2039            b6(17)
2040        };
2041    out[4] = out[4]
2042        ^ if (key & b64(288230376151711744)) != b64(0) {
2043            b6(12)
2044        } else {
2045            b6(38)
2046        };
2047    out[4] = out[4]
2048        ^ if (key & b64(576460752303423488)) != b64(0) {
2049            b6(56)
2050        } else {
2051            b6(34)
2052        };
2053    out[4] = out[4]
2054        ^ if (key & b64(1152921504606846976)) != b64(0) {
2055            b6(27)
2056        } else {
2057            b6(55)
2058        };
2059    out[4] = out[4]
2060        ^ if (key & b64(2305843009213693952)) != b64(0) {
2061            b6(33)
2062        } else {
2063            b6(32)
2064        };
2065    out[4] = out[4]
2066        ^ if (key & b64(4611686018427387904)) != b64(0) {
2067            b6(60)
2068        } else {
2069            b6(11)
2070        };
2071    out[4] = out[4]
2072        ^ if (key & b64(9223372036854775808)) != b64(0) {
2073            b6(31)
2074        } else {
2075            b6(27)
2076        };
2077    out[5] = out[5]
2078        ^ if (key & b64(1)) != b64(0) {
2079            b6(44)
2080        } else {
2081            b6(54)
2082        };
2083    out[5] = out[5]
2084        ^ if (key & b64(2)) != b64(0) {
2085            b6(15)
2086        } else {
2087            b6(59)
2088        };
2089    out[5] = out[5]
2090        ^ if (key & b64(4)) != b64(0) {
2091            b6(43)
2092        } else {
2093            b6(61)
2094        };
2095    out[5] = out[5]
2096        ^ if (key & b64(8)) != b64(0) {
2097            b6(9)
2098        } else {
2099            b6(41)
2100        };
2101    out[5] = out[5]
2102        ^ if (key & b64(16)) != b64(0) {
2103            b6(51)
2104        } else {
2105            b6(13)
2106        };
2107    out[5] = out[5]
2108        ^ if (key & b64(32)) != b64(0) {
2109            b6(1)
2110        } else {
2111            b6(11)
2112        };
2113    out[5] = out[5]
2114        ^ if (key & b64(64)) != b64(0) {
2115            b6(19)
2116        } else {
2117            b6(42)
2118        };
2119    out[5] = out[5]
2120        ^ if (key & b64(128)) != b64(0) {
2121            b6(26)
2122        } else {
2123            b6(42)
2124        };
2125    out[5] = out[5]
2126        ^ if (key & b64(256)) != b64(0) {
2127            b6(33)
2128        } else {
2129            b6(12)
2130        };
2131    out[5] = out[5]
2132        ^ if (key & b64(512)) != b64(0) {
2133            b6(15)
2134        } else {
2135            b6(31)
2136        };
2137    out[5] = out[5]
2138        ^ if (key & b64(1024)) != b64(0) {
2139            b6(44)
2140        } else {
2141            b6(36)
2142        };
2143    out[5] = out[5]
2144        ^ if (key & b64(2048)) != b64(0) {
2145            b6(55)
2146        } else {
2147            b6(60)
2148        };
2149    out[5] = out[5]
2150        ^ if (key & b64(4096)) != b64(0) {
2151            b6(32)
2152        } else {
2153            b6(40)
2154        };
2155    out[5] = out[5]
2156        ^ if (key & b64(8192)) != b64(0) {
2157            b6(20)
2158        } else {
2159            b6(63)
2160        };
2161    out[5] = out[5]
2162        ^ if (key & b64(16384)) != b64(0) {
2163            b6(14)
2164        } else {
2165            b6(2)
2166        };
2167    out[5] = out[5]
2168        ^ if (key & b64(32768)) != b64(0) {
2169            b6(7)
2170        } else {
2171            b6(11)
2172        };
2173    out[5] = out[5]
2174        ^ if (key & b64(65536)) != b64(0) {
2175            b6(54)
2176        } else {
2177            b6(12)
2178        };
2179    out[5] = out[5]
2180        ^ if (key & b64(131072)) != b64(0) {
2181            b6(26)
2182        } else {
2183            b6(27)
2184        };
2185    out[5] = out[5]
2186        ^ if (key & b64(262144)) != b64(0) {
2187            b6(53)
2188        } else {
2189            b6(59)
2190        };
2191    out[5] = out[5]
2192        ^ if (key & b64(524288)) != b64(0) {
2193            b6(9)
2194        } else {
2195            b6(53)
2196        };
2197    out[5] = out[5]
2198        ^ if (key & b64(1048576)) != b64(0) {
2199            b6(38)
2200        } else {
2201            b6(5)
2202        };
2203    out[5] = out[5]
2204        ^ if (key & b64(2097152)) != b64(0) {
2205            b6(38)
2206        } else {
2207            b6(10)
2208        };
2209    out[5] = out[5]
2210        ^ if (key & b64(4194304)) != b64(0) {
2211            b6(5)
2212        } else {
2213            b6(11)
2214        };
2215    out[5] = out[5]
2216        ^ if (key & b64(8388608)) != b64(0) {
2217            b6(10)
2218        } else {
2219            b6(44)
2220        };
2221    out[5] = out[5]
2222        ^ if (key & b64(16777216)) != b64(0) {
2223            b6(45)
2224        } else {
2225            b6(29)
2226        };
2227    out[5] = out[5]
2228        ^ if (key & b64(33554432)) != b64(0) {
2229            b6(30)
2230        } else {
2231            b6(18)
2232        };
2233    out[5] = out[5]
2234        ^ if (key & b64(67108864)) != b64(0) {
2235            b6(12)
2236        } else {
2237            b6(60)
2238        };
2239    out[5] = out[5]
2240        ^ if (key & b64(134217728)) != b64(0) {
2241            b6(45)
2242        } else {
2243            b6(8)
2244        };
2245    out[5] = out[5]
2246        ^ if (key & b64(268435456)) != b64(0) {
2247            b6(48)
2248        } else {
2249            b6(15)
2250        };
2251    out[5] = out[5]
2252        ^ if (key & b64(536870912)) != b64(0) {
2253            b6(59)
2254        } else {
2255            b6(0)
2256        };
2257    out[5] = out[5]
2258        ^ if (key & b64(1073741824)) != b64(0) {
2259            b6(1)
2260        } else {
2261            b6(60)
2262        };
2263    out[5] = out[5]
2264        ^ if (key & b64(2147483648)) != b64(0) {
2265            b6(60)
2266        } else {
2267            b6(11)
2268        };
2269    out[5] = out[5]
2270        ^ if (key & b64(4294967296)) != b64(0) {
2271            b6(3)
2272        } else {
2273            b6(20)
2274        };
2275    out[5] = out[5]
2276        ^ if (key & b64(8589934592)) != b64(0) {
2277            b6(4)
2278        } else {
2279            b6(32)
2280        };
2281    out[5] = out[5]
2282        ^ if (key & b64(17179869184)) != b64(0) {
2283            b6(29)
2284        } else {
2285            b6(45)
2286        };
2287    out[5] = out[5]
2288        ^ if (key & b64(34359738368)) != b64(0) {
2289            b6(15)
2290        } else {
2291            b6(43)
2292        };
2293    out[5] = out[5]
2294        ^ if (key & b64(68719476736)) != b64(0) {
2295            b6(7)
2296        } else {
2297            b6(14)
2298        };
2299    out[5] = out[5]
2300        ^ if (key & b64(137438953472)) != b64(0) {
2301            b6(57)
2302        } else {
2303            b6(50)
2304        };
2305    out[5] = out[5]
2306        ^ if (key & b64(274877906944)) != b64(0) {
2307            b6(39)
2308        } else {
2309            b6(43)
2310        };
2311    out[5] = out[5]
2312        ^ if (key & b64(549755813888)) != b64(0) {
2313            b6(35)
2314        } else {
2315            b6(60)
2316        };
2317    out[5] = out[5]
2318        ^ if (key & b64(1099511627776)) != b64(0) {
2319            b6(48)
2320        } else {
2321            b6(47)
2322        };
2323    out[5] = out[5]
2324        ^ if (key & b64(2199023255552)) != b64(0) {
2325            b6(47)
2326        } else {
2327            b6(14)
2328        };
2329    out[5] = out[5]
2330        ^ if (key & b64(4398046511104)) != b64(0) {
2331            b6(12)
2332        } else {
2333            b6(32)
2334        };
2335    out[5] = out[5]
2336        ^ if (key & b64(8796093022208)) != b64(0) {
2337            b6(36)
2338        } else {
2339            b6(35)
2340        };
2341    out[5] = out[5]
2342        ^ if (key & b64(17592186044416)) != b64(0) {
2343            b6(5)
2344        } else {
2345            b6(24)
2346        };
2347    out[5] = out[5]
2348        ^ if (key & b64(35184372088832)) != b64(0) {
2349            b6(44)
2350        } else {
2351            b6(12)
2352        };
2353    out[5] = out[5]
2354        ^ if (key & b64(70368744177664)) != b64(0) {
2355            b6(19)
2356        } else {
2357            b6(53)
2358        };
2359    out[5] = out[5]
2360        ^ if (key & b64(140737488355328)) != b64(0) {
2361            b6(57)
2362        } else {
2363            b6(32)
2364        };
2365    out[5] = out[5]
2366        ^ if (key & b64(281474976710656)) != b64(0) {
2367            b6(39)
2368        } else {
2369            b6(20)
2370        };
2371    out[5] = out[5]
2372        ^ if (key & b64(562949953421312)) != b64(0) {
2373            b6(61)
2374        } else {
2375            b6(15)
2376        };
2377    out[5] = out[5]
2378        ^ if (key & b64(1125899906842624)) != b64(0) {
2379            b6(54)
2380        } else {
2381            b6(26)
2382        };
2383    out[5] = out[5]
2384        ^ if (key & b64(2251799813685248)) != b64(0) {
2385            b6(61)
2386        } else {
2387            b6(21)
2388        };
2389    out[5] = out[5]
2390        ^ if (key & b64(4503599627370496)) != b64(0) {
2391            b6(27)
2392        } else {
2393            b6(30)
2394        };
2395    out[5] = out[5]
2396        ^ if (key & b64(9007199254740992)) != b64(0) {
2397            b6(55)
2398        } else {
2399            b6(48)
2400        };
2401    out[5] = out[5]
2402        ^ if (key & b64(18014398509481984)) != b64(0) {
2403            b6(41)
2404        } else {
2405            b6(31)
2406        };
2407    out[5] = out[5]
2408        ^ if (key & b64(36028797018963968)) != b64(0) {
2409            b6(61)
2410        } else {
2411            b6(0)
2412        };
2413    out[5] = out[5]
2414        ^ if (key & b64(72057594037927936)) != b64(0) {
2415            b6(59)
2416        } else {
2417            b6(45)
2418        };
2419    out[5] = out[5]
2420        ^ if (key & b64(144115188075855872)) != b64(0) {
2421            b6(57)
2422        } else {
2423            b6(44)
2424        };
2425    out[5] = out[5]
2426        ^ if (key & b64(288230376151711744)) != b64(0) {
2427            b6(2)
2428        } else {
2429            b6(15)
2430        };
2431    out[5] = out[5]
2432        ^ if (key & b64(576460752303423488)) != b64(0) {
2433            b6(25)
2434        } else {
2435            b6(7)
2436        };
2437    out[5] = out[5]
2438        ^ if (key & b64(1152921504606846976)) != b64(0) {
2439            b6(15)
2440        } else {
2441            b6(5)
2442        };
2443    out[5] = out[5]
2444        ^ if (key & b64(2305843009213693952)) != b64(0) {
2445            b6(3)
2446        } else {
2447            b6(47)
2448        };
2449    out[5] = out[5]
2450        ^ if (key & b64(4611686018427387904)) != b64(0) {
2451            b6(0)
2452        } else {
2453            b6(44)
2454        };
2455    out[5] = out[5]
2456        ^ if (key & b64(9223372036854775808)) != b64(0) {
2457            b6(31)
2458        } else {
2459            b6(37)
2460        };
2461    out[6] = out[6]
2462        ^ if (key & b64(1)) != b64(0) {
2463            b6(41)
2464        } else {
2465            b6(42)
2466        };
2467    out[6] = out[6]
2468        ^ if (key & b64(2)) != b64(0) {
2469            b6(24)
2470        } else {
2471            b6(10)
2472        };
2473    out[6] = out[6]
2474        ^ if (key & b64(4)) != b64(0) {
2475            b6(13)
2476        } else {
2477            b6(35)
2478        };
2479    out[6] = out[6]
2480        ^ if (key & b64(8)) != b64(0) {
2481            b6(8)
2482        } else {
2483            b6(43)
2484        };
2485    out[6] = out[6]
2486        ^ if (key & b64(16)) != b64(0) {
2487            b6(15)
2488        } else {
2489            b6(3)
2490        };
2491    out[6] = out[6]
2492        ^ if (key & b64(32)) != b64(0) {
2493            b6(10)
2494        } else {
2495            b6(61)
2496        };
2497    out[6] = out[6]
2498        ^ if (key & b64(64)) != b64(0) {
2499            b6(31)
2500        } else {
2501            b6(20)
2502        };
2503    out[6] = out[6]
2504        ^ if (key & b64(128)) != b64(0) {
2505            b6(0)
2506        } else {
2507            b6(22)
2508        };
2509    out[6] = out[6]
2510        ^ if (key & b64(256)) != b64(0) {
2511            b6(50)
2512        } else {
2513            b6(21)
2514        };
2515    out[6] = out[6]
2516        ^ if (key & b64(512)) != b64(0) {
2517            b6(58)
2518        } else {
2519            b6(30)
2520        };
2521    out[6] = out[6]
2522        ^ if (key & b64(1024)) != b64(0) {
2523            b6(10)
2524        } else {
2525            b6(32)
2526        };
2527    out[6] = out[6]
2528        ^ if (key & b64(2048)) != b64(0) {
2529            b6(36)
2530        } else {
2531            b6(32)
2532        };
2533    out[6] = out[6]
2534        ^ if (key & b64(4096)) != b64(0) {
2535            b6(22)
2536        } else {
2537            b6(24)
2538        };
2539    out[6] = out[6]
2540        ^ if (key & b64(8192)) != b64(0) {
2541            b6(14)
2542        } else {
2543            b6(13)
2544        };
2545    out[6] = out[6]
2546        ^ if (key & b64(16384)) != b64(0) {
2547            b6(1)
2548        } else {
2549            b6(44)
2550        };
2551    out[6] = out[6]
2552        ^ if (key & b64(32768)) != b64(0) {
2553            b6(29)
2554        } else {
2555            b6(35)
2556        };
2557    out[6] = out[6]
2558        ^ if (key & b64(65536)) != b64(0) {
2559            b6(15)
2560        } else {
2561            b6(61)
2562        };
2563    out[6] = out[6]
2564        ^ if (key & b64(131072)) != b64(0) {
2565            b6(38)
2566        } else {
2567            b6(22)
2568        };
2569    out[6] = out[6]
2570        ^ if (key & b64(262144)) != b64(0) {
2571            b6(10)
2572        } else {
2573            b6(35)
2574        };
2575    out[6] = out[6]
2576        ^ if (key & b64(524288)) != b64(0) {
2577            b6(12)
2578        } else {
2579            b6(9)
2580        };
2581    out[6] = out[6]
2582        ^ if (key & b64(1048576)) != b64(0) {
2583            b6(63)
2584        } else {
2585            b6(24)
2586        };
2587    out[6] = out[6]
2588        ^ if (key & b64(2097152)) != b64(0) {
2589            b6(53)
2590        } else {
2591            b6(43)
2592        };
2593    out[6] = out[6]
2594        ^ if (key & b64(4194304)) != b64(0) {
2595            b6(28)
2596        } else {
2597            b6(46)
2598        };
2599    out[6] = out[6]
2600        ^ if (key & b64(8388608)) != b64(0) {
2601            b6(45)
2602        } else {
2603            b6(54)
2604        };
2605    out[6] = out[6]
2606        ^ if (key & b64(16777216)) != b64(0) {
2607            b6(58)
2608        } else {
2609            b6(7)
2610        };
2611    out[6] = out[6]
2612        ^ if (key & b64(33554432)) != b64(0) {
2613            b6(61)
2614        } else {
2615            b6(28)
2616        };
2617    out[6] = out[6]
2618        ^ if (key & b64(67108864)) != b64(0) {
2619            b6(54)
2620        } else {
2621            b6(54)
2622        };
2623    out[6] = out[6]
2624        ^ if (key & b64(134217728)) != b64(0) {
2625            b6(62)
2626        } else {
2627            b6(43)
2628        };
2629    out[6] = out[6]
2630        ^ if (key & b64(268435456)) != b64(0) {
2631            b6(26)
2632        } else {
2633            b6(18)
2634        };
2635    out[6] = out[6]
2636        ^ if (key & b64(536870912)) != b64(0) {
2637            b6(44)
2638        } else {
2639            b6(59)
2640        };
2641    out[6] = out[6]
2642        ^ if (key & b64(1073741824)) != b64(0) {
2643            b6(13)
2644        } else {
2645            b6(40)
2646        };
2647    out[6] = out[6]
2648        ^ if (key & b64(2147483648)) != b64(0) {
2649            b6(22)
2650        } else {
2651            b6(0)
2652        };
2653    out[6] = out[6]
2654        ^ if (key & b64(4294967296)) != b64(0) {
2655            b6(2)
2656        } else {
2657            b6(26)
2658        };
2659    out[6] = out[6]
2660        ^ if (key & b64(8589934592)) != b64(0) {
2661            b6(8)
2662        } else {
2663            b6(26)
2664        };
2665    out[6] = out[6]
2666        ^ if (key & b64(17179869184)) != b64(0) {
2667            b6(15)
2668        } else {
2669            b6(9)
2670        };
2671    out[6] = out[6]
2672        ^ if (key & b64(34359738368)) != b64(0) {
2673            b6(7)
2674        } else {
2675            b6(47)
2676        };
2677    out[6] = out[6]
2678        ^ if (key & b64(68719476736)) != b64(0) {
2679            b6(16)
2680        } else {
2681            b6(41)
2682        };
2683    out[6] = out[6]
2684        ^ if (key & b64(137438953472)) != b64(0) {
2685            b6(41)
2686        } else {
2687            b6(35)
2688        };
2689    out[6] = out[6]
2690        ^ if (key & b64(274877906944)) != b64(0) {
2691            b6(21)
2692        } else {
2693            b6(58)
2694        };
2695    out[6] = out[6]
2696        ^ if (key & b64(549755813888)) != b64(0) {
2697            b6(43)
2698        } else {
2699            b6(61)
2700        };
2701    out[6] = out[6]
2702        ^ if (key & b64(1099511627776)) != b64(0) {
2703            b6(18)
2704        } else {
2705            b6(41)
2706        };
2707    out[6] = out[6]
2708        ^ if (key & b64(2199023255552)) != b64(0) {
2709            b6(36)
2710        } else {
2711            b6(9)
2712        };
2713    out[6] = out[6]
2714        ^ if (key & b64(4398046511104)) != b64(0) {
2715            b6(45)
2716        } else {
2717            b6(56)
2718        };
2719    out[6] = out[6]
2720        ^ if (key & b64(8796093022208)) != b64(0) {
2721            b6(53)
2722        } else {
2723            b6(7)
2724        };
2725    out[6] = out[6]
2726        ^ if (key & b64(17592186044416)) != b64(0) {
2727            b6(11)
2728        } else {
2729            b6(60)
2730        };
2731    out[6] = out[6]
2732        ^ if (key & b64(35184372088832)) != b64(0) {
2733            b6(30)
2734        } else {
2735            b6(23)
2736        };
2737    out[6] = out[6]
2738        ^ if (key & b64(70368744177664)) != b64(0) {
2739            b6(45)
2740        } else {
2741            b6(40)
2742        };
2743    out[6] = out[6]
2744        ^ if (key & b64(140737488355328)) != b64(0) {
2745            b6(36)
2746        } else {
2747            b6(8)
2748        };
2749    out[6] = out[6]
2750        ^ if (key & b64(281474976710656)) != b64(0) {
2751            b6(29)
2752        } else {
2753            b6(35)
2754        };
2755    out[6] = out[6]
2756        ^ if (key & b64(562949953421312)) != b64(0) {
2757            b6(26)
2758        } else {
2759            b6(0)
2760        };
2761    out[6] = out[6]
2762        ^ if (key & b64(1125899906842624)) != b64(0) {
2763            b6(31)
2764        } else {
2765            b6(17)
2766        };
2767    out[6] = out[6]
2768        ^ if (key & b64(2251799813685248)) != b64(0) {
2769            b6(33)
2770        } else {
2771            b6(42)
2772        };
2773    out[6] = out[6]
2774        ^ if (key & b64(4503599627370496)) != b64(0) {
2775            b6(57)
2776        } else {
2777            b6(28)
2778        };
2779    out[6] = out[6]
2780        ^ if (key & b64(9007199254740992)) != b64(0) {
2781            b6(45)
2782        } else {
2783            b6(16)
2784        };
2785    out[6] = out[6]
2786        ^ if (key & b64(18014398509481984)) != b64(0) {
2787            b6(43)
2788        } else {
2789            b6(0)
2790        };
2791    out[6] = out[6]
2792        ^ if (key & b64(36028797018963968)) != b64(0) {
2793            b6(49)
2794        } else {
2795            b6(48)
2796        };
2797    out[6] = out[6]
2798        ^ if (key & b64(72057594037927936)) != b64(0) {
2799            b6(22)
2800        } else {
2801            b6(19)
2802        };
2803    out[6] = out[6]
2804        ^ if (key & b64(144115188075855872)) != b64(0) {
2805            b6(28)
2806        } else {
2807            b6(43)
2808        };
2809    out[6] = out[6]
2810        ^ if (key & b64(288230376151711744)) != b64(0) {
2811            b6(49)
2812        } else {
2813            b6(10)
2814        };
2815    out[6] = out[6]
2816        ^ if (key & b64(576460752303423488)) != b64(0) {
2817            b6(60)
2818        } else {
2819            b6(11)
2820        };
2821    out[6] = out[6]
2822        ^ if (key & b64(1152921504606846976)) != b64(0) {
2823            b6(39)
2824        } else {
2825            b6(0)
2826        };
2827    out[6] = out[6]
2828        ^ if (key & b64(2305843009213693952)) != b64(0) {
2829            b6(45)
2830        } else {
2831            b6(2)
2832        };
2833    out[6] = out[6]
2834        ^ if (key & b64(4611686018427387904)) != b64(0) {
2835            b6(57)
2836        } else {
2837            b6(13)
2838        };
2839    out[6] = out[6]
2840        ^ if (key & b64(9223372036854775808)) != b64(0) {
2841            b6(24)
2842        } else {
2843            b6(15)
2844        };
2845    out[7] = out[7]
2846        ^ if (key & b64(1)) != b64(0) {
2847            b6(24)
2848        } else {
2849            b6(17)
2850        };
2851    out[7] = out[7]
2852        ^ if (key & b64(2)) != b64(0) {
2853            b6(44)
2854        } else {
2855            b6(8)
2856        };
2857    out[7] = out[7]
2858        ^ if (key & b64(4)) != b64(0) {
2859            b6(37)
2860        } else {
2861            b6(9)
2862        };
2863    out[7] = out[7]
2864        ^ if (key & b64(8)) != b64(0) {
2865            b6(21)
2866        } else {
2867            b6(57)
2868        };
2869    out[7] = out[7]
2870        ^ if (key & b64(16)) != b64(0) {
2871            b6(12)
2872        } else {
2873            b6(59)
2874        };
2875    out[7] = out[7]
2876        ^ if (key & b64(32)) != b64(0) {
2877            b6(9)
2878        } else {
2879            b6(25)
2880        };
2881    out[7] = out[7]
2882        ^ if (key & b64(64)) != b64(0) {
2883            b6(54)
2884        } else {
2885            b6(24)
2886        };
2887    out[7] = out[7]
2888        ^ if (key & b64(128)) != b64(0) {
2889            b6(13)
2890        } else {
2891            b6(17)
2892        };
2893    out[7] = out[7]
2894        ^ if (key & b64(256)) != b64(0) {
2895            b6(62)
2896        } else {
2897            b6(42)
2898        };
2899    out[7] = out[7]
2900        ^ if (key & b64(512)) != b64(0) {
2901            b6(29)
2902        } else {
2903            b6(43)
2904        };
2905    out[7] = out[7]
2906        ^ if (key & b64(1024)) != b64(0) {
2907            b6(59)
2908        } else {
2909            b6(43)
2910        };
2911    out[7] = out[7]
2912        ^ if (key & b64(2048)) != b64(0) {
2913            b6(30)
2914        } else {
2915            b6(9)
2916        };
2917    out[7] = out[7]
2918        ^ if (key & b64(4096)) != b64(0) {
2919            b6(53)
2920        } else {
2921            b6(14)
2922        };
2923    out[7] = out[7]
2924        ^ if (key & b64(8192)) != b64(0) {
2925            b6(4)
2926        } else {
2927            b6(34)
2928        };
2929    out[7] = out[7]
2930        ^ if (key & b64(16384)) != b64(0) {
2931            b6(50)
2932        } else {
2933            b6(22)
2934        };
2935    out[7] = out[7]
2936        ^ if (key & b64(32768)) != b64(0) {
2937            b6(36)
2938        } else {
2939            b6(59)
2940        };
2941    out[7] = out[7]
2942        ^ if (key & b64(65536)) != b64(0) {
2943            b6(26)
2944        } else {
2945            b6(28)
2946        };
2947    out[7] = out[7]
2948        ^ if (key & b64(131072)) != b64(0) {
2949            b6(14)
2950        } else {
2951            b6(3)
2952        };
2953    out[7] = out[7]
2954        ^ if (key & b64(262144)) != b64(0) {
2955            b6(47)
2956        } else {
2957            b6(2)
2958        };
2959    out[7] = out[7]
2960        ^ if (key & b64(524288)) != b64(0) {
2961            b6(9)
2962        } else {
2963            b6(57)
2964        };
2965    out[7] = out[7]
2966        ^ if (key & b64(1048576)) != b64(0) {
2967            b6(23)
2968        } else {
2969            b6(39)
2970        };
2971    out[7] = out[7]
2972        ^ if (key & b64(2097152)) != b64(0) {
2973            b6(14)
2974        } else {
2975            b6(22)
2976        };
2977    out[7] = out[7]
2978        ^ if (key & b64(4194304)) != b64(0) {
2979            b6(32)
2980        } else {
2981            b6(61)
2982        };
2983    out[7] = out[7]
2984        ^ if (key & b64(8388608)) != b64(0) {
2985            b6(44)
2986        } else {
2987            b6(39)
2988        };
2989    out[7] = out[7]
2990        ^ if (key & b64(16777216)) != b64(0) {
2991            b6(40)
2992        } else {
2993            b6(7)
2994        };
2995    out[7] = out[7]
2996        ^ if (key & b64(33554432)) != b64(0) {
2997            b6(19)
2998        } else {
2999            b6(20)
3000        };
3001    out[7] = out[7]
3002        ^ if (key & b64(67108864)) != b64(0) {
3003            b6(48)
3004        } else {
3005            b6(7)
3006        };
3007    out[7] = out[7]
3008        ^ if (key & b64(134217728)) != b64(0) {
3009            b6(45)
3010        } else {
3011            b6(62)
3012        };
3013    out[7] = out[7]
3014        ^ if (key & b64(268435456)) != b64(0) {
3015            b6(58)
3016        } else {
3017            b6(23)
3018        };
3019    out[7] = out[7]
3020        ^ if (key & b64(536870912)) != b64(0) {
3021            b6(32)
3022        } else {
3023            b6(39)
3024        };
3025    out[7] = out[7]
3026        ^ if (key & b64(1073741824)) != b64(0) {
3027            b6(39)
3028        } else {
3029            b6(47)
3030        };
3031    out[7] = out[7]
3032        ^ if (key & b64(2147483648)) != b64(0) {
3033            b6(33)
3034        } else {
3035            b6(55)
3036        };
3037    out[7] = out[7]
3038        ^ if (key & b64(4294967296)) != b64(0) {
3039            b6(38)
3040        } else {
3041            b6(57)
3042        };
3043    out[7] = out[7]
3044        ^ if (key & b64(8589934592)) != b64(0) {
3045            b6(19)
3046        } else {
3047            b6(30)
3048        };
3049    out[7] = out[7]
3050        ^ if (key & b64(17179869184)) != b64(0) {
3051            b6(43)
3052        } else {
3053            b6(38)
3054        };
3055    out[7] = out[7]
3056        ^ if (key & b64(34359738368)) != b64(0) {
3057            b6(19)
3058        } else {
3059            b6(33)
3060        };
3061    out[7] = out[7]
3062        ^ if (key & b64(68719476736)) != b64(0) {
3063            b6(22)
3064        } else {
3065            b6(59)
3066        };
3067    out[7] = out[7]
3068        ^ if (key & b64(137438953472)) != b64(0) {
3069            b6(32)
3070        } else {
3071            b6(1)
3072        };
3073    out[7] = out[7]
3074        ^ if (key & b64(274877906944)) != b64(0) {
3075            b6(27)
3076        } else {
3077            b6(57)
3078        };
3079    out[7] = out[7]
3080        ^ if (key & b64(549755813888)) != b64(0) {
3081            b6(36)
3082        } else {
3083            b6(53)
3084        };
3085    out[7] = out[7]
3086        ^ if (key & b64(1099511627776)) != b64(0) {
3087            b6(16)
3088        } else {
3089            b6(48)
3090        };
3091    out[7] = out[7]
3092        ^ if (key & b64(2199023255552)) != b64(0) {
3093            b6(12)
3094        } else {
3095            b6(57)
3096        };
3097    out[7] = out[7]
3098        ^ if (key & b64(4398046511104)) != b64(0) {
3099            b6(4)
3100        } else {
3101            b6(12)
3102        };
3103    out[7] = out[7]
3104        ^ if (key & b64(8796093022208)) != b64(0) {
3105            b6(51)
3106        } else {
3107            b6(46)
3108        };
3109    out[7] = out[7]
3110        ^ if (key & b64(17592186044416)) != b64(0) {
3111            b6(48)
3112        } else {
3113            b6(61)
3114        };
3115    out[7] = out[7]
3116        ^ if (key & b64(35184372088832)) != b64(0) {
3117            b6(35)
3118        } else {
3119            b6(15)
3120        };
3121    out[7] = out[7]
3122        ^ if (key & b64(70368744177664)) != b64(0) {
3123            b6(27)
3124        } else {
3125            b6(13)
3126        };
3127    out[7] = out[7]
3128        ^ if (key & b64(140737488355328)) != b64(0) {
3129            b6(32)
3130        } else {
3131            b6(2)
3132        };
3133    out[7] = out[7]
3134        ^ if (key & b64(281474976710656)) != b64(0) {
3135            b6(35)
3136        } else {
3137            b6(46)
3138        };
3139    out[7] = out[7]
3140        ^ if (key & b64(562949953421312)) != b64(0) {
3141            b6(56)
3142        } else {
3143            b6(48)
3144        };
3145    out[7] = out[7]
3146        ^ if (key & b64(1125899906842624)) != b64(0) {
3147            b6(43)
3148        } else {
3149            b6(38)
3150        };
3151    out[7] = out[7]
3152        ^ if (key & b64(2251799813685248)) != b64(0) {
3153            b6(63)
3154        } else {
3155            b6(56)
3156        };
3157    out[7] = out[7]
3158        ^ if (key & b64(4503599627370496)) != b64(0) {
3159            b6(3)
3160        } else {
3161            b6(50)
3162        };
3163    out[7] = out[7]
3164        ^ if (key & b64(9007199254740992)) != b64(0) {
3165            b6(48)
3166        } else {
3167            b6(46)
3168        };
3169    out[7] = out[7]
3170        ^ if (key & b64(18014398509481984)) != b64(0) {
3171            b6(45)
3172        } else {
3173            b6(39)
3174        };
3175    out[7] = out[7]
3176        ^ if (key & b64(36028797018963968)) != b64(0) {
3177            b6(25)
3178        } else {
3179            b6(40)
3180        };
3181    out[7] = out[7]
3182        ^ if (key & b64(72057594037927936)) != b64(0) {
3183            b6(0)
3184        } else {
3185            b6(11)
3186        };
3187    out[7] = out[7]
3188        ^ if (key & b64(144115188075855872)) != b64(0) {
3189            b6(17)
3190        } else {
3191            b6(28)
3192        };
3193    out[7] = out[7]
3194        ^ if (key & b64(288230376151711744)) != b64(0) {
3195            b6(15)
3196        } else {
3197            b6(62)
3198        };
3199    out[7] = out[7]
3200        ^ if (key & b64(576460752303423488)) != b64(0) {
3201            b6(5)
3202        } else {
3203            b6(14)
3204        };
3205    out[7] = out[7]
3206        ^ if (key & b64(1152921504606846976)) != b64(0) {
3207            b6(48)
3208        } else {
3209            b6(30)
3210        };
3211    out[7] = out[7]
3212        ^ if (key & b64(2305843009213693952)) != b64(0) {
3213            b6(4)
3214        } else {
3215            b6(8)
3216        };
3217    out[7] = out[7]
3218        ^ if (key & b64(4611686018427387904)) != b64(0) {
3219            b6(31)
3220        } else {
3221            b6(57)
3222        };
3223    out[7] = out[7]
3224        ^ if (key & b64(9223372036854775808)) != b64(0) {
3225            b6(46)
3226        } else {
3227            b6(19)
3228        };
3229    out[8] = out[8]
3230        ^ if (key & b64(1)) != b64(0) {
3231            b6(30)
3232        } else {
3233            b6(46)
3234        };
3235    out[8] = out[8]
3236        ^ if (key & b64(2)) != b64(0) {
3237            b6(3)
3238        } else {
3239            b6(21)
3240        };
3241    out[8] = out[8]
3242        ^ if (key & b64(4)) != b64(0) {
3243            b6(44)
3244        } else {
3245            b6(57)
3246        };
3247    out[8] = out[8]
3248        ^ if (key & b64(8)) != b64(0) {
3249            b6(52)
3250        } else {
3251            b6(53)
3252        };
3253    out[8] = out[8]
3254        ^ if (key & b64(16)) != b64(0) {
3255            b6(20)
3256        } else {
3257            b6(41)
3258        };
3259    out[8] = out[8]
3260        ^ if (key & b64(32)) != b64(0) {
3261            b6(61)
3262        } else {
3263            b6(56)
3264        };
3265    out[8] = out[8]
3266        ^ if (key & b64(64)) != b64(0) {
3267            b6(57)
3268        } else {
3269            b6(20)
3270        };
3271    out[8] = out[8]
3272        ^ if (key & b64(128)) != b64(0) {
3273            b6(47)
3274        } else {
3275            b6(18)
3276        };
3277    out[8] = out[8]
3278        ^ if (key & b64(256)) != b64(0) {
3279            b6(5)
3280        } else {
3281            b6(56)
3282        };
3283    out[8] = out[8]
3284        ^ if (key & b64(512)) != b64(0) {
3285            b6(56)
3286        } else {
3287            b6(27)
3288        };
3289    out[8] = out[8]
3290        ^ if (key & b64(1024)) != b64(0) {
3291            b6(62)
3292        } else {
3293            b6(32)
3294        };
3295    out[8] = out[8]
3296        ^ if (key & b64(2048)) != b64(0) {
3297            b6(49)
3298        } else {
3299            b6(1)
3300        };
3301    out[8] = out[8]
3302        ^ if (key & b64(4096)) != b64(0) {
3303            b6(25)
3304        } else {
3305            b6(7)
3306        };
3307    out[8] = out[8]
3308        ^ if (key & b64(8192)) != b64(0) {
3309            b6(43)
3310        } else {
3311            b6(14)
3312        };
3313    out[8] = out[8]
3314        ^ if (key & b64(16384)) != b64(0) {
3315            b6(21)
3316        } else {
3317            b6(11)
3318        };
3319    out[8] = out[8]
3320        ^ if (key & b64(32768)) != b64(0) {
3321            b6(3)
3322        } else {
3323            b6(28)
3324        };
3325    out[8] = out[8]
3326        ^ if (key & b64(65536)) != b64(0) {
3327            b6(60)
3328        } else {
3329            b6(20)
3330        };
3331    out[8] = out[8]
3332        ^ if (key & b64(131072)) != b64(0) {
3333            b6(56)
3334        } else {
3335            b6(51)
3336        };
3337    out[8] = out[8]
3338        ^ if (key & b64(262144)) != b64(0) {
3339            b6(9)
3340        } else {
3341            b6(4)
3342        };
3343    out[8] = out[8]
3344        ^ if (key & b64(524288)) != b64(0) {
3345            b6(43)
3346        } else {
3347            b6(0)
3348        };
3349    out[8] = out[8]
3350        ^ if (key & b64(1048576)) != b64(0) {
3351            b6(58)
3352        } else {
3353            b6(53)
3354        };
3355    out[8] = out[8]
3356        ^ if (key & b64(2097152)) != b64(0) {
3357            b6(0)
3358        } else {
3359            b6(27)
3360        };
3361    out[8] = out[8]
3362        ^ if (key & b64(4194304)) != b64(0) {
3363            b6(52)
3364        } else {
3365            b6(39)
3366        };
3367    out[8] = out[8]
3368        ^ if (key & b64(8388608)) != b64(0) {
3369            b6(34)
3370        } else {
3371            b6(40)
3372        };
3373    out[8] = out[8]
3374        ^ if (key & b64(16777216)) != b64(0) {
3375            b6(13)
3376        } else {
3377            b6(0)
3378        };
3379    out[8] = out[8]
3380        ^ if (key & b64(33554432)) != b64(0) {
3381            b6(31)
3382        } else {
3383            b6(33)
3384        };
3385    out[8] = out[8]
3386        ^ if (key & b64(67108864)) != b64(0) {
3387            b6(42)
3388        } else {
3389            b6(8)
3390        };
3391    out[8] = out[8]
3392        ^ if (key & b64(134217728)) != b64(0) {
3393            b6(49)
3394        } else {
3395            b6(34)
3396        };
3397    out[8] = out[8]
3398        ^ if (key & b64(268435456)) != b64(0) {
3399            b6(7)
3400        } else {
3401            b6(54)
3402        };
3403    out[8] = out[8]
3404        ^ if (key & b64(536870912)) != b64(0) {
3405            b6(30)
3406        } else {
3407            b6(58)
3408        };
3409    out[8] = out[8]
3410        ^ if (key & b64(1073741824)) != b64(0) {
3411            b6(50)
3412        } else {
3413            b6(28)
3414        };
3415    out[8] = out[8]
3416        ^ if (key & b64(2147483648)) != b64(0) {
3417            b6(2)
3418        } else {
3419            b6(5)
3420        };
3421    out[8] = out[8]
3422        ^ if (key & b64(4294967296)) != b64(0) {
3423            b6(54)
3424        } else {
3425            b6(14)
3426        };
3427    out[8] = out[8]
3428        ^ if (key & b64(8589934592)) != b64(0) {
3429            b6(47)
3430        } else {
3431            b6(28)
3432        };
3433    out[8] = out[8]
3434        ^ if (key & b64(17179869184)) != b64(0) {
3435            b6(30)
3436        } else {
3437            b6(3)
3438        };
3439    out[8] = out[8]
3440        ^ if (key & b64(34359738368)) != b64(0) {
3441            b6(44)
3442        } else {
3443            b6(44)
3444        };
3445    out[8] = out[8]
3446        ^ if (key & b64(68719476736)) != b64(0) {
3447            b6(4)
3448        } else {
3449            b6(49)
3450        };
3451    out[8] = out[8]
3452        ^ if (key & b64(137438953472)) != b64(0) {
3453            b6(23)
3454        } else {
3455            b6(16)
3456        };
3457    out[8] = out[8]
3458        ^ if (key & b64(274877906944)) != b64(0) {
3459            b6(20)
3460        } else {
3461            b6(49)
3462        };
3463    out[8] = out[8]
3464        ^ if (key & b64(549755813888)) != b64(0) {
3465            b6(27)
3466        } else {
3467            b6(7)
3468        };
3469    out[8] = out[8]
3470        ^ if (key & b64(1099511627776)) != b64(0) {
3471            b6(57)
3472        } else {
3473            b6(62)
3474        };
3475    out[8] = out[8]
3476        ^ if (key & b64(2199023255552)) != b64(0) {
3477            b6(29)
3478        } else {
3479            b6(20)
3480        };
3481    out[8] = out[8]
3482        ^ if (key & b64(4398046511104)) != b64(0) {
3483            b6(54)
3484        } else {
3485            b6(44)
3486        };
3487    out[8] = out[8]
3488        ^ if (key & b64(8796093022208)) != b64(0) {
3489            b6(51)
3490        } else {
3491            b6(36)
3492        };
3493    out[8] = out[8]
3494        ^ if (key & b64(17592186044416)) != b64(0) {
3495            b6(6)
3496        } else {
3497            b6(50)
3498        };
3499    out[8] = out[8]
3500        ^ if (key & b64(35184372088832)) != b64(0) {
3501            b6(42)
3502        } else {
3503            b6(51)
3504        };
3505    out[8] = out[8]
3506        ^ if (key & b64(70368744177664)) != b64(0) {
3507            b6(19)
3508        } else {
3509            b6(48)
3510        };
3511    out[8] = out[8]
3512        ^ if (key & b64(140737488355328)) != b64(0) {
3513            b6(40)
3514        } else {
3515            b6(47)
3516        };
3517    out[8] = out[8]
3518        ^ if (key & b64(281474976710656)) != b64(0) {
3519            b6(43)
3520        } else {
3521            b6(3)
3522        };
3523    out[8] = out[8]
3524        ^ if (key & b64(562949953421312)) != b64(0) {
3525            b6(10)
3526        } else {
3527            b6(12)
3528        };
3529    out[8] = out[8]
3530        ^ if (key & b64(1125899906842624)) != b64(0) {
3531            b6(55)
3532        } else {
3533            b6(35)
3534        };
3535    out[8] = out[8]
3536        ^ if (key & b64(2251799813685248)) != b64(0) {
3537            b6(21)
3538        } else {
3539            b6(57)
3540        };
3541    out[8] = out[8]
3542        ^ if (key & b64(4503599627370496)) != b64(0) {
3543            b6(17)
3544        } else {
3545            b6(39)
3546        };
3547    out[8] = out[8]
3548        ^ if (key & b64(9007199254740992)) != b64(0) {
3549            b6(57)
3550        } else {
3551            b6(30)
3552        };
3553    out[8] = out[8]
3554        ^ if (key & b64(18014398509481984)) != b64(0) {
3555            b6(8)
3556        } else {
3557            b6(56)
3558        };
3559    out[8] = out[8]
3560        ^ if (key & b64(36028797018963968)) != b64(0) {
3561            b6(30)
3562        } else {
3563            b6(20)
3564        };
3565    out[8] = out[8]
3566        ^ if (key & b64(72057594037927936)) != b64(0) {
3567            b6(48)
3568        } else {
3569            b6(28)
3570        };
3571    out[8] = out[8]
3572        ^ if (key & b64(144115188075855872)) != b64(0) {
3573            b6(12)
3574        } else {
3575            b6(48)
3576        };
3577    out[8] = out[8]
3578        ^ if (key & b64(288230376151711744)) != b64(0) {
3579            b6(8)
3580        } else {
3581            b6(1)
3582        };
3583    out[8] = out[8]
3584        ^ if (key & b64(576460752303423488)) != b64(0) {
3585            b6(33)
3586        } else {
3587            b6(6)
3588        };
3589    out[8] = out[8]
3590        ^ if (key & b64(1152921504606846976)) != b64(0) {
3591            b6(17)
3592        } else {
3593            b6(57)
3594        };
3595    out[8] = out[8]
3596        ^ if (key & b64(2305843009213693952)) != b64(0) {
3597            b6(11)
3598        } else {
3599            b6(1)
3600        };
3601    out[8] = out[8]
3602        ^ if (key & b64(4611686018427387904)) != b64(0) {
3603            b6(46)
3604        } else {
3605            b6(41)
3606        };
3607    out[8] = out[8]
3608        ^ if (key & b64(9223372036854775808)) != b64(0) {
3609            b6(14)
3610        } else {
3611            b6(11)
3612        };
3613    out
3614}