Coverage Report

Created: 2024-09-16 06:12

/src/git/sha1dc/sha1.c
Line
Count
Source (jump to first uncovered line)
1
/***
2
* Copyright 2017 Marc Stevens <marc@marc-stevens.nl>, Dan Shumow (danshu@microsoft.com)
3
* Distributed under the MIT Software License.
4
* See accompanying file LICENSE.txt or copy at
5
* https://opensource.org/licenses/MIT
6
***/
7
8
#ifndef SHA1DC_NO_STANDARD_INCLUDES
9
#include <string.h>
10
#include <memory.h>
11
#include <stdio.h>
12
#include <stdlib.h>
13
#ifdef __unix__
14
#include <sys/types.h> /* make sure macros like _BIG_ENDIAN visible */
15
#endif
16
#endif
17
18
#ifdef SHA1DC_CUSTOM_INCLUDE_SHA1_C
19
#include SHA1DC_CUSTOM_INCLUDE_SHA1_C
20
#endif
21
22
#ifndef SHA1DC_INIT_SAFE_HASH_DEFAULT
23
#define SHA1DC_INIT_SAFE_HASH_DEFAULT 1
24
#endif
25
26
#include "sha1.h"
27
#include "ubc_check.h"
28
29
#if (defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || \
30
     defined(i386) || defined(__i386) || defined(__i386__) || defined(__i486__)  || \
31
     defined(__i586__) || defined(__i686__) || defined(_M_IX86) || defined(__X86__) || \
32
     defined(_X86_) || defined(__THW_INTEL__) || defined(__I86__) || defined(__INTEL__) || \
33
     defined(__386) || defined(_M_X64) || defined(_M_AMD64))
34
#define SHA1DC_ON_INTEL_LIKE_PROCESSOR
35
#endif
36
37
/*
38
   Because Little-Endian architectures are most common,
39
   we only set SHA1DC_BIGENDIAN if one of these conditions is met.
40
   Note that all MSFT platforms are little endian,
41
   so none of these will be defined under the MSC compiler.
42
   If you are compiling on a big endian platform and your compiler does not define one of these,
43
   you will have to add whatever macros your tool chain defines to indicate Big-Endianness.
44
 */
45
46
#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
47
/*
48
 * Should detect Big Endian under GCC since at least 4.6.0 (gcc svn
49
 * rev #165881). See
50
 * https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
51
 *
52
 * This also works under clang since 3.2, it copied the GCC-ism. See
53
 * clang.git's 3b198a97d2 ("Preprocessor: add __BYTE_ORDER__
54
 * predefined macro", 2012-07-27)
55
 */
56
#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
57
#define SHA1DC_BIGENDIAN
58
#endif
59
60
/* Not under GCC-alike */
61
#elif defined(__BYTE_ORDER) && defined(__BIG_ENDIAN)
62
/*
63
 * Should detect Big Endian under glibc.git since 14245eb70e ("entered
64
 * into RCS", 1992-11-25). Defined in <endian.h> which will have been
65
 * brought in by standard headers. See glibc.git and
66
 * https://sourceforge.net/p/predef/wiki/Endianness/
67
 */
68
#if __BYTE_ORDER == __BIG_ENDIAN
69
#define SHA1DC_BIGENDIAN
70
#endif
71
72
/* Not under GCC-alike or glibc */
73
#elif defined(_BYTE_ORDER) && defined(_BIG_ENDIAN) && defined(_LITTLE_ENDIAN)
74
/*
75
 * *BSD and newlib (embedded linux, cygwin, etc).
76
 * the defined(_BIG_ENDIAN) && defined(_LITTLE_ENDIAN) part prevents
77
 * this condition from matching with Solaris/sparc.
78
 * (Solaris defines only one endian macro)
79
 */
80
#if _BYTE_ORDER == _BIG_ENDIAN
81
#define SHA1DC_BIGENDIAN
82
#endif
83
84
/* Not under GCC-alike or glibc or *BSD or newlib */
85
#elif (defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || \
86
       defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || \
87
       defined(__sparc))
88
/*
89
 * Should define Big Endian for a whitelist of known processors. See
90
 * https://sourceforge.net/p/predef/wiki/Endianness/ and
91
 * https://web.archive.org/web/20140421151132/http://www.perforce.com/perforce/doc.current/manuals/p4sag/chapter.superuser.html
92
 */
93
#define SHA1DC_BIGENDIAN
94
95
/* Not under GCC-alike or glibc or *BSD or newlib or <processor whitelist> */
96
#elif (defined(_AIX) || defined(__hpux))
97
98
/*
99
 * Defines Big Endian on a whitelist of OSs that are known to be Big
100
 * Endian-only. See
101
 * https://lore.kernel.org/git/93056823-2740-d072-1ebd-46b440b33d7e@felt.demon.nl/
102
 */
103
#define SHA1DC_BIGENDIAN
104
105
/* Not under GCC-alike or glibc or *BSD or newlib or <processor whitelist> or <os whitelist> */
106
#elif defined(SHA1DC_ON_INTEL_LIKE_PROCESSOR)
107
/*
108
 * As a last resort before we do anything else we're not 100% sure
109
 * about below, we blacklist specific processors here. We could add
110
 * more, see e.g. https://wiki.debian.org/ArchitectureSpecificsMemo
111
 */
112
#else /* Not under GCC-alike or glibc or *BSD or newlib or <processor whitelist> or <os whitelist> or <processor blacklist> */
113
114
/* We do nothing more here for now */
115
/*#error "Uncomment this to see if you fall through all the detection"*/
116
117
#endif /* Big Endian detection */
118
119
#if (defined(SHA1DC_FORCE_LITTLEENDIAN) && defined(SHA1DC_BIGENDIAN))
120
#undef SHA1DC_BIGENDIAN
121
#endif
122
#if (defined(SHA1DC_FORCE_BIGENDIAN) && !defined(SHA1DC_BIGENDIAN))
123
#define SHA1DC_BIGENDIAN
124
#endif
125
/*ENDIANNESS SELECTION*/
126
127
#ifndef SHA1DC_FORCE_ALIGNED_ACCESS
128
#if defined(SHA1DC_FORCE_UNALIGNED_ACCESS) || defined(SHA1DC_ON_INTEL_LIKE_PROCESSOR)
129
#define SHA1DC_ALLOW_UNALIGNED_ACCESS
130
#endif /*UNALIGNED ACCESS DETECTION*/
131
#endif /*FORCE ALIGNED ACCESS*/
132
133
99.8M
#define rotate_right(x,n) (((x)>>(n))|((x)<<(32-(n))))
134
6.90G
#define rotate_left(x,n)  (((x)<<(n))|((x)>>(32-(n))))
135
136
#define sha1_bswap32(x) \
137
481M
  {x = ((x << 8) & 0xFF00FF00) | ((x >> 8) & 0xFF00FF); x = (x << 16) | (x >> 16);}
138
139
1.92G
#define sha1_mix(W, t)  (rotate_left(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1))
140
141
#ifdef SHA1DC_BIGENDIAN
142
  #define sha1_load(m, t, temp)  { temp = m[t]; }
143
#else
144
481M
  #define sha1_load(m, t, temp)  { temp = m[t]; sha1_bswap32(temp); }
145
#endif
146
147
2.40G
#define sha1_store(W, t, x) *(volatile uint32_t *)&W[t] = x
148
149
634M
#define sha1_f1(b,c,d) ((d)^((b)&((c)^(d))))
150
634M
#define sha1_f2(b,c,d) ((b)^(c)^(d))
151
634M
#define sha1_f3(b,c,d) (((b)&(c))+((d)&((b)^(c))))
152
634M
#define sha1_f4(b,c,d) ((b)^(c)^(d))
153
154
#define HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, m, t) \
155
0
  { e += rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999 + m[t]; b = rotate_left(b, 30); }
156
#define HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, m, t) \
157
0
  { e += rotate_left(a, 5) + sha1_f2(b,c,d) + 0x6ED9EBA1 + m[t]; b = rotate_left(b, 30); }
158
#define HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, m, t) \
159
1.42M
  { e += rotate_left(a, 5) + sha1_f3(b,c,d) + 0x8F1BBCDC + m[t]; b = rotate_left(b, 30); }
160
#define HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, m, t) \
161
27.7M
  { e += rotate_left(a, 5) + sha1_f4(b,c,d) + 0xCA62C1D6 + m[t]; b = rotate_left(b, 30); }
162
163
#define HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, m, t) \
164
32.2M
  { b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999 + m[t]; }
165
#define HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, m, t) \
166
32.2M
  { b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f2(b,c,d) + 0x6ED9EBA1 + m[t]; }
167
#define HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, m, t) \
168
30.8M
  { b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f3(b,c,d) + 0x8F1BBCDC + m[t]; }
169
#define HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, m, t) \
170
4.50M
  { b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f4(b,c,d) + 0xCA62C1D6 + m[t]; }
171
172
#define SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, t, temp) \
173
481M
  {sha1_load(m, t, temp); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999; b = rotate_left(b, 30);}
174
175
#define SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(a, b, c, d, e, W, t, temp) \
176
120M
  {temp = sha1_mix(W, t); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999; b = rotate_left(b, 30); }
177
178
#define SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, t, temp) \
179
601M
  {temp = sha1_mix(W, t); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f2(b,c,d) + 0x6ED9EBA1; b = rotate_left(b, 30); }
180
181
#define SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, t, temp) \
182
601M
  {temp = sha1_mix(W, t); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f3(b,c,d) + 0x8F1BBCDC; b = rotate_left(b, 30); }
183
184
#define SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, t, temp) \
185
601M
  {temp = sha1_mix(W, t); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f4(b,c,d) + 0xCA62C1D6; b = rotate_left(b, 30); }
186
187
188
60.1M
#define SHA1_STORE_STATE(i) states[i][0] = a; states[i][1] = b; states[i][2] = c; states[i][3] = d; states[i][4] = e;
189
190
#ifdef BUILDNOCOLLDETECTSHA1COMPRESSION
191
void sha1_compression(uint32_t ihv[5], const uint32_t m[16])
192
{
193
  uint32_t W[80];
194
  uint32_t a,b,c,d,e;
195
  unsigned i;
196
197
  memcpy(W, m, 16 * 4);
198
  for (i = 16; i < 80; ++i)
199
    W[i] = sha1_mix(W, i);
200
201
  a = ihv[0]; b = ihv[1]; c = ihv[2]; d = ihv[3]; e = ihv[4];
202
203
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 0);
204
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 1);
205
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 2);
206
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 3);
207
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 4);
208
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 5);
209
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 6);
210
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 7);
211
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 8);
212
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 9);
213
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 10);
214
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 11);
215
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 12);
216
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 13);
217
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 14);
218
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 15);
219
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 16);
220
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 17);
221
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 18);
222
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 19);
223
224
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 20);
225
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 21);
226
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 22);
227
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 23);
228
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 24);
229
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 25);
230
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 26);
231
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 27);
232
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 28);
233
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 29);
234
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 30);
235
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 31);
236
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 32);
237
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 33);
238
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 34);
239
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 35);
240
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 36);
241
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 37);
242
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 38);
243
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 39);
244
245
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 40);
246
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 41);
247
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 42);
248
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 43);
249
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 44);
250
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 45);
251
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 46);
252
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 47);
253
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 48);
254
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 49);
255
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 50);
256
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 51);
257
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 52);
258
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 53);
259
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 54);
260
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 55);
261
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 56);
262
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 57);
263
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 58);
264
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 59);
265
266
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 60);
267
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 61);
268
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 62);
269
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 63);
270
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 64);
271
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 65);
272
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 66);
273
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 67);
274
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 68);
275
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 69);
276
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 70);
277
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 71);
278
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 72);
279
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 73);
280
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 74);
281
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 75);
282
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 76);
283
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 77);
284
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 78);
285
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 79);
286
287
  ihv[0] += a; ihv[1] += b; ihv[2] += c; ihv[3] += d; ihv[4] += e;
