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