Initial commit
[hashcat.git] / nv / check_multi_vect4_comp4_warp.c
1 u32 digest_tp[4];
2
3 digest_tp[0] = r0.x;
4 digest_tp[1] = r1.x;
5 digest_tp[2] = r2.x;
6 digest_tp[3] = r3.x;
7
8 if (check (digest_tp,
9 bitmaps_buf_s1_a,
10 bitmaps_buf_s1_b,
11 bitmaps_buf_s1_c,
12 bitmaps_buf_s1_d,
13 bitmaps_buf_s2_a,
14 bitmaps_buf_s2_b,
15 bitmaps_buf_s2_c,
16 bitmaps_buf_s2_d,
17 bitmap_mask,
18 bitmap_shift1,
19 bitmap_shift2))
20 {
21 int hash_pos = find_hash (digest_tp, digests_cnt, &digests_buf[digests_offset]);
22
23 if (hash_pos != -1)
24 {
25 const u32 final_hash_pos = digests_offset + hash_pos;
26
27 if ((atomicAdd (&hashes_shown[final_hash_pos], 1) == 0) && (check_vector_accessible (il_pos, bf_loops, bfs_cnt, 0) == 1))
28 {
29 mark_hash_s0_warp (plains_buf, hashes_shown, final_hash_pos, gid, il_pos);
30
31 d_return_buf[lid] = 1;
32 }
33 }
34 }
35
36 digest_tp[0] = r0.y;
37 digest_tp[1] = r1.y;
38 digest_tp[2] = r2.y;
39 digest_tp[3] = r3.y;
40
41 if (check (digest_tp,
42 bitmaps_buf_s1_a,
43 bitmaps_buf_s1_b,
44 bitmaps_buf_s1_c,
45 bitmaps_buf_s1_d,
46 bitmaps_buf_s2_a,
47 bitmaps_buf_s2_b,
48 bitmaps_buf_s2_c,
49 bitmaps_buf_s2_d,
50 bitmap_mask,
51 bitmap_shift1,
52 bitmap_shift2))
53 {
54 int hash_pos = find_hash (digest_tp, digests_cnt, &digests_buf[digests_offset]);
55
56 if (hash_pos != -1)
57 {
58 const u32 final_hash_pos = digests_offset + hash_pos;
59
60 if ((atomicAdd (&hashes_shown[final_hash_pos], 1) == 0) && (check_vector_accessible (il_pos, bf_loops, bfs_cnt, 1) == 1))
61 {
62 mark_hash_s1_warp (plains_buf, hashes_shown, final_hash_pos, gid, il_pos);
63
64 d_return_buf[lid] = 1;
65 }
66 }
67 }
68
69 digest_tp[0] = r0.z;
70 digest_tp[1] = r1.z;
71 digest_tp[2] = r2.z;
72 digest_tp[3] = r3.z;
73
74 if (check (digest_tp,
75 bitmaps_buf_s1_a,
76 bitmaps_buf_s1_b,
77 bitmaps_buf_s1_c,
78 bitmaps_buf_s1_d,
79 bitmaps_buf_s2_a,
80 bitmaps_buf_s2_b,
81 bitmaps_buf_s2_c,
82 bitmaps_buf_s2_d,
83 bitmap_mask,
84 bitmap_shift1,
85 bitmap_shift2))
86 {
87 int hash_pos = find_hash (digest_tp, digests_cnt, &digests_buf[digests_offset]);
88
89 if (hash_pos != -1)
90 {
91 const u32 final_hash_pos = digests_offset + hash_pos;
92
93 if ((atomicAdd (&hashes_shown[final_hash_pos], 1) == 0) && (check_vector_accessible (il_pos, bf_loops, bfs_cnt, 2) == 1))
94 {
95 mark_hash_s2_warp (plains_buf, hashes_shown, final_hash_pos, gid, il_pos);
96
97 d_return_buf[lid] = 1;
98 }
99 }
100 }
101
102 digest_tp[0] = r0.w;
103 digest_tp[1] = r1.w;
104 digest_tp[2] = r2.w;
105 digest_tp[3] = r3.w;
106
107 if (check (digest_tp,
108 bitmaps_buf_s1_a,
109 bitmaps_buf_s1_b,
110 bitmaps_buf_s1_c,
111 bitmaps_buf_s1_d,
112 bitmaps_buf_s2_a,
113 bitmaps_buf_s2_b,
114 bitmaps_buf_s2_c,
115 bitmaps_buf_s2_d,
116 bitmap_mask,
117 bitmap_shift1,
118 bitmap_shift2))
119 {
120 int hash_pos = find_hash (digest_tp, digests_cnt, &digests_buf[digests_offset]);
121
122 if (hash_pos != -1)
123 {
124 const u32 final_hash_pos = digests_offset + hash_pos;
125
126 if ((atomicAdd (&hashes_shown[final_hash_pos], 1) == 0) && (check_vector_accessible (il_pos, bf_loops, bfs_cnt, 3) == 1))
127 {
128 mark_hash_s3_warp (plains_buf, hashes_shown, final_hash_pos, gid, il_pos);
129
130 d_return_buf[lid] = 1;
131 }
132 }
133 }