288
}
289
#endif /*BUILDNOCOLLDETECTSHA1COMPRESSION*/
290
291
292
static void sha1_compression_W(uint32_t ihv[5], const uint32_t W[80])
293
0
{
294
0
  uint32_t a = ihv[0], b = ihv[1], c = ihv[2], d = ihv[3], e = ihv[4];
295
296
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 0);
297
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 1);
298
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 2);
299
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 3);
300
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 4);
301
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 5);
302
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 6);
303
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 7);
304
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 8);
305
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 9);
306
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 10);
307
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 11);
308
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 12);
309
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 13);
310
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 14);
311
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 15);
312
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 16);
313
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 17);
314
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 18);
315
0
  HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 19);
316
317
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 20);
318
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 21);
319
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 22);
320
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 23);
321
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 24);
322
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 25);
323
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 26);
324
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 27);
325
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 28);
326
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 29);
327
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 30);
328
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 31);
329
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 32);
330
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 33);
331
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 34);
332
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 35);
333
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 36);
334
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 37);
335
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 38);
336
0
  HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 39);
337
338
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 40);
339
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 41);
340
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 42);
341
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 43);
342
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 44);
343
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 45);
344
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 46);
345
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 47);
346
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 48);
347
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 49);
348
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 50);
349
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 51);
350
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 52);
351
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 53);
352
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 54);
353
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 55);
354
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 56);
355
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 57);
356
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 58);
357
0
  HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 59);
358
359
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 60);
360
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 61);
361
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 62);
362
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 63);
363
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 64);
364
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 65);
365
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 66);
366
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 67);
367
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 68);
368
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 69);
369
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 70);
370
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 71);
371
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 72);
372
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 73);
373
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 74);
374
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 75);
375
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 76);
376
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 77);
377
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 78);
378
0
  HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 79);
379
380
0
  ihv[0] += a; ihv[1] += b; ihv[2] += c; ihv[3] += d; ihv[4] += e;
381
0
}
382
383
384
385
void sha1_compression_states(uint32_t ihv[5], const uint32_t m[16], uint32_t W[80], uint32_t states[80][5])
386
30.0M
{
387
30.0M
  uint32_t a = ihv[0], b = ihv[1], c = ihv[2], d = ihv[3], e = ihv[4];
388
30.0M
  uint32_t temp;
389
390
#ifdef DOSTORESTATE00
391
  SHA1_STORE_STATE(0)
392
#endif
393
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, 0, temp);
394
395
#ifdef DOSTORESTATE01
396
  SHA1_STORE_STATE(1)
397
#endif
398
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(e, a, b, c, d, m, W, 1, temp);
399
400
#ifdef DOSTORESTATE02
401
  SHA1_STORE_STATE(2)
402
#endif
403
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(d, e, a, b, c, m, W, 2, temp);
404
405
#ifdef DOSTORESTATE03
406
  SHA1_STORE_STATE(3)
407
#endif
408
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(c, d, e, a, b, m, W, 3, temp);
409
410
#ifdef DOSTORESTATE04
411
  SHA1_STORE_STATE(4)
412
#endif
413
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(b, c, d, e, a, m, W, 4, temp);
414
415
#ifdef DOSTORESTATE05
416
  SHA1_STORE_STATE(5)
417
#endif
418
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, 5, temp);
419
420
#ifdef DOSTORESTATE06
421
  SHA1_STORE_STATE(6)
422
#endif
423
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(e, a, b, c, d, m, W, 6, temp);
424
425
#ifdef DOSTORESTATE07
426
  SHA1_STORE_STATE(7)
427
#endif
428
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(d, e, a, b, c, m, W, 7, temp);
429
430
#ifdef DOSTORESTATE08
431
  SHA1_STORE_STATE(8)
432
#endif
433
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(c, d, e, a, b, m, W, 8, temp);
434
435
#ifdef DOSTORESTATE09
436
  SHA1_STORE_STATE(9)
437
#endif
438
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(b, c, d, e, a, m, W, 9, temp);
439
440
#ifdef DOSTORESTATE10
441
  SHA1_STORE_STATE(10)
442
#endif
443
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, 10, temp);
444
445
#ifdef DOSTORESTATE11
446
  SHA1_STORE_STATE(11)
447
#endif
448
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(e, a, b, c, d, m, W, 11, temp);
449
450
#ifdef DOSTORESTATE12
451
  SHA1_STORE_STATE(12)
452
#endif
453
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(d, e, a, b, c, m, W, 12, temp);
454
455
#ifdef DOSTORESTATE13
456
  SHA1_STORE_STATE(13)
457
#endif
458
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(c, d, e, a, b, m, W, 13, temp);
459
460
#ifdef DOSTORESTATE14
461
  SHA1_STORE_STATE(14)
462
#endif
463
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(b, c, d, e, a, m, W, 14, temp);
464
465
#ifdef DOSTORESTATE15
466
  SHA1_STORE_STATE(15)
467
#endif
468
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, 15, temp);
469
470
#ifdef DOSTORESTATE16
471
  SHA1_STORE_STATE(16)
472
#endif
473
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(e, a, b, c, d, W, 16, temp);
474
475
#ifdef DOSTORESTATE17
476
  SHA1_STORE_STATE(17)
477
#endif
478
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(d, e, a, b, c, W, 17, temp);
479
480
#ifdef DOSTORESTATE18
481
  SHA1_STORE_STATE(18)
482
#endif
483
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(c, d, e, a, b, W, 18, temp);
484
485
#ifdef DOSTORESTATE19
486
  SHA1_STORE_STATE(19)
487
#endif
488
30.0M
  SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(b, c, d, e, a, W, 19, temp);
489
490
491
492
#ifdef DOSTORESTATE20
493
  SHA1_STORE_STATE(20)
494
#endif
495
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, 20, temp);
496
497
#ifdef DOSTORESTATE21
498
  SHA1_STORE_STATE(21)
499
#endif
500
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(e, a, b, c, d, W, 21, temp);
501
502
#ifdef DOSTORESTATE22
503
  SHA1_STORE_STATE(22)
504
#endif
505
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(d, e, a, b, c, W, 22, temp);
506
507
#ifdef DOSTORESTATE23
508
  SHA1_STORE_STATE(23)
509
#endif
510
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(c, d, e, a, b, W, 23, temp);
511
512
#ifdef DOSTORESTATE24
513
  SHA1_STORE_STATE(24)
514
#endif
515
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(b, c, d, e, a, W, 24, temp);
516
517
#ifdef DOSTORESTATE25
518
  SHA1_STORE_STATE(25)
519
#endif
520
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, 25, temp);
521
522
#ifdef DOSTORESTATE26
523
  SHA1_STORE_STATE(26)
524
#endif
525
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(e, a, b, c, d, W, 26, temp);
526
527
#ifdef DOSTORESTATE27
528
  SHA1_STORE_STATE(27)
529
#endif
530
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(d, e, a, b, c, W, 27, temp);
531
532
#ifdef DOSTORESTATE28
533
  SHA1_STORE_STATE(28)
534
#endif
535
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(c, d, e, a, b, W, 28, temp);
536
537
#ifdef DOSTORESTATE29
538
  SHA1_STORE_STATE(29)
539
#endif
540
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(b, c, d, e, a, W, 29, temp);
541
542
#ifdef DOSTORESTATE30
543
  SHA1_STORE_STATE(30)
544
#endif
545
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, 30, temp);
546
547
#ifdef DOSTORESTATE31
548
  SHA1_STORE_STATE(31)
549
#endif
550
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(e, a, b, c, d, W, 31, temp);
551
552
#ifdef DOSTORESTATE32
553
  SHA1_STORE_STATE(32)
554
#endif
555
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(d, e, a, b, c, W, 32, temp);
556
557
#ifdef DOSTORESTATE33
558
  SHA1_STORE_STATE(33)
559
#endif
560
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(c, d, e, a, b, W, 33, temp);
561
562
#ifdef DOSTORESTATE34
563
  SHA1_STORE_STATE(34)
564
#endif
565
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(b, c, d, e, a, W, 34, temp);
566
567
#ifdef DOSTORESTATE35
568
  SHA1_STORE_STATE(35)
569
#endif
570
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, 35, temp);
571
572
#ifdef DOSTORESTATE36
573
  SHA1_STORE_STATE(36)
574
#endif
575
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(e, a, b, c, d, W, 36, temp);
576
577
#ifdef DOSTORESTATE37
578
  SHA1_STORE_STATE(37)
579
#endif
580
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(d, e, a, b, c, W, 37, temp);
581
582
#ifdef DOSTORESTATE38
583
  SHA1_STORE_STATE(38)
584
#endif
585
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(c, d, e, a, b, W, 38, temp);
586
587
#ifdef DOSTORESTATE39
588
  SHA1_STORE_STATE(39)
589
#endif
590
30.0M
  SHA1COMPRESS_FULL_ROUND2_STEP(b, c, d, e, a, W, 39, temp);
591
592
593
594
#ifdef DOSTORESTATE40
595
  SHA1_STORE_STATE(40)
596
#endif
597
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, 40, temp);
598
599
#ifdef DOSTORESTATE41
600
  SHA1_STORE_STATE(41)
601
#endif
602
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(e, a, b, c, d, W, 41, temp);
603
604
#ifdef DOSTORESTATE42
605
  SHA1_STORE_STATE(42)
606
#endif
607
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(d, e, a, b, c, W, 42, temp);
608
609
#ifdef DOSTORESTATE43
610
  SHA1_STORE_STATE(43)
611
#endif
612
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(c, d, e, a, b, W, 43, temp);
613
614
#ifdef DOSTORESTATE44
615
  SHA1_STORE_STATE(44)
616
#endif
617
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(b, c, d, e, a, W, 44, temp);
618
619
#ifdef DOSTORESTATE45
620
  SHA1_STORE_STATE(45)
621
#endif
622
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, 45, temp);
623
624
#ifdef DOSTORESTATE46
625
  SHA1_STORE_STATE(46)
626
#endif
627
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(e, a, b, c, d, W, 46, temp);
628
629
#ifdef DOSTORESTATE47
630
  SHA1_STORE_STATE(47)
631
#endif
632
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(d, e, a, b, c, W, 47, temp);
633
634
#ifdef DOSTORESTATE48
635
  SHA1_STORE_STATE(48)
636
#endif
637
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(c, d, e, a, b, W, 48, temp);
638
639
#ifdef DOSTORESTATE49
640
  SHA1_STORE_STATE(49)
