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