applied speed improvements to modes 17220 and 17230

pull/1962/head
Sein Coray 5 years ago
parent d9e5a86765
commit 06554f5071
No known key found for this signature in database
GPG Key ID: 44C4180EA69758EC

@ -550,6 +550,15 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -597,7 +606,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
u32x key1 = key1init;
u32x key2 = key2init;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -615,7 +625,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -633,7 +644,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -659,7 +671,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
u8 tmp[TMPSIZ];
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -684,7 +697,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
for (int i = 16; i < 36; i += 4)
{
next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
if (idx == 0) next = l_data[i / 4];
else next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -801,6 +815,15 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -848,7 +871,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
u32x key1 = key1init;
u32x key2 = key2init;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -866,7 +890,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -884,7 +909,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -910,7 +936,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
u8 tmp[TMPSIZ];
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -935,7 +962,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
for (int i = 16; i < 36; i += 4)
{
next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
if (idx == 0) next = l_data[i / 4];
else next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;

@ -548,6 +548,15 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -597,7 +606,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_ESALT (pkzip_t))
u32x key1 = key1init2;
u32x key2 = key2init2;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -615,7 +625,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -633,7 +644,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -659,7 +671,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_ESALT (pkzip_t))
u8 tmp[TMPSIZ];
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -684,7 +697,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_ESALT (pkzip_t))
for (int i = 16; i < 36; i += 4)
{
next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
if (idx == 0) next = l_data[i / 4];
else next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -801,6 +815,15 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -850,7 +873,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_ESALT (pkzip_t))
u32x key1 = key1init2;
u32x key2 = key2init2;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -868,7 +892,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -886,7 +911,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -912,7 +938,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_ESALT (pkzip_t))
u8 tmp[TMPSIZ];
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -937,7 +964,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_ESALT (pkzip_t))
for (int i = 16; i < 36; i += 4)
{
next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
if (idx == 0) next = l_data[i / 4];
else next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;

@ -548,6 +548,15 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -609,7 +618,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
u32x key1 = key1init;
u32x key2 = key2init;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -627,7 +637,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -645,7 +656,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -671,7 +683,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
u8 tmp[TMPSIZ];
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -696,7 +709,8 @@ KERNEL_FQ void m17220_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
for (int i = 16; i < 36; i += 4)
{
next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
if (idx == 0) next = l_data[i / 4];
else next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -874,7 +888,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
u32x key1 = key1init;
u32x key2 = key2init;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -892,7 +907,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -910,7 +926,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -936,7 +953,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
u8 tmp[TMPSIZ];
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -961,7 +979,8 @@ KERNEL_FQ void m17220_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
for (int i = 16; i < 36; i += 4)
{
next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
if (idx == 0) next = l_data[i / 4];
else next = esalt_bufs[digests_offset].hashes[idx].data[i / 4];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;

@ -243,6 +243,15 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -290,7 +299,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
u32x key1 = key1init;
u32x key2 = key2init;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -308,7 +318,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -326,7 +337,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -346,7 +358,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_RULES_ESALT (pkzip_t))
if ((plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_crc >> 8)) && (plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_timestamp >> 8))) break;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -400,6 +413,15 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -447,7 +469,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
u32x key1 = key1init;
u32x key2 = key2init;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -465,7 +488,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -483,7 +507,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -503,7 +528,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_RULES_ESALT (pkzip_t))
if ((plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_crc >> 8)) && (plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_timestamp >> 8))) break;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;

@ -241,6 +241,15 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -290,7 +299,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_ESALT (pkzip_t))
u32x key1 = key1init2;
u32x key2 = key2init2;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -308,7 +318,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -326,7 +337,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -346,7 +358,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_ESALT (pkzip_t))
if ((plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_crc >> 8)) && (plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_timestamp >> 8))) break;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -400,6 +413,15 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -449,7 +471,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_ESALT (pkzip_t))
u32x key1 = key1init2;
u32x key2 = key2init2;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -467,7 +490,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -485,7 +509,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -505,7 +530,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_ESALT (pkzip_t))
if ((plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_crc >> 8)) && (plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_timestamp >> 8))) break;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;

@ -241,6 +241,15 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -304,7 +313,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
u32x key1 = key1init;
u32x key2 = key2init;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -322,7 +332,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -340,7 +351,8 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -360,13 +372,14 @@ KERNEL_FQ void m17230_sxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
if ((plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_crc >> 8)) && (plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_timestamp >> 8))) break;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
if ((plain & 6) == 0 || (plain & 6) == 6) break;
if (idx + 1 == esalt_bufs[digests_offset].hash_count)
if (idx + 1 == hash_count)
{
/**
* digest
@ -414,6 +427,15 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
SYNC_THREADS();
LOCAL_VK u32 l_data[MAX_LOCAL];
for (u64 i = lid; i < MAX_LOCAL; i += lsz)
{
l_data[i] = esalt_bufs[digests_offset].hashes[0].data[i];
}
SYNC_THREADS();
if (gid >= gid_max) return;
/**
@ -477,7 +499,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
u32x key1 = key1init;
u32x key2 = key2init;
next = esalt_bufs[digests_offset].hashes[idx].data[0];
if (idx == 0) next = l_data[0];
else next = esalt_bufs[digests_offset].hashes[idx].data[0];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -495,7 +518,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[1];
if (idx == 0) next = l_data[1];
else next = esalt_bufs[digests_offset].hashes[idx].data[1];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -513,7 +537,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
plain = unpack_v8d_from_v32_S (next) ^ key3;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[2];
if (idx == 0) next = l_data[2];
else next = esalt_bufs[digests_offset].hashes[idx].data[2];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;
@ -533,7 +558,8 @@ KERNEL_FQ void m17230_mxx (KERN_ATTR_VECTOR_ESALT (pkzip_t))
if ((plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_crc >> 8)) && (plain != (esalt_bufs[digests_offset].hashes[idx].checksum_from_timestamp >> 8))) break;
update_key012 (key0, key1, key2, plain, l_crc32tab);
next = esalt_bufs[digests_offset].hashes[idx].data[3];
if (idx == 0) next = l_data[3];
else next = esalt_bufs[digests_offset].hashes[idx].data[3];
update_key3 (key2, key3);
plain = unpack_v8a_from_v32_S (next) ^ key3;

Loading…
Cancel
Save