641
#endif
642
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(b, c, d, e, a, W, 49, temp);
643
644
#ifdef DOSTORESTATE50
645
  SHA1_STORE_STATE(50)
646
#endif
647
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, 50, temp);
648
649
#ifdef DOSTORESTATE51
650
  SHA1_STORE_STATE(51)
651
#endif
652
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(e, a, b, c, d, W, 51, temp);
653
654
#ifdef DOSTORESTATE52
655
  SHA1_STORE_STATE(52)
656
#endif
657
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(d, e, a, b, c, W, 52, temp);
658
659
#ifdef DOSTORESTATE53
660
  SHA1_STORE_STATE(53)
661
#endif
662
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(c, d, e, a, b, W, 53, temp);
663
664
#ifdef DOSTORESTATE54
665
  SHA1_STORE_STATE(54)
666
#endif
667
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(b, c, d, e, a, W, 54, temp);
668
669
#ifdef DOSTORESTATE55
670
  SHA1_STORE_STATE(55)
671
#endif
672
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, 55, temp);
673
674
#ifdef DOSTORESTATE56
675
  SHA1_STORE_STATE(56)
676
#endif
677
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(e, a, b, c, d, W, 56, temp);
678
679
#ifdef DOSTORESTATE57
680
  SHA1_STORE_STATE(57)
681
#endif
682
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(d, e, a, b, c, W, 57, temp);
683
684
30.0M
#ifdef DOSTORESTATE58
685
30.0M
  SHA1_STORE_STATE(58)
686
30.0M
#endif
687
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(c, d, e, a, b, W, 58, temp);
688
689
#ifdef DOSTORESTATE59
690
  SHA1_STORE_STATE(59)
691
#endif
692
30.0M
  SHA1COMPRESS_FULL_ROUND3_STEP(b, c, d, e, a, W, 59, temp);
693
694
695
696
697
#ifdef DOSTORESTATE60
698
  SHA1_STORE_STATE(60)
699
#endif
700
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, 60, temp);
701
702
#ifdef DOSTORESTATE61
703
  SHA1_STORE_STATE(61)
704
#endif
705
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(e, a, b, c, d, W, 61, temp);
706
707
#ifdef DOSTORESTATE62
708
  SHA1_STORE_STATE(62)
709
#endif
710
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(d, e, a, b, c, W, 62, temp);
711
712
#ifdef DOSTORESTATE63
713
  SHA1_STORE_STATE(63)
714
#endif
715
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(c, d, e, a, b, W, 63, temp);
716
717
#ifdef DOSTORESTATE64
718
  SHA1_STORE_STATE(64)
719
#endif
720
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(b, c, d, e, a, W, 64, temp);
721
722
30.0M
#ifdef DOSTORESTATE65
723
30.0M
  SHA1_STORE_STATE(65)
724
30.0M
#endif
725
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, 65, temp);
726
727
#ifdef DOSTORESTATE66
728
  SHA1_STORE_STATE(66)
729
#endif
730
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(e, a, b, c, d, W, 66, temp);
731
732
#ifdef DOSTORESTATE67
733
  SHA1_STORE_STATE(67)
734
#endif
735
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(d, e, a, b, c, W, 67, temp);
736
737
#ifdef DOSTORESTATE68
738
  SHA1_STORE_STATE(68)
739
#endif
740
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(c, d, e, a, b, W, 68, temp);
741
742
#ifdef DOSTORESTATE69
743
  SHA1_STORE_STATE(69)
744
#endif
745
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(b, c, d, e, a, W, 69, temp);
746
747
#ifdef DOSTORESTATE70
748
  SHA1_STORE_STATE(70)
749
#endif
750
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, 70, temp);
751
752
#ifdef DOSTORESTATE71
753
  SHA1_STORE_STATE(71)
754
#endif
755
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(e, a, b, c, d, W, 71, temp);
756
757
#ifdef DOSTORESTATE72
758
  SHA1_STORE_STATE(72)
759
#endif
760
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(d, e, a, b, c, W, 72, temp);
761
762
#ifdef DOSTORESTATE73
763
  SHA1_STORE_STATE(73)
764
#endif
765
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(c, d, e, a, b, W, 73, temp);
766
767
#ifdef DOSTORESTATE74
768
  SHA1_STORE_STATE(74)
769
#endif
770
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(b, c, d, e, a, W, 74, temp);
771
772
#ifdef DOSTORESTATE75
773
  SHA1_STORE_STATE(75)
774
#endif
775
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, 75, temp);
776
777
#ifdef DOSTORESTATE76
778
  SHA1_STORE_STATE(76)
779
#endif
780
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(e, a, b, c, d, W, 76, temp);
781
782
#ifdef DOSTORESTATE77
783
  SHA1_STORE_STATE(77)
784
#endif
785
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(d, e, a, b, c, W, 77, temp);
786
787
#ifdef DOSTORESTATE78
788
  SHA1_STORE_STATE(78)
789
#endif
790
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(c, d, e, a, b, W, 78, temp);
791
792
#ifdef DOSTORESTATE79
793
  SHA1_STORE_STATE(79)
794
#endif
795
30.0M
  SHA1COMPRESS_FULL_ROUND4_STEP(b, c, d, e, a, W, 79, temp);
796
797
798
799
30.0M
  ihv[0] += a; ihv[1] += b; ihv[2] += c; ihv[3] += d; ihv[4] += e;
800
30.0M
}
801
802
803
804
805
#define SHA1_RECOMPRESS(t) \
806
1.61M
static void sha1recompress_fast_ ## t (uint32_t ihvin[5], uint32_t ihvout[5], const uint32_t me2[80], const uint32_t state[5]) \
807
1.61M
{ \
808
1.61M
  uint32_t a = state[0], b = state[1], c = state[2], d = state[3], e = state[4]; \
809
1.61M
  if (t > 79) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 79); \
810
1.61M
  if (t > 78) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 78); \
811
1.61M
  if (t > 77) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 77); \
812
1.61M
  if (t > 76) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 76); \
813
1.61M
  if (t > 75) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 75); \
814
1.61M
  if (t > 74) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 74); \
815
1.61M
  if (t > 73) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 73); \
816
1.61M
  if (t > 72) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 72); \
817
1.61M
  if (t > 71) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 71); \
818
1.61M
  if (t > 70) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 70); \
819
1.61M
  if (t > 69) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 69); \
820
1.61M
  if (t > 68) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 68); \
821
1.61M
  if (t > 67) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 67); \
822
1.61M
  if (t > 66) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 66); \
823
1.61M
  if (t > 65) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 65); \
824
1.61M
  if (t > 64) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 64); \
825
1.61M
  if (t > 63) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 63); \
826
1.61M
  if (t > 62) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 62); \
827
1.61M
  if (t > 61) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 61); \
828
1.61M
  if (t > 60) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 60); \
829
1.61M
  if (t > 59) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 59); \
830
1.61M
  if (t > 58) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 58); \
831
1.61M
  if (t > 57) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 57); \
832
1.61M
  if (t > 56) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 56); \
833
1.61M
  if (t > 55) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 55); \
834
1.61M
  if (t > 54) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 54); \
835
1.61M
  if (t > 53) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 53); \
836
1.61M
  if (t > 52) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 52); \
837
1.61M
  if (t > 51) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 51); \
838
1.61M
  if (t > 50) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 50); \
839
1.61M
  if (t > 49) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 49); \
840
1.61M
  if (t > 48) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 48); \
841
1.61M
  if (t > 47) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 47); \
842
1.61M
  if (t > 46) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 46); \
843
1.61M
  if (t > 45) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 45); \
844
1.61M
  if (t > 44) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 44); \
845
1.61M
  if (t > 43) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 43); \
846
1.61M
  if (t > 42) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 42); \
847
1.61M
  if (t > 41) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 41); \
848
1.61M
  if (t > 40) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 40); \
849
1.61M
  if (t > 39) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 39); \
850
1.61M
  if (t > 38) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 38); \
851
1.61M
  if (t > 37) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 37); \
852
1.61M
  if (t > 36) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 36); \
853
1.61M
  if (t > 35) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 35); \
854
1.61M
  if (t > 34) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 34); \
855
1.61M
  if (t > 33) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 33); \
856
1.61M
  if (t > 32) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 32); \
857
1.61M
  if (t > 31) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 31); \
858
1.61M
  if (t > 30) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 30); \
859
1.61M
  if (t > 29) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 29); \
860
1.61M
  if (t > 28) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 28); \
861
1.61M
  if (t > 27) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 27); \
862
1.61M
  if (t > 26) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 26); \
863
1.61M
  if (t > 25) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 25); \
864
1.61M
  if (t > 24) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 24); \
865
1.61M
  if (t > 23) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 23); \
866
1.61M
  if (t > 22) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 22); \
867
1.61M
  if (t > 21) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 21); \
868
1.61M
  if (t > 20) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 20); \
869
1.61M
  if (t > 19) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 19); \
870
1.61M
  if (t > 18) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 18); \
871
1.61M
  if (t > 17) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 17); \
872
1.61M
  if (t > 16) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 16); \
873
1.61M
  if (t > 15) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 15); \
874
1.61M
  if (t > 14) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 14); \
875
1.61M
  if (t > 13) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 13); \
876
1.61M
  if (t > 12) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 12); \
877
1.61M
  if (t > 11) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 11); \
878
1.61M
  if (t > 10) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 10); \
879
1.61M
  if (t > 9) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 9); \
880
1.61M
  if (t > 8) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 8); \
881
1.61M
  if (t > 7) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 7); \
882
1.61M
  if (t > 6) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 6); \
883
1.61M
  if (t > 5) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 5); \
884
1.61M
  if (t > 4) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 4); \
885
1.61M
  if (t > 3) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 3); \
886
1.61M
  if (t > 2) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 2); \
887
1.61M
  if (t > 1) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 1); \
888
1.61M
  if (t > 0) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 0); \
889
1.61M
  ihvin[0] = a; ihvin[1] = b; ihvin[2] = c; ihvin[3] = d; ihvin[4] = e; \
890
1.61M
  a = state[0]; b = state[1]; c = state[2]; d = state[3]; e = state[4]; \
891
1.61M
  if (t <= 0) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 0); \
892
1.61M
  if (t <= 1) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 1); \
893
1.61M
  if (t <= 2) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 2); \
894
1.61M
  if (t <= 3) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 3); \
895
1.61M
  if (t <= 4) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 4); \
896
1.61M
  if (t <= 5) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 5); \
897
1.61M
  if (t <= 6) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 6); \
898
1.61M
  if (t <= 7) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 7); \
899
1.61M
  if (t <= 8) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 8); \
900
1.61M
  if (t <= 9) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 9); \
901
1.61M
  if (t <= 10) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 10); \
902
1.61M
  if (t <= 11) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 11); \
903
1.61M
  if (t <= 12) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 12); \
904
1.61M
  if (t <= 13) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 13); \
905
1.61M
  if (t <= 14) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 14); \
906
1.61M
  if (t <= 15) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 15); \
907
1.61M
  if (t <= 16) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 16); \
908
1.61M
  if (t <= 17) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 17); \
909
1.61M
  if (t <= 18) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 18); \
910
1.61M
  if (t <= 19) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 19); \
