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