2 * Author......: Jens Steube <jens.steube@gmail.com>
8 #include "include/constants.h"
9 #include "include/kernel_vendor.h"
24 #include "include/kernel_functions.c"
26 #include "common_nv.c"
29 #define VECT_COMPARE_S "check_single_vect1_comp4.c"
30 #define VECT_COMPARE_M "check_multi_vect1_comp4.c"
34 #define VECT_COMPARE_S "check_single_vect2_comp4.c"
35 #define VECT_COMPARE_M "check_multi_vect2_comp4.c"
38 #define PERM_OP(a,b,tt,n,m) \
48 #define HPERM_OP(a,tt,n,m) \
54 tt = tt >> (16 + n); \
58 __device__ __constant__ u32 c_SPtrans[8][64] =
61 0x02080800, 0x00080000, 0x02000002, 0x02080802,
62 0x02000000, 0x00080802, 0x00080002, 0x02000002,
63 0x00080802, 0x02080800, 0x02080000, 0x00000802,
64 0x02000802, 0x02000000, 0x00000000, 0x00080002,
65 0x00080000, 0x00000002, 0x02000800, 0x00080800,
66 0x02080802, 0x02080000, 0x00000802, 0x02000800,
67 0x00000002, 0x00000800, 0x00080800, 0x02080002,
68 0x00000800, 0x02000802, 0x02080002, 0x00000000,
69 0x00000000, 0x02080802, 0x02000800, 0x00080002,
70 0x02080800, 0x00080000, 0x00000802, 0x02000800,
71 0x02080002, 0x00000800, 0x00080800, 0x02000002,
72 0x00080802, 0x00000002, 0x02000002, 0x02080000,
73 0x02080802, 0x00080800, 0x02080000, 0x02000802,
74 0x02000000, 0x00000802, 0x00080002, 0x00000000,
75 0x00080000, 0x02000000, 0x02000802, 0x02080800,
76 0x00000002, 0x02080002, 0x00000800, 0x00080802,
78 0x40108010, 0x00000000, 0x00108000, 0x40100000,
79 0x40000010, 0x00008010, 0x40008000, 0x00108000,
80 0x00008000, 0x40100010, 0x00000010, 0x40008000,
81 0x00100010, 0x40108000, 0x40100000, 0x00000010,
82 0x00100000, 0x40008010, 0x40100010, 0x00008000,
83 0x00108010, 0x40000000, 0x00000000, 0x00100010,
84 0x40008010, 0x00108010, 0x40108000, 0x40000010,
85 0x40000000, 0x00100000, 0x00008010, 0x40108010,
86 0x00100010, 0x40108000, 0x40008000, 0x00108010,
87 0x40108010, 0x00100010, 0x40000010, 0x00000000,
88 0x40000000, 0x00008010, 0x00100000, 0x40100010,
89 0x00008000, 0x40000000, 0x00108010, 0x40008010,
90 0x40108000, 0x00008000, 0x00000000, 0x40000010,
91 0x00000010, 0x40108010, 0x00108000, 0x40100000,
92 0x40100010, 0x00100000, 0x00008010, 0x40008000,
93 0x40008010, 0x00000010, 0x40100000, 0x00108000,
95 0x04000001, 0x04040100, 0x00000100, 0x04000101,
96 0x00040001, 0x04000000, 0x04000101, 0x00040100,
97 0x04000100, 0x00040000, 0x04040000, 0x00000001,
98 0x04040101, 0x00000101, 0x00000001, 0x04040001,
99 0x00000000, 0x00040001, 0x04040100, 0x00000100,
100 0x00000101, 0x04040101, 0x00040000, 0x04000001,
101 0x04040001, 0x04000100, 0x00040101, 0x04040000,
102 0x00040100, 0x00000000, 0x04000000, 0x00040101,
103 0x04040100, 0x00000100, 0x00000001, 0x00040000,
104 0x00000101, 0x00040001, 0x04040000, 0x04000101,
105 0x00000000, 0x04040100, 0x00040100, 0x04040001,
106 0x00040001, 0x04000000, 0x04040101, 0x00000001,
107 0x00040101, 0x04000001, 0x04000000, 0x04040101,
108 0x00040000, 0x04000100, 0x04000101, 0x00040100,
109 0x04000100, 0x00000000, 0x04040001, 0x00000101,
110 0x04000001, 0x00040101, 0x00000100, 0x04040000,
112 0x00401008, 0x10001000, 0x00000008, 0x10401008,
113 0x00000000, 0x10400000, 0x10001008, 0x00400008,
114 0x10401000, 0x10000008, 0x10000000, 0x00001008,
115 0x10000008, 0x00401008, 0x00400000, 0x10000000,
116 0x10400008, 0x00401000, 0x00001000, 0x00000008,
117 0x00401000, 0x10001008, 0x10400000, 0x00001000,
118 0x00001008, 0x00000000, 0x00400008, 0x10401000,
119 0x10001000, 0x10400008, 0x10401008, 0x00400000,
120 0x10400008, 0x00001008, 0x00400000, 0x10000008,
121 0x00401000, 0x10001000, 0x00000008, 0x10400000,
122 0x10001008, 0x00000000, 0x00001000, 0x00400008,
123 0x00000000, 0x10400008, 0x10401000, 0x00001000,
124 0x10000000, 0x10401008, 0x00401008, 0x00400000,
125 0x10401008, 0x00000008, 0x10001000, 0x00401008,
126 0x00400008, 0x00401000, 0x10400000, 0x10001008,
127 0x00001008, 0x10000000, 0x10000008, 0x10401000,
129 0x08000000, 0x00010000, 0x00000400, 0x08010420,
130 0x08010020, 0x08000400, 0x00010420, 0x08010000,
131 0x00010000, 0x00000020, 0x08000020, 0x00010400,
132 0x08000420, 0x08010020, 0x08010400, 0x00000000,
133 0x00010400, 0x08000000, 0x00010020, 0x00000420,
134 0x08000400, 0x00010420, 0x00000000, 0x08000020,
135 0x00000020, 0x08000420, 0x08010420, 0x00010020,
136 0x08010000, 0x00000400, 0x00000420, 0x08010400,
137 0x08010400, 0x08000420, 0x00010020, 0x08010000,
138 0x00010000, 0x00000020, 0x08000020, 0x08000400,
139 0x08000000, 0x00010400, 0x08010420, 0x00000000,
140 0x00010420, 0x08000000, 0x00000400, 0x00010020,
141 0x08000420, 0x00000400, 0x00000000, 0x08010420,
142 0x08010020, 0x08010400, 0x00000420, 0x00010000,
143 0x00010400, 0x08010020, 0x08000400, 0x00000420,
144 0x00000020, 0x00010420, 0x08010000, 0x08000020,
146 0x80000040, 0x00200040, 0x00000000, 0x80202000,
147 0x00200040, 0x00002000, 0x80002040, 0x00200000,
148 0x00002040, 0x80202040, 0x00202000, 0x80000000,
149 0x80002000, 0x80000040, 0x80200000, 0x00202040,
150 0x00200000, 0x80002040, 0x80200040, 0x00000000,
151 0x00002000, 0x00000040, 0x80202000, 0x80200040,
152 0x80202040, 0x80200000, 0x80000000, 0x00002040,
153 0x00000040, 0x00202000, 0x00202040, 0x80002000,
154 0x00002040, 0x80000000, 0x80002000, 0x00202040,
155 0x80202000, 0x00200040, 0x00000000, 0x80002000,
156 0x80000000, 0x00002000, 0x80200040, 0x00200000,
157 0x00200040, 0x80202040, 0x00202000, 0x00000040,
158 0x80202040, 0x00202000, 0x00200000, 0x80002040,
159 0x80000040, 0x80200000, 0x00202040, 0x00000000,
160 0x00002000, 0x80000040, 0x80002040, 0x80202000,
161 0x80200000, 0x00002040, 0x00000040, 0x80200040,
163 0x00004000, 0x00000200, 0x01000200, 0x01000004,
164 0x01004204, 0x00004004, 0x00004200, 0x00000000,
165 0x01000000, 0x01000204, 0x00000204, 0x01004000,
166 0x00000004, 0x01004200, 0x01004000, 0x00000204,
167 0x01000204, 0x00004000, 0x00004004, 0x01004204,
168 0x00000000, 0x01000200, 0x01000004, 0x00004200,
169 0x01004004, 0x00004204, 0x01004200, 0x00000004,
170 0x00004204, 0x01004004, 0x00000200, 0x01000000,
171 0x00004204, 0x01004000, 0x01004004, 0x00000204,
172 0x00004000, 0x00000200, 0x01000000, 0x01004004,
173 0x01000204, 0x00004204, 0x00004200, 0x00000000,
174 0x00000200, 0x01000004, 0x00000004, 0x01000200,
175 0x00000000, 0x01000204, 0x01000200, 0x00004200,
176 0x00000204, 0x00004000, 0x01004204, 0x01000000,
177 0x01004200, 0x00000004, 0x00004004, 0x01004204,
178 0x01000004, 0x01004200, 0x01004000, 0x00004004,
180 0x20800080, 0x20820000, 0x00020080, 0x00000000,
181 0x20020000, 0x00800080, 0x20800000, 0x20820080,
182 0x00000080, 0x20000000, 0x00820000, 0x00020080,
183 0x00820080, 0x20020080, 0x20000080, 0x20800000,
184 0x00020000, 0x00820080, 0x00800080, 0x20020000,
185 0x20820080, 0x20000080, 0x00000000, 0x00820000,
186 0x20000000, 0x00800000, 0x20020080, 0x20800080,
187 0x00800000, 0x00020000, 0x20820000, 0x00000080,
188 0x00800000, 0x00020000, 0x20000080, 0x20820080,
189 0x00020080, 0x20000000, 0x00000000, 0x00820000,
190 0x20800080, 0x20020080, 0x20020000, 0x00800080,
191 0x20820000, 0x00000080, 0x00800080, 0x20020000,
192 0x20820080, 0x00800000, 0x20800000, 0x20000080,
193 0x00820000, 0x00020080, 0x20020080, 0x20800000,
194 0x00000080, 0x20820000, 0x00820080, 0x00000000,
195 0x20000000, 0x20800080, 0x00020000, 0x00820080,
198 __device__ __constant__ u32 c_skb[8][64] =
200 /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
201 0x00000000, 0x00000010, 0x20000000, 0x20000010,
202 0x00010000, 0x00010010, 0x20010000, 0x20010010,
203 0x00000800, 0x00000810, 0x20000800, 0x20000810,
204 0x00010800, 0x00010810, 0x20010800, 0x20010810,
205 0x00000020, 0x00000030, 0x20000020, 0x20000030,
206 0x00010020, 0x00010030, 0x20010020, 0x20010030,
207 0x00000820, 0x00000830, 0x20000820, 0x20000830,
208 0x00010820, 0x00010830, 0x20010820, 0x20010830,
209 0x00080000, 0x00080010, 0x20080000, 0x20080010,
210 0x00090000, 0x00090010, 0x20090000, 0x20090010,
211 0x00080800, 0x00080810, 0x20080800, 0x20080810,
212 0x00090800, 0x00090810, 0x20090800, 0x20090810,
213 0x00080020, 0x00080030, 0x20080020, 0x20080030,
214 0x00090020, 0x00090030, 0x20090020, 0x20090030,
215 0x00080820, 0x00080830, 0x20080820, 0x20080830,
216 0x00090820, 0x00090830, 0x20090820, 0x20090830,
217 /* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */
218 0x00000000, 0x02000000, 0x00002000, 0x02002000,
219 0x00200000, 0x02200000, 0x00202000, 0x02202000,
220 0x00000004, 0x02000004, 0x00002004, 0x02002004,
221 0x00200004, 0x02200004, 0x00202004, 0x02202004,
222 0x00000400, 0x02000400, 0x00002400, 0x02002400,
223 0x00200400, 0x02200400, 0x00202400, 0x02202400,
224 0x00000404, 0x02000404, 0x00002404, 0x02002404,
225 0x00200404, 0x02200404, 0x00202404, 0x02202404,
226 0x10000000, 0x12000000, 0x10002000, 0x12002000,
227 0x10200000, 0x12200000, 0x10202000, 0x12202000,
228 0x10000004, 0x12000004, 0x10002004, 0x12002004,
229 0x10200004, 0x12200004, 0x10202004, 0x12202004,
230 0x10000400, 0x12000400, 0x10002400, 0x12002400,
231 0x10200400, 0x12200400, 0x10202400, 0x12202400,
232 0x10000404, 0x12000404, 0x10002404, 0x12002404,
233 0x10200404, 0x12200404, 0x10202404, 0x12202404,
234 /* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */
235 0x00000000, 0x00000001, 0x00040000, 0x00040001,
236 0x01000000, 0x01000001, 0x01040000, 0x01040001,
237 0x00000002, 0x00000003, 0x00040002, 0x00040003,
238 0x01000002, 0x01000003, 0x01040002, 0x01040003,
239 0x00000200, 0x00000201, 0x00040200, 0x00040201,
240 0x01000200, 0x01000201, 0x01040200, 0x01040201,
241 0x00000202, 0x00000203, 0x00040202, 0x00040203,
242 0x01000202, 0x01000203, 0x01040202, 0x01040203,
243 0x08000000, 0x08000001, 0x08040000, 0x08040001,
244 0x09000000, 0x09000001, 0x09040000, 0x09040001,
245 0x08000002, 0x08000003, 0x08040002, 0x08040003,
246 0x09000002, 0x09000003, 0x09040002, 0x09040003,
247 0x08000200, 0x08000201, 0x08040200, 0x08040201,
248 0x09000200, 0x09000201, 0x09040200, 0x09040201,
249 0x08000202, 0x08000203, 0x08040202, 0x08040203,
250 0x09000202, 0x09000203, 0x09040202, 0x09040203,
251 /* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */
252 0x00000000, 0x00100000, 0x00000100, 0x00100100,
253 0x00000008, 0x00100008, 0x00000108, 0x00100108,
254 0x00001000, 0x00101000, 0x00001100, 0x00101100,
255 0x00001008, 0x00101008, 0x00001108, 0x00101108,
256 0x04000000, 0x04100000, 0x04000100, 0x04100100,
257 0x04000008, 0x04100008, 0x04000108, 0x04100108,
258 0x04001000, 0x04101000, 0x04001100, 0x04101100,
259 0x04001008, 0x04101008, 0x04001108, 0x04101108,
260 0x00020000, 0x00120000, 0x00020100, 0x00120100,
261 0x00020008, 0x00120008, 0x00020108, 0x00120108,
262 0x00021000, 0x00121000, 0x00021100, 0x00121100,
263 0x00021008, 0x00121008, 0x00021108, 0x00121108,
264 0x04020000, 0x04120000, 0x04020100, 0x04120100,
265 0x04020008, 0x04120008, 0x04020108, 0x04120108,
266 0x04021000, 0x04121000, 0x04021100, 0x04121100,
267 0x04021008, 0x04121008, 0x04021108, 0x04121108,
268 /* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
269 0x00000000, 0x10000000, 0x00010000, 0x10010000,
270 0x00000004, 0x10000004, 0x00010004, 0x10010004,
271 0x20000000, 0x30000000, 0x20010000, 0x30010000,
272 0x20000004, 0x30000004, 0x20010004, 0x30010004,
273 0x00100000, 0x10100000, 0x00110000, 0x10110000,
274 0x00100004, 0x10100004, 0x00110004, 0x10110004,
275 0x20100000, 0x30100000, 0x20110000, 0x30110000,
276 0x20100004, 0x30100004, 0x20110004, 0x30110004,
277 0x00001000, 0x10001000, 0x00011000, 0x10011000,
278 0x00001004, 0x10001004, 0x00011004, 0x10011004,
279 0x20001000, 0x30001000, 0x20011000, 0x30011000,
280 0x20001004, 0x30001004, 0x20011004, 0x30011004,
281 0x00101000, 0x10101000, 0x00111000, 0x10111000,
282 0x00101004, 0x10101004, 0x00111004, 0x10111004,
283 0x20101000, 0x30101000, 0x20111000, 0x30111000,
284 0x20101004, 0x30101004, 0x20111004, 0x30111004,
285 /* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */
286 0x00000000, 0x08000000, 0x00000008, 0x08000008,
287 0x00000400, 0x08000400, 0x00000408, 0x08000408,
288 0x00020000, 0x08020000, 0x00020008, 0x08020008,
289 0x00020400, 0x08020400, 0x00020408, 0x08020408,
290 0x00000001, 0x08000001, 0x00000009, 0x08000009,
291 0x00000401, 0x08000401, 0x00000409, 0x08000409,
292 0x00020001, 0x08020001, 0x00020009, 0x08020009,
293 0x00020401, 0x08020401, 0x00020409, 0x08020409,
294 0x02000000, 0x0A000000, 0x02000008, 0x0A000008,
295 0x02000400, 0x0A000400, 0x02000408, 0x0A000408,
296 0x02020000, 0x0A020000, 0x02020008, 0x0A020008,
297 0x02020400, 0x0A020400, 0x02020408, 0x0A020408,
298 0x02000001, 0x0A000001, 0x02000009, 0x0A000009,
299 0x02000401, 0x0A000401, 0x02000409, 0x0A000409,
300 0x02020001, 0x0A020001, 0x02020009, 0x0A020009,
301 0x02020401, 0x0A020401, 0x02020409, 0x0A020409,
302 /* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */
303 0x00000000, 0x00000100, 0x00080000, 0x00080100,
304 0x01000000, 0x01000100, 0x01080000, 0x01080100,
305 0x00000010, 0x00000110, 0x00080010, 0x00080110,
306 0x01000010, 0x01000110, 0x01080010, 0x01080110,
307 0x00200000, 0x00200100, 0x00280000, 0x00280100,
308 0x01200000, 0x01200100, 0x01280000, 0x01280100,
309 0x00200010, 0x00200110, 0x00280010, 0x00280110,
310 0x01200010, 0x01200110, 0x01280010, 0x01280110,
311 0x00000200, 0x00000300, 0x00080200, 0x00080300,
312 0x01000200, 0x01000300, 0x01080200, 0x01080300,
313 0x00000210, 0x00000310, 0x00080210, 0x00080310,
314 0x01000210, 0x01000310, 0x01080210, 0x01080310,
315 0x00200200, 0x00200300, 0x00280200, 0x00280300,
316 0x01200200, 0x01200300, 0x01280200, 0x01280300,
317 0x00200210, 0x00200310, 0x00280210, 0x00280310,
318 0x01200210, 0x01200310, 0x01280210, 0x01280310,
319 /* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */
320 0x00000000, 0x04000000, 0x00040000, 0x04040000,
321 0x00000002, 0x04000002, 0x00040002, 0x04040002,
322 0x00002000, 0x04002000, 0x00042000, 0x04042000,
323 0x00002002, 0x04002002, 0x00042002, 0x04042002,
324 0x00000020, 0x04000020, 0x00040020, 0x04040020,
325 0x00000022, 0x04000022, 0x00040022, 0x04040022,
326 0x00002020, 0x04002020, 0x00042020, 0x04042020,
327 0x00002022, 0x04002022, 0x00042022, 0x04042022,
328 0x00000800, 0x04000800, 0x00040800, 0x04040800,
329 0x00000802, 0x04000802, 0x00040802, 0x04040802,
330 0x00002800, 0x04002800, 0x00042800, 0x04042800,
331 0x00002802, 0x04002802, 0x00042802, 0x04042802,
332 0x00000820, 0x04000820, 0x00040820, 0x04040820,
333 0x00000822, 0x04000822, 0x00040822, 0x04040822,
334 0x00002820, 0x04002820, 0x00042820, 0x04042820,
335 0x00002822, 0x04002822, 0x00042822, 0x04042822
339 #define BOX(i,n,S) u32x ((S)[(n)][(i)])
343 #define BOX(i,n,S) u32x ((S)[(n)][(i).x], (S)[(n)][(i).y])
346 __device__ static void _des_crypt_encrypt (u32x iv[2], u32x data[2], u32x Kc[16], u32x Kd[16], u32 s_SPtrans[8][64])
354 for (u32 i = 0; i < 16; i++)
357 u32x t = Kd[i] ^ rotl32 (r, 28u);
359 l ^= BOX (((u >> 2) & 0x3f), 0, s_SPtrans)
360 | BOX (((u >> 10) & 0x3f), 2, s_SPtrans)
361 | BOX (((u >> 18) & 0x3f), 4, s_SPtrans)
362 | BOX (((u >> 26) & 0x3f), 6, s_SPtrans)
363 | BOX (((t >> 2) & 0x3f), 1, s_SPtrans)
364 | BOX (((t >> 10) & 0x3f), 3, s_SPtrans)
365 | BOX (((t >> 18) & 0x3f), 5, s_SPtrans)
366 | BOX (((t >> 26) & 0x3f), 7, s_SPtrans);
377 __device__ static void _des_crypt_keysetup (u32x c, u32x d, u32x Kc[16], u32x Kd[16], u32 s_skb[8][64])
381 PERM_OP (d, c, tt, 4, 0x0f0f0f0f);
382 HPERM_OP (c, tt, 2, 0xcccc0000);
383 HPERM_OP (d, tt, 2, 0xcccc0000);
384 PERM_OP (d, c, tt, 1, 0x55555555);
385 PERM_OP (c, d, tt, 8, 0x00ff00ff);
386 PERM_OP (d, c, tt, 1, 0x55555555);
388 d = ((d & 0x000000ff) << 16)
389 | ((d & 0x0000ff00) << 0)
390 | ((d & 0x00ff0000) >> 16)
391 | ((c & 0xf0000000) >> 4);
396 for (u32 i = 0; i < 16; i++)
398 const u32 shifts3s0[16] = { 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 };
399 const u32 shifts3s1[16] = { 27, 27, 26, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, 27 };
401 c = c >> shifts3s0[i] | c << shifts3s1[i];
402 d = d >> shifts3s0[i] | d << shifts3s1[i];
407 u32x s = BOX ((( c >> 0) & 0x3f), 0, s_skb)
408 | BOX ((((c >> 6) & 0x03)
409 | ((c >> 7) & 0x3c)), 1, s_skb)
410 | BOX ((((c >> 13) & 0x0f)
411 | ((c >> 14) & 0x30)), 2, s_skb)
412 | BOX ((((c >> 20) & 0x01)
414 | ((c >> 22) & 0x38)), 3, s_skb);
416 u32x t = BOX ((( d >> 0) & 0x3f), 4, s_skb)
417 | BOX ((((d >> 7) & 0x03)
418 | ((d >> 8) & 0x3c)), 5, s_skb)
419 | BOX ((((d >> 15) & 0x3f)), 6, s_skb)
420 | BOX ((((d >> 21) & 0x0f)
421 | ((d >> 22) & 0x30)), 7, s_skb);
423 #if __CUDA_ARCH__ >= 200
424 Kc[i] = __byte_perm (s, t, 0x5410);
425 Kd[i] = __byte_perm (s, t, 0x7632);
427 Kc[i] = ((t << 16) | (s & 0x0000ffff));
428 Kd[i] = ((s >> 16) | (t & 0xffff0000));
431 Kc[i] = rotl32 (Kc[i], 2u);
432 Kd[i] = rotl32 (Kd[i], 2u);
436 __device__ static void transform_netntlmv1_key (const u32x w0, const u32x w1, u32x out[2])
440 t[0] = (w0 >> 0) & 0xff;
441 t[1] = (w0 >> 8) & 0xff;
442 t[2] = (w0 >> 16) & 0xff;
443 t[3] = (w0 >> 24) & 0xff;
444 t[4] = (w1 >> 0) & 0xff;
445 t[5] = (w1 >> 8) & 0xff;
446 t[6] = (w1 >> 16) & 0xff;
447 t[7] = (w1 >> 24) & 0xff;
452 k[1] = (t[0] << 7) | (t[1] >> 1);
453 k[2] = (t[1] << 6) | (t[2] >> 2);
454 k[3] = (t[2] << 5) | (t[3] >> 3);
455 k[4] = (t[3] << 4) | (t[4] >> 4);
456 k[5] = (t[4] << 3) | (t[5] >> 5);
457 k[6] = (t[5] << 2) | (t[6] >> 6);
460 out[0] = ((k[0] & 0xff) << 0)
461 | ((k[1] & 0xff) << 8)
462 | ((k[2] & 0xff) << 16)
463 | ((k[3] & 0xff) << 24);
465 out[1] = ((k[4] & 0xff) << 0)
466 | ((k[5] & 0xff) << 8)
467 | ((k[6] & 0xff) << 16)
468 | ((k[7] & 0xff) << 24);
471 __device__ __constant__ comb_t c_combs[1024];
473 extern "C" __global__ void __launch_bounds__ (256, 1) m05500_m04 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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 combs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
479 const u32 lid = threadIdx.x;
485 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
489 wordl0[0] = pws[gid].i[ 0];
490 wordl0[1] = pws[gid].i[ 1];
491 wordl0[2] = pws[gid].i[ 2];
492 wordl0[3] = pws[gid].i[ 3];
496 wordl1[0] = pws[gid].i[ 4];
497 wordl1[1] = pws[gid].i[ 5];
498 wordl1[2] = pws[gid].i[ 6];
499 wordl1[3] = pws[gid].i[ 7];
515 const u32 pw_l_len = pws[gid].pw_len;
517 if (combs_mode == COMBINATOR_MODE_BASE_RIGHT)
519 append_0x80_2 (wordl0, wordl1, pw_l_len);
521 switch_buffer_by_offset (wordl0, wordl1, wordl2, wordl3, c_combs[0].pw_len);
528 __shared__ u32 s_SPtrans[8][64];
529 __shared__ u32 s_skb[8][64];
533 s_SPtrans[0][lid] = c_SPtrans[0][lid];
534 s_SPtrans[1][lid] = c_SPtrans[1][lid];
535 s_SPtrans[2][lid] = c_SPtrans[2][lid];
536 s_SPtrans[3][lid] = c_SPtrans[3][lid];
537 s_SPtrans[4][lid] = c_SPtrans[4][lid];
538 s_SPtrans[5][lid] = c_SPtrans[5][lid];
539 s_SPtrans[6][lid] = c_SPtrans[6][lid];
540 s_SPtrans[7][lid] = c_SPtrans[7][lid];
542 s_skb[0][lid] = c_skb[0][lid];
543 s_skb[1][lid] = c_skb[1][lid];
544 s_skb[2][lid] = c_skb[2][lid];
545 s_skb[3][lid] = c_skb[3][lid];
546 s_skb[4][lid] = c_skb[4][lid];
547 s_skb[5][lid] = c_skb[5][lid];
548 s_skb[6][lid] = c_skb[6][lid];
549 s_skb[7][lid] = c_skb[7][lid];
554 if (gid >= gid_max) return;
560 const u32 s0 = salt_bufs[salt_pos].salt_buf[0];
561 const u32 s1 = salt_bufs[salt_pos].salt_buf[1];
562 const u32 s2 = salt_bufs[salt_pos].salt_buf[2];
573 for (u32 il_pos = 0; il_pos < combs_cnt; il_pos++)
575 const u32 pw_r_len = c_combs[il_pos].pw_len;
577 const u32 pw_len = pw_l_len + pw_r_len;
581 wordr0[0] = c_combs[il_pos].i[0];
582 wordr0[1] = c_combs[il_pos].i[1];
583 wordr0[2] = c_combs[il_pos].i[2];
584 wordr0[3] = c_combs[il_pos].i[3];
588 wordr1[0] = c_combs[il_pos].i[4];
589 wordr1[1] = c_combs[il_pos].i[5];
590 wordr1[2] = c_combs[il_pos].i[6];
591 wordr1[3] = c_combs[il_pos].i[7];
607 if (combs_mode == COMBINATOR_MODE_BASE_LEFT)
609 switch_buffer_by_offset (wordr0, wordr1, wordr2, wordr3, pw_l_len);
614 w0[0] = wordl0[0] | wordr0[0];
615 w0[1] = wordl0[1] | wordr0[1];
616 w0[2] = wordl0[2] | wordr0[2];
617 w0[3] = wordl0[3] | wordr0[3];
621 w1[0] = wordl1[0] | wordr1[0];
622 w1[1] = wordl1[1] | wordr1[1];
623 w1[2] = wordl1[2] | wordr1[2];
624 w1[3] = wordl1[3] | wordr1[3];
645 make_unicode (w0, w0_t, w1_t);
646 make_unicode (w1, w2_t, w3_t);
648 w3_t[2] = pw_len * 8 * 2;
655 MD4_STEP (MD4_Fo, a, b, c, d, w0_t[0], MD4C00, MD4S00);
656 MD4_STEP (MD4_Fo, d, a, b, c, w0_t[1], MD4C00, MD4S01);
657 MD4_STEP (MD4_Fo, c, d, a, b, w0_t[2], MD4C00, MD4S02);
658 MD4_STEP (MD4_Fo, b, c, d, a, w0_t[3], MD4C00, MD4S03);
659 MD4_STEP (MD4_Fo, a, b, c, d, w1_t[0], MD4C00, MD4S00);
660 MD4_STEP (MD4_Fo, d, a, b, c, w1_t[1], MD4C00, MD4S01);
661 MD4_STEP (MD4_Fo, c, d, a, b, w1_t[2], MD4C00, MD4S02);
662 MD4_STEP (MD4_Fo, b, c, d, a, w1_t[3], MD4C00, MD4S03);
663 MD4_STEP (MD4_Fo, a, b, c, d, w2_t[0], MD4C00, MD4S00);
664 MD4_STEP (MD4_Fo, d, a, b, c, w2_t[1], MD4C00, MD4S01);
665 MD4_STEP (MD4_Fo, c, d, a, b, w2_t[2], MD4C00, MD4S02);
666 MD4_STEP (MD4_Fo, b, c, d, a, w2_t[3], MD4C00, MD4S03);
667 MD4_STEP (MD4_Fo, a, b, c, d, w3_t[0], MD4C00, MD4S00);
668 MD4_STEP (MD4_Fo, d, a, b, c, w3_t[1], MD4C00, MD4S01);
669 MD4_STEP (MD4_Fo, c, d, a, b, w3_t[2], MD4C00, MD4S02);
670 MD4_STEP (MD4_Fo, b, c, d, a, w3_t[3], MD4C00, MD4S03);
672 MD4_STEP (MD4_Go, a, b, c, d, w0_t[0], MD4C01, MD4S10);
673 MD4_STEP (MD4_Go, d, a, b, c, w1_t[0], MD4C01, MD4S11);
674 MD4_STEP (MD4_Go, c, d, a, b, w2_t[0], MD4C01, MD4S12);
675 MD4_STEP (MD4_Go, b, c, d, a, w3_t[0], MD4C01, MD4S13);
676 MD4_STEP (MD4_Go, a, b, c, d, w0_t[1], MD4C01, MD4S10);
677 MD4_STEP (MD4_Go, d, a, b, c, w1_t[1], MD4C01, MD4S11);
678 MD4_STEP (MD4_Go, c, d, a, b, w2_t[1], MD4C01, MD4S12);
679 MD4_STEP (MD4_Go, b, c, d, a, w3_t[1], MD4C01, MD4S13);
680 MD4_STEP (MD4_Go, a, b, c, d, w0_t[2], MD4C01, MD4S10);
681 MD4_STEP (MD4_Go, d, a, b, c, w1_t[2], MD4C01, MD4S11);
682 MD4_STEP (MD4_Go, c, d, a, b, w2_t[2], MD4C01, MD4S12);
683 MD4_STEP (MD4_Go, b, c, d, a, w3_t[2], MD4C01, MD4S13);
684 MD4_STEP (MD4_Go, a, b, c, d, w0_t[3], MD4C01, MD4S10);
685 MD4_STEP (MD4_Go, d, a, b, c, w1_t[3], MD4C01, MD4S11);
686 MD4_STEP (MD4_Go, c, d, a, b, w2_t[3], MD4C01, MD4S12);
687 MD4_STEP (MD4_Go, b, c, d, a, w3_t[3], MD4C01, MD4S13);
689 MD4_STEP (MD4_H , a, b, c, d, w0_t[0], MD4C02, MD4S20);
690 MD4_STEP (MD4_H , d, a, b, c, w2_t[0], MD4C02, MD4S21);
691 MD4_STEP (MD4_H , c, d, a, b, w1_t[0], MD4C02, MD4S22);
692 MD4_STEP (MD4_H , b, c, d, a, w3_t[0], MD4C02, MD4S23);
693 MD4_STEP (MD4_H , a, b, c, d, w0_t[2], MD4C02, MD4S20);
694 MD4_STEP (MD4_H , d, a, b, c, w2_t[2], MD4C02, MD4S21);
695 MD4_STEP (MD4_H , c, d, a, b, w1_t[2], MD4C02, MD4S22);
696 MD4_STEP (MD4_H , b, c, d, a, w3_t[2], MD4C02, MD4S23);
697 MD4_STEP (MD4_H , a, b, c, d, w0_t[1], MD4C02, MD4S20);
698 MD4_STEP (MD4_H , d, a, b, c, w2_t[1], MD4C02, MD4S21);
699 MD4_STEP (MD4_H , c, d, a, b, w1_t[1], MD4C02, MD4S22);
700 MD4_STEP (MD4_H , b, c, d, a, w3_t[1], MD4C02, MD4S23);
701 MD4_STEP (MD4_H , a, b, c, d, w0_t[3], MD4C02, MD4S20);
702 MD4_STEP (MD4_H , d, a, b, c, w2_t[3], MD4C02, MD4S21);
704 if (s2 != ((d + MD4M_D) >> 16)) continue;
706 MD4_STEP (MD4_H , c, d, a, b, w1_t[3], MD4C02, MD4S22);
707 MD4_STEP (MD4_H , b, c, d, a, w3_t[3], MD4C02, MD4S23);
720 transform_netntlmv1_key (a, b, key);
725 _des_crypt_keysetup (key[0], key[1], Kc, Kd, s_skb);
729 _des_crypt_encrypt (iv1, data, Kc, Kd, s_SPtrans);
735 transform_netntlmv1_key (((b >> 24) | (c << 8)), ((c >> 24) | (d << 8)), key);
737 _des_crypt_keysetup (key[0], key[1], Kc, Kd, s_skb);
741 _des_crypt_encrypt (iv2, data, Kc, Kd, s_SPtrans);
747 const u32x r0 = iv1[0];
748 const u32x r1 = iv1[1];
749 const u32x r2 = iv2[0];
750 const u32x r3 = iv2[1];
752 #include VECT_COMPARE_M
756 extern "C" __global__ void __launch_bounds__ (256, 1) m05500_m08 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
760 extern "C" __global__ void __launch_bounds__ (256, 1) m05500_m16 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
764 extern "C" __global__ void __launch_bounds__ (256, 1) m05500_s04 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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 combs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
770 const u32 lid = threadIdx.x;
776 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
780 wordl0[0] = pws[gid].i[ 0];
781 wordl0[1] = pws[gid].i[ 1];
782 wordl0[2] = pws[gid].i[ 2];
783 wordl0[3] = pws[gid].i[ 3];
787 wordl1[0] = pws[gid].i[ 4];
788 wordl1[1] = pws[gid].i[ 5];
789 wordl1[2] = pws[gid].i[ 6];
790 wordl1[3] = pws[gid].i[ 7];
806 const u32 pw_l_len = pws[gid].pw_len;
808 if (combs_mode == COMBINATOR_MODE_BASE_RIGHT)
810 append_0x80_2 (wordl0, wordl1, pw_l_len);
812 switch_buffer_by_offset (wordl0, wordl1, wordl2, wordl3, c_combs[0].pw_len);
819 __shared__ u32 s_SPtrans[8][64];
820 __shared__ u32 s_skb[8][64];
824 s_SPtrans[0][lid] = c_SPtrans[0][lid];
825 s_SPtrans[1][lid] = c_SPtrans[1][lid];
826 s_SPtrans[2][lid] = c_SPtrans[2][lid];
827 s_SPtrans[3][lid] = c_SPtrans[3][lid];
828 s_SPtrans[4][lid] = c_SPtrans[4][lid];
829 s_SPtrans[5][lid] = c_SPtrans[5][lid];
830 s_SPtrans[6][lid] = c_SPtrans[6][lid];
831 s_SPtrans[7][lid] = c_SPtrans[7][lid];
833 s_skb[0][lid] = c_skb[0][lid];
834 s_skb[1][lid] = c_skb[1][lid];
835 s_skb[2][lid] = c_skb[2][lid];
836 s_skb[3][lid] = c_skb[3][lid];
837 s_skb[4][lid] = c_skb[4][lid];
838 s_skb[5][lid] = c_skb[5][lid];
839 s_skb[6][lid] = c_skb[6][lid];
840 s_skb[7][lid] = c_skb[7][lid];
845 if (gid >= gid_max) return;
851 const u32 s0 = salt_bufs[salt_pos].salt_buf[0];
852 const u32 s1 = salt_bufs[salt_pos].salt_buf[1];
853 const u32 s2 = salt_bufs[salt_pos].salt_buf[2];
864 const u32 search[4] =
866 digests_buf[digests_offset].digest_buf[DGST_R0],
867 digests_buf[digests_offset].digest_buf[DGST_R1],
868 digests_buf[digests_offset].digest_buf[DGST_R2],
869 digests_buf[digests_offset].digest_buf[DGST_R3]
876 for (u32 il_pos = 0; il_pos < combs_cnt; il_pos++)
878 const u32 pw_r_len = c_combs[il_pos].pw_len;
880 const u32 pw_len = pw_l_len + pw_r_len;
884 wordr0[0] = c_combs[il_pos].i[0];
885 wordr0[1] = c_combs[il_pos].i[1];
886 wordr0[2] = c_combs[il_pos].i[2];
887 wordr0[3] = c_combs[il_pos].i[3];
891 wordr1[0] = c_combs[il_pos].i[4];
892 wordr1[1] = c_combs[il_pos].i[5];
893 wordr1[2] = c_combs[il_pos].i[6];
894 wordr1[3] = c_combs[il_pos].i[7];
910 if (combs_mode == COMBINATOR_MODE_BASE_LEFT)
912 switch_buffer_by_offset (wordr0, wordr1, wordr2, wordr3, pw_l_len);
917 w0[0] = wordl0[0] | wordr0[0];
918 w0[1] = wordl0[1] | wordr0[1];
919 w0[2] = wordl0[2] | wordr0[2];
920 w0[3] = wordl0[3] | wordr0[3];
924 w1[0] = wordl1[0] | wordr1[0];
925 w1[1] = wordl1[1] | wordr1[1];
926 w1[2] = wordl1[2] | wordr1[2];
927 w1[3] = wordl1[3] | wordr1[3];
948 make_unicode (w0, w0_t, w1_t);
949 make_unicode (w1, w2_t, w3_t);
951 w3_t[2] = pw_len * 8 * 2;
958 MD4_STEP (MD4_Fo, a, b, c, d, w0_t[0], MD4C00, MD4S00);
959 MD4_STEP (MD4_Fo, d, a, b, c, w0_t[1], MD4C00, MD4S01);
960 MD4_STEP (MD4_Fo, c, d, a, b, w0_t[2], MD4C00, MD4S02);
961 MD4_STEP (MD4_Fo, b, c, d, a, w0_t[3], MD4C00, MD4S03);
962 MD4_STEP (MD4_Fo, a, b, c, d, w1_t[0], MD4C00, MD4S00);
963 MD4_STEP (MD4_Fo, d, a, b, c, w1_t[1], MD4C00, MD4S01);
964 MD4_STEP (MD4_Fo, c, d, a, b, w1_t[2], MD4C00, MD4S02);
965 MD4_STEP (MD4_Fo, b, c, d, a, w1_t[3], MD4C00, MD4S03);
966 MD4_STEP (MD4_Fo, a, b, c, d, w2_t[0], MD4C00, MD4S00);
967 MD4_STEP (MD4_Fo, d, a, b, c, w2_t[1], MD4C00, MD4S01);
968 MD4_STEP (MD4_Fo, c, d, a, b, w2_t[2], MD4C00, MD4S02);
969 MD4_STEP (MD4_Fo, b, c, d, a, w2_t[3], MD4C00, MD4S03);
970 MD4_STEP (MD4_Fo, a, b, c, d, w3_t[0], MD4C00, MD4S00);
971 MD4_STEP (MD4_Fo, d, a, b, c, w3_t[1], MD4C00, MD4S01);
972 MD4_STEP (MD4_Fo, c, d, a, b, w3_t[2], MD4C00, MD4S02);
973 MD4_STEP (MD4_Fo, b, c, d, a, w3_t[3], MD4C00, MD4S03);
975 MD4_STEP (MD4_Go, a, b, c, d, w0_t[0], MD4C01, MD4S10);
976 MD4_STEP (MD4_Go, d, a, b, c, w1_t[0], MD4C01, MD4S11);
977 MD4_STEP (MD4_Go, c, d, a, b, w2_t[0], MD4C01, MD4S12);
978 MD4_STEP (MD4_Go, b, c, d, a, w3_t[0], MD4C01, MD4S13);
979 MD4_STEP (MD4_Go, a, b, c, d, w0_t[1], MD4C01, MD4S10);
980 MD4_STEP (MD4_Go, d, a, b, c, w1_t[1], MD4C01, MD4S11);
981 MD4_STEP (MD4_Go, c, d, a, b, w2_t[1], MD4C01, MD4S12);
982 MD4_STEP (MD4_Go, b, c, d, a, w3_t[1], MD4C01, MD4S13);
983 MD4_STEP (MD4_Go, a, b, c, d, w0_t[2], MD4C01, MD4S10);
984 MD4_STEP (MD4_Go, d, a, b, c, w1_t[2], MD4C01, MD4S11);
985 MD4_STEP (MD4_Go, c, d, a, b, w2_t[2], MD4C01, MD4S12);
986 MD4_STEP (MD4_Go, b, c, d, a, w3_t[2], MD4C01, MD4S13);
987 MD4_STEP (MD4_Go, a, b, c, d, w0_t[3], MD4C01, MD4S10);
988 MD4_STEP (MD4_Go, d, a, b, c, w1_t[3], MD4C01, MD4S11);
989 MD4_STEP (MD4_Go, c, d, a, b, w2_t[3], MD4C01, MD4S12);
990 MD4_STEP (MD4_Go, b, c, d, a, w3_t[3], MD4C01, MD4S13);
992 MD4_STEP (MD4_H , a, b, c, d, w0_t[0], MD4C02, MD4S20);
993 MD4_STEP (MD4_H , d, a, b, c, w2_t[0], MD4C02, MD4S21);
994 MD4_STEP (MD4_H , c, d, a, b, w1_t[0], MD4C02, MD4S22);
995 MD4_STEP (MD4_H , b, c, d, a, w3_t[0], MD4C02, MD4S23);
996 MD4_STEP (MD4_H , a, b, c, d, w0_t[2], MD4C02, MD4S20);
997 MD4_STEP (MD4_H , d, a, b, c, w2_t[2], MD4C02, MD4S21);
998 MD4_STEP (MD4_H , c, d, a, b, w1_t[2], MD4C02, MD4S22);
999 MD4_STEP (MD4_H , b, c, d, a, w3_t[2], MD4C02, MD4S23);
1000 MD4_STEP (MD4_H , a, b, c, d, w0_t[1], MD4C02, MD4S20);
1001 MD4_STEP (MD4_H , d, a, b, c, w2_t[1], MD4C02, MD4S21);
1002 MD4_STEP (MD4_H , c, d, a, b, w1_t[1], MD4C02, MD4S22);
1003 MD4_STEP (MD4_H , b, c, d, a, w3_t[1], MD4C02, MD4S23);
1004 MD4_STEP (MD4_H , a, b, c, d, w0_t[3], MD4C02, MD4S20);
1005 MD4_STEP (MD4_H , d, a, b, c, w2_t[3], MD4C02, MD4S21);
1007 if (s2 != ((d + MD4M_D) >> 16)) continue;
1009 MD4_STEP (MD4_H , c, d, a, b, w1_t[3], MD4C02, MD4S22);
1010 MD4_STEP (MD4_H , b, c, d, a, w3_t[3], MD4C02, MD4S23);
1023 transform_netntlmv1_key (a, b, key);
1028 _des_crypt_keysetup (key[0], key[1], Kc, Kd, s_skb);
1032 _des_crypt_encrypt (iv1, data, Kc, Kd, s_SPtrans);
1038 transform_netntlmv1_key (((b >> 24) | (c << 8)), ((c >> 24) | (d << 8)), key);
1040 _des_crypt_keysetup (key[0], key[1], Kc, Kd, s_skb);
1044 _des_crypt_encrypt (iv2, data, Kc, Kd, s_SPtrans);
1050 const u32x r0 = iv1[0];
1051 const u32x r1 = iv1[1];
1052 const u32x r2 = iv2[0];
1053 const u32x r3 = iv2[1];
1055 #include VECT_COMPARE_S
1059 extern "C" __global__ void __launch_bounds__ (256, 1) m05500_s08 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
1063 extern "C" __global__ void __launch_bounds__ (256, 1) m05500_s16 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)