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