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