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