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 "types_ocl.c"
20 #include "gpu_aes256_amd.c"
21 #include "gpu_twofish256_amd.c"
22 #include "gpu_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 (const u32 w[16], 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 stateh[0] = w[ 0] ^ Kh[0];
1148 statel[0] = w[ 1] ^ Kl[0];
1149 stateh[1] = w[ 2] ^ Kh[1];
1150 statel[1] = w[ 3] ^ Kl[1];
1151 stateh[2] = w[ 4] ^ Kh[2];
1152 statel[2] = w[ 5] ^ Kl[2];
1153 stateh[3] = w[ 6] ^ Kh[3];
1154 statel[3] = w[ 7] ^ Kl[3];
1155 stateh[4] = w[ 8] ^ Kh[4];
1156 statel[4] = w[ 9] ^ Kl[4];
1157 stateh[5] = w[10] ^ Kh[5];
1158 statel[5] = w[11] ^ Kl[5];
1159 stateh[6] = w[12] ^ Kh[6];
1160 statel[6] = w[13] ^ Kl[6];
1161 stateh[7] = w[14] ^ Kh[7];
1162 statel[7] = w[15] ^ Kl[7];
1166 for (r = 1; r <= R; r++)
1174 for (i = 0; i < 8; i++)
1176 const u8 Lp0 = Kh[(i + 8) & 7] >> 24;
1177 const u8 Lp1 = Kh[(i + 7) & 7] >> 16;
1178 const u8 Lp2 = Kh[(i + 6) & 7] >> 8;
1179 const u8 Lp3 = Kh[(i + 5) & 7] >> 0;
1180 const u8 Lp4 = Kl[(i + 4) & 7] >> 24;
1181 const u8 Lp5 = Kl[(i + 3) & 7] >> 16;
1182 const u8 Lp6 = Kl[(i + 2) & 7] >> 8;
1183 const u8 Lp7 = Kl[(i + 1) & 7] >> 0;
1185 Lh[i] = BOX (s_Ch, 0, Lp0 & 0xff)
1186 ^ BOX (s_Ch, 1, Lp1 & 0xff)
1187 ^ BOX (s_Ch, 2, Lp2 & 0xff)
1188 ^ BOX (s_Ch, 3, Lp3 & 0xff)
1189 ^ BOX (s_Ch, 4, Lp4 & 0xff)
1190 ^ BOX (s_Ch, 5, Lp5 & 0xff)
1191 ^ BOX (s_Ch, 6, Lp6 & 0xff)
1192 ^ BOX (s_Ch, 7, Lp7 & 0xff);
1194 Ll[i] = BOX (s_Cl, 0, Lp0 & 0xff)
1195 ^ BOX (s_Cl, 1, Lp1 & 0xff)
1196 ^ BOX (s_Cl, 2, Lp2 & 0xff)
1197 ^ BOX (s_Cl, 3, Lp3 & 0xff)
1198 ^ BOX (s_Cl, 4, Lp4 & 0xff)
1199 ^ BOX (s_Cl, 5, Lp5 & 0xff)
1200 ^ BOX (s_Cl, 6, Lp6 & 0xff)
1201 ^ BOX (s_Cl, 7, Lp7 & 0xff);
1204 Kh[0] = Lh[0] ^ rch[r];
1205 Kl[0] = Ll[0] ^ rcl[r];
1222 for (i = 0; i < 8; i++)
1224 const u8 Lp0 = stateh[(i + 8) & 7] >> 24;
1225 const u8 Lp1 = stateh[(i + 7) & 7] >> 16;
1226 const u8 Lp2 = stateh[(i + 6) & 7] >> 8;
1227 const u8 Lp3 = stateh[(i + 5) & 7] >> 0;
1228 const u8 Lp4 = statel[(i + 4) & 7] >> 24;
1229 const u8 Lp5 = statel[(i + 3) & 7] >> 16;
1230 const u8 Lp6 = statel[(i + 2) & 7] >> 8;
1231 const u8 Lp7 = statel[(i + 1) & 7] >> 0;
1233 Lh[i] = BOX (s_Ch, 0, Lp0 & 0xff)
1234 ^ BOX (s_Ch, 1, Lp1 & 0xff)
1235 ^ BOX (s_Ch, 2, Lp2 & 0xff)
1236 ^ BOX (s_Ch, 3, Lp3 & 0xff)
1237 ^ BOX (s_Ch, 4, Lp4 & 0xff)
1238 ^ BOX (s_Ch, 5, Lp5 & 0xff)
1239 ^ BOX (s_Ch, 6, Lp6 & 0xff)
1240 ^ BOX (s_Ch, 7, Lp7 & 0xff);
1242 Ll[i] = BOX (s_Cl, 0, Lp0 & 0xff)
1243 ^ BOX (s_Cl, 1, Lp1 & 0xff)
1244 ^ BOX (s_Cl, 2, Lp2 & 0xff)
1245 ^ BOX (s_Cl, 3, Lp3 & 0xff)
1246 ^ BOX (s_Cl, 4, Lp4 & 0xff)
1247 ^ BOX (s_Cl, 5, Lp5 & 0xff)
1248 ^ BOX (s_Cl, 6, Lp6 & 0xff)
1249 ^ BOX (s_Cl, 7, Lp7 & 0xff);
1252 stateh[0] = Lh[0] ^ Kh[0];
1253 statel[0] = Ll[0] ^ Kl[0];
1254 stateh[1] = Lh[1] ^ Kh[1];
1255 statel[1] = Ll[1] ^ Kl[1];
1256 stateh[2] = Lh[2] ^ Kh[2];
1257 statel[2] = Ll[2] ^ Kl[2];
1258 stateh[3] = Lh[3] ^ Kh[3];
1259 statel[3] = Ll[3] ^ Kl[3];
1260 stateh[4] = Lh[4] ^ Kh[4];
1261 statel[4] = Ll[4] ^ Kl[4];
1262 stateh[5] = Lh[5] ^ Kh[5];
1263 statel[5] = Ll[5] ^ Kl[5];
1264 stateh[6] = Lh[6] ^ Kh[6];
1265 statel[6] = Ll[6] ^ Kl[6];
1266 stateh[7] = Lh[7] ^ Kh[7];
1267 statel[7] = Ll[7] ^ Kl[7];
1270 dgst[ 0] ^= stateh[0] ^ w[ 0];
1271 dgst[ 1] ^= statel[0] ^ w[ 1];
1272 dgst[ 2] ^= stateh[1] ^ w[ 2];
1273 dgst[ 3] ^= statel[1] ^ w[ 3];
1274 dgst[ 4] ^= stateh[2] ^ w[ 4];
1275 dgst[ 5] ^= statel[2] ^ w[ 5];
1276 dgst[ 6] ^= stateh[3] ^ w[ 6];
1277 dgst[ 7] ^= statel[3] ^ w[ 7];
1278 dgst[ 8] ^= stateh[4] ^ w[ 8];
1279 dgst[ 9] ^= statel[4] ^ w[ 9];
1280 dgst[10] ^= stateh[5] ^ w[10];
1281 dgst[11] ^= statel[5] ^ w[11];
1282 dgst[12] ^= stateh[6] ^ w[12];
1283 dgst[13] ^= statel[6] ^ w[13];
1284 dgst[14] ^= stateh[7] ^ w[14];
1285 dgst[15] ^= statel[7] ^ w[15];
1288 static void hmac_run2 (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])
1290 dgst[ 0] = ipad[ 0];
1291 dgst[ 1] = ipad[ 1];
1292 dgst[ 2] = ipad[ 2];
1293 dgst[ 3] = ipad[ 3];
1294 dgst[ 4] = ipad[ 4];
1295 dgst[ 5] = ipad[ 5];
1296 dgst[ 6] = ipad[ 6];
1297 dgst[ 7] = ipad[ 7];
1298 dgst[ 8] = ipad[ 8];
1299 dgst[ 9] = ipad[ 9];
1300 dgst[10] = ipad[10];
1301 dgst[11] = ipad[11];
1302 dgst[12] = ipad[12];
1303 dgst[13] = ipad[13];
1304 dgst[14] = ipad[14];
1305 dgst[15] = ipad[15];
1307 whirlpool_transform (w1, dgst, s_Ch, s_Cl);
1308 whirlpool_transform (w2, dgst, s_Ch, s_Cl);
1329 dgst[ 0] = opad[ 0];
1330 dgst[ 1] = opad[ 1];
1331 dgst[ 2] = opad[ 2];
1332 dgst[ 3] = opad[ 3];
1333 dgst[ 4] = opad[ 4];
1334 dgst[ 5] = opad[ 5];
1335 dgst[ 6] = opad[ 6];
1336 dgst[ 7] = opad[ 7];
1337 dgst[ 8] = opad[ 8];
1338 dgst[ 9] = opad[ 9];
1339 dgst[10] = opad[10];
1340 dgst[11] = opad[11];
1341 dgst[12] = opad[12];
1342 dgst[13] = opad[13];
1343 dgst[14] = opad[14];
1344 dgst[15] = opad[15];
1346 whirlpool_transform (w, dgst, s_Ch, s_Cl);
1363 w[15] = (64 + 64) * 8;
1365 whirlpool_transform (w, dgst, s_Ch, s_Cl);
1368 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])
1370 w[ 0] ^= 0x36363636;
1371 w[ 1] ^= 0x36363636;
1372 w[ 2] ^= 0x36363636;
1373 w[ 3] ^= 0x36363636;
1374 w[ 4] ^= 0x36363636;
1375 w[ 5] ^= 0x36363636;
1376 w[ 6] ^= 0x36363636;
1377 w[ 7] ^= 0x36363636;
1378 w[ 8] ^= 0x36363636;
1379 w[ 9] ^= 0x36363636;
1380 w[10] ^= 0x36363636;
1381 w[11] ^= 0x36363636;
1382 w[12] ^= 0x36363636;
1383 w[13] ^= 0x36363636;
1384 w[14] ^= 0x36363636;
1385 w[15] ^= 0x36363636;
1404 whirlpool_transform (w, ipad, s_Ch, s_Cl);
1406 w[ 0] ^= 0x6a6a6a6a;
1407 w[ 1] ^= 0x6a6a6a6a;
1408 w[ 2] ^= 0x6a6a6a6a;
1409 w[ 3] ^= 0x6a6a6a6a;
1410 w[ 4] ^= 0x6a6a6a6a;
1411 w[ 5] ^= 0x6a6a6a6a;
1412 w[ 6] ^= 0x6a6a6a6a;
1413 w[ 7] ^= 0x6a6a6a6a;
1414 w[ 8] ^= 0x6a6a6a6a;
1415 w[ 9] ^= 0x6a6a6a6a;
1416 w[10] ^= 0x6a6a6a6a;
1417 w[11] ^= 0x6a6a6a6a;
1418 w[12] ^= 0x6a6a6a6a;
1419 w[13] ^= 0x6a6a6a6a;
1420 w[14] ^= 0x6a6a6a6a;
1421 w[15] ^= 0x6a6a6a6a;
1440 whirlpool_transform (w, opad, s_Ch, s_Cl);
1443 static u32 u8add (const u32 a, const u32 b)
1445 const u32 a1 = (a >> 0) & 0xff;
1446 const u32 a2 = (a >> 8) & 0xff;
1447 const u32 a3 = (a >> 16) & 0xff;
1448 const u32 a4 = (a >> 24) & 0xff;
1450 const u32 b1 = (b >> 0) & 0xff;
1451 const u32 b2 = (b >> 8) & 0xff;
1452 const u32 b3 = (b >> 16) & 0xff;
1453 const u32 b4 = (b >> 24) & 0xff;
1455 const u32 r1 = (a1 + b1) & 0xff;
1456 const u32 r2 = (a2 + b2) & 0xff;
1457 const u32 r3 = (a3 + b3) & 0xff;
1458 const u32 r4 = (a4 + b4) & 0xff;
1460 const u32 r = r1 << 0
1468 __kernel void __attribute__((reqd_work_group_size (64, 1, 1))) m06231_init (__global pw_t *pws, __global gpu_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)
1474 const u32 gid = get_global_id (0);
1478 w0[0] = pws[gid].i[ 0];
1479 w0[1] = pws[gid].i[ 1];
1480 w0[2] = pws[gid].i[ 2];
1481 w0[3] = pws[gid].i[ 3];
1485 w1[0] = pws[gid].i[ 4];
1486 w1[1] = pws[gid].i[ 5];
1487 w1[2] = pws[gid].i[ 6];
1488 w1[3] = pws[gid].i[ 7];
1492 w2[0] = pws[gid].i[ 8];
1493 w2[1] = pws[gid].i[ 9];
1494 w2[2] = pws[gid].i[10];
1495 w2[3] = pws[gid].i[11];
1499 w3[0] = pws[gid].i[12];
1500 w3[1] = pws[gid].i[13];
1501 w3[2] = pws[gid].i[14];
1502 w3[3] = pws[gid].i[15];
1508 w0[0] = u8add (w0[0], esalt_bufs[salt_pos].keyfile_buf[ 0]);
1509 w0[1] = u8add (w0[1], esalt_bufs[salt_pos].keyfile_buf[ 1]);
1510 w0[2] = u8add (w0[2], esalt_bufs[salt_pos].keyfile_buf[ 2]);
1511 w0[3] = u8add (w0[3], esalt_bufs[salt_pos].keyfile_buf[ 3]);
1512 w1[0] = u8add (w1[0], esalt_bufs[salt_pos].keyfile_buf[ 4]);
1513 w1[1] = u8add (w1[1], esalt_bufs[salt_pos].keyfile_buf[ 5]);
1514 w1[2] = u8add (w1[2], esalt_bufs[salt_pos].keyfile_buf[ 6]);
1515 w1[3] = u8add (w1[3], esalt_bufs[salt_pos].keyfile_buf[ 7]);
1516 w2[0] = u8add (w2[0], esalt_bufs[salt_pos].keyfile_buf[ 8]);
1517 w2[1] = u8add (w2[1], esalt_bufs[salt_pos].keyfile_buf[ 9]);
1518 w2[2] = u8add (w2[2], esalt_bufs[salt_pos].keyfile_buf[10]);
1519 w2[3] = u8add (w2[3], esalt_bufs[salt_pos].keyfile_buf[11]);
1520 w3[0] = u8add (w3[0], esalt_bufs[salt_pos].keyfile_buf[12]);
1521 w3[1] = u8add (w3[1], esalt_bufs[salt_pos].keyfile_buf[13]);
1522 w3[2] = u8add (w3[2], esalt_bufs[salt_pos].keyfile_buf[14]);
1523 w3[3] = u8add (w3[3], esalt_bufs[salt_pos].keyfile_buf[15]);
1529 __local u32 s_Ch[8][256];
1530 __local u32 s_Cl[8][256];
1532 const u32 lid = get_local_id (0);
1534 const u32 lid4 = lid * 4;
1536 for (u32 i = 0; i < 8; i++)
1538 s_Ch[i][lid4 + 0] = Ch[i][lid4 + 0];
1539 s_Ch[i][lid4 + 1] = Ch[i][lid4 + 1];
1540 s_Ch[i][lid4 + 2] = Ch[i][lid4 + 2];
1541 s_Ch[i][lid4 + 3] = Ch[i][lid4 + 3];
1542 s_Cl[i][lid4 + 0] = Cl[i][lid4 + 0];
1543 s_Cl[i][lid4 + 1] = Cl[i][lid4 + 1];
1544 s_Cl[i][lid4 + 2] = Cl[i][lid4 + 2];
1545 s_Cl[i][lid4 + 3] = Cl[i][lid4 + 3];
1548 barrier (CLK_LOCAL_MEM_FENCE);
1550 if (gid >= gid_max) return;
1558 salt_buf1[ 0] = swap32 (esalt_bufs[salt_pos].salt_buf[ 0]);
1559 salt_buf1[ 1] = swap32 (esalt_bufs[salt_pos].salt_buf[ 1]);
1560 salt_buf1[ 2] = swap32 (esalt_bufs[salt_pos].salt_buf[ 2]);
1561 salt_buf1[ 3] = swap32 (esalt_bufs[salt_pos].salt_buf[ 3]);
1562 salt_buf1[ 4] = swap32 (esalt_bufs[salt_pos].salt_buf[ 4]);
1563 salt_buf1[ 5] = swap32 (esalt_bufs[salt_pos].salt_buf[ 5]);
1564 salt_buf1[ 6] = swap32 (esalt_bufs[salt_pos].salt_buf[ 6]);
1565 salt_buf1[ 7] = swap32 (esalt_bufs[salt_pos].salt_buf[ 7]);
1566 salt_buf1[ 8] = swap32 (esalt_bufs[salt_pos].salt_buf[ 8]);
1567 salt_buf1[ 9] = swap32 (esalt_bufs[salt_pos].salt_buf[ 9]);
1568 salt_buf1[10] = swap32 (esalt_bufs[salt_pos].salt_buf[10]);
1569 salt_buf1[11] = swap32 (esalt_bufs[salt_pos].salt_buf[11]);
1570 salt_buf1[12] = swap32 (esalt_bufs[salt_pos].salt_buf[12]);
1571 salt_buf1[13] = swap32 (esalt_bufs[salt_pos].salt_buf[13]);
1572 salt_buf1[14] = swap32 (esalt_bufs[salt_pos].salt_buf[14]);
1573 salt_buf1[15] = swap32 (esalt_bufs[salt_pos].salt_buf[15]);
1578 salt_buf2[ 1] = 0x80000000;
1592 salt_buf2[15] = (64 + 64 + 4) * 8;
1594 const u32 truecrypt_mdlen = salt_bufs[0].truecrypt_mdlen;
1598 w[ 0] = swap32 (w0[0]);
1599 w[ 1] = swap32 (w0[1]);
1600 w[ 2] = swap32 (w0[2]);
1601 w[ 3] = swap32 (w0[3]);
1602 w[ 4] = swap32 (w1[0]);
1603 w[ 5] = swap32 (w1[1]);
1604 w[ 6] = swap32 (w1[2]);
1605 w[ 7] = swap32 (w1[3]);
1606 w[ 8] = swap32 (w2[0]);
1607 w[ 9] = swap32 (w2[1]);
1608 w[10] = swap32 (w2[2]);
1609 w[11] = swap32 (w2[3]);
1610 w[12] = swap32 (w3[0]);
1611 w[13] = swap32 (w3[1]);
1612 w[14] = swap32 (w3[2]);
1613 w[15] = swap32 (w3[3]);
1618 hmac_init (w, ipad, opad, s_Ch, s_Cl);
1620 tmps[gid].ipad[ 0] = ipad[ 0];
1621 tmps[gid].ipad[ 1] = ipad[ 1];
1622 tmps[gid].ipad[ 2] = ipad[ 2];
1623 tmps[gid].ipad[ 3] = ipad[ 3];
1624 tmps[gid].ipad[ 4] = ipad[ 4];
1625 tmps[gid].ipad[ 5] = ipad[ 5];
1626 tmps[gid].ipad[ 6] = ipad[ 6];
1627 tmps[gid].ipad[ 7] = ipad[ 7];
1628 tmps[gid].ipad[ 8] = ipad[ 8];
1629 tmps[gid].ipad[ 9] = ipad[ 9];
1630 tmps[gid].ipad[10] = ipad[10];
1631 tmps[gid].ipad[11] = ipad[11];
1632 tmps[gid].ipad[12] = ipad[12];
1633 tmps[gid].ipad[13] = ipad[13];
1634 tmps[gid].ipad[14] = ipad[14];
1635 tmps[gid].ipad[15] = ipad[15];
1637 tmps[gid].opad[ 0] = opad[ 0];
1638 tmps[gid].opad[ 1] = opad[ 1];
1639 tmps[gid].opad[ 2] = opad[ 2];
1640 tmps[gid].opad[ 3] = opad[ 3];
1641 tmps[gid].opad[ 4] = opad[ 4];
1642 tmps[gid].opad[ 5] = opad[ 5];
1643 tmps[gid].opad[ 6] = opad[ 6];
1644 tmps[gid].opad[ 7] = opad[ 7];
1645 tmps[gid].opad[ 8] = opad[ 8];
1646 tmps[gid].opad[ 9] = opad[ 9];
1647 tmps[gid].opad[10] = opad[10];
1648 tmps[gid].opad[11] = opad[11];
1649 tmps[gid].opad[12] = opad[12];
1650 tmps[gid].opad[13] = opad[13];
1651 tmps[gid].opad[14] = opad[14];
1652 tmps[gid].opad[15] = opad[15];
1654 for (u32 i = 0, j = 1; i < (truecrypt_mdlen / 8 / 4); i += 16, j += 1)
1660 hmac_run2 (salt_buf1, salt_buf2, ipad, opad, dgst, s_Ch, s_Cl);
1662 tmps[gid].dgst[i + 0] = dgst[ 0];
1663 tmps[gid].dgst[i + 1] = dgst[ 1];
1664 tmps[gid].dgst[i + 2] = dgst[ 2];
1665 tmps[gid].dgst[i + 3] = dgst[ 3];
1666 tmps[gid].dgst[i + 4] = dgst[ 4];
1667 tmps[gid].dgst[i + 5] = dgst[ 5];
1668 tmps[gid].dgst[i + 6] = dgst[ 6];
1669 tmps[gid].dgst[i + 7] = dgst[ 7];
1670 tmps[gid].dgst[i + 8] = dgst[ 8];
1671 tmps[gid].dgst[i + 9] = dgst[ 9];
1672 tmps[gid].dgst[i + 10] = dgst[10];
1673 tmps[gid].dgst[i + 11] = dgst[11];
1674 tmps[gid].dgst[i + 12] = dgst[12];
1675 tmps[gid].dgst[i + 13] = dgst[13];
1676 tmps[gid].dgst[i + 14] = dgst[14];
1677 tmps[gid].dgst[i + 15] = dgst[15];
1679 tmps[gid].out[i + 0] = dgst[ 0];
1680 tmps[gid].out[i + 1] = dgst[ 1];
1681 tmps[gid].out[i + 2] = dgst[ 2];
1682 tmps[gid].out[i + 3] = dgst[ 3];
1683 tmps[gid].out[i + 4] = dgst[ 4];
1684 tmps[gid].out[i + 5] = dgst[ 5];
1685 tmps[gid].out[i + 6] = dgst[ 6];
1686 tmps[gid].out[i + 7] = dgst[ 7];
1687 tmps[gid].out[i + 8] = dgst[ 8];
1688 tmps[gid].out[i + 9] = dgst[ 9];
1689 tmps[gid].out[i + 10] = dgst[10];
1690 tmps[gid].out[i + 11] = dgst[11];
1691 tmps[gid].out[i + 12] = dgst[12];
1692 tmps[gid].out[i + 13] = dgst[13];
1693 tmps[gid].out[i + 14] = dgst[14];
1694 tmps[gid].out[i + 15] = dgst[15];
1698 __kernel void __attribute__((reqd_work_group_size (64, 1, 1))) m06231_loop (__global pw_t *pws, __global gpu_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)
1700 const u32 truecrypt_mdlen = salt_bufs[0].truecrypt_mdlen;
1702 __local u32 s_Ch[8][256];
1703 __local u32 s_Cl[8][256];
1705 const u32 gid = get_global_id (0);
1706 const u32 lid = get_local_id (0);
1708 const u32 lid4 = lid * 4;
1710 for (u32 i = 0; i < 8; i++)
1712 s_Ch[i][lid4 + 0] = Ch[i][lid4 + 0];
1713 s_Ch[i][lid4 + 1] = Ch[i][lid4 + 1];
1714 s_Ch[i][lid4 + 2] = Ch[i][lid4 + 2];
1715 s_Ch[i][lid4 + 3] = Ch[i][lid4 + 3];
1716 s_Cl[i][lid4 + 0] = Cl[i][lid4 + 0];
1717 s_Cl[i][lid4 + 1] = Cl[i][lid4 + 1];
1718 s_Cl[i][lid4 + 2] = Cl[i][lid4 + 2];
1719 s_Cl[i][lid4 + 3] = Cl[i][lid4 + 3];
1722 barrier (CLK_LOCAL_MEM_FENCE);
1724 if (gid >= gid_max) return;
1728 ipad[ 0] = tmps[gid].ipad[ 0];
1729 ipad[ 1] = tmps[gid].ipad[ 1],
1730 ipad[ 2] = tmps[gid].ipad[ 2];
1731 ipad[ 3] = tmps[gid].ipad[ 3];
1732 ipad[ 4] = tmps[gid].ipad[ 4];
1733 ipad[ 5] = tmps[gid].ipad[ 5];
1734 ipad[ 6] = tmps[gid].ipad[ 6],
1735 ipad[ 7] = tmps[gid].ipad[ 7];
1736 ipad[ 8] = tmps[gid].ipad[ 8];
1737 ipad[ 9] = tmps[gid].ipad[ 9];
1738 ipad[10] = tmps[gid].ipad[10];
1739 ipad[11] = tmps[gid].ipad[11],
1740 ipad[12] = tmps[gid].ipad[12];
1741 ipad[13] = tmps[gid].ipad[13];
1742 ipad[14] = tmps[gid].ipad[14];
1743 ipad[15] = tmps[gid].ipad[15];
1747 opad[ 0] = tmps[gid].opad[ 0];
1748 opad[ 1] = tmps[gid].opad[ 1],
1749 opad[ 2] = tmps[gid].opad[ 2];
1750 opad[ 3] = tmps[gid].opad[ 3];
1751 opad[ 4] = tmps[gid].opad[ 4];
1752 opad[ 5] = tmps[gid].opad[ 5];
1753 opad[ 6] = tmps[gid].opad[ 6],
1754 opad[ 7] = tmps[gid].opad[ 7];
1755 opad[ 8] = tmps[gid].opad[ 8];
1756 opad[ 9] = tmps[gid].opad[ 9];
1757 opad[10] = tmps[gid].opad[10];
1758 opad[11] = tmps[gid].opad[11],
1759 opad[12] = tmps[gid].opad[12];
1760 opad[13] = tmps[gid].opad[13];
1761 opad[14] = tmps[gid].opad[14];
1762 opad[15] = tmps[gid].opad[15];
1764 for (u32 i = 0; i < (truecrypt_mdlen / 8 / 4); i += 16)
1768 dgst[ 0] = tmps[gid].dgst[i + 0];
1769 dgst[ 1] = tmps[gid].dgst[i + 1];
1770 dgst[ 2] = tmps[gid].dgst[i + 2];
1771 dgst[ 3] = tmps[gid].dgst[i + 3];
1772 dgst[ 4] = tmps[gid].dgst[i + 4];
1773 dgst[ 5] = tmps[gid].dgst[i + 5];
1774 dgst[ 6] = tmps[gid].dgst[i + 6];
1775 dgst[ 7] = tmps[gid].dgst[i + 7];
1776 dgst[ 8] = tmps[gid].dgst[i + 8];
1777 dgst[ 9] = tmps[gid].dgst[i + 9];
1778 dgst[10] = tmps[gid].dgst[i + 10];
1779 dgst[11] = tmps[gid].dgst[i + 11];
1780 dgst[12] = tmps[gid].dgst[i + 12];
1781 dgst[13] = tmps[gid].dgst[i + 13];
1782 dgst[14] = tmps[gid].dgst[i + 14];
1783 dgst[15] = tmps[gid].dgst[i + 15];
1787 out[ 0] = tmps[gid].out[i + 0];
1788 out[ 1] = tmps[gid].out[i + 1];
1789 out[ 2] = tmps[gid].out[i + 2];
1790 out[ 3] = tmps[gid].out[i + 3];
1791 out[ 4] = tmps[gid].out[i + 4];
1792 out[ 5] = tmps[gid].out[i + 5];
1793 out[ 6] = tmps[gid].out[i + 6];
1794 out[ 7] = tmps[gid].out[i + 7];
1795 out[ 8] = tmps[gid].out[i + 8];
1796 out[ 9] = tmps[gid].out[i + 9];
1797 out[10] = tmps[gid].out[i + 10];
1798 out[11] = tmps[gid].out[i + 11];
1799 out[12] = tmps[gid].out[i + 12];
1800 out[13] = tmps[gid].out[i + 13];
1801 out[14] = tmps[gid].out[i + 14];
1802 out[15] = tmps[gid].out[i + 15];
1804 for (u32 j = 0; j < loop_cnt; j++)
1827 w2[ 0] = 0x80000000;
1842 w2[15] = (64 + 64) * 8;
1844 hmac_run2 (w1, w2, ipad, opad, dgst, s_Ch, s_Cl);
1846 out[ 0] ^= dgst[ 0];
1847 out[ 1] ^= dgst[ 1];
1848 out[ 2] ^= dgst[ 2];
1849 out[ 3] ^= dgst[ 3];
1850 out[ 4] ^= dgst[ 4];
1851 out[ 5] ^= dgst[ 5];
1852 out[ 6] ^= dgst[ 6];
1853 out[ 7] ^= dgst[ 7];
1854 out[ 8] ^= dgst[ 8];
1855 out[ 9] ^= dgst[ 9];
1856 out[10] ^= dgst[10];
1857 out[11] ^= dgst[11];
1858 out[12] ^= dgst[12];
1859 out[13] ^= dgst[13];
1860 out[14] ^= dgst[14];
1861 out[15] ^= dgst[15];
1864 tmps[gid].dgst[i + 0] = dgst[ 0];
1865 tmps[gid].dgst[i + 1] = dgst[ 1];
1866 tmps[gid].dgst[i + 2] = dgst[ 2];
1867 tmps[gid].dgst[i + 3] = dgst[ 3];
1868 tmps[gid].dgst[i + 4] = dgst[ 4];
1869 tmps[gid].dgst[i + 5] = dgst[ 5];
1870 tmps[gid].dgst[i + 6] = dgst[ 6];
1871 tmps[gid].dgst[i + 7] = dgst[ 7];
1872 tmps[gid].dgst[i + 8] = dgst[ 8];
1873 tmps[gid].dgst[i + 9] = dgst[ 9];
1874 tmps[gid].dgst[i + 10] = dgst[10];
1875 tmps[gid].dgst[i + 11] = dgst[11];
1876 tmps[gid].dgst[i + 12] = dgst[12];
1877 tmps[gid].dgst[i + 13] = dgst[13];
1878 tmps[gid].dgst[i + 14] = dgst[14];
1879 tmps[gid].dgst[i + 15] = dgst[15];
1881 tmps[gid].out[i + 0] = out[ 0];
1882 tmps[gid].out[i + 1] = out[ 1];
1883 tmps[gid].out[i + 2] = out[ 2];
1884 tmps[gid].out[i + 3] = out[ 3];
1885 tmps[gid].out[i + 4] = out[ 4];
1886 tmps[gid].out[i + 5] = out[ 5];
1887 tmps[gid].out[i + 6] = out[ 6];
1888 tmps[gid].out[i + 7] = out[ 7];
1889 tmps[gid].out[i + 8] = out[ 8];
1890 tmps[gid].out[i + 9] = out[ 9];
1891 tmps[gid].out[i + 10] = out[10];
1892 tmps[gid].out[i + 11] = out[11];
1893 tmps[gid].out[i + 12] = out[12];
1894 tmps[gid].out[i + 13] = out[13];
1895 tmps[gid].out[i + 14] = out[14];
1896 tmps[gid].out[i + 15] = out[15];
1900 __kernel void __attribute__((reqd_work_group_size (64, 1, 1))) m06231_comp (__global pw_t *pws, __global gpu_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)
1906 const u32 gid = get_global_id (0);
1907 const u32 lid = get_local_id (0);
1909 if (gid >= gid_max) return;
1913 ukey1[0] = swap32 (tmps[gid].out[ 0]);
1914 ukey1[1] = swap32 (tmps[gid].out[ 1]);
1915 ukey1[2] = swap32 (tmps[gid].out[ 2]);
1916 ukey1[3] = swap32 (tmps[gid].out[ 3]);
1917 ukey1[4] = swap32 (tmps[gid].out[ 4]);
1918 ukey1[5] = swap32 (tmps[gid].out[ 5]);
1919 ukey1[6] = swap32 (tmps[gid].out[ 6]);
1920 ukey1[7] = swap32 (tmps[gid].out[ 7]);
1924 ukey2[0] = swap32 (tmps[gid].out[ 8]);
1925 ukey2[1] = swap32 (tmps[gid].out[ 9]);
1926 ukey2[2] = swap32 (tmps[gid].out[10]);
1927 ukey2[3] = swap32 (tmps[gid].out[11]);
1928 ukey2[4] = swap32 (tmps[gid].out[12]);
1929 ukey2[5] = swap32 (tmps[gid].out[13]);
1930 ukey2[6] = swap32 (tmps[gid].out[14]);
1931 ukey2[7] = swap32 (tmps[gid].out[15]);
1935 data[0] = esalt_bufs[0].data_buf[0];
1936 data[1] = esalt_bufs[0].data_buf[1];
1937 data[2] = esalt_bufs[0].data_buf[2];
1938 data[3] = esalt_bufs[0].data_buf[3];
1948 aes256_decrypt_xts (ukey1, ukey2, tmp, tmp);
1950 if (((tmp[0] == 0x45555254) && (tmp[3] == 0)) || ((tmp[0] == 0x45555254) && ((tmp[1] >> 16) <= 5)))
1952 mark_hash (plains_buf, hashes_shown, 0, gid, 0);
1954 d_return_buf[lid] = 1;
1964 serpent256_decrypt_xts (ukey1, ukey2, tmp, tmp);
1966 if (((tmp[0] == 0x45555254) && (tmp[3] == 0)) || ((tmp[0] == 0x45555254) && ((tmp[1] >> 16) <= 5)))
1968 mark_hash (plains_buf, hashes_shown, 0, gid, 0);
1970 d_return_buf[lid] = 1;
1980 twofish256_decrypt_xts (ukey1, ukey2, tmp, tmp);
1982 if (((tmp[0] == 0x45555254) && (tmp[3] == 0)) || ((tmp[0] == 0x45555254) && ((tmp[1] >> 16) <= 5)))
1984 mark_hash (plains_buf, hashes_shown, 0, gid, 0);
1986 d_return_buf[lid] = 1;