From 3c1ddc8149b8826c323fb607f388b6eb86e4ff20 Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Thu, 2 Apr 2020 14:55:04 +0200 Subject: [PATCH] Revert "Precompute some constants to improve performance of -m 780x SAP kernels" This reverts commit b1bb47c1ae2bc61cf992fc00515670effe09a9ba. --- OpenCL/m07800_a0-optimized.cl | 456 +++++++++++---------------------- OpenCL/m07800_a1-optimized.cl | 464 +++++++++++----------------------- OpenCL/m07800_a3-optimized.cl | 426 ++++++++----------------------- OpenCL/m07801_a0-optimized.cl | 456 +++++++++++---------------------- OpenCL/m07801_a1-optimized.cl | 464 +++++++++++----------------------- OpenCL/m07801_a3-optimized.cl | 426 ++++++++----------------------- 6 files changed, 794 insertions(+), 1898 deletions(-) diff --git a/OpenCL/m07800_a0-optimized.cl b/OpenCL/m07800_a0-optimized.cl index 92f46097c..7dab142cb 100644 --- a/OpenCL/m07800_a0-optimized.cl +++ b/OpenCL/m07800_a0-optimized.cl @@ -17,90 +17,30 @@ #include "inc_hash_sha1.cl" #endif -CONSTANT_VK u32a theMagicArray[80][16] = +CONSTANT_VK u32a theMagicArray[64] = { - { 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194 }, - { 0xac51149f, 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f }, - { 0x51149f67, 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b }, - { 0x149f6754, 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1 }, - { 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b }, - { 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06 }, - { 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605 }, - { 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d }, - { 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03 }, - { 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d }, - { 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e }, - { 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13 }, - { 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a }, - { 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e }, - { 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a }, - { 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a }, - { 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8 }, - { 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9 }, - { 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c }, - { 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14 }, - { 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417 }, - { 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758 }, - { 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7 }, - { 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a }, - { 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6 }, - { 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1 }, - { 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199 }, - { 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963 }, - { 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a }, - { 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7 }, - { 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd }, - { 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70 }, - { 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3 }, - { 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6 }, - { 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e }, - { 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74 }, - { 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413 }, - { 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303 }, - { 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9 }, - { 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b }, - { 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04 }, - { 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426 }, - { 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698 }, - { 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7 }, - { 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726 }, - { 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a }, - { 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92 }, - { 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293 }, - { 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325 }, - { 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0 }, - { 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2 }, - { 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d }, - { 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23 }, - { 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed }, - { 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63 }, - { 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379 }, - { 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d }, - { 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13 }, - { 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332 }, - { 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa }, - { 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c }, - { 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35 }, - { 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502 }, - { 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a }, - { 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3 }, - { 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3 }, - { 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd }, - { 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e }, - { 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a }, - { 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24 }, - { 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf }, - { 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51 }, - { 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3 }, - { 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c }, - { 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd }, - { 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55 }, - { 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f }, - { 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c, 0xcd559f37 }, - { 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd, 0x559f37af }, - { 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55, 0x9f37af94 }, + 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, + 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, + 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, + 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, + 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f, 0x37af944c, 0x29085282, 0xb23b4e37, 0x9f170791, 0x113bfdcd, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; +DECLSPEC u32 GETSHIFTEDINT_CONST (CONSTANT_AS u32a *a, const int n) +{ + const int d = n / 4; + const int m = n & 3; + + u64 tmp = hl32_to_64_S (a[d + 0], a[d + 1]); + + tmp <<= m * 8; + + return h32_from_64_S (tmp); +} + DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) { const int d = n / 4; @@ -116,52 +56,20 @@ DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) KERNEL_FQ void m07800_m04 (KERN_ATTR_RULES ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * modifier */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else + const u64 lid = get_local_id (0); - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; + /** + * base + */ - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; - /** - * modifier - */ - u32 pw_buf0[4]; u32 pw_buf1[4]; @@ -182,14 +90,14 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_RULES ()) u32 salt_buf[8]; - salt_buf[0] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[0]); - salt_buf[1] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[1]); - salt_buf[2] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[2]); - salt_buf[3] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[3]); - salt_buf[4] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[4]); - salt_buf[5] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[5]); - salt_buf[6] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[6]); - salt_buf[7] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[7]); + 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]; + salt_buf[4] = salt_bufs[salt_pos].salt_buf[4]; + salt_buf[5] = salt_bufs[salt_pos].salt_buf[5]; + salt_buf[6] = salt_bufs[salt_pos].salt_buf[6]; + salt_buf[7] = salt_bufs[salt_pos].salt_buf[7]; const u32 salt_len = salt_bufs[salt_pos].salt_len; @@ -206,15 +114,6 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_RULES ()) const u32x out_len = apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - /** * SAP */ @@ -241,7 +140,7 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_RULES ()) s3[2] = 0; s3[3] = 0; - switch_buffer_by_offset_be_S (s0, s1, s2, s3, out_len); + switch_buffer_by_offset_le_VV (s0, s1, s2, s3, out_len); const u32x pw_salt_len = out_len + salt_len; @@ -251,20 +150,20 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_RULES ()) u32 final[32]; - final[ 0] = w0[0] | s0[0]; - final[ 1] = w0[1] | s0[1]; - final[ 2] = w0[2] | s0[2]; - final[ 3] = w0[3] | s0[3]; - final[ 4] = w1[0] | s1[0]; - final[ 5] = w1[1] | s1[1]; - final[ 6] = w1[2] | s1[2]; - final[ 7] = w1[3] | s1[3]; - final[ 8] = w2[0] | s2[0]; - final[ 9] = w2[1] | s2[1]; - final[10] = w2[2] | s2[2]; - final[11] = w2[3] | s2[3]; - final[12] = w3[0] | s3[0]; - final[13] = w3[1] | s3[1]; + final[ 0] = hc_swap32_S (w0[0] | s0[0]); + final[ 1] = hc_swap32_S (w0[1] | s0[1]); + final[ 2] = hc_swap32_S (w0[2] | s0[2]); + final[ 3] = hc_swap32_S (w0[3] | s0[3]); + final[ 4] = hc_swap32_S (w1[0] | s1[0]); + final[ 5] = hc_swap32_S (w1[1] | s1[1]); + final[ 6] = hc_swap32_S (w1[2] | s1[2]); + final[ 7] = hc_swap32_S (w1[3] | s1[3]); + final[ 8] = hc_swap32_S (w2[0] | s2[0]); + final[ 9] = hc_swap32_S (w2[1] | s2[1]); + final[10] = hc_swap32_S (w2[2] | s2[2]); + final[11] = hc_swap32_S (w2[3] | s2[3]); + final[12] = hc_swap32_S (w3[0] | s3[0]); + final[13] = hc_swap32_S (w3[1] | s3[1]); final[14] = 0; final[15] = pw_salt_len * 8; final[16] = 0; @@ -328,61 +227,49 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_RULES ()) digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = hc_swap32_S (w0[0]); + final[ 1] = hc_swap32_S (w0[1]); + final[ 2] = hc_swap32_S (w0[2]); + final[ 3] = hc_swap32_S (w0[3]); + final[ 4] = hc_swap32_S (w1[0]); + final[ 5] = hc_swap32_S (w1[1]); + final[ 6] = hc_swap32_S (w1[2]); + final[ 7] = hc_swap32_S (w1[3]); + final[ 8] = 0; + final[ 9] = 0; + final[10] = 0; + final[11] = 0; + final[12] = 0; + final[13] = 0; + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, out_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = out_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { - const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] + const u32 tmp = hc_swap32_S (salt_buf[i / 4]); // attention, int[] not char[] SETSHIFTEDINT (final, final_len + i, tmp); } @@ -421,52 +308,20 @@ KERNEL_FQ void m07800_m16 (KERN_ATTR_RULES ()) KERNEL_FQ void m07800_s04 (KERN_ATTR_RULES ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * modifier */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else + const u64 lid = get_local_id (0); - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; + /** + * base + */ - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; - /** - * modifier - */ - u32 pw_buf0[4]; u32 pw_buf1[4]; @@ -487,14 +342,14 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_RULES ()) u32 salt_buf[8]; - salt_buf[0] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[0]); - salt_buf[1] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[1]); - salt_buf[2] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[2]); - salt_buf[3] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[3]); - salt_buf[4] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[4]); - salt_buf[5] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[5]); - salt_buf[6] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[6]); - salt_buf[7] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[7]); + 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]; + salt_buf[4] = salt_bufs[salt_pos].salt_buf[4]; + salt_buf[5] = salt_bufs[salt_pos].salt_buf[5]; + salt_buf[6] = salt_bufs[salt_pos].salt_buf[6]; + salt_buf[7] = salt_bufs[salt_pos].salt_buf[7]; const u32 salt_len = salt_bufs[salt_pos].salt_len; @@ -523,15 +378,6 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_RULES ()) const u32x out_len = apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - /** * SAP */ @@ -558,7 +404,7 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_RULES ()) s3[2] = 0; s3[3] = 0; - switch_buffer_by_offset_be_S (s0, s1, s2, s3, out_len); + switch_buffer_by_offset_le_VV (s0, s1, s2, s3, out_len); const u32x pw_salt_len = out_len + salt_len; @@ -568,20 +414,20 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_RULES ()) u32 final[32]; - final[ 0] = w0[0] | s0[0]; - final[ 1] = w0[1] | s0[1]; - final[ 2] = w0[2] | s0[2]; - final[ 3] = w0[3] | s0[3]; - final[ 4] = w1[0] | s1[0]; - final[ 5] = w1[1] | s1[1]; - final[ 6] = w1[2] | s1[2]; - final[ 7] = w1[3] | s1[3]; - final[ 8] = w2[0] | s2[0]; - final[ 9] = w2[1] | s2[1]; - final[10] = w2[2] | s2[2]; - final[11] = w2[3] | s2[3]; - final[12] = w3[0] | s3[0]; - final[13] = w3[1] | s3[1]; + final[ 0] = hc_swap32_S (w0[0] | s0[0]); + final[ 1] = hc_swap32_S (w0[1] | s0[1]); + final[ 2] = hc_swap32_S (w0[2] | s0[2]); + final[ 3] = hc_swap32_S (w0[3] | s0[3]); + final[ 4] = hc_swap32_S (w1[0] | s1[0]); + final[ 5] = hc_swap32_S (w1[1] | s1[1]); + final[ 6] = hc_swap32_S (w1[2] | s1[2]); + final[ 7] = hc_swap32_S (w1[3] | s1[3]); + final[ 8] = hc_swap32_S (w2[0] | s2[0]); + final[ 9] = hc_swap32_S (w2[1] | s2[1]); + final[10] = hc_swap32_S (w2[2] | s2[2]); + final[11] = hc_swap32_S (w2[3] | s2[3]); + final[12] = hc_swap32_S (w3[0] | s3[0]); + final[13] = hc_swap32_S (w3[1] | s3[1]); final[14] = 0; final[15] = pw_salt_len * 8; final[16] = 0; @@ -645,61 +491,49 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_RULES ()) digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = hc_swap32_S (w0[0]); + final[ 1] = hc_swap32_S (w0[1]); + final[ 2] = hc_swap32_S (w0[2]); + final[ 3] = hc_swap32_S (w0[3]); + final[ 4] = hc_swap32_S (w1[0]); + final[ 5] = hc_swap32_S (w1[1]); + final[ 6] = hc_swap32_S (w1[2]); + final[ 7] = hc_swap32_S (w1[3]); + final[ 8] = 0; + final[ 9] = 0; + final[10] = 0; + final[11] = 0; + final[12] = 0; + final[13] = 0; + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, out_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = out_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { - const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] + const u32 tmp = hc_swap32_S (salt_buf[i / 4]); // attention, int[] not char[] SETSHIFTEDINT (final, final_len + i, tmp); } diff --git a/OpenCL/m07800_a1-optimized.cl b/OpenCL/m07800_a1-optimized.cl index 1449476e8..0ce766c16 100644 --- a/OpenCL/m07800_a1-optimized.cl +++ b/OpenCL/m07800_a1-optimized.cl @@ -15,90 +15,30 @@ #include "inc_hash_sha1.cl" #endif -CONSTANT_VK u32a theMagicArray[80][16] = +CONSTANT_VK u32a theMagicArray[64] = { - { 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194 }, - { 0xac51149f, 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f }, - { 0x51149f67, 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b }, - { 0x149f6754, 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1 }, - { 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b }, - { 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06 }, - { 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605 }, - { 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d }, - { 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03 }, - { 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d }, - { 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e }, - { 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13 }, - { 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a }, - { 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e }, - { 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a }, - { 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a }, - { 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8 }, - { 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9 }, - { 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c }, - { 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14 }, - { 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417 }, - { 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758 }, - { 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7 }, - { 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a }, - { 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6 }, - { 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1 }, - { 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199 }, - { 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963 }, - { 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a }, - { 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7 }, - { 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd }, - { 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70 }, - { 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3 }, - { 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6 }, - { 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e }, - { 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74 }, - { 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413 }, - { 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303 }, - { 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9 }, - { 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b }, - { 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04 }, - { 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426 }, - { 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698 }, - { 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7 }, - { 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726 }, - { 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a }, - { 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92 }, - { 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293 }, - { 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325 }, - { 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0 }, - { 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2 }, - { 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d }, - { 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23 }, - { 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed }, - { 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63 }, - { 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379 }, - { 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d }, - { 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13 }, - { 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332 }, - { 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa }, - { 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c }, - { 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35 }, - { 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502 }, - { 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a }, - { 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3 }, - { 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3 }, - { 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd }, - { 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e }, - { 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a }, - { 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24 }, - { 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf }, - { 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51 }, - { 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3 }, - { 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c }, - { 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd }, - { 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55 }, - { 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f }, - { 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c, 0xcd559f37 }, - { 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd, 0x559f37af }, - { 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55, 0x9f37af94 }, + 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, + 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, + 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, + 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, + 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f, 0x37af944c, 0x29085282, 0xb23b4e37, 0x9f170791, 0x113bfdcd, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; +DECLSPEC u32 GETSHIFTEDINT_CONST (CONSTANT_AS u32a *a, const int n) +{ + const int d = n / 4; + const int m = n & 3; + + u64 tmp = hl32_to_64_S (a[d + 0], a[d + 1]); + + tmp <<= m * 8; + + return h32_from_64_S (tmp); +} + DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) { const int d = n / 4; @@ -114,45 +54,17 @@ DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * modifier */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else + const u64 lid = get_local_id (0); - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; + /** + * base + */ - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -176,14 +88,14 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) u32 salt_buf[8]; - salt_buf[0] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[0]); - salt_buf[1] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[1]); - salt_buf[2] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[2]); - salt_buf[3] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[3]); - salt_buf[4] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[4]); - salt_buf[5] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[5]); - salt_buf[6] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[6]); - salt_buf[7] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[7]); + 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]; + salt_buf[4] = salt_bufs[salt_pos].salt_buf[4]; + salt_buf[5] = salt_bufs[salt_pos].salt_buf[5]; + salt_buf[6] = salt_bufs[salt_pos].salt_buf[6]; + salt_buf[7] = salt_bufs[salt_pos].salt_buf[7]; const u32 salt_len = salt_bufs[salt_pos].salt_len; @@ -260,23 +172,6 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) w3[2] = wordl3[2] | wordr3[2]; w3[3] = wordl3[3] | wordr3[3]; - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - w2[0] = hc_swap32_S (w2[0]); - w2[1] = hc_swap32_S (w2[1]); - w2[2] = hc_swap32_S (w2[2]); - w2[3] = hc_swap32_S (w2[3]); - w3[0] = hc_swap32_S (w3[0]); - w3[1] = hc_swap32_S (w3[1]); - w3[2] = hc_swap32_S (w3[2]); - w3[3] = hc_swap32_S (w3[3]); - /** * SAP */ @@ -303,7 +198,7 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) s3[2] = 0; s3[3] = 0; - switch_buffer_by_offset_be_S (s0, s1, s2, s3, pw_len); + switch_buffer_by_offset_le_VV (s0, s1, s2, s3, pw_len); const u32x pw_salt_len = pw_len + salt_len; @@ -313,20 +208,20 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) u32 final[32]; - final[ 0] = w0[0] | s0[0]; - final[ 1] = w0[1] | s0[1]; - final[ 2] = w0[2] | s0[2]; - final[ 3] = w0[3] | s0[3]; - final[ 4] = w1[0] | s1[0]; - final[ 5] = w1[1] | s1[1]; - final[ 6] = w1[2] | s1[2]; - final[ 7] = w1[3] | s1[3]; - final[ 8] = w2[0] | s2[0]; - final[ 9] = w2[1] | s2[1]; - final[10] = w2[2] | s2[2]; - final[11] = w2[3] | s2[3]; - final[12] = w3[0] | s3[0]; - final[13] = w3[1] | s3[1]; + final[ 0] = hc_swap32_S (w0[0] | s0[0]); + final[ 1] = hc_swap32_S (w0[1] | s0[1]); + final[ 2] = hc_swap32_S (w0[2] | s0[2]); + final[ 3] = hc_swap32_S (w0[3] | s0[3]); + final[ 4] = hc_swap32_S (w1[0] | s1[0]); + final[ 5] = hc_swap32_S (w1[1] | s1[1]); + final[ 6] = hc_swap32_S (w1[2] | s1[2]); + final[ 7] = hc_swap32_S (w1[3] | s1[3]); + final[ 8] = hc_swap32_S (w2[0] | s2[0]); + final[ 9] = hc_swap32_S (w2[1] | s2[1]); + final[10] = hc_swap32_S (w2[2] | s2[2]); + final[11] = hc_swap32_S (w2[3] | s2[3]); + final[12] = hc_swap32_S (w3[0] | s3[0]); + final[13] = hc_swap32_S (w3[1] | s3[1]); final[14] = 0; final[15] = pw_salt_len * 8; final[16] = 0; @@ -390,61 +285,49 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = hc_swap32_S (w0[0]); + final[ 1] = hc_swap32_S (w0[1]); + final[ 2] = hc_swap32_S (w0[2]); + final[ 3] = hc_swap32_S (w0[3]); + final[ 4] = hc_swap32_S (w1[0]); + final[ 5] = hc_swap32_S (w1[1]); + final[ 6] = hc_swap32_S (w1[2]); + final[ 7] = hc_swap32_S (w1[3]); + final[ 8] = hc_swap32_S (w2[0]); + final[ 9] = hc_swap32_S (w2[1]); + final[10] = hc_swap32_S (w2[2]); + final[11] = hc_swap32_S (w2[3]); + final[12] = hc_swap32_S (w3[0]); + final[13] = hc_swap32_S (w3[1]); + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, pw_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = pw_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { - const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] + const u32 tmp = hc_swap32_S (salt_buf[i / 4]); // attention, int[] not char[] SETSHIFTEDINT (final, final_len + i, tmp); } @@ -483,45 +366,17 @@ KERNEL_FQ void m07800_m16 (KERN_ATTR_BASIC ()) KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * modifier */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else + const u64 lid = get_local_id (0); - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; + /** + * base + */ - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -545,14 +400,14 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) u32 salt_buf[8]; - salt_buf[0] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[0]); - salt_buf[1] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[1]); - salt_buf[2] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[2]); - salt_buf[3] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[3]); - salt_buf[4] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[4]); - salt_buf[5] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[5]); - salt_buf[6] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[6]); - salt_buf[7] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[7]); + 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]; + salt_buf[4] = salt_bufs[salt_pos].salt_buf[4]; + salt_buf[5] = salt_bufs[salt_pos].salt_buf[5]; + salt_buf[6] = salt_bufs[salt_pos].salt_buf[6]; + salt_buf[7] = salt_bufs[salt_pos].salt_buf[7]; const u32 salt_len = salt_bufs[salt_pos].salt_len; @@ -641,23 +496,6 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) w3[2] = wordl3[2] | wordr3[2]; w3[3] = wordl3[3] | wordr3[3]; - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - w2[0] = hc_swap32_S (w2[0]); - w2[1] = hc_swap32_S (w2[1]); - w2[2] = hc_swap32_S (w2[2]); - w2[3] = hc_swap32_S (w2[3]); - w3[0] = hc_swap32_S (w3[0]); - w3[1] = hc_swap32_S (w3[1]); - w3[2] = hc_swap32_S (w3[2]); - w3[3] = hc_swap32_S (w3[3]); - /** * SAP */ @@ -684,7 +522,7 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) s3[2] = 0; s3[3] = 0; - switch_buffer_by_offset_be_S (s0, s1, s2, s3, pw_len); + switch_buffer_by_offset_le_VV (s0, s1, s2, s3, pw_len); const u32x pw_salt_len = pw_len + salt_len; @@ -694,20 +532,20 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) u32 final[32]; - final[ 0] = w0[0] | s0[0]; - final[ 1] = w0[1] | s0[1]; - final[ 2] = w0[2] | s0[2]; - final[ 3] = w0[3] | s0[3]; - final[ 4] = w1[0] | s1[0]; - final[ 5] = w1[1] | s1[1]; - final[ 6] = w1[2] | s1[2]; - final[ 7] = w1[3] | s1[3]; - final[ 8] = w2[0] | s2[0]; - final[ 9] = w2[1] | s2[1]; - final[10] = w2[2] | s2[2]; - final[11] = w2[3] | s2[3]; - final[12] = w3[0] | s3[0]; - final[13] = w3[1] | s3[1]; + final[ 0] = hc_swap32_S (w0[0] | s0[0]); + final[ 1] = hc_swap32_S (w0[1] | s0[1]); + final[ 2] = hc_swap32_S (w0[2] | s0[2]); + final[ 3] = hc_swap32_S (w0[3] | s0[3]); + final[ 4] = hc_swap32_S (w1[0] | s1[0]); + final[ 5] = hc_swap32_S (w1[1] | s1[1]); + final[ 6] = hc_swap32_S (w1[2] | s1[2]); + final[ 7] = hc_swap32_S (w1[3] | s1[3]); + final[ 8] = hc_swap32_S (w2[0] | s2[0]); + final[ 9] = hc_swap32_S (w2[1] | s2[1]); + final[10] = hc_swap32_S (w2[2] | s2[2]); + final[11] = hc_swap32_S (w2[3] | s2[3]); + final[12] = hc_swap32_S (w3[0] | s3[0]); + final[13] = hc_swap32_S (w3[1] | s3[1]); final[14] = 0; final[15] = pw_salt_len * 8; final[16] = 0; @@ -771,61 +609,49 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = hc_swap32_S (w0[0]); + final[ 1] = hc_swap32_S (w0[1]); + final[ 2] = hc_swap32_S (w0[2]); + final[ 3] = hc_swap32_S (w0[3]); + final[ 4] = hc_swap32_S (w1[0]); + final[ 5] = hc_swap32_S (w1[1]); + final[ 6] = hc_swap32_S (w1[2]); + final[ 7] = hc_swap32_S (w1[3]); + final[ 8] = hc_swap32_S (w2[0]); + final[ 9] = hc_swap32_S (w2[1]); + final[10] = hc_swap32_S (w2[2]); + final[11] = hc_swap32_S (w2[3]); + final[12] = hc_swap32_S (w3[0]); + final[13] = hc_swap32_S (w3[1]); + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, pw_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = pw_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { - const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] + const u32 tmp = hc_swap32_S (salt_buf[i / 4]); // attention, int[] not char[] SETSHIFTEDINT (final, final_len + i, tmp); } diff --git a/OpenCL/m07800_a3-optimized.cl b/OpenCL/m07800_a3-optimized.cl index fd58ed661..4ee34d3dc 100644 --- a/OpenCL/m07800_a3-optimized.cl +++ b/OpenCL/m07800_a3-optimized.cl @@ -15,90 +15,30 @@ #include "inc_hash_sha1.cl" #endif -CONSTANT_VK u32a theMagicArray[80][16] = +CONSTANT_VK u32a theMagicArray[64] = { - { 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194 }, - { 0xac51149f, 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f }, - { 0x51149f67, 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b }, - { 0x149f6754, 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1 }, - { 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b }, - { 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06 }, - { 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605 }, - { 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d }, - { 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03 }, - { 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d }, - { 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e }, - { 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13 }, - { 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a }, - { 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e }, - { 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a }, - { 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a }, - { 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8 }, - { 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9 }, - { 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c }, - { 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14 }, - { 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417 }, - { 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758 }, - { 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7 }, - { 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a }, - { 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6 }, - { 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1 }, - { 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199 }, - { 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963 }, - { 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a }, - { 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7 }, - { 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd }, - { 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70 }, - { 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3 }, - { 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6 }, - { 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e }, - { 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74 }, - { 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413 }, - { 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303 }, - { 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9 }, - { 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b }, - { 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04 }, - { 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426 }, - { 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698 }, - { 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7 }, - { 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726 }, - { 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a }, - { 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92 }, - { 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293 }, - { 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325 }, - { 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0 }, - { 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2 }, - { 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d }, - { 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23 }, - { 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed }, - { 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63 }, - { 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379 }, - { 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d }, - { 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13 }, - { 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332 }, - { 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa }, - { 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c }, - { 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35 }, - { 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502 }, - { 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a }, - { 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3 }, - { 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3 }, - { 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd }, - { 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e }, - { 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a }, - { 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24 }, - { 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf }, - { 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51 }, - { 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3 }, - { 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c }, - { 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd }, - { 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55 }, - { 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f }, - { 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c, 0xcd559f37 }, - { 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd, 0x559f37af }, - { 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55, 0x9f37af94 }, + 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, + 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, + 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, + 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, + 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f, 0x37af944c, 0x29085282, 0xb23b4e37, 0x9f170791, 0x113bfdcd, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; +DECLSPEC u32 GETSHIFTEDINT_CONST (CONSTANT_AS u32a *a, const int n) +{ + const int d = n / 4; + const int m = n & 3; + + u64 tmp = hl32_to_64_S (a[d + 0], a[d + 1]); + + tmp <<= m * 8; + + return h32_from_64_S (tmp); +} + DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) { const int d = n / 4; @@ -112,7 +52,7 @@ DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) a[d + 1] = l32_from_64_S (tmp); } -DECLSPEC void m07800m (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC ()) +DECLSPEC void m07800m (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC ()) { /** * modifier @@ -261,59 +201,47 @@ DECLSPEC void m07800m (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = w0[0]; + final[ 1] = w0[1]; + final[ 2] = w0[2]; + final[ 3] = w0[3]; + final[ 4] = w1[0]; + final[ 5] = w1[1]; + final[ 6] = w1[2]; + final[ 7] = w1[3]; + final[ 8] = 0; + final[ 9] = 0; + final[10] = 0; + final[11] = 0; + final[12] = 0; + final[13] = 0; + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + SETSHIFTEDINT (final, final_len + i, tmp); + } - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, pw_len); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - u32 final_len = pw_len + lengthMagicArray; + SETSHIFTEDINT (final, final_len + i, tmp); + + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] @@ -344,7 +272,7 @@ DECLSPEC void m07800m (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u } } -DECLSPEC void m07800s (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC ()) +DECLSPEC void m07800s (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC ()) { /** * modifier @@ -505,59 +433,47 @@ DECLSPEC void m07800s (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = w0[0]; + final[ 1] = w0[1]; + final[ 2] = w0[2]; + final[ 3] = w0[3]; + final[ 4] = w1[0]; + final[ 5] = w1[1]; + final[ 6] = w1[2]; + final[ 7] = w1[3]; + final[ 8] = 0; + final[ 9] = 0; + final[10] = 0; + final[11] = 0; + final[12] = 0; + final[13] = 0; + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, pw_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = pw_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] @@ -590,45 +506,11 @@ DECLSPEC void m07800s (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * base */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else - - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; - - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -636,6 +518,8 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) * modifier */ + //const u64 lid = get_local_id (0); + u32 w0[4]; w0[0] = pws[gid].i[ 0]; @@ -670,50 +554,16 @@ KERNEL_FQ void m07800_m04 (KERN_ATTR_BASIC ()) * main */ - m07800m (s_theMagicArray, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); + m07800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); } KERNEL_FQ void m07800_m08 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * base */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else - - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; - - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -721,6 +571,8 @@ KERNEL_FQ void m07800_m08 (KERN_ATTR_BASIC ()) * modifier */ + //const u64 lid = get_local_id (0); + u32 w0[4]; w0[0] = pws[gid].i[ 0]; @@ -755,7 +607,7 @@ KERNEL_FQ void m07800_m08 (KERN_ATTR_BASIC ()) * main */ - m07800m (s_theMagicArray, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); + m07800m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); } KERNEL_FQ void m07800_m16 (KERN_ATTR_BASIC ()) @@ -764,45 +616,11 @@ KERNEL_FQ void m07800_m16 (KERN_ATTR_BASIC ()) KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * base */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else - - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; - - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -810,6 +628,8 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) * modifier */ + //const u64 lid = get_local_id (0); + u32 w0[4]; w0[0] = pws[gid].i[ 0]; @@ -844,50 +664,16 @@ KERNEL_FQ void m07800_s04 (KERN_ATTR_BASIC ()) * main */ - m07800s (s_theMagicArray, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); + m07800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); } KERNEL_FQ void m07800_s08 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * base */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else - - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; - - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -895,6 +681,8 @@ KERNEL_FQ void m07800_s08 (KERN_ATTR_BASIC ()) * modifier */ + //const u64 lid = get_local_id (0); + u32 w0[4]; w0[0] = pws[gid].i[ 0]; @@ -929,7 +717,7 @@ KERNEL_FQ void m07800_s08 (KERN_ATTR_BASIC ()) * main */ - m07800s (s_theMagicArray, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); + m07800s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); } KERNEL_FQ void m07800_s16 (KERN_ATTR_BASIC ()) diff --git a/OpenCL/m07801_a0-optimized.cl b/OpenCL/m07801_a0-optimized.cl index c464d83dc..13059adfe 100644 --- a/OpenCL/m07801_a0-optimized.cl +++ b/OpenCL/m07801_a0-optimized.cl @@ -17,90 +17,30 @@ #include "inc_hash_sha1.cl" #endif -CONSTANT_VK u32a theMagicArray[80][16] = +CONSTANT_VK u32a theMagicArray[64] = { - { 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194 }, - { 0xac51149f, 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f }, - { 0x51149f67, 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b }, - { 0x149f6754, 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1 }, - { 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b }, - { 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06 }, - { 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605 }, - { 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d }, - { 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03 }, - { 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d }, - { 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e }, - { 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13 }, - { 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a }, - { 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e }, - { 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a }, - { 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a }, - { 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8 }, - { 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9 }, - { 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c }, - { 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14 }, - { 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417 }, - { 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758 }, - { 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7 }, - { 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a }, - { 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6 }, - { 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1 }, - { 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199 }, - { 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963 }, - { 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a }, - { 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7 }, - { 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd }, - { 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70 }, - { 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3 }, - { 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6 }, - { 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e }, - { 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74 }, - { 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413 }, - { 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303 }, - { 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9 }, - { 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b }, - { 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04 }, - { 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426 }, - { 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698 }, - { 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7 }, - { 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726 }, - { 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a }, - { 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92 }, - { 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293 }, - { 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325 }, - { 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0 }, - { 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2 }, - { 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d }, - { 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23 }, - { 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed }, - { 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63 }, - { 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379 }, - { 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d }, - { 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13 }, - { 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332 }, - { 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa }, - { 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c }, - { 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35 }, - { 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502 }, - { 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a }, - { 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3 }, - { 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3 }, - { 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd }, - { 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e }, - { 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a }, - { 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24 }, - { 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf }, - { 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51 }, - { 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3 }, - { 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c }, - { 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd }, - { 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55 }, - { 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f }, - { 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c, 0xcd559f37 }, - { 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd, 0x559f37af }, - { 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55, 0x9f37af94 }, + 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, + 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, + 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, + 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, + 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f, 0x37af944c, 0x29085282, 0xb23b4e37, 0x9f170791, 0x113bfdcd, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; +DECLSPEC u32 GETSHIFTEDINT_CONST (CONSTANT_AS u32a *a, const int n) +{ + const int d = n / 4; + const int m = n & 3; + + u64 tmp = hl32_to_64_S (a[d + 0], a[d + 1]); + + tmp <<= m * 8; + + return h32_from_64_S (tmp); +} + DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) { const int d = n / 4; @@ -116,52 +56,20 @@ DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) KERNEL_FQ void m07801_m04 (KERN_ATTR_RULES ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * modifier */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else + const u64 lid = get_local_id (0); - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; + /** + * base + */ - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; - /** - * modifier - */ - u32 pw_buf0[4]; u32 pw_buf1[4]; @@ -182,14 +90,14 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_RULES ()) u32 salt_buf[8]; - salt_buf[0] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[0]); - salt_buf[1] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[1]); - salt_buf[2] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[2]); - salt_buf[3] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[3]); - salt_buf[4] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[4]); - salt_buf[5] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[5]); - salt_buf[6] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[6]); - salt_buf[7] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[7]); + 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]; + salt_buf[4] = salt_bufs[salt_pos].salt_buf[4]; + salt_buf[5] = salt_bufs[salt_pos].salt_buf[5]; + salt_buf[6] = salt_bufs[salt_pos].salt_buf[6]; + salt_buf[7] = salt_bufs[salt_pos].salt_buf[7]; const u32 salt_len = salt_bufs[salt_pos].salt_len; @@ -206,15 +114,6 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_RULES ()) const u32x out_len = apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - /** * SAP */ @@ -241,7 +140,7 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_RULES ()) s3[2] = 0; s3[3] = 0; - switch_buffer_by_offset_be_S (s0, s1, s2, s3, out_len); + switch_buffer_by_offset_le_VV (s0, s1, s2, s3, out_len); const u32x pw_salt_len = out_len + salt_len; @@ -251,20 +150,20 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_RULES ()) u32 final[32]; - final[ 0] = w0[0] | s0[0]; - final[ 1] = w0[1] | s0[1]; - final[ 2] = w0[2] | s0[2]; - final[ 3] = w0[3] | s0[3]; - final[ 4] = w1[0] | s1[0]; - final[ 5] = w1[1] | s1[1]; - final[ 6] = w1[2] | s1[2]; - final[ 7] = w1[3] | s1[3]; - final[ 8] = w2[0] | s2[0]; - final[ 9] = w2[1] | s2[1]; - final[10] = w2[2] | s2[2]; - final[11] = w2[3] | s2[3]; - final[12] = w3[0] | s3[0]; - final[13] = w3[1] | s3[1]; + final[ 0] = hc_swap32_S (w0[0] | s0[0]); + final[ 1] = hc_swap32_S (w0[1] | s0[1]); + final[ 2] = hc_swap32_S (w0[2] | s0[2]); + final[ 3] = hc_swap32_S (w0[3] | s0[3]); + final[ 4] = hc_swap32_S (w1[0] | s1[0]); + final[ 5] = hc_swap32_S (w1[1] | s1[1]); + final[ 6] = hc_swap32_S (w1[2] | s1[2]); + final[ 7] = hc_swap32_S (w1[3] | s1[3]); + final[ 8] = hc_swap32_S (w2[0] | s2[0]); + final[ 9] = hc_swap32_S (w2[1] | s2[1]); + final[10] = hc_swap32_S (w2[2] | s2[2]); + final[11] = hc_swap32_S (w2[3] | s2[3]); + final[12] = hc_swap32_S (w3[0] | s3[0]); + final[13] = hc_swap32_S (w3[1] | s3[1]); final[14] = 0; final[15] = pw_salt_len * 8; final[16] = 0; @@ -328,61 +227,49 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_RULES ()) digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = hc_swap32_S (w0[0]); + final[ 1] = hc_swap32_S (w0[1]); + final[ 2] = hc_swap32_S (w0[2]); + final[ 3] = hc_swap32_S (w0[3]); + final[ 4] = hc_swap32_S (w1[0]); + final[ 5] = hc_swap32_S (w1[1]); + final[ 6] = hc_swap32_S (w1[2]); + final[ 7] = hc_swap32_S (w1[3]); + final[ 8] = 0; + final[ 9] = 0; + final[10] = 0; + final[11] = 0; + final[12] = 0; + final[13] = 0; + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, out_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = out_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { - const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] + const u32 tmp = hc_swap32_S (salt_buf[i / 4]); // attention, int[] not char[] SETSHIFTEDINT (final, final_len + i, tmp); } @@ -421,52 +308,20 @@ KERNEL_FQ void m07801_m16 (KERN_ATTR_RULES ()) KERNEL_FQ void m07801_s04 (KERN_ATTR_RULES ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * modifier */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else + const u64 lid = get_local_id (0); - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; + /** + * base + */ - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; - /** - * modifier - */ - u32 pw_buf0[4]; u32 pw_buf1[4]; @@ -487,14 +342,14 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_RULES ()) u32 salt_buf[8]; - salt_buf[0] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[0]); - salt_buf[1] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[1]); - salt_buf[2] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[2]); - salt_buf[3] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[3]); - salt_buf[4] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[4]); - salt_buf[5] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[5]); - salt_buf[6] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[6]); - salt_buf[7] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[7]); + 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]; + salt_buf[4] = salt_bufs[salt_pos].salt_buf[4]; + salt_buf[5] = salt_bufs[salt_pos].salt_buf[5]; + salt_buf[6] = salt_bufs[salt_pos].salt_buf[6]; + salt_buf[7] = salt_bufs[salt_pos].salt_buf[7]; const u32 salt_len = salt_bufs[salt_pos].salt_len; @@ -523,15 +378,6 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_RULES ()) const u32x out_len = apply_rules_vect_optimized (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1); - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - /** * SAP */ @@ -558,7 +404,7 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_RULES ()) s3[2] = 0; s3[3] = 0; - switch_buffer_by_offset_be_S (s0, s1, s2, s3, out_len); + switch_buffer_by_offset_le_VV (s0, s1, s2, s3, out_len); const u32x pw_salt_len = out_len + salt_len; @@ -568,20 +414,20 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_RULES ()) u32 final[32]; - final[ 0] = w0[0] | s0[0]; - final[ 1] = w0[1] | s0[1]; - final[ 2] = w0[2] | s0[2]; - final[ 3] = w0[3] | s0[3]; - final[ 4] = w1[0] | s1[0]; - final[ 5] = w1[1] | s1[1]; - final[ 6] = w1[2] | s1[2]; - final[ 7] = w1[3] | s1[3]; - final[ 8] = w2[0] | s2[0]; - final[ 9] = w2[1] | s2[1]; - final[10] = w2[2] | s2[2]; - final[11] = w2[3] | s2[3]; - final[12] = w3[0] | s3[0]; - final[13] = w3[1] | s3[1]; + final[ 0] = hc_swap32_S (w0[0] | s0[0]); + final[ 1] = hc_swap32_S (w0[1] | s0[1]); + final[ 2] = hc_swap32_S (w0[2] | s0[2]); + final[ 3] = hc_swap32_S (w0[3] | s0[3]); + final[ 4] = hc_swap32_S (w1[0] | s1[0]); + final[ 5] = hc_swap32_S (w1[1] | s1[1]); + final[ 6] = hc_swap32_S (w1[2] | s1[2]); + final[ 7] = hc_swap32_S (w1[3] | s1[3]); + final[ 8] = hc_swap32_S (w2[0] | s2[0]); + final[ 9] = hc_swap32_S (w2[1] | s2[1]); + final[10] = hc_swap32_S (w2[2] | s2[2]); + final[11] = hc_swap32_S (w2[3] | s2[3]); + final[12] = hc_swap32_S (w3[0] | s3[0]); + final[13] = hc_swap32_S (w3[1] | s3[1]); final[14] = 0; final[15] = pw_salt_len * 8; final[16] = 0; @@ -645,61 +491,49 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_RULES ()) digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = hc_swap32_S (w0[0]); + final[ 1] = hc_swap32_S (w0[1]); + final[ 2] = hc_swap32_S (w0[2]); + final[ 3] = hc_swap32_S (w0[3]); + final[ 4] = hc_swap32_S (w1[0]); + final[ 5] = hc_swap32_S (w1[1]); + final[ 6] = hc_swap32_S (w1[2]); + final[ 7] = hc_swap32_S (w1[3]); + final[ 8] = 0; + final[ 9] = 0; + final[10] = 0; + final[11] = 0; + final[12] = 0; + final[13] = 0; + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, out_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = out_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { - const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] + const u32 tmp = hc_swap32_S (salt_buf[i / 4]); // attention, int[] not char[] SETSHIFTEDINT (final, final_len + i, tmp); } diff --git a/OpenCL/m07801_a1-optimized.cl b/OpenCL/m07801_a1-optimized.cl index 4cc78528f..ef836a019 100644 --- a/OpenCL/m07801_a1-optimized.cl +++ b/OpenCL/m07801_a1-optimized.cl @@ -15,90 +15,30 @@ #include "inc_hash_sha1.cl" #endif -CONSTANT_VK u32a theMagicArray[80][16] = +CONSTANT_VK u32a theMagicArray[64] = { - { 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194 }, - { 0xac51149f, 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f }, - { 0x51149f67, 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b }, - { 0x149f6754, 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1 }, - { 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b }, - { 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06 }, - { 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605 }, - { 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d }, - { 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03 }, - { 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d }, - { 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e }, - { 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13 }, - { 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a }, - { 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e }, - { 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a }, - { 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a }, - { 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8 }, - { 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9 }, - { 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c }, - { 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14 }, - { 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417 }, - { 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758 }, - { 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7 }, - { 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a }, - { 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6 }, - { 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1 }, - { 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199 }, - { 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963 }, - { 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a }, - { 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7 }, - { 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd }, - { 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70 }, - { 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3 }, - { 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6 }, - { 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e }, - { 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74 }, - { 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413 }, - { 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303 }, - { 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9 }, - { 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b }, - { 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04 }, - { 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426 }, - { 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698 }, - { 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7 }, - { 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726 }, - { 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a }, - { 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92 }, - { 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293 }, - { 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325 }, - { 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0 }, - { 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2 }, - { 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d }, - { 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23 }, - { 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed }, - { 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63 }, - { 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379 }, - { 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d }, - { 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13 }, - { 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332 }, - { 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa }, - { 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c }, - { 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35 }, - { 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502 }, - { 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a }, - { 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3 }, - { 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3 }, - { 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd }, - { 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e }, - { 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a }, - { 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24 }, - { 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf }, - { 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51 }, - { 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3 }, - { 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c }, - { 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd }, - { 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55 }, - { 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f }, - { 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c, 0xcd559f37 }, - { 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd, 0x559f37af }, - { 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55, 0x9f37af94 }, + 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, + 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, + 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, + 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, + 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f, 0x37af944c, 0x29085282, 0xb23b4e37, 0x9f170791, 0x113bfdcd, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; +DECLSPEC u32 GETSHIFTEDINT_CONST (CONSTANT_AS u32a *a, const int n) +{ + const int d = n / 4; + const int m = n & 3; + + u64 tmp = hl32_to_64_S (a[d + 0], a[d + 1]); + + tmp <<= m * 8; + + return h32_from_64_S (tmp); +} + DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) { const int d = n / 4; @@ -114,45 +54,17 @@ DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * modifier */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else + const u64 lid = get_local_id (0); - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; + /** + * base + */ - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -176,14 +88,14 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) u32 salt_buf[8]; - salt_buf[0] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[0]); - salt_buf[1] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[1]); - salt_buf[2] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[2]); - salt_buf[3] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[3]); - salt_buf[4] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[4]); - salt_buf[5] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[5]); - salt_buf[6] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[6]); - salt_buf[7] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[7]); + 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]; + salt_buf[4] = salt_bufs[salt_pos].salt_buf[4]; + salt_buf[5] = salt_bufs[salt_pos].salt_buf[5]; + salt_buf[6] = salt_bufs[salt_pos].salt_buf[6]; + salt_buf[7] = salt_bufs[salt_pos].salt_buf[7]; const u32 salt_len = salt_bufs[salt_pos].salt_len; @@ -260,23 +172,6 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) w3[2] = wordl3[2] | wordr3[2]; w3[3] = wordl3[3] | wordr3[3]; - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - w2[0] = hc_swap32_S (w2[0]); - w2[1] = hc_swap32_S (w2[1]); - w2[2] = hc_swap32_S (w2[2]); - w2[3] = hc_swap32_S (w2[3]); - w3[0] = hc_swap32_S (w3[0]); - w3[1] = hc_swap32_S (w3[1]); - w3[2] = hc_swap32_S (w3[2]); - w3[3] = hc_swap32_S (w3[3]); - /** * SAP */ @@ -303,7 +198,7 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) s3[2] = 0; s3[3] = 0; - switch_buffer_by_offset_be_S (s0, s1, s2, s3, pw_len); + switch_buffer_by_offset_le_VV (s0, s1, s2, s3, pw_len); const u32x pw_salt_len = pw_len + salt_len; @@ -313,20 +208,20 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) u32 final[32]; - final[ 0] = w0[0] | s0[0]; - final[ 1] = w0[1] | s0[1]; - final[ 2] = w0[2] | s0[2]; - final[ 3] = w0[3] | s0[3]; - final[ 4] = w1[0] | s1[0]; - final[ 5] = w1[1] | s1[1]; - final[ 6] = w1[2] | s1[2]; - final[ 7] = w1[3] | s1[3]; - final[ 8] = w2[0] | s2[0]; - final[ 9] = w2[1] | s2[1]; - final[10] = w2[2] | s2[2]; - final[11] = w2[3] | s2[3]; - final[12] = w3[0] | s3[0]; - final[13] = w3[1] | s3[1]; + final[ 0] = hc_swap32_S (w0[0] | s0[0]); + final[ 1] = hc_swap32_S (w0[1] | s0[1]); + final[ 2] = hc_swap32_S (w0[2] | s0[2]); + final[ 3] = hc_swap32_S (w0[3] | s0[3]); + final[ 4] = hc_swap32_S (w1[0] | s1[0]); + final[ 5] = hc_swap32_S (w1[1] | s1[1]); + final[ 6] = hc_swap32_S (w1[2] | s1[2]); + final[ 7] = hc_swap32_S (w1[3] | s1[3]); + final[ 8] = hc_swap32_S (w2[0] | s2[0]); + final[ 9] = hc_swap32_S (w2[1] | s2[1]); + final[10] = hc_swap32_S (w2[2] | s2[2]); + final[11] = hc_swap32_S (w2[3] | s2[3]); + final[12] = hc_swap32_S (w3[0] | s3[0]); + final[13] = hc_swap32_S (w3[1] | s3[1]); final[14] = 0; final[15] = pw_salt_len * 8; final[16] = 0; @@ -390,61 +285,49 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = hc_swap32_S (w0[0]); + final[ 1] = hc_swap32_S (w0[1]); + final[ 2] = hc_swap32_S (w0[2]); + final[ 3] = hc_swap32_S (w0[3]); + final[ 4] = hc_swap32_S (w1[0]); + final[ 5] = hc_swap32_S (w1[1]); + final[ 6] = hc_swap32_S (w1[2]); + final[ 7] = hc_swap32_S (w1[3]); + final[ 8] = hc_swap32_S (w2[0]); + final[ 9] = hc_swap32_S (w2[1]); + final[10] = hc_swap32_S (w2[2]); + final[11] = hc_swap32_S (w2[3]); + final[12] = hc_swap32_S (w3[0]); + final[13] = hc_swap32_S (w3[1]); + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, pw_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = pw_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { - const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] + const u32 tmp = hc_swap32_S (salt_buf[i / 4]); // attention, int[] not char[] SETSHIFTEDINT (final, final_len + i, tmp); } @@ -483,45 +366,17 @@ KERNEL_FQ void m07801_m16 (KERN_ATTR_BASIC ()) KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * modifier */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else + const u64 lid = get_local_id (0); - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; + /** + * base + */ - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -545,14 +400,14 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) u32 salt_buf[8]; - salt_buf[0] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[0]); - salt_buf[1] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[1]); - salt_buf[2] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[2]); - salt_buf[3] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[3]); - salt_buf[4] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[4]); - salt_buf[5] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[5]); - salt_buf[6] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[6]); - salt_buf[7] = hc_swap32_S (salt_bufs[salt_pos].salt_buf[7]); + 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]; + salt_buf[4] = salt_bufs[salt_pos].salt_buf[4]; + salt_buf[5] = salt_bufs[salt_pos].salt_buf[5]; + salt_buf[6] = salt_bufs[salt_pos].salt_buf[6]; + salt_buf[7] = salt_bufs[salt_pos].salt_buf[7]; const u32 salt_len = salt_bufs[salt_pos].salt_len; @@ -641,23 +496,6 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) w3[2] = wordl3[2] | wordr3[2]; w3[3] = wordl3[3] | wordr3[3]; - w0[0] = hc_swap32_S (w0[0]); - w0[1] = hc_swap32_S (w0[1]); - w0[2] = hc_swap32_S (w0[2]); - w0[3] = hc_swap32_S (w0[3]); - w1[0] = hc_swap32_S (w1[0]); - w1[1] = hc_swap32_S (w1[1]); - w1[2] = hc_swap32_S (w1[2]); - w1[3] = hc_swap32_S (w1[3]); - w2[0] = hc_swap32_S (w2[0]); - w2[1] = hc_swap32_S (w2[1]); - w2[2] = hc_swap32_S (w2[2]); - w2[3] = hc_swap32_S (w2[3]); - w3[0] = hc_swap32_S (w3[0]); - w3[1] = hc_swap32_S (w3[1]); - w3[2] = hc_swap32_S (w3[2]); - w3[3] = hc_swap32_S (w3[3]); - /** * SAP */ @@ -684,7 +522,7 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) s3[2] = 0; s3[3] = 0; - switch_buffer_by_offset_be_S (s0, s1, s2, s3, pw_len); + switch_buffer_by_offset_le_VV (s0, s1, s2, s3, pw_len); const u32x pw_salt_len = pw_len + salt_len; @@ -694,20 +532,20 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) u32 final[32]; - final[ 0] = w0[0] | s0[0]; - final[ 1] = w0[1] | s0[1]; - final[ 2] = w0[2] | s0[2]; - final[ 3] = w0[3] | s0[3]; - final[ 4] = w1[0] | s1[0]; - final[ 5] = w1[1] | s1[1]; - final[ 6] = w1[2] | s1[2]; - final[ 7] = w1[3] | s1[3]; - final[ 8] = w2[0] | s2[0]; - final[ 9] = w2[1] | s2[1]; - final[10] = w2[2] | s2[2]; - final[11] = w2[3] | s2[3]; - final[12] = w3[0] | s3[0]; - final[13] = w3[1] | s3[1]; + final[ 0] = hc_swap32_S (w0[0] | s0[0]); + final[ 1] = hc_swap32_S (w0[1] | s0[1]); + final[ 2] = hc_swap32_S (w0[2] | s0[2]); + final[ 3] = hc_swap32_S (w0[3] | s0[3]); + final[ 4] = hc_swap32_S (w1[0] | s1[0]); + final[ 5] = hc_swap32_S (w1[1] | s1[1]); + final[ 6] = hc_swap32_S (w1[2] | s1[2]); + final[ 7] = hc_swap32_S (w1[3] | s1[3]); + final[ 8] = hc_swap32_S (w2[0] | s2[0]); + final[ 9] = hc_swap32_S (w2[1] | s2[1]); + final[10] = hc_swap32_S (w2[2] | s2[2]); + final[11] = hc_swap32_S (w2[3] | s2[3]); + final[12] = hc_swap32_S (w3[0] | s3[0]); + final[13] = hc_swap32_S (w3[1] | s3[1]); final[14] = 0; final[15] = pw_salt_len * 8; final[16] = 0; @@ -771,61 +609,49 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = hc_swap32_S (w0[0]); + final[ 1] = hc_swap32_S (w0[1]); + final[ 2] = hc_swap32_S (w0[2]); + final[ 3] = hc_swap32_S (w0[3]); + final[ 4] = hc_swap32_S (w1[0]); + final[ 5] = hc_swap32_S (w1[1]); + final[ 6] = hc_swap32_S (w1[2]); + final[ 7] = hc_swap32_S (w1[3]); + final[ 8] = hc_swap32_S (w2[0]); + final[ 9] = hc_swap32_S (w2[1]); + final[10] = hc_swap32_S (w2[2]); + final[11] = hc_swap32_S (w2[3]); + final[12] = hc_swap32_S (w3[0]); + final[13] = hc_swap32_S (w3[1]); + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, pw_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = pw_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { - const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] + const u32 tmp = hc_swap32_S (salt_buf[i / 4]); // attention, int[] not char[] SETSHIFTEDINT (final, final_len + i, tmp); } diff --git a/OpenCL/m07801_a3-optimized.cl b/OpenCL/m07801_a3-optimized.cl index f1a03c6fd..59bc222cd 100644 --- a/OpenCL/m07801_a3-optimized.cl +++ b/OpenCL/m07801_a3-optimized.cl @@ -15,90 +15,30 @@ #include "inc_hash_sha1.cl" #endif -CONSTANT_VK u32a theMagicArray[80][16] = +CONSTANT_VK u32a theMagicArray[64] = { - { 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194 }, - { 0xac51149f, 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f }, - { 0x51149f67, 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b }, - { 0x149f6754, 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1 }, - { 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b }, - { 0x67544324, 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06 }, - { 0x544324e7, 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605 }, - { 0x4324e73b, 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d }, - { 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03 }, - { 0xe73be028, 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d }, - { 0x3be02874, 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e }, - { 0xe028747b, 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13 }, - { 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a }, - { 0x747bc286, 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e }, - { 0x7bc28633, 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a }, - { 0xc2863313, 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a }, - { 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8 }, - { 0x3313eb5a, 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9 }, - { 0x13eb5a4f, 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c }, - { 0xeb5a4fcb, 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14 }, - { 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417 }, - { 0x4fcb5c08, 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758 }, - { 0xcb5c080a, 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7 }, - { 0x5c080a73, 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a }, - { 0x080a7337, 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6 }, - { 0x0a73370e, 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1 }, - { 0x73370e5d, 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199 }, - { 0x370e5d1c, 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963 }, - { 0x0e5d1c2f, 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a }, - { 0x5d1c2f33, 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7 }, - { 0x1c2f338f, 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd }, - { 0x2f338fe6, 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70 }, - { 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3 }, - { 0x8fe6e5f8, 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6 }, - { 0xe6e5f89b, 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e }, - { 0xe5f89bae, 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74 }, - { 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413 }, - { 0x9baedd16, 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303 }, - { 0xaedd16f2, 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9 }, - { 0xdd16f24b, 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b }, - { 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04 }, - { 0xf24b8d2c, 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426 }, - { 0x4b8d2ce1, 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698 }, - { 0x8d2ce1d4, 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7 }, - { 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726 }, - { 0xe1d4dcb0, 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a }, - { 0xd4dcb0cb, 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92 }, - { 0xdcb0cbdf, 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293 }, - { 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325 }, - { 0xcbdf9dd4, 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0 }, - { 0xdf9dd470, 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2 }, - { 0x9dd4706d, 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d }, - { 0xd4706d17, 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23 }, - { 0x706d17f9, 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed }, - { 0x6d17f94d, 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63 }, - { 0x17f94d42, 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379 }, - { 0xf94d423f, 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d }, - { 0x4d423f9b, 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13 }, - { 0x423f9b1b, 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332 }, - { 0x3f9b1b11, 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa }, - { 0x9b1b1194, 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c }, - { 0x1b11949f, 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35 }, - { 0x11949f5b, 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502 }, - { 0x949f5bc1, 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a }, - { 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3 }, - { 0x5bc19b06, 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3 }, - { 0xc19b0605, 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd }, - { 0x9b06059d, 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e }, - { 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a }, - { 0x059d039d, 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24 }, - { 0x9d039d5e, 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf }, - { 0x039d5e13, 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51 }, - { 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3 }, - { 0x5e138a1e, 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c }, - { 0x138a1e9a, 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd }, - { 0x8a1e9a6a, 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55 }, - { 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f }, - { 0x9a6ae8d9, 0x7c141758, 0xc72af6a1, 0x99630ad7, 0xfd70c3f6, 0x5e741303, 0xc90b0426, 0x98f7268a, 0x929325b0, 0xa20d23ed, 0x63796d13, 0x32fa3c35, 0x029aa3b3, 0xdd8e0a24, 0xbf51c37c, 0xcd559f37 }, - { 0x6ae8d97c, 0x141758c7, 0x2af6a199, 0x630ad7fd, 0x70c3f65e, 0x741303c9, 0x0b042698, 0xf7268a92, 0x9325b0a2, 0x0d23ed63, 0x796d1332, 0xfa3c3502, 0x9aa3b3dd, 0x8e0a24bf, 0x51c37ccd, 0x559f37af }, - { 0xe8d97c14, 0x1758c72a, 0xf6a19963, 0x0ad7fd70, 0xc3f65e74, 0x1303c90b, 0x042698f7, 0x268a9293, 0x25b0a20d, 0x23ed6379, 0x6d1332fa, 0x3c35029a, 0xa3b3dd8e, 0x0a24bf51, 0xc37ccd55, 0x9f37af94 }, + 0x91ac5114, 0x9f675443, 0x24e73be0, 0x28747bc2, 0x863313eb, 0x5a4fcb5c, 0x080a7337, 0x0e5d1c2f, + 0x338fe6e5, 0xf89baedd, 0x16f24b8d, 0x2ce1d4dc, 0xb0cbdf9d, 0xd4706d17, 0xf94d423f, 0x9b1b1194, + 0x9f5bc19b, 0x06059d03, 0x9d5e138a, 0x1e9a6ae8, 0xd97c1417, 0x58c72af6, 0xa199630a, 0xd7fd70c3, + 0xf65e7413, 0x03c90b04, 0x2698f726, 0x8a929325, 0xb0a20d23, 0xed63796d, 0x1332fa3c, 0x35029aa3, + 0xb3dd8e0a, 0x24bf51c3, 0x7ccd559f, 0x37af944c, 0x29085282, 0xb23b4e37, 0x9f170791, 0x113bfdcd, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; +DECLSPEC u32 GETSHIFTEDINT_CONST (CONSTANT_AS u32a *a, const int n) +{ + const int d = n / 4; + const int m = n & 3; + + u64 tmp = hl32_to_64_S (a[d + 0], a[d + 1]); + + tmp <<= m * 8; + + return h32_from_64_S (tmp); +} + DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) { const int d = n / 4; @@ -112,7 +52,7 @@ DECLSPEC void SETSHIFTEDINT (u32 *a, const int n, const u32 v) a[d + 1] = l32_from_64_S (tmp); } -DECLSPEC void m07801m (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC ()) +DECLSPEC void m07801m (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC ()) { /** * modifier @@ -261,59 +201,47 @@ DECLSPEC void m07801m (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = w0[0]; + final[ 1] = w0[1]; + final[ 2] = w0[2]; + final[ 3] = w0[3]; + final[ 4] = w1[0]; + final[ 5] = w1[1]; + final[ 6] = w1[2]; + final[ 7] = w1[3]; + final[ 8] = 0; + final[ 9] = 0; + final[10] = 0; + final[11] = 0; + final[12] = 0; + final[13] = 0; + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + SETSHIFTEDINT (final, final_len + i, tmp); + } - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, pw_len); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - u32 final_len = pw_len + lengthMagicArray; + SETSHIFTEDINT (final, final_len + i, tmp); + + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] @@ -344,7 +272,7 @@ DECLSPEC void m07801m (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u } } -DECLSPEC void m07801s (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC ()) +DECLSPEC void m07801s (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC ()) { /** * modifier @@ -505,59 +433,47 @@ DECLSPEC void m07801s (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u digest[3] = SHA1M_D; digest[4] = SHA1M_E; + final[ 0] = w0[0]; + final[ 1] = w0[1]; + final[ 2] = w0[2]; + final[ 3] = w0[3]; + final[ 4] = w1[0]; + final[ 5] = w1[1]; + final[ 6] = w1[2]; + final[ 7] = w1[3]; + final[ 8] = 0; + final[ 9] = 0; + final[10] = 0; + final[11] = 0; + final[12] = 0; + final[13] = 0; + final[14] = 0; + final[15] = 0; + + u32 final_len = pw_len; + + u32 i; + // append MagicArray - final[ 0] = s_theMagicArray[offsetMagicArray][ 0]; - final[ 1] = s_theMagicArray[offsetMagicArray][ 1]; - final[ 2] = s_theMagicArray[offsetMagicArray][ 2]; - final[ 3] = s_theMagicArray[offsetMagicArray][ 3]; - final[ 4] = s_theMagicArray[offsetMagicArray][ 4]; - final[ 5] = s_theMagicArray[offsetMagicArray][ 5]; - final[ 6] = s_theMagicArray[offsetMagicArray][ 6]; - final[ 7] = s_theMagicArray[offsetMagicArray][ 7]; - final[ 8] = s_theMagicArray[offsetMagicArray][ 8]; - final[ 9] = s_theMagicArray[offsetMagicArray][ 9]; - final[10] = s_theMagicArray[offsetMagicArray][10]; - final[11] = s_theMagicArray[offsetMagicArray][11]; - final[12] = s_theMagicArray[offsetMagicArray][12]; - final[13] = s_theMagicArray[offsetMagicArray][13]; - final[14] = s_theMagicArray[offsetMagicArray][14]; - final[15] = s_theMagicArray[offsetMagicArray][15]; - final[16] = 0; - final[17] = 0; - final[18] = 0; - final[19] = 0; - final[20] = 0; - final[21] = 0; - final[22] = 0; - final[23] = 0; - final[24] = 0; - final[25] = 0; - final[26] = 0; - final[27] = 0; - final[28] = 0; - final[29] = 0; - final[30] = 0; - final[31] = 0; + for (i = 0; i < lengthMagicArray - 4; i += 4) + { + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i); + + SETSHIFTEDINT (final, final_len + i, tmp); + } - truncate_block_16x4_be_S (final + 0, final + 4, final + 8, final + 12, lengthMagicArray); + const u32 mask = 0xffffffff << (((4 - (lengthMagicArray - i)) & 3) * 8); - switch_buffer_by_offset_8x4_be_S (final + 0, final + 4, final + 8, final + 12, final + 16, final + 20, final + 24, final + 28, pw_len); + const u32 tmp = GETSHIFTEDINT_CONST (theMagicArray, offsetMagicArray + i) & mask; - final[0] |= w0[0]; - final[1] |= w0[1]; - final[2] |= w0[2]; - final[3] |= w0[3]; - final[4] |= w1[0]; - final[5] |= w1[1]; - final[6] |= w1[2]; - final[7] |= w1[3]; + SETSHIFTEDINT (final, final_len + i, tmp); - u32 final_len = pw_len + lengthMagicArray; + final_len += lengthMagicArray; // append Salt - for (int i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 + for (i = 0; i < salt_len + 1; i += 4) // +1 for the 0x80 { const u32 tmp = salt_buf[i / 4]; // attention, int[] not char[] @@ -590,45 +506,11 @@ DECLSPEC void m07801s (SHM_TYPE u32a (*s_theMagicArray)[16], u32 *w0, u32 *w1, u KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * base */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else - - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; - - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -636,6 +518,8 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) * modifier */ + //const u64 lid = get_local_id (0); + u32 w0[4]; w0[0] = pws[gid].i[ 0]; @@ -670,50 +554,16 @@ KERNEL_FQ void m07801_m04 (KERN_ATTR_BASIC ()) * main */ - m07801m (s_theMagicArray, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); + m07801m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); } KERNEL_FQ void m07801_m08 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * base */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else - - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; - - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -721,6 +571,8 @@ KERNEL_FQ void m07801_m08 (KERN_ATTR_BASIC ()) * modifier */ + //const u64 lid = get_local_id (0); + u32 w0[4]; w0[0] = pws[gid].i[ 0]; @@ -755,7 +607,7 @@ KERNEL_FQ void m07801_m08 (KERN_ATTR_BASIC ()) * main */ - m07801m (s_theMagicArray, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); + m07801m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); } KERNEL_FQ void m07801_m16 (KERN_ATTR_BASIC ()) @@ -764,45 +616,11 @@ KERNEL_FQ void m07801_m16 (KERN_ATTR_BASIC ()) KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * base */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else - - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; - - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -810,6 +628,8 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) * modifier */ + //const u64 lid = get_local_id (0); + u32 w0[4]; w0[0] = pws[gid].i[ 0]; @@ -844,50 +664,16 @@ KERNEL_FQ void m07801_s04 (KERN_ATTR_BASIC ()) * main */ - m07801s (s_theMagicArray, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); + m07801s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); } KERNEL_FQ void m07801_s08 (KERN_ATTR_BASIC ()) { - const u64 gid = get_global_id (0); - const u64 lid = get_local_id (0); - const u64 lsz = get_local_size (0); - /** - * aes shared + * base */ - #ifdef REAL_SHM - - LOCAL_VK u32 s_theMagicArray[80][16]; - - for (u32 i = lid; i < 80; i += lsz) - { - s_theMagicArray[i][ 0] = theMagicArray[i][ 0]; - s_theMagicArray[i][ 1] = theMagicArray[i][ 1]; - s_theMagicArray[i][ 2] = theMagicArray[i][ 2]; - s_theMagicArray[i][ 3] = theMagicArray[i][ 3]; - s_theMagicArray[i][ 4] = theMagicArray[i][ 4]; - s_theMagicArray[i][ 5] = theMagicArray[i][ 5]; - s_theMagicArray[i][ 6] = theMagicArray[i][ 6]; - s_theMagicArray[i][ 7] = theMagicArray[i][ 7]; - s_theMagicArray[i][ 8] = theMagicArray[i][ 8]; - s_theMagicArray[i][ 9] = theMagicArray[i][ 9]; - s_theMagicArray[i][10] = theMagicArray[i][10]; - s_theMagicArray[i][11] = theMagicArray[i][11]; - s_theMagicArray[i][12] = theMagicArray[i][12]; - s_theMagicArray[i][13] = theMagicArray[i][13]; - s_theMagicArray[i][14] = theMagicArray[i][14]; - s_theMagicArray[i][15] = theMagicArray[i][15]; - } - - SYNC_THREADS (); - - #else - - CONSTANT_AS u32a *s_theMagicArray = theMagicArray; - - #endif + const u64 gid = get_global_id (0); if (gid >= gid_max) return; @@ -895,6 +681,8 @@ KERNEL_FQ void m07801_s08 (KERN_ATTR_BASIC ()) * modifier */ + //const u64 lid = get_local_id (0); + u32 w0[4]; w0[0] = pws[gid].i[ 0]; @@ -929,7 +717,7 @@ KERNEL_FQ void m07801_s08 (KERN_ATTR_BASIC ()) * main */ - m07801s (s_theMagicArray, w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); + m07801s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, 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, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max); } KERNEL_FQ void m07801_s16 (KERN_ATTR_BASIC ())