Fixed two major problems
[hashcat.git] / OpenCL / m00200_a3.cl
1 /**
2  * Author......: Jens Steube <jens.steube@gmail.com>
3  * License.....: MIT
4  */
5
6 #define _MYSQL323_
7
8 #define NEW_SIMD_CODE
9
10 #include "include/constants.h"
11 #include "include/kernel_vendor.h"
12
13 #define DGST_R0 0
14 #define DGST_R1 1
15 #define DGST_R2 2
16 #define DGST_R3 3
17
18 #include "include/kernel_functions.c"
19 #include "OpenCL/types_ocl.c"
20 #include "OpenCL/common.c"
21 #include "OpenCL/simd.c"
22
23 static void m00200m (u32 w[16], const u32 pw_len, __global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __global void *tmps, __global void *hooks, __global u32 *bitmaps_buf_s1_a, __global u32 *bitmaps_buf_s1_b, __global u32 *bitmaps_buf_s1_c, __global u32 *bitmaps_buf_s1_d, __global u32 *bitmaps_buf_s2_a, __global u32 *bitmaps_buf_s2_b, __global u32 *bitmaps_buf_s2_c, __global u32 *bitmaps_buf_s2_d, __global plain_t *plains_buf, __global digest_t *digests_buf, __global u32 *hashes_shown, __global salt_t *salt_bufs, __global void *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset)
24 {
25   /**
26    * modifier
27    */
28
29   const u32 gid = get_global_id (0);
30   const u32 lid = get_local_id (0);
31
32   /**
33    * loop
34    */
35
36   u32 w0l = w[0];
37
38   for (u32 il_pos = 0; il_pos < il_cnt; il_pos += VECT_SIZE)
39   {
40     const u32x w0r = words_buf_r[il_pos / VECT_SIZE];
41
42     const u32x w0 = w0l | w0r;
43
44     u32x a = MYSQL323_A;
45     u32x b = MYSQL323_B;
46     u32x c = 0;
47     u32x d = 0;
48
49     u32x add = 7;
50
51     #define ROUND(v)                              \
52     {                                             \
53       a ^= (((a & 0x3f) + add) * (v)) + (a << 8); \
54       b += (b << 8) ^ a;                          \
55       add += v;                                   \
56     }
57
58     if (pw_len >= 4)
59     {
60       ROUND ((w0 >>  0) & 0xff);
61       ROUND ((w0 >>  8) & 0xff);
62       ROUND ((w0 >> 16) & 0xff);
63       ROUND ((w0 >> 24) & 0xff);
64     }
65     else if (pw_len == 3)
66     {
67       ROUND ((w0 >>  0) & 0xff);
68       ROUND ((w0 >>  8) & 0xff);
69       ROUND ((w0 >> 16) & 0xff);
70     }
71     else if (pw_len == 2)
72     {
73       ROUND ((w0 >>  0) & 0xff);
74       ROUND ((w0 >>  8) & 0xff);
75     }
76     else if (pw_len == 1)
77     {
78       ROUND ((w0 >>  0) & 0xff);
79     }
80
81     int i;
82     int j;
83
84     for (i = 4, j = 1; i <= (int) pw_len - 4; i += 4, j += 1)
85     {
86       const u32x wj = w[j];
87
88       ROUND ((wj >>  0) & 0xff);
89       ROUND ((wj >>  8) & 0xff);
90       ROUND ((wj >> 16) & 0xff);
91       ROUND ((wj >> 24) & 0xff);
92     }
93
94     const u32x wj = w[j];
95
96     const u32 left = pw_len - i;
97
98     if (left == 3)
99     {
100       ROUND ((wj >>  0) & 0xff);
101       ROUND ((wj >>  8) & 0xff);
102       ROUND ((wj >> 16) & 0xff);
103     }
104     else if (left == 2)
105     {
106       ROUND ((wj >>  0) & 0xff);
107       ROUND ((wj >>  8) & 0xff);
108     }
109     else if (left == 1)
110     {
111       ROUND ((wj >>  0) & 0xff);
112     }
113
114     a &= 0x7fffffff;
115     b &= 0x7fffffff;
116
117     COMPARE_M_SIMD (a, b, c, d);
118   }
119 }
120
121 static void m00200s (u32 w[16], const u32 pw_len, __global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __global void *tmps, __global void *hooks, __global u32 *bitmaps_buf_s1_a, __global u32 *bitmaps_buf_s1_b, __global u32 *bitmaps_buf_s1_c, __global u32 *bitmaps_buf_s1_d, __global u32 *bitmaps_buf_s2_a, __global u32 *bitmaps_buf_s2_b, __global u32 *bitmaps_buf_s2_c, __global u32 *bitmaps_buf_s2_d, __global plain_t *plains_buf, __global digest_t *digests_buf, __global u32 *hashes_shown, __global salt_t *salt_bufs, __global void *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset)
122 {
123   /**
124    * modifier
125    */
126
127   const u32 gid = get_global_id (0);
128   const u32 lid = get_local_id (0);
129
130   /**
131    * digest
132    */
133
134   const u32 search[4] =
135   {
136     digests_buf[digests_offset].digest_buf[DGST_R0],
137     digests_buf[digests_offset].digest_buf[DGST_R1],
138     digests_buf[digests_offset].digest_buf[DGST_R2],
139     digests_buf[digests_offset].digest_buf[DGST_R3]
140   };
141
142   /**
143    * loop
144    */
145
146   u32 w0l = w[0];
147
148   for (u32 il_pos = 0; il_pos < il_cnt; il_pos += VECT_SIZE)
149   {
150     const u32x w0r = words_buf_r[il_pos / VECT_SIZE];
151
152     const u32x w0 = w0l | w0r;
153
154     u32x a = MYSQL323_A;
155     u32x b = MYSQL323_B;
156     u32x c = 0;
157     u32x d = 0;
158
159     u32x add = 7;
160
161     #define ROUND(v)                              \
162     {                                             \
163       a ^= (((a & 0x3f) + add) * (v)) + (a << 8); \
164       b += (b << 8) ^ a;                          \
165       add += v;                                   \
166     }
167
168     if (pw_len >= 4)
169     {
170       ROUND ((w0 >>  0) & 0xff);
171       ROUND ((w0 >>  8) & 0xff);
172       ROUND ((w0 >> 16) & 0xff);
173       ROUND ((w0 >> 24) & 0xff);
174     }
175     else if (pw_len == 3)
176     {
177       ROUND ((w0 >>  0) & 0xff);
178       ROUND ((w0 >>  8) & 0xff);
179       ROUND ((w0 >> 16) & 0xff);
180     }
181     else if (pw_len == 2)
182     {
183       ROUND ((w0 >>  0) & 0xff);
184       ROUND ((w0 >>  8) & 0xff);
185     }
186     else if (pw_len == 1)
187     {
188       ROUND ((w0 >>  0) & 0xff);
189     }
190
191     int i;
192     int j;
193
194     for (i = 4, j = 1; i <= (int) pw_len - 4; i += 4, j += 1)
195     {
196       const u32x wj = w[j];
197
198       ROUND ((wj >>  0) & 0xff);
199       ROUND ((wj >>  8) & 0xff);
200       ROUND ((wj >> 16) & 0xff);
201       ROUND ((wj >> 24) & 0xff);
202     }
203
204     const u32x wj = w[j];
205
206     const u32 left = pw_len - i;
207
208     if (left == 3)
209     {
210       ROUND ((wj >>  0) & 0xff);
211       ROUND ((wj >>  8) & 0xff);
212       ROUND ((wj >> 16) & 0xff);
213     }
214     else if (left == 2)
215     {
216       ROUND ((wj >>  0) & 0xff);
217       ROUND ((wj >>  8) & 0xff);
218     }
219     else if (left == 1)
220     {
221       ROUND ((wj >>  0) & 0xff);
222     }
223
224     a &= 0x7fffffff;
225     b &= 0x7fffffff;
226
227     COMPARE_S_SIMD (a, b, c, d);
228   }
229 }
230
231 __kernel void m00200_m04 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __global void *tmps, __global void *hooks, __global u32 *bitmaps_buf_s1_a, __global u32 *bitmaps_buf_s1_b, __global u32 *bitmaps_buf_s1_c, __global u32 *bitmaps_buf_s1_d, __global u32 *bitmaps_buf_s2_a, __global u32 *bitmaps_buf_s2_b, __global u32 *bitmaps_buf_s2_c, __global u32 *bitmaps_buf_s2_d, __global plain_t *plains_buf, __global digest_t *digests_buf, __global u32 *hashes_shown, __global salt_t *salt_bufs, __global void *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
232 {
233   /**
234    * base
235    */
236
237   const u32 gid = get_global_id (0);
238
239   if (gid >= gid_max) return;
240
241   u32 w[16];
242
243   w[ 0] = pws[gid].i[ 0];
244   w[ 1] = pws[gid].i[ 1];
245   w[ 2] = pws[gid].i[ 2];
246   w[ 3] = pws[gid].i[ 3];
247   w[ 4] = 0;
248   w[ 5] = 0;
249   w[ 6] = 0;
250   w[ 7] = 0;
251   w[ 8] = 0;
252   w[ 9] = 0;
253   w[10] = 0;
254   w[11] = 0;
255   w[12] = 0;
256   w[13] = 0;
257   w[14] = 0;
258   w[15] = 0;
259
260   const u32 pw_len = pws[gid].pw_len;
261
262   /**
263    * main
264    */
265
266   m00200m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset);
267 }
268
269 __kernel void m00200_m08 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __global void *tmps, __global void *hooks, __global u32 *bitmaps_buf_s1_a, __global u32 *bitmaps_buf_s1_b, __global u32 *bitmaps_buf_s1_c, __global u32 *bitmaps_buf_s1_d, __global u32 *bitmaps_buf_s2_a, __global u32 *bitmaps_buf_s2_b, __global u32 *bitmaps_buf_s2_c, __global u32 *bitmaps_buf_s2_d, __global plain_t *plains_buf, __global digest_t *digests_buf, __global u32 *hashes_shown, __global salt_t *salt_bufs, __global void *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
270 {
271   /**
272    * base
273    */
274
275   const u32 gid = get_global_id (0);
276
277   if (gid >= gid_max) return;
278
279   u32 w[16];
280
281   w[ 0] = pws[gid].i[ 0];
282   w[ 1] = pws[gid].i[ 1];
283   w[ 2] = pws[gid].i[ 2];
284   w[ 3] = pws[gid].i[ 3];
285   w[ 4] = pws[gid].i[ 4];
286   w[ 5] = pws[gid].i[ 5];
287   w[ 6] = pws[gid].i[ 6];
288   w[ 7] = pws[gid].i[ 7];
289   w[ 8] = 0;
290   w[ 9] = 0;
291   w[10] = 0;
292   w[11] = 0;
293   w[12] = 0;
294   w[13] = 0;
295   w[14] = 0;
296   w[15] = 0;
297
298   const u32 pw_len = pws[gid].pw_len;
299
300   /**
301    * main
302    */
303
304   m00200m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset);
305 }
306
307 __kernel void m00200_m16 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __global void *tmps, __global void *hooks, __global u32 *bitmaps_buf_s1_a, __global u32 *bitmaps_buf_s1_b, __global u32 *bitmaps_buf_s1_c, __global u32 *bitmaps_buf_s1_d, __global u32 *bitmaps_buf_s2_a, __global u32 *bitmaps_buf_s2_b, __global u32 *bitmaps_buf_s2_c, __global u32 *bitmaps_buf_s2_d, __global plain_t *plains_buf, __global digest_t *digests_buf, __global u32 *hashes_shown, __global salt_t *salt_bufs, __global void *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
308 {
309   /**
310    * base
311    */
312
313   const u32 gid = get_global_id (0);
314
315   if (gid >= gid_max) return;
316
317   u32 w[16];
318
319   w[ 0] = pws[gid].i[ 0];
320   w[ 1] = pws[gid].i[ 1];
321   w[ 2] = pws[gid].i[ 2];
322   w[ 3] = pws[gid].i[ 3];
323   w[ 4] = pws[gid].i[ 4];
324   w[ 5] = pws[gid].i[ 5];
325   w[ 6] = pws[gid].i[ 6];
326   w[ 7] = pws[gid].i[ 7];
327   w[ 8] = pws[gid].i[ 8];
328   w[ 9] = pws[gid].i[ 9];
329   w[10] = pws[gid].i[10];
330   w[11] = pws[gid].i[11];
331   w[12] = pws[gid].i[12];
332   w[13] = pws[gid].i[13];
333   w[14] = pws[gid].i[14];
334   w[15] = pws[gid].i[15];
335
336   const u32 pw_len = pws[gid].pw_len;
337
338   /**
339    * main
340    */
341
342   m00200m (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset);
343 }
344
345 __kernel void m00200_s04 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __global void *tmps, __global void *hooks, __global u32 *bitmaps_buf_s1_a, __global u32 *bitmaps_buf_s1_b, __global u32 *bitmaps_buf_s1_c, __global u32 *bitmaps_buf_s1_d, __global u32 *bitmaps_buf_s2_a, __global u32 *bitmaps_buf_s2_b, __global u32 *bitmaps_buf_s2_c, __global u32 *bitmaps_buf_s2_d, __global plain_t *plains_buf, __global digest_t *digests_buf, __global u32 *hashes_shown, __global salt_t *salt_bufs, __global void *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
346 {
347   /**
348    * base
349    */
350
351   const u32 gid = get_global_id (0);
352
353   if (gid >= gid_max) return;
354
355   u32 w[16];
356
357   w[ 0] = pws[gid].i[ 0];
358   w[ 1] = pws[gid].i[ 1];
359   w[ 2] = pws[gid].i[ 2];
360   w[ 3] = pws[gid].i[ 3];
361   w[ 4] = 0;
362   w[ 5] = 0;
363   w[ 6] = 0;
364   w[ 7] = 0;
365   w[ 8] = 0;
366   w[ 9] = 0;
367   w[10] = 0;
368   w[11] = 0;
369   w[12] = 0;
370   w[13] = 0;
371   w[14] = 0;
372   w[15] = 0;
373
374   const u32 pw_len = pws[gid].pw_len;
375
376   /**
377    * main
378    */
379
380   m00200s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset);
381 }
382
383 __kernel void m00200_s08 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __global void *tmps, __global void *hooks, __global u32 *bitmaps_buf_s1_a, __global u32 *bitmaps_buf_s1_b, __global u32 *bitmaps_buf_s1_c, __global u32 *bitmaps_buf_s1_d, __global u32 *bitmaps_buf_s2_a, __global u32 *bitmaps_buf_s2_b, __global u32 *bitmaps_buf_s2_c, __global u32 *bitmaps_buf_s2_d, __global plain_t *plains_buf, __global digest_t *digests_buf, __global u32 *hashes_shown, __global salt_t *salt_bufs, __global void *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
384 {
385   /**
386    * base
387    */
388
389   const u32 gid = get_global_id (0);
390
391   if (gid >= gid_max) return;
392
393   u32 w[16];
394
395   w[ 0] = pws[gid].i[ 0];
396   w[ 1] = pws[gid].i[ 1];
397   w[ 2] = pws[gid].i[ 2];
398   w[ 3] = pws[gid].i[ 3];
399   w[ 4] = pws[gid].i[ 4];
400   w[ 5] = pws[gid].i[ 5];
401   w[ 6] = pws[gid].i[ 6];
402   w[ 7] = pws[gid].i[ 7];
403   w[ 8] = 0;
404   w[ 9] = 0;
405   w[10] = 0;
406   w[11] = 0;
407   w[12] = 0;
408   w[13] = 0;
409   w[14] = 0;
410   w[15] = 0;
411
412   const u32 pw_len = pws[gid].pw_len;
413
414   /**
415    * main
416    */
417
418   m00200s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset);
419 }
420
421 __kernel void m00200_s16 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __global void *tmps, __global void *hooks, __global u32 *bitmaps_buf_s1_a, __global u32 *bitmaps_buf_s1_b, __global u32 *bitmaps_buf_s1_c, __global u32 *bitmaps_buf_s1_d, __global u32 *bitmaps_buf_s2_a, __global u32 *bitmaps_buf_s2_b, __global u32 *bitmaps_buf_s2_c, __global u32 *bitmaps_buf_s2_d, __global plain_t *plains_buf, __global digest_t *digests_buf, __global u32 *hashes_shown, __global salt_t *salt_bufs, __global void *esalt_bufs, __global u32 *d_return_buf, __global u32 *d_scryptV_buf, const u32 bitmap_mask, const u32 bitmap_shift1, const u32 bitmap_shift2, const u32 salt_pos, const u32 loop_pos, const u32 loop_cnt, const u32 il_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
422 {
423   /**
424    * base
425    */
426
427   const u32 gid = get_global_id (0);
428
429   if (gid >= gid_max) return;
430
431   u32 w[16];
432
433   w[ 0] = pws[gid].i[ 0];
434   w[ 1] = pws[gid].i[ 1];
435   w[ 2] = pws[gid].i[ 2];
436   w[ 3] = pws[gid].i[ 3];
437   w[ 4] = pws[gid].i[ 4];
438   w[ 5] = pws[gid].i[ 5];
439   w[ 6] = pws[gid].i[ 6];
440   w[ 7] = pws[gid].i[ 7];
441   w[ 8] = pws[gid].i[ 8];
442   w[ 9] = pws[gid].i[ 9];
443   w[10] = pws[gid].i[10];
444   w[11] = pws[gid].i[11];
445   w[12] = pws[gid].i[12];
446   w[13] = pws[gid].i[13];
447   w[14] = pws[gid].i[14];
448   w[15] = pws[gid].i[15];
449
450   const u32 pw_len = pws[gid].pw_len;
451
452   /**
453    * main
454    */
455
456   m00200s (w, pw_len, pws, rules_buf, combs_buf, words_buf_r, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_scryptV_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset);
457 }