911
1.61M
  if (t <= 20) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 20); \
912
1.61M
  if (t <= 21) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 21); \
913
1.61M
  if (t <= 22) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 22); \
914
1.61M
  if (t <= 23) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 23); \
915
1.61M
  if (t <= 24) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 24); \
916
1.61M
  if (t <= 25) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 25); \
917
1.61M
  if (t <= 26) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 26); \
918
1.61M
  if (t <= 27) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 27); \
919
1.61M
  if (t <= 28) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 28); \
920
1.61M
  if (t <= 29) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 29); \
921
1.61M
  if (t <= 30) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 30); \
922
1.61M
  if (t <= 31) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 31); \
923
1.61M
  if (t <= 32) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 32); \
924
1.61M
  if (t <= 33) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 33); \
925
1.61M
  if (t <= 34) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 34); \
926
1.61M
  if (t <= 35) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 35); \
927
1.61M
  if (t <= 36) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 36); \
928
1.61M
  if (t <= 37) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 37); \
929
1.61M
  if (t <= 38) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 38); \
930
1.61M
  if (t <= 39) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 39); \
931
1.61M
  if (t <= 40) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 40); \
932
1.61M
  if (t <= 41) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 41); \
933
1.61M
  if (t <= 42) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 42); \
934
1.61M
  if (t <= 43) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 43); \
935
1.61M
  if (t <= 44) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 44); \
936
1.61M
  if (t <= 45) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 45); \
937
1.61M
  if (t <= 46) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 46); \
938
1.61M
  if (t <= 47) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 47); \
939
1.61M
  if (t <= 48) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 48); \
940
1.61M
  if (t <= 49) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 49); \
941
1.61M
  if (t <= 50) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 50); \
942
1.61M
  if (t <= 51) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 51); \
943
1.61M
  if (t <= 52) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 52); \
944
1.61M
  if (t <= 53) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 53); \
945
1.61M
  if (t <= 54) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 54); \
946
1.61M
  if (t <= 55) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 55); \
947
1.61M
  if (t <= 56) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 56); \
948
1.61M
  if (t <= 57) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 57); \
949
1.61M
  if (t <= 58) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 58); \
950
1.61M
  if (t <= 59) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 59); \
951
1.61M
  if (t <= 60) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 60); \
952
1.61M
  if (t <= 61) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 61); \
953
1.61M
  if (t <= 62) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 62); \
954
1.61M
  if (t <= 63) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 63); \
955
1.61M
  if (t <= 64) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 64); \
956
1.61M
  if (t <= 65) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 65); \
957
1.61M
  if (t <= 66) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 66); \
958
1.61M
  if (t <= 67) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 67); \
959
1.61M
  if (t <= 68) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 68); \
960
1.61M
  if (t <= 69) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 69); \
961
1.61M
  if (t <= 70) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 70); \
962
1.61M
  if (t <= 71) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 71); \
963
1.61M
  if (t <= 72) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 72); \
964
1.61M
  if (t <= 73) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 73); \
965
1.61M
  if (t <= 74) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 74); \
966
1.61M
  if (t <= 75) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 75); \
967
1.61M
  if (t <= 76) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 76); \
968
1.61M
  if (t <= 77) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 77); \
969
1.61M
  if (t <= 78) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 78); \
970
1.61M
  if (t <= 79) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 79); \
971
1.61M
  ihvout[0] = ihvin[0] + a; ihvout[1] = ihvin[1] + b; ihvout[2] = ihvin[2] + c; ihvout[3] = ihvin[3] + d; ihvout[4] = ihvin[4] + e; \
972
1.61M
}
sha1.c:sha1recompress_fast_58
Line
Count
Source
806
711k
static void sha1recompress_fast_ ## t (uint32_t ihvin[5], uint32_t ihvout[5], const uint32_t me2[80], const uint32_t state[5]) \
807
711k
{ \
808
711k
  uint32_t a = state[0], b = state[1], c = state[2], d = state[3], e = state[4]; \
809
711k
  if (t > 79) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 79); \
810
711k
  if (t > 78) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 78); \
811
711k
  if (t > 77) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 77); \
812
711k
  if (t > 76) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 76); \
813
711k
  if (t > 75) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 75); \
814
711k
  if (t > 74) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 74); \
815
711k
  if (t > 73) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 73); \
816
711k
  if (t > 72) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 72); \
817
711k
  if (t > 71) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 71); \
818
711k
  if (t > 70) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 70); \
819
711k
  if (t > 69) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 69); \
820
711k
  if (t > 68) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 68); \
821
711k
  if (t > 67) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 67); \
822
711k
  if (t > 66) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 66); \
823
711k
  if (t > 65) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 65); \
824
711k
  if (t > 64) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 64); \
825
711k
  if (t > 63) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 63); \
826
711k
  if (t > 62) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 62); \
827
711k
  if (t > 61) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 61); \
828
711k
  if (t > 60) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 60); \
829
711k
  if (t > 59) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 59); \
830
711k
  if (t > 58) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 58); \
831
711k
  if (t > 57) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 57); \
832
711k
  if (t > 56) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 56); \
833
711k
  if (t > 55) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 55); \
834
711k
  if (t > 54) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 54); \
835
711k
  if (t > 53) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 53); \
836
711k
  if (t > 52) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 52); \
837
711k
  if (t > 51) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 51); \
838
711k
  if (t > 50) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 50); \
839
711k
  if (t > 49) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 49); \
840
711k
  if (t > 48) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 48); \
841
711k
  if (t > 47) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 47); \
842
711k
  if (t > 46) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 46); \
843
711k
  if (t > 45) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 45); \
844
711k
  if (t > 44) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 44); \
845
711k
  if (t > 43) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 43); \
846
711k
  if (t > 42) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 42); \
847
711k
  if (t > 41) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 41); \
848
711k
  if (t > 40) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 40); \
849
711k
  if (t > 39) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 39); \
850
711k
  if (t > 38) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 38); \
851
711k
  if (t > 37) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 37); \
852
711k
  if (t > 36) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 36); \
853
711k
  if (t > 35) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 35); \
854
711k
  if (t > 34) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 34); \
855
711k
  if (t > 33) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 33); \
856
711k
  if (t > 32) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 32); \
857
711k
  if (t > 31) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 31); \
858
711k
  if (t > 30) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 30); \
859
711k
  if (t > 29) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 29); \
860
711k
  if (t > 28) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 28); \
861
711k
  if (t > 27) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 27); \
862
711k
  if (t > 26) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 26); \
863
711k
  if (t > 25) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 25); \
864
711k
  if (t > 24) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 24); \
865
711k
  if (t > 23) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 23); \
866
711k
  if (t > 22) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 22); \
867
711k
  if (t > 21) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 21); \
868
711k
  if (t > 20) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 20); \
869
711k
  if (t > 19) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 19); \
870
711k
  if (t > 18) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 18); \
871
711k
  if (t > 17) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 17); \
872
711k
  if (t > 16) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 16); \
873
711k
  if (t > 15) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 15); \
874
711k
  if (t > 14) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 14); \
875
711k
  if (t > 13) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 13); \
876
711k
  if (t > 12) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 12); \
877
711k
  if (t > 11) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 11); \
878
711k
  if (t > 10) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 10); \
879
711k
  if (t > 9) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 9); \
880
711k
  if (t > 8) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 8); \
881
711k
  if (t > 7) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 7); \
882
711k
  if (t > 6) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 6); \
883
711k
  if (t > 5) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 5); \
884
711k
  if (t > 4) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 4); \
885
711k
  if (t > 3) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 3); \
886
711k
  if (t > 2) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 2); \
887
711k
  if (t > 1) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 1); \
888
711k
  if (t > 0) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 0); \
889
711k
  ihvin[0] = a; ihvin[1] = b; ihvin[2] = c; ihvin[3] = d; ihvin[4] = e; \
890
711k
  a = state[0]; b = state[1]; c = state[2]; d = state[3]; e = state[4]; \
891
711k
  if (t <= 0) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 0); \
892
711k
  if (t <= 1) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 1); \
893
711k
  if (t <= 2) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 2); \
894
711k
  if (t <= 3) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 3); \
895
711k
  if (t <= 4) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 4); \
896
711k
  if (t <= 5) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 5); \
897
711k
  if (t <= 6) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 6); \
898
711k
  if (t <= 7) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 7); \
899
711k
  if (t <= 8) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 8); \
900
711k
  if (t <= 9) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 9); \
901
711k
  if (t <= 10) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 10); \
902
711k
  if (t <= 11) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 11); \
903
711k
  if (t <= 12) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 12); \
904
711k
  if (t <= 13) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 13); \
905
711k
  if (t <= 14) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 14); \
906
711k
  if (t <= 15) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 15); \
907
711k
  if (t <= 16) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 16); \
908
711k
  if (t <= 17) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 17); \
909
711k
  if (t <= 18) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 18); \
910
711k
  if (t <= 19) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 19); \
911
711k
  if (t <= 20) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 20); \
912
711k
  if (t <= 21) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 21); \
913
711k
  if (t <= 22) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 22); \
914
711k
  if (t <= 23) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 23); \
915
711k
  if (t <= 24) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 24); \
916
711k
  if (t <= 25) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 25); \
917
711k
  if (t <= 26) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 26); \
918
711k
  if (t <= 27) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 27); \
919
711k
  if (t <= 28) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 28); \
920
711k
  if (t <= 29) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 29); \
921
711k
  if (t <= 30) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 30); \
922
711k
  if (t <= 31) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 31); \
923
711k
  if (t <= 32) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 32); \
924
711k
  if (t <= 33) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 33); \
925
711k
  if (t <= 34) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 34); \
926
711k
  if (t <= 35) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 35); \
927
711k
  if (t <= 36) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 36); \
928
711k
  if (t <= 37) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 37); \
929
711k
  if (t <= 38) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 38); \
930
711k
  if (t <= 39) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 39); \
931
711k
  if (t <= 40) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 40); \
932
711k
  if (t <= 41) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 41); \
933
711k
  if (t <= 42) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 42); \
934
711k
  if (t <= 43) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 43); \
935
711k
  if (t <= 44) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 44); \
936
711k
  if (t <= 45) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 45); \
937
711k
  if (t <= 46) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 46); \
938
711k
  if (t <= 47) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 47); \
939
711k
  if (t <= 48) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 48); \
940
711k
  if (t <= 49) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 49); \
941
711k
  if (t <= 50) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 50); \
942
711k
  if (t <= 51) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 51); \
943
711k
  if (t <= 52) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 52); \
944
711k
  if (t <= 53) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 53); \
945
711k
  if (t <= 54) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 54); \
946
711k
  if (t <= 55) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 55); \
947
711k
  if (t <= 56) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 56); \
948
711k
  if (t <= 57) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 57); \
949
711k
  if (t <= 58) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 58); \
950
711k
  if (t <= 59) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 59); \
951
711k
  if (t <= 60) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 60); \
952
711k
  if (t <= 61) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 61); \
953
711k
  if (t <= 62) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 62); \
954
711k
  if (t <= 63) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 63); \
955
711k
  if (t <= 64) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 64); \
956
711k
  if (t <= 65) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 65); \
957
711k
  if (t <= 66) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 66); \
