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