Cleanup -m 50xx kernels to latest standard - NOTE: broken on SIMD, compiler bug
[hashcat.git] / OpenCL / m05000_a1.cl
1 /**
2  * Author......: Jens Steube <jens.steube@gmail.com>
3  * License.....: MIT
4  */
5
6 #define _KECCAK_
7
8 #define NEW_SIMD_CODE
9
10 #include "include/constants.h"
11 #include "include/kernel_vendor.h"
12
13 #define DGST_R0 2
14 #define DGST_R1 3
15 #define DGST_R2 4
16 #define DGST_R3 5
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 __constant u64 keccakf_rndc[24] =
24 {
25   0x0000000000000001, 0x0000000000008082, 0x800000000000808a,
26   0x8000000080008000, 0x000000000000808b, 0x0000000080000001,
27   0x8000000080008081, 0x8000000000008009, 0x000000000000008a,
28   0x0000000000000088, 0x0000000080008009, 0x000000008000000a,
29   0x000000008000808b, 0x800000000000008b, 0x8000000000008089,
30   0x8000000000008003, 0x8000000000008002, 0x8000000000000080,
31   0x000000000000800a, 0x800000008000000a, 0x8000000080008081,
32   0x8000000000008080, 0x0000000080000001, 0x8000000080008008
33 };
34
35 __constant u8 keccakf_rotc[24] =
36 {
37    1,  3,  6, 10, 15, 21, 28, 36, 45, 55,  2, 14,
38   27, 41, 56,  8, 25, 43, 62, 18, 39, 61, 20, 44
39 };
40
41 __constant u8 keccakf_piln[24] =
42 {
43   10,  7, 11, 17, 18,  3,  5, 16,  8, 21, 24,  4,
44   15, 23, 19, 13, 12,  2, 20, 14, 22,  9,  6,  1
45 };
46
47 #ifndef KECCAK_ROUNDS
48 #define KECCAK_ROUNDS 24
49 #endif
50
51 #define Theta1(s) (st[0 + s] ^ st[5 + s] ^ st[10 + s] ^ st[15 + s] ^ st[20 + s])
52
53 #define Theta2(s)               \
54 {                               \
55   st[ 0 + s] ^= t;              \
56   st[ 5 + s] ^= t;              \
57   st[10 + s] ^= t;              \
58   st[15 + s] ^= t;              \
59   st[20 + s] ^= t;              \
60 }
61
62 #define Rho_Pi(s)               \
63 {                               \
64   u32 j = keccakf_piln[s];      \
65   u32 k = keccakf_rotc[s];      \
66   bc0 = st[j];                  \
67   st[j] = rotl64 (t, k);        \
68   t = bc0;                      \
69 }
70
71 #define Chi(s)                  \
72 {                               \
73   bc0 = st[0 + s];              \
74   bc1 = st[1 + s];              \
75   bc2 = st[2 + s];              \
76   bc3 = st[3 + s];              \
77   bc4 = st[4 + s];              \
78   st[0 + s] ^= ~bc1 & bc2;      \
79   st[1 + s] ^= ~bc2 & bc3;      \
80   st[2 + s] ^= ~bc3 & bc4;      \
81   st[3 + s] ^= ~bc4 & bc0;      \
82   st[4 + s] ^= ~bc0 & bc1;      \
83 }
84
85 __kernel void m05000_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 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)
86 {
87   /**
88    * modifier
89    */
90
91   const u32 lid = get_local_id (0);
92
93   /**
94    * base
95    */
96
97   const u32 gid = get_global_id (0);
98
99   if (gid >= gid_max) return;
100
101   u32 pw_buf0[4];
102   u32 pw_buf1[4];
103
104   pw_buf0[0] = pws[gid].i[0];
105   pw_buf0[1] = pws[gid].i[1];
106   pw_buf0[2] = pws[gid].i[2];
107   pw_buf0[3] = pws[gid].i[3];
108   pw_buf1[0] = pws[gid].i[4];
109   pw_buf1[1] = pws[gid].i[5];
110   pw_buf1[2] = pws[gid].i[6];
111   pw_buf1[3] = pws[gid].i[7];
112
113   const u32 pw_l_len = pws[gid].pw_len;
114
115   /**
116    * 0x80 keccak, very special
117    */
118
119   const u32 mdlen = salt_bufs[salt_pos].keccak_mdlen;
120
121   const u32 rsiz = 200 - (2 * mdlen);
122
123   const u32 add80w = (rsiz - 1) / 8;
124
125   /**
126    * loop
127    */
128
129   for (u32 il_pos = 0; il_pos < il_cnt; il_pos += VECT_SIZE)
130   {
131     const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos);
132
133     const u32x pw_len = pw_l_len + pw_r_len;
134
135     /**
136      * concat password candidate
137      */
138
139     u32x wordl0[4] = { 0 };
140     u32x wordl1[4] = { 0 };
141     u32x wordl2[4] = { 0 };
142     u32x wordl3[4] = { 0 };
143
144     wordl0[0] = pw_buf0[0];
145     wordl0[1] = pw_buf0[1];
146     wordl0[2] = pw_buf0[2];
147     wordl0[3] = pw_buf0[3];
148     wordl1[0] = pw_buf1[0];
149     wordl1[1] = pw_buf1[1];
150     wordl1[2] = pw_buf1[2];
151     wordl1[3] = pw_buf1[3];
152
153     u32x wordr0[4] = { 0 };
154     u32x wordr1[4] = { 0 };
155     u32x wordr2[4] = { 0 };
156     u32x wordr3[4] = { 0 };
157
158     wordr0[0] = ix_create_combt (combs_buf, il_pos, 0);
159     wordr0[1] = ix_create_combt (combs_buf, il_pos, 1);
160     wordr0[2] = ix_create_combt (combs_buf, il_pos, 2);
161     wordr0[3] = ix_create_combt (combs_buf, il_pos, 3);
162     wordr1[0] = ix_create_combt (combs_buf, il_pos, 4);
163     wordr1[1] = ix_create_combt (combs_buf, il_pos, 5);
164     wordr1[2] = ix_create_combt (combs_buf, il_pos, 6);
165     wordr1[3] = ix_create_combt (combs_buf, il_pos, 7);
166
167     if (combs_mode == COMBINATOR_MODE_BASE_LEFT)
168     {
169       switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len);
170     }
171     else
172     {
173       switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len);
174     }
175
176     u32x w0[4];
177     u32x w1[4];
178     u32x w2[4];
179     u32x w3[4];
180
181     w0[0] = wordl0[0] | wordr0[0];
182     w0[1] = wordl0[1] | wordr0[1];
183     w0[2] = wordl0[2] | wordr0[2];
184     w0[3] = wordl0[3] | wordr0[3];
185     w1[0] = wordl1[0] | wordr1[0];
186     w1[1] = wordl1[1] | wordr1[1];
187     w1[2] = wordl1[2] | wordr1[2];
188     w1[3] = wordl1[3] | wordr1[3];
189     w2[0] = wordl2[0] | wordr2[0];
190     w2[1] = wordl2[1] | wordr2[1];
191     w2[2] = wordl2[2] | wordr2[2];
192     w2[3] = wordl2[3] | wordr2[3];
193     w3[0] = wordl3[0] | wordr3[0];
194     w3[1] = wordl3[1] | wordr3[1];
195     w3[2] = wordl3[2] | wordr3[2];
196     w3[3] = wordl3[3] | wordr3[3];
197
198     /**
199      * Keccak
200      */
201
202     u64x st[25];
203
204     st[ 0] = hl32_to_64 (w0[1], w0[0]);
205     st[ 1] = hl32_to_64 (w0[3], w0[2]);
206     st[ 2] = hl32_to_64 (w1[1], w1[0]);
207     st[ 3] = hl32_to_64 (w1[3], w1[2]);
208     st[ 4] = hl32_to_64 (w2[1], w2[0]);
209     st[ 5] = hl32_to_64 (w2[3], w2[2]);
210     st[ 6] = hl32_to_64 (w3[1], w3[0]);
211     st[ 7] = hl32_to_64 (w3[3], w3[2]);
212     st[ 8] = 0;
213     st[ 9] = 0;
214     st[10] = 0;
215     st[11] = 0;
216     st[12] = 0;
217     st[13] = 0;
218     st[14] = 0;
219     st[15] = 0;
220     st[16] = 0;
221     st[17] = 0;
222     st[18] = 0;
223     st[19] = 0;
224     st[20] = 0;
225     st[21] = 0;
226     st[22] = 0;
227     st[23] = 0;
228     st[24] = 0;
229
230     st[add80w] |= 0x8000000000000000;
231
232     int round;
233
234     for (round = 0; round < KECCAK_ROUNDS; round++)
235     {
236       // Theta
237
238       u64x bc0 = Theta1 (0);
239       u64x bc1 = Theta1 (1);
240       u64x bc2 = Theta1 (2);
241       u64x bc3 = Theta1 (3);
242       u64x bc4 = Theta1 (4);
243
244       u64x t;
245
246       t = bc4 ^ rotl64 (bc1, 1); Theta2 (0);
247       t = bc0 ^ rotl64 (bc2, 1); Theta2 (1);
248       t = bc1 ^ rotl64 (bc3, 1); Theta2 (2);
249       t = bc2 ^ rotl64 (bc4, 1); Theta2 (3);
250       t = bc3 ^ rotl64 (bc0, 1); Theta2 (4);
251
252       // Rho Pi
253
254       t = st[1];
255
256       Rho_Pi (0);
257       Rho_Pi (1);
258       Rho_Pi (2);
259       Rho_Pi (3);
260       Rho_Pi (4);
261       Rho_Pi (5);
262       Rho_Pi (6);
263       Rho_Pi (7);
264       Rho_Pi (8);
265       Rho_Pi (9);
266       Rho_Pi (10);
267       Rho_Pi (11);
268       Rho_Pi (12);
269       Rho_Pi (13);
270       Rho_Pi (14);
271       Rho_Pi (15);
272       Rho_Pi (16);
273       Rho_Pi (17);
274       Rho_Pi (18);
275       Rho_Pi (19);
276       Rho_Pi (20);
277       Rho_Pi (21);
278       Rho_Pi (22);
279       Rho_Pi (23);
280
281       //  Chi
282
283       Chi (0);
284       Chi (5);
285       Chi (10);
286       Chi (15);
287       Chi (20);
288
289       //  Iota
290
291       st[0] ^= keccakf_rndc[round];
292     }
293
294     const u32x r0 = l32_from_64 (st[1]);
295     const u32x r1 = h32_from_64 (st[1]);
296     const u32x r2 = l32_from_64 (st[2]);
297     const u32x r3 = h32_from_64 (st[2]);
298
299     COMPARE_M_SIMD (r0, r1, r2, r3);
300   }
301 }
302
303 __kernel void m05000_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 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)
304 {
305 }
306
307 __kernel void m05000_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 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
311 __kernel void m05000_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 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)
312 {
313   /**
314    * modifier
315    */
316
317   const u32 lid = get_local_id (0);
318
319   /**
320    * base
321    */
322
323   const u32 gid = get_global_id (0);
324
325   if (gid >= gid_max) return;
326
327   u32 pw_buf0[4];
328   u32 pw_buf1[4];
329
330   pw_buf0[0] = pws[gid].i[0];
331   pw_buf0[1] = pws[gid].i[1];
332   pw_buf0[2] = pws[gid].i[2];
333   pw_buf0[3] = pws[gid].i[3];
334   pw_buf1[0] = pws[gid].i[4];
335   pw_buf1[1] = pws[gid].i[5];
336   pw_buf1[2] = pws[gid].i[6];
337   pw_buf1[3] = pws[gid].i[7];
338
339   const u32 pw_l_len = pws[gid].pw_len;
340
341   /**
342    * 0x80 keccak, very special
343    */
344
345   const u32 mdlen = salt_bufs[salt_pos].keccak_mdlen;
346
347   const u32 rsiz = 200 - (2 * mdlen);
348
349   const u32 add80w = (rsiz - 1) / 8;
350
351   /**
352    * digest
353    */
354
355   const u32 search[4] =
356   {
357     digests_buf[digests_offset].digest_buf[DGST_R0],
358     digests_buf[digests_offset].digest_buf[DGST_R1],
359     digests_buf[digests_offset].digest_buf[DGST_R2],
360     digests_buf[digests_offset].digest_buf[DGST_R3]
361   };
362
363   /**
364    * loop
365    */
366
367   for (u32 il_pos = 0; il_pos < il_cnt; il_pos += VECT_SIZE)
368   {
369     const u32x pw_r_len = pwlenx_create_combt (combs_buf, il_pos);
370
371     const u32x pw_len = pw_l_len + pw_r_len;
372
373     /**
374      * concat password candidate
375      */
376
377     u32x wordl0[4] = { 0 };
378     u32x wordl1[4] = { 0 };
379     u32x wordl2[4] = { 0 };
380     u32x wordl3[4] = { 0 };
381
382     wordl0[0] = pw_buf0[0];
383     wordl0[1] = pw_buf0[1];
384     wordl0[2] = pw_buf0[2];
385     wordl0[3] = pw_buf0[3];
386     wordl1[0] = pw_buf1[0];
387     wordl1[1] = pw_buf1[1];
388     wordl1[2] = pw_buf1[2];
389     wordl1[3] = pw_buf1[3];
390
391     u32x wordr0[4] = { 0 };
392     u32x wordr1[4] = { 0 };
393     u32x wordr2[4] = { 0 };
394     u32x wordr3[4] = { 0 };
395
396     wordr0[0] = ix_create_combt (combs_buf, il_pos, 0);
397     wordr0[1] = ix_create_combt (combs_buf, il_pos, 1);
398     wordr0[2] = ix_create_combt (combs_buf, il_pos, 2);
399     wordr0[3] = ix_create_combt (combs_buf, il_pos, 3);
400     wordr1[0] = ix_create_combt (combs_buf, il_pos, 4);
401     wordr1[1] = ix_create_combt (combs_buf, il_pos, 5);
402     wordr1[2] = ix_create_combt (combs_buf, il_pos, 6);
403     wordr1[3] = ix_create_combt (combs_buf, il_pos, 7);
404
405     if (combs_mode == COMBINATOR_MODE_BASE_LEFT)
406     {
407       switch_buffer_by_offset_le_VV (wordr0, wordr1, wordr2, wordr3, pw_l_len);
408     }
409     else
410     {
411       switch_buffer_by_offset_le_VV (wordl0, wordl1, wordl2, wordl3, pw_r_len);
412     }
413
414     u32x w0[4];
415     u32x w1[4];
416     u32x w2[4];
417     u32x w3[4];
418
419     w0[0] = wordl0[0] | wordr0[0];
420     w0[1] = wordl0[1] | wordr0[1];
421     w0[2] = wordl0[2] | wordr0[2];
422     w0[3] = wordl0[3] | wordr0[3];
423     w1[0] = wordl1[0] | wordr1[0];
424     w1[1] = wordl1[1] | wordr1[1];
425     w1[2] = wordl1[2] | wordr1[2];
426     w1[3] = wordl1[3] | wordr1[3];
427     w2[0] = wordl2[0] | wordr2[0];
428     w2[1] = wordl2[1] | wordr2[1];
429     w2[2] = wordl2[2] | wordr2[2];
430     w2[3] = wordl2[3] | wordr2[3];
431     w3[0] = wordl3[0] | wordr3[0];
432     w3[1] = wordl3[1] | wordr3[1];
433     w3[2] = wordl3[2] | wordr3[2];
434     w3[3] = wordl3[3] | wordr3[3];
435
436     /**
437      * Keccak
438      */
439
440     u64x st[25];
441
442     st[ 0] = hl32_to_64 (w0[1], w0[0]);
443     st[ 1] = hl32_to_64 (w0[3], w0[2]);
444     st[ 2] = hl32_to_64 (w1[1], w1[0]);
445     st[ 3] = hl32_to_64 (w1[3], w1[2]);
446     st[ 4] = hl32_to_64 (w2[1], w2[0]);
447     st[ 5] = hl32_to_64 (w2[3], w2[2]);
448     st[ 6] = hl32_to_64 (w3[1], w3[0]);
449     st[ 7] = hl32_to_64 (w3[3], w3[2]);
450     st[ 8] = 0;
451     st[ 9] = 0;
452     st[10] = 0;
453     st[11] = 0;
454     st[12] = 0;
455     st[13] = 0;
456     st[14] = 0;
457     st[15] = 0;
458     st[16] = 0;
459     st[17] = 0;
460     st[18] = 0;
461     st[19] = 0;
462     st[20] = 0;
463     st[21] = 0;
464     st[22] = 0;
465     st[23] = 0;
466     st[24] = 0;
467
468     st[add80w] |= 0x8000000000000000;
469
470     int round;
471
472     for (round = 0; round < KECCAK_ROUNDS; round++)
473     {
474       // Theta
475
476       u64x bc0 = Theta1 (0);
477       u64x bc1 = Theta1 (1);
478       u64x bc2 = Theta1 (2);
479       u64x bc3 = Theta1 (3);
480       u64x bc4 = Theta1 (4);
481
482       u64x t;
483
484       t = bc4 ^ rotl64 (bc1, 1); Theta2 (0);
485       t = bc0 ^ rotl64 (bc2, 1); Theta2 (1);
486       t = bc1 ^ rotl64 (bc3, 1); Theta2 (2);
487       t = bc2 ^ rotl64 (bc4, 1); Theta2 (3);
488       t = bc3 ^ rotl64 (bc0, 1); Theta2 (4);
489
490       // Rho Pi
491
492       t = st[1];
493
494       Rho_Pi (0);
495       Rho_Pi (1);
496       Rho_Pi (2);
497       Rho_Pi (3);
498       Rho_Pi (4);
499       Rho_Pi (5);
500       Rho_Pi (6);
501       Rho_Pi (7);
502       Rho_Pi (8);
503       Rho_Pi (9);
504       Rho_Pi (10);
505       Rho_Pi (11);
506       Rho_Pi (12);
507       Rho_Pi (13);
508       Rho_Pi (14);
509       Rho_Pi (15);
510       Rho_Pi (16);
511       Rho_Pi (17);
512       Rho_Pi (18);
513       Rho_Pi (19);
514       Rho_Pi (20);
515       Rho_Pi (21);
516       Rho_Pi (22);
517       Rho_Pi (23);
518
519       //  Chi
520
521       Chi (0);
522       Chi (5);
523       Chi (10);
524       Chi (15);
525       Chi (20);
526
527       //  Iota
528
529       st[0] ^= keccakf_rndc[round];
530     }
531
532     const u32x r0 = l32_from_64 (st[1]);
533     const u32x r1 = h32_from_64 (st[1]);
534     const u32x r2 = l32_from_64 (st[2]);
535     const u32x r3 = h32_from_64 (st[2]);
536
537     COMPARE_S_SIMD (r0, r1, r2, r3);
538   }
539 }
540
541 __kernel void m05000_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 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)
542 {
543 }
544
545 __kernel void m05000_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 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)
546 {
547 }