958
711k
  if (t <= 67) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 67); \
959
711k
  if (t <= 68) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 68); \
960
711k
  if (t <= 69) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 69); \
961
711k
  if (t <= 70) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 70); \
962
711k
  if (t <= 71) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 71); \
963
711k
  if (t <= 72) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 72); \
964
711k
  if (t <= 73) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 73); \
965
711k
  if (t <= 74) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 74); \
966
711k
  if (t <= 75) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 75); \
967
711k
  if (t <= 76) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 76); \
968
711k
  if (t <= 77) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 77); \
969
711k
  if (t <= 78) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 78); \
970
711k
  if (t <= 79) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 79); \
971
711k
  ihvout[0] = ihvin[0] + a; ihvout[1] = ihvin[1] + b; ihvout[2] = ihvin[2] + c; ihvout[3] = ihvin[3] + d; ihvout[4] = ihvin[4] + e; \
972
711k
}
sha1.c:sha1recompress_fast_65
Line
Count
Source
806
901k
static void sha1recompress_fast_ ## t (uint32_t ihvin[5], uint32_t ihvout[5], const uint32_t me2[80], const uint32_t state[5]) \
807
901k
{ \
808
901k
  uint32_t a = state[0], b = state[1], c = state[2], d = state[3], e = state[4]; \
809
901k
  if (t > 79) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 79); \
810
901k
  if (t > 78) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 78); \
811
901k
  if (t > 77) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 77); \
812
901k
  if (t > 76) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 76); \
813
901k
  if (t > 75) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 75); \
814
901k
  if (t > 74) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 74); \
815
901k
  if (t > 73) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 73); \
816
901k
  if (t > 72) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 72); \
817
901k
  if (t > 71) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 71); \
818
901k
  if (t > 70) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 70); \
819
901k
  if (t > 69) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 69); \
820
901k
  if (t > 68) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 68); \
821
901k
  if (t > 67) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 67); \
822
901k
  if (t > 66) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 66); \
823
901k
  if (t > 65) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 65); \
824
901k
  if (t > 64) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 64); \
825
901k
  if (t > 63) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 63); \
826
901k
  if (t > 62) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 62); \
827
901k
  if (t > 61) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 61); \
828
901k
  if (t > 60) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 60); \
829
901k
  if (t > 59) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 59); \
830
901k
  if (t > 58) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 58); \
831
901k
  if (t > 57) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 57); \
832
901k
  if (t > 56) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 56); \
833
901k
  if (t > 55) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 55); \
834
901k
  if (t > 54) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 54); \
835
901k
  if (t > 53) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 53); \
836
901k
  if (t > 52) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 52); \
837
901k
  if (t > 51) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 51); \
838
901k
  if (t > 50) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 50); \
839
901k
  if (t > 49) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 49); \
840
901k
  if (t > 48) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 48); \
841
901k
  if (t > 47) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 47); \
842
901k
  if (t > 46) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 46); \
843
901k
  if (t > 45) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 45); \
844
901k
  if (t > 44) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 44); \
845
901k
  if (t > 43) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 43); \
846
901k
  if (t > 42) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 42); \
847
901k
  if (t > 41) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 41); \
848
901k
  if (t > 40) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 40); \
849
901k
  if (t > 39) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 39); \
850
901k
  if (t > 38) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 38); \
851
901k
  if (t > 37) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 37); \
852
901k
  if (t > 36) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 36); \
853
901k
  if (t > 35) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 35); \
854
901k
  if (t > 34) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 34); \
855
901k
  if (t > 33) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 33); \
856
901k
  if (t > 32) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 32); \
857
901k
  if (t > 31) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 31); \
858
901k
  if (t > 30) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 30); \
859
901k
  if (t > 29) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 29); \
860
901k
  if (t > 28) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 28); \
861
901k
  if (t > 27) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 27); \
862
901k
  if (t > 26) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 26); \
863
901k
  if (t > 25) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 25); \
864
901k
  if (t > 24) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 24); \
865
901k
  if (t > 23) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 23); \
866
901k
  if (t > 22) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 22); \
867
901k
  if (t > 21) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 21); \
868
901k
  if (t > 20) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 20); \
869
901k
  if (t > 19) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 19); \
870
901k
  if (t > 18) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 18); \
871
901k
  if (t > 17) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 17); \
872
901k
  if (t > 16) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 16); \
873
901k
  if (t > 15) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 15); \
874
901k
  if (t > 14) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 14); \
875
901k
  if (t > 13) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 13); \
876
901k
  if (t > 12) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 12); \
877
901k
  if (t > 11) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 11); \
878
901k
  if (t > 10) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 10); \
879
901k
  if (t > 9) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 9); \
880
901k
  if (t > 8) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 8); \
881
901k
  if (t > 7) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 7); \
882
901k
  if (t > 6) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 6); \
883
901k
  if (t > 5) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 5); \
884
901k
  if (t > 4) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 4); \
885
901k
  if (t > 3) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 3); \
886
901k
  if (t > 2) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 2); \
887
901k
  if (t > 1) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 1); \
888
901k
  if (t > 0) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 0); \
889
901k
  ihvin[0] = a; ihvin[1] = b; ihvin[2] = c; ihvin[3] = d; ihvin[4] = e; \
890
901k
  a = state[0]; b = state[1]; c = state[2]; d = state[3]; e = state[4]; \
891
901k
  if (t <= 0) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 0); \
892
901k
  if (t <= 1) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 1); \
893
901k
  if (t <= 2) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 2); \
894
901k
  if (t <= 3) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 3); \
895
901k
  if (t <= 4) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 4); \
896
901k
  if (t <= 5) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 5); \
897
901k
  if (t <= 6) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 6); \
898
901k
  if (t <= 7) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 7); \
899
901k
  if (t <= 8) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 8); \
900
901k
  if (t <= 9) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 9); \
901
901k
  if (t <= 10) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 10); \
902
901k
  if (t <= 11) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 11); \
903
901k
  if (t <= 12) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 12); \
904
901k
  if (t <= 13) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 13); \
905
901k
  if (t <= 14) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 14); \
906
901k
  if (t <= 15) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 15); \
907
901k
  if (t <= 16) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 16); \
908
901k
  if (t <= 17) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 17); \
909
901k
  if (t <= 18) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 18); \
910
901k
  if (t <= 19) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 19); \
911
901k
  if (t <= 20) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 20); \
912
901k
  if (t <= 21) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 21); \
913
901k
  if (t <= 22) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 22); \
914
901k
  if (t <= 23) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 23); \
915
901k
  if (t <= 24) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 24); \
916
901k
  if (t <= 25) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 25); \
917
901k
  if (t <= 26) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 26); \
918
901k
  if (t <= 27) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 27); \
919
901k
  if (t <= 28) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 28); \
920
901k
  if (t <= 29) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 29); \
921
901k
  if (t <= 30) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 30); \
922
901k
  if (t <= 31) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 31); \
923
901k
  if (t <= 32) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 32); \
924
901k
  if (t <= 33) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 33); \
925
901k
  if (t <= 34) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 34); \
926
901k
  if (t <= 35) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 35); \
927
901k
  if (t <= 36) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 36); \
928
901k
  if (t <= 37) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 37); \
929
901k
  if (t <= 38) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 38); \
930
901k
  if (t <= 39) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 39); \
931
901k
  if (t <= 40) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 40); \
932
901k
  if (t <= 41) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 41); \
933
901k
  if (t <= 42) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 42); \
934
901k
  if (t <= 43) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 43); \
935
901k
  if (t <= 44) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 44); \
936
901k
  if (t <= 45) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 45); \
937
901k
  if (t <= 46) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 46); \
938
901k
  if (t <= 47) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 47); \
939
901k
  if (t <= 48) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 48); \
940
901k
  if (t <= 49) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 49); \
941
901k
  if (t <= 50) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 50); \
942
901k
  if (t <= 51) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 51); \
943
901k
  if (t <= 52) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 52); \
944
901k
  if (t <= 53) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 53); \
945
901k
  if (t <= 54) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 54); \
946
901k
  if (t <= 55) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 55); \
947
901k
  if (t <= 56) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 56); \
948
901k
  if (t <= 57) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 57); \
949
901k
  if (t <= 58) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 58); \
950
901k
  if (t <= 59) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 59); \
951
901k
  if (t <= 60) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 60); \
952
901k
  if (t <= 61) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 61); \
953
901k
  if (t <= 62) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 62); \
954
901k
  if (t <= 63) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 63); \
955
901k
  if (t <= 64) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 64); \
956
901k
  if (t <= 65) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 65); \
957
901k
  if (t <= 66) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 66); \
958
901k
  if (t <= 67) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 67); \
959
901k
  if (t <= 68) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 68); \
960
901k
  if (t <= 69) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 69); \
961
901k
  if (t <= 70) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 70); \
962
901k
  if (t <= 71) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 71); \
963
901k
  if (t <= 72) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 72); \
964
901k
  if (t <= 73) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 73); \
965
901k
  if (t <= 74) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 74); \
966
901k
  if (t <= 75) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 75); \
967
901k
  if (t <= 76) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 76); \
968
901k
  if (t <= 77) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 77); \
969
901k
  if (t <= 78) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 78); \
970
901k
  if (t <= 79) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 79); \
971
901k
  ihvout[0] = ihvin[0] + a; ihvout[1] = ihvin[1] + b; ihvout[2] = ihvin[2] + c; ihvout[3] = ihvin[3] + d; ihvout[4] = ihvin[4] + e; \
