Only free if it ain't NULL.
[openssl.git] / crypto / sha / asm / s1-win32.asm
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
11 PUBLIC  _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]
31 L000start:
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
1664 END