Upgrade kernel to support dynamic local work sizes
[hashcat.git] / OpenCL / m04900_a1.cl
1 /**
2  * Author......: Jens Steube <jens.steube@gmail.com>
3  * License.....: MIT
4  */
5
6 #define _SHA1_
7
8 #include "include/constants.h"
9 #include "include/kernel_vendor.h"
10
11 #define DGST_R0 3
12 #define DGST_R1 4
13 #define DGST_R2 2
14 #define DGST_R3 1
15
16 #include "include/kernel_functions.c"
17 #include "OpenCL/types_ocl.c"
18 #include "OpenCL/common.c"
19
20 #define COMPARE_S "OpenCL/check_single_comp4.c"
21 #define COMPARE_M "OpenCL/check_multi_comp4.c"
22
23 __kernel void m04900_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 combs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
24 {
25   /**
26    * modifier
27    */
28
29   const u32 lid = get_local_id (0);
30
31   /**
32    * base
33    */
34
35   const u32 gid = get_global_id (0);
36
37   if (gid >= gid_max) return;
38
39   u32 wordl0[4];
40
41   wordl0[0] = pws[gid].i[ 0];
42   wordl0[1] = pws[gid].i[ 1];
43   wordl0[2] = pws[gid].i[ 2];
44   wordl0[3] = pws[gid].i[ 3];
45
46   u32 wordl1[4];
47
48   wordl1[0] = pws[gid].i[ 4];
49   wordl1[1] = pws[gid].i[ 5];
50   wordl1[2] = pws[gid].i[ 6];
51   wordl1[3] = pws[gid].i[ 7];
52
53   u32 wordl2[4];
54
55   wordl2[0] = 0;
56   wordl2[1] = 0;
57   wordl2[2] = 0;
58   wordl2[3] = 0;
59
60   u32 wordl3[4];
61
62   wordl3[0] = 0;
63   wordl3[1] = 0;
64   wordl3[2] = 0;
65   wordl3[3] = 0;
66
67   const u32 pw_l_len = pws[gid].pw_len;
68
69   if (combs_mode == COMBINATOR_MODE_BASE_RIGHT)
70   {
71     switch_buffer_by_offset (wordl0, wordl1, wordl2, wordl3, combs_buf[0].pw_len);
72   }
73
74   /**
75    * salt
76    */
77
78   u32 salt_buf0[4];
79
80   salt_buf0[0] = salt_bufs[salt_pos].salt_buf[ 0];
81   salt_buf0[1] = salt_bufs[salt_pos].salt_buf[ 1];
82   salt_buf0[2] = salt_bufs[salt_pos].salt_buf[ 2];
83   salt_buf0[3] = salt_bufs[salt_pos].salt_buf[ 3];
84
85   u32 salt_buf1[4];
86
87   salt_buf1[0] = salt_bufs[salt_pos].salt_buf[ 4];
88   salt_buf1[1] = salt_bufs[salt_pos].salt_buf[ 5];
89   salt_buf1[2] = salt_bufs[salt_pos].salt_buf[ 6];
90   salt_buf1[3] = salt_bufs[salt_pos].salt_buf[ 7];
91
92   u32 salt_buf2[4];
93
94   salt_buf2[0] = 0;
95   salt_buf2[1] = 0;
96   salt_buf2[2] = 0;
97   salt_buf2[3] = 0;
98
99   u32 salt_buf3[4];
100
101   salt_buf3[0] = 0;
102   salt_buf3[1] = 0;
103   salt_buf3[2] = 0;
104   salt_buf3[3] = 0;
105
106   const u32 salt_len = salt_bufs[salt_pos].salt_len;
107
108   /**
109    * loop
110    */
111
112   for (u32 il_pos = 0; il_pos < combs_cnt; il_pos++)
113   {
114     const u32 pw_r_len = combs_buf[il_pos].pw_len;
115
116     const u32 pw_len = pw_l_len + pw_r_len;
117
118     u32 wordr0[4];
119
120     wordr0[0] = combs_buf[il_pos].i[0];
121     wordr0[1] = combs_buf[il_pos].i[1];
122     wordr0[2] = combs_buf[il_pos].i[2];
123     wordr0[3] = combs_buf[il_pos].i[3];
124
125     u32 wordr1[4];
126
127     wordr1[0] = combs_buf[il_pos].i[4];
128     wordr1[1] = combs_buf[il_pos].i[5];
129     wordr1[2] = combs_buf[il_pos].i[6];
130     wordr1[3] = combs_buf[il_pos].i[7];
131
132     u32 wordr2[4];
133
134     wordr2[0] = 0;
135     wordr2[1] = 0;
136     wordr2[2] = 0;
137     wordr2[3] = 0;
138
139     u32 wordr3[4];
140
141     wordr3[0] = 0;
142     wordr3[1] = 0;
143     wordr3[2] = 0;
144     wordr3[3] = 0;
145
146     if (combs_mode == COMBINATOR_MODE_BASE_LEFT)
147     {
148       switch_buffer_by_offset (wordr0, wordr1, wordr2, wordr3, pw_l_len);
149     }
150
151     u32 w0_t[4];
152
153     w0_t[0] = wordl0[0] | wordr0[0];
154     w0_t[1] = wordl0[1] | wordr0[1];
155     w0_t[2] = wordl0[2] | wordr0[2];
156     w0_t[3] = wordl0[3] | wordr0[3];
157
158     u32 w1_t[4];
159
160     w1_t[0] = wordl1[0] | wordr1[0];
161     w1_t[1] = wordl1[1] | wordr1[1];
162     w1_t[2] = wordl1[2] | wordr1[2];
163     w1_t[3] = wordl1[3] | wordr1[3];
164
165     u32 w2_t[4];
166
167     w2_t[0] = wordl2[0] | wordr2[0];
168     w2_t[1] = wordl2[1] | wordr2[1];
169     w2_t[2] = wordl2[2] | wordr2[2];
170     w2_t[3] = wordl2[3] | wordr2[3];
171
172     u32 w3_t[4];
173
174     w3_t[0] = wordl3[0] | wordr3[0];
175     w3_t[1] = wordl3[1] | wordr3[1];
176     w3_t[2] = 0;
177     w3_t[3] = 0;
178
179     /**
180      * prepend salt
181      */
182
183     switch_buffer_by_offset (w0_t, w1_t, w2_t, w3_t, salt_len);
184
185     w0_t[0] |= salt_buf0[0];
186     w0_t[1] |= salt_buf0[1];
187     w0_t[2] |= salt_buf0[2];
188     w0_t[3] |= salt_buf0[3];
189     w1_t[0] |= salt_buf1[0];
190     w1_t[1] |= salt_buf1[1];
191     w1_t[2] |= salt_buf1[2];
192     w1_t[3] |= salt_buf1[3];
193     w2_t[0] |= salt_buf2[0];
194     w2_t[1] |= salt_buf2[1];
195     w2_t[2] |= salt_buf2[2];
196     w2_t[3] |= salt_buf2[3];
197     w3_t[0] |= salt_buf3[0];
198     w3_t[1] |= salt_buf3[1];
199     w3_t[2] |= salt_buf3[2];
200     w3_t[3] |= salt_buf3[3];
201
202     /**
203      * append salt
204      */
205
206     u32 s0[4];
207
208     s0[0] = salt_buf0[0];
209     s0[1] = salt_buf0[1];
210     s0[2] = salt_buf0[2];
211     s0[3] = salt_buf0[3];
212
213     u32 s1[4];
214
215     s1[0] = salt_buf1[0];
216     s1[1] = salt_buf1[1];
217     s1[2] = salt_buf1[2];
218     s1[3] = salt_buf1[3];
219
220     u32 s2[4];
221
222     s2[0] = 0;
223     s2[1] = 0;
224     s2[2] = 0;
225     s2[3] = 0;
226
227     u32 s3[4];
228
229     s3[0] = 0;
230     s3[1] = 0;
231     s3[2] = 0;
232     s3[3] = 0;
233
234     switch_buffer_by_offset (s0, s1, s2, s3, salt_len + pw_len);
235
236     w0_t[0] |= s0[0];
237     w0_t[1] |= s0[1];
238     w0_t[2] |= s0[2];
239     w0_t[3] |= s0[3];
240     w1_t[0] |= s1[0];
241     w1_t[1] |= s1[1];
242     w1_t[2] |= s1[2];
243     w1_t[3] |= s1[3];
244     w2_t[0] |= s2[0];
245     w2_t[1] |= s2[1];
246     w2_t[2] |= s2[2];
247     w2_t[3] |= s2[3];
248     w3_t[0] |= s3[0];
249     w3_t[1] |= s3[1];
250     w3_t[2] |= s3[2];
251     w3_t[3] |= s3[3];
252
253     const u32 pw_salt_len = salt_len + pw_len + salt_len;
254
255     append_0x80_4x4 (w0_t, w1_t, w2_t, w3_t, pw_salt_len);
256
257     u32 w0 = swap32 (w0_t[0]);
258     u32 w1 = swap32 (w0_t[1]);
259     u32 w2 = swap32 (w0_t[2]);
260     u32 w3 = swap32 (w0_t[3]);
261     u32 w4 = swap32 (w1_t[0]);
262     u32 w5 = swap32 (w1_t[1]);
263     u32 w6 = swap32 (w1_t[2]);
264     u32 w7 = swap32 (w1_t[3]);
265     u32 w8 = swap32 (w2_t[0]);
266     u32 w9 = swap32 (w2_t[1]);
267     u32 wa = swap32 (w2_t[2]);
268     u32 wb = swap32 (w2_t[3]);
269     u32 wc = swap32 (w3_t[0]);
270     u32 wd = swap32 (w3_t[1]);
271     u32 we = 0;
272     u32 wf = pw_salt_len * 8;
273
274     /**
275      * sha1
276      */
277
278     u32 a = SHA1M_A;
279     u32 b = SHA1M_B;
280     u32 c = SHA1M_C;
281     u32 d = SHA1M_D;
282     u32 e = SHA1M_E;
283
284     #undef K
285     #define K SHA1C00
286
287     SHA1_STEP (SHA1_F0o, a, b, c, d, e, w0);
288     SHA1_STEP (SHA1_F0o, e, a, b, c, d, w1);
289     SHA1_STEP (SHA1_F0o, d, e, a, b, c, w2);
290     SHA1_STEP (SHA1_F0o, c, d, e, a, b, w3);
291     SHA1_STEP (SHA1_F0o, b, c, d, e, a, w4);
292     SHA1_STEP (SHA1_F0o, a, b, c, d, e, w5);
293     SHA1_STEP (SHA1_F0o, e, a, b, c, d, w6);
294     SHA1_STEP (SHA1_F0o, d, e, a, b, c, w7);
295     SHA1_STEP (SHA1_F0o, c, d, e, a, b, w8);
296     SHA1_STEP (SHA1_F0o, b, c, d, e, a, w9);
297     SHA1_STEP (SHA1_F0o, a, b, c, d, e, wa);
298     SHA1_STEP (SHA1_F0o, e, a, b, c, d, wb);
299     SHA1_STEP (SHA1_F0o, d, e, a, b, c, wc);
300     SHA1_STEP (SHA1_F0o, c, d, e, a, b, wd);
301     SHA1_STEP (SHA1_F0o, b, c, d, e, a, we);
302     SHA1_STEP (SHA1_F0o, a, b, c, d, e, wf);
303     w0 = rotl32 ((wd ^ w8 ^ w2 ^ w0), 1u); SHA1_STEP (SHA1_F0o, e, a, b, c, d, w0);
304     w1 = rotl32 ((we ^ w9 ^ w3 ^ w1), 1u); SHA1_STEP (SHA1_F0o, d, e, a, b, c, w1);
305     w2 = rotl32 ((wf ^ wa ^ w4 ^ w2), 1u); SHA1_STEP (SHA1_F0o, c, d, e, a, b, w2);
306     w3 = rotl32 ((w0 ^ wb ^ w5 ^ w3), 1u); SHA1_STEP (SHA1_F0o, b, c, d, e, a, w3);
307
308     #undef K
309     #define K SHA1C01
310
311     w4 = rotl32 ((w1 ^ wc ^ w6 ^ w4), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w4);
312     w5 = rotl32 ((w2 ^ wd ^ w7 ^ w5), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w5);
313     w6 = rotl32 ((w3 ^ we ^ w8 ^ w6), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w6);
314     w7 = rotl32 ((w4 ^ wf ^ w9 ^ w7), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w7);
315     w8 = rotl32 ((w5 ^ w0 ^ wa ^ w8), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w8);
316     w9 = rotl32 ((w6 ^ w1 ^ wb ^ w9), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w9);
317     wa = rotl32 ((w7 ^ w2 ^ wc ^ wa), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wa);
318     wb = rotl32 ((w8 ^ w3 ^ wd ^ wb), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wb);
319     wc = rotl32 ((w9 ^ w4 ^ we ^ wc), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wc);
320     wd = rotl32 ((wa ^ w5 ^ wf ^ wd), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wd);
321     we = rotl32 ((wb ^ w6 ^ w0 ^ we), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, we);
322     wf = rotl32 ((wc ^ w7 ^ w1 ^ wf), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wf);
323     w0 = rotl32 ((wd ^ w8 ^ w2 ^ w0), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w0);
324     w1 = rotl32 ((we ^ w9 ^ w3 ^ w1), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w1);
325     w2 = rotl32 ((wf ^ wa ^ w4 ^ w2), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w2);
326     w3 = rotl32 ((w0 ^ wb ^ w5 ^ w3), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w3);
327     w4 = rotl32 ((w1 ^ wc ^ w6 ^ w4), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w4);
328     w5 = rotl32 ((w2 ^ wd ^ w7 ^ w5), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w5);
329     w6 = rotl32 ((w3 ^ we ^ w8 ^ w6), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w6);
330     w7 = rotl32 ((w4 ^ wf ^ w9 ^ w7), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w7);
331
332     #undef K
333     #define K SHA1C02
334
335     w8 = rotl32 ((w5 ^ w0 ^ wa ^ w8), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w8);
336     w9 = rotl32 ((w6 ^ w1 ^ wb ^ w9), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w9);
337     wa = rotl32 ((w7 ^ w2 ^ wc ^ wa), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wa);
338     wb = rotl32 ((w8 ^ w3 ^ wd ^ wb), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wb);
339     wc = rotl32 ((w9 ^ w4 ^ we ^ wc), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wc);
340     wd = rotl32 ((wa ^ w5 ^ wf ^ wd), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, wd);
341     we = rotl32 ((wb ^ w6 ^ w0 ^ we), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, we);
342     wf = rotl32 ((wc ^ w7 ^ w1 ^ wf), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wf);
343     w0 = rotl32 ((wd ^ w8 ^ w2 ^ w0), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w0);
344     w1 = rotl32 ((we ^ w9 ^ w3 ^ w1), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w1);
345     w2 = rotl32 ((wf ^ wa ^ w4 ^ w2), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w2);
346     w3 = rotl32 ((w0 ^ wb ^ w5 ^ w3), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w3);
347     w4 = rotl32 ((w1 ^ wc ^ w6 ^ w4), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w4);
348     w5 = rotl32 ((w2 ^ wd ^ w7 ^ w5), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w5);
349     w6 = rotl32 ((w3 ^ we ^ w8 ^ w6), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w6);
350     w7 = rotl32 ((w4 ^ wf ^ w9 ^ w7), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w7);
351     w8 = rotl32 ((w5 ^ w0 ^ wa ^ w8), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w8);
352     w9 = rotl32 ((w6 ^ w1 ^ wb ^ w9), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w9);
353     wa = rotl32 ((w7 ^ w2 ^ wc ^ wa), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wa);
354     wb = rotl32 ((w8 ^ w3 ^ wd ^ wb), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wb);
355
356     #undef K
357     #define K SHA1C03
358
359     wc = rotl32 ((w9 ^ w4 ^ we ^ wc), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wc);
360     wd = rotl32 ((wa ^ w5 ^ wf ^ wd), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wd);
361     we = rotl32 ((wb ^ w6 ^ w0 ^ we), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, we);
362     wf = rotl32 ((wc ^ w7 ^ w1 ^ wf), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wf);
363     w0 = rotl32 ((wd ^ w8 ^ w2 ^ w0), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w0);
364     w1 = rotl32 ((we ^ w9 ^ w3 ^ w1), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w1);
365     w2 = rotl32 ((wf ^ wa ^ w4 ^ w2), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w2);
366     w3 = rotl32 ((w0 ^ wb ^ w5 ^ w3), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w3);
367     w4 = rotl32 ((w1 ^ wc ^ w6 ^ w4), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w4);
368     w5 = rotl32 ((w2 ^ wd ^ w7 ^ w5), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w5);
369     w6 = rotl32 ((w3 ^ we ^ w8 ^ w6), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w6);
370     w7 = rotl32 ((w4 ^ wf ^ w9 ^ w7), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w7);
371     w8 = rotl32 ((w5 ^ w0 ^ wa ^ w8), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w8);
372     w9 = rotl32 ((w6 ^ w1 ^ wb ^ w9), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w9);
373     wa = rotl32 ((w7 ^ w2 ^ wc ^ wa), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wa);
374     wb = rotl32 ((w8 ^ w3 ^ wd ^ wb), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wb);
375     wc = rotl32 ((w9 ^ w4 ^ we ^ wc), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wc);
376     wd = rotl32 ((wa ^ w5 ^ wf ^ wd), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wd);
377     we = rotl32 ((wb ^ w6 ^ w0 ^ we), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, we);
378     wf = rotl32 ((wc ^ w7 ^ w1 ^ wf), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wf);
379
380     const u32 r0 = d;
381     const u32 r1 = e;
382     const u32 r2 = c;
383     const u32 r3 = b;
384
385     #include COMPARE_M
386   }
387 }
388
389 __kernel void m04900_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 combs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
390 {
391 }
392
393 __kernel void m04900_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 combs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
394 {
395 }
396
397 __kernel void m04900_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 combs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
398 {
399   /**
400    * modifier
401    */
402
403   const u32 lid = get_local_id (0);
404
405   /**
406    * base
407    */
408
409   const u32 gid = get_global_id (0);
410
411   if (gid >= gid_max) return;
412
413   u32 wordl0[4];
414
415   wordl0[0] = pws[gid].i[ 0];
416   wordl0[1] = pws[gid].i[ 1];
417   wordl0[2] = pws[gid].i[ 2];
418   wordl0[3] = pws[gid].i[ 3];
419
420   u32 wordl1[4];
421
422   wordl1[0] = pws[gid].i[ 4];
423   wordl1[1] = pws[gid].i[ 5];
424   wordl1[2] = pws[gid].i[ 6];
425   wordl1[3] = pws[gid].i[ 7];
426
427   u32 wordl2[4];
428
429   wordl2[0] = 0;
430   wordl2[1] = 0;
431   wordl2[2] = 0;
432   wordl2[3] = 0;
433
434   u32 wordl3[4];
435
436   wordl3[0] = 0;
437   wordl3[1] = 0;
438   wordl3[2] = 0;
439   wordl3[3] = 0;
440
441   const u32 pw_l_len = pws[gid].pw_len;
442
443   if (combs_mode == COMBINATOR_MODE_BASE_RIGHT)
444   {
445     switch_buffer_by_offset (wordl0, wordl1, wordl2, wordl3, combs_buf[0].pw_len);
446   }
447
448   /**
449    * salt
450    */
451
452   u32 salt_buf0[4];
453
454   salt_buf0[0] = salt_bufs[salt_pos].salt_buf[ 0];
455   salt_buf0[1] = salt_bufs[salt_pos].salt_buf[ 1];
456   salt_buf0[2] = salt_bufs[salt_pos].salt_buf[ 2];
457   salt_buf0[3] = salt_bufs[salt_pos].salt_buf[ 3];
458
459   u32 salt_buf1[4];
460
461   salt_buf1[0] = salt_bufs[salt_pos].salt_buf[ 4];
462   salt_buf1[1] = salt_bufs[salt_pos].salt_buf[ 5];
463   salt_buf1[2] = salt_bufs[salt_pos].salt_buf[ 6];
464   salt_buf1[3] = salt_bufs[salt_pos].salt_buf[ 7];
465
466   u32 salt_buf2[4];
467
468   salt_buf2[0] = 0;
469   salt_buf2[1] = 0;
470   salt_buf2[2] = 0;
471   salt_buf2[3] = 0;
472
473   u32 salt_buf3[4];
474
475   salt_buf3[0] = 0;
476   salt_buf3[1] = 0;
477   salt_buf3[2] = 0;
478   salt_buf3[3] = 0;
479
480   const u32 salt_len = salt_bufs[salt_pos].salt_len;
481
482   /**
483    * digest
484    */
485
486   const u32 search[4] =
487   {
488     digests_buf[digests_offset].digest_buf[DGST_R0],
489     digests_buf[digests_offset].digest_buf[DGST_R1],
490     digests_buf[digests_offset].digest_buf[DGST_R2],
491     digests_buf[digests_offset].digest_buf[DGST_R3]
492   };
493
494   /**
495    * reverse
496    */
497
498   const u32 e_rev = rotl32 (search[1], 2u);
499
500   /**
501    * loop
502    */
503
504   for (u32 il_pos = 0; il_pos < combs_cnt; il_pos++)
505   {
506     const u32 pw_r_len = combs_buf[il_pos].pw_len;
507
508     const u32 pw_len = pw_l_len + pw_r_len;
509
510     u32 wordr0[4];
511
512     wordr0[0] = combs_buf[il_pos].i[0];
513     wordr0[1] = combs_buf[il_pos].i[1];
514     wordr0[2] = combs_buf[il_pos].i[2];
515     wordr0[3] = combs_buf[il_pos].i[3];
516
517     u32 wordr1[4];
518
519     wordr1[0] = combs_buf[il_pos].i[4];
520     wordr1[1] = combs_buf[il_pos].i[5];
521     wordr1[2] = combs_buf[il_pos].i[6];
522     wordr1[3] = combs_buf[il_pos].i[7];
523
524     u32 wordr2[4];
525
526     wordr2[0] = 0;
527     wordr2[1] = 0;
528     wordr2[2] = 0;
529     wordr2[3] = 0;
530
531     u32 wordr3[4];
532
533     wordr3[0] = 0;
534     wordr3[1] = 0;
535     wordr3[2] = 0;
536     wordr3[3] = 0;
537
538     if (combs_mode == COMBINATOR_MODE_BASE_LEFT)
539     {
540       switch_buffer_by_offset (wordr0, wordr1, wordr2, wordr3, pw_l_len);
541     }
542
543     u32 w0_t[4];
544
545     w0_t[0] = wordl0[0] | wordr0[0];
546     w0_t[1] = wordl0[1] | wordr0[1];
547     w0_t[2] = wordl0[2] | wordr0[2];
548     w0_t[3] = wordl0[3] | wordr0[3];
549
550     u32 w1_t[4];
551
552     w1_t[0] = wordl1[0] | wordr1[0];
553     w1_t[1] = wordl1[1] | wordr1[1];
554     w1_t[2] = wordl1[2] | wordr1[2];
555     w1_t[3] = wordl1[3] | wordr1[3];
556
557     u32 w2_t[4];
558
559     w2_t[0] = wordl2[0] | wordr2[0];
560     w2_t[1] = wordl2[1] | wordr2[1];
561     w2_t[2] = wordl2[2] | wordr2[2];
562     w2_t[3] = wordl2[3] | wordr2[3];
563
564     u32 w3_t[4];
565
566     w3_t[0] = wordl3[0] | wordr3[0];
567     w3_t[1] = wordl3[1] | wordr3[1];
568     w3_t[2] = 0;
569     w3_t[3] = 0;
570
571     /**
572      * prepend salt
573      */
574
575     switch_buffer_by_offset (w0_t, w1_t, w2_t, w3_t, salt_len);
576
577     w0_t[0] |= salt_buf0[0];
578     w0_t[1] |= salt_buf0[1];
579     w0_t[2] |= salt_buf0[2];
580     w0_t[3] |= salt_buf0[3];
581     w1_t[0] |= salt_buf1[0];
582     w1_t[1] |= salt_buf1[1];
583     w1_t[2] |= salt_buf1[2];
584     w1_t[3] |= salt_buf1[3];
585     w2_t[0] |= salt_buf2[0];
586     w2_t[1] |= salt_buf2[1];
587     w2_t[2] |= salt_buf2[2];
588     w2_t[3] |= salt_buf2[3];
589     w3_t[0] |= salt_buf3[0];
590     w3_t[1] |= salt_buf3[1];
591     w3_t[2] |= salt_buf3[2];
592     w3_t[3] |= salt_buf3[3];
593
594     /**
595      * append salt
596      */
597
598     u32 s0[4];
599
600     s0[0] = salt_buf0[0];
601     s0[1] = salt_buf0[1];
602     s0[2] = salt_buf0[2];
603     s0[3] = salt_buf0[3];
604
605     u32 s1[4];
606
607     s1[0] = salt_buf1[0];
608     s1[1] = salt_buf1[1];
609     s1[2] = salt_buf1[2];
610     s1[3] = salt_buf1[3];
611
612     u32 s2[4];
613
614     s2[0] = 0;
615     s2[1] = 0;
616     s2[2] = 0;
617     s2[3] = 0;
618
619     u32 s3[4];
620
621     s3[0] = 0;
622     s3[1] = 0;
623     s3[2] = 0;
624     s3[3] = 0;
625
626     switch_buffer_by_offset (s0, s1, s2, s3, salt_len + pw_len);
627
628     w0_t[0] |= s0[0];
629     w0_t[1] |= s0[1];
630     w0_t[2] |= s0[2];
631     w0_t[3] |= s0[3];
632     w1_t[0] |= s1[0];
633     w1_t[1] |= s1[1];
634     w1_t[2] |= s1[2];
635     w1_t[3] |= s1[3];
636     w2_t[0] |= s2[0];
637     w2_t[1] |= s2[1];
638     w2_t[2] |= s2[2];
639     w2_t[3] |= s2[3];
640     w3_t[0] |= s3[0];
641     w3_t[1] |= s3[1];
642     w3_t[2] |= s3[2];
643     w3_t[3] |= s3[3];
644
645     const u32 pw_salt_len = salt_len + pw_len + salt_len;
646
647     append_0x80_4x4 (w0_t, w1_t, w2_t, w3_t, pw_salt_len);
648
649     u32 w0 = swap32 (w0_t[0]);
650     u32 w1 = swap32 (w0_t[1]);
651     u32 w2 = swap32 (w0_t[2]);
652     u32 w3 = swap32 (w0_t[3]);
653     u32 w4 = swap32 (w1_t[0]);
654     u32 w5 = swap32 (w1_t[1]);
655     u32 w6 = swap32 (w1_t[2]);
656     u32 w7 = swap32 (w1_t[3]);
657     u32 w8 = swap32 (w2_t[0]);
658     u32 w9 = swap32 (w2_t[1]);
659     u32 wa = swap32 (w2_t[2]);
660     u32 wb = swap32 (w2_t[3]);
661     u32 wc = swap32 (w3_t[0]);
662     u32 wd = swap32 (w3_t[1]);
663     u32 we = 0;
664     u32 wf = pw_salt_len * 8;
665
666     /**
667      * sha1
668      */
669
670     u32 a = SHA1M_A;
671     u32 b = SHA1M_B;
672     u32 c = SHA1M_C;
673     u32 d = SHA1M_D;
674     u32 e = SHA1M_E;
675
676     #undef K
677     #define K SHA1C00
678
679     SHA1_STEP (SHA1_F0o, a, b, c, d, e, w0);
680     SHA1_STEP (SHA1_F0o, e, a, b, c, d, w1);
681     SHA1_STEP (SHA1_F0o, d, e, a, b, c, w2);
682     SHA1_STEP (SHA1_F0o, c, d, e, a, b, w3);
683     SHA1_STEP (SHA1_F0o, b, c, d, e, a, w4);
684     SHA1_STEP (SHA1_F0o, a, b, c, d, e, w5);
685     SHA1_STEP (SHA1_F0o, e, a, b, c, d, w6);
686     SHA1_STEP (SHA1_F0o, d, e, a, b, c, w7);
687     SHA1_STEP (SHA1_F0o, c, d, e, a, b, w8);
688     SHA1_STEP (SHA1_F0o, b, c, d, e, a, w9);
689     SHA1_STEP (SHA1_F0o, a, b, c, d, e, wa);
690     SHA1_STEP (SHA1_F0o, e, a, b, c, d, wb);
691     SHA1_STEP (SHA1_F0o, d, e, a, b, c, wc);
692     SHA1_STEP (SHA1_F0o, c, d, e, a, b, wd);
693     SHA1_STEP (SHA1_F0o, b, c, d, e, a, we);
694     SHA1_STEP (SHA1_F0o, a, b, c, d, e, wf);
695     w0 = rotl32 ((wd ^ w8 ^ w2 ^ w0), 1u); SHA1_STEP (SHA1_F0o, e, a, b, c, d, w0);
696     w1 = rotl32 ((we ^ w9 ^ w3 ^ w1), 1u); SHA1_STEP (SHA1_F0o, d, e, a, b, c, w1);
697     w2 = rotl32 ((wf ^ wa ^ w4 ^ w2), 1u); SHA1_STEP (SHA1_F0o, c, d, e, a, b, w2);
698     w3 = rotl32 ((w0 ^ wb ^ w5 ^ w3), 1u); SHA1_STEP (SHA1_F0o, b, c, d, e, a, w3);
699
700     #undef K
701     #define K SHA1C01
702
703     w4 = rotl32 ((w1 ^ wc ^ w6 ^ w4), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w4);
704     w5 = rotl32 ((w2 ^ wd ^ w7 ^ w5), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w5);
705     w6 = rotl32 ((w3 ^ we ^ w8 ^ w6), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w6);
706     w7 = rotl32 ((w4 ^ wf ^ w9 ^ w7), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w7);
707     w8 = rotl32 ((w5 ^ w0 ^ wa ^ w8), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w8);
708     w9 = rotl32 ((w6 ^ w1 ^ wb ^ w9), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w9);
709     wa = rotl32 ((w7 ^ w2 ^ wc ^ wa), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wa);
710     wb = rotl32 ((w8 ^ w3 ^ wd ^ wb), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wb);
711     wc = rotl32 ((w9 ^ w4 ^ we ^ wc), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wc);
712     wd = rotl32 ((wa ^ w5 ^ wf ^ wd), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wd);
713     we = rotl32 ((wb ^ w6 ^ w0 ^ we), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, we);
714     wf = rotl32 ((wc ^ w7 ^ w1 ^ wf), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wf);
715     w0 = rotl32 ((wd ^ w8 ^ w2 ^ w0), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w0);
716     w1 = rotl32 ((we ^ w9 ^ w3 ^ w1), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w1);
717     w2 = rotl32 ((wf ^ wa ^ w4 ^ w2), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w2);
718     w3 = rotl32 ((w0 ^ wb ^ w5 ^ w3), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w3);
719     w4 = rotl32 ((w1 ^ wc ^ w6 ^ w4), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w4);
720     w5 = rotl32 ((w2 ^ wd ^ w7 ^ w5), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w5);
721     w6 = rotl32 ((w3 ^ we ^ w8 ^ w6), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w6);
722     w7 = rotl32 ((w4 ^ wf ^ w9 ^ w7), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w7);
723
724     #undef K
725     #define K SHA1C02
726
727     w8 = rotl32 ((w5 ^ w0 ^ wa ^ w8), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w8);
728     w9 = rotl32 ((w6 ^ w1 ^ wb ^ w9), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w9);
729     wa = rotl32 ((w7 ^ w2 ^ wc ^ wa), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wa);
730     wb = rotl32 ((w8 ^ w3 ^ wd ^ wb), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wb);
731     wc = rotl32 ((w9 ^ w4 ^ we ^ wc), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wc);
732     wd = rotl32 ((wa ^ w5 ^ wf ^ wd), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, wd);
733     we = rotl32 ((wb ^ w6 ^ w0 ^ we), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, we);
734     wf = rotl32 ((wc ^ w7 ^ w1 ^ wf), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, wf);
735     w0 = rotl32 ((wd ^ w8 ^ w2 ^ w0), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w0);
736     w1 = rotl32 ((we ^ w9 ^ w3 ^ w1), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w1);
737     w2 = rotl32 ((wf ^ wa ^ w4 ^ w2), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w2);
738     w3 = rotl32 ((w0 ^ wb ^ w5 ^ w3), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w3);
739     w4 = rotl32 ((w1 ^ wc ^ w6 ^ w4), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w4);
740     w5 = rotl32 ((w2 ^ wd ^ w7 ^ w5), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, w5);
741     w6 = rotl32 ((w3 ^ we ^ w8 ^ w6), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, w6);
742     w7 = rotl32 ((w4 ^ wf ^ w9 ^ w7), 1u); SHA1_STEP (SHA1_F2o, a, b, c, d, e, w7);
743     w8 = rotl32 ((w5 ^ w0 ^ wa ^ w8), 1u); SHA1_STEP (SHA1_F2o, e, a, b, c, d, w8);
744     w9 = rotl32 ((w6 ^ w1 ^ wb ^ w9), 1u); SHA1_STEP (SHA1_F2o, d, e, a, b, c, w9);
745     wa = rotl32 ((w7 ^ w2 ^ wc ^ wa), 1u); SHA1_STEP (SHA1_F2o, c, d, e, a, b, wa);
746     wb = rotl32 ((w8 ^ w3 ^ wd ^ wb), 1u); SHA1_STEP (SHA1_F2o, b, c, d, e, a, wb);
747
748     #undef K
749     #define K SHA1C03
750
751     wc = rotl32 ((w9 ^ w4 ^ we ^ wc), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wc);
752     wd = rotl32 ((wa ^ w5 ^ wf ^ wd), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wd);
753     we = rotl32 ((wb ^ w6 ^ w0 ^ we), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, we);
754     wf = rotl32 ((wc ^ w7 ^ w1 ^ wf), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, wf);
755     w0 = rotl32 ((wd ^ w8 ^ w2 ^ w0), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w0);
756     w1 = rotl32 ((we ^ w9 ^ w3 ^ w1), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w1);
757     w2 = rotl32 ((wf ^ wa ^ w4 ^ w2), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w2);
758     w3 = rotl32 ((w0 ^ wb ^ w5 ^ w3), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w3);
759     w4 = rotl32 ((w1 ^ wc ^ w6 ^ w4), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w4);
760     w5 = rotl32 ((w2 ^ wd ^ w7 ^ w5), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, w5);
761     w6 = rotl32 ((w3 ^ we ^ w8 ^ w6), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, w6);
762     w7 = rotl32 ((w4 ^ wf ^ w9 ^ w7), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, w7);
763     w8 = rotl32 ((w5 ^ w0 ^ wa ^ w8), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, w8);
764     w9 = rotl32 ((w6 ^ w1 ^ wb ^ w9), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, w9);
765     wa = rotl32 ((w7 ^ w2 ^ wc ^ wa), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wa);
766     wb = rotl32 ((w8 ^ w3 ^ wd ^ wb), 1u); SHA1_STEP (SHA1_F1, a, b, c, d, e, wb);
767
768     if (allx (e != e_rev)) continue;
769
770     wc = rotl32 ((w9 ^ w4 ^ we ^ wc), 1u); SHA1_STEP (SHA1_F1, e, a, b, c, d, wc);
771     wd = rotl32 ((wa ^ w5 ^ wf ^ wd), 1u); SHA1_STEP (SHA1_F1, d, e, a, b, c, wd);
772     we = rotl32 ((wb ^ w6 ^ w0 ^ we), 1u); SHA1_STEP (SHA1_F1, c, d, e, a, b, we);
773     wf = rotl32 ((wc ^ w7 ^ w1 ^ wf), 1u); SHA1_STEP (SHA1_F1, b, c, d, e, a, wf);
774
775     const u32 r0 = d;
776     const u32 r1 = e;
777     const u32 r2 = c;
778     const u32 r3 = b;
779
780     #include COMPARE_S
781   }
782 }
783
784 __kernel void m04900_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 combs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
785 {
786 }
787
788 __kernel void m04900_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 combs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
789 {
790 }