summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/sha
diff options
context:
space:
mode:
authorryker <>1998-10-05 20:13:16 +0000
committerryker <>1998-10-05 20:13:16 +0000
commit9e43e2ac1373d5be5c6500c1bc3b1dd6ee9584b4 (patch)
tree51ff319f3510104698e541954d10ad98f9125f36 /src/lib/libcrypto/sha
parent9e77c62555877f9a64805c49d0dcd7dbfbb40f4e (diff)
downloadopenbsd-9e43e2ac1373d5be5c6500c1bc3b1dd6ee9584b4.tar.gz
openbsd-9e43e2ac1373d5be5c6500c1bc3b1dd6ee9584b4.tar.bz2
openbsd-9e43e2ac1373d5be5c6500c1bc3b1dd6ee9584b4.zip
Import of SSLeay-0.9.0b with RSA and IDEA stubbed + OpenBSD build
functionality for shared libs. Note that routines such as sslv2_init and friends that use RSA will not work due to lack of RSA in this library. Needs documentation and help from ports for easy upgrade to full functionality where legally possible.
Diffstat (limited to 'src/lib/libcrypto/sha')
-rw-r--r--src/lib/libcrypto/sha/Makefile.uni122
-rw-r--r--src/lib/libcrypto/sha/asm/s1-win32.asm1664
-rw-r--r--src/lib/libcrypto/sha/asm/sx86unix.cpp1948
-rw-r--r--src/lib/libcrypto/sha/sha_sgst.c246
4 files changed, 3980 insertions, 0 deletions
diff --git a/src/lib/libcrypto/sha/Makefile.uni b/src/lib/libcrypto/sha/Makefile.uni
new file mode 100644
index 0000000000..f3236755b2
--- /dev/null
+++ b/src/lib/libcrypto/sha/Makefile.uni
@@ -0,0 +1,122 @@
1# Targets
2# make - twidle the options yourself :-)
3# make cc - standard cc options
4# make gcc - standard gcc options
5# make x86-elf - linux-elf etc
6# make x86-out - linux-a.out, FreeBSD etc
7# make x86-solaris
8# make x86-bdsi
9
10DIR= sha
11TOP= .
12CC= gcc
13CFLAG= -O3 -fomit-frame-pointer
14
15CPP= $(CC) -E
16INCLUDES=
17INSTALLTOP=/usr/local/lib
18MAKE= make
19MAKEDEPEND= makedepend
20MAKEFILE= Makefile.uni
21AR= ar r
22
23SHA_ASM_OBJ=
24
25CFLAGS= $(INCLUDES) $(CFLAG)
26
27GENERAL=Makefile
28
29TEST1=shatest
30TEST2=sha1test
31APP1=sha
32APP2=sha1
33
34TEST=$(TEST1) $(TEST2)
35APPS=$(APP1) $(APP2)
36
37LIB=libsha.a
38LIBSRC=sha_dgst.c sha1dgst.c sha_one.c sha1_one.c
39LIBOBJ=sha_dgst.o sha1dgst.o sha_one.o sha1_one.o $(SHA_ASM_OBJ)
40
41SRC= $(LIBSRC)
42
43EXHEADER= sha.h
44HEADER= sha_locl.h $(EXHEADER)
45
46ALL= $(GENERAL) $(SRC) $(HEADER)
47
48all: $(LIB) $(TEST) $(APPS)
49
50$(LIB): $(LIBOBJ)
51 $(AR) $(LIB) $(LIBOBJ)
52 sh $(TOP)/ranlib.sh $(LIB)
53
54# elf
55asm/sx86-elf.o: asm/sx86unix.cpp
56 $(CPP) -DELF asm/sx86unix.cpp | as -o asm/sx86-elf.o
57
58# solaris
59asm/sx86-sol.o: asm/sx86unix.cpp
60 $(CC) -E -DSOL asm/sx86unix.cpp | sed 's/^#.*//' > asm/sx86-sol.s
61 as -o asm/sx86-sol.o asm/sx86-sol.s
62 rm -f asm/sx86-sol.s
63
64# a.out
65asm/sx86-out.o: asm/sx86unix.cpp
66 $(CPP) -DOUT asm/sx86unix.cpp | as -o asm/sx86-out.o
67
68# bsdi
69asm/sx86bsdi.o: asm/sx86unix.cpp
70 $(CPP) -DBSDI asm/sx86unix.cpp | as -o asm/sx86bsdi.o
71
72asm/sx86unix.cpp:
73 (cd asm; perl sha1-586.pl cpp >sx86unix.cpp)
74
75test: $(TEST)
76 ./$(TEST1)
77 ./$(TEST2)
78
79$(TEST1): $(TEST1).c $(LIB)
80 $(CC) -o $(TEST1) $(CFLAGS) $(TEST1).c $(LIB)
81
82$(TEST2): $(TEST2).c $(LIB)
83 $(CC) -o $(TEST2) $(CFLAGS) $(TEST2).c $(LIB)
84
85$(APP1): $(APP1).c $(LIB)
86 $(CC) -o $(APP1) $(CFLAGS) $(APP1).c $(LIB)
87
88$(APP2): $(APP2).c $(LIB)
89 $(CC) -o $(APP2) $(CFLAGS) $(APP2).c $(LIB)
90
91lint:
92 lint -DLINT $(INCLUDES) $(SRC)>fluff
93
94depend:
95 $(MAKEDEPEND) $(INCLUDES) $(PROGS) $(LIBSRC)
96
97dclean:
98 perl -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
99 mv -f Makefile.new $(MAKEFILE)
100
101clean:
102 /bin/rm -f $(LIB) $(TEST) $(APPS) *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
103
104cc:
105 $(MAKE) SHA_ASM_OBJ="" CC="cc" CFLAG="-O" all
106
107gcc:
108 $(MAKE) SHA_ASM_OBJ="" CC="gcc" CFLAGS="-O3 -fomit-frame-pointer" all
109
110x86-elf:
111 $(MAKE) SHA_ASM_OBJ="asm/sx86-elf.o" CFLAG="-DELF -DSHA1_ASM -DL_ENDIAN $(CFLAGS)" all
112
113x86-out:
114 $(MAKE) SHA_ASM_OBJ="asm/sx86-out.o" CFLAG="-DOUT -DSHA1_ASM -DL_ENDIAN $(CFLAGS)" all
115
116x86-solaris:
117 $(MAKE) SHA_ASM_OBJ="asm/sx86-sol.o" CFLAG="-DSOL -DSHA1_ASM -DL_ENDIAN $(CFLAGS)" all
118
119x86-bdsi:
120 $(MAKE) SHA_ASM_OBJ="asm/sx86-bdsi.o" CFLAG="-DBDSI -DSHA1_ASM -DL_ENDIAN $(CFLAGS)" all
121
122# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/src/lib/libcrypto/sha/asm/s1-win32.asm b/src/lib/libcrypto/sha/asm/s1-win32.asm
new file mode 100644
index 0000000000..61335666b9
--- /dev/null
+++ b/src/lib/libcrypto/sha/asm/s1-win32.asm
@@ -0,0 +1,1664 @@
1 ; Don't even think of reading this code
2 ; It was automatically generated by sha1-586.pl
3 ; Which is a perl program used to generate the x86 assember for
4 ; any of elf, a.out, BSDI,Win32, or Solaris
5 ; eric <eay@cryptsoft.com>
6 ;
7 TITLE sha1-586.asm
8 .486
9.model FLAT
10_TEXT SEGMENT
11PUBLIC _sha1_block_x86
12
13_sha1_block_x86 PROC NEAR
14 push esi
15 push ebp
16 mov eax, DWORD PTR 20[esp]
17 mov esi, DWORD PTR 16[esp]
18 add eax, esi
19 mov ebp, DWORD PTR 12[esp]
20 push ebx
21 sub eax, 64
22 push edi
23 mov ebx, DWORD PTR 4[ebp]
24 sub esp, 72
25 mov edx, DWORD PTR 12[ebp]
26 mov edi, DWORD PTR 16[ebp]
27 mov ecx, DWORD PTR 8[ebp]
28 mov DWORD PTR 68[esp],eax
29 ; First we need to setup the X array
30 mov eax, DWORD PTR [esi]
31L000start:
32 ; First, load the words onto the stack in network byte order
33 bswap eax
34 mov DWORD PTR [esp],eax
35 mov eax, DWORD PTR 4[esi]
36 bswap eax
37 mov DWORD PTR 4[esp],eax
38 mov eax, DWORD PTR 8[esi]
39 bswap eax
40 mov DWORD PTR 8[esp],eax
41 mov eax, DWORD PTR 12[esi]
42 bswap eax
43 mov DWORD PTR 12[esp],eax
44 mov eax, DWORD PTR 16[esi]
45 bswap eax
46 mov DWORD PTR 16[esp],eax
47 mov eax, DWORD PTR 20[esi]
48 bswap eax
49 mov DWORD PTR 20[esp],eax
50 mov eax, DWORD PTR 24[esi]
51 bswap eax
52 mov DWORD PTR 24[esp],eax
53 mov eax, DWORD PTR 28[esi]
54 bswap eax
55 mov DWORD PTR 28[esp],eax
56 mov eax, DWORD PTR 32[esi]
57 bswap eax
58 mov DWORD PTR 32[esp],eax
59 mov eax, DWORD PTR 36[esi]
60 bswap eax
61 mov DWORD PTR 36[esp],eax
62 mov eax, DWORD PTR 40[esi]
63 bswap eax
64 mov DWORD PTR 40[esp],eax
65 mov eax, DWORD PTR 44[esi]
66 bswap eax
67 mov DWORD PTR 44[esp],eax
68 mov eax, DWORD PTR 48[esi]
69 bswap eax
70 mov DWORD PTR 48[esp],eax
71 mov eax, DWORD PTR 52[esi]
72 bswap eax
73 mov DWORD PTR 52[esp],eax
74 mov eax, DWORD PTR 56[esi]
75 bswap eax
76 mov DWORD PTR 56[esp],eax
77 mov eax, DWORD PTR 60[esi]
78 bswap eax
79 mov DWORD PTR 60[esp],eax
80 ; We now have the X array on the stack
81 ; starting at sp-4
82 mov DWORD PTR 64[esp],esi
83 ;
84 ; Start processing
85 mov eax, DWORD PTR [ebp]
86 ; 00_15 0
87 mov esi, ecx
88 mov ebp, eax
89 xor esi, edx
90 rol ebp, 5
91 and esi, ebx
92 add ebp, edi
93 ror ebx, 1
94 mov edi, DWORD PTR [esp]
95 ror ebx, 1
96 xor esi, edx
97 lea ebp, DWORD PTR 1518500249[edi*1+ebp]
98 mov edi, ebx
99 add esi, ebp
100 xor edi, ecx
101 mov ebp, esi
102 and edi, eax
103 rol ebp, 5
104 add ebp, edx
105 mov edx, DWORD PTR 4[esp]
106 ror eax, 1
107 xor edi, ecx
108 ror eax, 1
109 lea ebp, DWORD PTR 1518500249[edx*1+ebp]
110 add edi, ebp
111 ; 00_15 2
112 mov edx, eax
113 mov ebp, edi
114 xor edx, ebx
115 rol ebp, 5
116 and edx, esi
117 add ebp, ecx
118 ror esi, 1
119 mov ecx, DWORD PTR 8[esp]
120 ror esi, 1
121 xor edx, ebx
122 lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
123 mov ecx, esi
124 add edx, ebp
125 xor ecx, eax
126 mov ebp, edx
127 and ecx, edi
128 rol ebp, 5
129 add ebp, ebx
130 mov ebx, DWORD PTR 12[esp]
131 ror edi, 1
132 xor ecx, eax
133 ror edi, 1
134 lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
135 add ecx, ebp
136 ; 00_15 4
137 mov ebx, edi
138 mov ebp, ecx
139 xor ebx, esi
140 rol ebp, 5
141 and ebx, edx
142 add ebp, eax
143 ror edx, 1
144 mov eax, DWORD PTR 16[esp]
145 ror edx, 1
146 xor ebx, esi
147 lea ebp, DWORD PTR 1518500249[eax*1+ebp]
148 mov eax, edx
149 add ebx, ebp
150 xor eax, edi
151 mov ebp, ebx
152 and eax, ecx
153 rol ebp, 5
154 add ebp, esi
155 mov esi, DWORD PTR 20[esp]
156 ror ecx, 1
157 xor eax, edi
158 ror ecx, 1
159 lea ebp, DWORD PTR 1518500249[esi*1+ebp]
160 add eax, ebp
161 ; 00_15 6
162 mov esi, ecx
163 mov ebp, eax
164 xor esi, edx
165 rol ebp, 5
166 and esi, ebx
167 add ebp, edi
168 ror ebx, 1
169 mov edi, DWORD PTR 24[esp]
170 ror ebx, 1
171 xor esi, edx
172 lea ebp, DWORD PTR 1518500249[edi*1+ebp]
173 mov edi, ebx
174 add esi, ebp
175 xor edi, ecx
176 mov ebp, esi
177 and edi, eax
178 rol ebp, 5
179 add ebp, edx
180 mov edx, DWORD PTR 28[esp]
181 ror eax, 1
182 xor edi, ecx
183 ror eax, 1
184 lea ebp, DWORD PTR 1518500249[edx*1+ebp]
185 add edi, ebp
186 ; 00_15 8
187 mov edx, eax
188 mov ebp, edi
189 xor edx, ebx
190 rol ebp, 5
191 and edx, esi
192 add ebp, ecx
193 ror esi, 1
194 mov ecx, DWORD PTR 32[esp]
195 ror esi, 1
196 xor edx, ebx
197 lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
198 mov ecx, esi
199 add edx, ebp
200 xor ecx, eax
201 mov ebp, edx
202 and ecx, edi
203 rol ebp, 5
204 add ebp, ebx
205 mov ebx, DWORD PTR 36[esp]
206 ror edi, 1
207 xor ecx, eax
208 ror edi, 1
209 lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
210 add ecx, ebp
211 ; 00_15 10
212 mov ebx, edi
213 mov ebp, ecx
214 xor ebx, esi
215 rol ebp, 5
216 and ebx, edx
217 add ebp, eax
218 ror edx, 1
219 mov eax, DWORD PTR 40[esp]
220 ror edx, 1
221 xor ebx, esi
222 lea ebp, DWORD PTR 1518500249[eax*1+ebp]
223 mov eax, edx
224 add ebx, ebp
225 xor eax, edi
226 mov ebp, ebx
227 and eax, ecx
228 rol ebp, 5
229 add ebp, esi
230 mov esi, DWORD PTR 44[esp]
231 ror ecx, 1
232 xor eax, edi
233 ror ecx, 1
234 lea ebp, DWORD PTR 1518500249[esi*1+ebp]
235 add eax, ebp
236 ; 00_15 12
237 mov esi, ecx
238 mov ebp, eax
239 xor esi, edx
240 rol ebp, 5
241 and esi, ebx
242 add ebp, edi
243 ror ebx, 1
244 mov edi, DWORD PTR 48[esp]
245 ror ebx, 1
246 xor esi, edx
247 lea ebp, DWORD PTR 1518500249[edi*1+ebp]
248 mov edi, ebx
249 add esi, ebp
250 xor edi, ecx
251 mov ebp, esi
252 and edi, eax
253 rol ebp, 5
254 add ebp, edx
255 mov edx, DWORD PTR 52[esp]
256 ror eax, 1
257 xor edi, ecx
258 ror eax, 1
259 lea ebp, DWORD PTR 1518500249[edx*1+ebp]
260 add edi, ebp
261 ; 00_15 14
262 mov edx, eax
263 mov ebp, edi
264 xor edx, ebx
265 rol ebp, 5
266 and edx, esi
267 add ebp, ecx
268 ror esi, 1
269 mov ecx, DWORD PTR 56[esp]
270 ror esi, 1
271 xor edx, ebx
272 lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
273 mov ecx, esi
274 add edx, ebp
275 xor ecx, eax
276 mov ebp, edx
277 and ecx, edi
278 rol ebp, 5
279 add ebp, ebx
280 mov ebx, DWORD PTR 60[esp]
281 ror edi, 1
282 xor ecx, eax
283 ror edi, 1
284 lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
285 add ecx, ebp
286 ; 16_19 16
287 nop
288 mov ebp, DWORD PTR [esp]
289 mov ebx, DWORD PTR 8[esp]
290 xor ebx, ebp
291 mov ebp, DWORD PTR 32[esp]
292 xor ebx, ebp
293 mov ebp, DWORD PTR 52[esp]
294 xor ebx, ebp
295 mov ebp, edi
296 rol ebx, 1
297 xor ebp, esi
298 mov DWORD PTR [esp],ebx
299 and ebp, edx
300 lea ebx, DWORD PTR 1518500249[eax*1+ebx]
301 xor ebp, esi
302 mov eax, ecx
303 add ebx, ebp
304 rol eax, 5
305 ror edx, 1
306 add ebx, eax
307 mov eax, DWORD PTR 4[esp]
308 mov ebp, DWORD PTR 12[esp]
309 xor eax, ebp
310 mov ebp, DWORD PTR 36[esp]
311 xor eax, ebp
312 mov ebp, DWORD PTR 56[esp]
313 ror edx, 1
314 xor eax, ebp
315 rol eax, 1
316 mov ebp, edx
317 xor ebp, edi
318 mov DWORD PTR 4[esp],eax
319 and ebp, ecx
320 lea eax, DWORD PTR 1518500249[esi*1+eax]
321 xor ebp, edi
322 mov esi, ebx
323 rol esi, 5
324 ror ecx, 1
325 add eax, esi
326 ror ecx, 1
327 add eax, ebp
328 ; 16_19 18
329 mov ebp, DWORD PTR 8[esp]
330 mov esi, DWORD PTR 16[esp]
331 xor esi, ebp
332 mov ebp, DWORD PTR 40[esp]
333 xor esi, ebp
334 mov ebp, DWORD PTR 60[esp]
335 xor esi, ebp
336 mov ebp, ecx
337 rol esi, 1
338 xor ebp, edx
339 mov DWORD PTR 8[esp],esi
340 and ebp, ebx
341 lea esi, DWORD PTR 1518500249[edi*1+esi]
342 xor ebp, edx
343 mov edi, eax
344 add esi, ebp
345 rol edi, 5
346 ror ebx, 1
347 add esi, edi
348 mov edi, DWORD PTR 12[esp]
349 mov ebp, DWORD PTR 20[esp]
350 xor edi, ebp
351 mov ebp, DWORD PTR 44[esp]
352 xor edi, ebp
353 mov ebp, DWORD PTR [esp]
354 ror ebx, 1
355 xor edi, ebp
356 rol edi, 1
357 mov ebp, ebx
358 xor ebp, ecx
359 mov DWORD PTR 12[esp],edi
360 and ebp, eax
361 lea edi, DWORD PTR 1518500249[edx*1+edi]
362 xor ebp, ecx
363 mov edx, esi
364 rol edx, 5
365 ror eax, 1
366 add edi, edx
367 ror eax, 1
368 add edi, ebp
369 ; 20_39 20
370 mov edx, DWORD PTR 16[esp]
371 mov ebp, DWORD PTR 24[esp]
372 xor edx, ebp
373 mov ebp, DWORD PTR 48[esp]
374 xor edx, ebp
375 mov ebp, DWORD PTR 4[esp]
376 xor edx, ebp
377 mov ebp, esi
378 rol edx, 1
379 xor ebp, eax
380 mov DWORD PTR 16[esp],edx
381 xor ebp, ebx
382 lea edx, DWORD PTR 1859775393[ecx*1+edx]
383 mov ecx, edi
384 rol ecx, 5
385 ror esi, 1
386 add ecx, ebp
387 ror esi, 1
388 add edx, ecx
389 ; 20_39 21
390 mov ecx, DWORD PTR 20[esp]
391 mov ebp, DWORD PTR 28[esp]
392 xor ecx, ebp
393 mov ebp, DWORD PTR 52[esp]
394 xor ecx, ebp
395 mov ebp, DWORD PTR 8[esp]
396 xor ecx, ebp
397 mov ebp, edi
398 rol ecx, 1
399 xor ebp, esi
400 mov DWORD PTR 20[esp],ecx
401 xor ebp, eax
402 lea ecx, DWORD PTR 1859775393[ebx*1+ecx]
403 mov ebx, edx
404 rol ebx, 5
405 ror edi, 1
406 add ebx, ebp
407 ror edi, 1
408 add ecx, ebx
409 ; 20_39 22
410 mov ebx, DWORD PTR 24[esp]
411 mov ebp, DWORD PTR 32[esp]
412 xor ebx, ebp
413 mov ebp, DWORD PTR 56[esp]
414 xor ebx, ebp
415 mov ebp, DWORD PTR 12[esp]
416 xor ebx, ebp
417 mov ebp, edx
418 rol ebx, 1
419 xor ebp, edi
420 mov DWORD PTR 24[esp],ebx
421 xor ebp, esi
422 lea ebx, DWORD PTR 1859775393[eax*1+ebx]
423 mov eax, ecx
424 rol eax, 5
425 ror edx, 1
426 add eax, ebp
427 ror edx, 1
428 add ebx, eax
429 ; 20_39 23
430 mov eax, DWORD PTR 28[esp]
431 mov ebp, DWORD PTR 36[esp]
432 xor eax, ebp
433 mov ebp, DWORD PTR 60[esp]
434 xor eax, ebp
435 mov ebp, DWORD PTR 16[esp]
436 xor eax, ebp
437 mov ebp, ecx
438 rol eax, 1
439 xor ebp, edx
440 mov DWORD PTR 28[esp],eax
441 xor ebp, edi
442 lea eax, DWORD PTR 1859775393[esi*1+eax]
443 mov esi, ebx
444 rol esi, 5
445 ror ecx, 1
446 add esi, ebp
447 ror ecx, 1
448 add eax, esi
449 ; 20_39 24
450 mov esi, DWORD PTR 32[esp]
451 mov ebp, DWORD PTR 40[esp]
452 xor esi, ebp
453 mov ebp, DWORD PTR [esp]
454 xor esi, ebp
455 mov ebp, DWORD PTR 20[esp]
456 xor esi, ebp
457 mov ebp, ebx
458 rol esi, 1
459 xor ebp, ecx
460 mov DWORD PTR 32[esp],esi
461 xor ebp, edx
462 lea esi, DWORD PTR 1859775393[edi*1+esi]
463 mov edi, eax
464 rol edi, 5
465 ror ebx, 1
466 add edi, ebp
467 ror ebx, 1
468 add esi, edi
469 ; 20_39 25
470 mov edi, DWORD PTR 36[esp]
471 mov ebp, DWORD PTR 44[esp]
472 xor edi, ebp
473 mov ebp, DWORD PTR 4[esp]
474 xor edi, ebp
475 mov ebp, DWORD PTR 24[esp]
476 xor edi, ebp
477 mov ebp, eax
478 rol edi, 1
479 xor ebp, ebx
480 mov DWORD PTR 36[esp],edi
481 xor ebp, ecx
482 lea edi, DWORD PTR 1859775393[edx*1+edi]
483 mov edx, esi
484 rol edx, 5
485 ror eax, 1
486 add edx, ebp
487 ror eax, 1
488 add edi, edx
489 ; 20_39 26
490 mov edx, DWORD PTR 40[esp]
491 mov ebp, DWORD PTR 48[esp]
492 xor edx, ebp
493 mov ebp, DWORD PTR 8[esp]
494 xor edx, ebp
495 mov ebp, DWORD PTR 28[esp]
496 xor edx, ebp
497 mov ebp, esi
498 rol edx, 1
499 xor ebp, eax
500 mov DWORD PTR 40[esp],edx
501 xor ebp, ebx
502 lea edx, DWORD PTR 1859775393[ecx*1+edx]
503 mov ecx, edi
504 rol ecx, 5
505 ror esi, 1
506 add ecx, ebp
507 ror esi, 1
508 add edx, ecx
509 ; 20_39 27
510 mov ecx, DWORD PTR 44[esp]
511 mov ebp, DWORD PTR 52[esp]
512 xor ecx, ebp
513 mov ebp, DWORD PTR 12[esp]
514 xor ecx, ebp
515 mov ebp, DWORD PTR 32[esp]
516 xor ecx, ebp
517 mov ebp, edi
518 rol ecx, 1
519 xor ebp, esi
520 mov DWORD PTR 44[esp],ecx
521 xor ebp, eax
522 lea ecx, DWORD PTR 1859775393[ebx*1+ecx]
523 mov ebx, edx
524 rol ebx, 5
525 ror edi, 1
526 add ebx, ebp
527 ror edi, 1
528 add ecx, ebx
529 ; 20_39 28
530 mov ebx, DWORD PTR 48[esp]
531 mov ebp, DWORD PTR 56[esp]
532 xor ebx, ebp
533 mov ebp, DWORD PTR 16[esp]
534 xor ebx, ebp
535 mov ebp, DWORD PTR 36[esp]
536 xor ebx, ebp
537 mov ebp, edx
538 rol ebx, 1
539 xor ebp, edi
540 mov DWORD PTR 48[esp],ebx
541 xor ebp, esi
542 lea ebx, DWORD PTR 1859775393[eax*1+ebx]
543 mov eax, ecx
544 rol eax, 5
545 ror edx, 1
546 add eax, ebp
547 ror edx, 1
548 add ebx, eax
549 ; 20_39 29
550 mov eax, DWORD PTR 52[esp]
551 mov ebp, DWORD PTR 60[esp]
552 xor eax, ebp
553 mov ebp, DWORD PTR 20[esp]
554 xor eax, ebp
555 mov ebp, DWORD PTR 40[esp]
556 xor eax, ebp
557 mov ebp, ecx
558 rol eax, 1
559 xor ebp, edx
560 mov DWORD PTR 52[esp],eax
561 xor ebp, edi
562 lea eax, DWORD PTR 1859775393[esi*1+eax]
563 mov esi, ebx
564 rol esi, 5
565 ror ecx, 1
566 add esi, ebp
567 ror ecx, 1
568 add eax, esi
569 ; 20_39 30
570 mov esi, DWORD PTR 56[esp]
571 mov ebp, DWORD PTR [esp]
572 xor esi, ebp
573 mov ebp, DWORD PTR 24[esp]
574 xor esi, ebp
575 mov ebp, DWORD PTR 44[esp]
576 xor esi, ebp
577 mov ebp, ebx
578 rol esi, 1
579 xor ebp, ecx
580 mov DWORD PTR 56[esp],esi
581 xor ebp, edx
582 lea esi, DWORD PTR 1859775393[edi*1+esi]
583 mov edi, eax
584 rol edi, 5
585 ror ebx, 1
586 add edi, ebp
587 ror ebx, 1
588 add esi, edi
589 ; 20_39 31
590 mov edi, DWORD PTR 60[esp]
591 mov ebp, DWORD PTR 4[esp]
592 xor edi, ebp
593 mov ebp, DWORD PTR 28[esp]
594 xor edi, ebp
595 mov ebp, DWORD PTR 48[esp]
596 xor edi, ebp
597 mov ebp, eax
598 rol edi, 1
599 xor ebp, ebx
600 mov DWORD PTR 60[esp],edi
601 xor ebp, ecx
602 lea edi, DWORD PTR 1859775393[edx*1+edi]
603 mov edx, esi
604 rol edx, 5
605 ror eax, 1
606 add edx, ebp
607 ror eax, 1
608 add edi, edx
609 ; 20_39 32
610 mov edx, DWORD PTR [esp]
611 mov ebp, DWORD PTR 8[esp]
612 xor edx, ebp
613 mov ebp, DWORD PTR 32[esp]
614 xor edx, ebp
615 mov ebp, DWORD PTR 52[esp]
616 xor edx, ebp
617 mov ebp, esi
618 rol edx, 1
619 xor ebp, eax
620 mov DWORD PTR [esp],edx
621 xor ebp, ebx
622 lea edx, DWORD PTR 1859775393[ecx*1+edx]
623 mov ecx, edi
624 rol ecx, 5
625 ror esi, 1
626 add ecx, ebp
627 ror esi, 1
628 add edx, ecx
629 ; 20_39 33
630 mov ecx, DWORD PTR 4[esp]
631 mov ebp, DWORD PTR 12[esp]
632 xor ecx, ebp
633 mov ebp, DWORD PTR 36[esp]
634 xor ecx, ebp
635 mov ebp, DWORD PTR 56[esp]
636 xor ecx, ebp
637 mov ebp, edi
638 rol ecx, 1
639 xor ebp, esi
640 mov DWORD PTR 4[esp],ecx
641 xor ebp, eax
642 lea ecx, DWORD PTR 1859775393[ebx*1+ecx]
643 mov ebx, edx
644 rol ebx, 5
645 ror edi, 1
646 add ebx, ebp
647 ror edi, 1
648 add ecx, ebx
649 ; 20_39 34
650 mov ebx, DWORD PTR 8[esp]
651 mov ebp, DWORD PTR 16[esp]
652 xor ebx, ebp
653 mov ebp, DWORD PTR 40[esp]
654 xor ebx, ebp
655 mov ebp, DWORD PTR 60[esp]
656 xor ebx, ebp
657 mov ebp, edx
658 rol ebx, 1
659 xor ebp, edi
660 mov DWORD PTR 8[esp],ebx
661 xor ebp, esi
662 lea ebx, DWORD PTR 1859775393[eax*1+ebx]
663 mov eax, ecx
664 rol eax, 5
665 ror edx, 1
666 add eax, ebp
667 ror edx, 1
668 add ebx, eax
669 ; 20_39 35
670 mov eax, DWORD PTR 12[esp]
671 mov ebp, DWORD PTR 20[esp]
672 xor eax, ebp
673 mov ebp, DWORD PTR 44[esp]
674 xor eax, ebp
675 mov ebp, DWORD PTR [esp]
676 xor eax, ebp
677 mov ebp, ecx
678 rol eax, 1
679 xor ebp, edx
680 mov DWORD PTR 12[esp],eax
681 xor ebp, edi
682 lea eax, DWORD PTR 1859775393[esi*1+eax]
683 mov esi, ebx
684 rol esi, 5
685 ror ecx, 1
686 add esi, ebp
687 ror ecx, 1
688 add eax, esi
689 ; 20_39 36
690 mov esi, DWORD PTR 16[esp]
691 mov ebp, DWORD PTR 24[esp]
692 xor esi, ebp
693 mov ebp, DWORD PTR 48[esp]
694 xor esi, ebp
695 mov ebp, DWORD PTR 4[esp]
696 xor esi, ebp
697 mov ebp, ebx
698 rol esi, 1
699 xor ebp, ecx
700 mov DWORD PTR 16[esp],esi
701 xor ebp, edx
702 lea esi, DWORD PTR 1859775393[edi*1+esi]
703 mov edi, eax
704 rol edi, 5
705 ror ebx, 1
706 add edi, ebp
707 ror ebx, 1
708 add esi, edi
709 ; 20_39 37
710 mov edi, DWORD PTR 20[esp]
711 mov ebp, DWORD PTR 28[esp]
712 xor edi, ebp
713 mov ebp, DWORD PTR 52[esp]
714 xor edi, ebp
715 mov ebp, DWORD PTR 8[esp]
716 xor edi, ebp
717 mov ebp, eax
718 rol edi, 1
719 xor ebp, ebx
720 mov DWORD PTR 20[esp],edi
721 xor ebp, ecx
722 lea edi, DWORD PTR 1859775393[edx*1+edi]
723 mov edx, esi
724 rol edx, 5
725 ror eax, 1
726 add edx, ebp
727 ror eax, 1
728 add edi, edx
729 ; 20_39 38
730 mov edx, DWORD PTR 24[esp]
731 mov ebp, DWORD PTR 32[esp]
732 xor edx, ebp
733 mov ebp, DWORD PTR 56[esp]
734 xor edx, ebp
735 mov ebp, DWORD PTR 12[esp]
736 xor edx, ebp
737 mov ebp, esi
738 rol edx, 1
739 xor ebp, eax
740 mov DWORD PTR 24[esp],edx
741 xor ebp, ebx
742 lea edx, DWORD PTR 1859775393[ecx*1+edx]
743 mov ecx, edi
744 rol ecx, 5
745 ror esi, 1
746 add ecx, ebp
747 ror esi, 1
748 add edx, ecx
749 ; 20_39 39
750 mov ecx, DWORD PTR 28[esp]
751 mov ebp, DWORD PTR 36[esp]
752 xor ecx, ebp
753 mov ebp, DWORD PTR 60[esp]
754 xor ecx, ebp
755 mov ebp, DWORD PTR 16[esp]
756 xor ecx, ebp
757 mov ebp, edi
758 rol ecx, 1
759 xor ebp, esi
760 mov DWORD PTR 28[esp],ecx
761 xor ebp, eax
762 lea ecx, DWORD PTR 1859775393[ebx*1+ecx]
763 mov ebx, edx
764 rol ebx, 5
765 ror edi, 1
766 add ebx, ebp
767 ror edi, 1
768 add ecx, ebx
769 ; 40_59 40
770 mov ebx, DWORD PTR 32[esp]
771 mov ebp, DWORD PTR 40[esp]
772 xor ebx, ebp
773 mov ebp, DWORD PTR [esp]
774 xor ebx, ebp
775 mov ebp, DWORD PTR 20[esp]
776 xor ebx, ebp
777 mov ebp, edx
778 rol ebx, 1
779 or ebp, edi
780 mov DWORD PTR 32[esp],ebx
781 and ebp, esi
782 lea ebx, DWORD PTR 2400959708[eax*1+ebx]
783 mov eax, edx
784 ror edx, 1
785 and eax, edi
786 or ebp, eax
787 mov eax, ecx
788 rol eax, 5
789 add ebp, eax
790 mov eax, DWORD PTR 36[esp]
791 add ebx, ebp
792 mov ebp, DWORD PTR 44[esp]
793 xor eax, ebp
794 mov ebp, DWORD PTR 4[esp]
795 xor eax, ebp
796 mov ebp, DWORD PTR 24[esp]
797 ror edx, 1
798 xor eax, ebp
799 rol eax, 1
800 mov ebp, ecx
801 mov DWORD PTR 36[esp],eax
802 or ebp, edx
803 lea eax, DWORD PTR 2400959708[esi*1+eax]
804 mov esi, ecx
805 and ebp, edi
806 and esi, edx
807 or ebp, esi
808 mov esi, ebx
809 rol esi, 5
810 ror ecx, 1
811 add ebp, esi
812 ror ecx, 1
813 add eax, ebp
814 ; 40_59 41
815 ; 40_59 42
816 mov esi, DWORD PTR 40[esp]
817 mov ebp, DWORD PTR 48[esp]
818 xor esi, ebp
819 mov ebp, DWORD PTR 8[esp]
820 xor esi, ebp
821 mov ebp, DWORD PTR 28[esp]
822 xor esi, ebp
823 mov ebp, ebx
824 rol esi, 1
825 or ebp, ecx
826 mov DWORD PTR 40[esp],esi
827 and ebp, edx
828 lea esi, DWORD PTR 2400959708[edi*1+esi]
829 mov edi, ebx
830 ror ebx, 1
831 and edi, ecx
832 or ebp, edi
833 mov edi, eax
834 rol edi, 5
835 add ebp, edi
836 mov edi, DWORD PTR 44[esp]
837 add esi, ebp
838 mov ebp, DWORD PTR 52[esp]
839 xor edi, ebp
840 mov ebp, DWORD PTR 12[esp]
841 xor edi, ebp
842 mov ebp, DWORD PTR 32[esp]
843 ror ebx, 1
844 xor edi, ebp
845 rol edi, 1
846 mov ebp, eax
847 mov DWORD PTR 44[esp],edi
848 or ebp, ebx
849 lea edi, DWORD PTR 2400959708[edx*1+edi]
850 mov edx, eax
851 and ebp, ecx
852 and edx, ebx
853 or ebp, edx
854 mov edx, esi
855 rol edx, 5
856 ror eax, 1
857 add ebp, edx
858 ror eax, 1
859 add edi, ebp
860 ; 40_59 43
861 ; 40_59 44
862 mov edx, DWORD PTR 48[esp]
863 mov ebp, DWORD PTR 56[esp]
864 xor edx, ebp
865 mov ebp, DWORD PTR 16[esp]
866 xor edx, ebp
867 mov ebp, DWORD PTR 36[esp]
868 xor edx, ebp
869 mov ebp, esi
870 rol edx, 1
871 or ebp, eax
872 mov DWORD PTR 48[esp],edx
873 and ebp, ebx
874 lea edx, DWORD PTR 2400959708[ecx*1+edx]
875 mov ecx, esi
876 ror esi, 1
877 and ecx, eax
878 or ebp, ecx
879 mov ecx, edi
880 rol ecx, 5
881 add ebp, ecx
882 mov ecx, DWORD PTR 52[esp]
883 add edx, ebp
884 mov ebp, DWORD PTR 60[esp]
885 xor ecx, ebp
886 mov ebp, DWORD PTR 20[esp]
887 xor ecx, ebp
888 mov ebp, DWORD PTR 40[esp]
889 ror esi, 1
890 xor ecx, ebp
891 rol ecx, 1
892 mov ebp, edi
893 mov DWORD PTR 52[esp],ecx
894 or ebp, esi
895 lea ecx, DWORD PTR 2400959708[ebx*1+ecx]
896 mov ebx, edi
897 and ebp, eax
898 and ebx, esi
899 or ebp, ebx
900 mov ebx, edx
901 rol ebx, 5
902 ror edi, 1
903 add ebp, ebx
904 ror edi, 1
905 add ecx, ebp
906 ; 40_59 45
907 ; 40_59 46
908 mov ebx, DWORD PTR 56[esp]
909 mov ebp, DWORD PTR [esp]
910 xor ebx, ebp
911 mov ebp, DWORD PTR 24[esp]
912 xor ebx, ebp
913 mov ebp, DWORD PTR 44[esp]
914 xor ebx, ebp
915 mov ebp, edx
916 rol ebx, 1
917 or ebp, edi
918 mov DWORD PTR 56[esp],ebx
919 and ebp, esi
920 lea ebx, DWORD PTR 2400959708[eax*1+ebx]
921 mov eax, edx
922 ror edx, 1
923 and eax, edi
924 or ebp, eax
925 mov eax, ecx
926 rol eax, 5
927 add ebp, eax
928 mov eax, DWORD PTR 60[esp]
929 add ebx, ebp
930 mov ebp, DWORD PTR 4[esp]
931 xor eax, ebp
932 mov ebp, DWORD PTR 28[esp]
933 xor eax, ebp
934 mov ebp, DWORD PTR 48[esp]
935 ror edx, 1
936 xor eax, ebp
937 rol eax, 1
938 mov ebp, ecx
939 mov DWORD PTR 60[esp],eax
940 or ebp, edx
941 lea eax, DWORD PTR 2400959708[esi*1+eax]
942 mov esi, ecx
943 and ebp, edi
944 and esi, edx
945 or ebp, esi
946 mov esi, ebx
947 rol esi, 5
948 ror ecx, 1
949 add ebp, esi
950 ror ecx, 1
951 add eax, ebp
952 ; 40_59 47
953 ; 40_59 48
954 mov esi, DWORD PTR [esp]
955 mov ebp, DWORD PTR 8[esp]
956 xor esi, ebp
957 mov ebp, DWORD PTR 32[esp]
958 xor esi, ebp
959 mov ebp, DWORD PTR 52[esp]
960 xor esi, ebp
961 mov ebp, ebx
962 rol esi, 1
963 or ebp, ecx
964 mov DWORD PTR [esp],esi
965 and ebp, edx
966 lea esi, DWORD PTR 2400959708[edi*1+esi]
967 mov edi, ebx
968 ror ebx, 1
969 and edi, ecx
970 or ebp, edi
971 mov edi, eax
972 rol edi, 5
973 add ebp, edi
974 mov edi, DWORD PTR 4[esp]
975 add esi, ebp
976 mov ebp, DWORD PTR 12[esp]
977 xor edi, ebp
978 mov ebp, DWORD PTR 36[esp]
979 xor edi, ebp
980 mov ebp, DWORD PTR 56[esp]
981 ror ebx, 1
982 xor edi, ebp
983 rol edi, 1
984 mov ebp, eax
985 mov DWORD PTR 4[esp],edi
986 or ebp, ebx
987 lea edi, DWORD PTR 2400959708[edx*1+edi]
988 mov edx, eax
989 and ebp, ecx
990 and edx, ebx
991 or ebp, edx
992 mov edx, esi
993 rol edx, 5
994 ror eax, 1
995 add ebp, edx
996 ror eax, 1
997 add edi, ebp
998 ; 40_59 49
999 ; 40_59 50
1000 mov edx, DWORD PTR 8[esp]
1001 mov ebp, DWORD PTR 16[esp]
1002 xor edx, ebp
1003 mov ebp, DWORD PTR 40[esp]
1004 xor edx, ebp
1005 mov ebp, DWORD PTR 60[esp]
1006 xor edx, ebp
1007 mov ebp, esi
1008 rol edx, 1
1009 or ebp, eax
1010 mov DWORD PTR 8[esp],edx
1011 and ebp, ebx
1012 lea edx, DWORD PTR 2400959708[ecx*1+edx]
1013 mov ecx, esi
1014 ror esi, 1
1015 and ecx, eax
1016 or ebp, ecx
1017 mov ecx, edi
1018 rol ecx, 5
1019 add ebp, ecx
1020 mov ecx, DWORD PTR 12[esp]
1021 add edx, ebp
1022 mov ebp, DWORD PTR 20[esp]
1023 xor ecx, ebp
1024 mov ebp, DWORD PTR 44[esp]
1025 xor ecx, ebp
1026 mov ebp, DWORD PTR [esp]
1027 ror esi, 1
1028 xor ecx, ebp
1029 rol ecx, 1
1030 mov ebp, edi
1031 mov DWORD PTR 12[esp],ecx
1032 or ebp, esi
1033 lea ecx, DWORD PTR 2400959708[ebx*1+ecx]
1034 mov ebx, edi
1035 and ebp, eax
1036 and ebx, esi
1037 or ebp, ebx
1038 mov ebx, edx
1039 rol ebx, 5
1040 ror edi, 1
1041 add ebp, ebx
1042 ror edi, 1
1043 add ecx, ebp
1044 ; 40_59 51
1045 ; 40_59 52
1046 mov ebx, DWORD PTR 16[esp]
1047 mov ebp, DWORD PTR 24[esp]
1048 xor ebx, ebp
1049 mov ebp, DWORD PTR 48[esp]
1050 xor ebx, ebp
1051 mov ebp, DWORD PTR 4[esp]
1052 xor ebx, ebp
1053 mov ebp, edx
1054 rol ebx, 1
1055 or ebp, edi
1056 mov DWORD PTR 16[esp],ebx
1057 and ebp, esi
1058 lea ebx, DWORD PTR 2400959708[eax*1+ebx]
1059 mov eax, edx
1060 ror edx, 1
1061 and eax, edi
1062 or ebp, eax
1063 mov eax, ecx
1064 rol eax, 5
1065 add ebp, eax
1066 mov eax, DWORD PTR 20[esp]
1067 add ebx, ebp
1068 mov ebp, DWORD PTR 28[esp]
1069 xor eax, ebp
1070 mov ebp, DWORD PTR 52[esp]
1071 xor eax, ebp
1072 mov ebp, DWORD PTR 8[esp]
1073 ror edx, 1
1074 xor eax, ebp
1075 rol eax, 1
1076 mov ebp, ecx
1077 mov DWORD PTR 20[esp],eax
1078 or ebp, edx
1079 lea eax, DWORD PTR 2400959708[esi*1+eax]
1080 mov esi, ecx
1081 and ebp, edi
1082 and esi, edx
1083 or ebp, esi
1084 mov esi, ebx
1085 rol esi, 5
1086 ror ecx, 1
1087 add ebp, esi
1088 ror ecx, 1
1089 add eax, ebp
1090 ; 40_59 53
1091 ; 40_59 54
1092 mov esi, DWORD PTR 24[esp]
1093 mov ebp, DWORD PTR 32[esp]
1094 xor esi, ebp
1095 mov ebp, DWORD PTR 56[esp]
1096 xor esi, ebp
1097 mov ebp, DWORD PTR 12[esp]
1098 xor esi, ebp
1099 mov ebp, ebx
1100 rol esi, 1
1101 or ebp, ecx
1102 mov DWORD PTR 24[esp],esi
1103 and ebp, edx
1104 lea esi, DWORD PTR 2400959708[edi*1+esi]
1105 mov edi, ebx
1106 ror ebx, 1
1107 and edi, ecx
1108 or ebp, edi
1109 mov edi, eax
1110 rol edi, 5
1111 add ebp, edi
1112 mov edi, DWORD PTR 28[esp]
1113 add esi, ebp
1114 mov ebp, DWORD PTR 36[esp]
1115 xor edi, ebp
1116 mov ebp, DWORD PTR 60[esp]
1117 xor edi, ebp
1118 mov ebp, DWORD PTR 16[esp]
1119 ror ebx, 1
1120 xor edi, ebp
1121 rol edi, 1
1122 mov ebp, eax
1123 mov DWORD PTR 28[esp],edi
1124 or ebp, ebx
1125 lea edi, DWORD PTR 2400959708[edx*1+edi]
1126 mov edx, eax
1127 and ebp, ecx
1128 and edx, ebx
1129 or ebp, edx
1130 mov edx, esi
1131 rol edx, 5
1132 ror eax, 1
1133 add ebp, edx
1134 ror eax, 1
1135 add edi, ebp
1136 ; 40_59 55
1137 ; 40_59 56
1138 mov edx, DWORD PTR 32[esp]
1139 mov ebp, DWORD PTR 40[esp]
1140 xor edx, ebp
1141 mov ebp, DWORD PTR [esp]
1142 xor edx, ebp
1143 mov ebp, DWORD PTR 20[esp]
1144 xor edx, ebp
1145 mov ebp, esi
1146 rol edx, 1
1147 or ebp, eax
1148 mov DWORD PTR 32[esp],edx
1149 and ebp, ebx
1150 lea edx, DWORD PTR 2400959708[ecx*1+edx]
1151 mov ecx, esi
1152 ror esi, 1
1153 and ecx, eax
1154 or ebp, ecx
1155 mov ecx, edi
1156 rol ecx, 5
1157 add ebp, ecx
1158 mov ecx, DWORD PTR 36[esp]
1159 add edx, ebp
1160 mov ebp, DWORD PTR 44[esp]
1161 xor ecx, ebp
1162 mov ebp, DWORD PTR 4[esp]
1163 xor ecx, ebp
1164 mov ebp, DWORD PTR 24[esp]
1165 ror esi, 1
1166 xor ecx, ebp
1167 rol ecx, 1
1168 mov ebp, edi
1169 mov DWORD PTR 36[esp],ecx
1170 or ebp, esi
1171 lea ecx, DWORD PTR 2400959708[ebx*1+ecx]
1172 mov ebx, edi
1173 and ebp, eax
1174 and ebx, esi
1175 or ebp, ebx
1176 mov ebx, edx
1177 rol ebx, 5
1178 ror edi, 1
1179 add ebp, ebx
1180 ror edi, 1
1181 add ecx, ebp
1182 ; 40_59 57
1183 ; 40_59 58
1184 mov ebx, DWORD PTR 40[esp]
1185 mov ebp, DWORD PTR 48[esp]
1186 xor ebx, ebp
1187 mov ebp, DWORD PTR 8[esp]
1188 xor ebx, ebp
1189 mov ebp, DWORD PTR 28[esp]
1190 xor ebx, ebp
1191 mov ebp, edx
1192 rol ebx, 1
1193 or ebp, edi
1194 mov DWORD PTR 40[esp],ebx
1195 and ebp, esi
1196 lea ebx, DWORD PTR 2400959708[eax*1+ebx]
1197 mov eax, edx
1198 ror edx, 1
1199 and eax, edi
1200 or ebp, eax
1201 mov eax, ecx
1202 rol eax, 5
1203 add ebp, eax
1204 mov eax, DWORD PTR 44[esp]
1205 add ebx, ebp
1206 mov ebp, DWORD PTR 52[esp]
1207 xor eax, ebp
1208 mov ebp, DWORD PTR 12[esp]
1209 xor eax, ebp
1210 mov ebp, DWORD PTR 32[esp]
1211 ror edx, 1
1212 xor eax, ebp
1213 rol eax, 1
1214 mov ebp, ecx
1215 mov DWORD PTR 44[esp],eax
1216 or ebp, edx
1217 lea eax, DWORD PTR 2400959708[esi*1+eax]
1218 mov esi, ecx
1219 and ebp, edi
1220 and esi, edx
1221 or ebp, esi
1222 mov esi, ebx
1223 rol esi, 5
1224 ror ecx, 1
1225 add ebp, esi
1226 ror ecx, 1
1227 add eax, ebp
1228 ; 40_59 59
1229 ; 20_39 60
1230 mov esi, DWORD PTR 48[esp]
1231 mov ebp, DWORD PTR 56[esp]
1232 xor esi, ebp
1233 mov ebp, DWORD PTR 16[esp]
1234 xor esi, ebp
1235 mov ebp, DWORD PTR 36[esp]
1236 xor esi, ebp
1237 mov ebp, ebx
1238 rol esi, 1
1239 xor ebp, ecx
1240 mov DWORD PTR 48[esp],esi
1241 xor ebp, edx
1242 lea esi, DWORD PTR 3395469782[edi*1+esi]
1243 mov edi, eax
1244 rol edi, 5
1245 ror ebx, 1
1246 add edi, ebp
1247 ror ebx, 1
1248 add esi, edi
1249 ; 20_39 61
1250 mov edi, DWORD PTR 52[esp]
1251 mov ebp, DWORD PTR 60[esp]
1252 xor edi, ebp
1253 mov ebp, DWORD PTR 20[esp]
1254 xor edi, ebp
1255 mov ebp, DWORD PTR 40[esp]
1256 xor edi, ebp
1257 mov ebp, eax
1258 rol edi, 1
1259 xor ebp, ebx
1260 mov DWORD PTR 52[esp],edi
1261 xor ebp, ecx
1262 lea edi, DWORD PTR 3395469782[edx*1+edi]
1263 mov edx, esi
1264 rol edx, 5
1265 ror eax, 1
1266 add edx, ebp
1267 ror eax, 1
1268 add edi, edx
1269 ; 20_39 62
1270 mov edx, DWORD PTR 56[esp]
1271 mov ebp, DWORD PTR [esp]
1272 xor edx, ebp
1273 mov ebp, DWORD PTR 24[esp]
1274 xor edx, ebp
1275 mov ebp, DWORD PTR 44[esp]
1276 xor edx, ebp
1277 mov ebp, esi
1278 rol edx, 1
1279 xor ebp, eax
1280 mov DWORD PTR 56[esp],edx
1281 xor ebp, ebx
1282 lea edx, DWORD PTR 3395469782[ecx*1+edx]
1283 mov ecx, edi
1284 rol ecx, 5
1285 ror esi, 1
1286 add ecx, ebp
1287 ror esi, 1
1288 add edx, ecx
1289 ; 20_39 63
1290 mov ecx, DWORD PTR 60[esp]
1291 mov ebp, DWORD PTR 4[esp]
1292 xor ecx, ebp
1293 mov ebp, DWORD PTR 28[esp]
1294 xor ecx, ebp
1295 mov ebp, DWORD PTR 48[esp]
1296 xor ecx, ebp
1297 mov ebp, edi
1298 rol ecx, 1
1299 xor ebp, esi
1300 mov DWORD PTR 60[esp],ecx
1301 xor ebp, eax
1302 lea ecx, DWORD PTR 3395469782[ebx*1+ecx]
1303 mov ebx, edx
1304 rol ebx, 5
1305 ror edi, 1
1306 add ebx, ebp
1307 ror edi, 1
1308 add ecx, ebx
1309 ; 20_39 64
1310 mov ebx, DWORD PTR [esp]
1311 mov ebp, DWORD PTR 8[esp]
1312 xor ebx, ebp
1313 mov ebp, DWORD PTR 32[esp]
1314 xor ebx, ebp
1315 mov ebp, DWORD PTR 52[esp]
1316 xor ebx, ebp
1317 mov ebp, edx
1318 rol ebx, 1
1319 xor ebp, edi
1320 mov DWORD PTR [esp],ebx
1321 xor ebp, esi
1322 lea ebx, DWORD PTR 3395469782[eax*1+ebx]
1323 mov eax, ecx
1324 rol eax, 5
1325 ror edx, 1
1326 add eax, ebp
1327 ror edx, 1
1328 add ebx, eax
1329 ; 20_39 65
1330 mov eax, DWORD PTR 4[esp]
1331 mov ebp, DWORD PTR 12[esp]
1332 xor eax, ebp
1333 mov ebp, DWORD PTR 36[esp]
1334 xor eax, ebp
1335 mov ebp, DWORD PTR 56[esp]
1336 xor eax, ebp
1337 mov ebp, ecx
1338 rol eax, 1
1339 xor ebp, edx
1340 mov DWORD PTR 4[esp],eax
1341 xor ebp, edi
1342 lea eax, DWORD PTR 3395469782[esi*1+eax]
1343 mov esi, ebx
1344 rol esi, 5
1345 ror ecx, 1
1346 add esi, ebp
1347 ror ecx, 1
1348 add eax, esi
1349 ; 20_39 66
1350 mov esi, DWORD PTR 8[esp]
1351 mov ebp, DWORD PTR 16[esp]
1352 xor esi, ebp
1353 mov ebp, DWORD PTR 40[esp]
1354 xor esi, ebp
1355 mov ebp, DWORD PTR 60[esp]
1356 xor esi, ebp
1357 mov ebp, ebx
1358 rol esi, 1
1359 xor ebp, ecx
1360 mov DWORD PTR 8[esp],esi
1361 xor ebp, edx
1362 lea esi, DWORD PTR 3395469782[edi*1+esi]
1363 mov edi, eax
1364 rol edi, 5
1365 ror ebx, 1
1366 add edi, ebp
1367 ror ebx, 1
1368 add esi, edi
1369 ; 20_39 67
1370 mov edi, DWORD PTR 12[esp]
1371 mov ebp, DWORD PTR 20[esp]
1372 xor edi, ebp
1373 mov ebp, DWORD PTR 44[esp]
1374 xor edi, ebp
1375 mov ebp, DWORD PTR [esp]
1376 xor edi, ebp
1377 mov ebp, eax
1378 rol edi, 1
1379 xor ebp, ebx
1380 mov DWORD PTR 12[esp],edi
1381 xor ebp, ecx
1382 lea edi, DWORD PTR 3395469782[edx*1+edi]
1383 mov edx, esi
1384 rol edx, 5
1385 ror eax, 1
1386 add edx, ebp
1387 ror eax, 1
1388 add edi, edx
1389 ; 20_39 68
1390 mov edx, DWORD PTR 16[esp]
1391 mov ebp, DWORD PTR 24[esp]
1392 xor edx, ebp
1393 mov ebp, DWORD PTR 48[esp]
1394 xor edx, ebp
1395 mov ebp, DWORD PTR 4[esp]
1396 xor edx, ebp
1397 mov ebp, esi
1398 rol edx, 1
1399 xor ebp, eax
1400 mov DWORD PTR 16[esp],edx
1401 xor ebp, ebx
1402 lea edx, DWORD PTR 3395469782[ecx*1+edx]
1403 mov ecx, edi
1404 rol ecx, 5
1405 ror esi, 1
1406 add ecx, ebp
1407 ror esi, 1
1408 add edx, ecx
1409 ; 20_39 69
1410 mov ecx, DWORD PTR 20[esp]
1411 mov ebp, DWORD PTR 28[esp]
1412 xor ecx, ebp
1413 mov ebp, DWORD PTR 52[esp]
1414 xor ecx, ebp
1415 mov ebp, DWORD PTR 8[esp]
1416 xor ecx, ebp
1417 mov ebp, edi
1418 rol ecx, 1
1419 xor ebp, esi
1420 mov DWORD PTR 20[esp],ecx
1421 xor ebp, eax
1422 lea ecx, DWORD PTR 3395469782[ebx*1+ecx]
1423 mov ebx, edx
1424 rol ebx, 5
1425 ror edi, 1
1426 add ebx, ebp
1427 ror edi, 1
1428 add ecx, ebx
1429 ; 20_39 70
1430 mov ebx, DWORD PTR 24[esp]
1431 mov ebp, DWORD PTR 32[esp]
1432 xor ebx, ebp
1433 mov ebp, DWORD PTR 56[esp]
1434 xor ebx, ebp
1435 mov ebp, DWORD PTR 12[esp]
1436 xor ebx, ebp
1437 mov ebp, edx
1438 rol ebx, 1
1439 xor ebp, edi
1440 mov DWORD PTR 24[esp],ebx
1441 xor ebp, esi
1442 lea ebx, DWORD PTR 3395469782[eax*1+ebx]
1443 mov eax, ecx
1444 rol eax, 5
1445 ror edx, 1
1446 add eax, ebp
1447 ror edx, 1
1448 add ebx, eax
1449 ; 20_39 71
1450 mov eax, DWORD PTR 28[esp]
1451 mov ebp, DWORD PTR 36[esp]
1452 xor eax, ebp
1453 mov ebp, DWORD PTR 60[esp]
1454 xor eax, ebp
1455 mov ebp, DWORD PTR 16[esp]
1456 xor eax, ebp
1457 mov ebp, ecx
1458 rol eax, 1
1459 xor ebp, edx
1460 mov DWORD PTR 28[esp],eax
1461 xor ebp, edi
1462 lea eax, DWORD PTR 3395469782[esi*1+eax]
1463 mov esi, ebx
1464 rol esi, 5
1465 ror ecx, 1
1466 add esi, ebp
1467 ror ecx, 1
1468 add eax, esi
1469 ; 20_39 72
1470 mov esi, DWORD PTR 32[esp]
1471 mov ebp, DWORD PTR 40[esp]
1472 xor esi, ebp
1473 mov ebp, DWORD PTR [esp]
1474 xor esi, ebp
1475 mov ebp, DWORD PTR 20[esp]
1476 xor esi, ebp
1477 mov ebp, ebx
1478 rol esi, 1
1479 xor ebp, ecx
1480 mov DWORD PTR 32[esp],esi
1481 xor ebp, edx
1482 lea esi, DWORD PTR 3395469782[edi*1+esi]
1483 mov edi, eax
1484 rol edi, 5
1485 ror ebx, 1
1486 add edi, ebp
1487 ror ebx, 1
1488 add esi, edi
1489 ; 20_39 73
1490 mov edi, DWORD PTR 36[esp]
1491 mov ebp, DWORD PTR 44[esp]
1492 xor edi, ebp
1493 mov ebp, DWORD PTR 4[esp]
1494 xor edi, ebp
1495 mov ebp, DWORD PTR 24[esp]
1496 xor edi, ebp
1497 mov ebp, eax
1498 rol edi, 1
1499 xor ebp, ebx
1500 mov DWORD PTR 36[esp],edi
1501 xor ebp, ecx
1502 lea edi, DWORD PTR 3395469782[edx*1+edi]
1503 mov edx, esi
1504 rol edx, 5
1505 ror eax, 1
1506 add edx, ebp
1507 ror eax, 1
1508 add edi, edx
1509 ; 20_39 74
1510 mov edx, DWORD PTR 40[esp]
1511 mov ebp, DWORD PTR 48[esp]
1512 xor edx, ebp
1513 mov ebp, DWORD PTR 8[esp]
1514 xor edx, ebp
1515 mov ebp, DWORD PTR 28[esp]
1516 xor edx, ebp
1517 mov ebp, esi
1518 rol edx, 1
1519 xor ebp, eax
1520 mov DWORD PTR 40[esp],edx
1521 xor ebp, ebx
1522 lea edx, DWORD PTR 3395469782[ecx*1+edx]
1523 mov ecx, edi
1524 rol ecx, 5
1525 ror esi, 1
1526 add ecx, ebp
1527 ror esi, 1
1528 add edx, ecx
1529 ; 20_39 75
1530 mov ecx, DWORD PTR 44[esp]
1531 mov ebp, DWORD PTR 52[esp]
1532 xor ecx, ebp
1533 mov ebp, DWORD PTR 12[esp]
1534 xor ecx, ebp
1535 mov ebp, DWORD PTR 32[esp]
1536 xor ecx, ebp
1537 mov ebp, edi
1538 rol ecx, 1
1539 xor ebp, esi
1540 mov DWORD PTR 44[esp],ecx
1541 xor ebp, eax
1542 lea ecx, DWORD PTR 3395469782[ebx*1+ecx]
1543 mov ebx, edx
1544 rol ebx, 5
1545 ror edi, 1
1546 add ebx, ebp
1547 ror edi, 1
1548 add ecx, ebx
1549 ; 20_39 76
1550 mov ebx, DWORD PTR 48[esp]
1551 mov ebp, DWORD PTR 56[esp]
1552 xor ebx, ebp
1553 mov ebp, DWORD PTR 16[esp]
1554 xor ebx, ebp
1555 mov ebp, DWORD PTR 36[esp]
1556 xor ebx, ebp
1557 mov ebp, edx
1558 rol ebx, 1
1559 xor ebp, edi
1560 mov DWORD PTR 48[esp],ebx
1561 xor ebp, esi
1562 lea ebx, DWORD PTR 3395469782[eax*1+ebx]
1563 mov eax, ecx
1564 rol eax, 5
1565 ror edx, 1
1566 add eax, ebp
1567 ror edx, 1
1568 add ebx, eax
1569 ; 20_39 77
1570 mov eax, DWORD PTR 52[esp]
1571 mov ebp, DWORD PTR 60[esp]
1572 xor eax, ebp
1573 mov ebp, DWORD PTR 20[esp]
1574 xor eax, ebp
1575 mov ebp, DWORD PTR 40[esp]
1576 xor eax, ebp
1577 mov ebp, ecx
1578 rol eax, 1
1579 xor ebp, edx
1580 mov DWORD PTR 52[esp],eax
1581 xor ebp, edi
1582 lea eax, DWORD PTR 3395469782[esi*1+eax]
1583 mov esi, ebx
1584 rol esi, 5
1585 ror ecx, 1
1586 add esi, ebp
1587 ror ecx, 1
1588 add eax, esi
1589 ; 20_39 78
1590 mov esi, DWORD PTR 56[esp]
1591 mov ebp, DWORD PTR [esp]
1592 xor esi, ebp
1593 mov ebp, DWORD PTR 24[esp]
1594 xor esi, ebp
1595 mov ebp, DWORD PTR 44[esp]
1596 xor esi, ebp
1597 mov ebp, ebx
1598 rol esi, 1
1599 xor ebp, ecx
1600 mov DWORD PTR 56[esp],esi
1601 xor ebp, edx
1602 lea esi, DWORD PTR 3395469782[edi*1+esi]
1603 mov edi, eax
1604 rol edi, 5
1605 ror ebx, 1
1606 add edi, ebp
1607 ror ebx, 1
1608 add esi, edi
1609 ; 20_39 79
1610 mov edi, DWORD PTR 60[esp]
1611 mov ebp, DWORD PTR 4[esp]
1612 xor edi, ebp
1613 mov ebp, DWORD PTR 28[esp]
1614 xor edi, ebp
1615 mov ebp, DWORD PTR 48[esp]
1616 xor edi, ebp
1617 mov ebp, eax
1618 rol edi, 1
1619 xor ebp, ebx
1620 mov DWORD PTR 60[esp],edi
1621 xor ebp, ecx
1622 lea edi, DWORD PTR 3395469782[edx*1+edi]
1623 mov edx, esi
1624 rol edx, 5
1625 add edx, ebp
1626 mov ebp, DWORD PTR 92[esp]
1627 ror eax, 1
1628 add edi, edx
1629 ror eax, 1
1630 ; End processing
1631 ;
1632 mov edx, DWORD PTR 12[ebp]
1633 add edx, ebx
1634 mov ebx, DWORD PTR 4[ebp]
1635 add ebx, esi
1636 mov esi, eax
1637 mov eax, DWORD PTR [ebp]
1638 mov DWORD PTR 12[ebp],edx
1639 add eax, edi
1640 mov edi, DWORD PTR 16[ebp]
1641 add edi, ecx
1642 mov ecx, DWORD PTR 8[ebp]
1643 add ecx, esi
1644 mov DWORD PTR [ebp],eax
1645 mov esi, DWORD PTR 64[esp]
1646 mov DWORD PTR 8[ebp],ecx
1647 add esi, 64
1648 mov eax, DWORD PTR 68[esp]
1649 mov DWORD PTR 16[ebp],edi
1650 cmp eax, esi
1651 mov DWORD PTR 4[ebp],ebx
1652 jl $L001end
1653 mov eax, DWORD PTR [esi]
1654 jmp L000start
1655$L001end:
1656 add esp, 72
1657 pop edi
1658 pop ebx
1659 pop ebp
1660 pop esi
1661 ret
1662_sha1_block_x86 ENDP
1663_TEXT ENDS
1664END
diff --git a/src/lib/libcrypto/sha/asm/sx86unix.cpp b/src/lib/libcrypto/sha/asm/sx86unix.cpp
new file mode 100644
index 0000000000..8366664a39
--- /dev/null
+++ b/src/lib/libcrypto/sha/asm/sx86unix.cpp
@@ -0,0 +1,1948 @@
1/* Run the C pre-processor over this file with one of the following defined
2 * ELF - elf object files,
3 * OUT - a.out object files,
4 * BSDI - BSDI style a.out object files
5 * SOL - Solaris style elf
6 */
7
8#define TYPE(a,b) .type a,b
9#define SIZE(a,b) .size a,b
10
11#if defined(OUT) || defined(BSDI)
12#define sha1_block_x86 _sha1_block_x86
13
14#endif
15
16#ifdef OUT
17#define OK 1
18#define ALIGN 4
19#endif
20
21#ifdef BSDI
22#define OK 1
23#define ALIGN 4
24#undef SIZE
25#undef TYPE
26#define SIZE(a,b)
27#define TYPE(a,b)
28#endif
29
30#if defined(ELF) || defined(SOL)
31#define OK 1
32#define ALIGN 16
33#endif
34
35#ifndef OK
36You need to define one of
37ELF - elf systems - linux-elf, NetBSD and DG-UX
38OUT - a.out systems - linux-a.out and FreeBSD
39SOL - solaris systems, which are elf with strange comment lines
40BSDI - a.out with a very primative version of as.
41#endif
42
43/* Let the Assembler begin :-) */
44 /* Don't even think of reading this code */
45 /* It was automatically generated by sha1-586.pl */
46 /* Which is a perl program used to generate the x86 assember for */
47 /* any of elf, a.out, BSDI,Win32, or Solaris */
48 /* eric <eay@cryptsoft.com> */
49
50 .file "sha1-586.s"
51 .version "01.01"
52gcc2_compiled.:
53.text
54 .align ALIGN
55.globl sha1_block_x86
56 TYPE(sha1_block_x86,@function)
57sha1_block_x86:
58 pushl %esi
59 pushl %ebp
60 movl 20(%esp), %eax
61 movl 16(%esp), %esi
62 addl %esi, %eax
63 movl 12(%esp), %ebp
64 pushl %ebx
65 subl $64, %eax
66 pushl %edi
67 movl 4(%ebp), %ebx
68 subl $72, %esp
69 movl 12(%ebp), %edx
70 movl 16(%ebp), %edi
71 movl 8(%ebp), %ecx
72 movl %eax, 68(%esp)
73 /* First we need to setup the X array */
74 movl (%esi), %eax
75.L000start:
76 /* First, load the words onto the stack in network byte order */
77.byte 15
78.byte 200 /* bswapl %eax */
79 movl %eax, (%esp)
80 movl 4(%esi), %eax
81.byte 15
82.byte 200 /* bswapl %eax */
83 movl %eax, 4(%esp)
84 movl 8(%esi), %eax
85.byte 15
86.byte 200 /* bswapl %eax */
87 movl %eax, 8(%esp)
88 movl 12(%esi), %eax
89.byte 15
90.byte 200 /* bswapl %eax */
91 movl %eax, 12(%esp)
92 movl 16(%esi), %eax
93.byte 15
94.byte 200 /* bswapl %eax */
95 movl %eax, 16(%esp)
96 movl 20(%esi), %eax
97.byte 15
98.byte 200 /* bswapl %eax */
99 movl %eax, 20(%esp)
100 movl 24(%esi), %eax
101.byte 15
102.byte 200 /* bswapl %eax */
103 movl %eax, 24(%esp)
104 movl 28(%esi), %eax
105.byte 15
106.byte 200 /* bswapl %eax */
107 movl %eax, 28(%esp)
108 movl 32(%esi), %eax
109.byte 15
110.byte 200 /* bswapl %eax */
111 movl %eax, 32(%esp)
112 movl 36(%esi), %eax
113.byte 15
114.byte 200 /* bswapl %eax */
115 movl %eax, 36(%esp)
116 movl 40(%esi), %eax
117.byte 15
118.byte 200 /* bswapl %eax */
119 movl %eax, 40(%esp)
120 movl 44(%esi), %eax
121.byte 15
122.byte 200 /* bswapl %eax */
123 movl %eax, 44(%esp)
124 movl 48(%esi), %eax
125.byte 15
126.byte 200 /* bswapl %eax */
127 movl %eax, 48(%esp)
128 movl 52(%esi), %eax
129.byte 15
130.byte 200 /* bswapl %eax */
131 movl %eax, 52(%esp)
132 movl 56(%esi), %eax
133.byte 15
134.byte 200 /* bswapl %eax */
135 movl %eax, 56(%esp)
136 movl 60(%esi), %eax
137.byte 15
138.byte 200 /* bswapl %eax */
139 movl %eax, 60(%esp)
140 /* We now have the X array on the stack */
141 /* starting at sp-4 */
142 movl %esi, 64(%esp)
143
144 /* Start processing */
145 movl (%ebp), %eax
146 /* 00_15 0 */
147 movl %ecx, %esi
148 movl %eax, %ebp
149 xorl %edx, %esi
150 roll $5, %ebp
151 andl %ebx, %esi
152 addl %edi, %ebp
153.byte 209
154.byte 203 /* rorl $1 %ebx */
155 movl (%esp), %edi
156.byte 209
157.byte 203 /* rorl $1 %ebx */
158 xorl %edx, %esi
159 leal 1518500249(%ebp,%edi,1),%ebp
160 movl %ebx, %edi
161 addl %ebp, %esi
162 xorl %ecx, %edi
163 movl %esi, %ebp
164 andl %eax, %edi
165 roll $5, %ebp
166 addl %edx, %ebp
167 movl 4(%esp), %edx
168.byte 209
169.byte 200 /* rorl $1 %eax */
170 xorl %ecx, %edi
171.byte 209
172.byte 200 /* rorl $1 %eax */
173 leal 1518500249(%ebp,%edx,1),%ebp
174 addl %ebp, %edi
175 /* 00_15 2 */
176 movl %eax, %edx
177 movl %edi, %ebp
178 xorl %ebx, %edx
179 roll $5, %ebp
180 andl %esi, %edx
181 addl %ecx, %ebp
182.byte 209
183.byte 206 /* rorl $1 %esi */
184 movl 8(%esp), %ecx
185.byte 209
186.byte 206 /* rorl $1 %esi */
187 xorl %ebx, %edx
188 leal 1518500249(%ebp,%ecx,1),%ebp
189 movl %esi, %ecx
190 addl %ebp, %edx
191 xorl %eax, %ecx
192 movl %edx, %ebp
193 andl %edi, %ecx
194 roll $5, %ebp
195 addl %ebx, %ebp
196 movl 12(%esp), %ebx
197.byte 209
198.byte 207 /* rorl $1 %edi */
199 xorl %eax, %ecx
200.byte 209
201.byte 207 /* rorl $1 %edi */
202 leal 1518500249(%ebp,%ebx,1),%ebp
203 addl %ebp, %ecx
204 /* 00_15 4 */
205 movl %edi, %ebx
206 movl %ecx, %ebp
207 xorl %esi, %ebx
208 roll $5, %ebp
209 andl %edx, %ebx
210 addl %eax, %ebp
211.byte 209
212.byte 202 /* rorl $1 %edx */
213 movl 16(%esp), %eax
214.byte 209
215.byte 202 /* rorl $1 %edx */
216 xorl %esi, %ebx
217 leal 1518500249(%ebp,%eax,1),%ebp
218 movl %edx, %eax
219 addl %ebp, %ebx
220 xorl %edi, %eax
221 movl %ebx, %ebp
222 andl %ecx, %eax
223 roll $5, %ebp
224 addl %esi, %ebp
225 movl 20(%esp), %esi
226.byte 209
227.byte 201 /* rorl $1 %ecx */
228 xorl %edi, %eax
229.byte 209
230.byte 201 /* rorl $1 %ecx */
231 leal 1518500249(%ebp,%esi,1),%ebp
232 addl %ebp, %eax
233 /* 00_15 6 */
234 movl %ecx, %esi
235 movl %eax, %ebp
236 xorl %edx, %esi
237 roll $5, %ebp
238 andl %ebx, %esi
239 addl %edi, %ebp
240.byte 209
241.byte 203 /* rorl $1 %ebx */
242 movl 24(%esp), %edi
243.byte 209
244.byte 203 /* rorl $1 %ebx */
245 xorl %edx, %esi
246 leal 1518500249(%ebp,%edi,1),%ebp
247 movl %ebx, %edi
248 addl %ebp, %esi
249 xorl %ecx, %edi
250 movl %esi, %ebp
251 andl %eax, %edi
252 roll $5, %ebp
253 addl %edx, %ebp
254 movl 28(%esp), %edx
255.byte 209
256.byte 200 /* rorl $1 %eax */
257 xorl %ecx, %edi
258.byte 209
259.byte 200 /* rorl $1 %eax */
260 leal 1518500249(%ebp,%edx,1),%ebp
261 addl %ebp, %edi
262 /* 00_15 8 */
263 movl %eax, %edx
264 movl %edi, %ebp
265 xorl %ebx, %edx
266 roll $5, %ebp
267 andl %esi, %edx
268 addl %ecx, %ebp
269.byte 209
270.byte 206 /* rorl $1 %esi */
271 movl 32(%esp), %ecx
272.byte 209
273.byte 206 /* rorl $1 %esi */
274 xorl %ebx, %edx
275 leal 1518500249(%ebp,%ecx,1),%ebp
276 movl %esi, %ecx
277 addl %ebp, %edx
278 xorl %eax, %ecx
279 movl %edx, %ebp
280 andl %edi, %ecx
281 roll $5, %ebp
282 addl %ebx, %ebp
283 movl 36(%esp), %ebx
284.byte 209
285.byte 207 /* rorl $1 %edi */
286 xorl %eax, %ecx
287.byte 209
288.byte 207 /* rorl $1 %edi */
289 leal 1518500249(%ebp,%ebx,1),%ebp
290 addl %ebp, %ecx
291 /* 00_15 10 */
292 movl %edi, %ebx
293 movl %ecx, %ebp
294 xorl %esi, %ebx
295 roll $5, %ebp
296 andl %edx, %ebx
297 addl %eax, %ebp
298.byte 209
299.byte 202 /* rorl $1 %edx */
300 movl 40(%esp), %eax
301.byte 209
302.byte 202 /* rorl $1 %edx */
303 xorl %esi, %ebx
304 leal 1518500249(%ebp,%eax,1),%ebp
305 movl %edx, %eax
306 addl %ebp, %ebx
307 xorl %edi, %eax
308 movl %ebx, %ebp
309 andl %ecx, %eax
310 roll $5, %ebp
311 addl %esi, %ebp
312 movl 44(%esp), %esi
313.byte 209
314.byte 201 /* rorl $1 %ecx */
315 xorl %edi, %eax
316.byte 209
317.byte 201 /* rorl $1 %ecx */
318 leal 1518500249(%ebp,%esi,1),%ebp
319 addl %ebp, %eax
320 /* 00_15 12 */
321 movl %ecx, %esi
322 movl %eax, %ebp
323 xorl %edx, %esi
324 roll $5, %ebp
325 andl %ebx, %esi
326 addl %edi, %ebp
327.byte 209
328.byte 203 /* rorl $1 %ebx */
329 movl 48(%esp), %edi
330.byte 209
331.byte 203 /* rorl $1 %ebx */
332 xorl %edx, %esi
333 leal 1518500249(%ebp,%edi,1),%ebp
334 movl %ebx, %edi
335 addl %ebp, %esi
336 xorl %ecx, %edi
337 movl %esi, %ebp
338 andl %eax, %edi
339 roll $5, %ebp
340 addl %edx, %ebp
341 movl 52(%esp), %edx
342.byte 209
343.byte 200 /* rorl $1 %eax */
344 xorl %ecx, %edi
345.byte 209
346.byte 200 /* rorl $1 %eax */
347 leal 1518500249(%ebp,%edx,1),%ebp
348 addl %ebp, %edi
349 /* 00_15 14 */
350 movl %eax, %edx
351 movl %edi, %ebp
352 xorl %ebx, %edx
353 roll $5, %ebp
354 andl %esi, %edx
355 addl %ecx, %ebp
356.byte 209
357.byte 206 /* rorl $1 %esi */
358 movl 56(%esp), %ecx
359.byte 209
360.byte 206 /* rorl $1 %esi */
361 xorl %ebx, %edx
362 leal 1518500249(%ebp,%ecx,1),%ebp
363 movl %esi, %ecx
364 addl %ebp, %edx
365 xorl %eax, %ecx
366 movl %edx, %ebp
367 andl %edi, %ecx
368 roll $5, %ebp
369 addl %ebx, %ebp
370 movl 60(%esp), %ebx
371.byte 209
372.byte 207 /* rorl $1 %edi */
373 xorl %eax, %ecx
374.byte 209
375.byte 207 /* rorl $1 %edi */
376 leal 1518500249(%ebp,%ebx,1),%ebp
377 addl %ebp, %ecx
378 /* 16_19 16 */
379 nop
380 movl (%esp), %ebp
381 movl 8(%esp), %ebx
382 xorl %ebp, %ebx
383 movl 32(%esp), %ebp
384 xorl %ebp, %ebx
385 movl 52(%esp), %ebp
386 xorl %ebp, %ebx
387 movl %edi, %ebp
388.byte 209
389.byte 195 /* roll $1 %ebx */
390 xorl %esi, %ebp
391 movl %ebx, (%esp)
392 andl %edx, %ebp
393 leal 1518500249(%ebx,%eax,1),%ebx
394 xorl %esi, %ebp
395 movl %ecx, %eax
396 addl %ebp, %ebx
397 roll $5, %eax
398.byte 209
399.byte 202 /* rorl $1 %edx */
400 addl %eax, %ebx
401 movl 4(%esp), %eax
402 movl 12(%esp), %ebp
403 xorl %ebp, %eax
404 movl 36(%esp), %ebp
405 xorl %ebp, %eax
406 movl 56(%esp), %ebp
407.byte 209
408.byte 202 /* rorl $1 %edx */
409 xorl %ebp, %eax
410.byte 209
411.byte 192 /* roll $1 %eax */
412 movl %edx, %ebp
413 xorl %edi, %ebp
414 movl %eax, 4(%esp)
415 andl %ecx, %ebp
416 leal 1518500249(%eax,%esi,1),%eax
417 xorl %edi, %ebp
418 movl %ebx, %esi
419 roll $5, %esi
420.byte 209
421.byte 201 /* rorl $1 %ecx */
422 addl %esi, %eax
423.byte 209
424.byte 201 /* rorl $1 %ecx */
425 addl %ebp, %eax
426 /* 16_19 18 */
427 movl 8(%esp), %ebp
428 movl 16(%esp), %esi
429 xorl %ebp, %esi
430 movl 40(%esp), %ebp
431 xorl %ebp, %esi
432 movl 60(%esp), %ebp
433 xorl %ebp, %esi
434 movl %ecx, %ebp
435.byte 209
436.byte 198 /* roll $1 %esi */
437 xorl %edx, %ebp
438 movl %esi, 8(%esp)
439 andl %ebx, %ebp
440 leal 1518500249(%esi,%edi,1),%esi
441 xorl %edx, %ebp
442 movl %eax, %edi
443 addl %ebp, %esi
444 roll $5, %edi
445.byte 209
446.byte 203 /* rorl $1 %ebx */
447 addl %edi, %esi
448 movl 12(%esp), %edi
449 movl 20(%esp), %ebp
450 xorl %ebp, %edi
451 movl 44(%esp), %ebp
452 xorl %ebp, %edi
453 movl (%esp), %ebp
454.byte 209
455.byte 203 /* rorl $1 %ebx */
456 xorl %ebp, %edi
457.byte 209
458.byte 199 /* roll $1 %edi */
459 movl %ebx, %ebp
460 xorl %ecx, %ebp
461 movl %edi, 12(%esp)
462 andl %eax, %ebp
463 leal 1518500249(%edi,%edx,1),%edi
464 xorl %ecx, %ebp
465 movl %esi, %edx
466 roll $5, %edx
467.byte 209
468.byte 200 /* rorl $1 %eax */
469 addl %edx, %edi
470.byte 209
471.byte 200 /* rorl $1 %eax */
472 addl %ebp, %edi
473 /* 20_39 20 */
474 movl 16(%esp), %edx
475 movl 24(%esp), %ebp
476 xorl %ebp, %edx
477 movl 48(%esp), %ebp
478 xorl %ebp, %edx
479 movl 4(%esp), %ebp
480 xorl %ebp, %edx
481 movl %esi, %ebp
482.byte 209
483.byte 194 /* roll $1 %edx */
484 xorl %eax, %ebp
485 movl %edx, 16(%esp)
486 xorl %ebx, %ebp
487 leal 1859775393(%edx,%ecx,1),%edx
488 movl %edi, %ecx
489 roll $5, %ecx
490.byte 209
491.byte 206 /* rorl $1 %esi */
492 addl %ebp, %ecx
493.byte 209
494.byte 206 /* rorl $1 %esi */
495 addl %ecx, %edx
496 /* 20_39 21 */
497 movl 20(%esp), %ecx
498 movl 28(%esp), %ebp
499 xorl %ebp, %ecx
500 movl 52(%esp), %ebp
501 xorl %ebp, %ecx
502 movl 8(%esp), %ebp
503 xorl %ebp, %ecx
504 movl %edi, %ebp
505.byte 209
506.byte 193 /* roll $1 %ecx */
507 xorl %esi, %ebp
508 movl %ecx, 20(%esp)
509 xorl %eax, %ebp
510 leal 1859775393(%ecx,%ebx,1),%ecx
511 movl %edx, %ebx
512 roll $5, %ebx
513.byte 209
514.byte 207 /* rorl $1 %edi */
515 addl %ebp, %ebx
516.byte 209
517.byte 207 /* rorl $1 %edi */
518 addl %ebx, %ecx
519 /* 20_39 22 */
520 movl 24(%esp), %ebx
521 movl 32(%esp), %ebp
522 xorl %ebp, %ebx
523 movl 56(%esp), %ebp
524 xorl %ebp, %ebx
525 movl 12(%esp), %ebp
526 xorl %ebp, %ebx
527 movl %edx, %ebp
528.byte 209
529.byte 195 /* roll $1 %ebx */
530 xorl %edi, %ebp
531 movl %ebx, 24(%esp)
532 xorl %esi, %ebp
533 leal 1859775393(%ebx,%eax,1),%ebx
534 movl %ecx, %eax
535 roll $5, %eax
536.byte 209
537.byte 202 /* rorl $1 %edx */
538 addl %ebp, %eax
539.byte 209
540.byte 202 /* rorl $1 %edx */
541 addl %eax, %ebx
542 /* 20_39 23 */
543 movl 28(%esp), %eax
544 movl 36(%esp), %ebp
545 xorl %ebp, %eax
546 movl 60(%esp), %ebp
547 xorl %ebp, %eax
548 movl 16(%esp), %ebp
549 xorl %ebp, %eax
550 movl %ecx, %ebp
551.byte 209
552.byte 192 /* roll $1 %eax */
553 xorl %edx, %ebp
554 movl %eax, 28(%esp)
555 xorl %edi, %ebp
556 leal 1859775393(%eax,%esi,1),%eax
557 movl %ebx, %esi
558 roll $5, %esi
559.byte 209
560.byte 201 /* rorl $1 %ecx */
561 addl %ebp, %esi
562.byte 209
563.byte 201 /* rorl $1 %ecx */
564 addl %esi, %eax
565 /* 20_39 24 */
566 movl 32(%esp), %esi
567 movl 40(%esp), %ebp
568 xorl %ebp, %esi
569 movl (%esp), %ebp
570 xorl %ebp, %esi
571 movl 20(%esp), %ebp
572 xorl %ebp, %esi
573 movl %ebx, %ebp
574.byte 209
575.byte 198 /* roll $1 %esi */
576 xorl %ecx, %ebp
577 movl %esi, 32(%esp)
578 xorl %edx, %ebp
579 leal 1859775393(%esi,%edi,1),%esi
580 movl %eax, %edi
581 roll $5, %edi
582.byte 209
583.byte 203 /* rorl $1 %ebx */
584 addl %ebp, %edi
585.byte 209
586.byte 203 /* rorl $1 %ebx */
587 addl %edi, %esi
588 /* 20_39 25 */
589 movl 36(%esp), %edi
590 movl 44(%esp), %ebp
591 xorl %ebp, %edi
592 movl 4(%esp), %ebp
593 xorl %ebp, %edi
594 movl 24(%esp), %ebp
595 xorl %ebp, %edi
596 movl %eax, %ebp
597.byte 209
598.byte 199 /* roll $1 %edi */
599 xorl %ebx, %ebp
600 movl %edi, 36(%esp)
601 xorl %ecx, %ebp
602 leal 1859775393(%edi,%edx,1),%edi
603 movl %esi, %edx
604 roll $5, %edx
605.byte 209
606.byte 200 /* rorl $1 %eax */
607 addl %ebp, %edx
608.byte 209
609.byte 200 /* rorl $1 %eax */
610 addl %edx, %edi
611 /* 20_39 26 */
612 movl 40(%esp), %edx
613 movl 48(%esp), %ebp
614 xorl %ebp, %edx
615 movl 8(%esp), %ebp
616 xorl %ebp, %edx
617 movl 28(%esp), %ebp
618 xorl %ebp, %edx
619 movl %esi, %ebp
620.byte 209
621.byte 194 /* roll $1 %edx */
622 xorl %eax, %ebp
623 movl %edx, 40(%esp)
624 xorl %ebx, %ebp
625 leal 1859775393(%edx,%ecx,1),%edx
626 movl %edi, %ecx
627 roll $5, %ecx
628.byte 209
629.byte 206 /* rorl $1 %esi */
630 addl %ebp, %ecx
631.byte 209
632.byte 206 /* rorl $1 %esi */
633 addl %ecx, %edx
634 /* 20_39 27 */
635 movl 44(%esp), %ecx
636 movl 52(%esp), %ebp
637 xorl %ebp, %ecx
638 movl 12(%esp), %ebp
639 xorl %ebp, %ecx
640 movl 32(%esp), %ebp
641 xorl %ebp, %ecx
642 movl %edi, %ebp
643.byte 209
644.byte 193 /* roll $1 %ecx */
645 xorl %esi, %ebp
646 movl %ecx, 44(%esp)
647 xorl %eax, %ebp
648 leal 1859775393(%ecx,%ebx,1),%ecx
649 movl %edx, %ebx
650 roll $5, %ebx
651.byte 209
652.byte 207 /* rorl $1 %edi */
653 addl %ebp, %ebx
654.byte 209
655.byte 207 /* rorl $1 %edi */
656 addl %ebx, %ecx
657 /* 20_39 28 */
658 movl 48(%esp), %ebx
659 movl 56(%esp), %ebp
660 xorl %ebp, %ebx
661 movl 16(%esp), %ebp
662 xorl %ebp, %ebx
663 movl 36(%esp), %ebp
664 xorl %ebp, %ebx
665 movl %edx, %ebp
666.byte 209
667.byte 195 /* roll $1 %ebx */
668 xorl %edi, %ebp
669 movl %ebx, 48(%esp)
670 xorl %esi, %ebp
671 leal 1859775393(%ebx,%eax,1),%ebx
672 movl %ecx, %eax
673 roll $5, %eax
674.byte 209
675.byte 202 /* rorl $1 %edx */
676 addl %ebp, %eax
677.byte 209
678.byte 202 /* rorl $1 %edx */
679 addl %eax, %ebx
680 /* 20_39 29 */
681 movl 52(%esp), %eax
682 movl 60(%esp), %ebp
683 xorl %ebp, %eax
684 movl 20(%esp), %ebp
685 xorl %ebp, %eax
686 movl 40(%esp), %ebp
687 xorl %ebp, %eax
688 movl %ecx, %ebp
689.byte 209
690.byte 192 /* roll $1 %eax */
691 xorl %edx, %ebp
692 movl %eax, 52(%esp)
693 xorl %edi, %ebp
694 leal 1859775393(%eax,%esi,1),%eax
695 movl %ebx, %esi
696 roll $5, %esi
697.byte 209
698.byte 201 /* rorl $1 %ecx */
699 addl %ebp, %esi
700.byte 209
701.byte 201 /* rorl $1 %ecx */
702 addl %esi, %eax
703 /* 20_39 30 */
704 movl 56(%esp), %esi
705 movl (%esp), %ebp
706 xorl %ebp, %esi
707 movl 24(%esp), %ebp
708 xorl %ebp, %esi
709 movl 44(%esp), %ebp
710 xorl %ebp, %esi
711 movl %ebx, %ebp
712.byte 209
713.byte 198 /* roll $1 %esi */
714 xorl %ecx, %ebp
715 movl %esi, 56(%esp)
716 xorl %edx, %ebp
717 leal 1859775393(%esi,%edi,1),%esi
718 movl %eax, %edi
719 roll $5, %edi
720.byte 209
721.byte 203 /* rorl $1 %ebx */
722 addl %ebp, %edi
723.byte 209
724.byte 203 /* rorl $1 %ebx */
725 addl %edi, %esi
726 /* 20_39 31 */
727 movl 60(%esp), %edi
728 movl 4(%esp), %ebp
729 xorl %ebp, %edi
730 movl 28(%esp), %ebp
731 xorl %ebp, %edi
732 movl 48(%esp), %ebp
733 xorl %ebp, %edi
734 movl %eax, %ebp
735.byte 209
736.byte 199 /* roll $1 %edi */
737 xorl %ebx, %ebp
738 movl %edi, 60(%esp)
739 xorl %ecx, %ebp
740 leal 1859775393(%edi,%edx,1),%edi
741 movl %esi, %edx
742 roll $5, %edx
743.byte 209
744.byte 200 /* rorl $1 %eax */
745 addl %ebp, %edx
746.byte 209
747.byte 200 /* rorl $1 %eax */
748 addl %edx, %edi
749 /* 20_39 32 */
750 movl (%esp), %edx
751 movl 8(%esp), %ebp
752 xorl %ebp, %edx
753 movl 32(%esp), %ebp
754 xorl %ebp, %edx
755 movl 52(%esp), %ebp
756 xorl %ebp, %edx
757 movl %esi, %ebp
758.byte 209
759.byte 194 /* roll $1 %edx */
760 xorl %eax, %ebp
761 movl %edx, (%esp)
762 xorl %ebx, %ebp
763 leal 1859775393(%edx,%ecx,1),%edx
764 movl %edi, %ecx
765 roll $5, %ecx
766.byte 209
767.byte 206 /* rorl $1 %esi */
768 addl %ebp, %ecx
769.byte 209
770.byte 206 /* rorl $1 %esi */
771 addl %ecx, %edx
772 /* 20_39 33 */
773 movl 4(%esp), %ecx
774 movl 12(%esp), %ebp
775 xorl %ebp, %ecx
776 movl 36(%esp), %ebp
777 xorl %ebp, %ecx
778 movl 56(%esp), %ebp
779 xorl %ebp, %ecx
780 movl %edi, %ebp
781.byte 209
782.byte 193 /* roll $1 %ecx */
783 xorl %esi, %ebp
784 movl %ecx, 4(%esp)
785 xorl %eax, %ebp
786 leal 1859775393(%ecx,%ebx,1),%ecx
787 movl %edx, %ebx
788 roll $5, %ebx
789.byte 209
790.byte 207 /* rorl $1 %edi */
791 addl %ebp, %ebx
792.byte 209
793.byte 207 /* rorl $1 %edi */
794 addl %ebx, %ecx
795 /* 20_39 34 */
796 movl 8(%esp), %ebx
797 movl 16(%esp), %ebp
798 xorl %ebp, %ebx
799 movl 40(%esp), %ebp
800 xorl %ebp, %ebx
801 movl 60(%esp), %ebp
802 xorl %ebp, %ebx
803 movl %edx, %ebp
804.byte 209
805.byte 195 /* roll $1 %ebx */
806 xorl %edi, %ebp
807 movl %ebx, 8(%esp)
808 xorl %esi, %ebp
809 leal 1859775393(%ebx,%eax,1),%ebx
810 movl %ecx, %eax
811 roll $5, %eax
812.byte 209
813.byte 202 /* rorl $1 %edx */
814 addl %ebp, %eax
815.byte 209
816.byte 202 /* rorl $1 %edx */
817 addl %eax, %ebx
818 /* 20_39 35 */
819 movl 12(%esp), %eax
820 movl 20(%esp), %ebp
821 xorl %ebp, %eax
822 movl 44(%esp), %ebp
823 xorl %ebp, %eax
824 movl (%esp), %ebp
825 xorl %ebp, %eax
826 movl %ecx, %ebp
827.byte 209
828.byte 192 /* roll $1 %eax */
829 xorl %edx, %ebp
830 movl %eax, 12(%esp)
831 xorl %edi, %ebp
832 leal 1859775393(%eax,%esi,1),%eax
833 movl %ebx, %esi
834 roll $5, %esi
835.byte 209
836.byte 201 /* rorl $1 %ecx */
837 addl %ebp, %esi
838.byte 209
839.byte 201 /* rorl $1 %ecx */
840 addl %esi, %eax
841 /* 20_39 36 */
842 movl 16(%esp), %esi
843 movl 24(%esp), %ebp
844 xorl %ebp, %esi
845 movl 48(%esp), %ebp
846 xorl %ebp, %esi
847 movl 4(%esp), %ebp
848 xorl %ebp, %esi
849 movl %ebx, %ebp
850.byte 209
851.byte 198 /* roll $1 %esi */
852 xorl %ecx, %ebp
853 movl %esi, 16(%esp)
854 xorl %edx, %ebp
855 leal 1859775393(%esi,%edi,1),%esi
856 movl %eax, %edi
857 roll $5, %edi
858.byte 209
859.byte 203 /* rorl $1 %ebx */
860 addl %ebp, %edi
861.byte 209
862.byte 203 /* rorl $1 %ebx */
863 addl %edi, %esi
864 /* 20_39 37 */
865 movl 20(%esp), %edi
866 movl 28(%esp), %ebp
867 xorl %ebp, %edi
868 movl 52(%esp), %ebp
869 xorl %ebp, %edi
870 movl 8(%esp), %ebp
871 xorl %ebp, %edi
872 movl %eax, %ebp
873.byte 209
874.byte 199 /* roll $1 %edi */
875 xorl %ebx, %ebp
876 movl %edi, 20(%esp)
877 xorl %ecx, %ebp
878 leal 1859775393(%edi,%edx,1),%edi
879 movl %esi, %edx
880 roll $5, %edx
881.byte 209
882.byte 200 /* rorl $1 %eax */
883 addl %ebp, %edx
884.byte 209
885.byte 200 /* rorl $1 %eax */
886 addl %edx, %edi
887 /* 20_39 38 */
888 movl 24(%esp), %edx
889 movl 32(%esp), %ebp
890 xorl %ebp, %edx
891 movl 56(%esp), %ebp
892 xorl %ebp, %edx
893 movl 12(%esp), %ebp
894 xorl %ebp, %edx
895 movl %esi, %ebp
896.byte 209
897.byte 194 /* roll $1 %edx */
898 xorl %eax, %ebp
899 movl %edx, 24(%esp)
900 xorl %ebx, %ebp
901 leal 1859775393(%edx,%ecx,1),%edx
902 movl %edi, %ecx
903 roll $5, %ecx
904.byte 209
905.byte 206 /* rorl $1 %esi */
906 addl %ebp, %ecx
907.byte 209
908.byte 206 /* rorl $1 %esi */
909 addl %ecx, %edx
910 /* 20_39 39 */
911 movl 28(%esp), %ecx
912 movl 36(%esp), %ebp
913 xorl %ebp, %ecx
914 movl 60(%esp), %ebp
915 xorl %ebp, %ecx
916 movl 16(%esp), %ebp
917 xorl %ebp, %ecx
918 movl %edi, %ebp
919.byte 209
920.byte 193 /* roll $1 %ecx */
921 xorl %esi, %ebp
922 movl %ecx, 28(%esp)
923 xorl %eax, %ebp
924 leal 1859775393(%ecx,%ebx,1),%ecx
925 movl %edx, %ebx
926 roll $5, %ebx
927.byte 209
928.byte 207 /* rorl $1 %edi */
929 addl %ebp, %ebx
930.byte 209
931.byte 207 /* rorl $1 %edi */
932 addl %ebx, %ecx
933 /* 40_59 40 */
934 movl 32(%esp), %ebx
935 movl 40(%esp), %ebp
936 xorl %ebp, %ebx
937 movl (%esp), %ebp
938 xorl %ebp, %ebx
939 movl 20(%esp), %ebp
940 xorl %ebp, %ebx
941 movl %edx, %ebp
942.byte 209
943.byte 195 /* roll $1 %ebx */
944 orl %edi, %ebp
945 movl %ebx, 32(%esp)
946 andl %esi, %ebp
947 leal 2400959708(%ebx,%eax,1),%ebx
948 movl %edx, %eax
949.byte 209
950.byte 202 /* rorl $1 %edx */
951 andl %edi, %eax
952 orl %eax, %ebp
953 movl %ecx, %eax
954 roll $5, %eax
955 addl %eax, %ebp
956 movl 36(%esp), %eax
957 addl %ebp, %ebx
958 movl 44(%esp), %ebp
959 xorl %ebp, %eax
960 movl 4(%esp), %ebp
961 xorl %ebp, %eax
962 movl 24(%esp), %ebp
963.byte 209
964.byte 202 /* rorl $1 %edx */
965 xorl %ebp, %eax
966.byte 209
967.byte 192 /* roll $1 %eax */
968 movl %ecx, %ebp
969 movl %eax, 36(%esp)
970 orl %edx, %ebp
971 leal 2400959708(%eax,%esi,1),%eax
972 movl %ecx, %esi
973 andl %edi, %ebp
974 andl %edx, %esi
975 orl %esi, %ebp
976 movl %ebx, %esi
977 roll $5, %esi
978.byte 209
979.byte 201 /* rorl $1 %ecx */
980 addl %esi, %ebp
981.byte 209
982.byte 201 /* rorl $1 %ecx */
983 addl %ebp, %eax
984 /* 40_59 41 */
985 /* 40_59 42 */
986 movl 40(%esp), %esi
987 movl 48(%esp), %ebp
988 xorl %ebp, %esi
989 movl 8(%esp), %ebp
990 xorl %ebp, %esi
991 movl 28(%esp), %ebp
992 xorl %ebp, %esi
993 movl %ebx, %ebp
994.byte 209
995.byte 198 /* roll $1 %esi */
996 orl %ecx, %ebp
997 movl %esi, 40(%esp)
998 andl %edx, %ebp
999 leal 2400959708(%esi,%edi,1),%esi
1000 movl %ebx, %edi
1001.byte 209
1002.byte 203 /* rorl $1 %ebx */
1003 andl %ecx, %edi
1004 orl %edi, %ebp
1005 movl %eax, %edi
1006 roll $5, %edi
1007 addl %edi, %ebp
1008 movl 44(%esp), %edi
1009 addl %ebp, %esi
1010 movl 52(%esp), %ebp
1011 xorl %ebp, %edi
1012 movl 12(%esp), %ebp
1013 xorl %ebp, %edi
1014 movl 32(%esp), %ebp
1015.byte 209
1016.byte 203 /* rorl $1 %ebx */
1017 xorl %ebp, %edi
1018.byte 209
1019.byte 199 /* roll $1 %edi */
1020 movl %eax, %ebp
1021 movl %edi, 44(%esp)
1022 orl %ebx, %ebp
1023 leal 2400959708(%edi,%edx,1),%edi
1024 movl %eax, %edx
1025 andl %ecx, %ebp
1026 andl %ebx, %edx
1027 orl %edx, %ebp
1028 movl %esi, %edx
1029 roll $5, %edx
1030.byte 209
1031.byte 200 /* rorl $1 %eax */
1032 addl %edx, %ebp
1033.byte 209
1034.byte 200 /* rorl $1 %eax */
1035 addl %ebp, %edi
1036 /* 40_59 43 */
1037 /* 40_59 44 */
1038 movl 48(%esp), %edx
1039 movl 56(%esp), %ebp
1040 xorl %ebp, %edx
1041 movl 16(%esp), %ebp
1042 xorl %ebp, %edx
1043 movl 36(%esp), %ebp
1044 xorl %ebp, %edx
1045 movl %esi, %ebp
1046.byte 209
1047.byte 194 /* roll $1 %edx */
1048 orl %eax, %ebp
1049 movl %edx, 48(%esp)
1050 andl %ebx, %ebp
1051 leal 2400959708(%edx,%ecx,1),%edx
1052 movl %esi, %ecx
1053.byte 209
1054.byte 206 /* rorl $1 %esi */
1055 andl %eax, %ecx
1056 orl %ecx, %ebp
1057 movl %edi, %ecx
1058 roll $5, %ecx
1059 addl %ecx, %ebp
1060 movl 52(%esp), %ecx
1061 addl %ebp, %edx
1062 movl 60(%esp), %ebp
1063 xorl %ebp, %ecx
1064 movl 20(%esp), %ebp
1065 xorl %ebp, %ecx
1066 movl 40(%esp), %ebp
1067.byte 209
1068.byte 206 /* rorl $1 %esi */
1069 xorl %ebp, %ecx
1070.byte 209
1071.byte 193 /* roll $1 %ecx */
1072 movl %edi, %ebp
1073 movl %ecx, 52(%esp)
1074 orl %esi, %ebp
1075 leal 2400959708(%ecx,%ebx,1),%ecx
1076 movl %edi, %ebx
1077 andl %eax, %ebp
1078 andl %esi, %ebx
1079 orl %ebx, %ebp
1080 movl %edx, %ebx
1081 roll $5, %ebx
1082.byte 209
1083.byte 207 /* rorl $1 %edi */
1084 addl %ebx, %ebp
1085.byte 209
1086.byte 207 /* rorl $1 %edi */
1087 addl %ebp, %ecx
1088 /* 40_59 45 */
1089 /* 40_59 46 */
1090 movl 56(%esp), %ebx
1091 movl (%esp), %ebp
1092 xorl %ebp, %ebx
1093 movl 24(%esp), %ebp
1094 xorl %ebp, %ebx
1095 movl 44(%esp), %ebp
1096 xorl %ebp, %ebx
1097 movl %edx, %ebp
1098.byte 209
1099.byte 195 /* roll $1 %ebx */
1100 orl %edi, %ebp
1101 movl %ebx, 56(%esp)
1102 andl %esi, %ebp
1103 leal 2400959708(%ebx,%eax,1),%ebx
1104 movl %edx, %eax
1105.byte 209
1106.byte 202 /* rorl $1 %edx */
1107 andl %edi, %eax
1108 orl %eax, %ebp
1109 movl %ecx, %eax
1110 roll $5, %eax
1111 addl %eax, %ebp
1112 movl 60(%esp), %eax
1113 addl %ebp, %ebx
1114 movl 4(%esp), %ebp
1115 xorl %ebp, %eax
1116 movl 28(%esp), %ebp
1117 xorl %ebp, %eax
1118 movl 48(%esp), %ebp
1119.byte 209
1120.byte 202 /* rorl $1 %edx */
1121 xorl %ebp, %eax
1122.byte 209
1123.byte 192 /* roll $1 %eax */
1124 movl %ecx, %ebp
1125 movl %eax, 60(%esp)
1126 orl %edx, %ebp
1127 leal 2400959708(%eax,%esi,1),%eax
1128 movl %ecx, %esi
1129 andl %edi, %ebp
1130 andl %edx, %esi
1131 orl %esi, %ebp
1132 movl %ebx, %esi
1133 roll $5, %esi
1134.byte 209
1135.byte 201 /* rorl $1 %ecx */
1136 addl %esi, %ebp
1137.byte 209
1138.byte 201 /* rorl $1 %ecx */
1139 addl %ebp, %eax
1140 /* 40_59 47 */
1141 /* 40_59 48 */
1142 movl (%esp), %esi
1143 movl 8(%esp), %ebp
1144 xorl %ebp, %esi
1145 movl 32(%esp), %ebp
1146 xorl %ebp, %esi
1147 movl 52(%esp), %ebp
1148 xorl %ebp, %esi
1149 movl %ebx, %ebp
1150.byte 209
1151.byte 198 /* roll $1 %esi */
1152 orl %ecx, %ebp
1153 movl %esi, (%esp)
1154 andl %edx, %ebp
1155 leal 2400959708(%esi,%edi,1),%esi
1156 movl %ebx, %edi
1157.byte 209
1158.byte 203 /* rorl $1 %ebx */
1159 andl %ecx, %edi
1160 orl %edi, %ebp
1161 movl %eax, %edi
1162 roll $5, %edi
1163 addl %edi, %ebp
1164 movl 4(%esp), %edi
1165 addl %ebp, %esi
1166 movl 12(%esp), %ebp
1167 xorl %ebp, %edi
1168 movl 36(%esp), %ebp
1169 xorl %ebp, %edi
1170 movl 56(%esp), %ebp
1171.byte 209
1172.byte 203 /* rorl $1 %ebx */
1173 xorl %ebp, %edi
1174.byte 209
1175.byte 199 /* roll $1 %edi */
1176 movl %eax, %ebp
1177 movl %edi, 4(%esp)
1178 orl %ebx, %ebp
1179 leal 2400959708(%edi,%edx,1),%edi
1180 movl %eax, %edx
1181 andl %ecx, %ebp
1182 andl %ebx, %edx
1183 orl %edx, %ebp
1184 movl %esi, %edx
1185 roll $5, %edx
1186.byte 209
1187.byte 200 /* rorl $1 %eax */
1188 addl %edx, %ebp
1189.byte 209
1190.byte 200 /* rorl $1 %eax */
1191 addl %ebp, %edi
1192 /* 40_59 49 */
1193 /* 40_59 50 */
1194 movl 8(%esp), %edx
1195 movl 16(%esp), %ebp
1196 xorl %ebp, %edx
1197 movl 40(%esp), %ebp
1198 xorl %ebp, %edx
1199 movl 60(%esp), %ebp
1200 xorl %ebp, %edx
1201 movl %esi, %ebp
1202.byte 209
1203.byte 194 /* roll $1 %edx */
1204 orl %eax, %ebp
1205 movl %edx, 8(%esp)
1206 andl %ebx, %ebp
1207 leal 2400959708(%edx,%ecx,1),%edx
1208 movl %esi, %ecx
1209.byte 209
1210.byte 206 /* rorl $1 %esi */
1211 andl %eax, %ecx
1212 orl %ecx, %ebp
1213 movl %edi, %ecx
1214 roll $5, %ecx
1215 addl %ecx, %ebp
1216 movl 12(%esp), %ecx
1217 addl %ebp, %edx
1218 movl 20(%esp), %ebp
1219 xorl %ebp, %ecx
1220 movl 44(%esp), %ebp
1221 xorl %ebp, %ecx
1222 movl (%esp), %ebp
1223.byte 209
1224.byte 206 /* rorl $1 %esi */
1225 xorl %ebp, %ecx
1226.byte 209
1227.byte 193 /* roll $1 %ecx */
1228 movl %edi, %ebp
1229 movl %ecx, 12(%esp)
1230 orl %esi, %ebp
1231 leal 2400959708(%ecx,%ebx,1),%ecx
1232 movl %edi, %ebx
1233 andl %eax, %ebp
1234 andl %esi, %ebx
1235 orl %ebx, %ebp
1236 movl %edx, %ebx
1237 roll $5, %ebx
1238.byte 209
1239.byte 207 /* rorl $1 %edi */
1240 addl %ebx, %ebp
1241.byte 209
1242.byte 207 /* rorl $1 %edi */
1243 addl %ebp, %ecx
1244 /* 40_59 51 */
1245 /* 40_59 52 */
1246 movl 16(%esp), %ebx
1247 movl 24(%esp), %ebp
1248 xorl %ebp, %ebx
1249 movl 48(%esp), %ebp
1250 xorl %ebp, %ebx
1251 movl 4(%esp), %ebp
1252 xorl %ebp, %ebx
1253 movl %edx, %ebp
1254.byte 209
1255.byte 195 /* roll $1 %ebx */
1256 orl %edi, %ebp
1257 movl %ebx, 16(%esp)
1258 andl %esi, %ebp
1259 leal 2400959708(%ebx,%eax,1),%ebx
1260 movl %edx, %eax
1261.byte 209
1262.byte 202 /* rorl $1 %edx */
1263 andl %edi, %eax
1264 orl %eax, %ebp
1265 movl %ecx, %eax
1266 roll $5, %eax
1267 addl %eax, %ebp
1268 movl 20(%esp), %eax
1269 addl %ebp, %ebx
1270 movl 28(%esp), %ebp
1271 xorl %ebp, %eax
1272 movl 52(%esp), %ebp
1273 xorl %ebp, %eax
1274 movl 8(%esp), %ebp
1275.byte 209
1276.byte 202 /* rorl $1 %edx */
1277 xorl %ebp, %eax
1278.byte 209
1279.byte 192 /* roll $1 %eax */
1280 movl %ecx, %ebp
1281 movl %eax, 20(%esp)
1282 orl %edx, %ebp
1283 leal 2400959708(%eax,%esi,1),%eax
1284 movl %ecx, %esi
1285 andl %edi, %ebp
1286 andl %edx, %esi
1287 orl %esi, %ebp
1288 movl %ebx, %esi
1289 roll $5, %esi
1290.byte 209
1291.byte 201 /* rorl $1 %ecx */
1292 addl %esi, %ebp
1293.byte 209
1294.byte 201 /* rorl $1 %ecx */
1295 addl %ebp, %eax
1296 /* 40_59 53 */
1297 /* 40_59 54 */
1298 movl 24(%esp), %esi
1299 movl 32(%esp), %ebp
1300 xorl %ebp, %esi
1301 movl 56(%esp), %ebp
1302 xorl %ebp, %esi
1303 movl 12(%esp), %ebp
1304 xorl %ebp, %esi
1305 movl %ebx, %ebp
1306.byte 209
1307.byte 198 /* roll $1 %esi */
1308 orl %ecx, %ebp
1309 movl %esi, 24(%esp)
1310 andl %edx, %ebp
1311 leal 2400959708(%esi,%edi,1),%esi
1312 movl %ebx, %edi
1313.byte 209
1314.byte 203 /* rorl $1 %ebx */
1315 andl %ecx, %edi
1316 orl %edi, %ebp
1317 movl %eax, %edi
1318 roll $5, %edi
1319 addl %edi, %ebp
1320 movl 28(%esp), %edi
1321 addl %ebp, %esi
1322 movl 36(%esp), %ebp
1323 xorl %ebp, %edi
1324 movl 60(%esp), %ebp
1325 xorl %ebp, %edi
1326 movl 16(%esp), %ebp
1327.byte 209
1328.byte 203 /* rorl $1 %ebx */
1329 xorl %ebp, %edi
1330.byte 209
1331.byte 199 /* roll $1 %edi */
1332 movl %eax, %ebp
1333 movl %edi, 28(%esp)
1334 orl %ebx, %ebp
1335 leal 2400959708(%edi,%edx,1),%edi
1336 movl %eax, %edx
1337 andl %ecx, %ebp
1338 andl %ebx, %edx
1339 orl %edx, %ebp
1340 movl %esi, %edx
1341 roll $5, %edx
1342.byte 209
1343.byte 200 /* rorl $1 %eax */
1344 addl %edx, %ebp
1345.byte 209
1346.byte 200 /* rorl $1 %eax */
1347 addl %ebp, %edi
1348 /* 40_59 55 */
1349 /* 40_59 56 */
1350 movl 32(%esp), %edx
1351 movl 40(%esp), %ebp
1352 xorl %ebp, %edx
1353 movl (%esp), %ebp
1354 xorl %ebp, %edx
1355 movl 20(%esp), %ebp
1356 xorl %ebp, %edx
1357 movl %esi, %ebp
1358.byte 209
1359.byte 194 /* roll $1 %edx */
1360 orl %eax, %ebp
1361 movl %edx, 32(%esp)
1362 andl %ebx, %ebp
1363 leal 2400959708(%edx,%ecx,1),%edx
1364 movl %esi, %ecx
1365.byte 209
1366.byte 206 /* rorl $1 %esi */
1367 andl %eax, %ecx
1368 orl %ecx, %ebp
1369 movl %edi, %ecx
1370 roll $5, %ecx
1371 addl %ecx, %ebp
1372 movl 36(%esp), %ecx
1373 addl %ebp, %edx
1374 movl 44(%esp), %ebp
1375 xorl %ebp, %ecx
1376 movl 4(%esp), %ebp
1377 xorl %ebp, %ecx
1378 movl 24(%esp), %ebp
1379.byte 209
1380.byte 206 /* rorl $1 %esi */
1381 xorl %ebp, %ecx
1382.byte 209
1383.byte 193 /* roll $1 %ecx */
1384 movl %edi, %ebp
1385 movl %ecx, 36(%esp)
1386 orl %esi, %ebp
1387 leal 2400959708(%ecx,%ebx,1),%ecx
1388 movl %edi, %ebx
1389 andl %eax, %ebp
1390 andl %esi, %ebx
1391 orl %ebx, %ebp
1392 movl %edx, %ebx
1393 roll $5, %ebx
1394.byte 209
1395.byte 207 /* rorl $1 %edi */
1396 addl %ebx, %ebp
1397.byte 209
1398.byte 207 /* rorl $1 %edi */
1399 addl %ebp, %ecx
1400 /* 40_59 57 */
1401 /* 40_59 58 */
1402 movl 40(%esp), %ebx
1403 movl 48(%esp), %ebp
1404 xorl %ebp, %ebx
1405 movl 8(%esp), %ebp
1406 xorl %ebp, %ebx
1407 movl 28(%esp), %ebp
1408 xorl %ebp, %ebx
1409 movl %edx, %ebp
1410.byte 209
1411.byte 195 /* roll $1 %ebx */
1412 orl %edi, %ebp
1413 movl %ebx, 40(%esp)
1414 andl %esi, %ebp
1415 leal 2400959708(%ebx,%eax,1),%ebx
1416 movl %edx, %eax
1417.byte 209
1418.byte 202 /* rorl $1 %edx */
1419 andl %edi, %eax
1420 orl %eax, %ebp
1421 movl %ecx, %eax
1422 roll $5, %eax
1423 addl %eax, %ebp
1424 movl 44(%esp), %eax
1425 addl %ebp, %ebx
1426 movl 52(%esp), %ebp
1427 xorl %ebp, %eax
1428 movl 12(%esp), %ebp
1429 xorl %ebp, %eax
1430 movl 32(%esp), %ebp
1431.byte 209
1432.byte 202 /* rorl $1 %edx */
1433 xorl %ebp, %eax
1434.byte 209
1435.byte 192 /* roll $1 %eax */
1436 movl %ecx, %ebp
1437 movl %eax, 44(%esp)
1438 orl %edx, %ebp
1439 leal 2400959708(%eax,%esi,1),%eax
1440 movl %ecx, %esi
1441 andl %edi, %ebp
1442 andl %edx, %esi
1443 orl %esi, %ebp
1444 movl %ebx, %esi
1445 roll $5, %esi
1446.byte 209
1447.byte 201 /* rorl $1 %ecx */
1448 addl %esi, %ebp
1449.byte 209
1450.byte 201 /* rorl $1 %ecx */
1451 addl %ebp, %eax
1452 /* 40_59 59 */
1453 /* 20_39 60 */
1454 movl 48(%esp), %esi
1455 movl 56(%esp), %ebp
1456 xorl %ebp, %esi
1457 movl 16(%esp), %ebp
1458 xorl %ebp, %esi
1459 movl 36(%esp), %ebp
1460 xorl %ebp, %esi
1461 movl %ebx, %ebp
1462.byte 209
1463.byte 198 /* roll $1 %esi */
1464 xorl %ecx, %ebp
1465 movl %esi, 48(%esp)
1466 xorl %edx, %ebp
1467 leal 3395469782(%esi,%edi,1),%esi
1468 movl %eax, %edi
1469 roll $5, %edi
1470.byte 209
1471.byte 203 /* rorl $1 %ebx */
1472 addl %ebp, %edi
1473.byte 209
1474.byte 203 /* rorl $1 %ebx */
1475 addl %edi, %esi
1476 /* 20_39 61 */
1477 movl 52(%esp), %edi
1478 movl 60(%esp), %ebp
1479 xorl %ebp, %edi
1480 movl 20(%esp), %ebp
1481 xorl %ebp, %edi
1482 movl 40(%esp), %ebp
1483 xorl %ebp, %edi
1484 movl %eax, %ebp
1485.byte 209
1486.byte 199 /* roll $1 %edi */
1487 xorl %ebx, %ebp
1488 movl %edi, 52(%esp)
1489 xorl %ecx, %ebp
1490 leal 3395469782(%edi,%edx,1),%edi
1491 movl %esi, %edx
1492 roll $5, %edx
1493.byte 209
1494.byte 200 /* rorl $1 %eax */
1495 addl %ebp, %edx
1496.byte 209
1497.byte 200 /* rorl $1 %eax */
1498 addl %edx, %edi
1499 /* 20_39 62 */
1500 movl 56(%esp), %edx
1501 movl (%esp), %ebp
1502 xorl %ebp, %edx
1503 movl 24(%esp), %ebp
1504 xorl %ebp, %edx
1505 movl 44(%esp), %ebp
1506 xorl %ebp, %edx
1507 movl %esi, %ebp
1508.byte 209
1509.byte 194 /* roll $1 %edx */
1510 xorl %eax, %ebp
1511 movl %edx, 56(%esp)
1512 xorl %ebx, %ebp
1513 leal 3395469782(%edx,%ecx,1),%edx
1514 movl %edi, %ecx
1515 roll $5, %ecx
1516.byte 209
1517.byte 206 /* rorl $1 %esi */
1518 addl %ebp, %ecx
1519.byte 209
1520.byte 206 /* rorl $1 %esi */
1521 addl %ecx, %edx
1522 /* 20_39 63 */
1523 movl 60(%esp), %ecx
1524 movl 4(%esp), %ebp
1525 xorl %ebp, %ecx
1526 movl 28(%esp), %ebp
1527 xorl %ebp, %ecx
1528 movl 48(%esp), %ebp
1529 xorl %ebp, %ecx
1530 movl %edi, %ebp
1531.byte 209
1532.byte 193 /* roll $1 %ecx */
1533 xorl %esi, %ebp
1534 movl %ecx, 60(%esp)
1535 xorl %eax, %ebp
1536 leal 3395469782(%ecx,%ebx,1),%ecx
1537 movl %edx, %ebx
1538 roll $5, %ebx
1539.byte 209
1540.byte 207 /* rorl $1 %edi */
1541 addl %ebp, %ebx
1542.byte 209
1543.byte 207 /* rorl $1 %edi */
1544 addl %ebx, %ecx
1545 /* 20_39 64 */
1546 movl (%esp), %ebx
1547 movl 8(%esp), %ebp
1548 xorl %ebp, %ebx
1549 movl 32(%esp), %ebp
1550 xorl %ebp, %ebx
1551 movl 52(%esp), %ebp
1552 xorl %ebp, %ebx
1553 movl %edx, %ebp
1554.byte 209
1555.byte 195 /* roll $1 %ebx */
1556 xorl %edi, %ebp
1557 movl %ebx, (%esp)
1558 xorl %esi, %ebp
1559 leal 3395469782(%ebx,%eax,1),%ebx
1560 movl %ecx, %eax
1561 roll $5, %eax
1562.byte 209
1563.byte 202 /* rorl $1 %edx */
1564 addl %ebp, %eax
1565.byte 209
1566.byte 202 /* rorl $1 %edx */
1567 addl %eax, %ebx
1568 /* 20_39 65 */
1569 movl 4(%esp), %eax
1570 movl 12(%esp), %ebp
1571 xorl %ebp, %eax
1572 movl 36(%esp), %ebp
1573 xorl %ebp, %eax
1574 movl 56(%esp), %ebp
1575 xorl %ebp, %eax
1576 movl %ecx, %ebp
1577.byte 209
1578.byte 192 /* roll $1 %eax */
1579 xorl %edx, %ebp
1580 movl %eax, 4(%esp)
1581 xorl %edi, %ebp
1582 leal 3395469782(%eax,%esi,1),%eax
1583 movl %ebx, %esi
1584 roll $5, %esi
1585.byte 209
1586.byte 201 /* rorl $1 %ecx */
1587 addl %ebp, %esi
1588.byte 209
1589.byte 201 /* rorl $1 %ecx */
1590 addl %esi, %eax
1591 /* 20_39 66 */
1592 movl 8(%esp), %esi
1593 movl 16(%esp), %ebp
1594 xorl %ebp, %esi
1595 movl 40(%esp), %ebp
1596 xorl %ebp, %esi
1597 movl 60(%esp), %ebp
1598 xorl %ebp, %esi
1599 movl %ebx, %ebp
1600.byte 209
1601.byte 198 /* roll $1 %esi */
1602 xorl %ecx, %ebp
1603 movl %esi, 8(%esp)
1604 xorl %edx, %ebp
1605 leal 3395469782(%esi,%edi,1),%esi
1606 movl %eax, %edi
1607 roll $5, %edi
1608.byte 209
1609.byte 203 /* rorl $1 %ebx */
1610 addl %ebp, %edi
1611.byte 209
1612.byte 203 /* rorl $1 %ebx */
1613 addl %edi, %esi
1614 /* 20_39 67 */
1615 movl 12(%esp), %edi
1616 movl 20(%esp), %ebp
1617 xorl %ebp, %edi
1618 movl 44(%esp), %ebp
1619 xorl %ebp, %edi
1620 movl (%esp), %ebp
1621 xorl %ebp, %edi
1622 movl %eax, %ebp
1623.byte 209
1624.byte 199 /* roll $1 %edi */
1625 xorl %ebx, %ebp
1626 movl %edi, 12(%esp)
1627 xorl %ecx, %ebp
1628 leal 3395469782(%edi,%edx,1),%edi
1629 movl %esi, %edx
1630 roll $5, %edx
1631.byte 209
1632.byte 200 /* rorl $1 %eax */
1633 addl %ebp, %edx
1634.byte 209
1635.byte 200 /* rorl $1 %eax */
1636 addl %edx, %edi
1637 /* 20_39 68 */
1638 movl 16(%esp), %edx
1639 movl 24(%esp), %ebp
1640 xorl %ebp, %edx
1641 movl 48(%esp), %ebp
1642 xorl %ebp, %edx
1643 movl 4(%esp), %ebp
1644 xorl %ebp, %edx
1645 movl %esi, %ebp
1646.byte 209
1647.byte 194 /* roll $1 %edx */
1648 xorl %eax, %ebp
1649 movl %edx, 16(%esp)
1650 xorl %ebx, %ebp
1651 leal 3395469782(%edx,%ecx,1),%edx
1652 movl %edi, %ecx
1653 roll $5, %ecx
1654.byte 209
1655.byte 206 /* rorl $1 %esi */
1656 addl %ebp, %ecx
1657.byte 209
1658.byte 206 /* rorl $1 %esi */
1659 addl %ecx, %edx
1660 /* 20_39 69 */
1661 movl 20(%esp), %ecx
1662 movl 28(%esp), %ebp
1663 xorl %ebp, %ecx
1664 movl 52(%esp), %ebp
1665 xorl %ebp, %ecx
1666 movl 8(%esp), %ebp
1667 xorl %ebp, %ecx
1668 movl %edi, %ebp
1669.byte 209
1670.byte 193 /* roll $1 %ecx */
1671 xorl %esi, %ebp
1672 movl %ecx, 20(%esp)
1673 xorl %eax, %ebp
1674 leal 3395469782(%ecx,%ebx,1),%ecx
1675 movl %edx, %ebx
1676 roll $5, %ebx
1677.byte 209
1678.byte 207 /* rorl $1 %edi */
1679 addl %ebp, %ebx
1680.byte 209
1681.byte 207 /* rorl $1 %edi */
1682 addl %ebx, %ecx
1683 /* 20_39 70 */
1684 movl 24(%esp), %ebx
1685 movl 32(%esp), %ebp
1686 xorl %ebp, %ebx
1687 movl 56(%esp), %ebp
1688 xorl %ebp, %ebx
1689 movl 12(%esp), %ebp
1690 xorl %ebp, %ebx
1691 movl %edx, %ebp
1692.byte 209
1693.byte 195 /* roll $1 %ebx */
1694 xorl %edi, %ebp
1695 movl %ebx, 24(%esp)
1696 xorl %esi, %ebp
1697 leal 3395469782(%ebx,%eax,1),%ebx
1698 movl %ecx, %eax
1699 roll $5, %eax
1700.byte 209
1701.byte 202 /* rorl $1 %edx */
1702 addl %ebp, %eax
1703.byte 209
1704.byte 202 /* rorl $1 %edx */
1705 addl %eax, %ebx
1706 /* 20_39 71 */
1707 movl 28(%esp), %eax
1708 movl 36(%esp), %ebp
1709 xorl %ebp, %eax
1710 movl 60(%esp), %ebp
1711 xorl %ebp, %eax
1712 movl 16(%esp), %ebp
1713 xorl %ebp, %eax
1714 movl %ecx, %ebp
1715.byte 209
1716.byte 192 /* roll $1 %eax */
1717 xorl %edx, %ebp
1718 movl %eax, 28(%esp)
1719 xorl %edi, %ebp
1720 leal 3395469782(%eax,%esi,1),%eax
1721 movl %ebx, %esi
1722 roll $5, %esi
1723.byte 209
1724.byte 201 /* rorl $1 %ecx */
1725 addl %ebp, %esi
1726.byte 209
1727.byte 201 /* rorl $1 %ecx */
1728 addl %esi, %eax
1729 /* 20_39 72 */
1730 movl 32(%esp), %esi
1731 movl 40(%esp), %ebp
1732 xorl %ebp, %esi
1733 movl (%esp), %ebp
1734 xorl %ebp, %esi
1735 movl 20(%esp), %ebp
1736 xorl %ebp, %esi
1737 movl %ebx, %ebp
1738.byte 209
1739.byte 198 /* roll $1 %esi */
1740 xorl %ecx, %ebp
1741 movl %esi, 32(%esp)
1742 xorl %edx, %ebp
1743 leal 3395469782(%esi,%edi,1),%esi
1744 movl %eax, %edi
1745 roll $5, %edi
1746.byte 209
1747.byte 203 /* rorl $1 %ebx */
1748 addl %ebp, %edi
1749.byte 209
1750.byte 203 /* rorl $1 %ebx */
1751 addl %edi, %esi
1752 /* 20_39 73 */
1753 movl 36(%esp), %edi
1754 movl 44(%esp), %ebp
1755 xorl %ebp, %edi
1756 movl 4(%esp), %ebp
1757 xorl %ebp, %edi
1758 movl 24(%esp), %ebp
1759 xorl %ebp, %edi
1760 movl %eax, %ebp
1761.byte 209
1762.byte 199 /* roll $1 %edi */
1763 xorl %ebx, %ebp
1764 movl %edi, 36(%esp)
1765 xorl %ecx, %ebp
1766 leal 3395469782(%edi,%edx,1),%edi
1767 movl %esi, %edx
1768 roll $5, %edx
1769.byte 209
1770.byte 200 /* rorl $1 %eax */
1771 addl %ebp, %edx
1772.byte 209
1773.byte 200 /* rorl $1 %eax */
1774 addl %edx, %edi
1775 /* 20_39 74 */
1776 movl 40(%esp), %edx
1777 movl 48(%esp), %ebp
1778 xorl %ebp, %edx
1779 movl 8(%esp), %ebp
1780 xorl %ebp, %edx
1781 movl 28(%esp), %ebp
1782 xorl %ebp, %edx
1783 movl %esi, %ebp
1784.byte 209
1785.byte 194 /* roll $1 %edx */
1786 xorl %eax, %ebp
1787 movl %edx, 40(%esp)
1788 xorl %ebx, %ebp
1789 leal 3395469782(%edx,%ecx,1),%edx
1790 movl %edi, %ecx
1791 roll $5, %ecx
1792.byte 209
1793.byte 206 /* rorl $1 %esi */
1794 addl %ebp, %ecx
1795.byte 209
1796.byte 206 /* rorl $1 %esi */
1797 addl %ecx, %edx
1798 /* 20_39 75 */
1799 movl 44(%esp), %ecx
1800 movl 52(%esp), %ebp
1801 xorl %ebp, %ecx
1802 movl 12(%esp), %ebp
1803 xorl %ebp, %ecx
1804 movl 32(%esp), %ebp
1805 xorl %ebp, %ecx
1806 movl %edi, %ebp
1807.byte 209
1808.byte 193 /* roll $1 %ecx */
1809 xorl %esi, %ebp
1810 movl %ecx, 44(%esp)
1811 xorl %eax, %ebp
1812 leal 3395469782(%ecx,%ebx,1),%ecx
1813 movl %edx, %ebx
1814 roll $5, %ebx
1815.byte 209
1816.byte 207 /* rorl $1 %edi */
1817 addl %ebp, %ebx
1818.byte 209
1819.byte 207 /* rorl $1 %edi */
1820 addl %ebx, %ecx
1821 /* 20_39 76 */
1822 movl 48(%esp), %ebx
1823 movl 56(%esp), %ebp
1824 xorl %ebp, %ebx
1825 movl 16(%esp), %ebp
1826 xorl %ebp, %ebx
1827 movl 36(%esp), %ebp
1828 xorl %ebp, %ebx
1829 movl %edx, %ebp
1830.byte 209
1831.byte 195 /* roll $1 %ebx */
1832 xorl %edi, %ebp
1833 movl %ebx, 48(%esp)
1834 xorl %esi, %ebp
1835 leal 3395469782(%ebx,%eax,1),%ebx
1836 movl %ecx, %eax
1837 roll $5, %eax
1838.byte 209
1839.byte 202 /* rorl $1 %edx */
1840 addl %ebp, %eax
1841.byte 209
1842.byte 202 /* rorl $1 %edx */
1843 addl %eax, %ebx
1844 /* 20_39 77 */
1845 movl 52(%esp), %eax
1846 movl 60(%esp), %ebp
1847 xorl %ebp, %eax
1848 movl 20(%esp), %ebp
1849 xorl %ebp, %eax
1850 movl 40(%esp), %ebp
1851 xorl %ebp, %eax
1852 movl %ecx, %ebp
1853.byte 209
1854.byte 192 /* roll $1 %eax */
1855 xorl %edx, %ebp
1856 movl %eax, 52(%esp)
1857 xorl %edi, %ebp
1858 leal 3395469782(%eax,%esi,1),%eax
1859 movl %ebx, %esi
1860 roll $5, %esi
1861.byte 209
1862.byte 201 /* rorl $1 %ecx */
1863 addl %ebp, %esi
1864.byte 209
1865.byte 201 /* rorl $1 %ecx */
1866 addl %esi, %eax
1867 /* 20_39 78 */
1868 movl 56(%esp), %esi
1869 movl (%esp), %ebp
1870 xorl %ebp, %esi
1871 movl 24(%esp), %ebp
1872 xorl %ebp, %esi
1873 movl 44(%esp), %ebp
1874 xorl %ebp, %esi
1875 movl %ebx, %ebp
1876.byte 209
1877.byte 198 /* roll $1 %esi */
1878 xorl %ecx, %ebp
1879 movl %esi, 56(%esp)
1880 xorl %edx, %ebp
1881 leal 3395469782(%esi,%edi,1),%esi
1882 movl %eax, %edi
1883 roll $5, %edi
1884.byte 209
1885.byte 203 /* rorl $1 %ebx */
1886 addl %ebp, %edi
1887.byte 209
1888.byte 203 /* rorl $1 %ebx */
1889 addl %edi, %esi
1890 /* 20_39 79 */
1891 movl 60(%esp), %edi
1892 movl 4(%esp), %ebp
1893 xorl %ebp, %edi
1894 movl 28(%esp), %ebp
1895 xorl %ebp, %edi
1896 movl 48(%esp), %ebp
1897 xorl %ebp, %edi
1898 movl %eax, %ebp
1899.byte 209
1900.byte 199 /* roll $1 %edi */
1901 xorl %ebx, %ebp
1902 movl %edi, 60(%esp)
1903 xorl %ecx, %ebp
1904 leal 3395469782(%edi,%edx,1),%edi
1905 movl %esi, %edx
1906 roll $5, %edx
1907 addl %ebp, %edx
1908 movl 92(%esp), %ebp
1909.byte 209
1910.byte 200 /* rorl $1 %eax */
1911 addl %edx, %edi
1912.byte 209
1913.byte 200 /* rorl $1 %eax */
1914 /* End processing */
1915
1916 movl 12(%ebp), %edx
1917 addl %ebx, %edx
1918 movl 4(%ebp), %ebx
1919 addl %esi, %ebx
1920 movl %eax, %esi
1921 movl (%ebp), %eax
1922 movl %edx, 12(%ebp)
1923 addl %edi, %eax
1924 movl 16(%ebp), %edi
1925 addl %ecx, %edi
1926 movl 8(%ebp), %ecx
1927 addl %esi, %ecx
1928 movl %eax, (%ebp)
1929 movl 64(%esp), %esi
1930 movl %ecx, 8(%ebp)
1931 addl $64, %esi
1932 movl 68(%esp), %eax
1933 movl %edi, 16(%ebp)
1934 cmpl %esi, %eax
1935 movl %ebx, 4(%ebp)
1936 jl .L001end
1937 movl (%esi), %eax
1938 jmp .L000start
1939.L001end:
1940 addl $72, %esp
1941 popl %edi
1942 popl %ebx
1943 popl %ebp
1944 popl %esi
1945 ret
1946.sha1_block_x86_end:
1947 SIZE(sha1_block_x86,.sha1_block_x86_end-sha1_block_x86)
1948.ident "desasm.pl"
diff --git a/src/lib/libcrypto/sha/sha_sgst.c b/src/lib/libcrypto/sha/sha_sgst.c
new file mode 100644
index 0000000000..8a16801328
--- /dev/null
+++ b/src/lib/libcrypto/sha/sha_sgst.c
@@ -0,0 +1,246 @@
1/* crypto/sha/sha_sgst.c */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE.
52 *
53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <stdlib.h>
60#include <string.h>
61
62#ifdef undef
63/* one or the other needs to be defined */
64#ifndef SHA_1 /* FIPE 180-1 */
65#define SHA_0 /* FIPS 180 */
66#endif
67#endif
68
69#define ULONG unsigned long
70#define UCHAR unsigned char
71#define UINT unsigned int
72
73#ifdef NOCONST
74#define const
75#endif
76
77#undef c2nl
78#define c2nl(c,l) (l =(((unsigned long)(*((c)++)))<<24), \
79 l|=(((unsigned long)(*((c)++)))<<16), \
80 l|=(((unsigned long)(*((c)++)))<< 8), \
81 l|=(((unsigned long)(*((c)++))) ))
82
83#undef p_c2nl
84#define p_c2nl(c,l,n) { \
85 switch (n) { \
86 case 0: l =((unsigned long)(*((c)++)))<<24; \
87 case 1: l|=((unsigned long)(*((c)++)))<<16; \
88 case 2: l|=((unsigned long)(*((c)++)))<< 8; \
89 case 3: l|=((unsigned long)(*((c)++))); \
90 } \
91 }
92
93#undef c2nl_p
94/* NOTE the pointer is not incremented at the end of this */
95#define c2nl_p(c,l,n) { \
96 l=0; \
97 (c)+=n; \
98 switch (n) { \
99 case 3: l =((unsigned long)(*(--(c))))<< 8; \
100 case 2: l|=((unsigned long)(*(--(c))))<<16; \
101 case 1: l|=((unsigned long)(*(--(c))))<<24; \
102 } \
103 }
104
105#undef p_c2nl_p
106#define p_c2nl_p(c,l,sc,len) { \
107 switch (sc) \
108 { \
109 case 0: l =((unsigned long)(*((c)++)))<<24; \
110 if (--len == 0) break; \
111 case 1: l|=((unsigned long)(*((c)++)))<<16; \
112 if (--len == 0) break; \
113 case 2: l|=((unsigned long)(*((c)++)))<< 8; \
114 } \
115 }
116
117#undef nl2c
118#define nl2c(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \
119 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
120 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
121 *((c)++)=(unsigned char)(((l) )&0xff))
122
123#undef c2l
124#define c2l(c,l) (l =(((unsigned long)(*((c)++))) ), \
125 l|=(((unsigned long)(*((c)++)))<< 8), \
126 l|=(((unsigned long)(*((c)++)))<<16), \
127 l|=(((unsigned long)(*((c)++)))<<24))
128
129#undef p_c2l
130#define p_c2l(c,l,n) { \
131 switch (n) { \
132 case 0: l =((unsigned long)(*((c)++))); \
133 case 1: l|=((unsigned long)(*((c)++)))<< 8; \
134 case 2: l|=((unsigned long)(*((c)++)))<<16; \
135 case 3: l|=((unsigned long)(*((c)++)))<<24; \
136 } \
137 }
138
139#undef c2l_p
140/* NOTE the pointer is not incremented at the end of this */
141#define c2l_p(c,l,n) { \
142 l=0; \
143 (c)+=n; \
144 switch (n) { \
145 case 3: l =((unsigned long)(*(--(c))))<<16; \
146 case 2: l|=((unsigned long)(*(--(c))))<< 8; \
147 case 1: l|=((unsigned long)(*(--(c)))); \
148 } \
149 }
150
151#undef p_c2l_p
152#define p_c2l_p(c,l,sc,len) { \
153 switch (sc) \
154 { \
155 case 0: l =((unsigned long)(*((c)++))); \
156 if (--len == 0) break; \
157 case 1: l|=((unsigned long)(*((c)++)))<< 8; \
158 if (--len == 0) break; \
159 case 2: l|=((unsigned long)(*((c)++)))<<16; \
160 } \
161 }
162
163#undef l2c
164#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
165 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
166 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
167 *((c)++)=(unsigned char)(((l)>>24)&0xff))
168
169#undef ROTATE
170#if defined(WIN32)
171#define ROTATE(a,n) _lrotl(a,n)
172#else
173#define ROTATE(a,n) (((a)<<(n))|(((a)&0xffffffff)>>(32-(n))))
174#endif
175
176/* A nice byte order reversal from Wei Dai <weidai@eskimo.com> */
177#if defined(WIN32)
178/* 5 instructions with rotate instruction, else 9 */
179#define Endian_Reverse32(a) \
180 { \
181 unsigned long l=(a); \
182 (a)=((ROTATE(l,8)&0x00FF00FF)|(ROTATE(l,24)&0xFF00FF00)); \
183 }
184#else
185/* 6 instructions with rotate instruction, else 8 */
186#define Endian_Reverse32(a) \
187 { \
188 unsigned long l=(a); \
189 l=(((l&0xFF00FF00)>>8L)|((l&0x00FF00FF)<<8L)); \
190 (a)=ROTATE(l,16L); \
191 }
192#endif
193
194/* As pointed out by Wei Dai <weidai@eskimo.com>, F() below can be
195 * simplified to the code in F_00_19. Wei attributes these optimisations
196 * to Peter Gutmann's SHS code, and he attributes it to Rich Schroeppel.
197 * #define F(x,y,z) (((x) & (y)) | ((~(x)) & (z)))
198 * I've just become aware of another tweak to be made, again from Wei Dai,
199 * in F_40_59, (x&a)|(y&a) -> (x|y)&a
200 */
201#define F_00_19(b,c,d) ((((c) ^ (d)) & (b)) ^ (d))
202#define F_20_39(b,c,d) ((b) ^ (c) ^ (d))
203#define F_40_59(b,c,d) (((b) & (c)) | (((b)|(c)) & (d)))
204#define F_60_79(b,c,d) F_20_39(b,c,d)
205
206#ifdef SHA_0
207#undef Xupdate
208#define Xupdate(a,i,ia,ib,ic,id) X[(i)&0x0f]=(a)=\
209 (ia[(i)&0x0f]^ib[((i)+2)&0x0f]^ic[((i)+8)&0x0f]^id[((i)+13)&0x0f]);
210#endif
211#ifdef SHA_1
212#undef Xupdate
213#define Xupdate(a,i,ia,ib,ic,id) (a)=\
214 (ia[(i)&0x0f]^ib[((i)+2)&0x0f]^ic[((i)+8)&0x0f]^id[((i)+13)&0x0f]);\
215 X[(i)&0x0f]=(a)=ROTATE((a),1);
216#endif
217
218#define BODY_00_15(i,a,b,c,d,e,f,xa) \
219 (f)=xa[i]+(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
220 (b)=ROTATE((b),30);
221
222#define BODY_16_19(i,a,b,c,d,e,f,xa,xb,xc,xd) \
223 Xupdate(f,i,xa,xb,xc,xd); \
224 (f)+=(e)+K_00_19+ROTATE((a),5)+F_00_19((b),(c),(d)); \
225 (b)=ROTATE((b),30);
226
227#define BODY_20_31(i,a,b,c,d,e,f,xa,xb,xc,xd) \
228 Xupdate(f,i,xa,xb,xc,xd); \
229 (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
230 (b)=ROTATE((b),30);
231
232#define BODY_32_39(i,a,b,c,d,e,f,xa) \
233 Xupdate(f,i,xa,xa,xa,xa); \
234 (f)+=(e)+K_20_39+ROTATE((a),5)+F_20_39((b),(c),(d)); \
235 (b)=ROTATE((b),30);
236
237#define BODY_40_59(i,a,b,c,d,e,f,xa) \
238 Xupdate(f,i,xa,xa,xa,xa); \
239 (f)+=(e)+K_40_59+ROTATE((a),5)+F_40_59((b),(c),(d)); \
240 (b)=ROTATE((b),30);
241
242#define BODY_60_79(i,a,b,c,d,e,f,xa) \
243 Xupdate(f,i,xa,xa,xa,xa); \
244 (f)=X[(i)&0x0f]+(e)+K_60_79+ROTATE((a),5)+F_60_79((b),(c),(d)); \
245 (b)=ROTATE((b),30);
246