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