Upstream version 11.40.271.0
[platform/framework/web/crosswalk.git] / src / third_party / boringssl / win-x86 / crypto / sha / sha1-586.asm
1 %ifidn __OUTPUT_FORMAT__,obj
2 section code    use32 class=code align=64
3 %elifidn __OUTPUT_FORMAT__,win32
4 %ifdef __YASM_VERSION_ID__
5 %if __YASM_VERSION_ID__ < 01010000h
6 %error yasm version 1.1.0 or later needed.
7 %endif
8 ; Yasm automatically includes .00 and complains about redefining it.
9 ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
10 %else
11 $@feat.00 equ 1
12 %endif
13 section .text   code align=64
14 %else
15 section .text   code
16 %endif
17 global  _sha1_block_data_order
18 align   16
19 _sha1_block_data_order:
20 L$_sha1_block_data_order_begin:
21         push    ebp
22         push    ebx
23         push    esi
24         push    edi
25         mov     ebp,DWORD [20+esp]
26         mov     esi,DWORD [24+esp]
27         mov     eax,DWORD [28+esp]
28         sub     esp,76
29         shl     eax,6
30         add     eax,esi
31         mov     DWORD [104+esp],eax
32         mov     edi,DWORD [16+ebp]
33         jmp     NEAR L$000loop
34 align   16
35 L$000loop:
36         mov     eax,DWORD [esi]
37         mov     ebx,DWORD [4+esi]
38         mov     ecx,DWORD [8+esi]
39         mov     edx,DWORD [12+esi]
40         bswap   eax
41         bswap   ebx
42         bswap   ecx
43         bswap   edx
44         mov     DWORD [esp],eax
45         mov     DWORD [4+esp],ebx
46         mov     DWORD [8+esp],ecx
47         mov     DWORD [12+esp],edx
48         mov     eax,DWORD [16+esi]
49         mov     ebx,DWORD [20+esi]
50         mov     ecx,DWORD [24+esi]
51         mov     edx,DWORD [28+esi]
52         bswap   eax
53         bswap   ebx
54         bswap   ecx
55         bswap   edx
56         mov     DWORD [16+esp],eax
57         mov     DWORD [20+esp],ebx
58         mov     DWORD [24+esp],ecx
59         mov     DWORD [28+esp],edx
60         mov     eax,DWORD [32+esi]
61         mov     ebx,DWORD [36+esi]
62         mov     ecx,DWORD [40+esi]
63         mov     edx,DWORD [44+esi]
64         bswap   eax
65         bswap   ebx
66         bswap   ecx
67         bswap   edx
68         mov     DWORD [32+esp],eax
69         mov     DWORD [36+esp],ebx
70         mov     DWORD [40+esp],ecx
71         mov     DWORD [44+esp],edx
72         mov     eax,DWORD [48+esi]
73         mov     ebx,DWORD [52+esi]
74         mov     ecx,DWORD [56+esi]
75         mov     edx,DWORD [60+esi]
76         bswap   eax
77         bswap   ebx
78         bswap   ecx
79         bswap   edx
80         mov     DWORD [48+esp],eax
81         mov     DWORD [52+esp],ebx
82         mov     DWORD [56+esp],ecx
83         mov     DWORD [60+esp],edx
84         mov     DWORD [100+esp],esi
85         mov     eax,DWORD [ebp]
86         mov     ebx,DWORD [4+ebp]
87         mov     ecx,DWORD [8+ebp]
88         mov     edx,DWORD [12+ebp]
89         ; 00_15 0
90         mov     esi,ecx
91         mov     ebp,eax
92         rol     ebp,5
93         xor     esi,edx
94         add     ebp,edi
95         mov     edi,DWORD [esp]
96         and     esi,ebx
97         ror     ebx,2
98         xor     esi,edx
99         lea     ebp,[1518500249+edi*1+ebp]
100         add     ebp,esi
101         ; 00_15 1
102         mov     edi,ebx
103         mov     esi,ebp
104         rol     ebp,5
105         xor     edi,ecx
106         add     ebp,edx
107         mov     edx,DWORD [4+esp]
108         and     edi,eax
109         ror     eax,2
110         xor     edi,ecx
111         lea     ebp,[1518500249+edx*1+ebp]
112         add     ebp,edi
113         ; 00_15 2
114         mov     edx,eax
115         mov     edi,ebp
116         rol     ebp,5
117         xor     edx,ebx
118         add     ebp,ecx
119         mov     ecx,DWORD [8+esp]
120         and     edx,esi
121         ror     esi,2
122         xor     edx,ebx
123         lea     ebp,[1518500249+ecx*1+ebp]
124         add     ebp,edx
125         ; 00_15 3
126         mov     ecx,esi
127         mov     edx,ebp
128         rol     ebp,5
129         xor     ecx,eax
130         add     ebp,ebx
131         mov     ebx,DWORD [12+esp]
132         and     ecx,edi
133         ror     edi,2
134         xor     ecx,eax
135         lea     ebp,[1518500249+ebx*1+ebp]
136         add     ebp,ecx
137         ; 00_15 4
138         mov     ebx,edi
139         mov     ecx,ebp
140         rol     ebp,5
141         xor     ebx,esi
142         add     ebp,eax
143         mov     eax,DWORD [16+esp]
144         and     ebx,edx
145         ror     edx,2
146         xor     ebx,esi
147         lea     ebp,[1518500249+eax*1+ebp]
148         add     ebp,ebx
149         ; 00_15 5
150         mov     eax,edx
151         mov     ebx,ebp
152         rol     ebp,5
153         xor     eax,edi
154         add     ebp,esi
155         mov     esi,DWORD [20+esp]
156         and     eax,ecx
157         ror     ecx,2
158         xor     eax,edi
159         lea     ebp,[1518500249+esi*1+ebp]
160         add     ebp,eax
161         ; 00_15 6
162         mov     esi,ecx
163         mov     eax,ebp
164         rol     ebp,5
165         xor     esi,edx
166         add     ebp,edi
167         mov     edi,DWORD [24+esp]
168         and     esi,ebx
169         ror     ebx,2
170         xor     esi,edx
171         lea     ebp,[1518500249+edi*1+ebp]
172         add     ebp,esi
173         ; 00_15 7
174         mov     edi,ebx
175         mov     esi,ebp
176         rol     ebp,5
177         xor     edi,ecx
178         add     ebp,edx
179         mov     edx,DWORD [28+esp]
180         and     edi,eax
181         ror     eax,2
182         xor     edi,ecx
183         lea     ebp,[1518500249+edx*1+ebp]
184         add     ebp,edi
185         ; 00_15 8
186         mov     edx,eax
187         mov     edi,ebp
188         rol     ebp,5
189         xor     edx,ebx
190         add     ebp,ecx
191         mov     ecx,DWORD [32+esp]
192         and     edx,esi
193         ror     esi,2
194         xor     edx,ebx
195         lea     ebp,[1518500249+ecx*1+ebp]
196         add     ebp,edx
197         ; 00_15 9
198         mov     ecx,esi
199         mov     edx,ebp
200         rol     ebp,5
201         xor     ecx,eax
202         add     ebp,ebx
203         mov     ebx,DWORD [36+esp]
204         and     ecx,edi
205         ror     edi,2
206         xor     ecx,eax
207         lea     ebp,[1518500249+ebx*1+ebp]
208         add     ebp,ecx
209         ; 00_15 10
210         mov     ebx,edi
211         mov     ecx,ebp
212         rol     ebp,5
213         xor     ebx,esi
214         add     ebp,eax
215         mov     eax,DWORD [40+esp]
216         and     ebx,edx
217         ror     edx,2
218         xor     ebx,esi
219         lea     ebp,[1518500249+eax*1+ebp]
220         add     ebp,ebx
221         ; 00_15 11
222         mov     eax,edx
223         mov     ebx,ebp
224         rol     ebp,5
225         xor     eax,edi
226         add     ebp,esi
227         mov     esi,DWORD [44+esp]
228         and     eax,ecx
229         ror     ecx,2
230         xor     eax,edi
231         lea     ebp,[1518500249+esi*1+ebp]
232         add     ebp,eax
233         ; 00_15 12
234         mov     esi,ecx
235         mov     eax,ebp
236         rol     ebp,5
237         xor     esi,edx
238         add     ebp,edi
239         mov     edi,DWORD [48+esp]
240         and     esi,ebx
241         ror     ebx,2
242         xor     esi,edx
243         lea     ebp,[1518500249+edi*1+ebp]
244         add     ebp,esi
245         ; 00_15 13
246         mov     edi,ebx
247         mov     esi,ebp
248         rol     ebp,5
249         xor     edi,ecx
250         add     ebp,edx
251         mov     edx,DWORD [52+esp]
252         and     edi,eax
253         ror     eax,2
254         xor     edi,ecx
255         lea     ebp,[1518500249+edx*1+ebp]
256         add     ebp,edi
257         ; 00_15 14
258         mov     edx,eax
259         mov     edi,ebp
260         rol     ebp,5
261         xor     edx,ebx
262         add     ebp,ecx
263         mov     ecx,DWORD [56+esp]
264         and     edx,esi
265         ror     esi,2
266         xor     edx,ebx
267         lea     ebp,[1518500249+ecx*1+ebp]
268         add     ebp,edx
269         ; 00_15 15
270         mov     ecx,esi
271         mov     edx,ebp
272         rol     ebp,5
273         xor     ecx,eax
274         add     ebp,ebx
275         mov     ebx,DWORD [60+esp]
276         and     ecx,edi
277         ror     edi,2
278         xor     ecx,eax
279         lea     ebp,[1518500249+ebx*1+ebp]
280         mov     ebx,DWORD [esp]
281         add     ecx,ebp
282         ; 16_19 16
283         mov     ebp,edi
284         xor     ebx,DWORD [8+esp]
285         xor     ebp,esi
286         xor     ebx,DWORD [32+esp]
287         and     ebp,edx
288         xor     ebx,DWORD [52+esp]
289         rol     ebx,1
290         xor     ebp,esi
291         add     eax,ebp
292         mov     ebp,ecx
293         ror     edx,2
294         mov     DWORD [esp],ebx
295         rol     ebp,5
296         lea     ebx,[1518500249+eax*1+ebx]
297         mov     eax,DWORD [4+esp]
298         add     ebx,ebp
299         ; 16_19 17
300         mov     ebp,edx
301         xor     eax,DWORD [12+esp]
302         xor     ebp,edi
303         xor     eax,DWORD [36+esp]
304         and     ebp,ecx
305         xor     eax,DWORD [56+esp]
306         rol     eax,1
307         xor     ebp,edi
308         add     esi,ebp
309         mov     ebp,ebx
310         ror     ecx,2
311         mov     DWORD [4+esp],eax
312         rol     ebp,5
313         lea     eax,[1518500249+esi*1+eax]
314         mov     esi,DWORD [8+esp]
315         add     eax,ebp
316         ; 16_19 18
317         mov     ebp,ecx
318         xor     esi,DWORD [16+esp]
319         xor     ebp,edx
320         xor     esi,DWORD [40+esp]
321         and     ebp,ebx
322         xor     esi,DWORD [60+esp]
323         rol     esi,1
324         xor     ebp,edx
325         add     edi,ebp
326         mov     ebp,eax
327         ror     ebx,2
328         mov     DWORD [8+esp],esi
329         rol     ebp,5
330         lea     esi,[1518500249+edi*1+esi]
331         mov     edi,DWORD [12+esp]
332         add     esi,ebp
333         ; 16_19 19
334         mov     ebp,ebx
335         xor     edi,DWORD [20+esp]
336         xor     ebp,ecx
337         xor     edi,DWORD [44+esp]
338         and     ebp,eax
339         xor     edi,DWORD [esp]
340         rol     edi,1
341         xor     ebp,ecx
342         add     edx,ebp
343         mov     ebp,esi
344         ror     eax,2
345         mov     DWORD [12+esp],edi
346         rol     ebp,5
347         lea     edi,[1518500249+edx*1+edi]
348         mov     edx,DWORD [16+esp]
349         add     edi,ebp
350         ; 20_39 20
351         mov     ebp,esi
352         xor     edx,DWORD [24+esp]
353         xor     ebp,eax
354         xor     edx,DWORD [48+esp]
355         xor     ebp,ebx
356         xor     edx,DWORD [4+esp]
357         rol     edx,1
358         add     ecx,ebp
359         ror     esi,2
360         mov     ebp,edi
361         rol     ebp,5
362         mov     DWORD [16+esp],edx
363         lea     edx,[1859775393+ecx*1+edx]
364         mov     ecx,DWORD [20+esp]
365         add     edx,ebp
366         ; 20_39 21
367         mov     ebp,edi
368         xor     ecx,DWORD [28+esp]
369         xor     ebp,esi
370         xor     ecx,DWORD [52+esp]
371         xor     ebp,eax
372         xor     ecx,DWORD [8+esp]
373         rol     ecx,1
374         add     ebx,ebp
375         ror     edi,2
376         mov     ebp,edx
377         rol     ebp,5
378         mov     DWORD [20+esp],ecx
379         lea     ecx,[1859775393+ebx*1+ecx]
380         mov     ebx,DWORD [24+esp]
381         add     ecx,ebp
382         ; 20_39 22
383         mov     ebp,edx
384         xor     ebx,DWORD [32+esp]
385         xor     ebp,edi
386         xor     ebx,DWORD [56+esp]
387         xor     ebp,esi
388         xor     ebx,DWORD [12+esp]
389         rol     ebx,1
390         add     eax,ebp
391         ror     edx,2
392         mov     ebp,ecx
393         rol     ebp,5
394         mov     DWORD [24+esp],ebx
395         lea     ebx,[1859775393+eax*1+ebx]
396         mov     eax,DWORD [28+esp]
397         add     ebx,ebp
398         ; 20_39 23
399         mov     ebp,ecx
400         xor     eax,DWORD [36+esp]
401         xor     ebp,edx
402         xor     eax,DWORD [60+esp]
403         xor     ebp,edi
404         xor     eax,DWORD [16+esp]
405         rol     eax,1
406         add     esi,ebp
407         ror     ecx,2
408         mov     ebp,ebx
409         rol     ebp,5
410         mov     DWORD [28+esp],eax
411         lea     eax,[1859775393+esi*1+eax]
412         mov     esi,DWORD [32+esp]
413         add     eax,ebp
414         ; 20_39 24
415         mov     ebp,ebx
416         xor     esi,DWORD [40+esp]
417         xor     ebp,ecx
418         xor     esi,DWORD [esp]
419         xor     ebp,edx
420         xor     esi,DWORD [20+esp]
421         rol     esi,1
422         add     edi,ebp
423         ror     ebx,2
424         mov     ebp,eax
425         rol     ebp,5
426         mov     DWORD [32+esp],esi
427         lea     esi,[1859775393+edi*1+esi]
428         mov     edi,DWORD [36+esp]
429         add     esi,ebp
430         ; 20_39 25
431         mov     ebp,eax
432         xor     edi,DWORD [44+esp]
433         xor     ebp,ebx
434         xor     edi,DWORD [4+esp]
435         xor     ebp,ecx
436         xor     edi,DWORD [24+esp]
437         rol     edi,1
438         add     edx,ebp
439         ror     eax,2
440         mov     ebp,esi
441         rol     ebp,5
442         mov     DWORD [36+esp],edi
443         lea     edi,[1859775393+edx*1+edi]
444         mov     edx,DWORD [40+esp]
445         add     edi,ebp
446         ; 20_39 26
447         mov     ebp,esi
448         xor     edx,DWORD [48+esp]
449         xor     ebp,eax
450         xor     edx,DWORD [8+esp]
451         xor     ebp,ebx
452         xor     edx,DWORD [28+esp]
453         rol     edx,1
454         add     ecx,ebp
455         ror     esi,2
456         mov     ebp,edi
457         rol     ebp,5
458         mov     DWORD [40+esp],edx
459         lea     edx,[1859775393+ecx*1+edx]
460         mov     ecx,DWORD [44+esp]
461         add     edx,ebp
462         ; 20_39 27
463         mov     ebp,edi
464         xor     ecx,DWORD [52+esp]
465         xor     ebp,esi
466         xor     ecx,DWORD [12+esp]
467         xor     ebp,eax
468         xor     ecx,DWORD [32+esp]
469         rol     ecx,1
470         add     ebx,ebp
471         ror     edi,2
472         mov     ebp,edx
473         rol     ebp,5
474         mov     DWORD [44+esp],ecx
475         lea     ecx,[1859775393+ebx*1+ecx]
476         mov     ebx,DWORD [48+esp]
477         add     ecx,ebp
478         ; 20_39 28
479         mov     ebp,edx
480         xor     ebx,DWORD [56+esp]
481         xor     ebp,edi
482         xor     ebx,DWORD [16+esp]
483         xor     ebp,esi
484         xor     ebx,DWORD [36+esp]
485         rol     ebx,1
486         add     eax,ebp
487         ror     edx,2
488         mov     ebp,ecx
489         rol     ebp,5
490         mov     DWORD [48+esp],ebx
491         lea     ebx,[1859775393+eax*1+ebx]
492         mov     eax,DWORD [52+esp]
493         add     ebx,ebp
494         ; 20_39 29
495         mov     ebp,ecx
496         xor     eax,DWORD [60+esp]
497         xor     ebp,edx
498         xor     eax,DWORD [20+esp]
499         xor     ebp,edi
500         xor     eax,DWORD [40+esp]
501         rol     eax,1
502         add     esi,ebp
503         ror     ecx,2
504         mov     ebp,ebx
505         rol     ebp,5
506         mov     DWORD [52+esp],eax
507         lea     eax,[1859775393+esi*1+eax]
508         mov     esi,DWORD [56+esp]
509         add     eax,ebp
510         ; 20_39 30
511         mov     ebp,ebx
512         xor     esi,DWORD [esp]
513         xor     ebp,ecx
514         xor     esi,DWORD [24+esp]
515         xor     ebp,edx
516         xor     esi,DWORD [44+esp]
517         rol     esi,1
518         add     edi,ebp
519         ror     ebx,2
520         mov     ebp,eax
521         rol     ebp,5
522         mov     DWORD [56+esp],esi
523         lea     esi,[1859775393+edi*1+esi]
524         mov     edi,DWORD [60+esp]
525         add     esi,ebp
526         ; 20_39 31
527         mov     ebp,eax
528         xor     edi,DWORD [4+esp]
529         xor     ebp,ebx
530         xor     edi,DWORD [28+esp]
531         xor     ebp,ecx
532         xor     edi,DWORD [48+esp]
533         rol     edi,1
534         add     edx,ebp
535         ror     eax,2
536         mov     ebp,esi
537         rol     ebp,5
538         mov     DWORD [60+esp],edi
539         lea     edi,[1859775393+edx*1+edi]
540         mov     edx,DWORD [esp]
541         add     edi,ebp
542         ; 20_39 32
543         mov     ebp,esi
544         xor     edx,DWORD [8+esp]
545         xor     ebp,eax
546         xor     edx,DWORD [32+esp]
547         xor     ebp,ebx
548         xor     edx,DWORD [52+esp]
549         rol     edx,1
550         add     ecx,ebp
551         ror     esi,2
552         mov     ebp,edi
553         rol     ebp,5
554         mov     DWORD [esp],edx
555         lea     edx,[1859775393+ecx*1+edx]
556         mov     ecx,DWORD [4+esp]
557         add     edx,ebp
558         ; 20_39 33
559         mov     ebp,edi
560         xor     ecx,DWORD [12+esp]
561         xor     ebp,esi
562         xor     ecx,DWORD [36+esp]
563         xor     ebp,eax
564         xor     ecx,DWORD [56+esp]
565         rol     ecx,1
566         add     ebx,ebp
567         ror     edi,2
568         mov     ebp,edx
569         rol     ebp,5
570         mov     DWORD [4+esp],ecx
571         lea     ecx,[1859775393+ebx*1+ecx]
572         mov     ebx,DWORD [8+esp]
573         add     ecx,ebp
574         ; 20_39 34
575         mov     ebp,edx
576         xor     ebx,DWORD [16+esp]
577         xor     ebp,edi
578         xor     ebx,DWORD [40+esp]
579         xor     ebp,esi
580         xor     ebx,DWORD [60+esp]
581         rol     ebx,1
582         add     eax,ebp
583         ror     edx,2
584         mov     ebp,ecx
585         rol     ebp,5
586         mov     DWORD [8+esp],ebx
587         lea     ebx,[1859775393+eax*1+ebx]
588         mov     eax,DWORD [12+esp]
589         add     ebx,ebp
590         ; 20_39 35
591         mov     ebp,ecx
592         xor     eax,DWORD [20+esp]
593         xor     ebp,edx
594         xor     eax,DWORD [44+esp]
595         xor     ebp,edi
596         xor     eax,DWORD [esp]
597         rol     eax,1
598         add     esi,ebp
599         ror     ecx,2
600         mov     ebp,ebx
601         rol     ebp,5
602         mov     DWORD [12+esp],eax
603         lea     eax,[1859775393+esi*1+eax]
604         mov     esi,DWORD [16+esp]
605         add     eax,ebp
606         ; 20_39 36
607         mov     ebp,ebx
608         xor     esi,DWORD [24+esp]
609         xor     ebp,ecx
610         xor     esi,DWORD [48+esp]
611         xor     ebp,edx
612         xor     esi,DWORD [4+esp]
613         rol     esi,1
614         add     edi,ebp
615         ror     ebx,2
616         mov     ebp,eax
617         rol     ebp,5
618         mov     DWORD [16+esp],esi
619         lea     esi,[1859775393+edi*1+esi]
620         mov     edi,DWORD [20+esp]
621         add     esi,ebp
622         ; 20_39 37
623         mov     ebp,eax
624         xor     edi,DWORD [28+esp]
625         xor     ebp,ebx
626         xor     edi,DWORD [52+esp]
627         xor     ebp,ecx
628         xor     edi,DWORD [8+esp]
629         rol     edi,1
630         add     edx,ebp
631         ror     eax,2
632         mov     ebp,esi
633         rol     ebp,5
634         mov     DWORD [20+esp],edi
635         lea     edi,[1859775393+edx*1+edi]
636         mov     edx,DWORD [24+esp]
637         add     edi,ebp
638         ; 20_39 38
639         mov     ebp,esi
640         xor     edx,DWORD [32+esp]
641         xor     ebp,eax
642         xor     edx,DWORD [56+esp]
643         xor     ebp,ebx
644         xor     edx,DWORD [12+esp]
645         rol     edx,1
646         add     ecx,ebp
647         ror     esi,2
648         mov     ebp,edi
649         rol     ebp,5
650         mov     DWORD [24+esp],edx
651         lea     edx,[1859775393+ecx*1+edx]
652         mov     ecx,DWORD [28+esp]
653         add     edx,ebp
654         ; 20_39 39
655         mov     ebp,edi
656         xor     ecx,DWORD [36+esp]
657         xor     ebp,esi
658         xor     ecx,DWORD [60+esp]
659         xor     ebp,eax
660         xor     ecx,DWORD [16+esp]
661         rol     ecx,1
662         add     ebx,ebp
663         ror     edi,2
664         mov     ebp,edx
665         rol     ebp,5
666         mov     DWORD [28+esp],ecx
667         lea     ecx,[1859775393+ebx*1+ecx]
668         mov     ebx,DWORD [32+esp]
669         add     ecx,ebp
670         ; 40_59 40
671         mov     ebp,edi
672         xor     ebx,DWORD [40+esp]
673         xor     ebp,esi
674         xor     ebx,DWORD [esp]
675         and     ebp,edx
676         xor     ebx,DWORD [20+esp]
677         rol     ebx,1
678         add     ebp,eax
679         ror     edx,2
680         mov     eax,ecx
681         rol     eax,5
682         mov     DWORD [32+esp],ebx
683         lea     ebx,[2400959708+ebp*1+ebx]
684         mov     ebp,edi
685         add     ebx,eax
686         and     ebp,esi
687         mov     eax,DWORD [36+esp]
688         add     ebx,ebp
689         ; 40_59 41
690         mov     ebp,edx
691         xor     eax,DWORD [44+esp]
692         xor     ebp,edi
693         xor     eax,DWORD [4+esp]
694         and     ebp,ecx
695         xor     eax,DWORD [24+esp]
696         rol     eax,1
697         add     ebp,esi
698         ror     ecx,2
699         mov     esi,ebx
700         rol     esi,5
701         mov     DWORD [36+esp],eax
702         lea     eax,[2400959708+ebp*1+eax]
703         mov     ebp,edx
704         add     eax,esi
705         and     ebp,edi
706         mov     esi,DWORD [40+esp]
707         add     eax,ebp
708         ; 40_59 42
709         mov     ebp,ecx
710         xor     esi,DWORD [48+esp]
711         xor     ebp,edx
712         xor     esi,DWORD [8+esp]
713         and     ebp,ebx
714         xor     esi,DWORD [28+esp]
715         rol     esi,1
716         add     ebp,edi
717         ror     ebx,2
718         mov     edi,eax
719         rol     edi,5
720         mov     DWORD [40+esp],esi
721         lea     esi,[2400959708+ebp*1+esi]
722         mov     ebp,ecx
723         add     esi,edi
724         and     ebp,edx
725         mov     edi,DWORD [44+esp]
726         add     esi,ebp
727         ; 40_59 43
728         mov     ebp,ebx
729         xor     edi,DWORD [52+esp]
730         xor     ebp,ecx
731         xor     edi,DWORD [12+esp]
732         and     ebp,eax
733         xor     edi,DWORD [32+esp]
734         rol     edi,1
735         add     ebp,edx
736         ror     eax,2
737         mov     edx,esi
738         rol     edx,5
739         mov     DWORD [44+esp],edi
740         lea     edi,[2400959708+ebp*1+edi]
741         mov     ebp,ebx
742         add     edi,edx
743         and     ebp,ecx
744         mov     edx,DWORD [48+esp]
745         add     edi,ebp
746         ; 40_59 44
747         mov     ebp,eax
748         xor     edx,DWORD [56+esp]
749         xor     ebp,ebx
750         xor     edx,DWORD [16+esp]
751         and     ebp,esi
752         xor     edx,DWORD [36+esp]
753         rol     edx,1
754         add     ebp,ecx
755         ror     esi,2
756         mov     ecx,edi
757         rol     ecx,5
758         mov     DWORD [48+esp],edx
759         lea     edx,[2400959708+ebp*1+edx]
760         mov     ebp,eax
761         add     edx,ecx
762         and     ebp,ebx
763         mov     ecx,DWORD [52+esp]
764         add     edx,ebp
765         ; 40_59 45
766         mov     ebp,esi
767         xor     ecx,DWORD [60+esp]
768         xor     ebp,eax
769         xor     ecx,DWORD [20+esp]
770         and     ebp,edi
771         xor     ecx,DWORD [40+esp]
772         rol     ecx,1
773         add     ebp,ebx
774         ror     edi,2
775         mov     ebx,edx
776         rol     ebx,5
777         mov     DWORD [52+esp],ecx
778         lea     ecx,[2400959708+ebp*1+ecx]
779         mov     ebp,esi
780         add     ecx,ebx
781         and     ebp,eax
782         mov     ebx,DWORD [56+esp]
783         add     ecx,ebp
784         ; 40_59 46
785         mov     ebp,edi
786         xor     ebx,DWORD [esp]
787         xor     ebp,esi
788         xor     ebx,DWORD [24+esp]
789         and     ebp,edx
790         xor     ebx,DWORD [44+esp]
791         rol     ebx,1
792         add     ebp,eax
793         ror     edx,2
794         mov     eax,ecx
795         rol     eax,5
796         mov     DWORD [56+esp],ebx
797         lea     ebx,[2400959708+ebp*1+ebx]
798         mov     ebp,edi
799         add     ebx,eax
800         and     ebp,esi
801         mov     eax,DWORD [60+esp]
802         add     ebx,ebp
803         ; 40_59 47
804         mov     ebp,edx
805         xor     eax,DWORD [4+esp]
806         xor     ebp,edi
807         xor     eax,DWORD [28+esp]
808         and     ebp,ecx
809         xor     eax,DWORD [48+esp]
810         rol     eax,1
811         add     ebp,esi
812         ror     ecx,2
813         mov     esi,ebx
814         rol     esi,5
815         mov     DWORD [60+esp],eax
816         lea     eax,[2400959708+ebp*1+eax]
817         mov     ebp,edx
818         add     eax,esi
819         and     ebp,edi
820         mov     esi,DWORD [esp]
821         add     eax,ebp
822         ; 40_59 48
823         mov     ebp,ecx
824         xor     esi,DWORD [8+esp]
825         xor     ebp,edx
826         xor     esi,DWORD [32+esp]
827         and     ebp,ebx
828         xor     esi,DWORD [52+esp]
829         rol     esi,1
830         add     ebp,edi
831         ror     ebx,2
832         mov     edi,eax
833         rol     edi,5
834         mov     DWORD [esp],esi
835         lea     esi,[2400959708+ebp*1+esi]
836         mov     ebp,ecx
837         add     esi,edi
838         and     ebp,edx
839         mov     edi,DWORD [4+esp]
840         add     esi,ebp
841         ; 40_59 49
842         mov     ebp,ebx
843         xor     edi,DWORD [12+esp]
844         xor     ebp,ecx
845         xor     edi,DWORD [36+esp]
846         and     ebp,eax
847         xor     edi,DWORD [56+esp]
848         rol     edi,1
849         add     ebp,edx
850         ror     eax,2
851         mov     edx,esi
852         rol     edx,5
853         mov     DWORD [4+esp],edi
854         lea     edi,[2400959708+ebp*1+edi]
855         mov     ebp,ebx
856         add     edi,edx
857         and     ebp,ecx
858         mov     edx,DWORD [8+esp]
859         add     edi,ebp
860         ; 40_59 50
861         mov     ebp,eax
862         xor     edx,DWORD [16+esp]
863         xor     ebp,ebx
864         xor     edx,DWORD [40+esp]
865         and     ebp,esi
866         xor     edx,DWORD [60+esp]
867         rol     edx,1
868         add     ebp,ecx
869         ror     esi,2
870         mov     ecx,edi
871         rol     ecx,5
872         mov     DWORD [8+esp],edx
873         lea     edx,[2400959708+ebp*1+edx]
874         mov     ebp,eax
875         add     edx,ecx
876         and     ebp,ebx
877         mov     ecx,DWORD [12+esp]
878         add     edx,ebp
879         ; 40_59 51
880         mov     ebp,esi
881         xor     ecx,DWORD [20+esp]
882         xor     ebp,eax
883         xor     ecx,DWORD [44+esp]
884         and     ebp,edi
885         xor     ecx,DWORD [esp]
886         rol     ecx,1
887         add     ebp,ebx
888         ror     edi,2
889         mov     ebx,edx
890         rol     ebx,5
891         mov     DWORD [12+esp],ecx
892         lea     ecx,[2400959708+ebp*1+ecx]
893         mov     ebp,esi
894         add     ecx,ebx
895         and     ebp,eax
896         mov     ebx,DWORD [16+esp]
897         add     ecx,ebp
898         ; 40_59 52
899         mov     ebp,edi
900         xor     ebx,DWORD [24+esp]
901         xor     ebp,esi
902         xor     ebx,DWORD [48+esp]
903         and     ebp,edx
904         xor     ebx,DWORD [4+esp]
905         rol     ebx,1
906         add     ebp,eax
907         ror     edx,2
908         mov     eax,ecx
909         rol     eax,5
910         mov     DWORD [16+esp],ebx
911         lea     ebx,[2400959708+ebp*1+ebx]
912         mov     ebp,edi
913         add     ebx,eax
914         and     ebp,esi
915         mov     eax,DWORD [20+esp]
916         add     ebx,ebp
917         ; 40_59 53
918         mov     ebp,edx
919         xor     eax,DWORD [28+esp]
920         xor     ebp,edi
921         xor     eax,DWORD [52+esp]
922         and     ebp,ecx
923         xor     eax,DWORD [8+esp]
924         rol     eax,1
925         add     ebp,esi
926         ror     ecx,2
927         mov     esi,ebx
928         rol     esi,5
929         mov     DWORD [20+esp],eax
930         lea     eax,[2400959708+ebp*1+eax]
931         mov     ebp,edx
932         add     eax,esi
933         and     ebp,edi
934         mov     esi,DWORD [24+esp]
935         add     eax,ebp
936         ; 40_59 54
937         mov     ebp,ecx
938         xor     esi,DWORD [32+esp]
939         xor     ebp,edx
940         xor     esi,DWORD [56+esp]
941         and     ebp,ebx
942         xor     esi,DWORD [12+esp]
943         rol     esi,1
944         add     ebp,edi
945         ror     ebx,2
946         mov     edi,eax
947         rol     edi,5
948         mov     DWORD [24+esp],esi
949         lea     esi,[2400959708+ebp*1+esi]
950         mov     ebp,ecx
951         add     esi,edi
952         and     ebp,edx
953         mov     edi,DWORD [28+esp]
954         add     esi,ebp
955         ; 40_59 55
956         mov     ebp,ebx
957         xor     edi,DWORD [36+esp]
958         xor     ebp,ecx
959         xor     edi,DWORD [60+esp]
960         and     ebp,eax
961         xor     edi,DWORD [16+esp]
962         rol     edi,1
963         add     ebp,edx
964         ror     eax,2
965         mov     edx,esi
966         rol     edx,5
967         mov     DWORD [28+esp],edi
968         lea     edi,[2400959708+ebp*1+edi]
969         mov     ebp,ebx
970         add     edi,edx
971         and     ebp,ecx
972         mov     edx,DWORD [32+esp]
973         add     edi,ebp
974         ; 40_59 56
975         mov     ebp,eax
976         xor     edx,DWORD [40+esp]
977         xor     ebp,ebx
978         xor     edx,DWORD [esp]
979         and     ebp,esi
980         xor     edx,DWORD [20+esp]
981         rol     edx,1
982         add     ebp,ecx
983         ror     esi,2
984         mov     ecx,edi
985         rol     ecx,5
986         mov     DWORD [32+esp],edx
987         lea     edx,[2400959708+ebp*1+edx]
988         mov     ebp,eax
989         add     edx,ecx
990         and     ebp,ebx
991         mov     ecx,DWORD [36+esp]
992         add     edx,ebp
993         ; 40_59 57
994         mov     ebp,esi
995         xor     ecx,DWORD [44+esp]
996         xor     ebp,eax
997         xor     ecx,DWORD [4+esp]
998         and     ebp,edi
999         xor     ecx,DWORD [24+esp]
1000         rol     ecx,1
1001         add     ebp,ebx
1002         ror     edi,2
1003         mov     ebx,edx
1004         rol     ebx,5
1005         mov     DWORD [36+esp],ecx
1006         lea     ecx,[2400959708+ebp*1+ecx]
1007         mov     ebp,esi
1008         add     ecx,ebx
1009         and     ebp,eax
1010         mov     ebx,DWORD [40+esp]
1011         add     ecx,ebp
1012         ; 40_59 58
1013         mov     ebp,edi
1014         xor     ebx,DWORD [48+esp]
1015         xor     ebp,esi
1016         xor     ebx,DWORD [8+esp]
1017         and     ebp,edx
1018         xor     ebx,DWORD [28+esp]
1019         rol     ebx,1
1020         add     ebp,eax
1021         ror     edx,2
1022         mov     eax,ecx
1023         rol     eax,5
1024         mov     DWORD [40+esp],ebx
1025         lea     ebx,[2400959708+ebp*1+ebx]
1026         mov     ebp,edi
1027         add     ebx,eax
1028         and     ebp,esi
1029         mov     eax,DWORD [44+esp]
1030         add     ebx,ebp
1031         ; 40_59 59
1032         mov     ebp,edx
1033         xor     eax,DWORD [52+esp]
1034         xor     ebp,edi
1035         xor     eax,DWORD [12+esp]
1036         and     ebp,ecx
1037         xor     eax,DWORD [32+esp]
1038         rol     eax,1
1039         add     ebp,esi
1040         ror     ecx,2
1041         mov     esi,ebx
1042         rol     esi,5
1043         mov     DWORD [44+esp],eax
1044         lea     eax,[2400959708+ebp*1+eax]
1045         mov     ebp,edx
1046         add     eax,esi
1047         and     ebp,edi
1048         mov     esi,DWORD [48+esp]
1049         add     eax,ebp
1050         ; 20_39 60
1051         mov     ebp,ebx
1052         xor     esi,DWORD [56+esp]
1053         xor     ebp,ecx
1054         xor     esi,DWORD [16+esp]
1055         xor     ebp,edx
1056         xor     esi,DWORD [36+esp]
1057         rol     esi,1
1058         add     edi,ebp
1059         ror     ebx,2
1060         mov     ebp,eax
1061         rol     ebp,5
1062         mov     DWORD [48+esp],esi
1063         lea     esi,[3395469782+edi*1+esi]
1064         mov     edi,DWORD [52+esp]
1065         add     esi,ebp
1066         ; 20_39 61
1067         mov     ebp,eax
1068         xor     edi,DWORD [60+esp]
1069         xor     ebp,ebx
1070         xor     edi,DWORD [20+esp]
1071         xor     ebp,ecx
1072         xor     edi,DWORD [40+esp]
1073         rol     edi,1
1074         add     edx,ebp
1075         ror     eax,2
1076         mov     ebp,esi
1077         rol     ebp,5
1078         mov     DWORD [52+esp],edi
1079         lea     edi,[3395469782+edx*1+edi]
1080         mov     edx,DWORD [56+esp]
1081         add     edi,ebp
1082         ; 20_39 62
1083         mov     ebp,esi
1084         xor     edx,DWORD [esp]
1085         xor     ebp,eax
1086         xor     edx,DWORD [24+esp]
1087         xor     ebp,ebx
1088         xor     edx,DWORD [44+esp]
1089         rol     edx,1
1090         add     ecx,ebp
1091         ror     esi,2
1092         mov     ebp,edi
1093         rol     ebp,5
1094         mov     DWORD [56+esp],edx
1095         lea     edx,[3395469782+ecx*1+edx]
1096         mov     ecx,DWORD [60+esp]
1097         add     edx,ebp
1098         ; 20_39 63
1099         mov     ebp,edi
1100         xor     ecx,DWORD [4+esp]
1101         xor     ebp,esi
1102         xor     ecx,DWORD [28+esp]
1103         xor     ebp,eax
1104         xor     ecx,DWORD [48+esp]
1105         rol     ecx,1
1106         add     ebx,ebp
1107         ror     edi,2
1108         mov     ebp,edx
1109         rol     ebp,5
1110         mov     DWORD [60+esp],ecx
1111         lea     ecx,[3395469782+ebx*1+ecx]
1112         mov     ebx,DWORD [esp]
1113         add     ecx,ebp
1114         ; 20_39 64
1115         mov     ebp,edx
1116         xor     ebx,DWORD [8+esp]
1117         xor     ebp,edi
1118         xor     ebx,DWORD [32+esp]
1119         xor     ebp,esi
1120         xor     ebx,DWORD [52+esp]
1121         rol     ebx,1
1122         add     eax,ebp
1123         ror     edx,2
1124         mov     ebp,ecx
1125         rol     ebp,5
1126         mov     DWORD [esp],ebx
1127         lea     ebx,[3395469782+eax*1+ebx]
1128         mov     eax,DWORD [4+esp]
1129         add     ebx,ebp
1130         ; 20_39 65
1131         mov     ebp,ecx
1132         xor     eax,DWORD [12+esp]
1133         xor     ebp,edx
1134         xor     eax,DWORD [36+esp]
1135         xor     ebp,edi
1136         xor     eax,DWORD [56+esp]
1137         rol     eax,1
1138         add     esi,ebp
1139         ror     ecx,2
1140         mov     ebp,ebx
1141         rol     ebp,5
1142         mov     DWORD [4+esp],eax
1143         lea     eax,[3395469782+esi*1+eax]
1144         mov     esi,DWORD [8+esp]
1145         add     eax,ebp
1146         ; 20_39 66
1147         mov     ebp,ebx
1148         xor     esi,DWORD [16+esp]
1149         xor     ebp,ecx
1150         xor     esi,DWORD [40+esp]
1151         xor     ebp,edx
1152         xor     esi,DWORD [60+esp]
1153         rol     esi,1
1154         add     edi,ebp
1155         ror     ebx,2
1156         mov     ebp,eax
1157         rol     ebp,5
1158         mov     DWORD [8+esp],esi
1159         lea     esi,[3395469782+edi*1+esi]
1160         mov     edi,DWORD [12+esp]
1161         add     esi,ebp
1162         ; 20_39 67
1163         mov     ebp,eax
1164         xor     edi,DWORD [20+esp]
1165         xor     ebp,ebx
1166         xor     edi,DWORD [44+esp]
1167         xor     ebp,ecx
1168         xor     edi,DWORD [esp]
1169         rol     edi,1
1170         add     edx,ebp
1171         ror     eax,2
1172         mov     ebp,esi
1173         rol     ebp,5
1174         mov     DWORD [12+esp],edi
1175         lea     edi,[3395469782+edx*1+edi]
1176         mov     edx,DWORD [16+esp]
1177         add     edi,ebp
1178         ; 20_39 68
1179         mov     ebp,esi
1180         xor     edx,DWORD [24+esp]
1181         xor     ebp,eax
1182         xor     edx,DWORD [48+esp]
1183         xor     ebp,ebx
1184         xor     edx,DWORD [4+esp]
1185         rol     edx,1
1186         add     ecx,ebp
1187         ror     esi,2
1188         mov     ebp,edi
1189         rol     ebp,5
1190         mov     DWORD [16+esp],edx
1191         lea     edx,[3395469782+ecx*1+edx]
1192         mov     ecx,DWORD [20+esp]
1193         add     edx,ebp
1194         ; 20_39 69
1195         mov     ebp,edi
1196         xor     ecx,DWORD [28+esp]
1197         xor     ebp,esi
1198         xor     ecx,DWORD [52+esp]
1199         xor     ebp,eax
1200         xor     ecx,DWORD [8+esp]
1201         rol     ecx,1
1202         add     ebx,ebp
1203         ror     edi,2
1204         mov     ebp,edx
1205         rol     ebp,5
1206         mov     DWORD [20+esp],ecx
1207         lea     ecx,[3395469782+ebx*1+ecx]
1208         mov     ebx,DWORD [24+esp]
1209         add     ecx,ebp
1210         ; 20_39 70
1211         mov     ebp,edx
1212         xor     ebx,DWORD [32+esp]
1213         xor     ebp,edi
1214         xor     ebx,DWORD [56+esp]
1215         xor     ebp,esi
1216         xor     ebx,DWORD [12+esp]
1217         rol     ebx,1
1218         add     eax,ebp
1219         ror     edx,2
1220         mov     ebp,ecx
1221         rol     ebp,5
1222         mov     DWORD [24+esp],ebx
1223         lea     ebx,[3395469782+eax*1+ebx]
1224         mov     eax,DWORD [28+esp]
1225         add     ebx,ebp
1226         ; 20_39 71
1227         mov     ebp,ecx
1228         xor     eax,DWORD [36+esp]
1229         xor     ebp,edx
1230         xor     eax,DWORD [60+esp]
1231         xor     ebp,edi
1232         xor     eax,DWORD [16+esp]
1233         rol     eax,1
1234         add     esi,ebp
1235         ror     ecx,2
1236         mov     ebp,ebx
1237         rol     ebp,5
1238         mov     DWORD [28+esp],eax
1239         lea     eax,[3395469782+esi*1+eax]
1240         mov     esi,DWORD [32+esp]
1241         add     eax,ebp
1242         ; 20_39 72
1243         mov     ebp,ebx
1244         xor     esi,DWORD [40+esp]
1245         xor     ebp,ecx
1246         xor     esi,DWORD [esp]
1247         xor     ebp,edx
1248         xor     esi,DWORD [20+esp]
1249         rol     esi,1
1250         add     edi,ebp
1251         ror     ebx,2
1252         mov     ebp,eax
1253         rol     ebp,5
1254         mov     DWORD [32+esp],esi
1255         lea     esi,[3395469782+edi*1+esi]
1256         mov     edi,DWORD [36+esp]
1257         add     esi,ebp
1258         ; 20_39 73
1259         mov     ebp,eax
1260         xor     edi,DWORD [44+esp]
1261         xor     ebp,ebx
1262         xor     edi,DWORD [4+esp]
1263         xor     ebp,ecx
1264         xor     edi,DWORD [24+esp]
1265         rol     edi,1
1266         add     edx,ebp
1267         ror     eax,2
1268         mov     ebp,esi
1269         rol     ebp,5
1270         mov     DWORD [36+esp],edi
1271         lea     edi,[3395469782+edx*1+edi]
1272         mov     edx,DWORD [40+esp]
1273         add     edi,ebp
1274         ; 20_39 74
1275         mov     ebp,esi
1276         xor     edx,DWORD [48+esp]
1277         xor     ebp,eax
1278         xor     edx,DWORD [8+esp]
1279         xor     ebp,ebx
1280         xor     edx,DWORD [28+esp]
1281         rol     edx,1
1282         add     ecx,ebp
1283         ror     esi,2
1284         mov     ebp,edi
1285         rol     ebp,5
1286         mov     DWORD [40+esp],edx
1287         lea     edx,[3395469782+ecx*1+edx]
1288         mov     ecx,DWORD [44+esp]
1289         add     edx,ebp
1290         ; 20_39 75
1291         mov     ebp,edi
1292         xor     ecx,DWORD [52+esp]
1293         xor     ebp,esi
1294         xor     ecx,DWORD [12+esp]
1295         xor     ebp,eax
1296         xor     ecx,DWORD [32+esp]
1297         rol     ecx,1
1298         add     ebx,ebp
1299         ror     edi,2
1300         mov     ebp,edx
1301         rol     ebp,5
1302         mov     DWORD [44+esp],ecx
1303         lea     ecx,[3395469782+ebx*1+ecx]
1304         mov     ebx,DWORD [48+esp]
1305         add     ecx,ebp
1306         ; 20_39 76
1307         mov     ebp,edx
1308         xor     ebx,DWORD [56+esp]
1309         xor     ebp,edi
1310         xor     ebx,DWORD [16+esp]
1311         xor     ebp,esi
1312         xor     ebx,DWORD [36+esp]
1313         rol     ebx,1
1314         add     eax,ebp
1315         ror     edx,2
1316         mov     ebp,ecx
1317         rol     ebp,5
1318         mov     DWORD [48+esp],ebx
1319         lea     ebx,[3395469782+eax*1+ebx]
1320         mov     eax,DWORD [52+esp]
1321         add     ebx,ebp
1322         ; 20_39 77
1323         mov     ebp,ecx
1324         xor     eax,DWORD [60+esp]
1325         xor     ebp,edx
1326         xor     eax,DWORD [20+esp]
1327         xor     ebp,edi
1328         xor     eax,DWORD [40+esp]
1329         rol     eax,1
1330         add     esi,ebp
1331         ror     ecx,2
1332         mov     ebp,ebx
1333         rol     ebp,5
1334         lea     eax,[3395469782+esi*1+eax]
1335         mov     esi,DWORD [56+esp]
1336         add     eax,ebp
1337         ; 20_39 78
1338         mov     ebp,ebx
1339         xor     esi,DWORD [esp]
1340         xor     ebp,ecx
1341         xor     esi,DWORD [24+esp]
1342         xor     ebp,edx
1343         xor     esi,DWORD [44+esp]
1344         rol     esi,1
1345         add     edi,ebp
1346         ror     ebx,2
1347         mov     ebp,eax
1348         rol     ebp,5
1349         lea     esi,[3395469782+edi*1+esi]
1350         mov     edi,DWORD [60+esp]
1351         add     esi,ebp
1352         ; 20_39 79
1353         mov     ebp,eax
1354         xor     edi,DWORD [4+esp]
1355         xor     ebp,ebx
1356         xor     edi,DWORD [28+esp]
1357         xor     ebp,ecx
1358         xor     edi,DWORD [48+esp]
1359         rol     edi,1
1360         add     edx,ebp
1361         ror     eax,2
1362         mov     ebp,esi
1363         rol     ebp,5
1364         lea     edi,[3395469782+edx*1+edi]
1365         add     edi,ebp
1366         mov     ebp,DWORD [96+esp]
1367         mov     edx,DWORD [100+esp]
1368         add     edi,DWORD [ebp]
1369         add     esi,DWORD [4+ebp]
1370         add     eax,DWORD [8+ebp]
1371         add     ebx,DWORD [12+ebp]
1372         add     ecx,DWORD [16+ebp]
1373         mov     DWORD [ebp],edi
1374         add     edx,64
1375         mov     DWORD [4+ebp],esi
1376         cmp     edx,DWORD [104+esp]
1377         mov     DWORD [8+ebp],eax
1378         mov     edi,ecx
1379         mov     DWORD [12+ebp],ebx
1380         mov     esi,edx
1381         mov     DWORD [16+ebp],ecx
1382         jb      NEAR L$000loop
1383         add     esp,76
1384         pop     edi
1385         pop     esi
1386         pop     ebx
1387         pop     ebp
1388         ret
1389 db      83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
1390 db      102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82
1391 db      89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
1392 db      114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0