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