From d9d56b139a714dc63f9e4c16267728b15446973d Mon Sep 17 00:00:00 2001 From: Benny Baumann Date: Sun, 9 Nov 2014 16:02:07 +0100 Subject: [PATCH] add: Import libdetectcoll v0.2 source code by Marc Steven --- lib/collissiondetect/LICENSE | 26 + lib/collissiondetect/Makefile | 18 +- lib/collissiondetect/README | 56 + lib/collissiondetect/lib/libdetectcoll.c | 1303 +++++++++++++++++ lib/collissiondetect/lib/libdetectcoll.h | 100 ++ lib/collissiondetect/src/main.c | 102 ++ lib/collissiondetect/tests/md5_1a.pdf | Bin 0 -> 104331 bytes lib/collissiondetect/tests/md5_1b.pdf | Bin 0 -> 104331 bytes lib/collissiondetect/tests/md5_2a.bin | 1 + lib/collissiondetect/tests/md5_2b.bin | 1 + lib/collissiondetect/tests/md5_3a.exe | Bin 0 -> 45184 bytes lib/collissiondetect/tests/md5_3b.exe | Bin 0 -> 45184 bytes lib/collissiondetect/tests/md5_4a.exe | Bin 0 -> 41792 bytes lib/collissiondetect/tests/md5_4b.exe | Bin 0 -> 41792 bytes .../tests/md5_5a.cert.tobesignedpart | Bin 0 -> 927 bytes .../tests/md5_5b.cert.tobesignedpart | Bin 0 -> 927 bytes .../tests/sha1_reducedsha_coll.bin | 1 + 17 files changed, 1602 insertions(+), 6 deletions(-) create mode 100644 lib/collissiondetect/LICENSE create mode 100644 lib/collissiondetect/README create mode 100644 lib/collissiondetect/lib/libdetectcoll.c create mode 100644 lib/collissiondetect/lib/libdetectcoll.h create mode 100644 lib/collissiondetect/src/main.c create mode 100644 lib/collissiondetect/tests/md5_1a.pdf create mode 100644 lib/collissiondetect/tests/md5_1b.pdf create mode 100644 lib/collissiondetect/tests/md5_2a.bin create mode 100644 lib/collissiondetect/tests/md5_2b.bin create mode 100644 lib/collissiondetect/tests/md5_3a.exe create mode 100644 lib/collissiondetect/tests/md5_3b.exe create mode 100644 lib/collissiondetect/tests/md5_4a.exe create mode 100644 lib/collissiondetect/tests/md5_4b.exe create mode 100644 lib/collissiondetect/tests/md5_5a.cert.tobesignedpart create mode 100644 lib/collissiondetect/tests/md5_5b.cert.tobesignedpart create mode 100644 lib/collissiondetect/tests/sha1_reducedsha_coll.bin diff --git a/lib/collissiondetect/LICENSE b/lib/collissiondetect/LICENSE new file mode 100644 index 0000000..85fbee5 --- /dev/null +++ b/lib/collissiondetect/LICENSE @@ -0,0 +1,26 @@ +Copyright (C) 2012 CWI + + Contact: + Marc Stevens + Cryptology Group + Centrum Wiskunde & Informatica + P.O. Box 94079, 1090 GB Amsterdam, Netherlands + marc@marc-stevens.nl + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/lib/collissiondetect/Makefile b/lib/collissiondetect/Makefile index 486754b..6e1ef6f 100644 --- a/lib/collissiondetect/Makefile +++ b/lib/collissiondetect/Makefile @@ -1,7 +1,13 @@ -.PHONY: all -all: - @echo "Building Collission Detection library ..." +detectcollv: *.c *.h + gcc -O3 -march=native -DVERBOSE_COLLDETECT main.c libdetectcoll.c -o detectcollv -.PHONY: clean -clean: - @echo "Cleaning Collission Detection library ..." +detectcoll: *.c *.h + gcc -O3 -march=native main.c libdetectcoll.c -o detectcoll + +detectcoll_reducedsha: *.c *.h + gcc -O3 -march=native -DVERBOSE_COLLDETECT -DDETECT_REDUCED_SHA_COLLISION main.c libdetectcoll.c -o detectcoll_reducedsha + +test: detectcollv + ./detectcollv tests/* + +all: detectcollv detectcoll detectcoll_reducedsha diff --git a/lib/collissiondetect/README b/lib/collissiondetect/README new file mode 100644 index 0000000..e0b7f7c --- /dev/null +++ b/lib/collissiondetect/README @@ -0,0 +1,56 @@ +Copyright (C) 2012 CWI + + Contact: + Marc Stevens + Cryptology Group + Centrum Wiskunde & Informatica + P.O. Box 94079, 1090 GB Amsterdam, Netherlands + marc@marc-stevens.nl + +License: see LICENSE file + +Library: + +Compile libdetectcoll.c libdetectcoll.h into your project + +Use library interface: + void MD5Init(MD5_CTX*); + void MD5Init_unsafe(MD5_CTX*); + void MD5Update(MD5_CTX*, const char* buf, unsigned len); + int MD5Final(unsigned char hash[16], MD5_CTX*); + + void SHA1Init(SHA1_CTX*); + void SHA1Init_unsafe(SHA1_CTX*); + void SHA1Update(SHA1_CTX*, const char* buf, unsigned len); + int SHA1Final(unsigned char hash[20], SHA1_CTX*); + + Allocate a context and call MD5Init/SHA1Init. + Process your message (in chunks) with MD5Update/SHA1Update. + Obtain digest with MD5Final/SHA1Final and auxilary input indicating whether a collision attack was detected. + +Notes: +MD5Final and SHA1Final store the computed digest in hash and return 0 if no collision attack was detected. +Non-zero return value indicates a detected collision attack and the application should act accordingly. + +MD5Init_unsafe and SHA1Init_unsafe will result in the correct and possibly unsafe MD5 and SHA-1 hash. + +MD5Init and SHA1Init will result in the correct MD5 and SHA-1 hash *if no collision attack was detected*, +otherwise they will return a different but safe to use hash (how this is generated may change in future revisions). +In this manner they can protect an application against collision attacks without further action in the application. + + +Command line tool: + +Build: make all test + +Run: detectcoll +Run: detectcollv (verbose version) + +(Run: detectcoll_reducedsha (also reports detected collision attacks on *reduced-round* SHA-1, only for testing)) + + +Notes: +Feedback requested! +Please let us know if and where you're using it. +We'd be happy to know where it is being used +and if desired can keep you updated on new improved versions. diff --git a/lib/collissiondetect/lib/libdetectcoll.c b/lib/collissiondetect/lib/libdetectcoll.c new file mode 100644 index 0000000..7d46803 --- /dev/null +++ b/lib/collissiondetect/lib/libdetectcoll.c @@ -0,0 +1,1303 @@ +/**************************************************************************\ +| +| Copyright (C) 2012 CWI +| +| Contact: +| Marc Stevens +| Cryptology Group +| Centrum Wiskunde & Informatica +| P.O. Box 94079, 1090 GB Amsterdam, Netherlands +| marc@marc-stevens.nl +| +| Permission is hereby granted, free of charge, to any person obtaining a copy +| of this software and associated documentation files (the "Software"), to deal +| in the Software without restriction, including without limitation the rights +| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +| copies of the Software, and to permit persons to whom the Software is +| furnished to do so, subject to the following conditions: +| +| The above copyright notice and this permission notice shall be included in +| all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +| THE SOFTWARE. +| +\**************************************************************************/ + +#include +#include +#include + +#include "libdetectcoll.h" + +#define rotate_right(x,n) (((x)>>(n))|((x)<<(32-(n)))) +#define rotate_left(x,n) (((x)<<(n))|((x)>>(32-(n)))) + +void swap_bytes(uint32_t val[16]) { + unsigned i; + for (i = 0; i < 16; ++i) { + val[i] = ((val[i]<<8)&0xFF00FF00)|((val[i]>>8)&0xFF00FF); + val[i] = (val[i]<<16) | (val[i]>>16); + } +} + +const unsigned md5_wt[] = + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 + , 1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12 + , 5, 8, 11, 14, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2 + , 0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9 }; +#define md5_ff(b,c,d) ((d) ^ ((b) & ((c) ^ (d)))) +#define md5_gg(b,c,d) ((c) ^ ((d) & ((b) ^ (c)))) +#define md5_hh(b,c,d) ((b) ^ (c) ^ (d)) +#define md5_ii(b,c,d) ((c) ^ ((b) | ~(d))) +#define HASHUTIL5_MD5COMPRESS_STEP(f, a, b, c, d, m, ac, rc) \ + a += f(b, c, d) + m + ac; a = rotate_left(a,rc); a += b; +#define HASHUTIL5_MD5COMPRESS_STEP_BW(f, a, b, c, d, m, ac, rc) \ + a -= b; a = rotate_right(a,rc); a -= f(b,c,d) + m + ac; + +#define sha1_f1(b,c,d) ((d)^((b)&((c)^(d)))) +#define sha1_f2(b,c,d) ((b)^(c)^(d)) +#define sha1_f3(b,c,d) (((b) & ((c)|(d))) | ((c)&(d))) +#define sha1_f4(b,c,d) ((b)^(c)^(d)) +#define HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, m, t) \ + e += rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999 + m[t]; b = rotate_left(b, 30); +#define HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, m, t) \ + e += rotate_left(a, 5) + sha1_f2(b,c,d) + 0x6ED9EBA1 + m[t]; b = rotate_left(b, 30); +#define HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, m, t) \ + e += rotate_left(a, 5) + sha1_f3(b,c,d) + 0x8F1BBCDC + m[t]; b = rotate_left(b, 30); +#define HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, m, t) \ + e += rotate_left(a, 5) + sha1_f4(b,c,d) + 0xCA62C1D6 + m[t]; b = rotate_left(b, 30); +#define HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, m, t) \ + b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999 + m[t]; +#define HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, m, t) \ + b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f2(b,c,d) + 0x6ED9EBA1 + m[t]; +#define HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, m, t) \ + b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f3(b,c,d) + 0x8F1BBCDC + m[t]; +#define HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, m, t) \ + b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f4(b,c,d) + 0xCA62C1D6 + m[t]; + +#define STORE_STATE(i) states[(4*(i))] = a; states[(4*(i))+1] = b; states[(4*(i))+2] = c; states[(4*(i))+3] = d; +#define LOAD_STATE(i) a = states[(4*(i))]; b = states[(4*(i))+1]; c = states[(4*(i))+2]; d = states[(4*(i))+3]; + +#define SHA1_STORE_STATE(i) states[(5*(i))] = a; states[(5*(i))+1] = b; states[(5*(i))+2] = c; states[(5*(i))+3] = d; states[(5*(i))+4] = e; +#define SHA1_LOAD_STATE(i) a = states[(4*(i))]; b = states[(4*(i))+1]; c = states[(4*(i))+2]; d = states[(4*(i))+3]; e = states[(5*(i))+4]; + + + + + + + + + + +void sha1compress_me(const uint32_t block[16], uint32_t me[80]) { + unsigned i; + if ( (const uint32_t*)(block) != (const uint32_t*)(me) ) + memcpy(me, block, 64); + for (i = 16; i < 80; ++i) + me[i]=rotate_left(me[i-3] ^ me[i-8] ^ me[i-14] ^ me[i-16], 1); +} + +void sha1compress_states(uint32_t ihv[5], const uint32_t me[80], uint32_t states[81*5]) { + uint32_t a = ihv[0], b = ihv[1], c = ihv[2], d = ihv[3], e = ihv[4]; + + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( a, b, c, d, e, me, 0 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( e, a, b, c, d, me, 1 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( d, e, a, b, c, me, 2 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( c, d, e, a, b, me, 3 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( b, c, d, e, a, me, 4 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( a, b, c, d, e, me, 5 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( e, a, b, c, d, me, 6 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( d, e, a, b, c, me, 7 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( c, d, e, a, b, me, 8 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( b, c, d, e, a, me, 9 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( a, b, c, d, e, me, 10 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( e, a, b, c, d, me, 11 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( d, e, a, b, c, me, 12 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( c, d, e, a, b, me, 13 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( b, c, d, e, a, me, 14 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( a, b, c, d, e, me, 15 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( e, a, b, c, d, me, 16 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( d, e, a, b, c, me, 17 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( c, d, e, a, b, me, 18 ); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP( b, c, d, e, a, me, 19 ); + +// SHA1_STORE_STATE(20); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( a, b, c, d, e, me, 20 ); +// SHA1_STORE_STATE(21); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( e, a, b, c, d, me, 21 ); +// SHA1_STORE_STATE(22); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( d, e, a, b, c, me, 22 ); +// SHA1_STORE_STATE(23); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( c, d, e, a, b, me, 23 ); +// SHA1_STORE_STATE(24); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( b, c, d, e, a, me, 24 ); +// SHA1_STORE_STATE(25); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( a, b, c, d, e, me, 25 ); +// SHA1_STORE_STATE(26); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( e, a, b, c, d, me, 26 ); +// SHA1_STORE_STATE(27); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( d, e, a, b, c, me, 27 ); +// SHA1_STORE_STATE(28); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( c, d, e, a, b, me, 28 ); +// SHA1_STORE_STATE(29); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( b, c, d, e, a, me, 29 ); +// SHA1_STORE_STATE(30); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( a, b, c, d, e, me, 30 ); +// SHA1_STORE_STATE(31); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( e, a, b, c, d, me, 31 ); +// SHA1_STORE_STATE(32); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( d, e, a, b, c, me, 32 ); +// SHA1_STORE_STATE(33); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( c, d, e, a, b, me, 33 ); +// SHA1_STORE_STATE(34); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( b, c, d, e, a, me, 34 ); +// SHA1_STORE_STATE(35); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( a, b, c, d, e, me, 35 ); +// SHA1_STORE_STATE(36); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( e, a, b, c, d, me, 36 ); +// SHA1_STORE_STATE(37); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( d, e, a, b, c, me, 37 ); +// SHA1_STORE_STATE(38); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( c, d, e, a, b, me, 38 ); +// SHA1_STORE_STATE(39); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP( b, c, d, e, a, me, 39 ); + +// SHA1_STORE_STATE(40); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( a, b, c, d, e, me, 40 ); +// SHA1_STORE_STATE(41); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( e, a, b, c, d, me, 41 ); +// SHA1_STORE_STATE(42); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( d, e, a, b, c, me, 42 ); +// SHA1_STORE_STATE(43); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( c, d, e, a, b, me, 43 ); +// SHA1_STORE_STATE(44); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( b, c, d, e, a, me, 44 ); +// SHA1_STORE_STATE(45); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( a, b, c, d, e, me, 45 ); +// SHA1_STORE_STATE(46); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( e, a, b, c, d, me, 46 ); +// SHA1_STORE_STATE(47); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( d, e, a, b, c, me, 47 ); +// SHA1_STORE_STATE(48); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( c, d, e, a, b, me, 48 ); +// SHA1_STORE_STATE(49); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( b, c, d, e, a, me, 49 ); +// SHA1_STORE_STATE(50); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( a, b, c, d, e, me, 50 ); +// SHA1_STORE_STATE(51); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( e, a, b, c, d, me, 51 ); +// SHA1_STORE_STATE(52); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( d, e, a, b, c, me, 52 ); +// SHA1_STORE_STATE(53); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( c, d, e, a, b, me, 53 ); +// SHA1_STORE_STATE(54); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( b, c, d, e, a, me, 54 ); +// SHA1_STORE_STATE(55); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( a, b, c, d, e, me, 55 ); +// SHA1_STORE_STATE(56); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( e, a, b, c, d, me, 56 ); +// SHA1_STORE_STATE(57); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( d, e, a, b, c, me, 57 ); +// SHA1_STORE_STATE(58); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( c, d, e, a, b, me, 58 ); + SHA1_STORE_STATE(59); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP( b, c, d, e, a, me, 59 ); + + SHA1_STORE_STATE(60); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( a, b, c, d, e, me, 60 ); + SHA1_STORE_STATE(61); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( e, a, b, c, d, me, 61 ); + SHA1_STORE_STATE(62); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( d, e, a, b, c, me, 62 ); + SHA1_STORE_STATE(63); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( c, d, e, a, b, me, 63 ); + SHA1_STORE_STATE(64); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( b, c, d, e, a, me, 64 ); + SHA1_STORE_STATE(65); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( a, b, c, d, e, me, 65 ); + SHA1_STORE_STATE(66); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( e, a, b, c, d, me, 66 ); + SHA1_STORE_STATE(67); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( d, e, a, b, c, me, 67 ); + SHA1_STORE_STATE(68); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( c, d, e, a, b, me, 68 ); + SHA1_STORE_STATE(69); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( b, c, d, e, a, me, 69 ); + SHA1_STORE_STATE(70); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( a, b, c, d, e, me, 70 ); + SHA1_STORE_STATE(71); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( e, a, b, c, d, me, 71 ); + SHA1_STORE_STATE(72); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( d, e, a, b, c, me, 72 ); + SHA1_STORE_STATE(73); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( c, d, e, a, b, me, 73 ); +// SHA1_STORE_STATE(74); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( b, c, d, e, a, me, 74 ); +// SHA1_STORE_STATE(75); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( a, b, c, d, e, me, 75 ); +// SHA1_STORE_STATE(76); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( e, a, b, c, d, me, 76 ); +// SHA1_STORE_STATE(77); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( d, e, a, b, c, me, 77 ); +// SHA1_STORE_STATE(78); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( c, d, e, a, b, me, 78 ); +// SHA1_STORE_STATE(79); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP( b, c, d, e, a, me, 79 ); +// SHA1_STORE_STATE(80); + + ihv[0] += a; ihv[1] += b; ihv[2] += c; ihv[3] += d; ihv[4] += e; +} + +int sha1recompress_fast(unsigned t, uint32_t ihv[5], const uint32_t me[80], const uint32_t state[5], const uint32_t rihv[5]) { + uint32_t a = state[0], b = state[1], c = state[2], d = state[3], e = state[4]; + switch (t) { + case 79: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( b, c, d, e, a, me, 79 ); + case 78: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( c, d, e, a, b, me, 78 ); + case 77: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( d, e, a, b, c, me, 77 ); + case 76: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( e, a, b, c, d, me, 76 ); + case 75: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( a, b, c, d, e, me, 75 ); + case 74: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( b, c, d, e, a, me, 74 ); + case 73: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( c, d, e, a, b, me, 73 ); + case 72: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( d, e, a, b, c, me, 72 ); + case 71: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( e, a, b, c, d, me, 71 ); + case 70: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( a, b, c, d, e, me, 70 ); + case 69: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( b, c, d, e, a, me, 69 ); + case 68: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( c, d, e, a, b, me, 68 ); + case 67: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( d, e, a, b, c, me, 67 ); + case 66: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( e, a, b, c, d, me, 66 ); + case 65: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( a, b, c, d, e, me, 65 ); + case 64: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( b, c, d, e, a, me, 64 ); + case 63: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( c, d, e, a, b, me, 63 ); + case 62: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( d, e, a, b, c, me, 62 ); + case 61: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( e, a, b, c, d, me, 61 ); + case 60: HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW( a, b, c, d, e, me, 60 ); + case 59: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( b, c, d, e, a, me, 59 ); + case 58: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( c, d, e, a, b, me, 58 ); + case 57: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( d, e, a, b, c, me, 57 ); + case 56: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( e, a, b, c, d, me, 56 ); + case 55: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( a, b, c, d, e, me, 55 ); + case 54: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( b, c, d, e, a, me, 54 ); + case 53: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( c, d, e, a, b, me, 53 ); + case 52: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( d, e, a, b, c, me, 52 ); + case 51: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( e, a, b, c, d, me, 51 ); + case 50: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( a, b, c, d, e, me, 50 ); + case 49: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( b, c, d, e, a, me, 49 ); + case 48: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( c, d, e, a, b, me, 48 ); + case 47: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( d, e, a, b, c, me, 47 ); + case 46: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( e, a, b, c, d, me, 46 ); + case 45: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( a, b, c, d, e, me, 45 ); + case 44: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( b, c, d, e, a, me, 44 ); + case 43: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( c, d, e, a, b, me, 43 ); + case 42: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( d, e, a, b, c, me, 42 ); + case 41: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( e, a, b, c, d, me, 41 ); + case 40: HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW( a, b, c, d, e, me, 40 ); + case 39: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( b, c, d, e, a, me, 39 ); + case 38: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( c, d, e, a, b, me, 38 ); + case 37: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( d, e, a, b, c, me, 37 ); + case 36: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( e, a, b, c, d, me, 36 ); + case 35: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( a, b, c, d, e, me, 35 ); + case 34: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( b, c, d, e, a, me, 34 ); + case 33: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( c, d, e, a, b, me, 33 ); + case 32: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( d, e, a, b, c, me, 32 ); + case 31: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( e, a, b, c, d, me, 31 ); + case 30: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( a, b, c, d, e, me, 30 ); + case 29: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( b, c, d, e, a, me, 29 ); + case 28: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( c, d, e, a, b, me, 28 ); + case 27: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( d, e, a, b, c, me, 27 ); + case 26: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( e, a, b, c, d, me, 26 ); + case 25: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( a, b, c, d, e, me, 25 ); + case 24: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( b, c, d, e, a, me, 24 ); + case 23: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( c, d, e, a, b, me, 23 ); + case 22: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( d, e, a, b, c, me, 22 ); + case 21: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( e, a, b, c, d, me, 21 ); + case 20: HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW( a, b, c, d, e, me, 20 ); + case 19: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( b, c, d, e, a, me, 19 ); + case 18: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( c, d, e, a, b, me, 18 ); + case 17: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( d, e, a, b, c, me, 17 ); + case 16: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( e, a, b, c, d, me, 16 ); + case 15: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( a, b, c, d, e, me, 15 ); + case 14: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( b, c, d, e, a, me, 14 ); + case 13: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( c, d, e, a, b, me, 13 ); + case 12: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( d, e, a, b, c, me, 12 ); + case 11: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( e, a, b, c, d, me, 11 ); + case 10: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( a, b, c, d, e, me, 10 ); + case 9: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( b, c, d, e, a, me, 9 ); + case 8: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( c, d, e, a, b, me, 8 ); + case 7: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( d, e, a, b, c, me, 7 ); + case 6: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( e, a, b, c, d, me, 6 ); + case 5: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( a, b, c, d, e, me, 5 ); + case 4: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( b, c, d, e, a, me, 4 ); + case 3: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( c, d, e, a, b, me, 3 ); + case 2: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( d, e, a, b, c, me, 2 ); + case 1: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( e, a, b, c, d, me, 1 ); + case 0: HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW( a, b, c, d, e, me, 0 ); + } + ihv[0] = a; ihv[1] = b; ihv[2] = c; ihv[3] = d; ihv[4] = e; + a = state[0]; b = state[1]; c = state[2]; d = state[3]; e = state[4]; + + switch (t+1) { + case 0: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( a, b, c, d, e, me, 0 ); + case 1: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( e, a, b, c, d, me, 1 ); + case 2: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( d, e, a, b, c, me, 2 ); + case 3: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( c, d, e, a, b, me, 3 ); + case 4: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( b, c, d, e, a, me, 4 ); + case 5: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( a, b, c, d, e, me, 5 ); + case 6: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( e, a, b, c, d, me, 6 ); + case 7: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( d, e, a, b, c, me, 7 ); + case 8: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( c, d, e, a, b, me, 8 ); + case 9: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( b, c, d, e, a, me, 9 ); + case 10: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( a, b, c, d, e, me, 10 ); + case 11: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( e, a, b, c, d, me, 11 ); + case 12: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( d, e, a, b, c, me, 12 ); + case 13: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( c, d, e, a, b, me, 13 ); + case 14: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( b, c, d, e, a, me, 14 ); + case 15: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( a, b, c, d, e, me, 15 ); + case 16: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( e, a, b, c, d, me, 16 ); + case 17: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( d, e, a, b, c, me, 17 ); + case 18: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( c, d, e, a, b, me, 18 ); + case 19: HASHCLASH_SHA1COMPRESS_ROUND1_STEP( b, c, d, e, a, me, 19 ); + case 20: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( a, b, c, d, e, me, 20 ); + case 21: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( e, a, b, c, d, me, 21 ); + case 22: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( d, e, a, b, c, me, 22 ); + case 23: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( c, d, e, a, b, me, 23 ); + case 24: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( b, c, d, e, a, me, 24 ); + case 25: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( a, b, c, d, e, me, 25 ); + case 26: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( e, a, b, c, d, me, 26 ); + case 27: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( d, e, a, b, c, me, 27 ); + case 28: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( c, d, e, a, b, me, 28 ); + case 29: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( b, c, d, e, a, me, 29 ); + case 30: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( a, b, c, d, e, me, 30 ); + case 31: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( e, a, b, c, d, me, 31 ); + case 32: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( d, e, a, b, c, me, 32 ); + case 33: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( c, d, e, a, b, me, 33 ); + case 34: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( b, c, d, e, a, me, 34 ); + case 35: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( a, b, c, d, e, me, 35 ); + case 36: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( e, a, b, c, d, me, 36 ); + case 37: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( d, e, a, b, c, me, 37 ); + case 38: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( c, d, e, a, b, me, 38 ); + case 39: HASHCLASH_SHA1COMPRESS_ROUND2_STEP( b, c, d, e, a, me, 39 ); + case 40: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( a, b, c, d, e, me, 40 ); + case 41: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( e, a, b, c, d, me, 41 ); + case 42: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( d, e, a, b, c, me, 42 ); + case 43: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( c, d, e, a, b, me, 43 ); + case 44: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( b, c, d, e, a, me, 44 ); + case 45: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( a, b, c, d, e, me, 45 ); + case 46: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( e, a, b, c, d, me, 46 ); + case 47: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( d, e, a, b, c, me, 47 ); + case 48: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( c, d, e, a, b, me, 48 ); + case 49: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( b, c, d, e, a, me, 49 ); + case 50: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( a, b, c, d, e, me, 50 ); + case 51: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( e, a, b, c, d, me, 51 ); + case 52: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( d, e, a, b, c, me, 52 ); + case 53: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( c, d, e, a, b, me, 53 ); + case 54: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( b, c, d, e, a, me, 54 ); + case 55: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( a, b, c, d, e, me, 55 ); + case 56: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( e, a, b, c, d, me, 56 ); + case 57: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( d, e, a, b, c, me, 57 ); + case 58: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( c, d, e, a, b, me, 58 ); + case 59: HASHCLASH_SHA1COMPRESS_ROUND3_STEP( b, c, d, e, a, me, 59 ); + case 60: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( a, b, c, d, e, me, 60 ); + case 61: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( e, a, b, c, d, me, 61 ); + case 62: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( d, e, a, b, c, me, 62 ); + case 63: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( c, d, e, a, b, me, 63 ); + case 64: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( b, c, d, e, a, me, 64 ); + case 65: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( a, b, c, d, e, me, 65 ); + case 66: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( e, a, b, c, d, me, 66 ); + case 67: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( d, e, a, b, c, me, 67 ); + case 68: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( c, d, e, a, b, me, 68 ); + case 69: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( b, c, d, e, a, me, 69 ); + case 70: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( a, b, c, d, e, me, 70 ); + case 71: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( e, a, b, c, d, me, 71 ); + case 72: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( d, e, a, b, c, me, 72 ); + case 73: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( c, d, e, a, b, me, 73 ); + case 74: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( b, c, d, e, a, me, 74 ); + case 75: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( a, b, c, d, e, me, 75 ); + case 76: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( e, a, b, c, d, me, 76 ); + case 77: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( d, e, a, b, c, me, 77 ); + case 78: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( c, d, e, a, b, me, 78 ); + case 79: HASHCLASH_SHA1COMPRESS_ROUND4_STEP( b, c, d, e, a, me, 79 ); + } + return (rihv[0] == ihv[0]+a && rihv[1] == ihv[1]+b && rihv[2] == ihv[2]+c && rihv[3] == ihv[3]+d && rihv[4] == ihv[4]+e); +} + +typedef struct { + int dvtype; + int dvK; + int dvB; +} sha1_dv_t; +sha1_dv_t sha1_dvs[] = { + { 1, 46, 0 }, + { 1, 47, 0 }, + { 1, 48, 0 }, + { 1, 49, 0 }, + { 1, 50, 0 }, + { 1, 51, 0 }, + { 1, 48, 2 }, + { 1, 49, 2 }, + { 1, 50, 2 }, + { 2, 45, 0 }, + { 2, 46, 0 }, + { 2, 47, 0 }, + { 2, 48, 0 }, + { 2, 49, 0 }, + { 2, 50, 0 }, + { 2, 51, 0 }, + { 2, 52, 0 }, + { 2, 53, 0 }, + { 2, 54, 0 }, + { 2, 56 ,0 }, + { 2, 57, 0 }, + { 2, 58, 0 }, + { 0, 0, 0} // end of table marker +}; + +const uint32_t sha1_dv_xm_table[][80] = { +{ 0x2c000010, 0xf4000014, 0xb4000008, 0x08000000, 0x9800000c, 0xd8000010, 0x08000010, 0xb8000010, 0x98000000, 0x60000000, 0x00000008, 0xc0000000, 0x90000014, 0x10000010, 0xb8000014, 0x28000000, 0x20000010, 0x48000000, 0x08000018, 0x60000000, 0x90000010, 0xf0000010, 0x90000008, 0xc0000000, 0x90000010, 0xf0000010, 0xb0000008, 0x40000000, 0x90000000, 0xf0000010, 0x90000018, 0x60000000, 0x90000010, 0x90000010, 0x90000000, 0x80000000, 0x00000010, 0xa0000000, 0x20000000, 0xa0000000, 0x20000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x20000000, 0x00000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000040, 0x40000002, 0x80000004, 0x80000080, 0x80000006, 0x00000049, 0x00000103, 0x80000009, 0x80000012, 0x80000202, 0x00000018, 0x00000164, 0x00000408, 0x800000e6, 0x8000004c}, +{ 0xc8000010, 0x2c000010, 0xf4000014, 0xb4000008, 0x08000000, 0x9800000c, 0xd8000010, 0x08000010, 0xb8000010, 0x98000000, 0x60000000, 0x00000008, 0xc0000000, 0x90000014, 0x10000010, 0xb8000014, 0x28000000, 0x20000010, 0x48000000, 0x08000018, 0x60000000, 0x90000010, 0xf0000010, 0x90000008, 0xc0000000, 0x90000010, 0xf0000010, 0xb0000008, 0x40000000, 0x90000000, 0xf0000010, 0x90000018, 0x60000000, 0x90000010, 0x90000010, 0x90000000, 0x80000000, 0x00000010, 0xa0000000, 0x20000000, 0xa0000000, 0x20000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x20000000, 0x00000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000040, 0x40000002, 0x80000004, 0x80000080, 0x80000006, 0x00000049, 0x00000103, 0x80000009, 0x80000012, 0x80000202, 0x00000018, 0x00000164, 0x00000408, 0x800000e6}, +{ 0xb800000a, 0xc8000010, 0x2c000010, 0xf4000014, 0xb4000008, 0x08000000, 0x9800000c, 0xd8000010, 0x08000010, 0xb8000010, 0x98000000, 0x60000000, 0x00000008, 0xc0000000, 0x90000014, 0x10000010, 0xb8000014, 0x28000000, 0x20000010, 0x48000000, 0x08000018, 0x60000000, 0x90000010, 0xf0000010, 0x90000008, 0xc0000000, 0x90000010, 0xf0000010, 0xb0000008, 0x40000000, 0x90000000, 0xf0000010, 0x90000018, 0x60000000, 0x90000010, 0x90000010, 0x90000000, 0x80000000, 0x00000010, 0xa0000000, 0x20000000, 0xa0000000, 0x20000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x20000000, 0x00000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000040, 0x40000002, 0x80000004, 0x80000080, 0x80000006, 0x00000049, 0x00000103, 0x80000009, 0x80000012, 0x80000202, 0x00000018, 0x00000164, 0x00000408}, +{ 0x18000000, 0xb800000a, 0xc8000010, 0x2c000010, 0xf4000014, 0xb4000008, 0x08000000, 0x9800000c, 0xd8000010, 0x08000010, 0xb8000010, 0x98000000, 0x60000000, 0x00000008, 0xc0000000, 0x90000014, 0x10000010, 0xb8000014, 0x28000000, 0x20000010, 0x48000000, 0x08000018, 0x60000000, 0x90000010, 0xf0000010, 0x90000008, 0xc0000000, 0x90000010, 0xf0000010, 0xb0000008, 0x40000000, 0x90000000, 0xf0000010, 0x90000018, 0x60000000, 0x90000010, 0x90000010, 0x90000000, 0x80000000, 0x00000010, 0xa0000000, 0x20000000, 0xa0000000, 0x20000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x20000000, 0x00000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000040, 0x40000002, 0x80000004, 0x80000080, 0x80000006, 0x00000049, 0x00000103, 0x80000009, 0x80000012, 0x80000202, 0x00000018, 0x00000164}, +{ 0x0800000c, 0x18000000, 0xb800000a, 0xc8000010, 0x2c000010, 0xf4000014, 0xb4000008, 0x08000000, 0x9800000c, 0xd8000010, 0x08000010, 0xb8000010, 0x98000000, 0x60000000, 0x00000008, 0xc0000000, 0x90000014, 0x10000010, 0xb8000014, 0x28000000, 0x20000010, 0x48000000, 0x08000018, 0x60000000, 0x90000010, 0xf0000010, 0x90000008, 0xc0000000, 0x90000010, 0xf0000010, 0xb0000008, 0x40000000, 0x90000000, 0xf0000010, 0x90000018, 0x60000000, 0x90000010, 0x90000010, 0x90000000, 0x80000000, 0x00000010, 0xa0000000, 0x20000000, 0xa0000000, 0x20000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x20000000, 0x00000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000040, 0x40000002, 0x80000004, 0x80000080, 0x80000006, 0x00000049, 0x00000103, 0x80000009, 0x80000012, 0x80000202, 0x00000018}, +{ 0xe8000000, 0x0800000c, 0x18000000, 0xb800000a, 0xc8000010, 0x2c000010, 0xf4000014, 0xb4000008, 0x08000000, 0x9800000c, 0xd8000010, 0x08000010, 0xb8000010, 0x98000000, 0x60000000, 0x00000008, 0xc0000000, 0x90000014, 0x10000010, 0xb8000014, 0x28000000, 0x20000010, 0x48000000, 0x08000018, 0x60000000, 0x90000010, 0xf0000010, 0x90000008, 0xc0000000, 0x90000010, 0xf0000010, 0xb0000008, 0x40000000, 0x90000000, 0xf0000010, 0x90000018, 0x60000000, 0x90000010, 0x90000010, 0x90000000, 0x80000000, 0x00000010, 0xa0000000, 0x20000000, 0xa0000000, 0x20000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x20000000, 0x00000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000040, 0x40000002, 0x80000004, 0x80000080, 0x80000006, 0x00000049, 0x00000103, 0x80000009, 0x80000012, 0x80000202}, +{ 0xe000002a, 0x20000043, 0xb0000040, 0xd0000053, 0xd0000022, 0x20000000, 0x60000032, 0x60000043, 0x20000040, 0xe0000042, 0x60000002, 0x80000001, 0x00000020, 0x00000003, 0x40000052, 0x40000040, 0xe0000052, 0xa0000000, 0x80000040, 0x20000001, 0x20000060, 0x80000001, 0x40000042, 0xc0000043, 0x40000022, 0x00000003, 0x40000042, 0xc0000043, 0xc0000022, 0x00000001, 0x40000002, 0xc0000043, 0x40000062, 0x80000001, 0x40000042, 0x40000042, 0x40000002, 0x00000002, 0x00000040, 0x80000002, 0x80000000, 0x80000002, 0x80000040, 0x00000000, 0x80000040, 0x80000000, 0x00000040, 0x80000000, 0x00000040, 0x80000002, 0x00000000, 0x80000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x00000080, 0x00000004, 0x00000009, 0x00000101, 0x00000009, 0x00000012, 0x00000202, 0x0000001a, 0x00000124, 0x0000040c, 0x00000026, 0x0000004a, 0x0000080a, 0x00000060, 0x00000590, 0x00001020}, +{ 0x60000000, 0xe000002a, 0x20000043, 0xb0000040, 0xd0000053, 0xd0000022, 0x20000000, 0x60000032, 0x60000043, 0x20000040, 0xe0000042, 0x60000002, 0x80000001, 0x00000020, 0x00000003, 0x40000052, 0x40000040, 0xe0000052, 0xa0000000, 0x80000040, 0x20000001, 0x20000060, 0x80000001, 0x40000042, 0xc0000043, 0x40000022, 0x00000003, 0x40000042, 0xc0000043, 0xc0000022, 0x00000001, 0x40000002, 0xc0000043, 0x40000062, 0x80000001, 0x40000042, 0x40000042, 0x40000002, 0x00000002, 0x00000040, 0x80000002, 0x80000000, 0x80000002, 0x80000040, 0x00000000, 0x80000040, 0x80000000, 0x00000040, 0x80000000, 0x00000040, 0x80000002, 0x00000000, 0x80000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x00000080, 0x00000004, 0x00000009, 0x00000101, 0x00000009, 0x00000012, 0x00000202, 0x0000001a, 0x00000124, 0x0000040c, 0x00000026, 0x0000004a, 0x0000080a, 0x00000060, 0x00000590}, +{ 0x20000030, 0x60000000, 0xe000002a, 0x20000043, 0xb0000040, 0xd0000053, 0xd0000022, 0x20000000, 0x60000032, 0x60000043, 0x20000040, 0xe0000042, 0x60000002, 0x80000001, 0x00000020, 0x00000003, 0x40000052, 0x40000040, 0xe0000052, 0xa0000000, 0x80000040, 0x20000001, 0x20000060, 0x80000001, 0x40000042, 0xc0000043, 0x40000022, 0x00000003, 0x40000042, 0xc0000043, 0xc0000022, 0x00000001, 0x40000002, 0xc0000043, 0x40000062, 0x80000001, 0x40000042, 0x40000042, 0x40000002, 0x00000002, 0x00000040, 0x80000002, 0x80000000, 0x80000002, 0x80000040, 0x00000000, 0x80000040, 0x80000000, 0x00000040, 0x80000000, 0x00000040, 0x80000002, 0x00000000, 0x80000000, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000004, 0x00000080, 0x00000004, 0x00000009, 0x00000101, 0x00000009, 0x00000012, 0x00000202, 0x0000001a, 0x00000124, 0x0000040c, 0x00000026, 0x0000004a, 0x0000080a, 0x00000060}, +{ 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107, 0x00000089, 0x00000014, 0x8000024b, 0x0000011b, 0x8000016d, 0x8000041a, 0x000002e4, 0x80000054, 0x00000967}, +{ 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107, 0x00000089, 0x00000014, 0x8000024b, 0x0000011b, 0x8000016d, 0x8000041a, 0x000002e4, 0x80000054}, +{ 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107, 0x00000089, 0x00000014, 0x8000024b, 0x0000011b, 0x8000016d, 0x8000041a, 0x000002e4}, +{ 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107, 0x00000089, 0x00000014, 0x8000024b, 0x0000011b, 0x8000016d, 0x8000041a}, +{ 0x3c000004, 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107, 0x00000089, 0x00000014, 0x8000024b, 0x0000011b, 0x8000016d}, +{ 0xb400001c, 0x3c000004, 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107, 0x00000089, 0x00000014, 0x8000024b, 0x0000011b}, +{ 0xc0000010, 0xb400001c, 0x3c000004, 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107, 0x00000089, 0x00000014, 0x8000024b}, +{ 0x0c000002, 0xc0000010, 0xb400001c, 0x3c000004, 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107, 0x00000089, 0x00000014}, +{ 0xcc000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x3c000004, 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107, 0x00000089}, +{ 0x0400001c, 0xcc000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x3c000004, 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046, 0x4000004b, 0x80000107}, +{ 0x2600001a, 0x00000010, 0x0400001c, 0xcc000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x3c000004, 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082, 0xc0000046}, +{ 0x26000014, 0x2600001a, 0x00000010, 0x0400001c, 0xcc000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x3c000004, 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005, 0xc0000082}, +{ 0x2400001c, 0x26000014, 0x2600001a, 0x00000010, 0x0400001c, 0xcc000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x3c000004, 0xbc00001a, 0x20000010, 0x2400001c, 0xec000014, 0x0c000002, 0xc0000010, 0xb400001c, 0x2c000004, 0xbc000018, 0xb0000010, 0x0000000c, 0xb8000010, 0x08000018, 0x78000010, 0x08000014, 0x70000010, 0xb800001c, 0xe8000000, 0xb0000004, 0x58000010, 0xb000000c, 0x48000000, 0xb0000000, 0xb8000010, 0x98000010, 0xa0000000, 0x00000000, 0x00000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0x20000000, 0x00000010, 0x60000000, 0x00000018, 0xe0000000, 0x90000000, 0x30000010, 0xb0000000, 0x20000000, 0x20000000, 0xa0000000, 0x00000010, 0x80000000, 0x20000000, 0x20000000, 0x20000000, 0x80000000, 0x00000010, 0x00000000, 0x20000010, 0xa0000000, 0x00000000, 0x20000000, 0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x00000020, 0x00000001, 0x40000002, 0x40000041, 0x40000022, 0x80000005} +}; + +void gen_sha1_dv_xm_tables() { + int i,j,K,B; + uint32_t xm[80]; + for (i = 0; sha1_dvs[i].dvtype != 0; ++i) { + K = sha1_dvs[i].dvK; + B = sha1_dvs[i].dvB; + for (j = 0; j < 80; ++j) + xm[j] = 0; + switch (sha1_dvs[i].dvtype) { + case 1: + xm[K+0] = (1<<4); + xm[K+1] = (1<<29)|(1<<31); + xm[K+3] = (1<<29); + xm[K+4] = (1<<29); + xm[K+15] = (1<<0); + break; + case 2: + xm[K+0] = (1<<29); + xm[K+1] = (1<<31); + xm[K+2] = (1<<4); + xm[K+4] = (1<<4)|(1<<29); + xm[K+5] = (1<<29)|(1<<31); + xm[K+7] = (1<<29); + xm[K+8] = (1<<29); + xm[K+15] = (1<<0); + break; + default: + printf("huh?!?"); + exit(1); + } + if (B) + for (j = 0; j < 16; ++j) + xm[K+j] = rotate_left(xm[K+j],B); + for (j = K+16; j < 80; ++j) + xm[j]=rotate_left(xm[j-3] ^ xm[j-8] ^ xm[j-14] ^ xm[j-16], 1); + for (j = K-1; j >= 0; --j) + xm[j+16-16]=rotate_right(xm[j+16-0],1) ^ xm[j+16-3] ^ xm[j+16-8] ^ xm[j+16-14]; +#if 0 +// generate tables + printf("{"); + for (j = 0; j < 80; ++j) + printf("%s 0x%08x", (j==0)?" ":",", xm[j]); + printf("},\n"); +#else +// verify tables + for (j = 0; j < 80; ++j) + if (xm[j] != sha1_dv_xm_table[i][j]) { +#ifdef VERBOSE_COLLDETECT + printf("mismatch: %d %d\n", i, j); +#endif + exit(0); + } +#endif + } +} + +void print_sha1_coll(uint64_t total, const uint32_t ihv1[5], const uint32_t block1[16], const uint32_t ihv2[5], const uint32_t block2[16], const char* DV) { + unsigned i; + printf("Found collision in block %d using DV %s:\n dm: ", ((total>>6)-1), DV); + for (i = 0; i < 16; ++i) + if (block2[i]-block1[i]) + printf("dm%d=%08x ", i, block2[i]-block1[i]); + printf("\n ihv1="); + for (i = 0; i < 5; ++i) + printf("%08x", ihv1[i]); + printf("\n ihv2="); + for (i = 0; i < 5; ++i) + printf("%08x", ihv2[i]); + printf("\n"); +} + +char dv_string[10]; +void sha1_process(SHA1_CTX* ctx, const uint32_t block[16]) { + unsigned i,j,t; + ctx->ihv1[0] = ctx->ihv[0]; + ctx->ihv1[1] = ctx->ihv[1]; + ctx->ihv1[2] = ctx->ihv[2]; + ctx->ihv1[3] = ctx->ihv[3]; + ctx->ihv1[4] = ctx->ihv[4]; + sha1compress_me(block, ctx->m1); + sha1compress_states(ctx->ihv, ctx->m1, ctx->states); + for (i = 0; sha1_dvs[i].dvtype != 0; ++i) { + t = sha1_dvs[i].dvK+13; + for (j = 0; j < 80; ++j) + ctx->m2[j] = ctx->m1[j] ^ sha1_dv_xm_table[i][j]; + if (sha1recompress_fast(t, ctx->ihv2, ctx->m2, ctx->states+((t+1)*5), ctx->ihv)) { +#ifdef VERBOSE_COLLDETECT + sprintf(dv_string, "%s(%b,%b)", sha1_dvs[i].dvtype==1?"I":"II", sha1_dvs[i].dvK, sha1_dvs[i].dvB); + print_sha1_coll(ctx->total, ctx->ihv1, ctx->m1, ctx->ihv2, ctx->m2, dv_string); +#endif + ctx->found_collision = 1; + if (ctx->safe_hash) { + sha1compress_states(ctx->ihv, ctx->m1, ctx->states); + sha1compress_states(ctx->ihv, ctx->m1, ctx->states); + } + } +#ifdef DETECT_REDUCED_SHA_COLLISION // to verify SHA-1 collision detection code with collisions for reduced-step SHA-1 + if (ctx->ihv1[0]==ctx->ihv2[0] && ctx->ihv1[1]==ctx->ihv2[1] && ctx->ihv1[2]==ctx->ihv2[2] && ctx->ihv1[3]==ctx->ihv2[3] && ctx->ihv1[4]==ctx->ihv2[4]) { +#ifdef VERBOSE_COLLDETECT + printf("Partial collision found\n"); + sprintf(dv_string, "%s(%d,%d)", sha1_dvs[i].dvtype==1?"I":"II", sha1_dvs[i].dvK, sha1_dvs[i].dvB); + print_sha1_coll(ctx->total, ctx->ihv1, ctx->m1, ctx->ihv2, ctx->m2, dv_string); +#endif + } +#endif + } +} + +void SHA1Init(SHA1_CTX* ctx) { + static const union { unsigned char bytes[4]; uint32_t value; } endianness = { { 0, 1, 2, 3 } }; + static const uint32_t littleendian = 0x03020100; + ctx->total = 0; + ctx->ihv[0] = 0x67452301; + ctx->ihv[1] = 0xEFCDAB89; + ctx->ihv[2] = 0x98BADCFE; + ctx->ihv[3] = 0x10325476; + ctx->ihv[4] = 0xC3D2E1F0; + ctx->found_collision = 0; + ctx->safe_hash = 1; + ctx->bigendian = (endianness.value != littleendian); + gen_sha1_dv_xm_tables(); // verify or construct sha1_dv_xm_table from sha1_dvs +} +void SHA1Init_unsafe(SHA1_CTX* ctx) { + static const union { unsigned char bytes[4]; uint32_t value; } endianness = { { 0, 1, 2, 3 } }; + static const uint32_t littleendian = 0x03020100; + ctx->total = 0; + ctx->ihv[0] = 0x67452301; + ctx->ihv[1] = 0xEFCDAB89; + ctx->ihv[2] = 0x98BADCFE; + ctx->ihv[3] = 0x10325476; + ctx->ihv[4] = 0xC3D2E1F0; + ctx->found_collision = 0; + ctx->safe_hash = 0; + ctx->bigendian = (endianness.value != littleendian); +} + +void SHA1Update(SHA1_CTX* ctx, const char* buf, unsigned len) { + unsigned left, fill; + if (ctx == NULL) exit(1); + if (len == 0) return; + if (buf == NULL) exit(1); + + left = ctx->total&63; + fill = 64 - left; + + if (left && len >= fill) { + ctx->total += fill; + + memcpy(ctx->buffer + left, buf, fill); + if (!ctx->bigendian) + swap_bytes((uint32_t*)(ctx->buffer)); + sha1_process(ctx, (uint32_t*)(ctx->buffer)); + buf += fill; + len -= fill; + left = 0; + } + while (len >= 64) { + ctx->total += 64; + if (!ctx->bigendian) { + memcpy(ctx->buffer, buf, 64); + swap_bytes((uint32_t*)(ctx->buffer)); + sha1_process(ctx, (uint32_t*)(ctx->buffer)); + } else + sha1_process(ctx, (uint32_t*)(buf)); + buf += 64; + len -= 64; + } + if (len > 0) { + ctx->total += len; + memcpy(ctx->buffer + left, buf, len); + } +} + +static const unsigned char sha1_padding[64] = +{ + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +int SHA1Final(unsigned char output[20], SHA1_CTX *ctx) +{ + uint32_t last = ctx->total&63; + uint32_t padn = (last < 56) ? (56-last) : (120-last); + SHA1Update(ctx, (const char*)(sha1_padding), padn); + ctx->total -= padn; + ctx->total <<= 3; + ctx->buffer[56] = (unsigned char)(ctx->total>>56); + ctx->buffer[57] = (unsigned char)(ctx->total>>48); + ctx->buffer[58] = (unsigned char)(ctx->total>>40); + ctx->buffer[59] = (unsigned char)(ctx->total>>32); + ctx->buffer[60] = (unsigned char)(ctx->total>>24); + ctx->buffer[61] = (unsigned char)(ctx->total>>16); + ctx->buffer[62] = (unsigned char)(ctx->total>>8); + ctx->buffer[63] = (unsigned char)(ctx->total); + if (!ctx->bigendian) + swap_bytes((uint32_t*)(ctx->buffer)); + sha1_process(ctx, (uint32_t*)(ctx->buffer)); + output[0] = (unsigned char)(ctx->ihv[0]>>24); + output[1] = (unsigned char)(ctx->ihv[0]>>16); + output[2] = (unsigned char)(ctx->ihv[0]>>8); + output[3] = (unsigned char)(ctx->ihv[0]); + output[4] = (unsigned char)(ctx->ihv[1]>>24); + output[5] = (unsigned char)(ctx->ihv[1]>>16); + output[6] = (unsigned char)(ctx->ihv[1]>>8); + output[7] = (unsigned char)(ctx->ihv[1]); + output[8] = (unsigned char)(ctx->ihv[2]>>24); + output[9] = (unsigned char)(ctx->ihv[2]>>16); + output[10] = (unsigned char)(ctx->ihv[2]>>8); + output[11] = (unsigned char)(ctx->ihv[2]); + output[12] = (unsigned char)(ctx->ihv[3]>>24); + output[13] = (unsigned char)(ctx->ihv[3]>>16); + output[14] = (unsigned char)(ctx->ihv[3]>>8); + output[15] = (unsigned char)(ctx->ihv[3]); + output[16] = (unsigned char)(ctx->ihv[4]>>24); + output[17] = (unsigned char)(ctx->ihv[4]>>16); + output[18] = (unsigned char)(ctx->ihv[4]>>8); + output[19] = (unsigned char)(ctx->ihv[4]); + return ctx->found_collision; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +void md5compress_states(uint32_t ihv[4], const uint32_t block[16], uint32_t states[260]) +{ + uint32_t a = ihv[0]; uint32_t b = ihv[1]; uint32_t c = ihv[2]; uint32_t d = ihv[3]; + +// STORE_STATE(0); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, a, b, c, d, block[ 0], 0xd76aa478, 7); +// STORE_STATE(1); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, d, a, b, c, block[ 1], 0xe8c7b756, 12); +// STORE_STATE(2); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, c, d, a, b, block[ 2], 0x242070db, 17); +// STORE_STATE(3); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, b, c, d, a, block[ 3], 0xc1bdceee, 22); +// STORE_STATE(4); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, a, b, c, d, block[ 4], 0xf57c0faf, 7); +// STORE_STATE(5); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, d, a, b, c, block[ 5], 0x4787c62a, 12); +// STORE_STATE(6); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, c, d, a, b, block[ 6], 0xa8304613, 17); +// STORE_STATE(7); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, b, c, d, a, block[ 7], 0xfd469501, 22); +// STORE_STATE(8); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, a, b, c, d, block[ 8], 0x698098d8, 7); +// STORE_STATE(9); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, d, a, b, c, block[ 9], 0x8b44f7af, 12); +// STORE_STATE(10); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, c, d, a, b, block[10], 0xffff5bb1, 17); +// STORE_STATE(11); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, b, c, d, a, block[11], 0x895cd7be, 22); +// STORE_STATE(12); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, a, b, c, d, block[12], 0x6b901122, 7); +// STORE_STATE(13); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, d, a, b, c, block[13], 0xfd987193, 12); +// STORE_STATE(14); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, c, d, a, b, block[14], 0xa679438e, 17); +// STORE_STATE(15); + HASHUTIL5_MD5COMPRESS_STEP(md5_ff, b, c, d, a, block[15], 0x49b40821, 22); +// STORE_STATE(16); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, a, b, c, d, block[ 1], 0xf61e2562, 5); +// STORE_STATE(17); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, d, a, b, c, block[ 6], 0xc040b340, 9); +// STORE_STATE(18); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, c, d, a, b, block[11], 0x265e5a51, 14); +// STORE_STATE(19); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, b, c, d, a, block[ 0], 0xe9b6c7aa, 20); +// STORE_STATE(20); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, a, b, c, d, block[ 5], 0xd62f105d, 5); +// STORE_STATE(21); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, d, a, b, c, block[10], 0x02441453, 9); +// STORE_STATE(22); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, c, d, a, b, block[15], 0xd8a1e681, 14); +// STORE_STATE(23); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, b, c, d, a, block[ 4], 0xe7d3fbc8, 20); +// STORE_STATE(24); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, a, b, c, d, block[ 9], 0x21e1cde6, 5); +// STORE_STATE(25); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, d, a, b, c, block[14], 0xc33707d6, 9); +// STORE_STATE(26); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, c, d, a, b, block[ 3], 0xf4d50d87, 14); +// STORE_STATE(27); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, b, c, d, a, block[ 8], 0x455a14ed, 20); +// STORE_STATE(28); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, a, b, c, d, block[13], 0xa9e3e905, 5); +// STORE_STATE(29); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, d, a, b, c, block[ 2], 0xfcefa3f8, 9); +// STORE_STATE(30); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, c, d, a, b, block[ 7], 0x676f02d9, 14); +// STORE_STATE(31); + HASHUTIL5_MD5COMPRESS_STEP(md5_gg, b, c, d, a, block[12], 0x8d2a4c8a, 20); +// STORE_STATE(32); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, a, b, c, d, block[ 5], 0xfffa3942, 4); +// STORE_STATE(33); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, d, a, b, c, block[ 8], 0x8771f681, 11); +// STORE_STATE(34); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, c, d, a, b, block[11], 0x6d9d6122, 16); +// STORE_STATE(35); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, b, c, d, a, block[14], 0xfde5380c, 23); +// STORE_STATE(36); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, a, b, c, d, block[ 1], 0xa4beea44, 4); +// STORE_STATE(37); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, d, a, b, c, block[ 4], 0x4bdecfa9, 11); + STORE_STATE(38); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, c, d, a, b, block[ 7], 0xf6bb4b60, 16); +// STORE_STATE(39); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, b, c, d, a, block[10], 0xbebfbc70, 23); +// STORE_STATE(40); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, a, b, c, d, block[13], 0x289b7ec6, 4); +// STORE_STATE(41); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, d, a, b, c, block[ 0], 0xeaa127fa, 11); +// STORE_STATE(42); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, c, d, a, b, block[ 3], 0xd4ef3085, 16); +// STORE_STATE(43); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, b, c, d, a, block[ 6], 0x04881d05, 23); +// STORE_STATE(44); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, a, b, c, d, block[ 9], 0xd9d4d039, 4); + STORE_STATE(45); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, d, a, b, c, block[12], 0xe6db99e5, 11); +// STORE_STATE(46); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, c, d, a, b, block[15], 0x1fa27cf8, 16); +// STORE_STATE(47); + HASHUTIL5_MD5COMPRESS_STEP(md5_hh, b, c, d, a, block[ 2], 0xc4ac5665, 23); +// STORE_STATE(48); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, a, b, c, d, block[ 0], 0xf4292244, 6); +// STORE_STATE(49); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, d, a, b, c, block[ 7], 0x432aff97, 10); +// STORE_STATE(50); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, c, d, a, b, block[14], 0xab9423a7, 15); + STORE_STATE(51); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, b, c, d, a, block[ 5], 0xfc93a039, 21); +// STORE_STATE(52); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, a, b, c, d, block[12], 0x655b59c3, 6); +// STORE_STATE(53); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, d, a, b, c, block[ 3], 0x8f0ccc92, 10); +// STORE_STATE(54); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, c, d, a, b, block[10], 0xffeff47d, 15); +// STORE_STATE(55); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, b, c, d, a, block[ 1], 0x85845dd1, 21); +// STORE_STATE(56); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, a, b, c, d, block[ 8], 0x6fa87e4f, 6); +// STORE_STATE(57); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, d, a, b, c, block[15], 0xfe2ce6e0, 10); +// STORE_STATE(58); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, c, d, a, b, block[ 6], 0xa3014314, 15); +// STORE_STATE(59); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, b, c, d, a, block[13], 0x4e0811a1, 21); +// STORE_STATE(60); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, a, b, c, d, block[ 4], 0xf7537e82, 6); +// STORE_STATE(61); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, d, a, b, c, block[11], 0xbd3af235, 10); +// STORE_STATE(62); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, c, d, a, b, block[ 2], 0x2ad7d2bb, 15); +// STORE_STATE(63); + HASHUTIL5_MD5COMPRESS_STEP(md5_ii, b, c, d, a, block[ 9], 0xeb86d391, 21); +// STORE_STATE(64); + + ihv[0] += a; ihv[1] += b; ihv[2] += c; ihv[3] += d; +} + +int md5recompress_fast(unsigned t, uint32_t ihv[4], const uint32_t block[16], const uint32_t state[4], const uint32_t rihv[4]) +{ + uint32_t a = state[0], b = state[1], c = state[2], d = state[3]; + switch (t) { + case 63: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, b, c, d, a, block[ 9], 0xeb86d391, 21); + case 62: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, c, d, a, b, block[ 2], 0x2ad7d2bb, 15); + case 61: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, d, a, b, c, block[11], 0xbd3af235, 10); + case 60: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, a, b, c, d, block[ 4], 0xf7537e82, 6); + case 59: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, b, c, d, a, block[13], 0x4e0811a1, 21); + case 58: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, c, d, a, b, block[ 6], 0xa3014314, 15); + case 57: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, d, a, b, c, block[15], 0xfe2ce6e0, 10); + case 56: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, a, b, c, d, block[ 8], 0x6fa87e4f, 6); + case 55: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, b, c, d, a, block[ 1], 0x85845dd1, 21); + case 54: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, c, d, a, b, block[10], 0xffeff47d, 15); + case 53: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, d, a, b, c, block[ 3], 0x8f0ccc92, 10); + case 52: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, a, b, c, d, block[12], 0x655b59c3, 6); + case 51: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, b, c, d, a, block[ 5], 0xfc93a039, 21); + case 50: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, c, d, a, b, block[14], 0xab9423a7, 15); + case 49: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, d, a, b, c, block[ 7], 0x432aff97, 10); + case 48: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ii, a, b, c, d, block[ 0], 0xf4292244, 6); + case 47: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, b, c, d, a, block[ 2], 0xc4ac5665, 23); + case 46: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, c, d, a, b, block[15], 0x1fa27cf8, 16); + case 45: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, d, a, b, c, block[12], 0xe6db99e5, 11); + case 44: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, a, b, c, d, block[ 9], 0xd9d4d039, 4); + case 43: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, b, c, d, a, block[ 6], 0x04881d05, 23); + case 42: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, c, d, a, b, block[ 3], 0xd4ef3085, 16); + case 41: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, d, a, b, c, block[ 0], 0xeaa127fa, 11); + case 40: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, a, b, c, d, block[13], 0x289b7ec6, 4); + case 39: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, b, c, d, a, block[10], 0xbebfbc70, 23); + case 38: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, c, d, a, b, block[ 7], 0xf6bb4b60, 16); + case 37: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, d, a, b, c, block[ 4], 0x4bdecfa9, 11); + case 36: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, a, b, c, d, block[ 1], 0xa4beea44, 4); + case 35: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, b, c, d, a, block[14], 0xfde5380c, 23); + case 34: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, c, d, a, b, block[11], 0x6d9d6122, 16); + case 33: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, d, a, b, c, block[ 8], 0x8771f681, 11); + case 32: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_hh, a, b, c, d, block[ 5], 0xfffa3942, 4); + case 31: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, b, c, d, a, block[12], 0x8d2a4c8a, 20); + case 30: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, c, d, a, b, block[ 7], 0x676f02d9, 14); + case 29: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, d, a, b, c, block[ 2], 0xfcefa3f8, 9); + case 28: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, a, b, c, d, block[13], 0xa9e3e905, 5); + case 27: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, b, c, d, a, block[ 8], 0x455a14ed, 20); + case 26: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, c, d, a, b, block[ 3], 0xf4d50d87, 14); + case 25: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, d, a, b, c, block[14], 0xc33707d6, 9); + case 24: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, a, b, c, d, block[ 9], 0x21e1cde6, 5); + case 23: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, b, c, d, a, block[ 4], 0xe7d3fbc8, 20); + case 22: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, c, d, a, b, block[15], 0xd8a1e681, 14); + case 21: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, d, a, b, c, block[10], 0x02441453, 9); + case 20: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, a, b, c, d, block[ 5], 0xd62f105d, 5); + case 19: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, b, c, d, a, block[ 0], 0xe9b6c7aa, 20); + case 18: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, c, d, a, b, block[11], 0x265e5a51, 14); + case 17: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, d, a, b, c, block[ 6], 0xc040b340, 9); + case 16: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_gg, a, b, c, d, block[ 1], 0xf61e2562, 5); + case 15: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, b, c, d, a, block[15], 0x49b40821, 22); + case 14: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, c, d, a, b, block[14], 0xa679438e, 17); + case 13: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, d, a, b, c, block[13], 0xfd987193, 12); + case 12: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, a, b, c, d, block[12], 0x6b901122, 7); + case 11: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, b, c, d, a, block[11], 0x895cd7be, 22); + case 10: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, c, d, a, b, block[10], 0xffff5bb1, 17); + case 9: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, d, a, b, c, block[ 9], 0x8b44f7af, 12); + case 8: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, a, b, c, d, block[ 8], 0x698098d8, 7); + case 7: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, b, c, d, a, block[ 7], 0xfd469501, 22); + case 6: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, c, d, a, b, block[ 6], 0xa8304613, 17); + case 5: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, d, a, b, c, block[ 5], 0x4787c62a, 12); + case 4: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, a, b, c, d, block[ 4], 0xf57c0faf, 7); + case 3: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, b, c, d, a, block[ 3], 0xc1bdceee, 22); + case 2: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, c, d, a, b, block[ 2], 0x242070db, 17); + case 1: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, d, a, b, c, block[ 1], 0xe8c7b756, 12); + case 0: HASHUTIL5_MD5COMPRESS_STEP_BW(md5_ff, a, b, c, d, block[ 0], 0xd76aa478, 7); + } + ihv[0] = a; ihv[1] = b; ihv[2] = c; ihv[3] = d; + a = state[0]; b = state[1]; c = state[2]; d = state[3]; + switch (t+1) { + case 0: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, a, b, c, d, block[ 0], 0xd76aa478, 7); + case 1: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, d, a, b, c, block[ 1], 0xe8c7b756, 12); + case 2: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, c, d, a, b, block[ 2], 0x242070db, 17); + case 3: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, b, c, d, a, block[ 3], 0xc1bdceee, 22); + case 4: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, a, b, c, d, block[ 4], 0xf57c0faf, 7); + case 5: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, d, a, b, c, block[ 5], 0x4787c62a, 12); + case 6: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, c, d, a, b, block[ 6], 0xa8304613, 17); + case 7: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, b, c, d, a, block[ 7], 0xfd469501, 22); + case 8: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, a, b, c, d, block[ 8], 0x698098d8, 7); + case 9: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, d, a, b, c, block[ 9], 0x8b44f7af, 12); + case 10: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, c, d, a, b, block[10], 0xffff5bb1, 17); + case 11: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, b, c, d, a, block[11], 0x895cd7be, 22); + case 12: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, a, b, c, d, block[12], 0x6b901122, 7); + case 13: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, d, a, b, c, block[13], 0xfd987193, 12); + case 14: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, c, d, a, b, block[14], 0xa679438e, 17); + case 15: HASHUTIL5_MD5COMPRESS_STEP(md5_ff, b, c, d, a, block[15], 0x49b40821, 22); + case 16: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, a, b, c, d, block[ 1], 0xf61e2562, 5); + case 17: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, d, a, b, c, block[ 6], 0xc040b340, 9); + case 18: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, c, d, a, b, block[11], 0x265e5a51, 14); + case 19: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, b, c, d, a, block[ 0], 0xe9b6c7aa, 20); + case 20: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, a, b, c, d, block[ 5], 0xd62f105d, 5); + case 21: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, d, a, b, c, block[10], 0x02441453, 9); + case 22: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, c, d, a, b, block[15], 0xd8a1e681, 14); + case 23: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, b, c, d, a, block[ 4], 0xe7d3fbc8, 20); + case 24: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, a, b, c, d, block[ 9], 0x21e1cde6, 5); + case 25: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, d, a, b, c, block[14], 0xc33707d6, 9); + case 26: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, c, d, a, b, block[ 3], 0xf4d50d87, 14); + case 27: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, b, c, d, a, block[ 8], 0x455a14ed, 20); + case 28: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, a, b, c, d, block[13], 0xa9e3e905, 5); + case 29: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, d, a, b, c, block[ 2], 0xfcefa3f8, 9); + case 30: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, c, d, a, b, block[ 7], 0x676f02d9, 14); + case 31: HASHUTIL5_MD5COMPRESS_STEP(md5_gg, b, c, d, a, block[12], 0x8d2a4c8a, 20); + case 32: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, a, b, c, d, block[ 5], 0xfffa3942, 4); + case 33: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, d, a, b, c, block[ 8], 0x8771f681, 11); + case 34: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, c, d, a, b, block[11], 0x6d9d6122, 16); + case 35: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, b, c, d, a, block[14], 0xfde5380c, 23); + case 36: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, a, b, c, d, block[ 1], 0xa4beea44, 4); + case 37: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, d, a, b, c, block[ 4], 0x4bdecfa9, 11); + case 38: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, c, d, a, b, block[ 7], 0xf6bb4b60, 16); + case 39: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, b, c, d, a, block[10], 0xbebfbc70, 23); + case 40: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, a, b, c, d, block[13], 0x289b7ec6, 4); + case 41: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, d, a, b, c, block[ 0], 0xeaa127fa, 11); + case 42: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, c, d, a, b, block[ 3], 0xd4ef3085, 16); + case 43: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, b, c, d, a, block[ 6], 0x04881d05, 23); + case 44: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, a, b, c, d, block[ 9], 0xd9d4d039, 4); + case 45: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, d, a, b, c, block[12], 0xe6db99e5, 11); + case 46: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, c, d, a, b, block[15], 0x1fa27cf8, 16); + case 47: HASHUTIL5_MD5COMPRESS_STEP(md5_hh, b, c, d, a, block[ 2], 0xc4ac5665, 23); + case 48: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, a, b, c, d, block[ 0], 0xf4292244, 6); + case 49: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, d, a, b, c, block[ 7], 0x432aff97, 10); + case 50: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, c, d, a, b, block[14], 0xab9423a7, 15); + case 51: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, b, c, d, a, block[ 5], 0xfc93a039, 21); + case 52: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, a, b, c, d, block[12], 0x655b59c3, 6); + case 53: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, d, a, b, c, block[ 3], 0x8f0ccc92, 10); + case 54: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, c, d, a, b, block[10], 0xffeff47d, 15); + case 55: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, b, c, d, a, block[ 1], 0x85845dd1, 21); + case 56: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, a, b, c, d, block[ 8], 0x6fa87e4f, 6); + case 57: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, d, a, b, c, block[15], 0xfe2ce6e0, 10); + case 58: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, c, d, a, b, block[ 6], 0xa3014314, 15); + case 59: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, b, c, d, a, block[13], 0x4e0811a1, 21); + case 60: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, a, b, c, d, block[ 4], 0xf7537e82, 6); + case 61: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, d, a, b, c, block[11], 0xbd3af235, 10); + case 62: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, c, d, a, b, block[ 2], 0x2ad7d2bb, 15); + case 63: HASHUTIL5_MD5COMPRESS_STEP(md5_ii, b, c, d, a, block[ 9], 0xeb86d391, 21); + } + return (rihv[0] == ihv[0]+a && rihv[1] == ihv[1]+b && rihv[2] == ihv[2]+c && rihv[3] == ihv[3]+d); +} + +msgdiff_tuples_t msgdiff_tuples[] = { + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 1<<31, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<15, /*12*/ 0, /*13*/ 0, /*14*/ 1<<31, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 1<<8, /*3*/ 0, /*4*/ 1<<31, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<15, /*12*/ 0, /*13*/ 0, /*14*/ 1<<31, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<1, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<2, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<3, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<4, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<5, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<6, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<7, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<8, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<9, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<10, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<11, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<12, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<13, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<14, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<15, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<16, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<17, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<18, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<19, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<20, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<21, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<22, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<23, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<24, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<25, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<26, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<27, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<28, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<29, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<30, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<31, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 0, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 1<<10, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 1<<31, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 1<<31, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 0, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 1<<8, /*7*/ 0, /*8*/ 0, /*9*/ 1<<31, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 1<<31, /*t*/ 37, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 1<<31, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 1<<27, /*10*/ 0, /*11*/ 0, /*12*/ 1<<31, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 37, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 1<<20, /*5*/ 0, /*6*/ 0, /*7*/ 1<<31, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 1<<31, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 1<<8, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 37, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 1<<10, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<21, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 1<<10, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<31, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 1<<31, /*6*/ 0, /*7*/ 0, /*8*/ 1<<31, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 0, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 1<<8, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 1<<31, /*15*/ 0, /*t*/ 37, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 1<<31, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 0, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 1<<31, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 0, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 1<<31, /*15*/ 0, /*t*/ 44, /*negate*/ 0, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 1<<25, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 1<<10, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 1<<25, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<21, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 1<<16, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 1<<20, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 1<<8, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 50, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 1<<27, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 50, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 1<<10, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 1<<27, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 37, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 1<<31, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 1<<31, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 0, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 1<<31, /*9*/ 0, /*10*/ 0, /*11*/ 1<<21, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 1<<25, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 1<<31, /*14*/ 0, /*15*/ 0, /*t*/ 44, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 }, + + { /*0*/ 0, /*1*/ 0, /*2*/ 0, /*3*/ 0, /*4*/ 0, /*5*/ 0, /*6*/ 0, /*7*/ 0, /*8*/ 0, /*9*/ 0, /*10*/ 0, /*11*/ 0, /*12*/ 0, /*13*/ 0, /*14*/ 0, /*15*/ 0, /*t*/ 0, /*negate*/ 1, /*zero*/ 1, /*msb*/ 1 } // end of array marker +}; + +void print_coll(uint64_t total, const uint32_t ihv1[4], const uint32_t block1[16], const uint32_t ihv2[4], const uint32_t block2[16]) { + unsigned i; + printf("Found collision in block %d:\n dm: ", ((total>>6)-1)); + for (i = 0; i < 16; ++i) + if (block2[i]-block1[i]) + printf("dm%d=%08x ", i, block2[i]-block1[i]); + printf("\n ihv1="); + for (i = 0; i < 4; ++i) + printf("%08x", ihv1[i]); + printf("\n ihv2="); + for (i = 0; i < 4; ++i) + printf("%08x", ihv2[i]); + printf("\n"); +} + +int detect_coll(const uint32_t block1[16], const uint32_t states[260], const uint32_t statesmsb[260], const uint32_t tihv[4], uint32_t ihv2[4], uint32_t block2[16]) { + unsigned i,j; + for (i = 0; msgdiff_tuples[i].t != 0; ++i) { + for (j = 0; j < 16; ++j) + block2[j] = block1[j] + msgdiff_tuples[i].msgdiff[j]; + if (msgdiff_tuples[i].zero) { + if (md5recompress_fast(msgdiff_tuples[i].t, ihv2, block2, states+((msgdiff_tuples[i].t+1)*4), tihv)) + return 1; + } + if (msgdiff_tuples[i].msb) { + if (md5recompress_fast(msgdiff_tuples[i].t, ihv2, block2, statesmsb+((msgdiff_tuples[i].t+1)*4), tihv)) + return 1; + } + if (msgdiff_tuples[i].negate) { + for (j = 0; j < 16; ++j) + block2[j] = block1[j] - msgdiff_tuples[i].msgdiff[j]; + if (msgdiff_tuples[i].zero) { + if (md5recompress_fast(msgdiff_tuples[i].t, ihv2, block2, states+((msgdiff_tuples[i].t+1)*4), tihv)) + return 1; + } + if (msgdiff_tuples[i].msb) { + if (md5recompress_fast(msgdiff_tuples[i].t, ihv2, block2, statesmsb+((msgdiff_tuples[i].t+1)*4), tihv)) + return 1; + } + } + } + return 0; +} + +void md5_process(MD5_CTX* ctx, const uint32_t* block) +{ + unsigned i; + ctx->ihv1[0] = ctx->ihv[0]; + ctx->ihv1[1] = ctx->ihv[1]; + ctx->ihv1[2] = ctx->ihv[2]; + ctx->ihv1[3] = ctx->ihv[3]; + md5compress_states(ctx->ihv, block, ctx->states); + for (i = 0; i < 260; ++i) + ctx->statesmsb[i] = ctx->states[i] + (1<<31); + if (detect_coll(block, ctx->states, ctx->statesmsb, ctx->ihv, ctx->ihv2, ctx->m2)) { +#ifdef VERBOSE_COLLDETECT + print_coll(ctx->total, ctx->ihv1, block, ctx->ihv2, ctx->m2); +#endif + ctx->found_collision = 1; + if (ctx->safe_hash) { + // block was carefully constructed for one specific ihv-value + // update ihv once or twice more with block to break the collision property + md5compress_states(ctx->ihv, block, ctx->states); + md5compress_states(ctx->ihv, block, ctx->states); + } + } + // check for special den Boer & Bosselaers attack (zero difference block, differential path entirely MSB differences) + if (ctx->total >= 128 && md5recompress_fast(44, ctx->ihv2, block, ctx->statesmsb+((44+1)*4), ctx->ihv)) { + if ((ctx->ihv2[0] != ctx->ihv1[0]^(1<<31)) || (ctx->ihv2[1] != ctx->ihv1[1]^(1<<31)) || (ctx->ihv2[2] != ctx->ihv1[2]^(1<<31)) || (ctx->ihv2[3] != ctx->ihv1[3]^(1<<31))) { + // not den Boer & Bosselears attack, but regular near-collision attack +#ifdef VERBOSE_COLLDETECT + print_coll(ctx->total, ctx->ihv1, block, ctx->ihv2, block); +#endif + ctx->found_collision = 1; + if (ctx->safe_hash) { + // block was carefully constructed for one specific ihv-value + // update ihv once or twice more with block to break the collision property + md5compress_states(ctx->ihv, block, ctx->states); + md5compress_states(ctx->ihv, block, ctx->states); + } + } else { + // check for necessary previous collision block + for (i=0; i < 4; ++i) + ctx->ihv1[i] = ctx->previhv[i]; + md5compress_states(ctx->ihv1, ctx->prevblock, ctx->states); + for (i = 0; i < 260; ++i) + ctx->statesmsb[i] = ctx->states[i] + (1<<31); + if (detect_coll(ctx->prevblock, ctx->states, ctx->statesmsb, ctx->ihv2, ctx->tmpihv, ctx->tmpblock)) { +#ifdef VERBOSE_COLLDETECT + print_coll(ctx->total, ctx->ihv1, block, ctx->ihv2, block); + print_coll(ctx->total-64, ctx->previhv, ctx->prevblock, ctx->tmpihv, ctx->tmpblock); +#endif + ctx->found_collision = 1; + if (ctx->safe_hash) { + // block was carefully constructed for one specific ihv-value + // update ihv once or twice more with block to break the collision property + md5compress_states(ctx->ihv, block, ctx->states); + md5compress_states(ctx->ihv, block, ctx->states); + } + } + } + } + // need to store the last ihv and block + for (i = 0; i < 4; ++i) + ctx->previhv[i] = ctx->ihv1[i]; + for (i = 0; i < 16; ++i) + ctx->prevblock[i] = block[i]; +} + + + + + +void MD5Init(MD5_CTX* ctx) { + static const union { unsigned char bytes[4]; uint32_t value; } endianness = { { 0, 1, 2, 3 } }; + static const uint32_t littleendian = 0x03020100; + ctx->total = 0; + ctx->ihv[0] = 0x67452301; + ctx->ihv[1] = 0xefcdab89; + ctx->ihv[2] = 0x98badcfe; + ctx->ihv[3] = 0x10325476; + ctx->found_collision = 0; + ctx->safe_hash = 1; + ctx->bigendian = (endianness.value != littleendian); +} +void MD5Init_unsafe(MD5_CTX* ctx) { + static const union { unsigned char bytes[4]; uint32_t value; } endianness = { { 0, 1, 2, 3 } }; + static const uint32_t littleendian = 0x03020100; + ctx->total = 0; + ctx->ihv[0] = 0x67452301; + ctx->ihv[1] = 0xefcdab89; + ctx->ihv[2] = 0x98badcfe; + ctx->ihv[3] = 0x10325476; + ctx->found_collision = 0; + ctx->safe_hash = 0; + ctx->bigendian = (endianness.value != littleendian); +} + +void MD5Update(MD5_CTX* ctx, const char* buf, unsigned len) { + unsigned left, fill; + if (ctx == NULL) exit(1); + if (len == 0) return; + if (buf == NULL) exit(1); + + left = ctx->total&63; + fill = 64 - left; + + if (left && len >= fill) { + ctx->total += fill; + + memcpy(ctx->buffer + left, buf, fill); + if (ctx->bigendian) + swap_bytes((uint32_t*)(ctx->buffer)); + md5_process(ctx, (uint32_t*)(ctx->buffer)); + buf += fill; + len -= fill; + left = 0; + } + while (len >= 64) { + ctx->total += 64; + if (ctx->bigendian) { + memcpy(ctx->buffer, buf, 64); + swap_bytes((uint32_t*)(ctx->buffer)); + md5_process(ctx, (uint32_t*)(ctx->buffer)); + } else + md5_process(ctx, (const uint32_t*)(buf)); + buf += 64; + len -= 64; + } + if (len > 0) { + ctx->total += len; + memcpy(ctx->buffer + left, buf, len); + } +} + +static const unsigned char md5_padding[64] = +{ + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +int MD5Final(unsigned char output[16], MD5_CTX *ctx) +{ + uint32_t last = ctx->total&63; + uint32_t padn = (last < 56) ? (56-last) : (120-last); + MD5Update(ctx, (const char*)(md5_padding), padn); + ctx->total -= padn; + ctx->total <<= 3; + ctx->buffer[56] = (unsigned char)(ctx->total); + ctx->buffer[57] = (unsigned char)(ctx->total>>8); + ctx->buffer[58] = (unsigned char)(ctx->total>>16); + ctx->buffer[59] = (unsigned char)(ctx->total>>24); + ctx->buffer[60] = (unsigned char)(ctx->total>>32); + ctx->buffer[61] = (unsigned char)(ctx->total>>40); + ctx->buffer[62] = (unsigned char)(ctx->total>>48); + ctx->buffer[63] = (unsigned char)(ctx->total>>56); + if (ctx->bigendian) + swap_bytes((uint32_t*)(ctx->buffer)); + md5_process(ctx, (uint32_t*)(ctx->buffer)); + output[0] = (unsigned char)(ctx->ihv[0]); + output[1] = (unsigned char)(ctx->ihv[0]>>8); + output[2] = (unsigned char)(ctx->ihv[0]>>16); + output[3] = (unsigned char)(ctx->ihv[0]>>24); + output[4] = (unsigned char)(ctx->ihv[1]); + output[5] = (unsigned char)(ctx->ihv[1]>>8); + output[6] = (unsigned char)(ctx->ihv[1]>>16); + output[7] = (unsigned char)(ctx->ihv[1]>>24); + output[8] = (unsigned char)(ctx->ihv[2]); + output[9] = (unsigned char)(ctx->ihv[2]>>8); + output[10] = (unsigned char)(ctx->ihv[2]>>16); + output[11] = (unsigned char)(ctx->ihv[2]>>24); + output[12] = (unsigned char)(ctx->ihv[3]); + output[13] = (unsigned char)(ctx->ihv[3]>>8); + output[14] = (unsigned char)(ctx->ihv[3]>>16); + output[15] = (unsigned char)(ctx->ihv[3]>>24); + return ctx->found_collision; +} + diff --git a/lib/collissiondetect/lib/libdetectcoll.h b/lib/collissiondetect/lib/libdetectcoll.h new file mode 100644 index 0000000..21c93ef --- /dev/null +++ b/lib/collissiondetect/lib/libdetectcoll.h @@ -0,0 +1,100 @@ +/**************************************************************************\ +| +| Copyright (C) 2012 CWI +| +| Contact: +| Marc Stevens +| Cryptology Group +| Centrum Wiskunde & Informatica +| P.O. Box 94079, 1090 GB Amsterdam, Netherlands +| marc@marc-stevens.nl +| +| Permission is hereby granted, free of charge, to any person obtaining a copy +| of this software and associated documentation files (the "Software"), to deal +| in the Software without restriction, including without limitation the rights +| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +| copies of the Software, and to permit persons to whom the Software is +| furnished to do so, subject to the following conditions: +| +| The above copyright notice and this permission notice shall be included in +| all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +| THE SOFTWARE. +| +\**************************************************************************/ + +#include + +// lib interface below + +typedef struct { + uint64_t total; + uint32_t ihv[4]; + unsigned char buffer[64]; + int bigendian; + int found_collision; + int safe_hash; + + uint32_t ihv1[4]; + uint32_t ihv2[4]; + uint32_t m2[16]; + uint32_t states[260]; + uint32_t statesmsb[260]; + uint32_t tmpihv[4]; + uint32_t tmpblock[16]; + uint32_t previhv[4]; + uint32_t prevblock[16]; +} MD5_CTX; + + +void md5compress_states(uint32_t ihv[4], const uint32_t block[16], uint32_t states[260]); +int md5recompress_fast(unsigned t, uint32_t ihv[4], const uint32_t block[16], const uint32_t state[4], const uint32_t rihv[4]); +int detect_coll(const uint32_t block1[16], const uint32_t states[260], const uint32_t statesmsb[260], const uint32_t tihv[4], uint32_t ihv2[4], uint32_t block2[16]); + +typedef struct { + uint32_t msgdiff[16]; + unsigned t; + int negate; + int zero; + int msb; +} msgdiff_tuples_t; +extern msgdiff_tuples_t msgdiff_tuples[]; + +typedef struct { + uint64_t total; + uint32_t ihv[5]; + unsigned char buffer[64]; + int bigendian; + int found_collision; + int safe_hash; + + uint32_t ihv1[5]; + uint32_t ihv2[5]; + uint32_t m1[80]; + uint32_t m2[80]; + uint32_t states[81*5]; +} SHA1_CTX; + +void sha1compress_me(const uint32_t block[16], uint32_t me[80]); +void sha1compress_states(uint32_t ihv[5], const uint32_t me[80], uint32_t states[81*5]); +int sha1recompress_fast(unsigned t, uint32_t ihv[5], const uint32_t me[80], const uint32_t state[5], const uint32_t rihv[5]); + + + +/* LIB INTERFACE */ + +void MD5Init(MD5_CTX*); // outputs MD5 hash if no collision was found and a modified-MD5 hash otherwise +void MD5Init_unsafe(MD5_CTX*); // always outputs MD5 hash +void MD5Update(MD5_CTX*, const char* buf, unsigned len); +int MD5Final(unsigned char hash[16], MD5_CTX*); // returns: 0 = no collision, otherwise = collision found => warn user for active attack + +void SHA1Init(SHA1_CTX*); // outputs SHA-1 hash if no collision was found and a modified-SHA-1 hash otherwise +void SHA1Init_unsafe(SHA1_CTX*); // always outputs SHA-1 hash +void SHA1Update(SHA1_CTX*, const char* buf, unsigned len); +int SHA1Final(unsigned char hash[20], SHA1_CTX*); // returns: 0 = no collision, otherwise = collision found => warn user for active attack diff --git a/lib/collissiondetect/src/main.c b/lib/collissiondetect/src/main.c new file mode 100644 index 0000000..9bb6c8c --- /dev/null +++ b/lib/collissiondetect/src/main.c @@ -0,0 +1,102 @@ +/**************************************************************************\ +| +| Copyright (C) 2012 CWI +| +| Contact: +| Marc Stevens +| Cryptology Group +| Centrum Wiskunde & Informatica +| P.O. Box 94079, 1090 GB Amsterdam, Netherlands +| marc@marc-stevens.nl +| +| Permission is hereby granted, free of charge, to any person obtaining a copy +| of this software and associated documentation files (the "Software"), to deal +| in the Software without restriction, including without limitation the rights +| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +| copies of the Software, and to permit persons to whom the Software is +| furnished to do so, subject to the following conditions: +| +| The above copyright notice and this permission notice shall be included in +| all copies or substantial portions of the Software. +| +| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +| THE SOFTWARE. +| +\**************************************************************************/ + +#include +#include +#include + +#include "libdetectcoll.h" + +int main(int argc, char** argv) { + FILE* fd; + unsigned char hash[16]; + unsigned char hash2[20]; + char buffer[65536]; + unsigned size; + MD5_CTX ctx; + SHA1_CTX ctx2; + int i,j; + + gen_sha1_dv_xm_tables(); + if (argc < 2) { + printf("Usage: md5sum \n"); + return 1; + } + for (i=1; i < argc; ++i) { + fd = fopen(argv[i], "rb"); + if (fd == NULL) { + printf("cannot open file: %s\n", argv[i]); + return 1; + } + + MD5Init_unsafe(&ctx); + SHA1Init_unsafe(&ctx2); + + while (1) { + size=fread(buffer,1,65536,fd); + MD5Update(&ctx, buffer, size); + SHA1Update(&ctx2, buffer, size); + if (size != 65536) + break; + } + if (ferror(fd)) { + printf("error while reading file: %s\n", argv[i]); + return 1; + } + if (!feof(fd)) { + printf("not end of file?: %s\n",argv[i]); + return 1; + } + + MD5Final(hash,&ctx); + for (j = 0; j < 16; ++j) + sprintf(buffer+(j*2), "%02x", hash[j]); + buffer[32] = 0; + if (ctx.found_collision) { + printf("md5 *coll* %s %s\n", buffer, argv[i]); + } else { + printf("md5 %s %s\n", buffer, argv[i]); + } + + SHA1Final(hash2,&ctx2); + for (j = 0; j < 20; ++j) + sprintf(buffer+(j*2), "%02x", hash2[j]); + buffer[20*2] = 0; + if (ctx2.found_collision) { + printf("sha1 *coll* %s %s\n", buffer, argv[i]); + } else { + printf("sha1 %s %s\n", buffer, argv[i]); + } + printf("\n"); + + fclose(fd); + } +} diff --git a/lib/collissiondetect/tests/md5_1a.pdf b/lib/collissiondetect/tests/md5_1a.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d9b024ef5e60d7492eadb718177c4c31348bfea5 GIT binary patch literal 104331 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%0D)fk*gB#_EHgmyXO)}@GzYhq2r?`&6|%R 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

