Initial commit
[hashcat.git] / nv / m06100_a3.cu
1 /**
2  * Author......: Jens Steube <jens.steube@gmail.com>
3  * License.....: MIT
4  */
5
6 #define _WHIRLPOOL_
7
8 #include "include/constants.h"
9 #include "include/kernel_vendor.h"
10
11 #ifdef  VLIW1
12 #define VECT_SIZE1
13 #endif
14
15 #ifdef  VLIW2
16 #define VECT_SIZE1
17 #endif
18
19 #define DGST_R0 0
20 #define DGST_R1 1
21 #define DGST_R2 2
22 #define DGST_R3 3
23
24 #include "include/kernel_functions.c"
25 #include "types_nv.c"
26 #include "common_nv.c"
27
28 #ifdef  VECT_SIZE1
29 #define VECT_COMPARE_S "check_single_vect1_comp4.c"
30 #define VECT_COMPARE_M "check_multi_vect1_comp4.c"
31 #endif
32
33 #ifdef  VECT_SIZE2
34 #define VECT_COMPARE_S "check_single_vect2_comp4.c"
35 #define VECT_COMPARE_M "check_multi_vect2_comp4.c"
36 #endif
37
38 #define R 10
39
40 #ifdef VECT_SIZE1
41 #define BOX(S,n,i) u32x ((S)[(n)][(i)])
42 #endif
43
44 #ifdef VECT_SIZE2
45 #define BOX(S,n,i) u32x ((S)[(n)][(i).x], (S)[(n)][(i).y])
46 #endif
47
48 __device__ __constant__ u32 Ch[8][256] =
49 {
50   {
51     0x18186018, 0x23238c23, 0xc6c63fc6, 0xe8e887e8,
52     0x87872687, 0xb8b8dab8, 0x01010401, 0x4f4f214f,
53     0x3636d836, 0xa6a6a2a6, 0xd2d26fd2, 0xf5f5f3f5,
54     0x7979f979, 0x6f6fa16f, 0x91917e91, 0x52525552,
55     0x60609d60, 0xbcbccabc, 0x9b9b569b, 0x8e8e028e,
56     0xa3a3b6a3, 0x0c0c300c, 0x7b7bf17b, 0x3535d435,
57     0x1d1d741d, 0xe0e0a7e0, 0xd7d77bd7, 0xc2c22fc2,
58     0x2e2eb82e, 0x4b4b314b, 0xfefedffe, 0x57574157,
59     0x15155415, 0x7777c177, 0x3737dc37, 0xe5e5b3e5,
60     0x9f9f469f, 0xf0f0e7f0, 0x4a4a354a, 0xdada4fda,
61     0x58587d58, 0xc9c903c9, 0x2929a429, 0x0a0a280a,
62     0xb1b1feb1, 0xa0a0baa0, 0x6b6bb16b, 0x85852e85,
63     0xbdbdcebd, 0x5d5d695d, 0x10104010, 0xf4f4f7f4,
64     0xcbcb0bcb, 0x3e3ef83e, 0x05051405, 0x67678167,
65     0xe4e4b7e4, 0x27279c27, 0x41411941, 0x8b8b168b,
66     0xa7a7a6a7, 0x7d7de97d, 0x95956e95, 0xd8d847d8,
67     0xfbfbcbfb, 0xeeee9fee, 0x7c7ced7c, 0x66668566,
68     0xdddd53dd, 0x17175c17, 0x47470147, 0x9e9e429e,
69     0xcaca0fca, 0x2d2db42d, 0xbfbfc6bf, 0x07071c07,
70     0xadad8ead, 0x5a5a755a, 0x83833683, 0x3333cc33,
71     0x63639163, 0x02020802, 0xaaaa92aa, 0x7171d971,
72     0xc8c807c8, 0x19196419, 0x49493949, 0xd9d943d9,
73     0xf2f2eff2, 0xe3e3abe3, 0x5b5b715b, 0x88881a88,
74     0x9a9a529a, 0x26269826, 0x3232c832, 0xb0b0fab0,
75     0xe9e983e9, 0x0f0f3c0f, 0xd5d573d5, 0x80803a80,
76     0xbebec2be, 0xcdcd13cd, 0x3434d034, 0x48483d48,
77     0xffffdbff, 0x7a7af57a, 0x90907a90, 0x5f5f615f,
78     0x20208020, 0x6868bd68, 0x1a1a681a, 0xaeae82ae,
79     0xb4b4eab4, 0x54544d54, 0x93937693, 0x22228822,
80     0x64648d64, 0xf1f1e3f1, 0x7373d173, 0x12124812,
81     0x40401d40, 0x08082008, 0xc3c32bc3, 0xecec97ec,
82     0xdbdb4bdb, 0xa1a1bea1, 0x8d8d0e8d, 0x3d3df43d,
83     0x97976697, 0x00000000, 0xcfcf1bcf, 0x2b2bac2b,
84     0x7676c576, 0x82823282, 0xd6d67fd6, 0x1b1b6c1b,
85     0xb5b5eeb5, 0xafaf86af, 0x6a6ab56a, 0x50505d50,
86     0x45450945, 0xf3f3ebf3, 0x3030c030, 0xefef9bef,
87     0x3f3ffc3f, 0x55554955, 0xa2a2b2a2, 0xeaea8fea,
88     0x65658965, 0xbabad2ba, 0x2f2fbc2f, 0xc0c027c0,
89     0xdede5fde, 0x1c1c701c, 0xfdfdd3fd, 0x4d4d294d,
90     0x92927292, 0x7575c975, 0x06061806, 0x8a8a128a,
91     0xb2b2f2b2, 0xe6e6bfe6, 0x0e0e380e, 0x1f1f7c1f,
92     0x62629562, 0xd4d477d4, 0xa8a89aa8, 0x96966296,
93     0xf9f9c3f9, 0xc5c533c5, 0x25259425, 0x59597959,
94     0x84842a84, 0x7272d572, 0x3939e439, 0x4c4c2d4c,
95     0x5e5e655e, 0x7878fd78, 0x3838e038, 0x8c8c0a8c,
96     0xd1d163d1, 0xa5a5aea5, 0xe2e2afe2, 0x61619961,
97     0xb3b3f6b3, 0x21218421, 0x9c9c4a9c, 0x1e1e781e,
98     0x43431143, 0xc7c73bc7, 0xfcfcd7fc, 0x04041004,
99     0x51515951, 0x99995e99, 0x6d6da96d, 0x0d0d340d,
100     0xfafacffa, 0xdfdf5bdf, 0x7e7ee57e, 0x24249024,
101     0x3b3bec3b, 0xabab96ab, 0xcece1fce, 0x11114411,
102     0x8f8f068f, 0x4e4e254e, 0xb7b7e6b7, 0xebeb8beb,
103     0x3c3cf03c, 0x81813e81, 0x94946a94, 0xf7f7fbf7,
104     0xb9b9deb9, 0x13134c13, 0x2c2cb02c, 0xd3d36bd3,
105     0xe7e7bbe7, 0x6e6ea56e, 0xc4c437c4, 0x03030c03,
106     0x56564556, 0x44440d44, 0x7f7fe17f, 0xa9a99ea9,
107     0x2a2aa82a, 0xbbbbd6bb, 0xc1c123c1, 0x53535153,
108     0xdcdc57dc, 0x0b0b2c0b, 0x9d9d4e9d, 0x6c6cad6c,
109     0x3131c431, 0x7474cd74, 0xf6f6fff6, 0x46460546,
110     0xacac8aac, 0x89891e89, 0x14145014, 0xe1e1a3e1,
111     0x16165816, 0x3a3ae83a, 0x6969b969, 0x09092409,
112     0x7070dd70, 0xb6b6e2b6, 0xd0d067d0, 0xeded93ed,
113     0xcccc17cc, 0x42421542, 0x98985a98, 0xa4a4aaa4,
114     0x2828a028, 0x5c5c6d5c, 0xf8f8c7f8, 0x86862286,
115   },
116   {
117     0xd8181860, 0x2623238c, 0xb8c6c63f, 0xfbe8e887,
118     0xcb878726, 0x11b8b8da, 0x09010104, 0x0d4f4f21,
119     0x9b3636d8, 0xffa6a6a2, 0x0cd2d26f, 0x0ef5f5f3,
120     0x967979f9, 0x306f6fa1, 0x6d91917e, 0xf8525255,
121     0x4760609d, 0x35bcbcca, 0x379b9b56, 0x8a8e8e02,
122     0xd2a3a3b6, 0x6c0c0c30, 0x847b7bf1, 0x803535d4,
123     0xf51d1d74, 0xb3e0e0a7, 0x21d7d77b, 0x9cc2c22f,
124     0x432e2eb8, 0x294b4b31, 0x5dfefedf, 0xd5575741,
125     0xbd151554, 0xe87777c1, 0x923737dc, 0x9ee5e5b3,
126     0x139f9f46, 0x23f0f0e7, 0x204a4a35, 0x44dada4f,
127     0xa258587d, 0xcfc9c903, 0x7c2929a4, 0x5a0a0a28,
128     0x50b1b1fe, 0xc9a0a0ba, 0x146b6bb1, 0xd985852e,
129     0x3cbdbdce, 0x8f5d5d69, 0x90101040, 0x07f4f4f7,
130     0xddcbcb0b, 0xd33e3ef8, 0x2d050514, 0x78676781,
131     0x97e4e4b7, 0x0227279c, 0x73414119, 0xa78b8b16,
132     0xf6a7a7a6, 0xb27d7de9, 0x4995956e, 0x56d8d847,
133     0x70fbfbcb, 0xcdeeee9f, 0xbb7c7ced, 0x71666685,
134     0x7bdddd53, 0xaf17175c, 0x45474701, 0x1a9e9e42,
135     0xd4caca0f, 0x582d2db4, 0x2ebfbfc6, 0x3f07071c,
136     0xacadad8e, 0xb05a5a75, 0xef838336, 0xb63333cc,
137     0x5c636391, 0x12020208, 0x93aaaa92, 0xde7171d9,
138     0xc6c8c807, 0xd1191964, 0x3b494939, 0x5fd9d943,
139     0x31f2f2ef, 0xa8e3e3ab, 0xb95b5b71, 0xbc88881a,
140     0x3e9a9a52, 0x0b262698, 0xbf3232c8, 0x59b0b0fa,
141     0xf2e9e983, 0x770f0f3c, 0x33d5d573, 0xf480803a,
142     0x27bebec2, 0xebcdcd13, 0x893434d0, 0x3248483d,
143     0x54ffffdb, 0x8d7a7af5, 0x6490907a, 0x9d5f5f61,
144     0x3d202080, 0x0f6868bd, 0xca1a1a68, 0xb7aeae82,
145     0x7db4b4ea, 0xce54544d, 0x7f939376, 0x2f222288,
146     0x6364648d, 0x2af1f1e3, 0xcc7373d1, 0x82121248,
147     0x7a40401d, 0x48080820, 0x95c3c32b, 0xdfecec97,
148     0x4ddbdb4b, 0xc0a1a1be, 0x918d8d0e, 0xc83d3df4,
149     0x5b979766, 0x00000000, 0xf9cfcf1b, 0x6e2b2bac,
150     0xe17676c5, 0xe6828232, 0x28d6d67f, 0xc31b1b6c,
151     0x74b5b5ee, 0xbeafaf86, 0x1d6a6ab5, 0xea50505d,
152     0x57454509, 0x38f3f3eb, 0xad3030c0, 0xc4efef9b,
153     0xda3f3ffc, 0xc7555549, 0xdba2a2b2, 0xe9eaea8f,
154     0x6a656589, 0x03babad2, 0x4a2f2fbc, 0x8ec0c027,
155     0x60dede5f, 0xfc1c1c70, 0x46fdfdd3, 0x1f4d4d29,
156     0x76929272, 0xfa7575c9, 0x36060618, 0xae8a8a12,
157     0x4bb2b2f2, 0x85e6e6bf, 0x7e0e0e38, 0xe71f1f7c,
158     0x55626295, 0x3ad4d477, 0x81a8a89a, 0x52969662,
159     0x62f9f9c3, 0xa3c5c533, 0x10252594, 0xab595979,
160     0xd084842a, 0xc57272d5, 0xec3939e4, 0x164c4c2d,
161     0x945e5e65, 0x9f7878fd, 0xe53838e0, 0x988c8c0a,
162     0x17d1d163, 0xe4a5a5ae, 0xa1e2e2af, 0x4e616199,
163     0x42b3b3f6, 0x34212184, 0x089c9c4a, 0xee1e1e78,
164     0x61434311, 0xb1c7c73b, 0x4ffcfcd7, 0x24040410,
165     0xe3515159, 0x2599995e, 0x226d6da9, 0x650d0d34,
166     0x79fafacf, 0x69dfdf5b, 0xa97e7ee5, 0x19242490,
167     0xfe3b3bec, 0x9aabab96, 0xf0cece1f, 0x99111144,
168     0x838f8f06, 0x044e4e25, 0x66b7b7e6, 0xe0ebeb8b,
169     0xc13c3cf0, 0xfd81813e, 0x4094946a, 0x1cf7f7fb,
170     0x18b9b9de, 0x8b13134c, 0x512c2cb0, 0x05d3d36b,
171     0x8ce7e7bb, 0x396e6ea5, 0xaac4c437, 0x1b03030c,
172     0xdc565645, 0x5e44440d, 0xa07f7fe1, 0x88a9a99e,
173     0x672a2aa8, 0x0abbbbd6, 0x87c1c123, 0xf1535351,
174     0x72dcdc57, 0x530b0b2c, 0x019d9d4e, 0x2b6c6cad,
175     0xa43131c4, 0xf37474cd, 0x15f6f6ff, 0x4c464605,
176     0xa5acac8a, 0xb589891e, 0xb4141450, 0xbae1e1a3,
177     0xa6161658, 0xf73a3ae8, 0x066969b9, 0x41090924,
178     0xd77070dd, 0x6fb6b6e2, 0x1ed0d067, 0xd6eded93,
179     0xe2cccc17, 0x68424215, 0x2c98985a, 0xeda4a4aa,
180     0x752828a0, 0x865c5c6d, 0x6bf8f8c7, 0xc2868622,
181   },
182   {
183     0x30d81818, 0x46262323, 0x91b8c6c6, 0xcdfbe8e8,
184     0x13cb8787, 0x6d11b8b8, 0x02090101, 0x9e0d4f4f,
185     0x6c9b3636, 0x51ffa6a6, 0xb90cd2d2, 0xf70ef5f5,
186     0xf2967979, 0xde306f6f, 0x3f6d9191, 0xa4f85252,
187     0xc0476060, 0x6535bcbc, 0x2b379b9b, 0x018a8e8e,
188     0x5bd2a3a3, 0x186c0c0c, 0xf6847b7b, 0x6a803535,
189     0x3af51d1d, 0xddb3e0e0, 0xb321d7d7, 0x999cc2c2,
190     0x5c432e2e, 0x96294b4b, 0xe15dfefe, 0xaed55757,
191     0x2abd1515, 0xeee87777, 0x6e923737, 0xd79ee5e5,
192     0x23139f9f, 0xfd23f0f0, 0x94204a4a, 0xa944dada,
193     0xb0a25858, 0x8fcfc9c9, 0x527c2929, 0x145a0a0a,
194     0x7f50b1b1, 0x5dc9a0a0, 0xd6146b6b, 0x17d98585,
195     0x673cbdbd, 0xba8f5d5d, 0x20901010, 0xf507f4f4,
196     0x8bddcbcb, 0x7cd33e3e, 0x0a2d0505, 0xce786767,
197     0xd597e4e4, 0x4e022727, 0x82734141, 0x0ba78b8b,
198     0x53f6a7a7, 0xfab27d7d, 0x37499595, 0xad56d8d8,
199     0xeb70fbfb, 0xc1cdeeee, 0xf8bb7c7c, 0xcc716666,
200     0xa77bdddd, 0x2eaf1717, 0x8e454747, 0x211a9e9e,
201     0x89d4caca, 0x5a582d2d, 0x632ebfbf, 0x0e3f0707,
202     0x47acadad, 0xb4b05a5a, 0x1bef8383, 0x66b63333,
203     0xc65c6363, 0x04120202, 0x4993aaaa, 0xe2de7171,
204     0x8dc6c8c8, 0x32d11919, 0x923b4949, 0xaf5fd9d9,
205     0xf931f2f2, 0xdba8e3e3, 0xb6b95b5b, 0x0dbc8888,
206     0x293e9a9a, 0x4c0b2626, 0x64bf3232, 0x7d59b0b0,
207     0xcff2e9e9, 0x1e770f0f, 0xb733d5d5, 0x1df48080,
208     0x6127bebe, 0x87ebcdcd, 0x68893434, 0x90324848,
209     0xe354ffff, 0xf48d7a7a, 0x3d649090, 0xbe9d5f5f,
210     0x403d2020, 0xd00f6868, 0x34ca1a1a, 0x41b7aeae,
211     0x757db4b4, 0xa8ce5454, 0x3b7f9393, 0x442f2222,
212     0xc8636464, 0xff2af1f1, 0xe6cc7373, 0x24821212,
213     0x807a4040, 0x10480808, 0x9b95c3c3, 0xc5dfecec,
214     0xab4ddbdb, 0x5fc0a1a1, 0x07918d8d, 0x7ac83d3d,
215     0x335b9797, 0x00000000, 0x83f9cfcf, 0x566e2b2b,
216     0xece17676, 0x19e68282, 0xb128d6d6, 0x36c31b1b,
217     0x7774b5b5, 0x43beafaf, 0xd41d6a6a, 0xa0ea5050,
218     0x8a574545, 0xfb38f3f3, 0x60ad3030, 0xc3c4efef,
219     0x7eda3f3f, 0xaac75555, 0x59dba2a2, 0xc9e9eaea,
220     0xca6a6565, 0x6903baba, 0x5e4a2f2f, 0x9d8ec0c0,
221     0xa160dede, 0x38fc1c1c, 0xe746fdfd, 0x9a1f4d4d,
222     0x39769292, 0xeafa7575, 0x0c360606, 0x09ae8a8a,
223     0x794bb2b2, 0xd185e6e6, 0x1c7e0e0e, 0x3ee71f1f,
224     0xc4556262, 0xb53ad4d4, 0x4d81a8a8, 0x31529696,
225     0xef62f9f9, 0x97a3c5c5, 0x4a102525, 0xb2ab5959,
226     0x15d08484, 0xe4c57272, 0x72ec3939, 0x98164c4c,
227     0xbc945e5e, 0xf09f7878, 0x70e53838, 0x05988c8c,
228     0xbf17d1d1, 0x57e4a5a5, 0xd9a1e2e2, 0xc24e6161,
229     0x7b42b3b3, 0x42342121, 0x25089c9c, 0x3cee1e1e,
230     0x86614343, 0x93b1c7c7, 0xe54ffcfc, 0x08240404,
231     0xa2e35151, 0x2f259999, 0xda226d6d, 0x1a650d0d,
232     0xe979fafa, 0xa369dfdf, 0xfca97e7e, 0x48192424,
233     0x76fe3b3b, 0x4b9aabab, 0x81f0cece, 0x22991111,
234     0x03838f8f, 0x9c044e4e, 0x7366b7b7, 0xcbe0ebeb,
235     0x78c13c3c, 0x1ffd8181, 0x35409494, 0xf31cf7f7,
236     0x6f18b9b9, 0x268b1313, 0x58512c2c, 0xbb05d3d3,
237     0xd38ce7e7, 0xdc396e6e, 0x95aac4c4, 0x061b0303,
238     0xacdc5656, 0x885e4444, 0xfea07f7f, 0x4f88a9a9,
239     0x54672a2a, 0x6b0abbbb, 0x9f87c1c1, 0xa6f15353,
240     0xa572dcdc, 0x16530b0b, 0x27019d9d, 0xd82b6c6c,
241     0x62a43131, 0xe8f37474, 0xf115f6f6, 0x8c4c4646,
242     0x45a5acac, 0x0fb58989, 0x28b41414, 0xdfbae1e1,
243     0x2ca61616, 0x74f73a3a, 0xd2066969, 0x12410909,
244     0xe0d77070, 0x716fb6b6, 0xbd1ed0d0, 0xc7d6eded,
245     0x85e2cccc, 0x84684242, 0x2d2c9898, 0x55eda4a4,
246     0x50752828, 0xb8865c5c, 0xed6bf8f8, 0x11c28686,
247   },
248   {
249     0x7830d818, 0xaf462623, 0xf991b8c6, 0x6fcdfbe8,
250     0xa113cb87, 0x626d11b8, 0x05020901, 0x6e9e0d4f,
251     0xee6c9b36, 0x0451ffa6, 0xbdb90cd2, 0x06f70ef5,
252     0x80f29679, 0xcede306f, 0xef3f6d91, 0x07a4f852,
253     0xfdc04760, 0x766535bc, 0xcd2b379b, 0x8c018a8e,
254     0x155bd2a3, 0x3c186c0c, 0x8af6847b, 0xe16a8035,
255     0x693af51d, 0x47ddb3e0, 0xacb321d7, 0xed999cc2,
256     0x965c432e, 0x7a96294b, 0x21e15dfe, 0x16aed557,
257     0x412abd15, 0xb6eee877, 0xeb6e9237, 0x56d79ee5,
258     0xd923139f, 0x17fd23f0, 0x7f94204a, 0x95a944da,
259     0x25b0a258, 0xca8fcfc9, 0x8d527c29, 0x22145a0a,
260     0x4f7f50b1, 0x1a5dc9a0, 0xdad6146b, 0xab17d985,
261     0x73673cbd, 0x34ba8f5d, 0x50209010, 0x03f507f4,
262     0xc08bddcb, 0xc67cd33e, 0x110a2d05, 0xe6ce7867,
263     0x53d597e4, 0xbb4e0227, 0x58827341, 0x9d0ba78b,
264     0x0153f6a7, 0x94fab27d, 0xfb374995, 0x9fad56d8,
265     0x30eb70fb, 0x71c1cdee, 0x91f8bb7c, 0xe3cc7166,
266     0x8ea77bdd, 0x4b2eaf17, 0x468e4547, 0xdc211a9e,
267     0xc589d4ca, 0x995a582d, 0x79632ebf, 0x1b0e3f07,
268     0x2347acad, 0x2fb4b05a, 0xb51bef83, 0xff66b633,
269     0xf2c65c63, 0x0a041202, 0x384993aa, 0xa8e2de71,
270     0xcf8dc6c8, 0x7d32d119, 0x70923b49, 0x9aaf5fd9,
271     0x1df931f2, 0x48dba8e3, 0x2ab6b95b, 0x920dbc88,
272     0xc8293e9a, 0xbe4c0b26, 0xfa64bf32, 0x4a7d59b0,
273     0x6acff2e9, 0x331e770f, 0xa6b733d5, 0xba1df480,
274     0x7c6127be, 0xde87ebcd, 0xe4688934, 0x75903248,
275     0x24e354ff, 0x8ff48d7a, 0xea3d6490, 0x3ebe9d5f,
276     0xa0403d20, 0xd5d00f68, 0x7234ca1a, 0x2c41b7ae,
277     0x5e757db4, 0x19a8ce54, 0xe53b7f93, 0xaa442f22,
278     0xe9c86364, 0x12ff2af1, 0xa2e6cc73, 0x5a248212,
279     0x5d807a40, 0x28104808, 0xe89b95c3, 0x7bc5dfec,
280     0x90ab4ddb, 0x1f5fc0a1, 0x8307918d, 0xc97ac83d,
281     0xf1335b97, 0x00000000, 0xd483f9cf, 0x87566e2b,
282     0xb3ece176, 0xb019e682, 0xa9b128d6, 0x7736c31b,
283     0x5b7774b5, 0x2943beaf, 0xdfd41d6a, 0x0da0ea50,
284     0x4c8a5745, 0x18fb38f3, 0xf060ad30, 0x74c3c4ef,
285     0xc37eda3f, 0x1caac755, 0x1059dba2, 0x65c9e9ea,
286     0xecca6a65, 0x686903ba, 0x935e4a2f, 0xe79d8ec0,
287     0x81a160de, 0x6c38fc1c, 0x2ee746fd, 0x649a1f4d,
288     0xe0397692, 0xbceafa75, 0x1e0c3606, 0x9809ae8a,
289     0x40794bb2, 0x59d185e6, 0x361c7e0e, 0x633ee71f,
290     0xf7c45562, 0xa3b53ad4, 0x324d81a8, 0xf4315296,
291     0x3aef62f9, 0xf697a3c5, 0xb14a1025, 0x20b2ab59,
292     0xae15d084, 0xa7e4c572, 0xdd72ec39, 0x6198164c,
293     0x3bbc945e, 0x85f09f78, 0xd870e538, 0x8605988c,
294     0xb2bf17d1, 0x0b57e4a5, 0x4dd9a1e2, 0xf8c24e61,
295     0x457b42b3, 0xa5423421, 0xd625089c, 0x663cee1e,
296     0x52866143, 0xfc93b1c7, 0x2be54ffc, 0x14082404,
297     0x08a2e351, 0xc72f2599, 0xc4da226d, 0x391a650d,
298     0x35e979fa, 0x84a369df, 0x9bfca97e, 0xb4481924,
299     0xd776fe3b, 0x3d4b9aab, 0xd181f0ce, 0x55229911,
300     0x8903838f, 0x6b9c044e, 0x517366b7, 0x60cbe0eb,
301     0xcc78c13c, 0xbf1ffd81, 0xfe354094, 0x0cf31cf7,
302     0x676f18b9, 0x5f268b13, 0x9c58512c, 0xb8bb05d3,
303     0x5cd38ce7, 0xcbdc396e, 0xf395aac4, 0x0f061b03,
304     0x13acdc56, 0x49885e44, 0x9efea07f, 0x374f88a9,
305     0x8254672a, 0x6d6b0abb, 0xe29f87c1, 0x02a6f153,
306     0x8ba572dc, 0x2716530b, 0xd327019d, 0xc1d82b6c,
307     0xf562a431, 0xb9e8f374, 0x09f115f6, 0x438c4c46,
308     0x2645a5ac, 0x970fb589, 0x4428b414, 0x42dfbae1,
309     0x4e2ca616, 0xd274f73a, 0xd0d20669, 0x2d124109,
310     0xade0d770, 0x54716fb6, 0xb7bd1ed0, 0x7ec7d6ed,
311     0xdb85e2cc, 0x57846842, 0xc22d2c98, 0x0e55eda4,
312     0x88507528, 0x31b8865c, 0x3fed6bf8, 0xa411c286,
313   },
314   {
315     0xc07830d8, 0x05af4626, 0x7ef991b8, 0x136fcdfb,
316     0x4ca113cb, 0xa9626d11, 0x08050209, 0x426e9e0d,
317     0xadee6c9b, 0x590451ff, 0xdebdb90c, 0xfb06f70e,
318     0xef80f296, 0x5fcede30, 0xfcef3f6d, 0xaa07a4f8,
319     0x27fdc047, 0x89766535, 0xaccd2b37, 0x048c018a,
320     0x71155bd2, 0x603c186c, 0xff8af684, 0xb5e16a80,
321     0xe8693af5, 0x5347ddb3, 0xf6acb321, 0x5eed999c,
322     0x6d965c43, 0x627a9629, 0xa321e15d, 0x8216aed5,
323     0xa8412abd, 0x9fb6eee8, 0xa5eb6e92, 0x7b56d79e,
324     0x8cd92313, 0xd317fd23, 0x6a7f9420, 0x9e95a944,
325     0xfa25b0a2, 0x06ca8fcf, 0x558d527c, 0x5022145a,
326     0xe14f7f50, 0x691a5dc9, 0x7fdad614, 0x5cab17d9,
327     0x8173673c, 0xd234ba8f, 0x80502090, 0xf303f507,
328     0x16c08bdd, 0xedc67cd3, 0x28110a2d, 0x1fe6ce78,
329     0x7353d597, 0x25bb4e02, 0x32588273, 0x2c9d0ba7,
330     0x510153f6, 0xcf94fab2, 0xdcfb3749, 0x8e9fad56,
331     0x8b30eb70, 0x2371c1cd, 0xc791f8bb, 0x17e3cc71,
332     0xa68ea77b, 0xb84b2eaf, 0x02468e45, 0x84dc211a,
333     0x1ec589d4, 0x75995a58, 0x9179632e, 0x381b0e3f,
334     0x012347ac, 0xea2fb4b0, 0x6cb51bef, 0x85ff66b6,
335     0x3ff2c65c, 0x100a0412, 0x39384993, 0xafa8e2de,
336     0x0ecf8dc6, 0xc87d32d1, 0x7270923b, 0x869aaf5f,
337     0xc31df931, 0x4b48dba8, 0xe22ab6b9, 0x34920dbc,
338     0xa4c8293e, 0x2dbe4c0b, 0x8dfa64bf, 0xe94a7d59,
339     0x1b6acff2, 0x78331e77, 0xe6a6b733, 0x74ba1df4,
340     0x997c6127, 0x26de87eb, 0xbde46889, 0x7a759032,
341     0xab24e354, 0xf78ff48d, 0xf4ea3d64, 0xc23ebe9d,
342     0x1da0403d, 0x67d5d00f, 0xd07234ca, 0x192c41b7,
343     0xc95e757d, 0x9a19a8ce, 0xece53b7f, 0x0daa442f,
344     0x07e9c863, 0xdb12ff2a, 0xbfa2e6cc, 0x905a2482,
345     0x3a5d807a, 0x40281048, 0x56e89b95, 0x337bc5df,
346     0x9690ab4d, 0x611f5fc0, 0x1c830791, 0xf5c97ac8,
347     0xccf1335b, 0x00000000, 0x36d483f9, 0x4587566e,
348     0x97b3ece1, 0x64b019e6, 0xfea9b128, 0xd87736c3,
349     0xc15b7774, 0x112943be, 0x77dfd41d, 0xba0da0ea,
350     0x124c8a57, 0xcb18fb38, 0x9df060ad, 0x2b74c3c4,
351     0xe5c37eda, 0x921caac7, 0x791059db, 0x0365c9e9,
352     0x0fecca6a, 0xb9686903, 0x65935e4a, 0x4ee79d8e,
353     0xbe81a160, 0xe06c38fc, 0xbb2ee746, 0x52649a1f,
354     0xe4e03976, 0x8fbceafa, 0x301e0c36, 0x249809ae,
355     0xf940794b, 0x6359d185, 0x70361c7e, 0xf8633ee7,
356     0x37f7c455, 0xeea3b53a, 0x29324d81, 0xc4f43152,
357     0x9b3aef62, 0x66f697a3, 0x35b14a10, 0xf220b2ab,
358     0x54ae15d0, 0xb7a7e4c5, 0xd5dd72ec, 0x5a619816,
359     0xca3bbc94, 0xe785f09f, 0xddd870e5, 0x14860598,
360     0xc6b2bf17, 0x410b57e4, 0x434dd9a1, 0x2ff8c24e,
361     0xf1457b42, 0x15a54234, 0x94d62508, 0xf0663cee,
362     0x22528661, 0x76fc93b1, 0xb32be54f, 0x20140824,
363     0xb208a2e3, 0xbcc72f25, 0x4fc4da22, 0x68391a65,
364     0x8335e979, 0xb684a369, 0xd79bfca9, 0x3db44819,
365     0xc5d776fe, 0x313d4b9a, 0x3ed181f0, 0x88552299,
366     0x0c890383, 0x4a6b9c04, 0xd1517366, 0x0b60cbe0,
367     0xfdcc78c1, 0x7cbf1ffd, 0xd4fe3540, 0xeb0cf31c,
368     0xa1676f18, 0x985f268b, 0x7d9c5851, 0xd6b8bb05,
369     0x6b5cd38c, 0x57cbdc39, 0x6ef395aa, 0x180f061b,
370     0x8a13acdc, 0x1a49885e, 0xdf9efea0, 0x21374f88,
371     0x4d825467, 0xb16d6b0a, 0x46e29f87, 0xa202a6f1,
372     0xae8ba572, 0x58271653, 0x9cd32701, 0x47c1d82b,
373     0x95f562a4, 0x87b9e8f3, 0xe309f115, 0x0a438c4c,
374     0x092645a5, 0x3c970fb5, 0xa04428b4, 0x5b42dfba,
375     0xb04e2ca6, 0xcdd274f7, 0x6fd0d206, 0x482d1241,
376     0xa7ade0d7, 0xd954716f, 0xceb7bd1e, 0x3b7ec7d6,
377     0x2edb85e2, 0x2a578468, 0xb4c22d2c, 0x490e55ed,
378     0x5d885075, 0xda31b886, 0x933fed6b, 0x44a411c2,
379   },
380   {
381     0x18c07830, 0x2305af46, 0xc67ef991, 0xe8136fcd,
382     0x874ca113, 0xb8a9626d, 0x01080502, 0x4f426e9e,
383     0x36adee6c, 0xa6590451, 0xd2debdb9, 0xf5fb06f7,
384     0x79ef80f2, 0x6f5fcede, 0x91fcef3f, 0x52aa07a4,
385     0x6027fdc0, 0xbc897665, 0x9baccd2b, 0x8e048c01,
386     0xa371155b, 0x0c603c18, 0x7bff8af6, 0x35b5e16a,
387     0x1de8693a, 0xe05347dd, 0xd7f6acb3, 0xc25eed99,
388     0x2e6d965c, 0x4b627a96, 0xfea321e1, 0x578216ae,
389     0x15a8412a, 0x779fb6ee, 0x37a5eb6e, 0xe57b56d7,
390     0x9f8cd923, 0xf0d317fd, 0x4a6a7f94, 0xda9e95a9,
391     0x58fa25b0, 0xc906ca8f, 0x29558d52, 0x0a502214,
392     0xb1e14f7f, 0xa0691a5d, 0x6b7fdad6, 0x855cab17,
393     0xbd817367, 0x5dd234ba, 0x10805020, 0xf4f303f5,
394     0xcb16c08b, 0x3eedc67c, 0x0528110a, 0x671fe6ce,
395     0xe47353d5, 0x2725bb4e, 0x41325882, 0x8b2c9d0b,
396     0xa7510153, 0x7dcf94fa, 0x95dcfb37, 0xd88e9fad,
397     0xfb8b30eb, 0xee2371c1, 0x7cc791f8, 0x6617e3cc,
398     0xdda68ea7, 0x17b84b2e, 0x4702468e, 0x9e84dc21,
399     0xca1ec589, 0x2d75995a, 0xbf917963, 0x07381b0e,
400     0xad012347, 0x5aea2fb4, 0x836cb51b, 0x3385ff66,
401     0x633ff2c6, 0x02100a04, 0xaa393849, 0x71afa8e2,
402     0xc80ecf8d, 0x19c87d32, 0x49727092, 0xd9869aaf,
403     0xf2c31df9, 0xe34b48db, 0x5be22ab6, 0x8834920d,
404     0x9aa4c829, 0x262dbe4c, 0x328dfa64, 0xb0e94a7d,
405     0xe91b6acf, 0x0f78331e, 0xd5e6a6b7, 0x8074ba1d,
406     0xbe997c61, 0xcd26de87, 0x34bde468, 0x487a7590,
407     0xffab24e3, 0x7af78ff4, 0x90f4ea3d, 0x5fc23ebe,
408     0x201da040, 0x6867d5d0, 0x1ad07234, 0xae192c41,
409     0xb4c95e75, 0x549a19a8, 0x93ece53b, 0x220daa44,
410     0x6407e9c8, 0xf1db12ff, 0x73bfa2e6, 0x12905a24,
411     0x403a5d80, 0x08402810, 0xc356e89b, 0xec337bc5,
412     0xdb9690ab, 0xa1611f5f, 0x8d1c8307, 0x3df5c97a,
413     0x97ccf133, 0x00000000, 0xcf36d483, 0x2b458756,
414     0x7697b3ec, 0x8264b019, 0xd6fea9b1, 0x1bd87736,
415     0xb5c15b77, 0xaf112943, 0x6a77dfd4, 0x50ba0da0,
416     0x45124c8a, 0xf3cb18fb, 0x309df060, 0xef2b74c3,
417     0x3fe5c37e, 0x55921caa, 0xa2791059, 0xea0365c9,
418     0x650fecca, 0xbab96869, 0x2f65935e, 0xc04ee79d,
419     0xdebe81a1, 0x1ce06c38, 0xfdbb2ee7, 0x4d52649a,
420     0x92e4e039, 0x758fbcea, 0x06301e0c, 0x8a249809,
421     0xb2f94079, 0xe66359d1, 0x0e70361c, 0x1ff8633e,
422     0x6237f7c4, 0xd4eea3b5, 0xa829324d, 0x96c4f431,
423     0xf99b3aef, 0xc566f697, 0x2535b14a, 0x59f220b2,
424     0x8454ae15, 0x72b7a7e4, 0x39d5dd72, 0x4c5a6198,
425     0x5eca3bbc, 0x78e785f0, 0x38ddd870, 0x8c148605,
426     0xd1c6b2bf, 0xa5410b57, 0xe2434dd9, 0x612ff8c2,
427     0xb3f1457b, 0x2115a542, 0x9c94d625, 0x1ef0663c,
428     0x43225286, 0xc776fc93, 0xfcb32be5, 0x04201408,
429     0x51b208a2, 0x99bcc72f, 0x6d4fc4da, 0x0d68391a,
430     0xfa8335e9, 0xdfb684a3, 0x7ed79bfc, 0x243db448,
431     0x3bc5d776, 0xab313d4b, 0xce3ed181, 0x11885522,
432     0x8f0c8903, 0x4e4a6b9c, 0xb7d15173, 0xeb0b60cb,
433     0x3cfdcc78, 0x817cbf1f, 0x94d4fe35, 0xf7eb0cf3,
434     0xb9a1676f, 0x13985f26, 0x2c7d9c58, 0xd3d6b8bb,
435     0xe76b5cd3, 0x6e57cbdc, 0xc46ef395, 0x03180f06,
436     0x568a13ac, 0x441a4988, 0x7fdf9efe, 0xa921374f,
437     0x2a4d8254, 0xbbb16d6b, 0xc146e29f, 0x53a202a6,
438     0xdcae8ba5, 0x0b582716, 0x9d9cd327, 0x6c47c1d8,
439     0x3195f562, 0x7487b9e8, 0xf6e309f1, 0x460a438c,
440     0xac092645, 0x893c970f, 0x14a04428, 0xe15b42df,
441     0x16b04e2c, 0x3acdd274, 0x696fd0d2, 0x09482d12,
442     0x70a7ade0, 0xb6d95471, 0xd0ceb7bd, 0xed3b7ec7,
443     0xcc2edb85, 0x422a5784, 0x98b4c22d, 0xa4490e55,
444     0x285d8850, 0x5cda31b8, 0xf8933fed, 0x8644a411,
445   },
446   {
447     0x6018c078, 0x8c2305af, 0x3fc67ef9, 0x87e8136f,
448     0x26874ca1, 0xdab8a962, 0x04010805, 0x214f426e,
449     0xd836adee, 0xa2a65904, 0x6fd2debd, 0xf3f5fb06,
450     0xf979ef80, 0xa16f5fce, 0x7e91fcef, 0x5552aa07,
451     0x9d6027fd, 0xcabc8976, 0x569baccd, 0x028e048c,
452     0xb6a37115, 0x300c603c, 0xf17bff8a, 0xd435b5e1,
453     0x741de869, 0xa7e05347, 0x7bd7f6ac, 0x2fc25eed,
454     0xb82e6d96, 0x314b627a, 0xdffea321, 0x41578216,
455     0x5415a841, 0xc1779fb6, 0xdc37a5eb, 0xb3e57b56,
456     0x469f8cd9, 0xe7f0d317, 0x354a6a7f, 0x4fda9e95,
457     0x7d58fa25, 0x03c906ca, 0xa429558d, 0x280a5022,
458     0xfeb1e14f, 0xbaa0691a, 0xb16b7fda, 0x2e855cab,
459     0xcebd8173, 0x695dd234, 0x40108050, 0xf7f4f303,
460     0x0bcb16c0, 0xf83eedc6, 0x14052811, 0x81671fe6,
461     0xb7e47353, 0x9c2725bb, 0x19413258, 0x168b2c9d,
462     0xa6a75101, 0xe97dcf94, 0x6e95dcfb, 0x47d88e9f,
463     0xcbfb8b30, 0x9fee2371, 0xed7cc791, 0x856617e3,
464     0x53dda68e, 0x5c17b84b, 0x01470246, 0x429e84dc,
465     0x0fca1ec5, 0xb42d7599, 0xc6bf9179, 0x1c07381b,
466     0x8ead0123, 0x755aea2f, 0x36836cb5, 0xcc3385ff,
467     0x91633ff2, 0x0802100a, 0x92aa3938, 0xd971afa8,
468     0x07c80ecf, 0x6419c87d, 0x39497270, 0x43d9869a,
469     0xeff2c31d, 0xabe34b48, 0x715be22a, 0x1a883492,
470     0x529aa4c8, 0x98262dbe, 0xc8328dfa, 0xfab0e94a,
471     0x83e91b6a, 0x3c0f7833, 0x73d5e6a6, 0x3a8074ba,
472     0xc2be997c, 0x13cd26de, 0xd034bde4, 0x3d487a75,
473     0xdbffab24, 0xf57af78f, 0x7a90f4ea, 0x615fc23e,
474     0x80201da0, 0xbd6867d5, 0x681ad072, 0x82ae192c,
475     0xeab4c95e, 0x4d549a19, 0x7693ece5, 0x88220daa,
476     0x8d6407e9, 0xe3f1db12, 0xd173bfa2, 0x4812905a,
477     0x1d403a5d, 0x20084028, 0x2bc356e8, 0x97ec337b,
478     0x4bdb9690, 0xbea1611f, 0x0e8d1c83, 0xf43df5c9,
479     0x6697ccf1, 0x00000000, 0x1bcf36d4, 0xac2b4587,
480     0xc57697b3, 0x328264b0, 0x7fd6fea9, 0x6c1bd877,
481     0xeeb5c15b, 0x86af1129, 0xb56a77df, 0x5d50ba0d,
482     0x0945124c, 0xebf3cb18, 0xc0309df0, 0x9bef2b74,
483     0xfc3fe5c3, 0x4955921c, 0xb2a27910, 0x8fea0365,
484     0x89650fec, 0xd2bab968, 0xbc2f6593, 0x27c04ee7,
485     0x5fdebe81, 0x701ce06c, 0xd3fdbb2e, 0x294d5264,
486     0x7292e4e0, 0xc9758fbc, 0x1806301e, 0x128a2498,
487     0xf2b2f940, 0xbfe66359, 0x380e7036, 0x7c1ff863,
488     0x956237f7, 0x77d4eea3, 0x9aa82932, 0x6296c4f4,
489     0xc3f99b3a, 0x33c566f6, 0x942535b1, 0x7959f220,
490     0x2a8454ae, 0xd572b7a7, 0xe439d5dd, 0x2d4c5a61,
491     0x655eca3b, 0xfd78e785, 0xe038ddd8, 0x0a8c1486,
492     0x63d1c6b2, 0xaea5410b, 0xafe2434d, 0x99612ff8,
493     0xf6b3f145, 0x842115a5, 0x4a9c94d6, 0x781ef066,
494     0x11432252, 0x3bc776fc, 0xd7fcb32b, 0x10042014,
495     0x5951b208, 0x5e99bcc7, 0xa96d4fc4, 0x340d6839,
496     0xcffa8335, 0x5bdfb684, 0xe57ed79b, 0x90243db4,
497     0xec3bc5d7, 0x96ab313d, 0x1fce3ed1, 0x44118855,
498     0x068f0c89, 0x254e4a6b, 0xe6b7d151, 0x8beb0b60,
499     0xf03cfdcc, 0x3e817cbf, 0x6a94d4fe, 0xfbf7eb0c,
500     0xdeb9a167, 0x4c13985f, 0xb02c7d9c, 0x6bd3d6b8,
501     0xbbe76b5c, 0xa56e57cb, 0x37c46ef3, 0x0c03180f,
502     0x45568a13, 0x0d441a49, 0xe17fdf9e, 0x9ea92137,
503     0xa82a4d82, 0xd6bbb16d, 0x23c146e2, 0x5153a202,
504     0x57dcae8b, 0x2c0b5827, 0x4e9d9cd3, 0xad6c47c1,
505     0xc43195f5, 0xcd7487b9, 0xfff6e309, 0x05460a43,
506     0x8aac0926, 0x1e893c97, 0x5014a044, 0xa3e15b42,
507     0x5816b04e, 0xe83acdd2, 0xb9696fd0, 0x2409482d,
508     0xdd70a7ad, 0xe2b6d954, 0x67d0ceb7, 0x93ed3b7e,
509     0x17cc2edb, 0x15422a57, 0x5a98b4c2, 0xaaa4490e,
510     0xa0285d88, 0x6d5cda31, 0xc7f8933f, 0x228644a4,
511   },
512   {
513     0x186018c0, 0x238c2305, 0xc63fc67e, 0xe887e813,
514     0x8726874c, 0xb8dab8a9, 0x01040108, 0x4f214f42,
515     0x36d836ad, 0xa6a2a659, 0xd26fd2de, 0xf5f3f5fb,
516     0x79f979ef, 0x6fa16f5f, 0x917e91fc, 0x525552aa,
517     0x609d6027, 0xbccabc89, 0x9b569bac, 0x8e028e04,
518     0xa3b6a371, 0x0c300c60, 0x7bf17bff, 0x35d435b5,
519     0x1d741de8, 0xe0a7e053, 0xd77bd7f6, 0xc22fc25e,
520     0x2eb82e6d, 0x4b314b62, 0xfedffea3, 0x57415782,
521     0x155415a8, 0x77c1779f, 0x37dc37a5, 0xe5b3e57b,
522     0x9f469f8c, 0xf0e7f0d3, 0x4a354a6a, 0xda4fda9e,
523     0x587d58fa, 0xc903c906, 0x29a42955, 0x0a280a50,
524     0xb1feb1e1, 0xa0baa069, 0x6bb16b7f, 0x852e855c,
525     0xbdcebd81, 0x5d695dd2, 0x10401080, 0xf4f7f4f3,
526     0xcb0bcb16, 0x3ef83eed, 0x05140528, 0x6781671f,
527     0xe4b7e473, 0x279c2725, 0x41194132, 0x8b168b2c,
528     0xa7a6a751, 0x7de97dcf, 0x956e95dc, 0xd847d88e,
529     0xfbcbfb8b, 0xee9fee23, 0x7ced7cc7, 0x66856617,
530     0xdd53dda6, 0x175c17b8, 0x47014702, 0x9e429e84,
531     0xca0fca1e, 0x2db42d75, 0xbfc6bf91, 0x071c0738,
532     0xad8ead01, 0x5a755aea, 0x8336836c, 0x33cc3385,
533     0x6391633f, 0x02080210, 0xaa92aa39, 0x71d971af,
534     0xc807c80e, 0x196419c8, 0x49394972, 0xd943d986,
535     0xf2eff2c3, 0xe3abe34b, 0x5b715be2, 0x881a8834,
536     0x9a529aa4, 0x2698262d, 0x32c8328d, 0xb0fab0e9,
537     0xe983e91b, 0x0f3c0f78, 0xd573d5e6, 0x803a8074,
538     0xbec2be99, 0xcd13cd26, 0x34d034bd, 0x483d487a,
539     0xffdbffab, 0x7af57af7, 0x907a90f4, 0x5f615fc2,
540     0x2080201d, 0x68bd6867, 0x1a681ad0, 0xae82ae19,
541     0xb4eab4c9, 0x544d549a, 0x937693ec, 0x2288220d,
542     0x648d6407, 0xf1e3f1db, 0x73d173bf, 0x12481290,
543     0x401d403a, 0x08200840, 0xc32bc356, 0xec97ec33,
544     0xdb4bdb96, 0xa1bea161, 0x8d0e8d1c, 0x3df43df5,
545     0x976697cc, 0x00000000, 0xcf1bcf36, 0x2bac2b45,
546     0x76c57697, 0x82328264, 0xd67fd6fe, 0x1b6c1bd8,
547     0xb5eeb5c1, 0xaf86af11, 0x6ab56a77, 0x505d50ba,
548     0x45094512, 0xf3ebf3cb, 0x30c0309d, 0xef9bef2b,
549     0x3ffc3fe5, 0x55495592, 0xa2b2a279, 0xea8fea03,
550     0x6589650f, 0xbad2bab9, 0x2fbc2f65, 0xc027c04e,
551     0xde5fdebe, 0x1c701ce0, 0xfdd3fdbb, 0x4d294d52,
552     0x927292e4, 0x75c9758f, 0x06180630, 0x8a128a24,
553     0xb2f2b2f9, 0xe6bfe663, 0x0e380e70, 0x1f7c1ff8,
554     0x62956237, 0xd477d4ee, 0xa89aa829, 0x966296c4,
555     0xf9c3f99b, 0xc533c566, 0x25942535, 0x597959f2,
556     0x842a8454, 0x72d572b7, 0x39e439d5, 0x4c2d4c5a,
557     0x5e655eca, 0x78fd78e7, 0x38e038dd, 0x8c0a8c14,
558     0xd163d1c6, 0xa5aea541, 0xe2afe243, 0x6199612f,
559     0xb3f6b3f1, 0x21842115, 0x9c4a9c94, 0x1e781ef0,
560     0x43114322, 0xc73bc776, 0xfcd7fcb3, 0x04100420,
561     0x515951b2, 0x995e99bc, 0x6da96d4f, 0x0d340d68,
562     0xfacffa83, 0xdf5bdfb6, 0x7ee57ed7, 0x2490243d,
563     0x3bec3bc5, 0xab96ab31, 0xce1fce3e, 0x11441188,
564     0x8f068f0c, 0x4e254e4a, 0xb7e6b7d1, 0xeb8beb0b,
565     0x3cf03cfd, 0x813e817c, 0x946a94d4, 0xf7fbf7eb,
566     0xb9deb9a1, 0x134c1398, 0x2cb02c7d, 0xd36bd3d6,
567     0xe7bbe76b, 0x6ea56e57, 0xc437c46e, 0x030c0318,
568     0x5645568a, 0x440d441a, 0x7fe17fdf, 0xa99ea921,
569     0x2aa82a4d, 0xbbd6bbb1, 0xc123c146, 0x535153a2,
570     0xdc57dcae, 0x0b2c0b58, 0x9d4e9d9c, 0x6cad6c47,
571     0x31c43195, 0x74cd7487, 0xf6fff6e3, 0x4605460a,
572     0xac8aac09, 0x891e893c, 0x145014a0, 0xe1a3e15b,
573     0x165816b0, 0x3ae83acd, 0x69b9696f, 0x09240948,
574     0x70dd70a7, 0xb6e2b6d9, 0xd067d0ce, 0xed93ed3b,
575     0xcc17cc2e, 0x4215422a, 0x985a98b4, 0xa4aaa449,
576     0x28a0285d, 0x5c6d5cda, 0xf8c7f893, 0x86228644,
577   }
578 };
579
580 __device__ __constant__ u32 Cl[8][256] =
581 {
582   {
583     0xc07830d8, 0x05af4626, 0x7ef991b8, 0x136fcdfb,
584     0x4ca113cb, 0xa9626d11, 0x08050209, 0x426e9e0d,
585     0xadee6c9b, 0x590451ff, 0xdebdb90c, 0xfb06f70e,
586     0xef80f296, 0x5fcede30, 0xfcef3f6d, 0xaa07a4f8,
587     0x27fdc047, 0x89766535, 0xaccd2b37, 0x048c018a,
588     0x71155bd2, 0x603c186c, 0xff8af684, 0xb5e16a80,
589     0xe8693af5, 0x5347ddb3, 0xf6acb321, 0x5eed999c,
590     0x6d965c43, 0x627a9629, 0xa321e15d, 0x8216aed5,
591     0xa8412abd, 0x9fb6eee8, 0xa5eb6e92, 0x7b56d79e,
592     0x8cd92313, 0xd317fd23, 0x6a7f9420, 0x9e95a944,
593     0xfa25b0a2, 0x06ca8fcf, 0x558d527c, 0x5022145a,
594     0xe14f7f50, 0x691a5dc9, 0x7fdad614, 0x5cab17d9,
595     0x8173673c, 0xd234ba8f, 0x80502090, 0xf303f507,
596     0x16c08bdd, 0xedc67cd3, 0x28110a2d, 0x1fe6ce78,
597     0x7353d597, 0x25bb4e02, 0x32588273, 0x2c9d0ba7,
598     0x510153f6, 0xcf94fab2, 0xdcfb3749, 0x8e9fad56,
599     0x8b30eb70, 0x2371c1cd, 0xc791f8bb, 0x17e3cc71,
600     0xa68ea77b, 0xb84b2eaf, 0x02468e45, 0x84dc211a,
601     0x1ec589d4, 0x75995a58, 0x9179632e, 0x381b0e3f,
602     0x012347ac, 0xea2fb4b0, 0x6cb51bef, 0x85ff66b6,
603     0x3ff2c65c, 0x100a0412, 0x39384993, 0xafa8e2de,
604     0x0ecf8dc6, 0xc87d32d1, 0x7270923b, 0x869aaf5f,
605     0xc31df931, 0x4b48dba8, 0xe22ab6b9, 0x34920dbc,
606     0xa4c8293e, 0x2dbe4c0b, 0x8dfa64bf, 0xe94a7d59,
607     0x1b6acff2, 0x78331e77, 0xe6a6b733, 0x74ba1df4,
608     0x997c6127, 0x26de87eb, 0xbde46889, 0x7a759032,
609     0xab24e354, 0xf78ff48d, 0xf4ea3d64, 0xc23ebe9d,
610     0x1da0403d, 0x67d5d00f, 0xd07234ca, 0x192c41b7,
611     0xc95e757d, 0x9a19a8ce, 0xece53b7f, 0x0daa442f,
612     0x07e9c863, 0xdb12ff2a, 0xbfa2e6cc, 0x905a2482,
613     0x3a5d807a, 0x40281048, 0x56e89b95, 0x337bc5df,
614     0x9690ab4d, 0x611f5fc0, 0x1c830791, 0xf5c97ac8,
615     0xccf1335b, 0x00000000, 0x36d483f9, 0x4587566e,
616     0x97b3ece1, 0x64b019e6, 0xfea9b128, 0xd87736c3,
617     0xc15b7774, 0x112943be, 0x77dfd41d, 0xba0da0ea,
618     0x124c8a57, 0xcb18fb38, 0x9df060ad, 0x2b74c3c4,
619     0xe5c37eda, 0x921caac7, 0x791059db, 0x0365c9e9,
620     0x0fecca6a, 0xb9686903, 0x65935e4a, 0x4ee79d8e,
621     0xbe81a160, 0xe06c38fc, 0xbb2ee746, 0x52649a1f,
622     0xe4e03976, 0x8fbceafa, 0x301e0c36, 0x249809ae,
623     0xf940794b, 0x6359d185, 0x70361c7e, 0xf8633ee7,
624     0x37f7c455, 0xeea3b53a, 0x29324d81, 0xc4f43152,
625     0x9b3aef62, 0x66f697a3, 0x35b14a10, 0xf220b2ab,
626     0x54ae15d0, 0xb7a7e4c5, 0xd5dd72ec, 0x5a619816,
627     0xca3bbc94, 0xe785f09f, 0xddd870e5, 0x14860598,
628     0xc6b2bf17, 0x410b57e4, 0x434dd9a1, 0x2ff8c24e,
629     0xf1457b42, 0x15a54234, 0x94d62508, 0xf0663cee,
630     0x22528661, 0x76fc93b1, 0xb32be54f, 0x20140824,
631     0xb208a2e3, 0xbcc72f25, 0x4fc4da22, 0x68391a65,
632     0x8335e979, 0xb684a369, 0xd79bfca9, 0x3db44819,
633     0xc5d776fe, 0x313d4b9a, 0x3ed181f0, 0x88552299,
634     0x0c890383, 0x4a6b9c04, 0xd1517366, 0x0b60cbe0,
635     0xfdcc78c1, 0x7cbf1ffd, 0xd4fe3540, 0xeb0cf31c,
636     0xa1676f18, 0x985f268b, 0x7d9c5851, 0xd6b8bb05,
637     0x6b5cd38c, 0x57cbdc39, 0x6ef395aa, 0x180f061b,
638     0x8a13acdc, 0x1a49885e, 0xdf9efea0, 0x21374f88,
639     0x4d825467, 0xb16d6b0a, 0x46e29f87, 0xa202a6f1,
640     0xae8ba572, 0x58271653, 0x9cd32701, 0x47c1d82b,
641     0x95f562a4, 0x87b9e8f3, 0xe309f115, 0x0a438c4c,
642     0x092645a5, 0x3c970fb5, 0xa04428b4, 0x5b42dfba,
643     0xb04e2ca6, 0xcdd274f7, 0x6fd0d206, 0x482d1241,
644     0xa7ade0d7, 0xd954716f, 0xceb7bd1e, 0x3b7ec7d6,
645     0x2edb85e2, 0x2a578468, 0xb4c22d2c, 0x490e55ed,
646     0x5d885075, 0xda31b886, 0x933fed6b, 0x44a411c2,
647   },
648   {
649     0x18c07830, 0x2305af46, 0xc67ef991, 0xe8136fcd,
650     0x874ca113, 0xb8a9626d, 0x01080502, 0x4f426e9e,
651     0x36adee6c, 0xa6590451, 0xd2debdb9, 0xf5fb06f7,
652     0x79ef80f2, 0x6f5fcede, 0x91fcef3f, 0x52aa07a4,
653     0x6027fdc0, 0xbc897665, 0x9baccd2b, 0x8e048c01,
654     0xa371155b, 0x0c603c18, 0x7bff8af6, 0x35b5e16a,
655     0x1de8693a, 0xe05347dd, 0xd7f6acb3, 0xc25eed99,
656     0x2e6d965c, 0x4b627a96, 0xfea321e1, 0x578216ae,
657     0x15a8412a, 0x779fb6ee, 0x37a5eb6e, 0xe57b56d7,
658     0x9f8cd923, 0xf0d317fd, 0x4a6a7f94, 0xda9e95a9,
659     0x58fa25b0, 0xc906ca8f, 0x29558d52, 0x0a502214,
660     0xb1e14f7f, 0xa0691a5d, 0x6b7fdad6, 0x855cab17,
661     0xbd817367, 0x5dd234ba, 0x10805020, 0xf4f303f5,
662     0xcb16c08b, 0x3eedc67c, 0x0528110a, 0x671fe6ce,
663     0xe47353d5, 0x2725bb4e, 0x41325882, 0x8b2c9d0b,
664     0xa7510153, 0x7dcf94fa, 0x95dcfb37, 0xd88e9fad,
665     0xfb8b30eb, 0xee2371c1, 0x7cc791f8, 0x6617e3cc,
666     0xdda68ea7, 0x17b84b2e, 0x4702468e, 0x9e84dc21,
667     0xca1ec589, 0x2d75995a, 0xbf917963, 0x07381b0e,
668     0xad012347, 0x5aea2fb4, 0x836cb51b, 0x3385ff66,
669     0x633ff2c6, 0x02100a04, 0xaa393849, 0x71afa8e2,
670     0xc80ecf8d, 0x19c87d32, 0x49727092, 0xd9869aaf,
671     0xf2c31df9, 0xe34b48db, 0x5be22ab6, 0x8834920d,
672     0x9aa4c829, 0x262dbe4c, 0x328dfa64, 0xb0e94a7d,
673     0xe91b6acf, 0x0f78331e, 0xd5e6a6b7, 0x8074ba1d,
674     0xbe997c61, 0xcd26de87, 0x34bde468, 0x487a7590,
675     0xffab24e3, 0x7af78ff4, 0x90f4ea3d, 0x5fc23ebe,
676     0x201da040, 0x6867d5d0, 0x1ad07234, 0xae192c41,
677     0xb4c95e75, 0x549a19a8, 0x93ece53b, 0x220daa44,
678     0x6407e9c8, 0xf1db12ff, 0x73bfa2e6, 0x12905a24,
679     0x403a5d80, 0x08402810, 0xc356e89b, 0xec337bc5,
680     0xdb9690ab, 0xa1611f5f, 0x8d1c8307, 0x3df5c97a,
681     0x97ccf133, 0x00000000, 0xcf36d483, 0x2b458756,
682     0x7697b3ec, 0x8264b019, 0xd6fea9b1, 0x1bd87736,
683     0xb5c15b77, 0xaf112943, 0x6a77dfd4, 0x50ba0da0,
684     0x45124c8a, 0xf3cb18fb, 0x309df060, 0xef2b74c3,
685     0x3fe5c37e, 0x55921caa, 0xa2791059, 0xea0365c9,
686     0x650fecca, 0xbab96869, 0x2f65935e, 0xc04ee79d,
687     0xdebe81a1, 0x1ce06c38, 0xfdbb2ee7, 0x4d52649a,
688     0x92e4e039, 0x758fbcea, 0x06301e0c, 0x8a249809,
689     0xb2f94079, 0xe66359d1, 0x0e70361c, 0x1ff8633e,
690     0x6237f7c4, 0xd4eea3b5, 0xa829324d, 0x96c4f431,
691     0xf99b3aef, 0xc566f697, 0x2535b14a, 0x59f220b2,
692     0x8454ae15, 0x72b7a7e4, 0x39d5dd72, 0x4c5a6198,
693     0x5eca3bbc, 0x78e785f0, 0x38ddd870, 0x8c148605,
694     0xd1c6b2bf, 0xa5410b57, 0xe2434dd9, 0x612ff8c2,
695     0xb3f1457b, 0x2115a542, 0x9c94d625, 0x1ef0663c,
696     0x43225286, 0xc776fc93, 0xfcb32be5, 0x04201408,
697     0x51b208a2, 0x99bcc72f, 0x6d4fc4da, 0x0d68391a,
698     0xfa8335e9, 0xdfb684a3, 0x7ed79bfc, 0x243db448,
699     0x3bc5d776, 0xab313d4b, 0xce3ed181, 0x11885522,
700     0x8f0c8903, 0x4e4a6b9c, 0xb7d15173, 0xeb0b60cb,
701     0x3cfdcc78, 0x817cbf1f, 0x94d4fe35, 0xf7eb0cf3,
702     0xb9a1676f, 0x13985f26, 0x2c7d9c58, 0xd3d6b8bb,
703     0xe76b5cd3, 0x6e57cbdc, 0xc46ef395, 0x03180f06,
704     0x568a13ac, 0x441a4988, 0x7fdf9efe, 0xa921374f,
705     0x2a4d8254, 0xbbb16d6b, 0xc146e29f, 0x53a202a6,
706     0xdcae8ba5, 0x0b582716, 0x9d9cd327, 0x6c47c1d8,
707     0x3195f562, 0x7487b9e8, 0xf6e309f1, 0x460a438c,
708     0xac092645, 0x893c970f, 0x14a04428, 0xe15b42df,
709     0x16b04e2c, 0x3acdd274, 0x696fd0d2, 0x09482d12,
710     0x70a7ade0, 0xb6d95471, 0xd0ceb7bd, 0xed3b7ec7,
711     0xcc2edb85, 0x422a5784, 0x98b4c22d, 0xa4490e55,
712     0x285d8850, 0x5cda31b8, 0xf8933fed, 0x8644a411,
713   },
714   {
715     0x6018c078, 0x8c2305af, 0x3fc67ef9, 0x87e8136f,
716     0x26874ca1, 0xdab8a962, 0x04010805, 0x214f426e,
717     0xd836adee, 0xa2a65904, 0x6fd2debd, 0xf3f5fb06,
718     0xf979ef80, 0xa16f5fce, 0x7e91fcef, 0x5552aa07,
719     0x9d6027fd, 0xcabc8976, 0x569baccd, 0x028e048c,
720     0xb6a37115, 0x300c603c, 0xf17bff8a, 0xd435b5e1,
721     0x741de869, 0xa7e05347, 0x7bd7f6ac, 0x2fc25eed,
722     0xb82e6d96, 0x314b627a, 0xdffea321, 0x41578216,
723     0x5415a841, 0xc1779fb6, 0xdc37a5eb, 0xb3e57b56,
724     0x469f8cd9, 0xe7f0d317, 0x354a6a7f, 0x4fda9e95,
725     0x7d58fa25, 0x03c906ca, 0xa429558d, 0x280a5022,
726     0xfeb1e14f, 0xbaa0691a, 0xb16b7fda, 0x2e855cab,
727     0xcebd8173, 0x695dd234, 0x40108050, 0xf7f4f303,
728     0x0bcb16c0, 0xf83eedc6, 0x14052811, 0x81671fe6,
729     0xb7e47353, 0x9c2725bb, 0x19413258, 0x168b2c9d,
730     0xa6a75101, 0xe97dcf94, 0x6e95dcfb, 0x47d88e9f,
731     0xcbfb8b30, 0x9fee2371, 0xed7cc791, 0x856617e3,
732     0x53dda68e, 0x5c17b84b, 0x01470246, 0x429e84dc,
733     0x0fca1ec5, 0xb42d7599, 0xc6bf9179, 0x1c07381b,
734     0x8ead0123, 0x755aea2f, 0x36836cb5, 0xcc3385ff,
735     0x91633ff2, 0x0802100a, 0x92aa3938, 0xd971afa8,
736     0x07c80ecf, 0x6419c87d, 0x39497270, 0x43d9869a,
737     0xeff2c31d, 0xabe34b48, 0x715be22a, 0x1a883492,
738     0x529aa4c8, 0x98262dbe, 0xc8328dfa, 0xfab0e94a,
739     0x83e91b6a, 0x3c0f7833, 0x73d5e6a6, 0x3a8074ba,
740     0xc2be997c, 0x13cd26de, 0xd034bde4, 0x3d487a75,
741     0xdbffab24, 0xf57af78f, 0x7a90f4ea, 0x615fc23e,
742     0x80201da0, 0xbd6867d5, 0x681ad072, 0x82ae192c,
743     0xeab4c95e, 0x4d549a19, 0x7693ece5, 0x88220daa,
744     0x8d6407e9, 0xe3f1db12, 0xd173bfa2, 0x4812905a,
745     0x1d403a5d, 0x20084028, 0x2bc356e8, 0x97ec337b,
746     0x4bdb9690, 0xbea1611f, 0x0e8d1c83, 0xf43df5c9,
747     0x6697ccf1, 0x00000000, 0x1bcf36d4, 0xac2b4587,
748     0xc57697b3, 0x328264b0, 0x7fd6fea9, 0x6c1bd877,
749     0xeeb5c15b, 0x86af1129, 0xb56a77df, 0x5d50ba0d,
750     0x0945124c, 0xebf3cb18, 0xc0309df0, 0x9bef2b74,
751     0xfc3fe5c3, 0x4955921c, 0xb2a27910, 0x8fea0365,
752     0x89650fec, 0xd2bab968, 0xbc2f6593, 0x27c04ee7,
753     0x5fdebe81, 0x701ce06c, 0xd3fdbb2e, 0x294d5264,
754     0x7292e4e0, 0xc9758fbc, 0x1806301e, 0x128a2498,
755     0xf2b2f940, 0xbfe66359, 0x380e7036, 0x7c1ff863,
756     0x956237f7, 0x77d4eea3, 0x9aa82932, 0x6296c4f4,
757     0xc3f99b3a, 0x33c566f6, 0x942535b1, 0x7959f220,
758     0x2a8454ae, 0xd572b7a7, 0xe439d5dd, 0x2d4c5a61,
759     0x655eca3b, 0xfd78e785, 0xe038ddd8, 0x0a8c1486,
760     0x63d1c6b2, 0xaea5410b, 0xafe2434d, 0x99612ff8,
761     0xf6b3f145, 0x842115a5, 0x4a9c94d6, 0x781ef066,
762     0x11432252, 0x3bc776fc, 0xd7fcb32b, 0x10042014,
763     0x5951b208, 0x5e99bcc7, 0xa96d4fc4, 0x340d6839,
764     0xcffa8335, 0x5bdfb684, 0xe57ed79b, 0x90243db4,
765     0xec3bc5d7, 0x96ab313d, 0x1fce3ed1, 0x44118855,
766     0x068f0c89, 0x254e4a6b, 0xe6b7d151, 0x8beb0b60,
767     0xf03cfdcc, 0x3e817cbf, 0x6a94d4fe, 0xfbf7eb0c,
768     0xdeb9a167, 0x4c13985f, 0xb02c7d9c, 0x6bd3d6b8,
769     0xbbe76b5c, 0xa56e57cb, 0x37c46ef3, 0x0c03180f,
770     0x45568a13, 0x0d441a49, 0xe17fdf9e, 0x9ea92137,
771     0xa82a4d82, 0xd6bbb16d, 0x23c146e2, 0x5153a202,
772     0x57dcae8b, 0x2c0b5827, 0x4e9d9cd3, 0xad6c47c1,
773     0xc43195f5, 0xcd7487b9, 0xfff6e309, 0x05460a43,
774     0x8aac0926, 0x1e893c97, 0x5014a044, 0xa3e15b42,
775     0x5816b04e, 0xe83acdd2, 0xb9696fd0, 0x2409482d,
776     0xdd70a7ad, 0xe2b6d954, 0x67d0ceb7, 0x93ed3b7e,
777     0x17cc2edb, 0x15422a57, 0x5a98b4c2, 0xaaa4490e,
778     0xa0285d88, 0x6d5cda31, 0xc7f8933f, 0x228644a4,
779   },
780   {
781     0x186018c0, 0x238c2305, 0xc63fc67e, 0xe887e813,
782     0x8726874c, 0xb8dab8a9, 0x01040108, 0x4f214f42,
783     0x36d836ad, 0xa6a2a659, 0xd26fd2de, 0xf5f3f5fb,
784     0x79f979ef, 0x6fa16f5f, 0x917e91fc, 0x525552aa,
785     0x609d6027, 0xbccabc89, 0x9b569bac, 0x8e028e04,
786     0xa3b6a371, 0x0c300c60, 0x7bf17bff, 0x35d435b5,
787     0x1d741de8, 0xe0a7e053, 0xd77bd7f6, 0xc22fc25e,
788     0x2eb82e6d, 0x4b314b62, 0xfedffea3, 0x57415782,
789     0x155415a8, 0x77c1779f, 0x37dc37a5, 0xe5b3e57b,
790     0x9f469f8c, 0xf0e7f0d3, 0x4a354a6a, 0xda4fda9e,
791     0x587d58fa, 0xc903c906, 0x29a42955, 0x0a280a50,
792     0xb1feb1e1, 0xa0baa069, 0x6bb16b7f, 0x852e855c,
793     0xbdcebd81, 0x5d695dd2, 0x10401080, 0xf4f7f4f3,
794     0xcb0bcb16, 0x3ef83eed, 0x05140528, 0x6781671f,
795     0xe4b7e473, 0x279c2725, 0x41194132, 0x8b168b2c,
796     0xa7a6a751, 0x7de97dcf, 0x956e95dc, 0xd847d88e,
797     0xfbcbfb8b, 0xee9fee23, 0x7ced7cc7, 0x66856617,
798     0xdd53dda6, 0x175c17b8, 0x47014702, 0x9e429e84,
799     0xca0fca1e, 0x2db42d75, 0xbfc6bf91, 0x071c0738,
800     0xad8ead01, 0x5a755aea, 0x8336836c, 0x33cc3385,
801     0x6391633f, 0x02080210, 0xaa92aa39, 0x71d971af,
802     0xc807c80e, 0x196419c8, 0x49394972, 0xd943d986,
803     0xf2eff2c3, 0xe3abe34b, 0x5b715be2, 0x881a8834,
804     0x9a529aa4, 0x2698262d, 0x32c8328d, 0xb0fab0e9,
805     0xe983e91b, 0x0f3c0f78, 0xd573d5e6, 0x803a8074,
806     0xbec2be99, 0xcd13cd26, 0x34d034bd, 0x483d487a,
807     0xffdbffab, 0x7af57af7, 0x907a90f4, 0x5f615fc2,
808     0x2080201d, 0x68bd6867, 0x1a681ad0, 0xae82ae19,
809     0xb4eab4c9, 0x544d549a, 0x937693ec, 0x2288220d,
810     0x648d6407, 0xf1e3f1db, 0x73d173bf, 0x12481290,
811     0x401d403a, 0x08200840, 0xc32bc356, 0xec97ec33,
812     0xdb4bdb96, 0xa1bea161, 0x8d0e8d1c, 0x3df43df5,
813     0x976697cc, 0x00000000, 0xcf1bcf36, 0x2bac2b45,
814     0x76c57697, 0x82328264, 0xd67fd6fe, 0x1b6c1bd8,
815     0xb5eeb5c1, 0xaf86af11, 0x6ab56a77, 0x505d50ba,
816     0x45094512, 0xf3ebf3cb, 0x30c0309d, 0xef9bef2b,
817     0x3ffc3fe5, 0x55495592, 0xa2b2a279, 0xea8fea03,
818     0x6589650f, 0xbad2bab9, 0x2fbc2f65, 0xc027c04e,
819     0xde5fdebe, 0x1c701ce0, 0xfdd3fdbb, 0x4d294d52,
820     0x927292e4, 0x75c9758f, 0x06180630, 0x8a128a24,
821     0xb2f2b2f9, 0xe6bfe663, 0x0e380e70, 0x1f7c1ff8,
822     0x62956237, 0xd477d4ee, 0xa89aa829, 0x966296c4,
823     0xf9c3f99b, 0xc533c566, 0x25942535, 0x597959f2,
824     0x842a8454, 0x72d572b7, 0x39e439d5, 0x4c2d4c5a,
825     0x5e655eca, 0x78fd78e7, 0x38e038dd, 0x8c0a8c14,
826     0xd163d1c6, 0xa5aea541, 0xe2afe243, 0x6199612f,
827     0xb3f6b3f1, 0x21842115, 0x9c4a9c94, 0x1e781ef0,
828     0x43114322, 0xc73bc776, 0xfcd7fcb3, 0x04100420,
829     0x515951b2, 0x995e99bc, 0x6da96d4f, 0x0d340d68,
830     0xfacffa83, 0xdf5bdfb6, 0x7ee57ed7, 0x2490243d,
831     0x3bec3bc5, 0xab96ab31, 0xce1fce3e, 0x11441188,
832     0x8f068f0c, 0x4e254e4a, 0xb7e6b7d1, 0xeb8beb0b,
833     0x3cf03cfd, 0x813e817c, 0x946a94d4, 0xf7fbf7eb,
834     0xb9deb9a1, 0x134c1398, 0x2cb02c7d, 0xd36bd3d6,
835     0xe7bbe76b, 0x6ea56e57, 0xc437c46e, 0x030c0318,
836     0x5645568a, 0x440d441a, 0x7fe17fdf, 0xa99ea921,
837     0x2aa82a4d, 0xbbd6bbb1, 0xc123c146, 0x535153a2,
838     0xdc57dcae, 0x0b2c0b58, 0x9d4e9d9c, 0x6cad6c47,
839     0x31c43195, 0x74cd7487, 0xf6fff6e3, 0x4605460a,
840     0xac8aac09, 0x891e893c, 0x145014a0, 0xe1a3e15b,
841     0x165816b0, 0x3ae83acd, 0x69b9696f, 0x09240948,
842     0x70dd70a7, 0xb6e2b6d9, 0xd067d0ce, 0xed93ed3b,
843     0xcc17cc2e, 0x4215422a, 0x985a98b4, 0xa4aaa449,
844     0x28a0285d, 0x5c6d5cda, 0xf8c7f893, 0x86228644,
845   },
846   {
847     0x18186018, 0x23238c23, 0xc6c63fc6, 0xe8e887e8,
848     0x87872687, 0xb8b8dab8, 0x01010401, 0x4f4f214f,
849     0x3636d836, 0xa6a6a2a6, 0xd2d26fd2, 0xf5f5f3f5,
850     0x7979f979, 0x6f6fa16f, 0x91917e91, 0x52525552,
851     0x60609d60, 0xbcbccabc, 0x9b9b569b, 0x8e8e028e,
852     0xa3a3b6a3, 0x0c0c300c, 0x7b7bf17b, 0x3535d435,
853     0x1d1d741d, 0xe0e0a7e0, 0xd7d77bd7, 0xc2c22fc2,
854     0x2e2eb82e, 0x4b4b314b, 0xfefedffe, 0x57574157,
855     0x15155415, 0x7777c177, 0x3737dc37, 0xe5e5b3e5,
856     0x9f9f469f, 0xf0f0e7f0, 0x4a4a354a, 0xdada4fda,
857     0x58587d58, 0xc9c903c9, 0x2929a429, 0x0a0a280a,
858     0xb1b1feb1, 0xa0a0baa0, 0x6b6bb16b, 0x85852e85,
859     0xbdbdcebd, 0x5d5d695d, 0x10104010, 0xf4f4f7f4,
860     0xcbcb0bcb, 0x3e3ef83e, 0x05051405, 0x67678167,
861     0xe4e4b7e4, 0x27279c27, 0x41411941, 0x8b8b168b,
862     0xa7a7a6a7, 0x7d7de97d, 0x95956e95, 0xd8d847d8,
863     0xfbfbcbfb, 0xeeee9fee, 0x7c7ced7c, 0x66668566,
864     0xdddd53dd, 0x17175c17, 0x47470147, 0x9e9e429e,
865     0xcaca0fca, 0x2d2db42d, 0xbfbfc6bf, 0x07071c07,
866     0xadad8ead, 0x5a5a755a, 0x83833683, 0x3333cc33,
867     0x63639163, 0x02020802, 0xaaaa92aa, 0x7171d971,
868     0xc8c807c8, 0x19196419, 0x49493949, 0xd9d943d9,
869     0xf2f2eff2, 0xe3e3abe3, 0x5b5b715b, 0x88881a88,
870     0x9a9a529a, 0x26269826, 0x3232c832, 0xb0b0fab0,
871     0xe9e983e9, 0x0f0f3c0f, 0xd5d573d5, 0x80803a80,
872     0xbebec2be, 0xcdcd13cd, 0x3434d034, 0x48483d48,
873     0xffffdbff, 0x7a7af57a, 0x90907a90, 0x5f5f615f,
874     0x20208020, 0x6868bd68, 0x1a1a681a, 0xaeae82ae,
875     0xb4b4eab4, 0x54544d54, 0x93937693, 0x22228822,
876     0x64648d64, 0xf1f1e3f1, 0x7373d173, 0x12124812,
877     0x40401d40, 0x08082008, 0xc3c32bc3, 0xecec97ec,
878     0xdbdb4bdb, 0xa1a1bea1, 0x8d8d0e8d, 0x3d3df43d,
879     0x97976697, 0x00000000, 0xcfcf1bcf, 0x2b2bac2b,
880     0x7676c576, 0x82823282, 0xd6d67fd6, 0x1b1b6c1b,
881     0xb5b5eeb5, 0xafaf86af, 0x6a6ab56a, 0x50505d50,
882     0x45450945, 0xf3f3ebf3, 0x3030c030, 0xefef9bef,
883     0x3f3ffc3f, 0x55554955, 0xa2a2b2a2, 0xeaea8fea,
884     0x65658965, 0xbabad2ba, 0x2f2fbc2f, 0xc0c027c0,
885     0xdede5fde, 0x1c1c701c, 0xfdfdd3fd, 0x4d4d294d,
886     0x92927292, 0x7575c975, 0x06061806, 0x8a8a128a,
887     0xb2b2f2b2, 0xe6e6bfe6, 0x0e0e380e, 0x1f1f7c1f,
888     0x62629562, 0xd4d477d4, 0xa8a89aa8, 0x96966296,
889     0xf9f9c3f9, 0xc5c533c5, 0x25259425, 0x59597959,
890     0x84842a84, 0x7272d572, 0x3939e439, 0x4c4c2d4c,
891     0x5e5e655e, 0x7878fd78, 0x3838e038, 0x8c8c0a8c,
892     0xd1d163d1, 0xa5a5aea5, 0xe2e2afe2, 0x61619961,
893     0xb3b3f6b3, 0x21218421, 0x9c9c4a9c, 0x1e1e781e,
894     0x43431143, 0xc7c73bc7, 0xfcfcd7fc, 0x04041004,
895     0x51515951, 0x99995e99, 0x6d6da96d, 0x0d0d340d,
896     0xfafacffa, 0xdfdf5bdf, 0x7e7ee57e, 0x24249024,
897     0x3b3bec3b, 0xabab96ab, 0xcece1fce, 0x11114411,
898     0x8f8f068f, 0x4e4e254e, 0xb7b7e6b7, 0xebeb8beb,
899     0x3c3cf03c, 0x81813e81, 0x94946a94, 0xf7f7fbf7,
900     0xb9b9deb9, 0x13134c13, 0x2c2cb02c, 0xd3d36bd3,
901     0xe7e7bbe7, 0x6e6ea56e, 0xc4c437c4, 0x03030c03,
902     0x56564556, 0x44440d44, 0x7f7fe17f, 0xa9a99ea9,
903     0x2a2aa82a, 0xbbbbd6bb, 0xc1c123c1, 0x53535153,
904     0xdcdc57dc, 0x0b0b2c0b, 0x9d9d4e9d, 0x6c6cad6c,
905     0x3131c431, 0x7474cd74, 0xf6f6fff6, 0x46460546,
906     0xacac8aac, 0x89891e89, 0x14145014, 0xe1e1a3e1,
907     0x16165816, 0x3a3ae83a, 0x6969b969, 0x09092409,
908     0x7070dd70, 0xb6b6e2b6, 0xd0d067d0, 0xeded93ed,
909     0xcccc17cc, 0x42421542, 0x98985a98, 0xa4a4aaa4,
910     0x2828a028, 0x5c5c6d5c, 0xf8f8c7f8, 0x86862286,
911   },
912   {
913     0xd8181860, 0x2623238c, 0xb8c6c63f, 0xfbe8e887,
914     0xcb878726, 0x11b8b8da, 0x09010104, 0x0d4f4f21,
915     0x9b3636d8, 0xffa6a6a2, 0x0cd2d26f, 0x0ef5f5f3,
916     0x967979f9, 0x306f6fa1, 0x6d91917e, 0xf8525255,
917     0x4760609d, 0x35bcbcca, 0x379b9b56, 0x8a8e8e02,
918     0xd2a3a3b6, 0x6c0c0c30, 0x847b7bf1, 0x803535d4,
919     0xf51d1d74, 0xb3e0e0a7, 0x21d7d77b, 0x9cc2c22f,
920     0x432e2eb8, 0x294b4b31, 0x5dfefedf, 0xd5575741,
921     0xbd151554, 0xe87777c1, 0x923737dc, 0x9ee5e5b3,
922     0x139f9f46, 0x23f0f0e7, 0x204a4a35, 0x44dada4f,
923     0xa258587d, 0xcfc9c903, 0x7c2929a4, 0x5a0a0a28,
924     0x50b1b1fe, 0xc9a0a0ba, 0x146b6bb1, 0xd985852e,
925     0x3cbdbdce, 0x8f5d5d69, 0x90101040, 0x07f4f4f7,
926     0xddcbcb0b, 0xd33e3ef8, 0x2d050514, 0x78676781,
927     0x97e4e4b7, 0x0227279c, 0x73414119, 0xa78b8b16,
928     0xf6a7a7a6, 0xb27d7de9, 0x4995956e, 0x56d8d847,
929     0x70fbfbcb, 0xcdeeee9f, 0xbb7c7ced, 0x71666685,
930     0x7bdddd53, 0xaf17175c, 0x45474701, 0x1a9e9e42,
931     0xd4caca0f, 0x582d2db4, 0x2ebfbfc6, 0x3f07071c,
932     0xacadad8e, 0xb05a5a75, 0xef838336, 0xb63333cc,
933     0x5c636391, 0x12020208, 0x93aaaa92, 0xde7171d9,
934     0xc6c8c807, 0xd1191964, 0x3b494939, 0x5fd9d943,
935     0x31f2f2ef, 0xa8e3e3ab, 0xb95b5b71, 0xbc88881a,
936     0x3e9a9a52, 0x0b262698, 0xbf3232c8, 0x59b0b0fa,
937     0xf2e9e983, 0x770f0f3c, 0x33d5d573, 0xf480803a,
938     0x27bebec2, 0xebcdcd13, 0x893434d0, 0x3248483d,
939     0x54ffffdb, 0x8d7a7af5, 0x6490907a, 0x9d5f5f61,
940     0x3d202080, 0x0f6868bd, 0xca1a1a68, 0xb7aeae82,
941     0x7db4b4ea, 0xce54544d, 0x7f939376, 0x2f222288,
942     0x6364648d, 0x2af1f1e3, 0xcc7373d1, 0x82121248,
943     0x7a40401d, 0x48080820, 0x95c3c32b, 0xdfecec97,
944     0x4ddbdb4b, 0xc0a1a1be, 0x918d8d0e, 0xc83d3df4,
945     0x5b979766, 0x00000000, 0xf9cfcf1b, 0x6e2b2bac,
946     0xe17676c5, 0xe6828232, 0x28d6d67f, 0xc31b1b6c,
947     0x74b5b5ee, 0xbeafaf86, 0x1d6a6ab5, 0xea50505d,
948     0x57454509, 0x38f3f3eb, 0xad3030c0, 0xc4efef9b,
949     0xda3f3ffc, 0xc7555549, 0xdba2a2b2, 0xe9eaea8f,
950     0x6a656589, 0x03babad2, 0x4a2f2fbc, 0x8ec0c027,
951     0x60dede5f, 0xfc1c1c70, 0x46fdfdd3, 0x1f4d4d29,
952     0x76929272, 0xfa7575c9, 0x36060618, 0xae8a8a12,
953     0x4bb2b2f2, 0x85e6e6bf, 0x7e0e0e38, 0xe71f1f7c,
954     0x55626295, 0x3ad4d477, 0x81a8a89a, 0x52969662,
955     0x62f9f9c3, 0xa3c5c533, 0x10252594, 0xab595979,
956     0xd084842a, 0xc57272d5, 0xec3939e4, 0x164c4c2d,
957     0x945e5e65, 0x9f7878fd, 0xe53838e0, 0x988c8c0a,
958     0x17d1d163, 0xe4a5a5ae, 0xa1e2e2af, 0x4e616199,
959     0x42b3b3f6, 0x34212184, 0x089c9c4a, 0xee1e1e78,
960     0x61434311, 0xb1c7c73b, 0x4ffcfcd7, 0x24040410,
961     0xe3515159, 0x2599995e, 0x226d6da9, 0x650d0d34,
962     0x79fafacf, 0x69dfdf5b, 0xa97e7ee5, 0x19242490,
963     0xfe3b3bec, 0x9aabab96, 0xf0cece1f, 0x99111144,
964     0x838f8f06, 0x044e4e25, 0x66b7b7e6, 0xe0ebeb8b,
965     0xc13c3cf0, 0xfd81813e, 0x4094946a, 0x1cf7f7fb,
966     0x18b9b9de, 0x8b13134c, 0x512c2cb0, 0x05d3d36b,
967     0x8ce7e7bb, 0x396e6ea5, 0xaac4c437, 0x1b03030c,
968     0xdc565645, 0x5e44440d, 0xa07f7fe1, 0x88a9a99e,
969     0x672a2aa8, 0x0abbbbd6, 0x87c1c123, 0xf1535351,
970     0x72dcdc57, 0x530b0b2c, 0x019d9d4e, 0x2b6c6cad,
971     0xa43131c4, 0xf37474cd, 0x15f6f6ff, 0x4c464605,
972     0xa5acac8a, 0xb589891e, 0xb4141450, 0xbae1e1a3,
973     0xa6161658, 0xf73a3ae8, 0x066969b9, 0x41090924,
974     0xd77070dd, 0x6fb6b6e2, 0x1ed0d067, 0xd6eded93,
975     0xe2cccc17, 0x68424215, 0x2c98985a, 0xeda4a4aa,
976     0x752828a0, 0x865c5c6d, 0x6bf8f8c7, 0xc2868622,
977   },
978   {
979     0x30d81818, 0x46262323, 0x91b8c6c6, 0xcdfbe8e8,
980     0x13cb8787, 0x6d11b8b8, 0x02090101, 0x9e0d4f4f,
981     0x6c9b3636, 0x51ffa6a6, 0xb90cd2d2, 0xf70ef5f5,
982     0xf2967979, 0xde306f6f, 0x3f6d9191, 0xa4f85252,
983     0xc0476060, 0x6535bcbc, 0x2b379b9b, 0x018a8e8e,
984     0x5bd2a3a3, 0x186c0c0c, 0xf6847b7b, 0x6a803535,
985     0x3af51d1d, 0xddb3e0e0, 0xb321d7d7, 0x999cc2c2,
986     0x5c432e2e, 0x96294b4b, 0xe15dfefe, 0xaed55757,
987     0x2abd1515, 0xeee87777, 0x6e923737, 0xd79ee5e5,
988     0x23139f9f, 0xfd23f0f0, 0x94204a4a, 0xa944dada,
989     0xb0a25858, 0x8fcfc9c9, 0x527c2929, 0x145a0a0a,
990     0x7f50b1b1, 0x5dc9a0a0, 0xd6146b6b, 0x17d98585,
991     0x673cbdbd, 0xba8f5d5d, 0x20901010, 0xf507f4f4,
992     0x8bddcbcb, 0x7cd33e3e, 0x0a2d0505, 0xce786767,
993     0xd597e4e4, 0x4e022727, 0x82734141, 0x0ba78b8b,
994     0x53f6a7a7, 0xfab27d7d, 0x37499595, 0xad56d8d8,
995     0xeb70fbfb, 0xc1cdeeee, 0xf8bb7c7c, 0xcc716666,
996     0xa77bdddd, 0x2eaf1717, 0x8e454747, 0x211a9e9e,
997     0x89d4caca, 0x5a582d2d, 0x632ebfbf, 0x0e3f0707,
998     0x47acadad, 0xb4b05a5a, 0x1bef8383, 0x66b63333,
999     0xc65c6363, 0x04120202, 0x4993aaaa, 0xe2de7171,
1000     0x8dc6c8c8, 0x32d11919, 0x923b4949, 0xaf5fd9d9,
1001     0xf931f2f2, 0xdba8e3e3, 0xb6b95b5b, 0x0dbc8888,
1002     0x293e9a9a, 0x4c0b2626, 0x64bf3232, 0x7d59b0b0,
1003     0xcff2e9e9, 0x1e770f0f, 0xb733d5d5, 0x1df48080,
1004     0x6127bebe, 0x87ebcdcd, 0x68893434, 0x90324848,
1005     0xe354ffff, 0xf48d7a7a, 0x3d649090, 0xbe9d5f5f,
1006     0x403d2020, 0xd00f6868, 0x34ca1a1a, 0x41b7aeae,
1007     0x757db4b4, 0xa8ce5454, 0x3b7f9393, 0x442f2222,
1008     0xc8636464, 0xff2af1f1, 0xe6cc7373, 0x24821212,
1009     0x807a4040, 0x10480808, 0x9b95c3c3, 0xc5dfecec,
1010     0xab4ddbdb, 0x5fc0a1a1, 0x07918d8d, 0x7ac83d3d,
1011     0x335b9797, 0x00000000, 0x83f9cfcf, 0x566e2b2b,
1012     0xece17676, 0x19e68282, 0xb128d6d6, 0x36c31b1b,
1013     0x7774b5b5, 0x43beafaf, 0xd41d6a6a, 0xa0ea5050,
1014     0x8a574545, 0xfb38f3f3, 0x60ad3030, 0xc3c4efef,
1015     0x7eda3f3f, 0xaac75555, 0x59dba2a2, 0xc9e9eaea,
1016     0xca6a6565, 0x6903baba, 0x5e4a2f2f, 0x9d8ec0c0,
1017     0xa160dede, 0x38fc1c1c, 0xe746fdfd, 0x9a1f4d4d,
1018     0x39769292, 0xeafa7575, 0x0c360606, 0x09ae8a8a,
1019     0x794bb2b2, 0xd185e6e6, 0x1c7e0e0e, 0x3ee71f1f,
1020     0xc4556262, 0xb53ad4d4, 0x4d81a8a8, 0x31529696,
1021     0xef62f9f9, 0x97a3c5c5, 0x4a102525, 0xb2ab5959,
1022     0x15d08484, 0xe4c57272, 0x72ec3939, 0x98164c4c,
1023     0xbc945e5e, 0xf09f7878, 0x70e53838, 0x05988c8c,
1024     0xbf17d1d1, 0x57e4a5a5, 0xd9a1e2e2, 0xc24e6161,
1025     0x7b42b3b3, 0x42342121, 0x25089c9c, 0x3cee1e1e,
1026     0x86614343, 0x93b1c7c7, 0xe54ffcfc, 0x08240404,
1027     0xa2e35151, 0x2f259999, 0xda226d6d, 0x1a650d0d,
1028     0xe979fafa, 0xa369dfdf, 0xfca97e7e, 0x48192424,
1029     0x76fe3b3b, 0x4b9aabab, 0x81f0cece, 0x22991111,
1030     0x03838f8f, 0x9c044e4e, 0x7366b7b7, 0xcbe0ebeb,
1031     0x78c13c3c, 0x1ffd8181, 0x35409494, 0xf31cf7f7,
1032     0x6f18b9b9, 0x268b1313, 0x58512c2c, 0xbb05d3d3,
1033     0xd38ce7e7, 0xdc396e6e, 0x95aac4c4, 0x061b0303,
1034     0xacdc5656, 0x885e4444, 0xfea07f7f, 0x4f88a9a9,
1035     0x54672a2a, 0x6b0abbbb, 0x9f87c1c1, 0xa6f15353,
1036     0xa572dcdc, 0x16530b0b, 0x27019d9d, 0xd82b6c6c,
1037     0x62a43131, 0xe8f37474, 0xf115f6f6, 0x8c4c4646,
1038     0x45a5acac, 0x0fb58989, 0x28b41414, 0xdfbae1e1,
1039     0x2ca61616, 0x74f73a3a, 0xd2066969, 0x12410909,
1040     0xe0d77070, 0x716fb6b6, 0xbd1ed0d0, 0xc7d6eded,
1041     0x85e2cccc, 0x84684242, 0x2d2c9898, 0x55eda4a4,
1042     0x50752828, 0xb8865c5c, 0xed6bf8f8, 0x11c28686,
1043   },
1044   {
1045     0x7830d818, 0xaf462623, 0xf991b8c6, 0x6fcdfbe8,
1046     0xa113cb87, 0x626d11b8, 0x05020901, 0x6e9e0d4f,
1047     0xee6c9b36, 0x0451ffa6, 0xbdb90cd2, 0x06f70ef5,
1048     0x80f29679, 0xcede306f, 0xef3f6d91, 0x07a4f852,
1049     0xfdc04760, 0x766535bc, 0xcd2b379b, 0x8c018a8e,
1050     0x155bd2a3, 0x3c186c0c, 0x8af6847b, 0xe16a8035,
1051     0x693af51d, 0x47ddb3e0, 0xacb321d7, 0xed999cc2,
1052     0x965c432e, 0x7a96294b, 0x21e15dfe, 0x16aed557,
1053     0x412abd15, 0xb6eee877, 0xeb6e9237, 0x56d79ee5,
1054     0xd923139f, 0x17fd23f0, 0x7f94204a, 0x95a944da,
1055     0x25b0a258, 0xca8fcfc9, 0x8d527c29, 0x22145a0a,
1056     0x4f7f50b1, 0x1a5dc9a0, 0xdad6146b, 0xab17d985,
1057     0x73673cbd, 0x34ba8f5d, 0x50209010, 0x03f507f4,
1058     0xc08bddcb, 0xc67cd33e, 0x110a2d05, 0xe6ce7867,
1059     0x53d597e4, 0xbb4e0227, 0x58827341, 0x9d0ba78b,
1060     0x0153f6a7, 0x94fab27d, 0xfb374995, 0x9fad56d8,
1061     0x30eb70fb, 0x71c1cdee, 0x91f8bb7c, 0xe3cc7166,
1062     0x8ea77bdd, 0x4b2eaf17, 0x468e4547, 0xdc211a9e,
1063     0xc589d4ca, 0x995a582d, 0x79632ebf, 0x1b0e3f07,
1064     0x2347acad, 0x2fb4b05a, 0xb51bef83, 0xff66b633,
1065     0xf2c65c63, 0x0a041202, 0x384993aa, 0xa8e2de71,
1066     0xcf8dc6c8, 0x7d32d119, 0x70923b49, 0x9aaf5fd9,
1067     0x1df931f2, 0x48dba8e3, 0x2ab6b95b, 0x920dbc88,
1068     0xc8293e9a, 0xbe4c0b26, 0xfa64bf32, 0x4a7d59b0,
1069     0x6acff2e9, 0x331e770f, 0xa6b733d5, 0xba1df480,
1070     0x7c6127be, 0xde87ebcd, 0xe4688934, 0x75903248,
1071     0x24e354ff, 0x8ff48d7a, 0xea3d6490, 0x3ebe9d5f,
1072     0xa0403d20, 0xd5d00f68, 0x7234ca1a, 0x2c41b7ae,
1073     0x5e757db4, 0x19a8ce54, 0xe53b7f93, 0xaa442f22,
1074     0xe9c86364, 0x12ff2af1, 0xa2e6cc73, 0x5a248212,
1075     0x5d807a40, 0x28104808, 0xe89b95c3, 0x7bc5dfec,
1076     0x90ab4ddb, 0x1f5fc0a1, 0x8307918d, 0xc97ac83d,
1077     0xf1335b97, 0x00000000, 0xd483f9cf, 0x87566e2b,
1078     0xb3ece176, 0xb019e682, 0xa9b128d6, 0x7736c31b,
1079     0x5b7774b5, 0x2943beaf, 0xdfd41d6a, 0x0da0ea50,
1080     0x4c8a5745, 0x18fb38f3, 0xf060ad30, 0x74c3c4ef,
1081     0xc37eda3f, 0x1caac755, 0x1059dba2, 0x65c9e9ea,
1082     0xecca6a65, 0x686903ba, 0x935e4a2f, 0xe79d8ec0,
1083     0x81a160de, 0x6c38fc1c, 0x2ee746fd, 0x649a1f4d,
1084     0xe0397692, 0xbceafa75, 0x1e0c3606, 0x9809ae8a,
1085     0x40794bb2, 0x59d185e6, 0x361c7e0e, 0x633ee71f,
1086     0xf7c45562, 0xa3b53ad4, 0x324d81a8, 0xf4315296,
1087     0x3aef62f9, 0xf697a3c5, 0xb14a1025, 0x20b2ab59,
1088     0xae15d084, 0xa7e4c572, 0xdd72ec39, 0x6198164c,
1089     0x3bbc945e, 0x85f09f78, 0xd870e538, 0x8605988c,
1090     0xb2bf17d1, 0x0b57e4a5, 0x4dd9a1e2, 0xf8c24e61,
1091     0x457b42b3, 0xa5423421, 0xd625089c, 0x663cee1e,
1092     0x52866143, 0xfc93b1c7, 0x2be54ffc, 0x14082404,
1093     0x08a2e351, 0xc72f2599, 0xc4da226d, 0x391a650d,
1094     0x35e979fa, 0x84a369df, 0x9bfca97e, 0xb4481924,
1095     0xd776fe3b, 0x3d4b9aab, 0xd181f0ce, 0x55229911,
1096     0x8903838f, 0x6b9c044e, 0x517366b7, 0x60cbe0eb,
1097     0xcc78c13c, 0xbf1ffd81, 0xfe354094, 0x0cf31cf7,
1098     0x676f18b9, 0x5f268b13, 0x9c58512c, 0xb8bb05d3,
1099     0x5cd38ce7, 0xcbdc396e, 0xf395aac4, 0x0f061b03,
1100     0x13acdc56, 0x49885e44, 0x9efea07f, 0x374f88a9,
1101     0x8254672a, 0x6d6b0abb, 0xe29f87c1, 0x02a6f153,
1102     0x8ba572dc, 0x2716530b, 0xd327019d, 0xc1d82b6c,
1103     0xf562a431, 0xb9e8f374, 0x09f115f6, 0x438c4c46,
1104     0x2645a5ac, 0x970fb589, 0x4428b414, 0x42dfbae1,
1105     0x4e2ca616, 0xd274f73a, 0xd0d20669, 0x2d124109,
1106     0xade0d770, 0x54716fb6, 0xb7bd1ed0, 0x7ec7d6ed,
1107     0xdb85e2cc, 0x57846842, 0xc22d2c98, 0x0e55eda4,
1108     0x88507528, 0x31b8865c, 0x3fed6bf8, 0xa411c286,
1109   },
1110 };
1111
1112 __device__ __constant__ u32 rch[R + 1] =
1113 {
1114   0x00000000,
1115   0x1823c6e8,
1116   0x36a6d2f5,
1117   0x60bc9b8e,
1118   0x1de0d7c2,
1119   0x157737e5,
1120   0x58c9290a,
1121   0xbd5d10f4,
1122   0xe427418b,
1123   0xfbee7c66,
1124   0xca2dbf07,
1125 };
1126
1127 __device__ __constant__ u32 rcl[R + 1] =
1128 {
1129   0x00000000,
1130   0x87b8014f,
1131   0x796f9152,
1132   0xa30c7b35,
1133   0x2e4bfe57,
1134   0x9ff04ada,
1135   0xb1a06b85,
1136   0xcb3e0567,
1137   0xa77d95d8,
1138   0xdd17479e,
1139   0xad5a8333,
1140 };
1141
1142 __device__ static void whirlpool_transform (const u32x w[16], u32x dgst[16], u32 s_Ch[8][256], u32 s_Cl[8][256])
1143 {
1144   u32x Kh[8];
1145   u32x Kl[8];
1146
1147   Kh[0] = 0x300beec0;
1148   Kl[0] = 0xaf902967;
1149   Kh[1] = 0x28282828;
1150   Kl[1] = 0x28282828;
1151   Kh[2] = 0x28282828;
1152   Kl[2] = 0x28282828;
1153   Kh[3] = 0x28282828;
1154   Kl[3] = 0x28282828;
1155   Kh[4] = 0x28282828;
1156   Kl[4] = 0x28282828;
1157   Kh[5] = 0x28282828;
1158   Kl[5] = 0x28282828;
1159   Kh[6] = 0x28282828;
1160   Kl[6] = 0x28282828;
1161   Kh[7] = 0x28282828;
1162   Kl[7] = 0x28282828;
1163
1164   u32x stateh[8];
1165   u32x statel[8];
1166
1167   stateh[0] = w[ 0];
1168   statel[0] = w[ 1];
1169   stateh[1] = w[ 2];
1170   statel[1] = w[ 3];
1171   stateh[2] = w[ 4];
1172   statel[2] = w[ 5];
1173   stateh[3] = w[ 6];
1174   statel[3] = w[ 7];
1175   stateh[4] = w[ 8];
1176   statel[4] = w[ 9];
1177   stateh[5] = w[10];
1178   statel[5] = w[11];
1179   stateh[6] = w[12];
1180   statel[6] = w[13];
1181   stateh[7] = w[14];
1182   statel[7] = w[15];
1183
1184   u32x Lh[8];
1185   u32x Ll[8];
1186
1187   #pragma unroll
1188   for (int i = 0; i < 8; i++)
1189   {
1190     const u32x Lp0 = stateh[(i + 8) & 7] >> 24;
1191     const u32x Lp1 = stateh[(i + 7) & 7] >> 16;
1192     const u32x Lp2 = stateh[(i + 6) & 7] >>  8;
1193     const u32x Lp3 = stateh[(i + 5) & 7] >>  0;
1194     const u32x Lp4 = statel[(i + 4) & 7] >> 24;
1195     const u32x Lp5 = statel[(i + 3) & 7] >> 16;
1196     const u32x Lp6 = statel[(i + 2) & 7] >>  8;
1197     const u32x Lp7 = statel[(i + 1) & 7] >>  0;
1198
1199     Lh[i] = BOX (s_Ch, 0, Lp0 & 0xff)
1200           ^ BOX (s_Ch, 1, Lp1 & 0xff)
1201           ^ BOX (s_Ch, 2, Lp2 & 0xff)
1202           ^ BOX (s_Ch, 3, Lp3 & 0xff)
1203           ^ BOX (s_Ch, 4, Lp4 & 0xff)
1204           ^ BOX (s_Ch, 5, Lp5 & 0xff)
1205           ^ BOX (s_Ch, 6, Lp6 & 0xff)
1206           ^ BOX (s_Ch, 7, Lp7 & 0xff);
1207
1208     Ll[i] = BOX (s_Cl, 0, Lp0 & 0xff)
1209           ^ BOX (s_Cl, 1, Lp1 & 0xff)
1210           ^ BOX (s_Cl, 2, Lp2 & 0xff)
1211           ^ BOX (s_Cl, 3, Lp3 & 0xff)
1212           ^ BOX (s_Cl, 4, Lp4 & 0xff)
1213           ^ BOX (s_Cl, 5, Lp5 & 0xff)
1214           ^ BOX (s_Cl, 6, Lp6 & 0xff)
1215           ^ BOX (s_Cl, 7, Lp7 & 0xff);
1216   }
1217
1218   stateh[0] = Lh[0] ^ Kh[0];
1219   statel[0] = Ll[0] ^ Kl[0];
1220   stateh[1] = Lh[1] ^ Kh[1];
1221   statel[1] = Ll[1] ^ Kl[1];
1222   stateh[2] = Lh[2] ^ Kh[2];
1223   statel[2] = Ll[2] ^ Kl[2];
1224   stateh[3] = Lh[3] ^ Kh[3];
1225   statel[3] = Ll[3] ^ Kl[3];
1226   stateh[4] = Lh[4] ^ Kh[4];
1227   statel[4] = Ll[4] ^ Kl[4];
1228   stateh[5] = Lh[5] ^ Kh[5];
1229   statel[5] = Ll[5] ^ Kl[5];
1230   stateh[6] = Lh[6] ^ Kh[6];
1231   statel[6] = Ll[6] ^ Kl[6];
1232   stateh[7] = Lh[7] ^ Kh[7];
1233   statel[7] = Ll[7] ^ Kl[7];
1234
1235   for (int r = 2; r <= R; r++)
1236   {
1237     u32x Lh[8];
1238     u32x Ll[8];
1239
1240     #pragma unroll
1241     for (int i = 0; i < 8; i++)
1242     {
1243       const u32x Lp0 = Kh[(i + 8) & 7] >> 24;
1244       const u32x Lp1 = Kh[(i + 7) & 7] >> 16;
1245       const u32x Lp2 = Kh[(i + 6) & 7] >>  8;
1246       const u32x Lp3 = Kh[(i + 5) & 7] >>  0;
1247       const u32x Lp4 = Kl[(i + 4) & 7] >> 24;
1248       const u32x Lp5 = Kl[(i + 3) & 7] >> 16;
1249       const u32x Lp6 = Kl[(i + 2) & 7] >>  8;
1250       const u32x Lp7 = Kl[(i + 1) & 7] >>  0;
1251
1252       Lh[i] = BOX (s_Ch, 0, Lp0 & 0xff)
1253             ^ BOX (s_Ch, 1, Lp1 & 0xff)
1254             ^ BOX (s_Ch, 2, Lp2 & 0xff)
1255             ^ BOX (s_Ch, 3, Lp3 & 0xff)
1256             ^ BOX (s_Ch, 4, Lp4 & 0xff)
1257             ^ BOX (s_Ch, 5, Lp5 & 0xff)
1258             ^ BOX (s_Ch, 6, Lp6 & 0xff)
1259             ^ BOX (s_Ch, 7, Lp7 & 0xff);
1260
1261       Ll[i] = BOX (s_Cl, 0, Lp0 & 0xff)
1262             ^ BOX (s_Cl, 1, Lp1 & 0xff)
1263             ^ BOX (s_Cl, 2, Lp2 & 0xff)
1264             ^ BOX (s_Cl, 3, Lp3 & 0xff)
1265             ^ BOX (s_Cl, 4, Lp4 & 0xff)
1266             ^ BOX (s_Cl, 5, Lp5 & 0xff)
1267             ^ BOX (s_Cl, 6, Lp6 & 0xff)
1268             ^ BOX (s_Cl, 7, Lp7 & 0xff);
1269     }
1270
1271     Kh[0] = Lh[0] ^ rch[r];
1272     Kl[0] = Ll[0] ^ rcl[r];
1273     Kh[1] = Lh[1];
1274     Kl[1] = Ll[1];
1275     Kh[2] = Lh[2];
1276     Kl[2] = Ll[2];
1277     Kh[3] = Lh[3];
1278     Kl[3] = Ll[3];
1279     Kh[4] = Lh[4];
1280     Kl[4] = Ll[4];
1281     Kh[5] = Lh[5];
1282     Kl[5] = Ll[5];
1283     Kh[6] = Lh[6];
1284     Kl[6] = Ll[6];
1285     Kh[7] = Lh[7];
1286     Kl[7] = Ll[7];
1287
1288     #pragma unroll 8
1289     for (int i = 0; i < 8; i++)
1290     {
1291       const u32x Lp0 = stateh[(i + 8) & 7] >> 24;
1292       const u32x Lp1 = stateh[(i + 7) & 7] >> 16;
1293       const u32x Lp2 = stateh[(i + 6) & 7] >>  8;
1294       const u32x Lp3 = stateh[(i + 5) & 7] >>  0;
1295       const u32x Lp4 = statel[(i + 4) & 7] >> 24;
1296       const u32x Lp5 = statel[(i + 3) & 7] >> 16;
1297       const u32x Lp6 = statel[(i + 2) & 7] >>  8;
1298       const u32x Lp7 = statel[(i + 1) & 7] >>  0;
1299
1300       Lh[i] = BOX (s_Ch, 0, Lp0 & 0xff)
1301             ^ BOX (s_Ch, 1, Lp1 & 0xff)
1302             ^ BOX (s_Ch, 2, Lp2 & 0xff)
1303             ^ BOX (s_Ch, 3, Lp3 & 0xff)
1304             ^ BOX (s_Ch, 4, Lp4 & 0xff)
1305             ^ BOX (s_Ch, 5, Lp5 & 0xff)
1306             ^ BOX (s_Ch, 6, Lp6 & 0xff)
1307             ^ BOX (s_Ch, 7, Lp7 & 0xff);
1308
1309       Ll[i] = BOX (s_Cl, 0, Lp0 & 0xff)
1310             ^ BOX (s_Cl, 1, Lp1 & 0xff)
1311             ^ BOX (s_Cl, 2, Lp2 & 0xff)
1312             ^ BOX (s_Cl, 3, Lp3 & 0xff)
1313             ^ BOX (s_Cl, 4, Lp4 & 0xff)
1314             ^ BOX (s_Cl, 5, Lp5 & 0xff)
1315             ^ BOX (s_Cl, 6, Lp6 & 0xff)
1316             ^ BOX (s_Cl, 7, Lp7 & 0xff);
1317     }
1318
1319     stateh[0] = Lh[0] ^ Kh[0];
1320     statel[0] = Ll[0] ^ Kl[0];
1321     stateh[1] = Lh[1] ^ Kh[1];
1322     statel[1] = Ll[1] ^ Kl[1];
1323     stateh[2] = Lh[2] ^ Kh[2];
1324     statel[2] = Ll[2] ^ Kl[2];
1325     stateh[3] = Lh[3] ^ Kh[3];
1326     statel[3] = Ll[3] ^ Kl[3];
1327     stateh[4] = Lh[4] ^ Kh[4];
1328     statel[4] = Ll[4] ^ Kl[4];
1329     stateh[5] = Lh[5] ^ Kh[5];
1330     statel[5] = Ll[5] ^ Kl[5];
1331     stateh[6] = Lh[6] ^ Kh[6];
1332     statel[6] = Ll[6] ^ Kl[6];
1333     stateh[7] = Lh[7] ^ Kh[7];
1334     statel[7] = Ll[7] ^ Kl[7];
1335   }
1336
1337   dgst[ 0] = stateh[0] ^ w[ 0];
1338   dgst[ 1] = statel[0] ^ w[ 1];
1339   dgst[ 2] = stateh[1] ^ w[ 2];
1340   dgst[ 3] = statel[1] ^ w[ 3];
1341   dgst[ 4] = stateh[2] ^ w[ 4];
1342   dgst[ 5] = statel[2] ^ w[ 5];
1343   dgst[ 6] = stateh[3] ^ w[ 6];
1344   dgst[ 7] = statel[3] ^ w[ 7];
1345   dgst[ 8] = stateh[4] ^ w[ 8];
1346   dgst[ 9] = statel[4] ^ w[ 9];
1347   dgst[10] = stateh[5] ^ w[10];
1348   dgst[11] = statel[5] ^ w[11];
1349   dgst[12] = stateh[6] ^ w[12];
1350   dgst[13] = statel[6] ^ w[13];
1351   dgst[14] = stateh[7] ^ w[14];
1352   dgst[15] = statel[7] ^ w[15];
1353 }
1354
1355 __device__ __constant__ bf_t c_bfs[1024];
1356
1357 __device__ __shared__ u32 s_Ch[8][256];
1358 __device__ __shared__ u32 s_Cl[8][256];
1359
1360 __device__ static void m06100m (u32x w0[4], u32x w1[4], u32x w2[4], u32x w3[4], const u32 pw_len, const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 bfs_cnt, const u32 digests_cnt, const u32 digests_offset)
1361 {
1362   /**
1363    * modifier
1364    */
1365
1366   const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
1367   const u32 lid = threadIdx.x;
1368
1369   /**
1370    * loop
1371    */
1372
1373   u32x w0l = w0[0];
1374
1375   for (u32 il_pos = 0; il_pos < bfs_cnt; il_pos++)
1376   {
1377     const u32 w0r = c_bfs[il_pos].i;
1378
1379     w0[0] = w0l | w0r;
1380
1381     u32x wl[16];
1382
1383     wl[ 0] = w0[0];
1384     wl[ 1] = w0[1];
1385     wl[ 2] = w0[2];
1386     wl[ 3] = w0[3];
1387     wl[ 4] = w1[0];
1388     wl[ 5] = w1[1];
1389     wl[ 6] = w1[2];
1390     wl[ 7] = w1[3];
1391     wl[ 8] = w2[0];
1392     wl[ 9] = w2[1];
1393     wl[10] = w2[2];
1394     wl[11] = w2[3];
1395     wl[12] = w3[0];
1396     wl[13] = w3[1];
1397     wl[14] = 0;
1398     wl[15] = pw_len * 8;
1399
1400     u32x dgst[16];
1401
1402     whirlpool_transform (wl, dgst, s_Ch, s_Cl);
1403
1404     const u32x r0 = dgst[0];
1405     const u32x r1 = dgst[1];
1406     const u32x r2 = dgst[2];
1407     const u32x r3 = dgst[3];
1408
1409     #include VECT_COMPARE_M
1410   }
1411 }
1412
1413 __device__ static void m06100s (u32x w0[4], u32x w1[4], u32x w2[4], u32x w3[4], const u32 pw_len, const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 bfs_cnt, const u32 digests_cnt, const u32 digests_offset)
1414 {
1415   /**
1416    * modifier
1417    */
1418
1419   const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
1420   const u32 lid = threadIdx.x;
1421
1422   /**
1423    * digest
1424    */
1425
1426   const u32 search[4] =
1427   {
1428     digests_buf[digests_offset].digest_buf[DGST_R0],
1429     digests_buf[digests_offset].digest_buf[DGST_R1],
1430     digests_buf[digests_offset].digest_buf[DGST_R2],
1431     digests_buf[digests_offset].digest_buf[DGST_R3]
1432   };
1433
1434   /**
1435    * loop
1436    */
1437
1438   u32x w0l = w0[0];
1439
1440   for (u32 il_pos = 0; il_pos < bfs_cnt; il_pos++)
1441   {
1442     const u32 w0r = c_bfs[il_pos].i;
1443
1444     w0[0] = w0l | w0r;
1445
1446     u32x wl[16];
1447
1448     wl[ 0] = w0[0];
1449     wl[ 1] = w0[1];
1450     wl[ 2] = w0[2];
1451     wl[ 3] = w0[3];
1452     wl[ 4] = w1[0];
1453     wl[ 5] = w1[1];
1454     wl[ 6] = w1[2];
1455     wl[ 7] = w1[3];
1456     wl[ 8] = w2[0];
1457     wl[ 9] = w2[1];
1458     wl[10] = w2[2];
1459     wl[11] = w2[3];
1460     wl[12] = w3[0];
1461     wl[13] = w3[1];
1462     wl[14] = 0;
1463     wl[15] = pw_len * 8;
1464
1465     u32x dgst[16];
1466
1467     whirlpool_transform (wl, dgst, s_Ch, s_Cl);
1468
1469     const u32x r0 = dgst[0];
1470     const u32x r1 = dgst[1];
1471     const u32x r2 = dgst[2];
1472     const u32x r3 = dgst[3];
1473
1474     #include VECT_COMPARE_S
1475   }
1476 }
1477
1478 extern "C" __global__ void __launch_bounds__ (256, 1) m06100_m04 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
1479 {
1480   /**
1481    * modifier
1482    */
1483
1484   const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
1485   const u32 lid = threadIdx.x;
1486
1487   u32x w0[4];
1488
1489   w0[0] = pws[gid].i[ 0];
1490   w0[1] = pws[gid].i[ 1];
1491   w0[2] = pws[gid].i[ 2];
1492   w0[3] = pws[gid].i[ 3];
1493
1494   u32x w1[4];
1495
1496   w1[0] = 0;
1497   w1[1] = 0;
1498   w1[2] = 0;
1499   w1[3] = 0;
1500
1501   u32x w2[4];
1502
1503   w2[0] = 0;
1504   w2[1] = 0;
1505   w2[2] = 0;
1506   w2[3] = 0;
1507
1508   u32x w3[4];
1509
1510   w3[0] = 0;
1511   w3[1] = 0;
1512   w3[2] = 0;
1513   w3[3] = 0;
1514
1515   const u32 pw_len = pws[gid].pw_len;
1516
1517   /**
1518    * modifier
1519    */
1520
1521   for (u32 i = 0; i < 8; i++)
1522   {
1523     s_Ch[i][lid] = Ch[i][lid];
1524     s_Cl[i][lid] = Cl[i][lid];
1525   }
1526
1527   __syncthreads ();
1528
1529   if (gid >= gid_max) return;
1530
1531   /**
1532    * main
1533    */
1534
1535   m06100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, bfs_cnt, digests_cnt, digests_offset);
1536 }
1537
1538 extern "C" __global__ void __launch_bounds__ (256, 1) m06100_m08 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
1539 {
1540   /**
1541    * modifier
1542    */
1543
1544   const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
1545   const u32 lid = threadIdx.x;
1546
1547   u32x w0[4];
1548
1549   w0[0] = pws[gid].i[ 0];
1550   w0[1] = pws[gid].i[ 1];
1551   w0[2] = pws[gid].i[ 2];
1552   w0[3] = pws[gid].i[ 3];
1553
1554   u32x w1[4];
1555
1556   w1[0] = pws[gid].i[ 4];
1557   w1[1] = pws[gid].i[ 5];
1558   w1[2] = pws[gid].i[ 6];
1559   w1[3] = pws[gid].i[ 7];
1560
1561   u32x w2[4];
1562
1563   w2[0] = 0;
1564   w2[1] = 0;
1565   w2[2] = 0;
1566   w2[3] = 0;
1567
1568   u32x w3[4];
1569
1570   w3[0] = 0;
1571   w3[1] = 0;
1572   w3[2] = 0;
1573   w3[3] = 0;
1574
1575   const u32 pw_len = pws[gid].pw_len;
1576
1577   /**
1578    * modifier
1579    */
1580
1581   for (u32 i = 0; i < 8; i++)
1582   {
1583     s_Ch[i][lid] = Ch[i][lid];
1584     s_Cl[i][lid] = Cl[i][lid];
1585   }
1586
1587   __syncthreads ();
1588
1589   if (gid >= gid_max) return;
1590
1591   /**
1592    * main
1593    */
1594
1595   m06100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, bfs_cnt, digests_cnt, digests_offset);
1596 }
1597
1598 extern "C" __global__ void __launch_bounds__ (256, 1) m06100_m16 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
1599 {
1600   /**
1601    * modifier
1602    */
1603
1604   const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
1605   const u32 lid = threadIdx.x;
1606
1607   u32x w0[4];
1608
1609   w0[0] = pws[gid].i[ 0];
1610   w0[1] = pws[gid].i[ 1];
1611   w0[2] = pws[gid].i[ 2];
1612   w0[3] = pws[gid].i[ 3];
1613
1614   u32x w1[4];
1615
1616   w1[0] = pws[gid].i[ 4];
1617   w1[1] = pws[gid].i[ 5];
1618   w1[2] = pws[gid].i[ 6];
1619   w1[3] = pws[gid].i[ 7];
1620
1621   u32x w2[4];
1622
1623   w2[0] = pws[gid].i[ 8];
1624   w2[1] = pws[gid].i[ 9];
1625   w2[2] = pws[gid].i[10];
1626   w2[3] = pws[gid].i[11];
1627
1628   u32x w3[4];
1629
1630   w3[0] = pws[gid].i[12];
1631   w3[1] = pws[gid].i[13];
1632   w3[2] = 0;
1633   w3[3] = 0;
1634
1635   const u32 pw_len = pws[gid].pw_len;
1636
1637   /**
1638    * modifier
1639    */
1640
1641   for (u32 i = 0; i < 8; i++)
1642   {
1643     s_Ch[i][lid] = Ch[i][lid];
1644     s_Cl[i][lid] = Cl[i][lid];
1645   }
1646
1647   __syncthreads ();
1648
1649   if (gid >= gid_max) return;
1650
1651   /**
1652    * main
1653    */
1654
1655   m06100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, bfs_cnt, digests_cnt, digests_offset);
1656 }
1657
1658 extern "C" __global__ void __launch_bounds__ (256, 1) m06100_s04 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
1659 {
1660   /**
1661    * modifier
1662    */
1663
1664   const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
1665   const u32 lid = threadIdx.x;
1666
1667   u32x w0[4];
1668
1669   w0[0] = pws[gid].i[ 0];
1670   w0[1] = pws[gid].i[ 1];
1671   w0[2] = pws[gid].i[ 2];
1672   w0[3] = pws[gid].i[ 3];
1673
1674   u32x w1[4];
1675
1676   w1[0] = 0;
1677   w1[1] = 0;
1678   w1[2] = 0;
1679   w1[3] = 0;
1680
1681   u32x w2[4];
1682
1683   w2[0] = 0;
1684   w2[1] = 0;
1685   w2[2] = 0;
1686   w2[3] = 0;
1687
1688   u32x w3[4];
1689
1690   w3[0] = 0;
1691   w3[1] = 0;
1692   w3[2] = 0;
1693   w3[3] = 0;
1694
1695   const u32 pw_len = pws[gid].pw_len;
1696
1697   /**
1698    * modifier
1699    */
1700
1701   for (u32 i = 0; i < 8; i++)
1702   {
1703     s_Ch[i][lid] = Ch[i][lid];
1704     s_Cl[i][lid] = Cl[i][lid];
1705   }
1706
1707   __syncthreads ();
1708
1709   if (gid >= gid_max) return;
1710
1711   /**
1712    * main
1713    */
1714
1715   m06100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, bfs_cnt, digests_cnt, digests_offset);
1716 }
1717
1718 extern "C" __global__ void __launch_bounds__ (256, 1) m06100_s08 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
1719 {
1720   /**
1721    * modifier
1722    */
1723
1724   const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
1725   const u32 lid = threadIdx.x;
1726
1727   u32x w0[4];
1728
1729   w0[0] = pws[gid].i[ 0];
1730   w0[1] = pws[gid].i[ 1];
1731   w0[2] = pws[gid].i[ 2];
1732   w0[3] = pws[gid].i[ 3];
1733
1734   u32x w1[4];
1735
1736   w1[0] = pws[gid].i[ 4];
1737   w1[1] = pws[gid].i[ 5];
1738   w1[2] = pws[gid].i[ 6];
1739   w1[3] = pws[gid].i[ 7];
1740
1741   u32x w2[4];
1742
1743   w2[0] = 0;
1744   w2[1] = 0;
1745   w2[2] = 0;
1746   w2[3] = 0;
1747
1748   u32x w3[4];
1749
1750   w3[0] = 0;
1751   w3[1] = 0;
1752   w3[2] = 0;
1753   w3[3] = 0;
1754
1755   const u32 pw_len = pws[gid].pw_len;
1756
1757   /**
1758    * modifier
1759    */
1760
1761   for (u32 i = 0; i < 8; i++)
1762   {
1763     s_Ch[i][lid] = Ch[i][lid];
1764     s_Cl[i][lid] = Cl[i][lid];
1765   }
1766
1767   __syncthreads ();
1768
1769   if (gid >= gid_max) return;
1770
1771   /**
1772    * main
1773    */
1774
1775   m06100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, bfs_cnt, digests_cnt, digests_offset);
1776 }
1777
1778 extern "C" __global__ void __launch_bounds__ (256, 1) m06100_s16 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
1779 {
1780   /**
1781    * modifier
1782    */
1783
1784   const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
1785   const u32 lid = threadIdx.x;
1786
1787   u32x w0[4];
1788
1789   w0[0] = pws[gid].i[ 0];
1790   w0[1] = pws[gid].i[ 1];
1791   w0[2] = pws[gid].i[ 2];
1792   w0[3] = pws[gid].i[ 3];
1793
1794   u32x w1[4];
1795
1796   w1[0] = pws[gid].i[ 4];
1797   w1[1] = pws[gid].i[ 5];
1798   w1[2] = pws[gid].i[ 6];
1799   w1[3] = pws[gid].i[ 7];
1800
1801   u32x w2[4];
1802
1803   w2[0] = pws[gid].i[ 8];
1804   w2[1] = pws[gid].i[ 9];
1805   w2[2] = pws[gid].i[10];
1806   w2[3] = pws[gid].i[11];
1807
1808   u32x w3[4];
1809
1810   w3[0] = pws[gid].i[12];
1811   w3[1] = pws[gid].i[13];
1812   w3[2] = 0;
1813   w3[3] = 0;
1814
1815   const u32 pw_len = pws[gid].pw_len;
1816
1817   /**
1818    * modifier
1819    */
1820
1821   for (u32 i = 0; i < 8; i++)
1822   {
1823     s_Ch[i][lid] = Ch[i][lid];
1824     s_Cl[i][lid] = Cl[i][lid];
1825   }
1826
1827   __syncthreads ();
1828
1829   if (gid >= gid_max) return;
1830
1831   /**
1832    * main
1833    */
1834
1835   m06100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, bfs_cnt, digests_cnt, digests_offset);
1836 }