2 * Author......: Jens Steube <jens.steube@gmail.com>
8 #include "include/constants.h"
9 #include "include/kernel_vendor.h"
24 #include "include/kernel_functions.c"
26 #include "common_nv.c"
29 #define VECT_COMPARE_S "check_single_vect1_comp4.c"
30 #define VECT_COMPARE_M "check_multi_vect1_comp4.c"
34 #define VECT_COMPARE_S "check_single_vect2_comp4.c"
35 #define VECT_COMPARE_M "check_multi_vect2_comp4.c"
39 #define VECT_COMPARE_S "check_single_vect4_comp4.c"
40 #define VECT_COMPARE_M "check_multi_vect4_comp4.c"
44 #define KECCAK_ROUNDS 24
47 #define Theta1(s) (st[0 + s] ^ st[5 + s] ^ st[10 + s] ^ st[15 + s] ^ st[20 + s])
60 u32 j = keccakf_piln[s]; \
61 u32 k = keccakf_rotc[s]; \
63 st[j] = rotl64 (t, k); \
74 st[0 + s] ^= ~bc1 & bc2; \
75 st[1 + s] ^= ~bc2 & bc3; \
76 st[2 + s] ^= ~bc3 & bc4; \
77 st[3 + s] ^= ~bc4 & bc0; \
78 st[4 + s] ^= ~bc0 & bc1; \
81 __device__ __constant__ bf_t c_bfs[1024];
83 __device__ static void m05000m (u32x w0[4], u32x w1[4], u32x w2[4], u32x w3[4], const u32 pw_len, const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
89 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
90 const u32 lid = threadIdx.x;
96 const u64 keccakf_rndc[24] =
98 0x0000000000000001, 0x0000000000008082, 0x800000000000808a,
99 0x8000000080008000, 0x000000000000808b, 0x0000000080000001,
100 0x8000000080008081, 0x8000000000008009, 0x000000000000008a,
101 0x0000000000000088, 0x0000000080008009, 0x000000008000000a,
102 0x000000008000808b, 0x800000000000008b, 0x8000000000008089,
103 0x8000000000008003, 0x8000000000008002, 0x8000000000000080,
104 0x000000000000800a, 0x800000008000000a, 0x8000000080008081,
105 0x8000000000008080, 0x0000000080000001, 0x8000000080008008
108 const u32 keccakf_rotc[24] =
110 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14,
111 27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44
114 const u32 keccakf_piln[24] =
116 10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4,
117 15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1
121 * 0x80 keccak, very special
124 const u32 mdlen = salt_bufs[salt_pos].keccak_mdlen;
126 const u32 rsiz = 200 - (2 * mdlen);
128 const u32 add80w = (rsiz - 1) / 8;
136 for (u32 il_pos = 0; il_pos < bfs_cnt; il_pos++)
138 const u32 w0r = c_bfs[il_pos].i;
144 st[ 0] = (u64x) (w0[0]) | (u64x) (w0[1]) << 32;
145 st[ 1] = (u64x) (w0[2]) | (u64x) (w0[3]) << 32;
146 st[ 2] = (u64x) (w1[0]) | (u64x) (w1[1]) << 32;
147 st[ 3] = (u64x) (w1[2]) | (u64x) (w1[3]) << 32;
148 st[ 4] = (u64x) (w2[0]) | (u64x) (w2[1]) << 32;
149 st[ 5] = (u64x) (w2[2]) | (u64x) (w2[3]) << 32;
150 st[ 6] = (u64x) (w3[0]) | (u64x) (w3[1]) << 32;
151 st[ 7] = (u64x) (w3[2]) | (u64x) (w3[3]) << 32;
170 st[add80w] |= 0x8000000000000000;
174 for (round = 0; round < KECCAK_ROUNDS; round++)
178 u64x bc0 = Theta1 (0);
179 u64x bc1 = Theta1 (1);
180 u64x bc2 = Theta1 (2);
181 u64x bc3 = Theta1 (3);
182 u64x bc4 = Theta1 (4);
186 t = bc4 ^ rotl64 (bc1, 1); Theta2 (0);
187 t = bc0 ^ rotl64 (bc2, 1); Theta2 (1);
188 t = bc1 ^ rotl64 (bc3, 1); Theta2 (2);
189 t = bc2 ^ rotl64 (bc4, 1); Theta2 (3);
190 t = bc3 ^ rotl64 (bc0, 1); Theta2 (4);
231 st[0] ^= keccakf_rndc[round];
234 const u32x r0 = l32_from_64 (st[1]);
235 const u32x r1 = h32_from_64 (st[1]);
236 const u32x r2 = l32_from_64 (st[2]);
237 const u32x r3 = h32_from_64 (st[2]);
239 #include VECT_COMPARE_M
243 __device__ static void m05000s (u32x w0[4], u32x w1[4], u32x w2[4], u32x w3[4], const u32 pw_len, const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
249 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
250 const u32 lid = threadIdx.x;
256 const u32 search[4] =
258 digests_buf[digests_offset].digest_buf[DGST_R0],
259 digests_buf[digests_offset].digest_buf[DGST_R1],
260 digests_buf[digests_offset].digest_buf[DGST_R2],
261 digests_buf[digests_offset].digest_buf[DGST_R3]
268 const u64 keccakf_rndc[24] =
270 0x0000000000000001, 0x0000000000008082, 0x800000000000808a,
271 0x8000000080008000, 0x000000000000808b, 0x0000000080000001,
272 0x8000000080008081, 0x8000000000008009, 0x000000000000008a,
273 0x0000000000000088, 0x0000000080008009, 0x000000008000000a,
274 0x000000008000808b, 0x800000000000008b, 0x8000000000008089,
275 0x8000000000008003, 0x8000000000008002, 0x8000000000000080,
276 0x000000000000800a, 0x800000008000000a, 0x8000000080008081,
277 0x8000000000008080, 0x0000000080000001, 0x8000000080008008
280 const u32 keccakf_rotc[24] =
282 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14,
283 27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44
286 const u32 keccakf_piln[24] =
288 10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4,
289 15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1
293 * 0x80 keccak, very special
296 const u32 mdlen = salt_bufs[salt_pos].keccak_mdlen;
298 const u32 rsiz = 200 - (2 * mdlen);
300 const u32 add80w = (rsiz - 1) / 8;
308 for (u32 il_pos = 0; il_pos < bfs_cnt; il_pos++)
310 const u32 w0r = c_bfs[il_pos].i;
316 st[ 0] = (u64x) (w0[0]) | (u64x) (w0[1]) << 32;
317 st[ 1] = (u64x) (w0[2]) | (u64x) (w0[3]) << 32;
318 st[ 2] = (u64x) (w1[0]) | (u64x) (w1[1]) << 32;
319 st[ 3] = (u64x) (w1[2]) | (u64x) (w1[3]) << 32;
320 st[ 4] = (u64x) (w2[0]) | (u64x) (w2[1]) << 32;
321 st[ 5] = (u64x) (w2[2]) | (u64x) (w2[3]) << 32;
322 st[ 6] = (u64x) (w3[0]) | (u64x) (w3[1]) << 32;
323 st[ 7] = (u64x) (w3[2]) | (u64x) (w3[3]) << 32;
342 st[add80w] |= 0x8000000000000000;
346 for (round = 0; round < KECCAK_ROUNDS; round++)
350 u64x bc0 = Theta1 (0);
351 u64x bc1 = Theta1 (1);
352 u64x bc2 = Theta1 (2);
353 u64x bc3 = Theta1 (3);
354 u64x bc4 = Theta1 (4);
358 t = bc4 ^ rotl64 (bc1, 1); Theta2 (0);
359 t = bc0 ^ rotl64 (bc2, 1); Theta2 (1);
360 t = bc1 ^ rotl64 (bc3, 1); Theta2 (2);
361 t = bc2 ^ rotl64 (bc4, 1); Theta2 (3);
362 t = bc3 ^ rotl64 (bc0, 1); Theta2 (4);
403 st[0] ^= keccakf_rndc[round];
406 const u32x r0 = l32_from_64 (st[1]);
407 const u32x r1 = h32_from_64 (st[1]);
408 const u32x r2 = l32_from_64 (st[2]);
409 const u32x r3 = h32_from_64 (st[2]);
411 #include VECT_COMPARE_S
415 extern "C" __global__ void __launch_bounds__ (256, 1) m05000_m04 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
421 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
423 if (gid >= gid_max) return;
427 w0[0] = pws[gid].i[ 0];
428 w0[1] = pws[gid].i[ 1];
429 w0[2] = pws[gid].i[ 2];
430 w0[3] = pws[gid].i[ 3];
453 const u32 pw_len = pws[gid].pw_len;
459 m05000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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);
462 extern "C" __global__ void __launch_bounds__ (256, 1) m05000_m08 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
468 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
470 if (gid >= gid_max) return;
474 w0[0] = pws[gid].i[ 0];
475 w0[1] = pws[gid].i[ 1];
476 w0[2] = pws[gid].i[ 2];
477 w0[3] = pws[gid].i[ 3];
481 w1[0] = pws[gid].i[ 4];
482 w1[1] = pws[gid].i[ 5];
483 w1[2] = pws[gid].i[ 6];
484 w1[3] = pws[gid].i[ 7];
500 const u32 pw_len = pws[gid].pw_len;
506 m05000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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);
509 extern "C" __global__ void __launch_bounds__ (256, 1) m05000_m16 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
515 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
517 if (gid >= gid_max) return;
521 w0[0] = pws[gid].i[ 0];
522 w0[1] = pws[gid].i[ 1];
523 w0[2] = pws[gid].i[ 2];
524 w0[3] = pws[gid].i[ 3];
528 w1[0] = pws[gid].i[ 4];
529 w1[1] = pws[gid].i[ 5];
530 w1[2] = pws[gid].i[ 6];
531 w1[3] = pws[gid].i[ 7];
535 w2[0] = pws[gid].i[ 8];
536 w2[1] = pws[gid].i[ 9];
537 w2[2] = pws[gid].i[10];
538 w2[3] = pws[gid].i[11];
542 w3[0] = pws[gid].i[12];
543 w3[1] = pws[gid].i[13];
547 const u32 pw_len = pws[gid].pw_len;
553 m05000m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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);
556 extern "C" __global__ void __launch_bounds__ (256, 1) m05000_s04 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
562 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
564 if (gid >= gid_max) return;
568 w0[0] = pws[gid].i[ 0];
569 w0[1] = pws[gid].i[ 1];
570 w0[2] = pws[gid].i[ 2];
571 w0[3] = pws[gid].i[ 3];
594 const u32 pw_len = pws[gid].pw_len;
600 m05000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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);
603 extern "C" __global__ void __launch_bounds__ (256, 1) m05000_s08 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
609 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
611 if (gid >= gid_max) return;
615 w0[0] = pws[gid].i[ 0];
616 w0[1] = pws[gid].i[ 1];
617 w0[2] = pws[gid].i[ 2];
618 w0[3] = pws[gid].i[ 3];
622 w1[0] = pws[gid].i[ 4];
623 w1[1] = pws[gid].i[ 5];
624 w1[2] = pws[gid].i[ 6];
625 w1[3] = pws[gid].i[ 7];
641 const u32 pw_len = pws[gid].pw_len;
647 m05000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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);
650 extern "C" __global__ void __launch_bounds__ (256, 1) m05000_s16 (const pw_t *pws, const gpu_rule_t *rules_buf, const comb_t *combs_buf, const bf_t *bfs_buf, const void *tmps, void *hooks, const u32 *bitmaps_buf_s1_a, const u32 *bitmaps_buf_s1_b, const u32 *bitmaps_buf_s1_c, const u32 *bitmaps_buf_s1_d, const u32 *bitmaps_buf_s2_a, const u32 *bitmaps_buf_s2_b, const u32 *bitmaps_buf_s2_c, const u32 *bitmaps_buf_s2_d, plain_t *plains_buf, const digest_t *digests_buf, u32 *hashes_shown, const salt_t *salt_bufs, const void *esalt_bufs, u32 *d_return_buf, 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)
656 const u32 gid = (blockIdx.x * blockDim.x) + threadIdx.x;
658 if (gid >= gid_max) return;
662 w0[0] = pws[gid].i[ 0];
663 w0[1] = pws[gid].i[ 1];
664 w0[2] = pws[gid].i[ 2];
665 w0[3] = pws[gid].i[ 3];
669 w1[0] = pws[gid].i[ 4];
670 w1[1] = pws[gid].i[ 5];
671 w1[2] = pws[gid].i[ 6];
672 w1[3] = pws[gid].i[ 7];
676 w2[0] = pws[gid].i[ 8];
677 w2[1] = pws[gid].i[ 9];
678 w2[2] = pws[gid].i[10];
679 w2[3] = pws[gid].i[11];
683 w3[0] = pws[gid].i[12];
684 w3[1] = pws[gid].i[13];
688 const u32 pw_len = pws[gid].pw_len;
694 m05000s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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);