ded29d3adc40afd129fa87ff6e774246820163b7
[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 "inc_hash_constants.h"
11 #include "inc_vendor.cl"
12
13 #define DGST_R0 0
14 #define DGST_R1 1
15 #define DGST_R2 2
16 #define DGST_R3 3
17
18 #include "inc_hash_functions.cl"
19 #include "inc_types.cl"
20 #include "inc_common.cl"
21 #include "inc_simd.cl"
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 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 il_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    * salt
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 < il_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     /**
79      * siphash
80      */
81
82     u64x v0 = v0p;
83     u64x v1 = v1p;
84     u64x v2 = v2p;
85     u64x v3 = v3p;
86
87     u64x m = hl32_to_64 (w[1], w0);
88
89     v3 ^= m;
90
91     SIPROUND (v0, v1, v2, v3);
92     SIPROUND (v0, v1, v2, v3);
93
94     v0 ^= m;
95
96     u32 i;
97     int j;
98
99     for (i = 8, j = 2; i <= pw_len; i += 8, j += 2)
100     {
101       m = hl32_to_64 (w[j + 1], w[j + 0]);
102
103       v3 ^= m;
104
105       SIPROUND (v0, v1, v2, v3);
106       SIPROUND (v0, v1, v2, v3);
107
108       v0 ^= m;
109     }
110
111     v2 ^= 0xff;
112
113     SIPROUND (v0, v1, v2, v3);
114     SIPROUND (v0, v1, v2, v3);
115     SIPROUND (v0, v1, v2, v3);
116     SIPROUND (v0, v1, v2, v3);
117
118     const u64x v = v0 ^ v1 ^ v2 ^ v3;
119
120     const u32x a = l32_from_64 (v);
121     const u32x b = h32_from_64 (v);
122
123     const u32x z = 0;
124
125     COMPARE_M_SIMD (a, b, z, z);
126   }
127 }
128
129 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 il_cnt, const u32 digests_cnt, const u32 digests_offset)
130 {
131   /**
132    * modifier
133    */
134
135   const u32 gid = get_global_id (0);
136   const u32 lid = get_local_id (0);
137
138   /**
139    * salt
140    */
141
142   u64 v0p = SIPHASHM_0;
143   u64 v1p = SIPHASHM_1;
144   u64 v2p = SIPHASHM_2;
145   u64 v3p = SIPHASHM_3;
146
147   v0p ^= hl32_to_64_S (salt_bufs[salt_pos].salt_buf[1], salt_bufs[salt_pos].salt_buf[0]);
148   v1p ^= hl32_to_64_S (salt_bufs[salt_pos].salt_buf[3], salt_bufs[salt_pos].salt_buf[2]);
149   v2p ^= hl32_to_64_S (salt_bufs[salt_pos].salt_buf[1], salt_bufs[salt_pos].salt_buf[0]);
150   v3p ^= hl32_to_64_S (salt_bufs[salt_pos].salt_buf[3], salt_bufs[salt_pos].salt_buf[2]);
151
152   u64 *w_ptr = (u64 *) w;
153
154   w_ptr[pw_len / 8] |= (u64) pw_len << 56;
155
156   /**
157    * digest
158    */
159
160   const u32 search[4] =
161   {
162     digests_buf[digests_offset].digest_buf[DGST_R0],
163     digests_buf[digests_offset].digest_buf[DGST_R1],
164     0,
165     0
166   };
167
168   /**
169    * loop
170    */
171
172   u32 w0l = w[0];
173
174   for (u32 il_pos = 0; il_pos < il_cnt; il_pos += VECT_SIZE)
175   {
176     const u32x w0r = words_buf_r[il_pos / VECT_SIZE];
177
178     const u32x w0 = w0l | w0r;
179
180     /**
181      * siphash
182      */
183
184     u64x v0 = v0p;
185     u64x v1 = v1p;
186     u64x v2 = v2p;
187     u64x v3 = v3p;
188
189     u64x m = hl32_to_64 (w[1], w0);
190
191     v3 ^= m;
192
193     SIPROUND (v0, v1, v2, v3);
194     SIPROUND (v0, v1, v2, v3);
195
196     v0 ^= m;
197
198     u32 i;
199     int j;
200
201     for (i = 8, j = 2; i <= pw_len; i += 8, j += 2)
202     {
203       m = hl32_to_64 (w[j + 1], w[j + 0]);
204
205       v3 ^= m;
206
207       SIPROUND (v0, v1, v2, v3);
208       SIPROUND (v0, v1, v2, v3);
209
210       v0 ^= m;
211     }
212
213     v2 ^= 0xff;
214
215     SIPROUND (v0, v1, v2, v3);
216     SIPROUND (v0, v1, v2, v3);
217     SIPROUND (v0, v1, v2, v3);
218     SIPROUND (v0, v1, v2, v3);
219
220     const u64x v = v0 ^ v1 ^ v2 ^ v3;
221
222     const u32x a = l32_from_64 (v);
223     const u32x b = h32_from_64 (v);
224
225     const u32x z = 0;
226
227     COMPARE_S_SIMD (a, b, z, z);
228   }
229 }
230
231 __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 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] = pws[gid].i[14];
258   w[15] = 0;
259
260   const u32 pw_len = pws[gid].pw_len;
261
262   /**
263    * main
264    */
265
266   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, il_cnt, digests_cnt, digests_offset);
267 }
268
269 __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 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] = pws[gid].i[14];
296   w[15] = 0;
297
298   const u32 pw_len = pws[gid].pw_len;
299
300   /**
301    * main
302    */
303
304   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, il_cnt, digests_cnt, digests_offset);
305 }
306
307 __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 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   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, il_cnt, digests_cnt, digests_offset);
343 }
344
345 __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 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] = pws[gid].i[14];
372   w[15] = 0;
373
374   const u32 pw_len = pws[gid].pw_len;
375
376   /**
377    * main
378    */
379
380   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, il_cnt, digests_cnt, digests_offset);
381 }
382
383 __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 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] = pws[gid].i[14];
410   w[15] = 0;
411
412   const u32 pw_len = pws[gid].pw_len;
413
414   /**
415    * main
416    */
417
418   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, il_cnt, digests_cnt, digests_offset);
419 }
420
421 __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 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   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, il_cnt, digests_cnt, digests_offset);
457 }