972
901k
}
973
974
#ifdef _MSC_VER
975
#pragma warning(push)
976
#pragma warning(disable: 4127)  /* Compiler complains about the checks in the above macro being constant. */
977
#endif
978
979
#ifdef DOSTORESTATE0
980
SHA1_RECOMPRESS(0)
981
#endif
982
983
#ifdef DOSTORESTATE1
984
SHA1_RECOMPRESS(1)
985
#endif
986
987
#ifdef DOSTORESTATE2
988
SHA1_RECOMPRESS(2)
989
#endif
990
991
#ifdef DOSTORESTATE3
992
SHA1_RECOMPRESS(3)
993
#endif
994
995
#ifdef DOSTORESTATE4
996
SHA1_RECOMPRESS(4)
997
#endif
998
999
#ifdef DOSTORESTATE5
1000
SHA1_RECOMPRESS(5)
1001
#endif
1002
1003
#ifdef DOSTORESTATE6
1004
SHA1_RECOMPRESS(6)
1005
#endif
1006
1007
#ifdef DOSTORESTATE7
1008
SHA1_RECOMPRESS(7)
1009
#endif
1010
1011
#ifdef DOSTORESTATE8
1012
SHA1_RECOMPRESS(8)
1013
#endif
1014
1015
#ifdef DOSTORESTATE9
1016
SHA1_RECOMPRESS(9)
1017
#endif
1018
1019
#ifdef DOSTORESTATE10
1020
SHA1_RECOMPRESS(10)
1021
#endif
1022
1023
#ifdef DOSTORESTATE11
1024
SHA1_RECOMPRESS(11)
1025
#endif
1026
1027
#ifdef DOSTORESTATE12
1028
SHA1_RECOMPRESS(12)
1029
#endif
1030
1031
#ifdef DOSTORESTATE13
1032
SHA1_RECOMPRESS(13)
1033
#endif
1034
1035
#ifdef DOSTORESTATE14
1036
SHA1_RECOMPRESS(14)
1037
#endif
1038
1039
#ifdef DOSTORESTATE15
1040
SHA1_RECOMPRESS(15)
1041
#endif
1042
1043
#ifdef DOSTORESTATE16
1044
SHA1_RECOMPRESS(16)
1045
#endif
1046
1047
#ifdef DOSTORESTATE17
1048
SHA1_RECOMPRESS(17)
1049
#endif
1050
1051
#ifdef DOSTORESTATE18
1052
SHA1_RECOMPRESS(18)
1053
#endif
1054
1055
#ifdef DOSTORESTATE19
1056
SHA1_RECOMPRESS(19)
1057
#endif
1058
1059
#ifdef DOSTORESTATE20
1060
SHA1_RECOMPRESS(20)
1061
#endif
1062
1063
#ifdef DOSTORESTATE21
1064
SHA1_RECOMPRESS(21)
1065
#endif
1066
1067
#ifdef DOSTORESTATE22
1068
SHA1_RECOMPRESS(22)
1069
#endif
1070
1071
#ifdef DOSTORESTATE23
1072
SHA1_RECOMPRESS(23)
1073
#endif
1074
1075
#ifdef DOSTORESTATE24
1076
SHA1_RECOMPRESS(24)
1077
#endif
1078
1079
#ifdef DOSTORESTATE25
1080
SHA1_RECOMPRESS(25)
1081
#endif
1082
1083
#ifdef DOSTORESTATE26
1084
SHA1_RECOMPRESS(26)
1085
#endif
1086
1087
#ifdef DOSTORESTATE27
1088
SHA1_RECOMPRESS(27)
1089
#endif
1090
1091
#ifdef DOSTORESTATE28
1092
SHA1_RECOMPRESS(28)
1093
#endif
1094
1095
#ifdef DOSTORESTATE29
1096
SHA1_RECOMPRESS(29)
1097
#endif
1098
1099
#ifdef DOSTORESTATE30
1100
SHA1_RECOMPRESS(30)
1101
#endif
1102
1103
#ifdef DOSTORESTATE31
1104
SHA1_RECOMPRESS(31)
1105
#endif
1106
1107
#ifdef DOSTORESTATE32
1108
SHA1_RECOMPRESS(32)
1109
#endif
1110
1111
#ifdef DOSTORESTATE33
1112
SHA1_RECOMPRESS(33)
1113
#endif
1114
1115
#ifdef DOSTORESTATE34
1116
SHA1_RECOMPRESS(34)
1117
#endif
1118
1119
#ifdef DOSTORESTATE35
1120
SHA1_RECOMPRESS(35)
1121
#endif
1122
1123
#ifdef DOSTORESTATE36
1124
SHA1_RECOMPRESS(36)
1125
#endif
1126
1127
#ifdef DOSTORESTATE37
1128
SHA1_RECOMPRESS(37)
1129
#endif
1130
1131
#ifdef DOSTORESTATE38
1132
SHA1_RECOMPRESS(38)
1133
#endif
1134
1135
#ifdef DOSTORESTATE39
1136
SHA1_RECOMPRESS(39)
1137
#endif
1138
1139
#ifdef DOSTORESTATE40
1140
SHA1_RECOMPRESS(40)
1141
#endif
1142
1143
#ifdef DOSTORESTATE41
1144
SHA1_RECOMPRESS(41)
1145
#endif
1146
1147
#ifdef DOSTORESTATE42
1148
SHA1_RECOMPRESS(42)
1149
#endif
1150
1151
#ifdef DOSTORESTATE43
1152
SHA1_RECOMPRESS(43)
1153
#endif
1154
1155
#ifdef DOSTORESTATE44
1156
SHA1_RECOMPRESS(44)
1157
#endif
1158
1159
#ifdef DOSTORESTATE45
1160
SHA1_RECOMPRESS(45)
1161
#endif
1162
1163
#ifdef DOSTORESTATE46
1164
SHA1_RECOMPRESS(46)
1165
#endif
1166
1167
#ifdef DOSTORESTATE47
1168
SHA1_RECOMPRESS(47)
1169
#endif
1170
1171
#ifdef DOSTORESTATE48
1172
SHA1_RECOMPRESS(48)
1173
#endif
1174
1175
#ifdef DOSTORESTATE49
1176
SHA1_RECOMPRESS(49)
1177
#endif
1178
1179
#ifdef DOSTORESTATE50
1180
SHA1_RECOMPRESS(50)
1181
#endif
1182
1183
#ifdef DOSTORESTATE51
1184
SHA1_RECOMPRESS(51)
1185
#endif
1186
1187
#ifdef DOSTORESTATE52
1188
SHA1_RECOMPRESS(52)
1189
#endif
1190
1191
#ifdef DOSTORESTATE53
1192
SHA1_RECOMPRESS(53)
1193
#endif
1194
1195
#ifdef DOSTORESTATE54
1196
SHA1_RECOMPRESS(54)
1197
#endif
1198
1199
#ifdef DOSTORESTATE55
1200
SHA1_RECOMPRESS(55)
1201
#endif
1202
1203
#ifdef DOSTORESTATE56
1204
SHA1_RECOMPRESS(56)
1205
#endif
1206
1207
#ifdef DOSTORESTATE57
1208
SHA1_RECOMPRESS(57)
1209
#endif
1210
1211
#ifdef DOSTORESTATE58
1212
SHA1_RECOMPRESS(58)
1213
#endif
1214
1215
#ifdef DOSTORESTATE59
1216
SHA1_RECOMPRESS(59)
1217
#endif
1218
1219
#ifdef DOSTORESTATE60
1220
SHA1_RECOMPRESS(60)
1221
#endif
1222
1223
#ifdef DOSTORESTATE61
1224
SHA1_RECOMPRESS(61)
1225
#endif
1226
1227
#ifdef DOSTORESTATE62
1228
SHA1_RECOMPRESS(62)
1229
#endif
1230
1231
#ifdef DOSTORESTATE63
1232
SHA1_RECOMPRESS(63)
1233
#endif
1234
1235
#ifdef DOSTORESTATE64
1236
SHA1_RECOMPRESS(64)
1237
#endif
1238
1239
#ifdef DOSTORESTATE65
1240
SHA1_RECOMPRESS(65)
1241
#endif
1242
1243
#ifdef DOSTORESTATE66
1244
SHA1_RECOMPRESS(66)
1245
#endif
1246
1247
#ifdef DOSTORESTATE67
1248
SHA1_RECOMPRESS(67)
1249
#endif
1250
1251
#ifdef DOSTORESTATE68
1252
SHA1_RECOMPRESS(68)
1253
#endif
1254
1255
#ifdef DOSTORESTATE69
1256
SHA1_RECOMPRESS(69)
1257
#endif
1258
1259
#ifdef DOSTORESTATE70
1260
SHA1_RECOMPRESS(70)
1261
#endif
1262
1263
#ifdef DOSTORESTATE71
1264
SHA1_RECOMPRESS(71)
1265
#endif
1266
1267
#ifdef DOSTORESTATE72
1268
SHA1_RECOMPRESS(72)
1269
#endif
1270
1271
#ifdef DOSTORESTATE73
1272
SHA1_RECOMPRESS(73)
1273
#endif
1274
1275
#ifdef DOSTORESTATE74
1276
SHA1_RECOMPRESS(74)
1277
#endif
1278
1279
#ifdef DOSTORESTATE75
1280
SHA1_RECOMPRESS(75)
1281
#endif
1282
1283
#ifdef DOSTORESTATE76
1284
SHA1_RECOMPRESS(76)
1285
#endif
1286
1287
#ifdef DOSTORESTATE77
1288
SHA1_RECOMPRESS(77)
1289
#endif
1290
1291
#ifdef DOSTORESTATE78
1292
SHA1_RECOMPRESS(78)
1293
#endif
1294
1295
#ifdef DOSTORESTATE79
1296
SHA1_RECOMPRESS(79)
1297
#endif
1298
1299
#ifdef _MSC_VER
1300
#pragma warning(pop)
1301
#endif
1302
1303
static void sha1_recompression_step(uint32_t step, uint32_t ihvin[5], uint32_t ihvout[5], const uint32_t me2[80], const uint32_t state[5])
1304
1.61M
{
1305
1.61M
  switch (step)
1306
1.61M
  {
1307
#ifdef DOSTORESTATE0
1308
  case 0:
1309
    sha1recompress_fast_0(ihvin, ihvout, me2, state);
1310
    break;
1311
#endif
1312
#ifdef DOSTORESTATE1
1313
  case 1:
1314
    sha1recompress_fast_1(ihvin, ihvout, me2, state);
1315
    break;
1316
#endif
1317
#ifdef DOSTORESTATE2
1318
  case 2:
1319
    sha1recompress_fast_2(ihvin, ihvout, me2, state);
1320
    break;
1321
#endif
1322
#ifdef DOSTORESTATE3
1323
  case 3:
1324
    sha1recompress_fast_3(ihvin, ihvout, me2, state);
1325
    break;
1326
#endif
1327
#ifdef DOSTORESTATE4
1328
  case 4:
1329
    sha1recompress_fast_4(ihvin, ihvout, me2, state);
1330
    break;
1331
#endif
1332
#ifdef DOSTORESTATE5
1333
  case 5:
1334
    sha1recompress_fast_5(ihvin, ihvout, me2, state);
1335
    break;
1336
#endif
1337
#ifdef DOSTORESTATE6
1338
  case 6:
1339
    sha1recompress_fast_6(ihvin, ihvout, me2, state);
1340
    break;
1341
#endif
1342
#ifdef DOSTORESTATE7
1343
  case 7:
1344
    sha1recompress_fast_7(ihvin, ihvout, me2, state);
1345
    break;
1346
#endif
1347
#ifdef DOSTORESTATE8
1348
  case 8:
1349
    sha1recompress_fast_8(ihvin, ihvout, me2, state);
1350
    break;
1351
#endif
1352
#ifdef DOSTORESTATE9
1353
  case 9:
1354
    sha1recompress_fast_9(ihvin, ihvout, me2, state);
1355
    break;
1356
#endif
1357
#ifdef DOSTORESTATE10
1358
  case 10:
1359
    sha1recompress_fast_10(ihvin, ihvout, me2, state);
1360
    break;
1361
#endif
1362
#ifdef DOSTORESTATE11
1363
  case 11:
1364
    sha1recompress_fast_11(ihvin, ihvout, me2, state);
1365
    break;
1366
#endif
1367
#ifdef DOSTORESTATE12
1368
  case 12:
1369
    sha1recompress_fast_12(ihvin, ihvout, me2, state);
1370
    break;
1371
#endif
1372
#ifdef DOSTORESTATE13
1373
  case 13:
1374
    sha1recompress_fast_13(ihvin, ihvout, me2, state);
1375
    break;
1376
#endif
1377
#ifdef DOSTORESTATE14
1378
  case 14:
1379
    sha1recompress_fast_14(ihvin, ihvout, me2, state);
1380
    break;
1381
#endif
1382
#ifdef DOSTORESTATE15
1383
  case 15:
1384
    sha1recompress_fast_15(ihvin, ihvout, me2, state);
1385
    break;
1386
#endif
1387
#ifdef DOSTORESTATE16
1388
  case 16:
1389
    sha1recompress_fast_16(ihvin, ihvout, me2, state);
1390
    break;
1391
#endif
1392
#ifdef DOSTORESTATE17
1393
  case 17:
1394
    sha1recompress_fast_17(ihvin, ihvout, me2, state);
1395
    break;
1396
#endif
1397
#ifdef DOSTORESTATE18
1398
  case 18:
1399
    sha1recompress_fast_18(ihvin, ihvout, me2, state);
1400
    break;
1401
#endif
1402
#ifdef DOSTORESTATE19
1403
  case 19:
1404
    sha1recompress_fast_19(ihvin, ihvout, me2, state);
1405
    break;
1406
#endif
1407
#ifdef DOSTORESTATE20
1408
  case 20:
1409
    sha1recompress_fast_20(ihvin, ihvout, me2, state);
1410
    break;
1411
#endif
1412
#ifdef DOSTORESTATE21
1413
  case 21:
1414
    sha1recompress_fast_21(ihvin, ihvout, me2, state);
1415
    break;
1416
#endif
1417
#ifdef DOSTORESTATE22
1418
  case 22:
1419
    sha1recompress_fast_22(ihvin, ihvout, me2, state);
1420
    break;
1421
#endif
1422
#ifdef DOSTORESTATE23
1423
  case 23:
1424
    sha1recompress_fast_23(ihvin, ihvout, me2, state);
1425
    break;
1426
#endif
1427
#ifdef DOSTORESTATE24
1428
  case 24:
1429
    sha1recompress_fast_24(ihvin, ihvout, me2, state);
1430
    break;
1431
#endif
1432
#ifdef DOSTORESTATE25
1433
  case 25:
1434
    sha1recompress_fast_25(ihvin, ihvout, me2, state);
1435
    break;
1436
#endif
1437
#ifdef DOSTORESTATE26
1438
  case 26:
1439
    sha1recompress_fast_26(ihvin, ihvout, me2, state);
1440
    break;
1441
#endif
1442
#ifdef DOSTORESTATE27
1443
  case 27:
1444
    sha1recompress_fast_27(ihvin, ihvout, me2, state);
1445
    break;
1446
#endif
1447
#ifdef DOSTORESTATE28
1448
  case 28:
1449
    sha1recompress_fast_28(ihvin, ihvout, me2, state);
1450
    break;
1451
#endif
1452
#ifdef DOSTORESTATE29
1453
  case 29:
1454
    sha1recompress_fast_29(ihvin, ihvout, me2, state);
1455
    break;
1456
#endif
1457
#ifdef DOSTORESTATE30
1458
  case 30:
1459
    sha1recompress_fast_30(ihvin, ihvout, me2, state);
1460
    break;
1461
#endif
1462
#ifdef DOSTORESTATE31
1463
  case 31:
1464
    sha1recompress_fast_31(ihvin, ihvout, me2, state);
1465
    break;
1466
#endif
1467
#ifdef DOSTORESTATE32
1468
  case 32:
1469
    sha1recompress_fast_32(ihvin, ihvout, me2, state);
1470
    break;
1471
#endif
1472
#ifdef DOSTORESTATE33
1473
  case 33:
1474
    sha1recompress_fast_33(ihvin, ihvout, me2, state);
1475
    break;
1476
#endif
1477
#ifdef DOSTORESTATE34
1478
  case 34:
1479
    sha1recompress_fast_34(ihvin, ihvout, me2, state);
1480
    break;
1481
#endif
1482
#ifdef DOSTORESTATE35
1483
  case 35:
1484
    sha1recompress_fast_35(ihvin, ihvout, me2, state);
1485
    break;
1486
#endif
1487
#ifdef DOSTORESTATE36
1488
  case 36:
1489
    sha1recompress_fast_36(ihvin, ihvout, me2, state);
1490
    break;
1491
#endif
1492
#ifdef DOSTORESTATE37
1493
  case 37:
1494
    sha1recompress_fast_37(ihvin, ihvout, me2, state);
1495
    break;
1496
#endif
1497
#ifdef DOSTORESTATE38
1498
  case 38:
1499
    sha1recompress_fast_38(ihvin, ihvout, me2, state);
1500
    break;
1501
#endif
1502
#ifdef DOSTORESTATE39
1503
  case 39:
1504
    sha1recompress_fast_39(ihvin, ihvout, me2, state);
1505
    break;
1506
#endif
1507
#ifdef DOSTORESTATE40
1508
  case 40:
1509
    sha1recompress_fast_40(ihvin, ihvout, me2, state);
1510
    break;
1511
#endif
1512
#ifdef DOSTORESTATE41
1513
  case 41:
1514
    sha1recompress_fast_41(ihvin, ihvout, me2, state);
1515
    break;
1516
#endif
1517
#ifdef DOSTORESTATE42
1518
  case 42:
1519
    sha1recompress_fast_42(ihvin, ihvout, me2, state);
1520
    break;
1521
#endif
1522
#ifdef DOSTORESTATE43
1523
  case 43:
1524
    sha1recompress_fast_43(ihvin, ihvout, me2, state);
1525
    break;
1526
#endif
1527
#ifdef DOSTORESTATE44
1528
  case 44:
1529
    sha1recompress_fast_44(ihvin, ihvout, me2, state);
1530
    break;
1531
#endif
1532
#ifdef DOSTORESTATE45
1533
  case 45:
1534
    sha1recompress_fast_45(ihvin, ihvout, me2, state);
1535
    break;
1536
#endif
1537
#ifdef DOSTORESTATE46
1538
  case 46:
1539
    sha1recompress_fast_46(ihvin, ihvout, me2, state);
1540
    break;
1541
#endif
1542
#ifdef DOSTORESTATE47
1543
  case 47:
1544
    sha1recompress_fast_47(ihvin, ihvout, me2, state);
1545
    break;
1546
#endif
1547
#ifdef DOSTORESTATE48
1548
  case 48:
1549
    sha1recompress_fast_48(ihvin, ihvout, me2, state);
1550
    break;
1551
#endif
1552
#ifdef DOSTORESTATE49
1553
  case 49:
1554
    sha1recompress_fast_49(ihvin, ihvout, me2, state);
1555
    break;
1556
#endif
1557
#ifdef DOSTORESTATE50
1558
  case 50:
1559
    sha1recompress_fast_50(ihvin, ihvout, me2, state);
1560
    break;
1561
#endif
1562
#ifdef DOSTORESTATE51
1563
  case 51:
1564
    sha1recompress_fast_51(ihvin, ihvout, me2, state);
1565
    break;
1566
#endif
1567
#ifdef DOSTORESTATE52
1568
  case 52:
1569
    sha1recompress_fast_52(ihvin, ihvout, me2, state);
1570
    break;
1571
#endif
1572
#ifdef DOSTORESTATE53
1573
  case 53:
1574
    sha1recompress_fast_53(ihvin, ihvout, me2, state);
1575
    break;
1576
#endif
1577
#ifdef DOSTORESTATE54
1578
  case 54:
1579
    sha1recompress_fast_54(ihvin, ihvout, me2, state);
1580
    break;
1581
#endif
1582
#ifdef DOSTORESTATE55
1583
  case 55:
1584
    sha1recompress_fast_55(ihvin, ihvout, me2, state);
1585
    break;
1586
#endif
1587
#ifdef DOSTORESTATE56
1588
  case 56:
1589
    sha1recompress_fast_56(ihvin, ihvout, me2, state);
1590
    break;
1591
#endif
1592
#ifdef DOSTORESTATE57
1593
  case 57:
1594
    sha1recompress_fast_57(ihvin, ihvout, me2, state);
1595
    break;
1596
#endif
1597
0
#ifdef DOSTORESTATE58
1598
711k
  case 58:
1599
711k
    sha1recompress_fast_58(ihvin, ihvout, me2, state);
1600
711k
    break;
1601
0
#endif
1602
#ifdef DOSTORESTATE59
1603
  case 59:
1604
    sha1recompress_fast_59(ihvin, ihvout, me2, state);
1605
    break;
1606
#endif
1607
#ifdef DOSTORESTATE60
1608
  case 60:
1609
    sha1recompress_fast_60(ihvin, ihvout, me2, state);
1610
    break;
1611
#endif
1612
#ifdef DOSTORESTATE61
1613
  case 61:
1614
    sha1recompress_fast_61(ihvin, ihvout, me2, state);
1615
    break;
1616
#endif
1617
#ifdef DOSTORESTATE62
1618
  case 62:
1619
    sha1recompress_fast_62(ihvin, ihvout, me2, state);
1620
    break;
1621
#endif
1622
#ifdef DOSTORESTATE63
1623
  case 63:
1624
    sha1recompress_fast_63(ihvin, ihvout, me2, state);
1625
    break;
1626
#endif
1627
#ifdef DOSTORESTATE64
1628
  case 64:
1629
    sha1recompress_fast_64(ihvin, ihvout, me2, state);
1630
    break;
1631
#endif
1632
0
#ifdef DOSTORESTATE65
1633
901k
  case 65:
1634
901k
    sha1recompress_fast_65(ihvin, ihvout, me2, state);
1635
901k
    break;
1636
0
#endif
1637
#ifdef DOSTORESTATE66
1638
  case 66:
1639
    sha1recompress_fast_66(ihvin, ihvout, me2, state);
1640
    break;
1641
#endif
1642
#ifdef DOSTORESTATE67
1643
  case 67:
1644
    sha1recompress_fast_67(ihvin, ihvout, me2, state);
1645
    break;
1646
#endif
1647
#ifdef DOSTORESTATE68
1648
  case 68:
1649
    sha1recompress_fast_68(ihvin, ihvout, me2, state);
1650
    break;
1651
#endif
1652
#ifdef DOSTORESTATE69
1653
  case 69:
1654
    sha1recompress_fast_69(ihvin, ihvout, me2, state);
1655
    break;
1656
#endif
1657
#ifdef DOSTORESTATE70
1658
  case 70:
1659
    sha1recompress_fast_70(ihvin, ihvout, me2, state);
1660
    break;
1661
#endif
1662
#ifdef DOSTORESTATE71
1663
  case 71:
1664
    sha1recompress_fast_71(ihvin, ihvout, me2, state);
1665
    break;
1666
#endif
1667
#ifdef DOSTORESTATE72
1668
  case 72:
1669
    sha1recompress_fast_72(ihvin, ihvout, me2, state);
1670
    break;
1671
#endif
1672
#ifdef DOSTORESTATE73
1673
  case 73:
1674
    sha1recompress_fast_73(ihvin, ihvout, me2, state);
1675
    break;
1676
#endif
1677
#ifdef DOSTORESTATE74
1678
  case 74:
1679
    sha1recompress_fast_74(ihvin, ihvout, me2, state);
1680
    break;
1681
#endif
1682
#ifdef DOSTORESTATE75
1683
  case 75:
1684
    sha1recompress_fast_75(ihvin, ihvout, me2, state);
1685
    break;
1686
#endif
1687
#ifdef DOSTORESTATE76
1688
  case 76:
1689
    sha1recompress_fast_76(ihvin, ihvout, me2, state);
1690
    break;
1691
#endif
1692
#ifdef DOSTORESTATE77
1693
  case 77:
1694
    sha1recompress_fast_77(ihvin, ihvout, me2, state);
1695
    break;
1696
#endif
1697
#ifdef DOSTORESTATE78
1698
  case 78:
1699
    sha1recompress_fast_78(ihvin, ihvout, me2, state);
1700
    break;
1701
#endif
1702
#ifdef DOSTORESTATE79
1703
  case 79:
1704
    sha1recompress_fast_79(ihvin, ihvout, me2, state);
1705
    break;
1706
#endif
1707
0
  default:
1708
0
    abort();
1709
1.61M
  }
1710
1711
1.61M
}
1712
1713
1714
1715
static void sha1_process(SHA1_CTX* ctx, const uint32_t block[16])
1716
30.0M
{
1717
30.0M
  unsigned i, j;
1718
30.0M
  uint32_t ubc_dv_mask[DVMASKSIZE] = { 0xFFFFFFFF };
1719
30.0M
  uint32_t ihvtmp[5];
1720
1721
30.0M
  ctx->ihv1[0] = ctx->ihv[0];
1722
30.0M
  ctx->ihv1[1] = ctx->ihv[1];
1723
30.0M
  ctx->ihv1[2] = ctx->ihv[2];
1724
30.0M
  ctx->ihv1[3] = ctx->ihv[3];
1725
30.0M
  ctx->ihv1[4] = ctx->ihv[4];
1726
1727
30.0M
  sha1_compression_states(ctx->ihv, block, ctx->m1, ctx->states);
1728
1729
30.0M
  if (ctx->detect_coll)
1730
30.0M
  {
1731
30.0M
    if (ctx->ubc_check)
1732
30.0M
    {
1733
30.0M
      ubc_check(ctx->m1, ubc_dv_mask);
1734
30.0M
    }
1735
1736
30.0M
    if (ubc_dv_mask[0] != 0)
1737
1.44M
    {
1738
47.8M
      for (i = 0; sha1_dvs[i].dvType != 0; ++i)
1739
46.3M
      {
1740
46.3M
        if (ubc_dv_mask[0] & ((uint32_t)(1) << sha1_dvs[i].maskb))
1741
1.61M
        {
1742
130M
          for (j = 0; j < 80; ++j)
1743
129M
            ctx->m2[j] = ctx->m1[j] ^ sha1_dvs[i].dm[j];
1744
1745
1.61M
          sha1_recompression_step(sha1_dvs[i].testt, ctx->ihv2, ihvtmp, ctx->m2, ctx->states[sha1_dvs[i].testt]);
1746
1747
          /* to verify SHA-1 collision detection code with collisions for reduced-step SHA-1 */
1748
1.61M
          if ((0 == ((ihvtmp[0] ^ ctx->ihv[0]) | (ihvtmp[1] ^ ctx->ihv[1]) | (ihvtmp[2] ^ ctx->ihv[2]) | (ihvtmp[3] ^ ctx->ihv[3]) | (ihvtmp[4] ^ ctx->ihv[4])))
1749
1.61M
            || (ctx->reduced_round_coll && 0==((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]))))
1750
0
          {
1751
0
            ctx->found_collision = 1;
1752
1753
0
            if (ctx->safe_hash)
1754
0
            {
1755
0
              sha1_compression_W(ctx->ihv, ctx->m1);
1756
0
              sha1_compression_W(ctx->ihv, ctx->m1);
1757
0
            }
1758
1759
0
            break;
1760
0
          }
1761
1.61M
        }
1762
46.3M
      }
1763
1.44M
    }
1764
30.0M
  }
