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