eA|_%Catqs6$s?BvGJN%^nm5K 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

-4mZ$Yn4j;X!5BUR9VL$VKDQi4S_?2&&; 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 Zfrd^lKja_Sox;Jxi%LTyp(u&^{{cwu0Sf>C literal 0 HcmV?d00001 diff --git a/lib/collissiondetect/tests/md5_2a.bin b/lib/collissiondetect/tests/md5_2a.bin new file mode 100644 index 0000000..6885886 --- /dev/null +++ b/lib/collissiondetect/tests/md5_2a.bin @@ -0,0 +1 @@ +<1894-2756-3398.6977-0345-185@password_detector_dbc.mtview.ca.us¤n˜}pƒÝn¨ÛîdâŸáhÿ³¥âÓ7t=T`«Åc|ÙÙêéŵ©#ö ÃOSý­Ç3­Æ€ýjóEw,¾¾lMžSÑ+4oé´âx%œ]ïNÓ+མMw"{>ABCDEFGHIJKLMNOPQRSTUVWXYZ01233 \ No newline at end of file diff --git a/lib/collissiondetect/tests/md5_2b.bin b/lib/collissiondetect/tests/md5_2b.bin new file mode 100644 index 0000000..0875d19 --- /dev/null +++ b/lib/collissiondetect/tests/md5_2b.bin @@ -0,0 +1 @@ +<1894-2756-3398.6977-0345-185@password_detector_dbc.mtview.ca.us¤n˜}pƒÝn¨ÛîdâŸáhÿ³¥âÓ7t=T`«Åc|ÙÙêéŵ©#ö COSý­Ç3­Æ€ýjóEw,¾¾lMžSÑ+4oé´âx%œ]ïNÓ+མMw"{>ABCDEFGHIJKLMNOPQRSTUVWXYZ01233 \ No newline at end of file diff --git a/lib/collissiondetect/tests/md5_3a.exe b/lib/collissiondetect/tests/md5_3a.exe new file mode 100644 index 0000000000000000000000000000000000000000..279e04681f8fc68906fe53b62876ec670e42cdfd GIT binary patch literal 45184 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 s)3JNQuM=ApNRX&?P{+?zW_PrCg70EULAr~m)} literal 0 HcmV?d00001 diff --git a/lib/collissiondetect/tests/md5_3b.exe b/lib/collissiondetect/tests/md5_3b.exe new file mode 100644 index 0000000000000000000000000000000000000000..02a1c0c45222f58ce214299fb24ccb0cc0c3d22d GIT binary patch literal 45184 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 YYkyjKQqAz5=U(`)3#Z=sV&^me3kcI$cmMzZ literal 0 HcmV?d00001 diff --git a/lib/collissiondetect/tests/md5_4b.exe b/lib/collissiondetect/tests/md5_4b.exe new file mode 100644 index 0000000000000000000000000000000000000000..cbe4aa87ce98e3057b756c088d4e5dc37d4c2258 GIT binary patch literal 41792 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 literal 0 HcmV?d00001 diff --git a/lib/collissiondetect/tests/md5_5a.cert.tobesignedpart b/lib/collissiondetect/tests/md5_5a.cert.tobesignedpart new file mode 100644 index 0000000000000000000000000000000000000000..c8c147078b4e0391f964d861ba1d7d2e38a5daee GIT binary patch literal 927 zcmXqLVxGN#nTe5!iJ9~KaRXj9POUbNw(q=*j4Z4S22qCG2Apinp)72|OrgPsG6qs0 z4wta7Yhh_-T4IGlaB6aCQL2JxUb3E{u7Ng4mRVQ@P1ZdpKPfRsA=Rn0I5RJ`xLCp2 zQP$iOHH$h8D=O`u$ZCPo=l+dU23A+|eY>LnHBXQ%3wWTfh4 z=9Q!t<)xPBCFZ5*CFbPlW$LBpm*|xz76YX-frM^xMrKioUO`4tYHCV;u3mmox}mUv zAjl|gVJ`O&pq)mR1_p*eS|1{)5uBQ;P+nfHSCm+gnNnPwqnDhYt6!8_oL^d$oLa1( zTu`i_k*o=Hy}p4iM2nhBer{rBo`Q3JUP)1YjzU;sPG(ACNotCMu0jyVl;B_=jUY`! zs2`YxDfR;}e3X!*i;Nzh~E5$1s z=U;F;lCaG*>Fmz+GApvBPDa~IGe7V){r&EL2fF73=xgq6R+`tx@oSB6!J>%zq@*sv z@15W7Z%dCX7WW4ZUh9*lTEmMaq)7lAIu613mC;Gn)x#o7`8Rv{my@bT~=_jFw4?gAJzqI)Zk0b z)Z%H%?{_!8pR`tT<_;IYqE#g&G}5sj0}v68}}MC?lRy5 z#*!>QBjbM-7G@@v4+gRzJ|Bx1i^$n!&A*l=n17#UF0OgcvEpNUXXtYSYml@&i;01e zfx!a31v+h786_nJR{HwMMLBxusre;ErNt%SL;(~i)=vkg@8m>7Js{UW9;8{BMZ!R= zL1f>G1tmoR*)H2pD&P3M;{WFG?2H_U<*F=V1|n=6+H8!htnAE;a2AsR4@kc-$gNBU F3;+{JGK2sC literal 0 HcmV?d00001 diff --git a/lib/collissiondetect/tests/md5_5b.cert.tobesignedpart b/lib/collissiondetect/tests/md5_5b.cert.tobesignedpart new file mode 100644 index 0000000000000000000000000000000000000000..9ebed860ad3b3bb17e96b3489570683d174f6477 GIT binary patch literal 927 zcmXqLVxGN#nTe5!iP6!3myJ`a&7;F*`KXQ*qS4U%ORRzZ_>&&f|p%uz^nDlN{;OD!%|aCX!+ zG>{YLH83$SH#Rf?gD5c9(!dDHHLx+XGO&OcXz1%=s^FZTlapDTnV(k-woXAKqokz3 zN?*Ucyj-s!qbM~sB|ld$zbIWlH^o%bpm9F3Ul>^#m>YW;3>rI`8XFmQEsH#Aqgsd*Un^@Mr$tmb>qPbo|{bSf5|nDM1!{Z9>z zqc8c3H;8)+`^+r8;PR}FBS-3!zqBJ0Gb01z;wB~)gC-^g18$%nW%*fHfKhPFfFHyW zW@P-&!fL<_qzq(10(>lDEF#NU669AGIddGX=a>*0CUfoFGmF;-@*rtt76}8f29bR$ z7L*hPWV>uXseI%2ivOF#vomrGni%)7aVE5RFt+`0V&r9MVq7oQ#JJj+fq_9i&hkNL zBER3_qpsX$yBRMAuR6@ppZ~+(uD#tw@J_;m`;$U{?kJWHnS6Bq1-By!+f0+r?p!ak zB2(&Qw9Pd018>vc@BVk7drpA9=H6zdd3_we)(96Yil|RY>Jt3k`R)F;^vGhd-^pTK zTP9kZ)BCz@pU;vho=;K*xtv5#9yEBAdDXRcsoL(HiEolpK3G0{z9-{GK;S&tgv%Ef zFX#Hftgx_vQGBAAKU0BWTl3xT{5RNT1vd+`EWPt#UBE^SzT`|To~HbMcjNmxi`XW8 z^mpBN)4*)8cF(o)b*9Pnem=7%dzjsv4+-bSy#|fD4EVsI3<_9aK(l;63fHsCntv@# zF#kTyTwL>>W5vhz&d}!u)*$8bEGD4jxIk}#PMa1qwIvtj=%uITmlTy2m*^$u=jsCm wiuKdMDLgsRP!Gr@94X*PRb>$~5MkrcW@BV!WoKrDvzQEcK$e3O0h0j(0DI*~3jhEB literal 0 HcmV?d00001 diff --git a/lib/collissiondetect/tests/sha1_reducedsha_coll.bin b/lib/collissiondetect/tests/sha1_reducedsha_coll.bin new file mode 100644 index 0000000..4623336 --- /dev/null +++ b/lib/collissiondetect/tests/sha1_reducedsha_coll.bin @@ -0,0 +1 @@ +¼~9:pö„ऄޥV‡ZÍßùÈ-k†çùá„q¿¿ñp•ÉíD¯îx$ £²ë.ÀÏÂÅ (8<+sæâÈC±>NM]¶ãƒà{ê$,+¶0ThE±C !”«ûR6¾+É¿f^ù«Ÿãj@,¿9×|´<°r \ No newline at end of file -- 2.39.2