2015-12-04 14:47:52 +00:00
|
|
|
/**
|
2016-09-11 20:20:15 +00:00
|
|
|
* Author......: See docs/credits.txt
|
2015-12-04 14:47:52 +00:00
|
|
|
* License.....: MIT
|
|
|
|
*/
|
|
|
|
|
2016-01-23 14:32:31 +00:00
|
|
|
#define NEW_SIMD_CODE
|
|
|
|
|
2019-03-22 14:16:25 +00:00
|
|
|
#ifdef KERNEL_STATIC
|
2019-03-21 22:00:38 +00:00
|
|
|
#include "inc_vendor.h"
|
|
|
|
#include "inc_types.h"
|
2019-04-26 11:59:43 +00:00
|
|
|
#include "inc_platform.cl"
|
2016-05-25 21:04:26 +00:00
|
|
|
#include "inc_common.cl"
|
|
|
|
#include "inc_simd.cl"
|
2019-03-22 14:16:25 +00:00
|
|
|
#endif
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2016-04-23 18:52:16 +00:00
|
|
|
#define ROUND(v) \
|
|
|
|
{ \
|
|
|
|
a ^= (((a & 0x3f) + add) * (v)) + (a << 8); \
|
|
|
|
b += (b << 8) ^ a; \
|
|
|
|
add += v; \
|
|
|
|
}
|
|
|
|
|
|
|
|
#define CODE_PRE \
|
|
|
|
{ \
|
2022-01-04 17:07:18 +00:00
|
|
|
for (u32 il_pos = 0; il_pos < IL_CNT; il_pos += VECT_SIZE) \
|
2016-04-23 18:52:16 +00:00
|
|
|
{ \
|
|
|
|
const u32x w0r = words_buf_r[il_pos / VECT_SIZE]; \
|
|
|
|
\
|
|
|
|
const u32x w0 = w0l | w0r; \
|
|
|
|
\
|
|
|
|
u32x a = MYSQL323_A; \
|
|
|
|
u32x b = MYSQL323_B; \
|
|
|
|
\
|
|
|
|
u32x add = 7; \
|
|
|
|
|
|
|
|
#define CODE_LOOP(rest) \
|
|
|
|
\
|
|
|
|
int i; \
|
|
|
|
int j; \
|
|
|
|
\
|
|
|
|
for (i = 0, j = 1; i <= (int) (rest) - 4; i += 4, j += 1) \
|
|
|
|
{ \
|
|
|
|
const u32 wj = w[j]; \
|
|
|
|
\
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 (wj)); \
|
|
|
|
ROUND (unpack_v8b_from_v32 (wj)); \
|
|
|
|
ROUND (unpack_v8c_from_v32 (wj)); \
|
|
|
|
ROUND (unpack_v8d_from_v32 (wj)); \
|
2016-04-23 18:52:16 +00:00
|
|
|
} \
|
|
|
|
\
|
|
|
|
const u32 wj = w[j]; \
|
|
|
|
\
|
|
|
|
const u32 left = (rest) - i; \
|
|
|
|
\
|
|
|
|
if (left == 3) \
|
|
|
|
{ \
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 (wj)); \
|
|
|
|
ROUND (unpack_v8b_from_v32 (wj)); \
|
|
|
|
ROUND (unpack_v8c_from_v32 (wj)); \
|
2016-04-23 18:52:16 +00:00
|
|
|
} \
|
|
|
|
else if (left == 2) \
|
|
|
|
{ \
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 (wj)); \
|
|
|
|
ROUND (unpack_v8b_from_v32 (wj)); \
|
2016-04-23 18:52:16 +00:00
|
|
|
} \
|
|
|
|
else if (left == 1) \
|
|
|
|
{ \
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 (wj)); \
|
2016-04-23 18:52:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#define CODE_POST_M \
|
|
|
|
\
|
|
|
|
a &= 0x7fffffff; \
|
|
|
|
b &= 0x7fffffff; \
|
|
|
|
\
|
2016-05-03 08:39:09 +00:00
|
|
|
u32x z = 0; \
|
|
|
|
\
|
|
|
|
COMPARE_M_SIMD (a, b, z, z); \
|
2016-04-23 18:52:16 +00:00
|
|
|
} \
|
|
|
|
}
|
|
|
|
|
|
|
|
#define CODE_POST_S \
|
|
|
|
\
|
|
|
|
a &= 0x7fffffff; \
|
|
|
|
b &= 0x7fffffff; \
|
|
|
|
\
|
2016-05-03 08:39:09 +00:00
|
|
|
u32x z = 0; \
|
|
|
|
\
|
|
|
|
COMPARE_S_SIMD (a, b, z, z); \
|
2016-04-23 18:52:16 +00:00
|
|
|
} \
|
|
|
|
}
|
|
|
|
|
2019-04-13 16:46:19 +00:00
|
|
|
DECLSPEC void m00200m (u32 *w, const u32 pw_len, KERN_ATTR_VECTOR ())
|
2015-12-04 14:47:52 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* modifier
|
|
|
|
*/
|
|
|
|
|
2017-08-19 14:39:22 +00:00
|
|
|
const u64 gid = get_global_id (0);
|
|
|
|
const u64 lid = get_local_id (0);
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2020-03-06 12:31:32 +00:00
|
|
|
/**
|
|
|
|
* digest
|
|
|
|
*/
|
|
|
|
|
|
|
|
const u32 search[4] =
|
|
|
|
{
|
2022-01-04 17:07:18 +00:00
|
|
|
digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0],
|
|
|
|
digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1],
|
2020-03-06 12:31:32 +00:00
|
|
|
0,
|
|
|
|
0
|
|
|
|
};
|
|
|
|
|
2016-04-23 18:52:16 +00:00
|
|
|
/**
|
|
|
|
* loop
|
|
|
|
*/
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2016-04-23 18:52:16 +00:00
|
|
|
u32 w0l = w[0];
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2020-03-06 12:31:32 +00:00
|
|
|
CODE_PRE;
|
|
|
|
|
2016-04-23 18:52:16 +00:00
|
|
|
switch (pw_len)
|
|
|
|
{
|
|
|
|
case 1:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 2:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 3:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 4:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 5:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 6:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 7:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 8:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 9:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 10:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 11:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 12:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 13:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[3]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 14:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[3])); ROUND (unpack_v8b_from_v32 (w[3]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 15:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[3])); ROUND (unpack_v8b_from_v32 (w[3])); ROUND (unpack_v8c_from_v32 (w[3]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 16:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[3])); ROUND (unpack_v8b_from_v32 (w[3])); ROUND (unpack_v8c_from_v32 (w[3])); ROUND (unpack_v8d_from_v32 (w[3]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
CODE_LOOP (pw_len - 4);
|
|
|
|
break;
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|
2020-03-06 12:31:32 +00:00
|
|
|
|
|
|
|
CODE_POST_M;
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|
|
|
|
|
2019-04-13 16:46:19 +00:00
|
|
|
DECLSPEC void m00200s (u32 *w, const u32 pw_len, KERN_ATTR_VECTOR ())
|
2015-12-04 14:47:52 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* modifier
|
|
|
|
*/
|
|
|
|
|
2017-08-19 14:39:22 +00:00
|
|
|
const u64 gid = get_global_id (0);
|
|
|
|
const u64 lid = get_local_id (0);
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* digest
|
|
|
|
*/
|
|
|
|
|
|
|
|
const u32 search[4] =
|
|
|
|
{
|
2022-01-04 17:07:18 +00:00
|
|
|
digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R0],
|
|
|
|
digests_buf[DIGESTS_OFFSET_HOST].digest_buf[DGST_R1],
|
2016-05-03 08:39:09 +00:00
|
|
|
0,
|
|
|
|
0
|
2015-12-04 14:47:52 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* loop
|
|
|
|
*/
|
|
|
|
|
2015-12-15 11:04:22 +00:00
|
|
|
u32 w0l = w[0];
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2020-03-06 12:31:32 +00:00
|
|
|
CODE_PRE;
|
|
|
|
|
2016-04-23 18:52:16 +00:00
|
|
|
switch (pw_len)
|
2015-12-04 14:47:52 +00:00
|
|
|
{
|
2016-04-23 18:52:16 +00:00
|
|
|
case 1:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 2:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 3:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 4:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 5:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 6:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 7:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 8:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 9:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 10:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 11:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 12:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 13:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[3]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 14:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[3])); ROUND (unpack_v8b_from_v32 (w[3]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 15:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[3])); ROUND (unpack_v8b_from_v32 (w[3])); ROUND (unpack_v8c_from_v32 (w[3]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 16:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[1])); ROUND (unpack_v8b_from_v32 (w[1])); ROUND (unpack_v8c_from_v32 (w[1])); ROUND (unpack_v8d_from_v32 (w[1]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[2])); ROUND (unpack_v8b_from_v32 (w[2])); ROUND (unpack_v8c_from_v32 (w[2])); ROUND (unpack_v8d_from_v32 (w[2]));
|
|
|
|
ROUND (unpack_v8a_from_v32 (w[3])); ROUND (unpack_v8b_from_v32 (w[3])); ROUND (unpack_v8c_from_v32 (w[3])); ROUND (unpack_v8d_from_v32 (w[3]));
|
2016-04-23 18:52:16 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
2020-03-06 12:31:32 +00:00
|
|
|
ROUND (unpack_v8a_from_v32 ( w0)); ROUND (unpack_v8b_from_v32 ( w0)); ROUND (unpack_v8c_from_v32 ( w0)); ROUND (unpack_v8d_from_v32 ( w0));
|
2016-04-23 18:52:16 +00:00
|
|
|
CODE_LOOP (pw_len - 4);
|
|
|
|
break;
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|
2020-03-06 12:31:32 +00:00
|
|
|
|
|
|
|
CODE_POST_S;
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|
|
|
|
|
2019-03-22 21:27:58 +00:00
|
|
|
KERNEL_FQ void m00200_m04 (KERN_ATTR_VECTOR ())
|
2015-12-04 14:47:52 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* base
|
|
|
|
*/
|
|
|
|
|
2017-08-19 14:39:22 +00:00
|
|
|
const u64 gid = get_global_id (0);
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2022-01-04 21:57:26 +00:00
|
|
|
if (gid >= GID_CNT) return;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
u32 w[16];
|
|
|
|
|
|
|
|
w[ 0] = pws[gid].i[ 0];
|
|
|
|
w[ 1] = pws[gid].i[ 1];
|
|
|
|
w[ 2] = pws[gid].i[ 2];
|
|
|
|
w[ 3] = pws[gid].i[ 3];
|
|
|
|
w[ 4] = 0;
|
|
|
|
w[ 5] = 0;
|
|
|
|
w[ 6] = 0;
|
|
|
|
w[ 7] = 0;
|
|
|
|
w[ 8] = 0;
|
|
|
|
w[ 9] = 0;
|
|
|
|
w[10] = 0;
|
|
|
|
w[11] = 0;
|
|
|
|
w[12] = 0;
|
|
|
|
w[13] = 0;
|
|
|
|
w[14] = 0;
|
|
|
|
w[15] = 0;
|
|
|
|
|
2018-11-20 14:26:46 +00:00
|
|
|
const u32 pw_len = pws[gid].pw_len & 63;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* main
|
|
|
|
*/
|
|
|
|
|
2022-01-04 17:07:18 +00:00
|
|
|
m00200m (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_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param);
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|
|
|
|
|
2019-03-22 21:27:58 +00:00
|
|
|
KERNEL_FQ void m00200_m08 (KERN_ATTR_VECTOR ())
|
2015-12-04 14:47:52 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* base
|
|
|
|
*/
|
|
|
|
|
2017-08-19 14:39:22 +00:00
|
|
|
const u64 gid = get_global_id (0);
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2022-01-04 21:57:26 +00:00
|
|
|
if (gid >= GID_CNT) return;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
u32 w[16];
|
|
|
|
|
|
|
|
w[ 0] = pws[gid].i[ 0];
|
|
|
|
w[ 1] = pws[gid].i[ 1];
|
|
|
|
w[ 2] = pws[gid].i[ 2];
|
|
|
|
w[ 3] = pws[gid].i[ 3];
|
|
|
|
w[ 4] = pws[gid].i[ 4];
|
|
|
|
w[ 5] = pws[gid].i[ 5];
|
|
|
|
w[ 6] = pws[gid].i[ 6];
|
|
|
|
w[ 7] = pws[gid].i[ 7];
|
|
|
|
w[ 8] = 0;
|
|
|
|
w[ 9] = 0;
|
|
|
|
w[10] = 0;
|
|
|
|
w[11] = 0;
|
|
|
|
w[12] = 0;
|
|
|
|
w[13] = 0;
|
|
|
|
w[14] = 0;
|
|
|
|
w[15] = 0;
|
|
|
|
|
2018-11-20 14:26:46 +00:00
|
|
|
const u32 pw_len = pws[gid].pw_len & 63;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* main
|
|
|
|
*/
|
|
|
|
|
2022-01-04 17:07:18 +00:00
|
|
|
m00200m (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_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param);
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|
|
|
|
|
2019-03-22 21:27:58 +00:00
|
|
|
KERNEL_FQ void m00200_m16 (KERN_ATTR_VECTOR ())
|
2015-12-04 14:47:52 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* base
|
|
|
|
*/
|
|
|
|
|
2017-08-19 14:39:22 +00:00
|
|
|
const u64 gid = get_global_id (0);
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2022-01-04 21:57:26 +00:00
|
|
|
if (gid >= GID_CNT) return;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
u32 w[16];
|
|
|
|
|
|
|
|
w[ 0] = pws[gid].i[ 0];
|
|
|
|
w[ 1] = pws[gid].i[ 1];
|
|
|
|
w[ 2] = pws[gid].i[ 2];
|
|
|
|
w[ 3] = pws[gid].i[ 3];
|
|
|
|
w[ 4] = pws[gid].i[ 4];
|
|
|
|
w[ 5] = pws[gid].i[ 5];
|
|
|
|
w[ 6] = pws[gid].i[ 6];
|
|
|
|
w[ 7] = pws[gid].i[ 7];
|
|
|
|
w[ 8] = pws[gid].i[ 8];
|
|
|
|
w[ 9] = pws[gid].i[ 9];
|
|
|
|
w[10] = pws[gid].i[10];
|
|
|
|
w[11] = pws[gid].i[11];
|
|
|
|
w[12] = pws[gid].i[12];
|
|
|
|
w[13] = pws[gid].i[13];
|
|
|
|
w[14] = pws[gid].i[14];
|
|
|
|
w[15] = pws[gid].i[15];
|
|
|
|
|
2018-11-20 14:26:46 +00:00
|
|
|
const u32 pw_len = pws[gid].pw_len & 63;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* main
|
|
|
|
*/
|
|
|
|
|
2022-01-04 17:07:18 +00:00
|
|
|
m00200m (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_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param);
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|
|
|
|
|
2019-03-22 21:27:58 +00:00
|
|
|
KERNEL_FQ void m00200_s04 (KERN_ATTR_VECTOR ())
|
2015-12-04 14:47:52 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* base
|
|
|
|
*/
|
|
|
|
|
2017-08-19 14:39:22 +00:00
|
|
|
const u64 gid = get_global_id (0);
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2022-01-04 21:57:26 +00:00
|
|
|
if (gid >= GID_CNT) return;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
u32 w[16];
|
|
|
|
|
|
|
|
w[ 0] = pws[gid].i[ 0];
|
|
|
|
w[ 1] = pws[gid].i[ 1];
|
|
|
|
w[ 2] = pws[gid].i[ 2];
|
|
|
|
w[ 3] = pws[gid].i[ 3];
|
|
|
|
w[ 4] = 0;
|
|
|
|
w[ 5] = 0;
|
|
|
|
w[ 6] = 0;
|
|
|
|
w[ 7] = 0;
|
|
|
|
w[ 8] = 0;
|
|
|
|
w[ 9] = 0;
|
|
|
|
w[10] = 0;
|
|
|
|
w[11] = 0;
|
|
|
|
w[12] = 0;
|
|
|
|
w[13] = 0;
|
|
|
|
w[14] = 0;
|
|
|
|
w[15] = 0;
|
|
|
|
|
2018-11-20 14:26:46 +00:00
|
|
|
const u32 pw_len = pws[gid].pw_len & 63;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* main
|
|
|
|
*/
|
|
|
|
|
2022-01-04 17:07:18 +00:00
|
|
|
m00200s (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_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param);
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|
|
|
|
|
2019-03-22 21:27:58 +00:00
|
|
|
KERNEL_FQ void m00200_s08 (KERN_ATTR_VECTOR ())
|
2015-12-04 14:47:52 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* base
|
|
|
|
*/
|
|
|
|
|
2017-08-19 14:39:22 +00:00
|
|
|
const u64 gid = get_global_id (0);
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2022-01-04 21:57:26 +00:00
|
|
|
if (gid >= GID_CNT) return;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
u32 w[16];
|
|
|
|
|
|
|
|
w[ 0] = pws[gid].i[ 0];
|
|
|
|
w[ 1] = pws[gid].i[ 1];
|
|
|
|
w[ 2] = pws[gid].i[ 2];
|
|
|
|
w[ 3] = pws[gid].i[ 3];
|
|
|
|
w[ 4] = pws[gid].i[ 4];
|
|
|
|
w[ 5] = pws[gid].i[ 5];
|
|
|
|
w[ 6] = pws[gid].i[ 6];
|
|
|
|
w[ 7] = pws[gid].i[ 7];
|
|
|
|
w[ 8] = 0;
|
|
|
|
w[ 9] = 0;
|
|
|
|
w[10] = 0;
|
|
|
|
w[11] = 0;
|
|
|
|
w[12] = 0;
|
|
|
|
w[13] = 0;
|
|
|
|
w[14] = 0;
|
|
|
|
w[15] = 0;
|
|
|
|
|
2018-11-20 14:26:46 +00:00
|
|
|
const u32 pw_len = pws[gid].pw_len & 63;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* main
|
|
|
|
*/
|
|
|
|
|
2022-01-04 17:07:18 +00:00
|
|
|
m00200s (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_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param);
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|
|
|
|
|
2019-03-22 21:27:58 +00:00
|
|
|
KERNEL_FQ void m00200_s16 (KERN_ATTR_VECTOR ())
|
2015-12-04 14:47:52 +00:00
|
|
|
{
|
|
|
|
/**
|
|
|
|
* base
|
|
|
|
*/
|
|
|
|
|
2017-08-19 14:39:22 +00:00
|
|
|
const u64 gid = get_global_id (0);
|
2015-12-04 14:47:52 +00:00
|
|
|
|
2022-01-04 21:57:26 +00:00
|
|
|
if (gid >= GID_CNT) return;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
u32 w[16];
|
|
|
|
|
|
|
|
w[ 0] = pws[gid].i[ 0];
|
|
|
|
w[ 1] = pws[gid].i[ 1];
|
|
|
|
w[ 2] = pws[gid].i[ 2];
|
|
|
|
w[ 3] = pws[gid].i[ 3];
|
|
|
|
w[ 4] = pws[gid].i[ 4];
|
|
|
|
w[ 5] = pws[gid].i[ 5];
|
|
|
|
w[ 6] = pws[gid].i[ 6];
|
|
|
|
w[ 7] = pws[gid].i[ 7];
|
|
|
|
w[ 8] = pws[gid].i[ 8];
|
|
|
|
w[ 9] = pws[gid].i[ 9];
|
|
|
|
w[10] = pws[gid].i[10];
|
|
|
|
w[11] = pws[gid].i[11];
|
|
|
|
w[12] = pws[gid].i[12];
|
|
|
|
w[13] = pws[gid].i[13];
|
|
|
|
w[14] = pws[gid].i[14];
|
|
|
|
w[15] = pws[gid].i[15];
|
|
|
|
|
2018-11-20 14:26:46 +00:00
|
|
|
const u32 pw_len = pws[gid].pw_len & 63;
|
2015-12-04 14:47:52 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* main
|
|
|
|
*/
|
|
|
|
|
2022-01-04 17:07:18 +00:00
|
|
|
m00200s (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_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, kernel_param);
|
2015-12-04 14:47:52 +00:00
|
|
|
}
|