1765
30.0M
}
1766
1767
void SHA1DCInit(SHA1_CTX* ctx)
1768
94.2k
{
1769
94.2k
  ctx->total = 0;
1770
94.2k
  ctx->ihv[0] = 0x67452301;
1771
94.2k
  ctx->ihv[1] = 0xEFCDAB89;
1772
94.2k
  ctx->ihv[2] = 0x98BADCFE;
1773
94.2k
  ctx->ihv[3] = 0x10325476;
1774
94.2k
  ctx->ihv[4] = 0xC3D2E1F0;
1775
94.2k
  ctx->found_collision = 0;
1776
94.2k
  ctx->safe_hash = SHA1DC_INIT_SAFE_HASH_DEFAULT;
1777
94.2k
  ctx->ubc_check = 1;
1778
94.2k
  ctx->detect_coll = 1;
1779
94.2k
  ctx->reduced_round_coll = 0;
1780
94.2k
  ctx->callback = NULL;
1781
94.2k
}
1782
1783
void SHA1DCSetSafeHash(SHA1_CTX* ctx, int safehash)
1784
0
{
1785
0
  if (safehash)
1786
0
    ctx->safe_hash = 1;
1787
0
  else
1788
0
    ctx->safe_hash = 0;
1789
0
}
1790
1791
1792
void SHA1DCSetUseUBC(SHA1_CTX* ctx, int ubc_check)
1793
0
{
1794
0
  if (ubc_check)
1795
0
    ctx->ubc_check = 1;
1796
0
  else
1797
0
    ctx->ubc_check = 0;
1798
0
}
1799
1800
void SHA1DCSetUseDetectColl(SHA1_CTX* ctx, int detect_coll)
1801
0
{
1802
0
  if (detect_coll)
1803
0
    ctx->detect_coll = 1;
1804
0
  else
1805
0
    ctx->detect_coll = 0;
1806
0
}
1807
1808
void SHA1DCSetDetectReducedRoundCollision(SHA1_CTX* ctx, int reduced_round_coll)
1809
0
{
1810
0
  if (reduced_round_coll)
1811
0
    ctx->reduced_round_coll = 1;
1812
0
  else
1813
0
    ctx->reduced_round_coll = 0;
1814
0
}
1815
1816
void SHA1DCSetCallback(SHA1_CTX* ctx, collision_block_callback callback)
1817
0
{
1818
0
  ctx->callback = callback;
1819
0
}
1820
1821
void SHA1DCUpdate(SHA1_CTX* ctx, const char* buf, size_t len)
1822
263k
{
1823
263k
  unsigned left, fill;
1824
1825
263k
  if (len == 0)
1826
0
    return;
1827
1828
263k
  left = ctx->total & 63;
1829
263k
  fill = 64 - left;
1830
1831
263k
  if (left && len >= fill)
1832
63.8k
  {
1833
63.8k
    ctx->total += fill;
1834
63.8k
    memcpy(ctx->buffer + left, buf, fill);
1835
63.8k
    sha1_process(ctx, (uint32_t*)(ctx->buffer));
1836
63.8k
    buf += fill;
1837
63.8k
    len -= fill;
1838
63.8k
    left = 0;
1839
63.8k
  }
1840
30.2M
  while (len >= 64)
1841
29.9M
  {
1842
29.9M
    ctx->total += 64;
1843
1844
29.9M
#if defined(SHA1DC_ALLOW_UNALIGNED_ACCESS)
1845
29.9M
    sha1_process(ctx, (uint32_t*)(buf));
1846
#else
1847
    memcpy(ctx->buffer, buf, 64);
1848
    sha1_process(ctx, (uint32_t*)(ctx->buffer));
1849
#endif /* defined(SHA1DC_ALLOW_UNALIGNED_ACCESS) */
1850
29.9M
    buf += 64;
1851
29.9M
    len -= 64;
1852
29.9M
  }
1853
263k
  if (len > 0)
1854
263k
  {
1855
263k
    ctx->total += len;
1856
263k
    memcpy(ctx->buffer + left, buf, len);
1857
263k
  }
1858
263k
}
1859
1860
static const unsigned char sha1_padding[64] =
1861
{
1862
  0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1863
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1864
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1865
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1866
};
1867
1868
int SHA1DCFinal(unsigned char output[20], SHA1_CTX *ctx)
1869
94.2k
{
1870
94.2k
  uint32_t last = ctx->total & 63;
1871
94.2k
  uint32_t padn = (last < 56) ? (56 - last) : (120 - last);
1872
94.2k
  uint64_t total;
1873
94.2k
  SHA1DCUpdate(ctx, (const char*)(sha1_padding), padn);
1874
1875
94.2k
  total = ctx->total - padn;
1876
94.2k
  total <<= 3;
1877
94.2k
  ctx->buffer[56] = (unsigned char)(total >> 56);
1878
94.2k
  ctx->buffer[57] = (unsigned char)(total >> 48);
1879
94.2k
  ctx->buffer[58] = (unsigned char)(total >> 40);
1880
94.2k
  ctx->buffer[59] = (unsigned char)(total >> 32);
1881
94.2k
  ctx->buffer[60] = (unsigned char)(total >> 24);
1882
94.2k
  ctx->buffer[61] = (unsigned char)(total >> 16);
1883
94.2k
  ctx->buffer[62] = (unsigned char)(total >> 8);
1884
94.2k
  ctx->buffer[63] = (unsigned char)(total);
1885
94.2k
  sha1_process(ctx, (uint32_t*)(ctx->buffer));
1886
94.2k
  output[0] = (unsigned char)(ctx->ihv[0] >> 24);
1887
94.2k
  output[1] = (unsigned char)(ctx->ihv[0] >> 16);
1888
94.2k
  output[2] = (unsigned char)(ctx->ihv[0] >> 8);
1889
94.2k
  output[3] = (unsigned char)(ctx->ihv[0]);
1890
94.2k
  output[4] = (unsigned char)(ctx->ihv[1] >> 24);
1891
94.2k
  output[5] = (unsigned char)(ctx->ihv[1] >> 16);
1892
94.2k
  output[6] = (unsigned char)(ctx->ihv[1] >> 8);
1893
94.2k
  output[7] = (unsigned char)(ctx->ihv[1]);
1894
94.2k
  output[8] = (unsigned char)(ctx->ihv[2] >> 24);
1895
94.2k
  output[9] = (unsigned char)(ctx->ihv[2] >> 16);
1896
94.2k
  output[10] = (unsigned char)(ctx->ihv[2] >> 8);
1897
94.2k
  output[11] = (unsigned char)(ctx->ihv[2]);
1898
94.2k
  output[12] = (unsigned char)(ctx->ihv[3] >> 24);
1899
94.2k
  output[13] = (unsigned char)(ctx->ihv[3] >> 16);
1900
94.2k
  output[14] = (unsigned char)(ctx->ihv[3] >> 8);
1901
94.2k
  output[15] = (unsigned char)(ctx->ihv[3]);
1902
94.2k
  output[16] = (unsigned char)(ctx->ihv[4] >> 24);
1903
94.2k
  output[17] = (unsigned char)(ctx->ihv[4] >> 16);
1904
94.2k
  output[18] = (unsigned char)(ctx->ihv[4] >> 8);
1905
94.2k
  output[19] = (unsigned char)(ctx->ihv[4]);
1906
94.2k
  return ctx->found_collision;
1907
94.2k
}
1908
1909
#ifdef SHA1DC_CUSTOM_TRAILING_INCLUDE_SHA1_C
1910
#include SHA1DC_CUSTOM_TRAILING_INCLUDE_SHA1_C
1911
#endif