b07279b43d4759314654bc412cea1988fceb20b0
[hashcat.git] / OpenCL / m13500_a1.cl
1 /**
2  * Author......: Jens Steube <jens.steube@gmail.com>
3  * License.....: MIT
4  */
5
6 #define _SHA1_
7
8 //too much register pressure
9 //#define NEW_SIMD_CODE
10
11 #include "inc_hash_constants.h"
12 #include "inc_vendor.cl"
13
14 #define DGST_R0 3
15 #define DGST_R1 4
16 #define DGST_R2 2
17 #define DGST_R3 1
18
19 #include "inc_hash_functions.cl"
20 #include "inc_types.cl"
21 #include "inc_common.cl"
22 #include "inc_simd.cl"
23
24 void memcat64c_be (u32x block[16], const u32 offset, u32x carry[16])
25 {
26   const u32 mod = offset & 3;
27   const u32 div = offset / 4;
28
29   u32 tmp00;
30   u32 tmp01;
31   u32 tmp02;
32   u32 tmp03;
33   u32 tmp04;
34   u32 tmp05;
35   u32 tmp06;
36   u32 tmp07;
37   u32 tmp08;
38   u32 tmp09;
39   u32 tmp10;
40   u32 tmp11;
41   u32 tmp12;
42   u32 tmp13;
43   u32 tmp14;
44   u32 tmp15;
45   u32 tmp16;
46
47   #ifdef IS_NV
48   const int selector = (0x76543210 >> ((offset & 3) * 4)) & 0xffff;
49
50   tmp00 = __byte_perm (carry[ 0],         0, selector);
51   tmp01 = __byte_perm (carry[ 1], carry[ 0], selector);
52   tmp02 = __byte_perm (carry[ 2], carry[ 1], selector);
53   tmp03 = __byte_perm (carry[ 3], carry[ 2], selector);
54   tmp04 = __byte_perm (carry[ 4], carry[ 3], selector);
55   tmp05 = __byte_perm (carry[ 5], carry[ 4], selector);
56   tmp06 = __byte_perm (carry[ 6], carry[ 5], selector);
57   tmp07 = __byte_perm (carry[ 7], carry[ 6], selector);
58   tmp08 = __byte_perm (carry[ 8], carry[ 7], selector);
59   tmp09 = __byte_perm (carry[ 9], carry[ 8], selector);
60   tmp10 = __byte_perm (carry[10], carry[ 9], selector);
61   tmp11 = __byte_perm (carry[11], carry[10], selector);
62   tmp12 = __byte_perm (carry[12], carry[11], selector);
63   tmp13 = __byte_perm (carry[13], carry[12], selector);
64   tmp14 = __byte_perm (carry[14], carry[13], selector);
65   tmp15 = __byte_perm (carry[15], carry[14], selector);
66   tmp16 = __byte_perm (        0, carry[15], selector);
67   #endif
68
69   #if defined IS_AMD || defined IS_GENERIC
70   tmp00 = amd_bytealign (        0, carry[ 0], offset);
71   tmp01 = amd_bytealign (carry[ 0], carry[ 1], offset);
72   tmp02 = amd_bytealign (carry[ 1], carry[ 2], offset);
73   tmp03 = amd_bytealign (carry[ 2], carry[ 3], offset);
74   tmp04 = amd_bytealign (carry[ 3], carry[ 4], offset);
75   tmp05 = amd_bytealign (carry[ 4], carry[ 5], offset);
76   tmp06 = amd_bytealign (carry[ 5], carry[ 6], offset);
77   tmp07 = amd_bytealign (carry[ 6], carry[ 7], offset);
78   tmp08 = amd_bytealign (carry[ 7], carry[ 8], offset);
79   tmp09 = amd_bytealign (carry[ 8], carry[ 9], offset);
80   tmp10 = amd_bytealign (carry[ 9], carry[10], offset);
81   tmp11 = amd_bytealign (carry[10], carry[11], offset);
82   tmp12 = amd_bytealign (carry[11], carry[12], offset);
83   tmp13 = amd_bytealign (carry[12], carry[13], offset);
84   tmp14 = amd_bytealign (carry[13], carry[14], offset);
85   tmp15 = amd_bytealign (carry[14], carry[15], offset);
86   tmp16 = amd_bytealign (carry[15],         0, offset);
87   #endif
88
89   carry[ 0] = 0;
90   carry[ 1] = 0;
91   carry[ 2] = 0;
92   carry[ 3] = 0;
93   carry[ 4] = 0;
94   carry[ 5] = 0;
95   carry[ 6] = 0;
96   carry[ 7] = 0;
97   carry[ 8] = 0;
98   carry[ 9] = 0;
99   carry[10] = 0;
100   carry[11] = 0;
101   carry[12] = 0;
102   carry[13] = 0;
103   carry[14] = 0;
104   carry[15] = 0;
105
106   switch (div)
107   {
108     case  0:  block[ 0] |= tmp00;
109               block[ 1]  = tmp01;
110               block[ 2]  = tmp02;
111               block[ 3]  = tmp03;
112               block[ 4]  = tmp04;
113               block[ 5]  = tmp05;
114               block[ 6]  = tmp06;
115               block[ 7]  = tmp07;
116               block[ 8]  = tmp08;
117               block[ 9]  = tmp09;
118               block[10]  = tmp10;
119               block[11]  = tmp11;
120               block[12]  = tmp12;
121               block[13]  = tmp13;
122               block[14]  = tmp14;
123               block[15]  = tmp15;
124               carry[ 0]  = tmp16;
125               break;
126     case  1:  block[ 1] |= tmp00;
127               block[ 2]  = tmp01;
128               block[ 3]  = tmp02;
129               block[ 4]  = tmp03;
130               block[ 5]  = tmp04;
131               block[ 6]  = tmp05;
132               block[ 7]  = tmp06;
133               block[ 8]  = tmp07;
134               block[ 9]  = tmp08;
135               block[10]  = tmp09;
136               block[11]  = tmp10;
137               block[12]  = tmp11;
138               block[13]  = tmp12;
139               block[14]  = tmp13;
140               block[15]  = tmp14;
141               carry[ 0]  = tmp15;
142               carry[ 1]  = tmp16;
143               break;
144     case  2:  block[ 2] |= tmp00;
145               block[ 3]  = tmp01;
146               block[ 4]  = tmp02;
147               block[ 5]  = tmp03;
148               block[ 6]  = tmp04;
149               block[ 7]  = tmp05;
150               block[ 8]  = tmp06;
151               block[ 9]  = tmp07;
152               block[10]  = tmp08;
153               block[11]  = tmp09;
154               block[12]  = tmp10;
155               block[13]  = tmp11;
156               block[14]  = tmp12;
157               block[15]  = tmp13;
158               carry[ 0]  = tmp14;
159               carry[ 1]  = tmp15;
160               carry[ 2]  = tmp16;
161               break;
162     case  3:  block[ 3] |= tmp00;
163               block[ 4]  = tmp01;
164               block[ 5]  = tmp02;
165               block[ 6]  = tmp03;
166               block[ 7]  = tmp04;
167               block[ 8]  = tmp05;
168               block[ 9]  = tmp06;
169               block[10]  = tmp07;
170               block[11]  = tmp08;
171               block[12]  = tmp09;
172               block[13]  = tmp10;
173               block[14]  = tmp11;
174               block[15]  = tmp12;
175               carry[ 0]  = tmp13;
176               carry[ 1]  = tmp14;
177               carry[ 2]  = tmp15;
178               carry[ 3]  = tmp16;
179               break;
180     case  4:  block[ 4] |= tmp00;
181               block[ 5]  = tmp01;
182               block[ 6]  = tmp02;
183               block[ 7]  = tmp03;
184               block[ 8]  = tmp04;
185               block[ 9]  = tmp05;
186               block[10]  = tmp06;
187               block[11]  = tmp07;
188               block[12]  = tmp08;
189               block[13]  = tmp09;
190               block[14]  = tmp10;
191               block[15]  = tmp11;
192               carry[ 0]  = tmp12;
193               carry[ 1]  = tmp13;
194               carry[ 2]  = tmp14;
195               carry[ 3]  = tmp15;
196               carry[ 4]  = tmp16;
197               break;
198     case  5:  block[ 5] |= tmp00;
199               block[ 6]  = tmp01;
200               block[ 7]  = tmp02;
201               block[ 8]  = tmp03;
202               block[ 9]  = tmp04;
203               block[10]  = tmp05;
204               block[11]  = tmp06;
205               block[12]  = tmp07;
206               block[13]  = tmp08;
207               block[14]  = tmp09;
208               block[15]  = tmp10;
209               carry[ 0]  = tmp11;
210               carry[ 1]  = tmp12;
211               carry[ 2]  = tmp13;
212               carry[ 3]  = tmp14;
213               carry[ 4]  = tmp15;
214               carry[ 5]  = tmp16;
215               break;
216     case  6:  block[ 6] |= tmp00;
217               block[ 7]  = tmp01;
218               block[ 8]  = tmp02;
219               block[ 9]  = tmp03;
220               block[10]  = tmp04;
221               block[11]  = tmp05;
222               block[12]  = tmp06;
223               block[13]  = tmp07;
224               block[14]  = tmp08;
225               block[15]  = tmp09;
226               carry[ 0]  = tmp10;
227               carry[ 1]  = tmp11;
228               carry[ 2]  = tmp12;
229               carry[ 3]  = tmp13;
230               carry[ 4]  = tmp14;
231               carry[ 5]  = tmp15;
232               carry[ 6]  = tmp16;
233               break;
234     case  7:  block[ 7] |= tmp00;
235               block[ 8]  = tmp01;
236               block[ 9]  = tmp02;
237               block[10]  = tmp03;
238               block[11]  = tmp04;
239               block[12]  = tmp05;
240               block[13]  = tmp06;
241               block[14]  = tmp07;
242               block[15]  = tmp08;
243               carry[ 0]  = tmp09;
244               carry[ 1]  = tmp10;
245               carry[ 2]  = tmp11;
246               carry[ 3]  = tmp12;
247               carry[ 4]  = tmp13;
248               carry[ 5]  = tmp14;
249               carry[ 6]  = tmp15;
250               carry[ 7]  = tmp16;
251               break;
252     case  8:  block[ 8] |= tmp00;
253               block[ 9]  = tmp01;
254               block[10]  = tmp02;
255               block[11]  = tmp03;
256               block[12]  = tmp04;
257               block[13]  = tmp05;
258               block[14]  = tmp06;
259               block[15]  = tmp07;
260               carry[ 0]  = tmp08;
261               carry[ 1]  = tmp09;
262               carry[ 2]  = tmp10;
263               carry[ 3]  = tmp11;
264               carry[ 4]  = tmp12;
265               carry[ 5]  = tmp13;
266               carry[ 6]  = tmp14;
267               carry[ 7]  = tmp15;
268               carry[ 8]  = tmp16;
269               break;
270     case  9:  block[ 9] |= tmp00;
271               block[10]  = tmp01;
272               block[11]  = tmp02;
273               block[12]  = tmp03;
274               block[13]  = tmp04;
275               block[14]  = tmp05;
276               block[15]  = tmp06;
277               carry[ 0]  = tmp07;
278               carry[ 1]  = tmp08;
279               carry[ 2]  = tmp09;
280               carry[ 3]  = tmp10;
281               carry[ 4]  = tmp11;
282               carry[ 5]  = tmp12;
283               carry[ 6]  = tmp13;
284               carry[ 7]  = tmp14;
285               carry[ 8]  = tmp15;
286               carry[ 9]  = tmp16;
287               break;
288     case 10:  block[10] |= tmp00;
289               block[11]  = tmp01;
290               block[12]  = tmp02;
291               block[13]  = tmp03;
292               block[14]  = tmp04;
293               block[15]  = tmp05;
294               carry[ 0]  = tmp06;
295               carry[ 1]  = tmp07;
296               carry[ 2]  = tmp08;
297               carry[ 3]  = tmp09;
298               carry[ 4]  = tmp10;
299               carry[ 5]  = tmp11;
300               carry[ 6]  = tmp12;
301               carry[ 7]  = tmp13;
302               carry[ 8]  = tmp14;
303               carry[ 9]  = tmp15;
304               carry[10]  = tmp16;
305               break;
306     case 11:  block[11] |= tmp00;
307               block[12]  = tmp01;
308               block[13]  = tmp02;
309               block[14]  = tmp03;
310               block[15]  = tmp04;
311               carry[ 0]  = tmp05;
312               carry[ 1]  = tmp06;
313               carry[ 2]  = tmp07;
314               carry[ 3]  = tmp08;
315               carry[ 4]  = tmp09;
316               carry[ 5]  = tmp10;
317               carry[ 6]  = tmp11;
318               carry[ 7]  = tmp12;
319               carry[ 8]  = tmp13;
320               carry[ 9]  = tmp14;
321               carry[10]  = tmp15;
322               carry[11]  = tmp16;
323               break;
324     case 12:  block[12] |= tmp00;
325               block[13]  = tmp01;
326               block[14]  = tmp02;
327               block[15]  = tmp03;
328               carry[ 0]  = tmp04;
329               carry[ 1]  = tmp05;
330               carry[ 2]  = tmp06;
331               carry[ 3]  = tmp07;
332               carry[ 4]  = tmp08;
333               carry[ 5]  = tmp09;
334               carry[ 6]  = tmp10;
335               carry[ 7]  = tmp11;
336               carry[ 8]  = tmp12;
337               carry[ 9]  = tmp13;
338               carry[10]  = tmp14;
339               carry[11]  = tmp15;
340               carry[12]  = tmp16;
341               break;
342     case 13:  block[13] |= tmp00;
343               block[14]  = tmp01;
344               block[15]  = tmp02;
345               carry[ 0]  = tmp03;
346               carry[ 1]  = tmp04;
347               carry[ 2]  = tmp05;
348               carry[ 3]  = tmp06;
349               carry[ 4]  = tmp07;
350               carry[ 5]  = tmp08;
351               carry[ 6]  = tmp09;
352               carry[ 7]  = tmp10;
353               carry[ 8]  = tmp11;
354               carry[ 9]  = tmp12;
355               carry[10]  = tmp13;
356               carry[11]  = tmp14;
357               carry[12]  = tmp15;
358               carry[13]  = tmp16;
359               break;
360     case 14:  block[14] |= tmp00;
361               block[15]  = tmp01;
362               carry[ 0]  = tmp02;
363               carry[ 1]  = tmp03;
364               carry[ 2]  = tmp04;
365               carry[ 3]  = tmp05;
366               carry[ 4]  = tmp06;
367               carry[ 5]  = tmp07;
368               carry[ 6]  = tmp08;
369               carry[ 7]  = tmp09;
370               carry[ 8]  = tmp10;
371               carry[ 9]  = tmp11;
372               carry[10]  = tmp12;
373               carry[11]  = tmp13;
374               carry[12]  = tmp14;
375               carry[13]  = tmp15;
376               carry[14]  = tmp16;
377               break;
378     case 15:  block[15] |= tmp00;
379               carry[ 0]  = tmp01;
380               carry[ 1]  = tmp02;
381               carry[ 2]  = tmp03;
382               carry[ 3]  = tmp04;
383               carry[ 4]  = tmp05;
384               carry[ 5]  = tmp06;
385               carry[ 6]  = tmp07;
386               carry[ 7]  = tmp08;
387               carry[ 8]  = tmp09;
388               carry[ 9]  = tmp10;
389               carry[10]  = tmp11;
390               carry[11]  = tmp12;
391               carry[12]  = tmp13;
392               carry[13]  = tmp14;
393               carry[14]  = tmp15;
394               carry[15]  = tmp16;
395               break;
396   }
397 }
398
399 __kernel void m13500_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 pstoken_t *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
400 {
401   /**
402    * modifier
403    */
404
405   const u32 lid = get_local_id (0);
406
407   /**
408    * base
409    */
410
411   const u32 gid = get_global_id (0);
412
413   if (gid >= gid_max) return;
414
415   u32 pw_buf0[4];
416   u32 pw_buf1[4];
417
418   pw_buf0[0] = pws[gid].i[0];
419   pw_buf0[1] = pws[gid].i[1];
420   pw_buf0[2] = pws[gid].i[2];
421   pw_buf0[3] = pws[gid].i[3];
422   pw_buf1[0] = pws[gid].i[4];
423   pw_buf1[1] = pws[gid].i[5];
424   pw_buf1[2] = pws[gid].i[6];
425   pw_buf1[3] = pws[gid].i[7];
426
427   const u32 pw_l_len = pws[gid].pw_len;
428
429   /**
430    * salt
431    */
432
433   const u32 pc_offset = esalt_bufs[salt_pos].pc_offset;
434
435   u32 pc_digest[5];
436
437   pc_digest[0] = esalt_bufs[salt_pos].pc_digest[0];
438   pc_digest[1] = esalt_bufs[salt_pos].pc_digest[1];
439   pc_digest[2] = esalt_bufs[salt_pos].pc_digest[2];
440   pc_digest[3] = esalt_bufs[salt_pos].pc_digest[3];
441   pc_digest[4] = esalt_bufs[salt_pos].pc_digest[4];
442
443   u32 salt_buf0[4];
444   u32 salt_buf1[4];
445   u32 salt_buf2[4];
446   u32 salt_buf3[4];
447
448   salt_buf0[0] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  0]);
449   salt_buf0[1] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  1]);
450   salt_buf0[2] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  2]);
451   salt_buf0[3] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  3]);
452   salt_buf1[0] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  4]);
453   salt_buf1[1] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  5]);
454   salt_buf1[2] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  6]);
455   salt_buf1[3] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  7]);
456   salt_buf2[0] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  8]);
457   salt_buf2[1] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  9]);
458   salt_buf2[2] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 10]);
459   salt_buf2[3] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 11]);
460   salt_buf3[0] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 12]);
461   salt_buf3[1] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 13]);
462   salt_buf3[2] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 14]);
463   salt_buf3[3] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 15]);
464
465   const u32 salt_len = esalt_bufs[salt_pos].salt_len;
466
467   /**
468    * loop
469    */
470
471   for (u32 il_pos = 0; il_pos < il_cnt; il_pos += VECT_SIZE)
472   {
473     const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos);
474
475     const u32x pw_len = pw_l_len + pw_r_len;
476
477     /**
478      * concat password candidate
479      */
480
481     u32x wordl0[4] = { 0 };
482     u32x wordl1[4] = { 0 };
483     u32x wordl2[4] = { 0 };
484     u32x wordl3[4] = { 0 };
485
486     wordl0[0] = pw_buf0[0];
487     wordl0[1] = pw_buf0[1];
488     wordl0[2] = pw_buf0[2];
489     wordl0[3] = pw_buf0[3];
490     wordl1[0] = pw_buf1[0];
491     wordl1[1] = pw_buf1[1];
492     wordl1[2] = pw_buf1[2];
493     wordl1[3] = pw_buf1[3];
494
495     u32x wordr0[4] = { 0 };
496     u32x wordr1[4] = { 0 };
497     u32x wordr2[4] = { 0 };
498     u32x wordr3[4] = { 0 };
499
500     wordr0[0] = ix_create_combt (combs_buf, il_pos, 0);
501     wordr0[1] = ix_create_combt (combs_buf, il_pos, 1);
502     wordr0[2] = ix_create_combt (combs_buf, il_pos, 2);
503     wordr0[3] = ix_create_combt (combs_buf, il_pos, 3);
504     wordr1[0] = ix_create_combt (combs_buf, il_pos, 4);
505     wordr1[1] = ix_create_combt (combs_buf, il_pos, 5);
506     wordr1[2] = ix_create_combt (combs_buf, il_pos, 6);
507     wordr1[3] = ix_create_combt (combs_buf, il_pos, 7);
508
509     if (combs_mode == COMBINATOR_MODE_BASE_LEFT)
510     {
511       switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len);
512     }
513     else
514     {
515       switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len);
516     }
517
518     u32x w0[4];
519     u32x w1[4];
520     u32x w2[4];
521     u32x w3[4];
522
523     w0[0] = wordl0[0] | wordr0[0];
524     w0[1] = wordl0[1] | wordr0[1];
525     w0[2] = wordl0[2] | wordr0[2];
526     w0[3] = wordl0[3] | wordr0[3];
527     w1[0] = wordl1[0] | wordr1[0];
528     w1[1] = wordl1[1] | wordr1[1];
529     w1[2] = wordl1[2] | wordr1[2];
530     w1[3] = wordl1[3] | wordr1[3];
531
532     append_0x80_2x4_VV (w0, w1, pw_len);
533
534     make_unicode (w1, w2, w3);
535     make_unicode (w0, w0, w1);
536
537     const u32x pw_len2 = pw_len * 2;
538
539     const u32x pw_salt_len = pw_len2 + salt_len;
540
541     /**
542      * prepend salt -- can't stay outside the loop this time
543      */
544
545     u32x carry[16];
546
547     carry[ 0] = swap32 (w0[0]);
548     carry[ 1] = swap32 (w0[1]);
549     carry[ 2] = swap32 (w0[2]);
550     carry[ 3] = swap32 (w0[3]);
551     carry[ 4] = swap32 (w1[0]);
552     carry[ 5] = swap32 (w1[1]);
553     carry[ 6] = swap32 (w1[2]);
554     carry[ 7] = swap32 (w1[3]);
555     carry[ 8] = swap32 (w2[0]);
556     carry[ 9] = swap32 (w2[1]);
557     carry[10] = swap32 (w2[2]);
558     carry[11] = swap32 (w2[3]);
559     carry[12] = swap32 (w3[0]);
560     carry[13] = swap32 (w3[1]);
561     carry[14] = swap32 (w3[2]);
562     carry[15] = swap32 (w3[3]);
563
564     u32x w[16];
565
566     w[ 0] = salt_buf0[0];
567     w[ 1] = salt_buf0[1];
568     w[ 2] = salt_buf0[2];
569     w[ 3] = salt_buf0[3];
570     w[ 4] = salt_buf1[0];
571     w[ 5] = salt_buf1[1];
572     w[ 6] = salt_buf1[2];
573     w[ 7] = salt_buf1[3];
574     w[ 8] = salt_buf2[0];
575     w[ 9] = salt_buf2[1];
576     w[10] = salt_buf2[2];
577     w[11] = salt_buf2[3];
578     w[12] = salt_buf3[0];
579     w[13] = salt_buf3[1];
580     w[14] = salt_buf3[2];
581     w[15] = salt_buf3[3];
582
583     memcat64c_be (w, salt_len & 0x3f, carry);
584
585     u32x a = pc_digest[0];
586     u32x b = pc_digest[1];
587     u32x c = pc_digest[2];
588     u32x d = pc_digest[3];
589     u32x e = pc_digest[4];
590
591     if (((salt_len & 0x3f) + pw_len2) >= 56)
592     {
593       u32x w0_t = w[ 0];
594       u32x w1_t = w[ 1];
595       u32x w2_t = w[ 2];
596       u32x w3_t = w[ 3];
597       u32x w4_t = w[ 4];
598       u32x w5_t = w[ 5];
599       u32x w6_t = w[ 6];
600       u32x w7_t = w[ 7];
601       u32x w8_t = w[ 8];
602       u32x w9_t = w[ 9];
603       u32x wa_t = w[10];
604       u32x wb_t = w[11];
605       u32x wc_t = w[12];
606       u32x wd_t = w[13];
607       u32x we_t = w[14];
608       u32x wf_t = w[15];
609
610       #undef K
611       #define K SHA1C00
612
613       SHA1_STEP (SHA1_F0o, a, b, c, d, e, w0_t);
614       SHA1_STEP (SHA1_F0o, e, a, b, c, d, w1_t);
615       SHA1_STEP (SHA1_F0o, d, e, a, b, c, w2_t);
616       SHA1_STEP (SHA1_F0o, c, d, e, a, b, w3_t);
617       SHA1_STEP (SHA1_F0o, b, c, d, e, a, w4_t);
618       SHA1_STEP (SHA1_F0o, a, b, c, d, e, w5_t);
619       SHA1_STEP (SHA1_F0o, e, a, b, c, d, w6_t);
620       SHA1_STEP (SHA1_F0o, d, e, a, b, c, w7_t);
621       SHA1_STEP (SHA1_F0o, c, d, e, a, b, w8_t);
622       SHA1_STEP (SHA1_F0o, b, c, d, e, a, w9_t);
623       SHA1_STEP (SHA1_F0o, a, b, c, d, e, wa_t);
624       SHA1_STEP (SHA1_F0o, e, a, b, c, d, wb_t);
625       SHA1_STEP (SHA1_F0o, d, e, a, b, c, wc_t);
626       SHA1_STEP (SHA1_F0o, c, d, e, a, b, wd_t);
627       SHA1_STEP (SHA1_F0o, b, c, d, e, a, we_t);
628       SHA1_STEP (SHA1_F0o, a, b, c, d, e, wf_t);
629       w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F0o, e, a, b, c, d, w0_t);
630       w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F0o, d, e, a, b, c, w1_t);
631       w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F0o, c, d, e, a, b, w2_t);
632       w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F0o, b, c, d, e, a, w3_t);
633
634       #undef K
635       #define K SHA1C01
636
637       w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w4_t);
638       w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w5_t);
639       w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w6_t);
640       w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w7_t);
641       w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w8_t);
642       w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w9_t);
643       wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wa_t);
644       wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wb_t);
645       wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wc_t);
646       wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wd_t);
647       we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, we_t);
648       wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wf_t);
649       w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w0_t);
650       w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w1_t);
651       w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w2_t);
652       w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w3_t);
653       w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w4_t);
654       w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w5_t);
655       w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w6_t);
656       w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w7_t);
657
658       #undef K
659       #define K SHA1C02
660
661       w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w8_t);
662       w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w9_t);
663       wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wa_t);
664       wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wb_t);
665       wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wc_t);
666       wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, wd_t);
667       we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, we_t);
668       wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wf_t);
669       w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w0_t);
670       w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w1_t);
671       w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w2_t);
672       w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w3_t);
673       w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w4_t);
674       w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w5_t);
675       w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w6_t);
676       w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w7_t);
677       w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w8_t);
678       w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w9_t);
679       wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wa_t);
680       wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wb_t);
681
682       #undef K
683       #define K SHA1C03
684
685       wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wc_t);
686       wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wd_t);
687       we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, we_t);
688       wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wf_t);
689       w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w0_t);
690       w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w1_t);
691       w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w2_t);
692       w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w3_t);
693       w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w4_t);
694       w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w5_t);
695       w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w6_t);
696       w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w7_t);
697       w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w8_t);
698       w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w9_t);
699       wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wa_t);
700       wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wb_t);
701       wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wc_t);
702       wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wd_t);
703       we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, we_t);
704       wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wf_t);
705
706       a += pc_digest[0];
707       b += pc_digest[1];
708       c += pc_digest[2];
709       d += pc_digest[3];
710       e += pc_digest[4];
711
712       w[ 0] = carry[ 0];
713       w[ 1] = carry[ 1];
714       w[ 2] = carry[ 2];
715       w[ 3] = carry[ 3];
716       w[ 4] = carry[ 4];
717       w[ 5] = carry[ 5];
718       w[ 6] = carry[ 6];
719       w[ 7] = carry[ 7];
720       w[ 8] = carry[ 8];
721       w[ 9] = carry[ 9];
722       w[10] = carry[10];
723       w[11] = carry[11];
724       w[12] = carry[12];
725       w[13] = carry[13];
726       w[14] = carry[14];
727       w[15] = carry[15];
728     }
729
730     /**
731      * final sha1
732      */
733
734     u32x w0_t = w[ 0];
735     u32x w1_t = w[ 1];
736     u32x w2_t = w[ 2];
737     u32x w3_t = w[ 3];
738     u32x w4_t = w[ 4];
739     u32x w5_t = w[ 5];
740     u32x w6_t = w[ 6];
741     u32x w7_t = w[ 7];
742     u32x w8_t = w[ 8];
743     u32x w9_t = w[ 9];
744     u32x wa_t = w[10];
745     u32x wb_t = w[11];
746     u32x wc_t = w[12];
747     u32x wd_t = w[13];
748     u32x we_t = 0;
749     u32x wf_t = pw_salt_len * 8;
750
751     u32x r_a = a;
752     u32x r_b = b;
753     u32x r_c = c;
754     u32x r_d = d;
755     u32x r_e = e;
756
757     #undef K
758     #define K SHA1C00
759
760     SHA1_STEP (SHA1_F0o, a, b, c, d, e, w0_t);
761     SHA1_STEP (SHA1_F0o, e, a, b, c, d, w1_t);
762     SHA1_STEP (SHA1_F0o, d, e, a, b, c, w2_t);
763     SHA1_STEP (SHA1_F0o, c, d, e, a, b, w3_t);
764     SHA1_STEP (SHA1_F0o, b, c, d, e, a, w4_t);
765     SHA1_STEP (SHA1_F0o, a, b, c, d, e, w5_t);
766     SHA1_STEP (SHA1_F0o, e, a, b, c, d, w6_t);
767     SHA1_STEP (SHA1_F0o, d, e, a, b, c, w7_t);
768     SHA1_STEP (SHA1_F0o, c, d, e, a, b, w8_t);
769     SHA1_STEP (SHA1_F0o, b, c, d, e, a, w9_t);
770     SHA1_STEP (SHA1_F0o, a, b, c, d, e, wa_t);
771     SHA1_STEP (SHA1_F0o, e, a, b, c, d, wb_t);
772     SHA1_STEP (SHA1_F0o, d, e, a, b, c, wc_t);
773     SHA1_STEP (SHA1_F0o, c, d, e, a, b, wd_t);
774     SHA1_STEP (SHA1_F0o, b, c, d, e, a, we_t);
775     SHA1_STEP (SHA1_F0o, a, b, c, d, e, wf_t);
776     w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F0o, e, a, b, c, d, w0_t);
777     w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F0o, d, e, a, b, c, w1_t);
778     w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F0o, c, d, e, a, b, w2_t);
779     w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F0o, b, c, d, e, a, w3_t);
780
781     #undef K
782     #define K SHA1C01
783
784     w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w4_t);
785     w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w5_t);
786     w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w6_t);
787     w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w7_t);
788     w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w8_t);
789     w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w9_t);
790     wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wa_t);
791     wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wb_t);
792     wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wc_t);
793     wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wd_t);
794     we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, we_t);
795     wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wf_t);
796     w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w0_t);
797     w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w1_t);
798     w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w2_t);
799     w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w3_t);
800     w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w4_t);
801     w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w5_t);
802     w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w6_t);
803     w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w7_t);
804
805     #undef K
806     #define K SHA1C02
807
808     w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w8_t);
809     w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w9_t);
810     wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wa_t);
811     wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wb_t);
812     wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wc_t);
813     wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, wd_t);
814     we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, we_t);
815     wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wf_t);
816     w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w0_t);
817     w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w1_t);
818     w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w2_t);
819     w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w3_t);
820     w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w4_t);
821     w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w5_t);
822     w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w6_t);
823     w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w7_t);
824     w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w8_t);
825     w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w9_t);
826     wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wa_t);
827     wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wb_t);
828
829     #undef K
830     #define K SHA1C03
831
832     wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wc_t);
833     wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wd_t);
834     we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, we_t);
835     wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wf_t);
836     w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w0_t);
837     w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w1_t);
838     w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w2_t);
839     w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w3_t);
840     w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w4_t);
841     w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w5_t);
842     w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w6_t);
843     w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w7_t);
844     w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w8_t);
845     w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w9_t);
846     wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wa_t);
847     wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wb_t);
848     wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wc_t);
849     wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wd_t);
850     we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, we_t);
851     wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wf_t);
852
853     a += r_a;
854     b += r_b;
855     c += r_c;
856     d += r_d;
857     e += r_e;
858
859     COMPARE_M_SIMD (d, e, c, b);
860   }
861 }
862
863 __kernel void m13500_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 pstoken_t *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
864 {
865 }
866
867 __kernel void m13500_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 pstoken_t *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
868 {
869 }
870
871 __kernel void m13500_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 pstoken_t *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
872 {
873   /**
874    * modifier
875    */
876
877   const u32 lid = get_local_id (0);
878
879   /**
880    * base
881    */
882
883   const u32 gid = get_global_id (0);
884
885   if (gid >= gid_max) return;
886
887   u32 pw_buf0[4];
888   u32 pw_buf1[4];
889
890   pw_buf0[0] = pws[gid].i[0];
891   pw_buf0[1] = pws[gid].i[1];
892   pw_buf0[2] = pws[gid].i[2];
893   pw_buf0[3] = pws[gid].i[3];
894   pw_buf1[0] = pws[gid].i[4];
895   pw_buf1[1] = pws[gid].i[5];
896   pw_buf1[2] = pws[gid].i[6];
897   pw_buf1[3] = pws[gid].i[7];
898
899   const u32 pw_l_len = pws[gid].pw_len;
900
901   /**
902    * salt
903    */
904
905   const u32 pc_offset = esalt_bufs[salt_pos].pc_offset;
906
907   u32 pc_digest[5];
908
909   pc_digest[0] = esalt_bufs[salt_pos].pc_digest[0];
910   pc_digest[1] = esalt_bufs[salt_pos].pc_digest[1];
911   pc_digest[2] = esalt_bufs[salt_pos].pc_digest[2];
912   pc_digest[3] = esalt_bufs[salt_pos].pc_digest[3];
913   pc_digest[4] = esalt_bufs[salt_pos].pc_digest[4];
914
915   u32 salt_buf0[4];
916   u32 salt_buf1[4];
917   u32 salt_buf2[4];
918   u32 salt_buf3[4];
919
920   salt_buf0[0] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  0]);
921   salt_buf0[1] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  1]);
922   salt_buf0[2] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  2]);
923   salt_buf0[3] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  3]);
924   salt_buf1[0] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  4]);
925   salt_buf1[1] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  5]);
926   salt_buf1[2] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  6]);
927   salt_buf1[3] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  7]);
928   salt_buf2[0] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  8]);
929   salt_buf2[1] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset +  9]);
930   salt_buf2[2] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 10]);
931   salt_buf2[3] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 11]);
932   salt_buf3[0] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 12]);
933   salt_buf3[1] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 13]);
934   salt_buf3[2] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 14]);
935   salt_buf3[3] = swap32_S (esalt_bufs[salt_pos].salt_buf[pc_offset + 15]);
936
937   const u32 salt_len = esalt_bufs[salt_pos].salt_len;
938
939   /**
940    * digest
941    */
942
943   const u32 search[4] =
944   {
945     digests_buf[digests_offset].digest_buf[DGST_R0],
946     digests_buf[digests_offset].digest_buf[DGST_R1],
947     digests_buf[digests_offset].digest_buf[DGST_R2],
948     digests_buf[digests_offset].digest_buf[DGST_R3]
949   };
950
951   /**
952    * loop
953    */
954
955   for (u32 il_pos = 0; il_pos < il_cnt; il_pos += VECT_SIZE)
956   {
957     const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos);
958
959     const u32x pw_len = pw_l_len + pw_r_len;
960
961     /**
962      * concat password candidate
963      */
964
965     u32x wordl0[4] = { 0 };
966     u32x wordl1[4] = { 0 };
967     u32x wordl2[4] = { 0 };
968     u32x wordl3[4] = { 0 };
969
970     wordl0[0] = pw_buf0[0];
971     wordl0[1] = pw_buf0[1];
972     wordl0[2] = pw_buf0[2];
973     wordl0[3] = pw_buf0[3];
974     wordl1[0] = pw_buf1[0];
975     wordl1[1] = pw_buf1[1];
976     wordl1[2] = pw_buf1[2];
977     wordl1[3] = pw_buf1[3];
978
979     u32x wordr0[4] = { 0 };
980     u32x wordr1[4] = { 0 };
981     u32x wordr2[4] = { 0 };
982     u32x wordr3[4] = { 0 };
983
984     wordr0[0] = ix_create_combt (combs_buf, il_pos, 0);
985     wordr0[1] = ix_create_combt (combs_buf, il_pos, 1);
986     wordr0[2] = ix_create_combt (combs_buf, il_pos, 2);
987     wordr0[3] = ix_create_combt (combs_buf, il_pos, 3);
988     wordr1[0] = ix_create_combt (combs_buf, il_pos, 4);
989     wordr1[1] = ix_create_combt (combs_buf, il_pos, 5);
990     wordr1[2] = ix_create_combt (combs_buf, il_pos, 6);
991     wordr1[3] = ix_create_combt (combs_buf, il_pos, 7);
992
993     if (combs_mode == COMBINATOR_MODE_BASE_LEFT)
994     {
995       switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len);
996     }
997     else
998     {
999       switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len);
1000     }
1001
1002     u32x w0[4];
1003     u32x w1[4];
1004     u32x w2[4];
1005     u32x w3[4];
1006
1007     w0[0] = wordl0[0] | wordr0[0];
1008     w0[1] = wordl0[1] | wordr0[1];
1009     w0[2] = wordl0[2] | wordr0[2];
1010     w0[3] = wordl0[3] | wordr0[3];
1011     w1[0] = wordl1[0] | wordr1[0];
1012     w1[1] = wordl1[1] | wordr1[1];
1013     w1[2] = wordl1[2] | wordr1[2];
1014     w1[3] = wordl1[3] | wordr1[3];
1015
1016     append_0x80_2x4_VV (w0, w1, pw_len);
1017
1018     make_unicode (w1, w2, w3);
1019     make_unicode (w0, w0, w1);
1020
1021     const u32x pw_len2 = pw_len * 2;
1022
1023     const u32x pw_salt_len = pw_len2 + salt_len;
1024
1025     /**
1026      * prepend salt -- can't stay outside the loop this time
1027      */
1028
1029     u32x carry[16];
1030
1031     carry[ 0] = swap32 (w0[0]);
1032     carry[ 1] = swap32 (w0[1]);
1033     carry[ 2] = swap32 (w0[2]);
1034     carry[ 3] = swap32 (w0[3]);
1035     carry[ 4] = swap32 (w1[0]);
1036     carry[ 5] = swap32 (w1[1]);
1037     carry[ 6] = swap32 (w1[2]);
1038     carry[ 7] = swap32 (w1[3]);
1039     carry[ 8] = swap32 (w2[0]);
1040     carry[ 9] = swap32 (w2[1]);
1041     carry[10] = swap32 (w2[2]);
1042     carry[11] = swap32 (w2[3]);
1043     carry[12] = swap32 (w3[0]);
1044     carry[13] = swap32 (w3[1]);
1045     carry[14] = swap32 (w3[2]);
1046     carry[15] = swap32 (w3[3]);
1047
1048     u32x w[16];
1049
1050     w[ 0] = salt_buf0[0];
1051     w[ 1] = salt_buf0[1];
1052     w[ 2] = salt_buf0[2];
1053     w[ 3] = salt_buf0[3];
1054     w[ 4] = salt_buf1[0];
1055     w[ 5] = salt_buf1[1];
1056     w[ 6] = salt_buf1[2];
1057     w[ 7] = salt_buf1[3];
1058     w[ 8] = salt_buf2[0];
1059     w[ 9] = salt_buf2[1];
1060     w[10] = salt_buf2[2];
1061     w[11] = salt_buf2[3];
1062     w[12] = salt_buf3[0];
1063     w[13] = salt_buf3[1];
1064     w[14] = salt_buf3[2];
1065     w[15] = salt_buf3[3];
1066
1067     memcat64c_be (w, salt_len & 0x3f, carry);
1068
1069     u32x a = pc_digest[0];
1070     u32x b = pc_digest[1];
1071     u32x c = pc_digest[2];
1072     u32x d = pc_digest[3];
1073     u32x e = pc_digest[4];
1074
1075     if (((salt_len & 0x3f) + pw_len2) >= 56)
1076     {
1077       u32x w0_t = w[ 0];
1078       u32x w1_t = w[ 1];
1079       u32x w2_t = w[ 2];
1080       u32x w3_t = w[ 3];
1081       u32x w4_t = w[ 4];
1082       u32x w5_t = w[ 5];
1083       u32x w6_t = w[ 6];
1084       u32x w7_t = w[ 7];
1085       u32x w8_t = w[ 8];
1086       u32x w9_t = w[ 9];
1087       u32x wa_t = w[10];
1088       u32x wb_t = w[11];
1089       u32x wc_t = w[12];
1090       u32x wd_t = w[13];
1091       u32x we_t = w[14];
1092       u32x wf_t = w[15];
1093
1094       #undef K
1095       #define K SHA1C00
1096
1097       SHA1_STEP (SHA1_F0o, a, b, c, d, e, w0_t);
1098       SHA1_STEP (SHA1_F0o, e, a, b, c, d, w1_t);
1099       SHA1_STEP (SHA1_F0o, d, e, a, b, c, w2_t);
1100       SHA1_STEP (SHA1_F0o, c, d, e, a, b, w3_t);
1101       SHA1_STEP (SHA1_F0o, b, c, d, e, a, w4_t);
1102       SHA1_STEP (SHA1_F0o, a, b, c, d, e, w5_t);
1103       SHA1_STEP (SHA1_F0o, e, a, b, c, d, w6_t);
1104       SHA1_STEP (SHA1_F0o, d, e, a, b, c, w7_t);
1105       SHA1_STEP (SHA1_F0o, c, d, e, a, b, w8_t);
1106       SHA1_STEP (SHA1_F0o, b, c, d, e, a, w9_t);
1107       SHA1_STEP (SHA1_F0o, a, b, c, d, e, wa_t);
1108       SHA1_STEP (SHA1_F0o, e, a, b, c, d, wb_t);
1109       SHA1_STEP (SHA1_F0o, d, e, a, b, c, wc_t);
1110       SHA1_STEP (SHA1_F0o, c, d, e, a, b, wd_t);
1111       SHA1_STEP (SHA1_F0o, b, c, d, e, a, we_t);
1112       SHA1_STEP (SHA1_F0o, a, b, c, d, e, wf_t);
1113       w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F0o, e, a, b, c, d, w0_t);
1114       w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F0o, d, e, a, b, c, w1_t);
1115       w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F0o, c, d, e, a, b, w2_t);
1116       w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F0o, b, c, d, e, a, w3_t);
1117
1118       #undef K
1119       #define K SHA1C01
1120
1121       w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w4_t);
1122       w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w5_t);
1123       w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w6_t);
1124       w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w7_t);
1125       w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w8_t);
1126       w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w9_t);
1127       wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wa_t);
1128       wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wb_t);
1129       wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wc_t);
1130       wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wd_t);
1131       we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, we_t);
1132       wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wf_t);
1133       w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w0_t);
1134       w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w1_t);
1135       w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w2_t);
1136       w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w3_t);
1137       w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w4_t);
1138       w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w5_t);
1139       w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w6_t);
1140       w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w7_t);
1141
1142       #undef K
1143       #define K SHA1C02
1144
1145       w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w8_t);
1146       w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w9_t);
1147       wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wa_t);
1148       wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wb_t);
1149       wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wc_t);
1150       wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, wd_t);
1151       we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, we_t);
1152       wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wf_t);
1153       w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w0_t);
1154       w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w1_t);
1155       w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w2_t);
1156       w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w3_t);
1157       w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w4_t);
1158       w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w5_t);
1159       w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w6_t);
1160       w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w7_t);
1161       w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w8_t);
1162       w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w9_t);
1163       wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wa_t);
1164       wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wb_t);
1165
1166       #undef K
1167       #define K SHA1C03
1168
1169       wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wc_t);
1170       wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wd_t);
1171       we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, we_t);
1172       wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wf_t);
1173       w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w0_t);
1174       w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w1_t);
1175       w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w2_t);
1176       w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w3_t);
1177       w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w4_t);
1178       w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w5_t);
1179       w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w6_t);
1180       w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w7_t);
1181       w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w8_t);
1182       w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w9_t);
1183       wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wa_t);
1184       wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wb_t);
1185       wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wc_t);
1186       wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wd_t);
1187       we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, we_t);
1188       wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wf_t);
1189
1190       a += pc_digest[0];
1191       b += pc_digest[1];
1192       c += pc_digest[2];
1193       d += pc_digest[3];
1194       e += pc_digest[4];
1195
1196       w[ 0] = carry[ 0];
1197       w[ 1] = carry[ 1];
1198       w[ 2] = carry[ 2];
1199       w[ 3] = carry[ 3];
1200       w[ 4] = carry[ 4];
1201       w[ 5] = carry[ 5];
1202       w[ 6] = carry[ 6];
1203       w[ 7] = carry[ 7];
1204       w[ 8] = carry[ 8];
1205       w[ 9] = carry[ 9];
1206       w[10] = carry[10];
1207       w[11] = carry[11];
1208       w[12] = carry[12];
1209       w[13] = carry[13];
1210       w[14] = carry[14];
1211       w[15] = carry[15];
1212     }
1213
1214     /**
1215      * final sha1
1216      */
1217
1218     u32x w0_t = w[ 0];
1219     u32x w1_t = w[ 1];
1220     u32x w2_t = w[ 2];
1221     u32x w3_t = w[ 3];
1222     u32x w4_t = w[ 4];
1223     u32x w5_t = w[ 5];
1224     u32x w6_t = w[ 6];
1225     u32x w7_t = w[ 7];
1226     u32x w8_t = w[ 8];
1227     u32x w9_t = w[ 9];
1228     u32x wa_t = w[10];
1229     u32x wb_t = w[11];
1230     u32x wc_t = w[12];
1231     u32x wd_t = w[13];
1232     u32x we_t = 0;
1233     u32x wf_t = pw_salt_len * 8;
1234
1235     u32x r_a = a;
1236     u32x r_b = b;
1237     u32x r_c = c;
1238     u32x r_d = d;
1239     u32x r_e = e;
1240
1241     #undef K
1242     #define K SHA1C00
1243
1244     SHA1_STEP (SHA1_F0o, a, b, c, d, e, w0_t);
1245     SHA1_STEP (SHA1_F0o, e, a, b, c, d, w1_t);
1246     SHA1_STEP (SHA1_F0o, d, e, a, b, c, w2_t);
1247     SHA1_STEP (SHA1_F0o, c, d, e, a, b, w3_t);
1248     SHA1_STEP (SHA1_F0o, b, c, d, e, a, w4_t);
1249     SHA1_STEP (SHA1_F0o, a, b, c, d, e, w5_t);
1250     SHA1_STEP (SHA1_F0o, e, a, b, c, d, w6_t);
1251     SHA1_STEP (SHA1_F0o, d, e, a, b, c, w7_t);
1252     SHA1_STEP (SHA1_F0o, c, d, e, a, b, w8_t);
1253     SHA1_STEP (SHA1_F0o, b, c, d, e, a, w9_t);
1254     SHA1_STEP (SHA1_F0o, a, b, c, d, e, wa_t);
1255     SHA1_STEP (SHA1_F0o, e, a, b, c, d, wb_t);
1256     SHA1_STEP (SHA1_F0o, d, e, a, b, c, wc_t);
1257     SHA1_STEP (SHA1_F0o, c, d, e, a, b, wd_t);
1258     SHA1_STEP (SHA1_F0o, b, c, d, e, a, we_t);
1259     SHA1_STEP (SHA1_F0o, a, b, c, d, e, wf_t);
1260     w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F0o, e, a, b, c, d, w0_t);
1261     w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F0o, d, e, a, b, c, w1_t);
1262     w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F0o, c, d, e, a, b, w2_t);
1263     w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F0o, b, c, d, e, a, w3_t);
1264
1265     #undef K
1266     #define K SHA1C01
1267
1268     w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w4_t);
1269     w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w5_t);
1270     w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w6_t);
1271     w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w7_t);
1272     w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w8_t);
1273     w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w9_t);
1274     wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wa_t);
1275     wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wb_t);
1276     wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wc_t);
1277     wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wd_t);
1278     we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, we_t);
1279     wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wf_t);
1280     w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w0_t);
1281     w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w1_t);
1282     w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w2_t);
1283     w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w3_t);
1284     w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w4_t);
1285     w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w5_t);
1286     w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w6_t);
1287     w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w7_t);
1288
1289     #undef K
1290     #define K SHA1C02
1291
1292     w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w8_t);
1293     w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w9_t);
1294     wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wa_t);
1295     wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wb_t);
1296     wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wc_t);
1297     wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, wd_t);
1298     we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, we_t);
1299     wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wf_t);
1300     w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w0_t);
1301     w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w1_t);
1302     w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w2_t);
1303     w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w3_t);
1304     w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w4_t);
1305     w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w5_t);
1306     w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w6_t);
1307     w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w7_t);
1308     w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w8_t);
1309     w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w9_t);
1310     wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wa_t);
1311     wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wb_t);
1312
1313     #undef K
1314     #define K SHA1C03
1315
1316     wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wc_t);
1317     wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wd_t);
1318     we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, we_t);
1319     wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wf_t);
1320     w0_t = rotl32 ((wd_t ^ w8_t ^ w2_t ^ w0_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w0_t);
1321     w1_t = rotl32 ((we_t ^ w9_t ^ w3_t ^ w1_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w1_t);
1322     w2_t = rotl32 ((wf_t ^ wa_t ^ w4_t ^ w2_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w2_t);
1323     w3_t = rotl32 ((w0_t ^ wb_t ^ w5_t ^ w3_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w3_t);
1324     w4_t = rotl32 ((w1_t ^ wc_t ^ w6_t ^ w4_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w4_t);
1325     w5_t = rotl32 ((w2_t ^ wd_t ^ w7_t ^ w5_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w5_t);
1326     w6_t = rotl32 ((w3_t ^ we_t ^ w8_t ^ w6_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w6_t);
1327     w7_t = rotl32 ((w4_t ^ wf_t ^ w9_t ^ w7_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w7_t);
1328     w8_t = rotl32 ((w5_t ^ w0_t ^ wa_t ^ w8_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w8_t);
1329     w9_t = rotl32 ((w6_t ^ w1_t ^ wb_t ^ w9_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w9_t);
1330     wa_t = rotl32 ((w7_t ^ w2_t ^ wc_t ^ wa_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wa_t);
1331     wb_t = rotl32 ((w8_t ^ w3_t ^ wd_t ^ wb_t), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wb_t);
1332     wc_t = rotl32 ((w9_t ^ w4_t ^ we_t ^ wc_t), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wc_t);
1333     wd_t = rotl32 ((wa_t ^ w5_t ^ wf_t ^ wd_t), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wd_t);
1334     we_t = rotl32 ((wb_t ^ w6_t ^ w0_t ^ we_t), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, we_t);
1335     wf_t = rotl32 ((wc_t ^ w7_t ^ w1_t ^ wf_t), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wf_t);
1336
1337     a += r_a;
1338     b += r_b;
1339     c += r_c;
1340     d += r_d;
1341     e += r_e;
1342
1343     COMPARE_S_SIMD (d, e, c, b);
1344   }
1345 }
1346
1347 __kernel void m13500_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 pstoken_t *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
1348 {
1349 }
1350
1351 __kernel void m13500_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 pstoken_t *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
1352 {
1353 }