#include "OpenCL/rp.c"
#include "OpenCL/simd.c"
-static void md5_transform (const u32x w0[4], const u32x w1[4], const u32x w2[4], const u32x w3[4], u32x digest[4])
+void md5_transform (const u32x w0[4], const u32x w1[4], const u32x w2[4], const u32x w3[4], u32x digest[4])
{
u32x a = digest[0];
u32x b = digest[1];
digest[3] += d;
}
-static void gen336 (u32x digest_pre[4], u32 salt_buf[4], u32x digest[4])
+void gen336 (u32x digest_pre[4], u32 salt_buf[4], u32x digest[4])
{
u32x digest_t0[2];
u32x digest_t1[2];
if (gid >= gid_max) return;
u32 pw_buf0[4];
+ u32 pw_buf1[4];
pw_buf0[0] = pws[gid].i[ 0];
pw_buf0[1] = pws[gid].i[ 1];
pw_buf0[2] = pws[gid].i[ 2];
pw_buf0[3] = pws[gid].i[ 3];
-
- u32 pw_buf1[4];
-
pw_buf1[0] = pws[gid].i[ 4];
pw_buf1[1] = pws[gid].i[ 5];
pw_buf1[2] = pws[gid].i[ 6];
append_0x80_2x4_VV (w0, w1, out_len);
- u32x w0_t[4];
- u32x w1_t[4];
- u32x w2_t[4];
- u32x w3_t[4];
+ /**
+ * md5
+ */
- make_unicode (w0, w0_t, w1_t);
- make_unicode (w1, w2_t, w3_t);
+ make_unicode (w1, w2, w3);
+ make_unicode (w0, w0, w1);
- w3_t[2] = out_len * 8 * 2;
+ w3[2] = out_len * 8 * 2;
+ w3[3] = 0;
u32x digest_pre[4];
digest_pre[2] = MD5M_C;
digest_pre[3] = MD5M_D;
- md5_transform (w0_t, w1_t, w2_t, w3_t, digest_pre);
+ md5_transform (w0, w1, w2, w3, digest_pre);
digest_pre[0] &= 0xffffffff;
digest_pre[1] &= 0x000000ff;
u32x a = digest[0];
u32x b = digest[1] & 0xff;
+ u32x c = 0;
+ u32x d = 0;
COMPARE_M_SIMD (a, b, c, d);
}
if (gid >= gid_max) return;
u32 pw_buf0[4];
+ u32 pw_buf1[4];
pw_buf0[0] = pws[gid].i[ 0];
pw_buf0[1] = pws[gid].i[ 1];
pw_buf0[2] = pws[gid].i[ 2];
pw_buf0[3] = pws[gid].i[ 3];
-
- u32 pw_buf1[4];
-
pw_buf1[0] = pws[gid].i[ 4];
pw_buf1[1] = pws[gid].i[ 5];
pw_buf1[2] = pws[gid].i[ 6];
const u32 pw_len = pws[gid].pw_len;
+ /**
+ * salt
+ */
+
+ u32 salt_buf[4];
+
+ salt_buf[0] = salt_bufs[salt_pos].salt_buf[0];
+ salt_buf[1] = salt_bufs[salt_pos].salt_buf[1];
+ salt_buf[2] = salt_bufs[salt_pos].salt_buf[2];
+ salt_buf[3] = salt_bufs[salt_pos].salt_buf[3];
+
/**
* digest
*/
digests_buf[digests_offset].digest_buf[DGST_R3]
};
- /**
- * salt
- */
-
- u32 salt_buf[4];
-
- salt_buf[0] = salt_bufs[salt_pos].salt_buf[0];
- salt_buf[1] = salt_bufs[salt_pos].salt_buf[1];
- salt_buf[2] = salt_bufs[salt_pos].salt_buf[2];
- salt_buf[3] = salt_bufs[salt_pos].salt_buf[3];
-
/**
* loop
*/
append_0x80_2x4_VV (w0, w1, out_len);
- u32x w0_t[4];
- u32x w1_t[4];
- u32x w2_t[4];
- u32x w3_t[4];
+ /**
+ * md5
+ */
- make_unicode (w0, w0_t, w1_t);
- make_unicode (w1, w2_t, w3_t);
+ make_unicode (w1, w2, w3);
+ make_unicode (w0, w0, w1);
- w3_t[2] = out_len * 8 * 2;
+ w3[2] = out_len * 8 * 2;
+ w3[3] = 0;
u32x digest_pre[4];
digest_pre[2] = MD5M_C;
digest_pre[3] = MD5M_D;
- md5_transform (w0_t, w1_t, w2_t, w3_t, digest_pre);
+ md5_transform (w0, w1, w2, w3, digest_pre);
digest_pre[0] &= 0xffffffff;
digest_pre[1] &= 0x000000ff;
u32x a = digest[0];
u32x b = digest[1] & 0xff;
+ u32x c = 0;
+ u32x d = 0;
COMPARE_S_SIMD (a, b, c, d);
}