6e5058a5e9ca03f48e572eb35f8a315817ad7a10
[hashcat.git] / OpenCL / m08500_a3.cl
1 /**
2  * Authors.....: Jens Steube <jens.steube@gmail.com>
3  *               Gabriele Gristina <matrix@hashcat.net>
4  *               magnum <john.magnum@hushmail.com>
5  *
6  * License.....: MIT
7  */
8
9 #define _DES_
10
11 #define NEW_SIMD_CODE
12
13 #include "inc_hash_constants.h"
14 #include "inc_vendor.cl"
15
16 #define DGST_R0 0
17 #define DGST_R1 1
18 #define DGST_R2 2
19 #define DGST_R3 3
20
21 #include "inc_hash_functions.cl"
22 #include "inc_types.cl"
23 #include "inc_common.cl"
24 #include "inc_simd.cl"
25
26 #define PERM_OP(a,b,tt,n,m) \
27 {                           \
28   tt = a >> n;              \
29   tt = tt ^ b;              \
30   tt = tt & m;              \
31   b = b ^ tt;               \
32   tt = tt << n;             \
33   a = a ^ tt;               \
34 }
35
36 #define HPERM_OP(a,tt,n,m)  \
37 {                           \
38   tt = a << (16 + n);       \
39   tt = tt ^ a;              \
40   tt = tt & m;              \
41   a  = a ^ tt;              \
42   tt = tt >> (16 + n);      \
43   a  = a ^ tt;              \
44 }
45
46 #define IP(l,r,tt)                     \
47 {                                      \
48   PERM_OP (r, l, tt,  4, 0x0f0f0f0f);  \
49   PERM_OP (l, r, tt, 16, 0x0000ffff);  \
50   PERM_OP (r, l, tt,  2, 0x33333333);  \
51   PERM_OP (l, r, tt,  8, 0x00ff00ff);  \
52   PERM_OP (r, l, tt,  1, 0x55555555);  \
53 }
54
55 #define FP(l,r,tt)                     \
56 {                                      \
57   PERM_OP (l, r, tt,  1, 0x55555555);  \
58   PERM_OP (r, l, tt,  8, 0x00ff00ff);  \
59   PERM_OP (l, r, tt,  2, 0x33333333);  \
60   PERM_OP (r, l, tt, 16, 0x0000ffff);  \
61   PERM_OP (l, r, tt,  4, 0x0f0f0f0f);  \
62 }
63
64 __constant u8 ascii_to_ebcdic_pc[256] =
65 {
66   // little hack, can't crack 0-bytes in password, but who cares
67   //    0xab, 0xa8, 0xae, 0xad, 0xc4, 0xf1, 0xf7, 0xf4, 0x86, 0xa1, 0xe0, 0xbc, 0xb3, 0xb0, 0xb6, 0xb5,
68   0x2a, 0xa8, 0xae, 0xad, 0xc4, 0xf1, 0xf7, 0xf4, 0x86, 0xa1, 0xe0, 0xbc, 0xb3, 0xb0, 0xb6, 0xb5,
69   0x8a, 0x89, 0x8f, 0x8c, 0xd3, 0xd0, 0xce, 0xe6, 0x9b, 0x98, 0xd5, 0xe5, 0x92, 0x91, 0x97, 0x94,
70   0x2a, 0x34, 0x54, 0x5d, 0x1c, 0x73, 0x0b, 0x51, 0x31, 0x10, 0x13, 0x37, 0x7c, 0x6b, 0x3d, 0x68,
71   0x4a, 0x49, 0x4f, 0x4c, 0x43, 0x40, 0x46, 0x45, 0x5b, 0x58, 0x5e, 0x16, 0x32, 0x57, 0x76, 0x75,
72   0x52, 0x29, 0x2f, 0x2c, 0x23, 0x20, 0x26, 0x25, 0x3b, 0x38, 0x08, 0x0e, 0x0d, 0x02, 0x01, 0x07,
73   0x04, 0x1a, 0x19, 0x6e, 0x6d, 0x62, 0x61, 0x67, 0x64, 0x7a, 0x79, 0x3e, 0x6b, 0x1f, 0x15, 0x70,
74   0x58, 0xa8, 0xae, 0xad, 0xa2, 0xa1, 0xa7, 0xa4, 0xba, 0xb9, 0x89, 0x8f, 0x8c, 0x83, 0x80, 0x86,
75   0x85, 0x9b, 0x98, 0xef, 0xec, 0xe3, 0xe0, 0xe6, 0xe5, 0xfb, 0xf8, 0x2a, 0x7f, 0x0b, 0xe9, 0xa4,
76   0xea, 0xe9, 0xef, 0xec, 0xe3, 0x80, 0xa7, 0x85, 0xfb, 0xf8, 0xfe, 0xfd, 0xf2, 0xb9, 0xbf, 0x9d,
77   0xcb, 0xc8, 0x9e, 0xcd, 0xc2, 0xc1, 0xc7, 0xba, 0xda, 0xd9, 0xdf, 0xdc, 0xa2, 0x83, 0xd6, 0x68,
78   0x29, 0x2f, 0x2c, 0x23, 0x20, 0x26, 0x25, 0x3b, 0x38, 0x08, 0x0e, 0x0d, 0x02, 0x01, 0x07, 0x04,
79   0x1a, 0x19, 0x6e, 0x6d, 0x62, 0x61, 0x67, 0x64, 0x7a, 0x79, 0x4a, 0x49, 0x4f, 0x4c, 0x43, 0x40,
80   0x46, 0x45, 0x5b, 0xab, 0xbf, 0xbc, 0xb3, 0xb0, 0xb6, 0xb5, 0x8a, 0x9e, 0x9d, 0x92, 0x91, 0x97,
81   0x94, 0xea, 0xfe, 0xfd, 0xf2, 0xf1, 0xf7, 0xf4, 0xcb, 0xc8, 0xce, 0xcd, 0xc2, 0xc1, 0xc7, 0xc4,
82   0xda, 0xd9, 0xdf, 0xdc, 0xd3, 0xd0, 0xd6, 0xd5, 0x3e, 0x3d, 0x32, 0x31, 0x37, 0x34, 0x1f, 0x1c,
83   0x13, 0x10, 0x16, 0x15, 0x7f, 0x7c, 0x73, 0x70, 0x76, 0x75, 0x5e, 0x5d, 0x52, 0x51, 0x57, 0x54,
84 };
85
86 __constant u32 c_SPtrans[8][64] =
87 {
88   {
89     0x02080800, 0x00080000, 0x02000002, 0x02080802,
90     0x02000000, 0x00080802, 0x00080002, 0x02000002,
91     0x00080802, 0x02080800, 0x02080000, 0x00000802,
92     0x02000802, 0x02000000, 0x00000000, 0x00080002,
93     0x00080000, 0x00000002, 0x02000800, 0x00080800,
94     0x02080802, 0x02080000, 0x00000802, 0x02000800,
95     0x00000002, 0x00000800, 0x00080800, 0x02080002,
96     0x00000800, 0x02000802, 0x02080002, 0x00000000,
97     0x00000000, 0x02080802, 0x02000800, 0x00080002,
98     0x02080800, 0x00080000, 0x00000802, 0x02000800,
99     0x02080002, 0x00000800, 0x00080800, 0x02000002,
100     0x00080802, 0x00000002, 0x02000002, 0x02080000,
101     0x02080802, 0x00080800, 0x02080000, 0x02000802,
102     0x02000000, 0x00000802, 0x00080002, 0x00000000,
103     0x00080000, 0x02000000, 0x02000802, 0x02080800,
104     0x00000002, 0x02080002, 0x00000800, 0x00080802,
105   },
106   {
107     0x40108010, 0x00000000, 0x00108000, 0x40100000,
108     0x40000010, 0x00008010, 0x40008000, 0x00108000,
109     0x00008000, 0x40100010, 0x00000010, 0x40008000,
110     0x00100010, 0x40108000, 0x40100000, 0x00000010,
111     0x00100000, 0x40008010, 0x40100010, 0x00008000,
112     0x00108010, 0x40000000, 0x00000000, 0x00100010,
113     0x40008010, 0x00108010, 0x40108000, 0x40000010,
114     0x40000000, 0x00100000, 0x00008010, 0x40108010,
115     0x00100010, 0x40108000, 0x40008000, 0x00108010,
116     0x40108010, 0x00100010, 0x40000010, 0x00000000,
117     0x40000000, 0x00008010, 0x00100000, 0x40100010,
118     0x00008000, 0x40000000, 0x00108010, 0x40008010,
119     0x40108000, 0x00008000, 0x00000000, 0x40000010,
120     0x00000010, 0x40108010, 0x00108000, 0x40100000,
121     0x40100010, 0x00100000, 0x00008010, 0x40008000,
122     0x40008010, 0x00000010, 0x40100000, 0x00108000,
123   },
124   {
125     0x04000001, 0x04040100, 0x00000100, 0x04000101,
126     0x00040001, 0x04000000, 0x04000101, 0x00040100,
127     0x04000100, 0x00040000, 0x04040000, 0x00000001,
128     0x04040101, 0x00000101, 0x00000001, 0x04040001,
129     0x00000000, 0x00040001, 0x04040100, 0x00000100,
130     0x00000101, 0x04040101, 0x00040000, 0x04000001,
131     0x04040001, 0x04000100, 0x00040101, 0x04040000,
132     0x00040100, 0x00000000, 0x04000000, 0x00040101,
133     0x04040100, 0x00000100, 0x00000001, 0x00040000,
134     0x00000101, 0x00040001, 0x04040000, 0x04000101,
135     0x00000000, 0x04040100, 0x00040100, 0x04040001,
136     0x00040001, 0x04000000, 0x04040101, 0x00000001,
137     0x00040101, 0x04000001, 0x04000000, 0x04040101,
138     0x00040000, 0x04000100, 0x04000101, 0x00040100,
139     0x04000100, 0x00000000, 0x04040001, 0x00000101,
140     0x04000001, 0x00040101, 0x00000100, 0x04040000,
141   },
142   {
143     0x00401008, 0x10001000, 0x00000008, 0x10401008,
144     0x00000000, 0x10400000, 0x10001008, 0x00400008,
145     0x10401000, 0x10000008, 0x10000000, 0x00001008,
146     0x10000008, 0x00401008, 0x00400000, 0x10000000,
147     0x10400008, 0x00401000, 0x00001000, 0x00000008,
148     0x00401000, 0x10001008, 0x10400000, 0x00001000,
149     0x00001008, 0x00000000, 0x00400008, 0x10401000,
150     0x10001000, 0x10400008, 0x10401008, 0x00400000,
151     0x10400008, 0x00001008, 0x00400000, 0x10000008,
152     0x00401000, 0x10001000, 0x00000008, 0x10400000,
153     0x10001008, 0x00000000, 0x00001000, 0x00400008,
154     0x00000000, 0x10400008, 0x10401000, 0x00001000,
155     0x10000000, 0x10401008, 0x00401008, 0x00400000,
156     0x10401008, 0x00000008, 0x10001000, 0x00401008,
157     0x00400008, 0x00401000, 0x10400000, 0x10001008,
158     0x00001008, 0x10000000, 0x10000008, 0x10401000,
159   },
160   {
161     0x08000000, 0x00010000, 0x00000400, 0x08010420,
162     0x08010020, 0x08000400, 0x00010420, 0x08010000,
163     0x00010000, 0x00000020, 0x08000020, 0x00010400,
164     0x08000420, 0x08010020, 0x08010400, 0x00000000,
165     0x00010400, 0x08000000, 0x00010020, 0x00000420,
166     0x08000400, 0x00010420, 0x00000000, 0x08000020,
167     0x00000020, 0x08000420, 0x08010420, 0x00010020,
168     0x08010000, 0x00000400, 0x00000420, 0x08010400,
169     0x08010400, 0x08000420, 0x00010020, 0x08010000,
170     0x00010000, 0x00000020, 0x08000020, 0x08000400,
171     0x08000000, 0x00010400, 0x08010420, 0x00000000,
172     0x00010420, 0x08000000, 0x00000400, 0x00010020,
173     0x08000420, 0x00000400, 0x00000000, 0x08010420,
174     0x08010020, 0x08010400, 0x00000420, 0x00010000,
175     0x00010400, 0x08010020, 0x08000400, 0x00000420,
176     0x00000020, 0x00010420, 0x08010000, 0x08000020,
177   },
178   {
179     0x80000040, 0x00200040, 0x00000000, 0x80202000,
180     0x00200040, 0x00002000, 0x80002040, 0x00200000,
181     0x00002040, 0x80202040, 0x00202000, 0x80000000,
182     0x80002000, 0x80000040, 0x80200000, 0x00202040,
183     0x00200000, 0x80002040, 0x80200040, 0x00000000,
184     0x00002000, 0x00000040, 0x80202000, 0x80200040,
185     0x80202040, 0x80200000, 0x80000000, 0x00002040,
186     0x00000040, 0x00202000, 0x00202040, 0x80002000,
187     0x00002040, 0x80000000, 0x80002000, 0x00202040,
188     0x80202000, 0x00200040, 0x00000000, 0x80002000,
189     0x80000000, 0x00002000, 0x80200040, 0x00200000,
190     0x00200040, 0x80202040, 0x00202000, 0x00000040,
191     0x80202040, 0x00202000, 0x00200000, 0x80002040,
192     0x80000040, 0x80200000, 0x00202040, 0x00000000,
193     0x00002000, 0x80000040, 0x80002040, 0x80202000,
194     0x80200000, 0x00002040, 0x00000040, 0x80200040,
195   },
196   {
197     0x00004000, 0x00000200, 0x01000200, 0x01000004,
198     0x01004204, 0x00004004, 0x00004200, 0x00000000,
199     0x01000000, 0x01000204, 0x00000204, 0x01004000,
200     0x00000004, 0x01004200, 0x01004000, 0x00000204,
201     0x01000204, 0x00004000, 0x00004004, 0x01004204,
202     0x00000000, 0x01000200, 0x01000004, 0x00004200,
203     0x01004004, 0x00004204, 0x01004200, 0x00000004,
204     0x00004204, 0x01004004, 0x00000200, 0x01000000,
205     0x00004204, 0x01004000, 0x01004004, 0x00000204,
206     0x00004000, 0x00000200, 0x01000000, 0x01004004,
207     0x01000204, 0x00004204, 0x00004200, 0x00000000,
208     0x00000200, 0x01000004, 0x00000004, 0x01000200,
209     0x00000000, 0x01000204, 0x01000200, 0x00004200,
210     0x00000204, 0x00004000, 0x01004204, 0x01000000,
211     0x01004200, 0x00000004, 0x00004004, 0x01004204,
212     0x01000004, 0x01004200, 0x01004000, 0x00004004,
213   },
214   {
215     0x20800080, 0x20820000, 0x00020080, 0x00000000,
216     0x20020000, 0x00800080, 0x20800000, 0x20820080,
217     0x00000080, 0x20000000, 0x00820000, 0x00020080,
218     0x00820080, 0x20020080, 0x20000080, 0x20800000,
219     0x00020000, 0x00820080, 0x00800080, 0x20020000,
220     0x20820080, 0x20000080, 0x00000000, 0x00820000,
221     0x20000000, 0x00800000, 0x20020080, 0x20800080,
222     0x00800000, 0x00020000, 0x20820000, 0x00000080,
223     0x00800000, 0x00020000, 0x20000080, 0x20820080,
224     0x00020080, 0x20000000, 0x00000000, 0x00820000,
225     0x20800080, 0x20020080, 0x20020000, 0x00800080,
226     0x20820000, 0x00000080, 0x00800080, 0x20020000,
227     0x20820080, 0x00800000, 0x20800000, 0x20000080,
228     0x00820000, 0x00020080, 0x20020080, 0x20800000,
229     0x00000080, 0x20820000, 0x00820080, 0x00000000,
230     0x20000000, 0x20800080, 0x00020000, 0x00820080,
231   }
232 };
233
234 __constant u32 c_skb[8][64] =
235 {
236   {
237     0x00000000, 0x00000010, 0x20000000, 0x20000010,
238     0x00010000, 0x00010010, 0x20010000, 0x20010010,
239     0x00000800, 0x00000810, 0x20000800, 0x20000810,
240     0x00010800, 0x00010810, 0x20010800, 0x20010810,
241     0x00000020, 0x00000030, 0x20000020, 0x20000030,
242     0x00010020, 0x00010030, 0x20010020, 0x20010030,
243     0x00000820, 0x00000830, 0x20000820, 0x20000830,
244     0x00010820, 0x00010830, 0x20010820, 0x20010830,
245     0x00080000, 0x00080010, 0x20080000, 0x20080010,
246     0x00090000, 0x00090010, 0x20090000, 0x20090010,
247     0x00080800, 0x00080810, 0x20080800, 0x20080810,
248     0x00090800, 0x00090810, 0x20090800, 0x20090810,
249     0x00080020, 0x00080030, 0x20080020, 0x20080030,
250     0x00090020, 0x00090030, 0x20090020, 0x20090030,
251     0x00080820, 0x00080830, 0x20080820, 0x20080830,
252     0x00090820, 0x00090830, 0x20090820, 0x20090830,
253   },
254   {
255     0x00000000, 0x02000000, 0x00002000, 0x02002000,
256     0x00200000, 0x02200000, 0x00202000, 0x02202000,
257     0x00000004, 0x02000004, 0x00002004, 0x02002004,
258     0x00200004, 0x02200004, 0x00202004, 0x02202004,
259     0x00000400, 0x02000400, 0x00002400, 0x02002400,
260     0x00200400, 0x02200400, 0x00202400, 0x02202400,
261     0x00000404, 0x02000404, 0x00002404, 0x02002404,
262     0x00200404, 0x02200404, 0x00202404, 0x02202404,
263     0x10000000, 0x12000000, 0x10002000, 0x12002000,
264     0x10200000, 0x12200000, 0x10202000, 0x12202000,
265     0x10000004, 0x12000004, 0x10002004, 0x12002004,
266     0x10200004, 0x12200004, 0x10202004, 0x12202004,
267     0x10000400, 0x12000400, 0x10002400, 0x12002400,
268     0x10200400, 0x12200400, 0x10202400, 0x12202400,
269     0x10000404, 0x12000404, 0x10002404, 0x12002404,
270     0x10200404, 0x12200404, 0x10202404, 0x12202404,
271   },
272   {
273     0x00000000, 0x00000001, 0x00040000, 0x00040001,
274     0x01000000, 0x01000001, 0x01040000, 0x01040001,
275     0x00000002, 0x00000003, 0x00040002, 0x00040003,
276     0x01000002, 0x01000003, 0x01040002, 0x01040003,
277     0x00000200, 0x00000201, 0x00040200, 0x00040201,
278     0x01000200, 0x01000201, 0x01040200, 0x01040201,
279     0x00000202, 0x00000203, 0x00040202, 0x00040203,
280     0x01000202, 0x01000203, 0x01040202, 0x01040203,
281     0x08000000, 0x08000001, 0x08040000, 0x08040001,
282     0x09000000, 0x09000001, 0x09040000, 0x09040001,
283     0x08000002, 0x08000003, 0x08040002, 0x08040003,
284     0x09000002, 0x09000003, 0x09040002, 0x09040003,
285     0x08000200, 0x08000201, 0x08040200, 0x08040201,
286     0x09000200, 0x09000201, 0x09040200, 0x09040201,
287     0x08000202, 0x08000203, 0x08040202, 0x08040203,
288     0x09000202, 0x09000203, 0x09040202, 0x09040203,
289   },
290   {
291     0x00000000, 0x00100000, 0x00000100, 0x00100100,
292     0x00000008, 0x00100008, 0x00000108, 0x00100108,
293     0x00001000, 0x00101000, 0x00001100, 0x00101100,
294     0x00001008, 0x00101008, 0x00001108, 0x00101108,
295     0x04000000, 0x04100000, 0x04000100, 0x04100100,
296     0x04000008, 0x04100008, 0x04000108, 0x04100108,
297     0x04001000, 0x04101000, 0x04001100, 0x04101100,
298     0x04001008, 0x04101008, 0x04001108, 0x04101108,
299     0x00020000, 0x00120000, 0x00020100, 0x00120100,
300     0x00020008, 0x00120008, 0x00020108, 0x00120108,
301     0x00021000, 0x00121000, 0x00021100, 0x00121100,
302     0x00021008, 0x00121008, 0x00021108, 0x00121108,
303     0x04020000, 0x04120000, 0x04020100, 0x04120100,
304     0x04020008, 0x04120008, 0x04020108, 0x04120108,
305     0x04021000, 0x04121000, 0x04021100, 0x04121100,
306     0x04021008, 0x04121008, 0x04021108, 0x04121108,
307   },
308   {
309     0x00000000, 0x10000000, 0x00010000, 0x10010000,
310     0x00000004, 0x10000004, 0x00010004, 0x10010004,
311     0x20000000, 0x30000000, 0x20010000, 0x30010000,
312     0x20000004, 0x30000004, 0x20010004, 0x30010004,
313     0x00100000, 0x10100000, 0x00110000, 0x10110000,
314     0x00100004, 0x10100004, 0x00110004, 0x10110004,
315     0x20100000, 0x30100000, 0x20110000, 0x30110000,
316     0x20100004, 0x30100004, 0x20110004, 0x30110004,
317     0x00001000, 0x10001000, 0x00011000, 0x10011000,
318     0x00001004, 0x10001004, 0x00011004, 0x10011004,
319     0x20001000, 0x30001000, 0x20011000, 0x30011000,
320     0x20001004, 0x30001004, 0x20011004, 0x30011004,
321     0x00101000, 0x10101000, 0x00111000, 0x10111000,
322     0x00101004, 0x10101004, 0x00111004, 0x10111004,
323     0x20101000, 0x30101000, 0x20111000, 0x30111000,
324     0x20101004, 0x30101004, 0x20111004, 0x30111004,
325   },
326   {
327     0x00000000, 0x08000000, 0x00000008, 0x08000008,
328     0x00000400, 0x08000400, 0x00000408, 0x08000408,
329     0x00020000, 0x08020000, 0x00020008, 0x08020008,
330     0x00020400, 0x08020400, 0x00020408, 0x08020408,
331     0x00000001, 0x08000001, 0x00000009, 0x08000009,
332     0x00000401, 0x08000401, 0x00000409, 0x08000409,
333     0x00020001, 0x08020001, 0x00020009, 0x08020009,
334     0x00020401, 0x08020401, 0x00020409, 0x08020409,
335     0x02000000, 0x0A000000, 0x02000008, 0x0A000008,
336     0x02000400, 0x0A000400, 0x02000408, 0x0A000408,
337     0x02020000, 0x0A020000, 0x02020008, 0x0A020008,
338     0x02020400, 0x0A020400, 0x02020408, 0x0A020408,
339     0x02000001, 0x0A000001, 0x02000009, 0x0A000009,
340     0x02000401, 0x0A000401, 0x02000409, 0x0A000409,
341     0x02020001, 0x0A020001, 0x02020009, 0x0A020009,
342     0x02020401, 0x0A020401, 0x02020409, 0x0A020409,
343   },
344   {
345     0x00000000, 0x00000100, 0x00080000, 0x00080100,
346     0x01000000, 0x01000100, 0x01080000, 0x01080100,
347     0x00000010, 0x00000110, 0x00080010, 0x00080110,
348     0x01000010, 0x01000110, 0x01080010, 0x01080110,
349     0x00200000, 0x00200100, 0x00280000, 0x00280100,
350     0x01200000, 0x01200100, 0x01280000, 0x01280100,
351     0x00200010, 0x00200110, 0x00280010, 0x00280110,
352     0x01200010, 0x01200110, 0x01280010, 0x01280110,
353     0x00000200, 0x00000300, 0x00080200, 0x00080300,
354     0x01000200, 0x01000300, 0x01080200, 0x01080300,
355     0x00000210, 0x00000310, 0x00080210, 0x00080310,
356     0x01000210, 0x01000310, 0x01080210, 0x01080310,
357     0x00200200, 0x00200300, 0x00280200, 0x00280300,
358     0x01200200, 0x01200300, 0x01280200, 0x01280300,
359     0x00200210, 0x00200310, 0x00280210, 0x00280310,
360     0x01200210, 0x01200310, 0x01280210, 0x01280310,
361   },
362   {
363     0x00000000, 0x04000000, 0x00040000, 0x04040000,
364     0x00000002, 0x04000002, 0x00040002, 0x04040002,
365     0x00002000, 0x04002000, 0x00042000, 0x04042000,
366     0x00002002, 0x04002002, 0x00042002, 0x04042002,
367     0x00000020, 0x04000020, 0x00040020, 0x04040020,
368     0x00000022, 0x04000022, 0x00040022, 0x04040022,
369     0x00002020, 0x04002020, 0x00042020, 0x04042020,
370     0x00002022, 0x04002022, 0x00042022, 0x04042022,
371     0x00000800, 0x04000800, 0x00040800, 0x04040800,
372     0x00000802, 0x04000802, 0x00040802, 0x04040802,
373     0x00002800, 0x04002800, 0x00042800, 0x04042800,
374     0x00002802, 0x04002802, 0x00042802, 0x04042802,
375     0x00000820, 0x04000820, 0x00040820, 0x04040820,
376     0x00000822, 0x04000822, 0x00040822, 0x04040822,
377     0x00002820, 0x04002820, 0x00042820, 0x04042820,
378     0x00002822, 0x04002822, 0x00042822, 0x04042822
379   }
380 };
381
382 #if   VECT_SIZE == 1
383 #define BOX(i,n,S) (S)[(n)][(i)]
384 #elif VECT_SIZE == 2
385 #define BOX(i,n,S) (u32x) ((S)[(n)][(i).s0], (S)[(n)][(i).s1])
386 #elif VECT_SIZE == 4
387 #define BOX(i,n,S) (u32x) ((S)[(n)][(i).s0], (S)[(n)][(i).s1], (S)[(n)][(i).s2], (S)[(n)][(i).s3])
388 #elif VECT_SIZE == 8
389 #define BOX(i,n,S) (u32x) ((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])
390 #elif VECT_SIZE == 16
391 #define BOX(i,n,S) (u32x) ((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], (S)[(n)][(i).s8], (S)[(n)][(i).s9], (S)[(n)][(i).sa], (S)[(n)][(i).sb], (S)[(n)][(i).sc], (S)[(n)][(i).sd], (S)[(n)][(i).se], (S)[(n)][(i).sf])
392 #endif
393
394 #if   VECT_SIZE == 1
395 #define BOX1(i,S) (S)[(i)]
396 #elif VECT_SIZE == 2
397 #define BOX1(i,S) (u32x) ((S)[(i).s0], (S)[(i).s1])
398 #elif VECT_SIZE == 4
399 #define BOX1(i,S) (u32x) ((S)[(i).s0], (S)[(i).s1], (S)[(i).s2], (S)[(i).s3])
400 #elif VECT_SIZE == 8
401 #define BOX1(i,S) (u32x) ((S)[(i).s0], (S)[(i).s1], (S)[(i).s2], (S)[(i).s3], (S)[(i).s4], (S)[(i).s5], (S)[(i).s6], (S)[(i).s7])
402 #elif VECT_SIZE == 16
403 #define BOX1(i,S) (u32x) ((S)[(i).s0], (S)[(i).s1], (S)[(i).s2], (S)[(i).s3], (S)[(i).s4], (S)[(i).s5], (S)[(i).s6], (S)[(i).s7], (S)[(i).s8], (S)[(i).s9], (S)[(i).sa], (S)[(i).sb], (S)[(i).sc], (S)[(i).sd], (S)[(i).se], (S)[(i).sf])
404 #endif
405
406 void _des_crypt_encrypt (u32x iv[2], u32x data[2], u32x Kc[16], u32x Kd[16], __local u32 (*s_SPtrans)[64])
407 {
408   u32x r = data[0];
409   u32x l = data[1];
410
411   #ifdef _unroll
412   #pragma unroll
413   #endif
414   for (u32 i = 0; i < 16; i += 2)
415   {
416     u32x u;
417     u32x t;
418
419     u = Kc[i + 0] ^ r;
420     t = Kd[i + 0] ^ rotl32 (r, 28u);
421
422     l ^= BOX (((u >>  2) & 0x3f), 0, s_SPtrans)
423        | BOX (((u >> 10) & 0x3f), 2, s_SPtrans)
424        | BOX (((u >> 18) & 0x3f), 4, s_SPtrans)
425        | BOX (((u >> 26) & 0x3f), 6, s_SPtrans)
426        | BOX (((t >>  2) & 0x3f), 1, s_SPtrans)
427        | BOX (((t >> 10) & 0x3f), 3, s_SPtrans)
428        | BOX (((t >> 18) & 0x3f), 5, s_SPtrans)
429        | BOX (((t >> 26) & 0x3f), 7, s_SPtrans);
430
431     u = Kc[i + 1] ^ l;
432     t = Kd[i + 1] ^ rotl32 (l, 28u);
433
434     r ^= BOX (((u >>  2) & 0x3f), 0, s_SPtrans)
435        | BOX (((u >> 10) & 0x3f), 2, s_SPtrans)
436        | BOX (((u >> 18) & 0x3f), 4, s_SPtrans)
437        | BOX (((u >> 26) & 0x3f), 6, s_SPtrans)
438        | BOX (((t >>  2) & 0x3f), 1, s_SPtrans)
439        | BOX (((t >> 10) & 0x3f), 3, s_SPtrans)
440        | BOX (((t >> 18) & 0x3f), 5, s_SPtrans)
441        | BOX (((t >> 26) & 0x3f), 7, s_SPtrans);
442   }
443
444   iv[0] = l;
445   iv[1] = r;
446 }
447
448 void _des_crypt_keysetup (u32x c, u32x d, u32x Kc[16], u32x Kd[16], __local u32 (*s_skb)[64])
449 {
450   u32x tt;
451
452   PERM_OP  (d, c, tt, 4, 0x0f0f0f0f);
453   HPERM_OP (c,    tt, 2, 0xcccc0000);
454   HPERM_OP (d,    tt, 2, 0xcccc0000);
455   PERM_OP  (d, c, tt, 1, 0x55555555);
456   PERM_OP  (c, d, tt, 8, 0x00ff00ff);
457   PERM_OP  (d, c, tt, 1, 0x55555555);
458
459   d = ((d & 0x000000ff) << 16)
460     | ((d & 0x0000ff00) <<  0)
461     | ((d & 0x00ff0000) >> 16)
462     | ((c & 0xf0000000) >>  4);
463
464   c = c & 0x0fffffff;
465
466   #ifdef _unroll
467   #pragma unroll
468   #endif
469   for (u32 i = 0; i < 16; i++)
470   {
471     if ((i < 2) || (i == 8) || (i == 15))
472     {
473       c = ((c >> 1) | (c << 27));
474       d = ((d >> 1) | (d << 27));
475     }
476     else
477     {
478       c = ((c >> 2) | (c << 26));
479       d = ((d >> 2) | (d << 26));
480     }
481
482     c = c & 0x0fffffff;
483     d = d & 0x0fffffff;
484
485     const u32x c00 = (c >>  0) & 0x0000003f;
486     const u32x c06 = (c >>  6) & 0x00383003;
487     const u32x c07 = (c >>  7) & 0x0000003c;
488     const u32x c13 = (c >> 13) & 0x0000060f;
489     const u32x c20 = (c >> 20) & 0x00000001;
490
491     u32x s = BOX (((c00 >>  0) & 0xff), 0, s_skb)
492            | BOX (((c06 >>  0) & 0xff)
493                  |((c07 >>  0) & 0xff), 1, s_skb)
494            | BOX (((c13 >>  0) & 0xff)
495                  |((c06 >>  8) & 0xff), 2, s_skb)
496            | BOX (((c20 >>  0) & 0xff)
497                  |((c13 >>  8) & 0xff)
498                  |((c06 >> 16) & 0xff), 3, s_skb);
499
500     const u32x d00 = (d >>  0) & 0x00003c3f;
501     const u32x d07 = (d >>  7) & 0x00003f03;
502     const u32x d21 = (d >> 21) & 0x0000000f;
503     const u32x d22 = (d >> 22) & 0x00000030;
504
505     u32x t = BOX (((d00 >>  0) & 0xff), 4, s_skb)
506            | BOX (((d07 >>  0) & 0xff)
507                  |((d00 >>  8) & 0xff), 5, s_skb)
508            | BOX (((d07 >>  8) & 0xff), 6, s_skb)
509            | BOX (((d21 >>  0) & 0xff)
510                  |((d22 >>  0) & 0xff), 7, s_skb);
511
512     Kc[i] = ((t << 16) | (s & 0x0000ffff));
513     Kd[i] = ((s >> 16) | (t & 0xffff0000));
514
515     Kc[i] = rotl32 (Kc[i], 2u);
516     Kd[i] = rotl32 (Kd[i], 2u);
517   }
518 }
519
520 void transform_racf_key (const u32x w0, const u32x w1, u32x key[2])
521 {
522   key[0] = BOX1 (((w0 >>  0) & 0xff), ascii_to_ebcdic_pc) <<  0
523          | BOX1 (((w0 >>  8) & 0xff), ascii_to_ebcdic_pc) <<  8
524          | BOX1 (((w0 >> 16) & 0xff), ascii_to_ebcdic_pc) << 16
525          | BOX1 (((w0 >> 24) & 0xff), ascii_to_ebcdic_pc) << 24;
526
527   key[1] = BOX1 (((w1 >>  0) & 0xff), ascii_to_ebcdic_pc) <<  0
528          | BOX1 (((w1 >>  8) & 0xff), ascii_to_ebcdic_pc) <<  8
529          | BOX1 (((w1 >> 16) & 0xff), ascii_to_ebcdic_pc) << 16
530          | BOX1 (((w1 >> 24) & 0xff), ascii_to_ebcdic_pc) << 24;
531 }
532
533 void m08500m (__local u32 (*s_SPtrans)[64], __local u32 (*s_skb)[64], u32 w[16], const u32 pw_len, __global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __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)
534 {
535   /**
536    * modifier
537    */
538
539   const u32 gid = get_global_id (0);
540   const u32 lid = get_local_id (0);
541
542   /**
543    * salt
544    */
545
546   u32 salt_buf0[2];
547
548   salt_buf0[0] = salt_bufs[salt_pos].salt_buf_pc[0];
549   salt_buf0[1] = salt_bufs[salt_pos].salt_buf_pc[1];
550
551   /**
552    * loop
553    */
554
555   u32 w0l = w[0];
556
557   u32 w1 = w[1];
558
559   for (u32 il_pos = 0; il_pos < il_cnt; il_pos += VECT_SIZE)
560   {
561     const u32x w0r = words_buf_r[il_pos / VECT_SIZE];
562
563     const u32x w0 = w0l | w0r;
564
565     /**
566      * RACF
567      */
568
569     u32x key[2];
570
571     transform_racf_key (w0, w1, key);
572
573     const u32x c = key[0];
574     const u32x d = key[1];
575
576     u32x Kc[16];
577     u32x Kd[16];
578
579     _des_crypt_keysetup (c, d, Kc, Kd, s_skb);
580
581     u32x data[2];
582
583     data[0] = salt_buf0[0];
584     data[1] = salt_buf0[1];
585
586     u32x iv[2];
587
588     _des_crypt_encrypt (iv, data, Kc, Kd, s_SPtrans);
589
590     u32x z = 0;
591
592     COMPARE_M_SIMD (iv[0], iv[1], z, z);
593   }
594 }
595
596 void m08500s (__local u32 (*s_SPtrans)[64], __local u32 (*s_skb)[64], u32 w[16], const u32 pw_len, __global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __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)
597 {
598   /**
599    * modifier
600    */
601
602   const u32 gid = get_global_id (0);
603   const u32 lid = get_local_id (0);
604
605   /**
606    * salt
607    */
608
609   u32 salt_buf0[2];
610
611   salt_buf0[0] = salt_bufs[salt_pos].salt_buf_pc[0];
612   salt_buf0[1] = salt_bufs[salt_pos].salt_buf_pc[1];
613
614   /**
615    * digest
616    */
617
618   const u32 search[4] =
619   {
620     digests_buf[digests_offset].digest_buf[DGST_R0],
621     digests_buf[digests_offset].digest_buf[DGST_R1],
622     0,
623     0
624   };
625
626   /**
627    * loop
628    */
629
630   u32 w0l = w[0];
631
632   u32 w1 = w[1];
633
634   for (u32 il_pos = 0; il_pos < il_cnt; il_pos += VECT_SIZE)
635   {
636     const u32x w0r = words_buf_r[il_pos / VECT_SIZE];
637
638     const u32x w0 = w0l | w0r;
639
640     /**
641      * RACF
642      */
643
644     u32x key[2];
645
646     transform_racf_key (w0, w1, key);
647
648     const u32x c = key[0];
649     const u32x d = key[1];
650
651     u32x Kc[16];
652     u32x Kd[16];
653
654     _des_crypt_keysetup (c, d, Kc, Kd, s_skb);
655
656     u32x data[2];
657
658     data[0] = salt_buf0[0];
659     data[1] = salt_buf0[1];
660
661     u32x iv[2];
662
663     _des_crypt_encrypt (iv, data, Kc, Kd, s_SPtrans);
664
665     u32x z = 0;
666
667     COMPARE_S_SIMD (iv[0], iv[1], z, z);
668   }
669 }
670
671 __kernel void m08500_m04 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __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)
672 {
673   /**
674    * base
675    */
676
677   const u32 gid = get_global_id (0);
678   const u32 lid = get_local_id (0);
679   const u32 lsz = get_local_size (0);
680
681   /**
682    * shared
683    */
684
685   __local u32 s_SPtrans[8][64];
686   __local u32 s_skb[8][64];
687
688   for (u32 i = lid; i < 64; i += lsz)
689   {
690     s_SPtrans[0][i] = c_SPtrans[0][i];
691     s_SPtrans[1][i] = c_SPtrans[1][i];
692     s_SPtrans[2][i] = c_SPtrans[2][i];
693     s_SPtrans[3][i] = c_SPtrans[3][i];
694     s_SPtrans[4][i] = c_SPtrans[4][i];
695     s_SPtrans[5][i] = c_SPtrans[5][i];
696     s_SPtrans[6][i] = c_SPtrans[6][i];
697     s_SPtrans[7][i] = c_SPtrans[7][i];
698
699     s_skb[0][i] = c_skb[0][i];
700     s_skb[1][i] = c_skb[1][i];
701     s_skb[2][i] = c_skb[2][i];
702     s_skb[3][i] = c_skb[3][i];
703     s_skb[4][i] = c_skb[4][i];
704     s_skb[5][i] = c_skb[5][i];
705     s_skb[6][i] = c_skb[6][i];
706     s_skb[7][i] = c_skb[7][i];
707   }
708
709   barrier (CLK_LOCAL_MEM_FENCE);
710
711   if (gid >= gid_max) return;
712
713   /**
714    * base
715    */
716
717   u32 w[16];
718
719   w[ 0] = pws[gid].i[ 0];
720   w[ 1] = pws[gid].i[ 1];
721   w[ 2] = 0;
722   w[ 3] = 0;
723   w[ 4] = 0;
724   w[ 5] = 0;
725   w[ 6] = 0;
726   w[ 7] = 0;
727   w[ 8] = 0;
728   w[ 9] = 0;
729   w[10] = 0;
730   w[11] = 0;
731   w[12] = 0;
732   w[13] = 0;
733   w[14] = 0;
734   w[15] = 0;
735
736   const u32 pw_len = pws[gid].pw_len;
737
738   /**
739    * main
740    */
741
742   m08500m (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, 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, il_cnt, digests_cnt, digests_offset);
743 }
744
745 __kernel void m08500_m08 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __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)
746 {
747 }
748
749 __kernel void m08500_m16 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __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)
750 {
751 }
752
753 __kernel void m08500_s04 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __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)
754 {
755   /**
756    * base
757    */
758
759   const u32 gid = get_global_id (0);
760   const u32 lid = get_local_id (0);
761   const u32 lsz = get_local_size (0);
762
763   /**
764    * shared
765    */
766
767   __local u32 s_SPtrans[8][64];
768   __local u32 s_skb[8][64];
769
770   for (u32 i = lid; i < 64; i += lsz)
771   {
772     s_SPtrans[0][i] = c_SPtrans[0][i];
773     s_SPtrans[1][i] = c_SPtrans[1][i];
774     s_SPtrans[2][i] = c_SPtrans[2][i];
775     s_SPtrans[3][i] = c_SPtrans[3][i];
776     s_SPtrans[4][i] = c_SPtrans[4][i];
777     s_SPtrans[5][i] = c_SPtrans[5][i];
778     s_SPtrans[6][i] = c_SPtrans[6][i];
779     s_SPtrans[7][i] = c_SPtrans[7][i];
780
781     s_skb[0][i] = c_skb[0][i];
782     s_skb[1][i] = c_skb[1][i];
783     s_skb[2][i] = c_skb[2][i];
784     s_skb[3][i] = c_skb[3][i];
785     s_skb[4][i] = c_skb[4][i];
786     s_skb[5][i] = c_skb[5][i];
787     s_skb[6][i] = c_skb[6][i];
788     s_skb[7][i] = c_skb[7][i];
789   }
790
791   barrier (CLK_LOCAL_MEM_FENCE);
792
793   if (gid >= gid_max) return;
794
795   /**
796    * base
797    */
798
799   u32 w[16];
800
801   w[ 0] = pws[gid].i[ 0];
802   w[ 1] = pws[gid].i[ 1];
803   w[ 2] = 0;
804   w[ 3] = 0;
805   w[ 4] = 0;
806   w[ 5] = 0;
807   w[ 6] = 0;
808   w[ 7] = 0;
809   w[ 8] = 0;
810   w[ 9] = 0;
811   w[10] = 0;
812   w[11] = 0;
813   w[12] = 0;
814   w[13] = 0;
815   w[14] = 0;
816   w[15] = 0;
817
818   const u32 pw_len = pws[gid].pw_len;
819
820   /**
821    * main
822    */
823
824   m08500s (s_SPtrans, s_skb, w, pw_len, pws, rules_buf, combs_buf, words_buf_r, 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, il_cnt, digests_cnt, digests_offset);
825 }
826
827 __kernel void m08500_s08 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __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)
828 {
829 }
830
831 __kernel void m08500_s16 (__global pw_t *pws, __global kernel_rule_t *rules_buf, __global comb_t *combs_buf, __constant u32x * words_buf_r, __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)
832 {
833 }