2 * Author......: Jens Steube <jens.steube@gmail.com>
10 #include "include/constants.h"
11 #include "include/kernel_vendor.h"
18 #include "include/kernel_functions.c"
19 #include "OpenCL/types_ocl.c"
20 #include "OpenCL/common.c"
21 #include "OpenCL/simd.c"
26 #define BOX(S,n,i) (S)[(n)][(i)]
28 #define BOX(S,n,i) (u64x) ((S)[(n)][(i).s0], (S)[(n)][(i).s1])
30 #define BOX(S,n,i) (u64x) ((S)[(n)][(i).s0], (S)[(n)][(i).s1], (S)[(n)][(i).s2], (S)[(n)][(i).s3])
32 #define BOX(S,n,i) (u64x) ((S)[(n)][(i).s0], (S)[(n)][(i).s1], (S)[(n)][(i).s2], (S)[(n)][(i).s3], (S)[(n)][(i).s4], (S)[(n)][(i).s5], (S)[(n)][(i).s6], (S)[(n)][(i).s7])
35 #define SBOG_LPSti64 \
36 BOX (s_sbob_sl64, 0, ((t[0] >> (i * 8)) & 0xff)) ^ \
37 BOX (s_sbob_sl64, 1, ((t[1] >> (i * 8)) & 0xff)) ^ \
38 BOX (s_sbob_sl64, 2, ((t[2] >> (i * 8)) & 0xff)) ^ \
39 BOX (s_sbob_sl64, 3, ((t[3] >> (i * 8)) & 0xff)) ^ \
40 BOX (s_sbob_sl64, 4, ((t[4] >> (i * 8)) & 0xff)) ^ \
41 BOX (s_sbob_sl64, 5, ((t[5] >> (i * 8)) & 0xff)) ^ \
42 BOX (s_sbob_sl64, 6, ((t[6] >> (i * 8)) & 0xff)) ^ \
43 BOX (s_sbob_sl64, 7, ((t[7] >> (i * 8)) & 0xff))
47 __constant u64 sbob_sl64[8][256] =
2115 __constant u64 sbob_rc64[12][8] =
2239 static void streebog_g (u64x h[8], const u64x m[8], __local u64 s_sbob_sl64[8][256])
2246 for (int i = 0; i < 8; i++)
2251 for (int i = 0; i < 8; i++)
2253 k[i] = SBOG_LPSti64;
2257 for (int i = 0; i < 8; i++)
2262 for (int r = 0; r < 12; r++)
2265 for (int i = 0; i < 8; i++)
2271 for (int i = 0; i < 8; i++)
2273 s[i] = SBOG_LPSti64;
2276 for (int i = 0; i < 8; i++)
2278 t[i] = k[i] ^ sbob_rc64[r][i];
2282 for (int i = 0; i < 8; i++)
2284 k[i] = SBOG_LPSti64;
2289 for (int i = 0; i < 8; i++)
2291 h[i] ^= s[i] ^ k[i] ^ m[i];
2295 static void m11800m (__local u64 s_sbob_sl64[8][256], u32 w[16], const u32 pw_len, __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 bfs_cnt, const u32 digests_cnt, const u32 digests_offset)
2301 const u32 gid = get_global_id (0);
2302 const u32 lid = get_local_id (0);
2310 for (u32 il_pos = 0; il_pos < bfs_cnt; il_pos += VECT_SIZE)
2312 const u32x w0r = w0r_create_bft (bfs_buf, il_pos);
2314 const u32x w0lr = w0l | w0r;
2317 * reverse message block
2322 m[0] = hl32_to_64 (w[15], w[14]);
2323 m[1] = hl32_to_64 (w[13], w[12]);
2324 m[2] = hl32_to_64 (w[11], w[10]);
2325 m[3] = hl32_to_64 (w[ 9], w[ 8]);
2326 m[4] = hl32_to_64 (w[ 7], w[ 6]);
2327 m[5] = hl32_to_64 (w[ 5], w[ 4]);
2328 m[6] = hl32_to_64 (w[ 3], w[ 2]);
2329 m[7] = hl32_to_64 (w[ 1], w0lr );
2331 m[0] = swap64 (m[0]);
2332 m[1] = swap64 (m[1]);
2333 m[2] = swap64 (m[2]);
2334 m[3] = swap64 (m[3]);
2335 m[4] = swap64 (m[4]);
2336 m[5] = swap64 (m[5]);
2337 m[6] = swap64 (m[6]);
2338 m[7] = swap64 (m[7]);
2340 // state buffer (hash)
2353 streebog_g (h, m, s_sbob_sl64);
2364 z[7] = swap64 ((u64) (pw_len * 8));
2366 streebog_g (h, z, s_sbob_sl64);
2367 streebog_g (h, m, s_sbob_sl64);
2369 const u32x r0 = l32_from_64 (h[0]);
2370 const u32x r1 = h32_from_64 (h[0]);
2371 const u32x r2 = l32_from_64 (h[1]);
2372 const u32x r3 = h32_from_64 (h[1]);
2374 COMPARE_M_SIMD (r0, r1, r2, r3);
2378 static void m11800s (__local u64 s_sbob_sl64[8][256], u32 w[16], const u32 pw_len, __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 bfs_cnt, const u32 digests_cnt, const u32 digests_offset)
2384 const u32 gid = get_global_id (0);
2385 const u32 lid = get_local_id (0);
2391 const u32 search[4] =
2393 digests_buf[digests_offset].digest_buf[DGST_R0],
2394 digests_buf[digests_offset].digest_buf[DGST_R1],
2395 digests_buf[digests_offset].digest_buf[DGST_R2],
2396 digests_buf[digests_offset].digest_buf[DGST_R3]
2405 for (u32 il_pos = 0; il_pos < bfs_cnt; il_pos += VECT_SIZE)
2407 const u32x w0r = w0r_create_bft (bfs_buf, il_pos);
2409 const u32x w0lr = w0l | w0r;
2412 * reverse message block
2417 m[0] = hl32_to_64 (w[15], w[14]);
2418 m[1] = hl32_to_64 (w[13], w[12]);
2419 m[2] = hl32_to_64 (w[11], w[10]);
2420 m[3] = hl32_to_64 (w[ 9], w[ 8]);
2421 m[4] = hl32_to_64 (w[ 7], w[ 6]);
2422 m[5] = hl32_to_64 (w[ 5], w[ 4]);
2423 m[6] = hl32_to_64 (w[ 3], w[ 2]);
2424 m[7] = hl32_to_64 (w[ 1], w0lr );
2426 m[0] = swap64 (m[0]);
2427 m[1] = swap64 (m[1]);
2428 m[2] = swap64 (m[2]);
2429 m[3] = swap64 (m[3]);
2430 m[4] = swap64 (m[4]);
2431 m[5] = swap64 (m[5]);
2432 m[6] = swap64 (m[6]);
2433 m[7] = swap64 (m[7]);
2435 // state buffer (hash)
2448 streebog_g (h, m, s_sbob_sl64);
2459 z[7] = swap64 ((u64) (pw_len * 8));
2461 streebog_g (h, z, s_sbob_sl64);
2462 streebog_g (h, m, s_sbob_sl64);
2464 const u32x r0 = l32_from_64 (h[0]);
2465 const u32x r1 = h32_from_64 (h[0]);
2466 const u32x r2 = l32_from_64 (h[1]);
2467 const u32x r3 = h32_from_64 (h[1]);
2469 COMPARE_S_SIMD (r0, r1, r2, r3);
2473 __kernel void m11800_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 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
2479 const u32 gid = get_global_id (0);
2480 const u32 lid = get_local_id (0);
2481 const u32 lsz = get_local_size (0);
2484 * shared lookup table
2487 __local u64 s_sbob_sl64[8][256];
2489 for (u32 i = lid; i < 256; i += lsz)
2491 s_sbob_sl64[0][i] = sbob_sl64[0][i];
2492 s_sbob_sl64[1][i] = sbob_sl64[1][i];
2493 s_sbob_sl64[2][i] = sbob_sl64[2][i];
2494 s_sbob_sl64[3][i] = sbob_sl64[3][i];
2495 s_sbob_sl64[4][i] = sbob_sl64[4][i];
2496 s_sbob_sl64[5][i] = sbob_sl64[5][i];
2497 s_sbob_sl64[6][i] = sbob_sl64[6][i];
2498 s_sbob_sl64[7][i] = sbob_sl64[7][i];
2501 barrier (CLK_LOCAL_MEM_FENCE);
2503 if (gid >= gid_max) return;
2511 w[ 0] = pws[gid].i[ 0];
2512 w[ 1] = pws[gid].i[ 1];
2513 w[ 2] = pws[gid].i[ 2];
2514 w[ 3] = pws[gid].i[ 3];
2528 const u32 pw_len = pws[gid].pw_len;
2534 m11800m (s_sbob_sl64, w, 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);
2537 __kernel void m11800_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 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
2543 const u32 gid = get_global_id (0);
2544 const u32 lid = get_local_id (0);
2545 const u32 lsz = get_local_size (0);
2548 * shared lookup table
2551 __local u64 s_sbob_sl64[8][256];
2553 for (u32 i = lid; i < 256; i += lsz)
2555 s_sbob_sl64[0][i] = sbob_sl64[0][i];
2556 s_sbob_sl64[1][i] = sbob_sl64[1][i];
2557 s_sbob_sl64[2][i] = sbob_sl64[2][i];
2558 s_sbob_sl64[3][i] = sbob_sl64[3][i];
2559 s_sbob_sl64[4][i] = sbob_sl64[4][i];
2560 s_sbob_sl64[5][i] = sbob_sl64[5][i];
2561 s_sbob_sl64[6][i] = sbob_sl64[6][i];
2562 s_sbob_sl64[7][i] = sbob_sl64[7][i];
2565 barrier (CLK_LOCAL_MEM_FENCE);
2567 if (gid >= gid_max) return;
2575 w[ 0] = pws[gid].i[ 0];
2576 w[ 1] = pws[gid].i[ 1];
2577 w[ 2] = pws[gid].i[ 2];
2578 w[ 3] = pws[gid].i[ 3];
2579 w[ 4] = pws[gid].i[ 4];
2580 w[ 5] = pws[gid].i[ 5];
2581 w[ 6] = pws[gid].i[ 6];
2582 w[ 7] = pws[gid].i[ 7];
2592 const u32 pw_len = pws[gid].pw_len;
2598 m11800m (s_sbob_sl64, w, 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);
2601 __kernel void m11800_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 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
2607 const u32 gid = get_global_id (0);
2608 const u32 lid = get_local_id (0);
2609 const u32 lsz = get_local_size (0);
2612 * shared lookup table
2615 __local u64 s_sbob_sl64[8][256];
2617 for (u32 i = lid; i < 256; i += lsz)
2619 s_sbob_sl64[0][i] = sbob_sl64[0][i];
2620 s_sbob_sl64[1][i] = sbob_sl64[1][i];
2621 s_sbob_sl64[2][i] = sbob_sl64[2][i];
2622 s_sbob_sl64[3][i] = sbob_sl64[3][i];
2623 s_sbob_sl64[4][i] = sbob_sl64[4][i];
2624 s_sbob_sl64[5][i] = sbob_sl64[5][i];
2625 s_sbob_sl64[6][i] = sbob_sl64[6][i];
2626 s_sbob_sl64[7][i] = sbob_sl64[7][i];
2629 barrier (CLK_LOCAL_MEM_FENCE);
2631 if (gid >= gid_max) return;
2639 w[ 0] = pws[gid].i[ 0];
2640 w[ 1] = pws[gid].i[ 1];
2641 w[ 2] = pws[gid].i[ 2];
2642 w[ 3] = pws[gid].i[ 3];
2643 w[ 4] = pws[gid].i[ 4];
2644 w[ 5] = pws[gid].i[ 5];
2645 w[ 6] = pws[gid].i[ 6];
2646 w[ 7] = pws[gid].i[ 7];
2647 w[ 8] = pws[gid].i[ 8];
2648 w[ 9] = pws[gid].i[ 9];
2649 w[10] = pws[gid].i[10];
2650 w[11] = pws[gid].i[11];
2651 w[12] = pws[gid].i[12];
2652 w[13] = pws[gid].i[13];
2653 w[14] = pws[gid].i[14];
2654 w[15] = pws[gid].i[15];
2656 const u32 pw_len = pws[gid].pw_len;
2662 m11800m (s_sbob_sl64, w, 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);
2665 __kernel void m11800_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 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
2671 const u32 gid = get_global_id (0);
2672 const u32 lid = get_local_id (0);
2673 const u32 lsz = get_local_size (0);
2676 * shared lookup table
2679 __local u64 s_sbob_sl64[8][256];
2681 for (u32 i = lid; i < 256; i += lsz)
2683 s_sbob_sl64[0][i] = sbob_sl64[0][i];
2684 s_sbob_sl64[1][i] = sbob_sl64[1][i];
2685 s_sbob_sl64[2][i] = sbob_sl64[2][i];
2686 s_sbob_sl64[3][i] = sbob_sl64[3][i];
2687 s_sbob_sl64[4][i] = sbob_sl64[4][i];
2688 s_sbob_sl64[5][i] = sbob_sl64[5][i];
2689 s_sbob_sl64[6][i] = sbob_sl64[6][i];
2690 s_sbob_sl64[7][i] = sbob_sl64[7][i];
2693 barrier (CLK_LOCAL_MEM_FENCE);
2695 if (gid >= gid_max) return;
2703 w[ 0] = pws[gid].i[ 0];
2704 w[ 1] = pws[gid].i[ 1];
2705 w[ 2] = pws[gid].i[ 2];
2706 w[ 3] = pws[gid].i[ 3];
2720 const u32 pw_len = pws[gid].pw_len;
2726 m11800s (s_sbob_sl64, w, 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);
2729 __kernel void m11800_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 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
2735 const u32 gid = get_global_id (0);
2736 const u32 lid = get_local_id (0);
2737 const u32 lsz = get_local_size (0);
2740 * shared lookup table
2743 __local u64 s_sbob_sl64[8][256];
2745 for (u32 i = lid; i < 256; i += lsz)
2747 s_sbob_sl64[0][i] = sbob_sl64[0][i];
2748 s_sbob_sl64[1][i] = sbob_sl64[1][i];
2749 s_sbob_sl64[2][i] = sbob_sl64[2][i];
2750 s_sbob_sl64[3][i] = sbob_sl64[3][i];
2751 s_sbob_sl64[4][i] = sbob_sl64[4][i];
2752 s_sbob_sl64[5][i] = sbob_sl64[5][i];
2753 s_sbob_sl64[6][i] = sbob_sl64[6][i];
2754 s_sbob_sl64[7][i] = sbob_sl64[7][i];
2757 barrier (CLK_LOCAL_MEM_FENCE);
2759 if (gid >= gid_max) return;
2767 w[ 0] = pws[gid].i[ 0];
2768 w[ 1] = pws[gid].i[ 1];
2769 w[ 2] = pws[gid].i[ 2];
2770 w[ 3] = pws[gid].i[ 3];
2771 w[ 4] = pws[gid].i[ 4];
2772 w[ 5] = pws[gid].i[ 5];
2773 w[ 6] = pws[gid].i[ 6];
2774 w[ 7] = pws[gid].i[ 7];
2784 const u32 pw_len = pws[gid].pw_len;
2790 m11800s (s_sbob_sl64, w, 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);
2793 __kernel void m11800_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 bfs_cnt, const u32 digests_cnt, const u32 digests_offset, const u32 combs_mode, const u32 gid_max)
2799 const u32 gid = get_global_id (0);
2800 const u32 lid = get_local_id (0);
2801 const u32 lsz = get_local_size (0);
2804 * shared lookup table
2807 __local u64 s_sbob_sl64[8][256];
2809 for (u32 i = lid; i < 256; i += lsz)
2811 s_sbob_sl64[0][i] = sbob_sl64[0][i];
2812 s_sbob_sl64[1][i] = sbob_sl64[1][i];
2813 s_sbob_sl64[2][i] = sbob_sl64[2][i];
2814 s_sbob_sl64[3][i] = sbob_sl64[3][i];
2815 s_sbob_sl64[4][i] = sbob_sl64[4][i];
2816 s_sbob_sl64[5][i] = sbob_sl64[5][i];
2817 s_sbob_sl64[6][i] = sbob_sl64[6][i];
2818 s_sbob_sl64[7][i] = sbob_sl64[7][i];
2821 barrier (CLK_LOCAL_MEM_FENCE);
2823 if (gid >= gid_max) return;
2831 w[ 0] = pws[gid].i[ 0];
2832 w[ 1] = pws[gid].i[ 1];
2833 w[ 2] = pws[gid].i[ 2];
2834 w[ 3] = pws[gid].i[ 3];
2835 w[ 4] = pws[gid].i[ 4];
2836 w[ 5] = pws[gid].i[ 5];
2837 w[ 6] = pws[gid].i[ 6];
2838 w[ 7] = pws[gid].i[ 7];
2839 w[ 8] = pws[gid].i[ 8];
2840 w[ 9] = pws[gid].i[ 9];
2841 w[10] = pws[gid].i[10];
2842 w[11] = pws[gid].i[11];
2843 w[12] = pws[gid].i[12];
2844 w[13] = pws[gid].i[13];
2845 w[14] = pws[gid].i[14];
2846 w[15] = pws[gid].i[15];
2848 const u32 pw_len = pws[gid].pw_len;
2854 m11800s (s_sbob_sl64, w, 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);