1 ; Don't even think of reading this code
2 ; It was automatically generated by crypt.pl
3 ; Which is a perl program used to generate the x86 assember for
4 ; any of elf, a.out, Win32, or Solaris
5 ; It can be found in SSLeay 0.6.5+ or in libdes 3.26+
6 ; eric <eay@cryptsoft.com>
7 ; The inner loop instruction sequence and the IP/FP modifications
8 ; are from Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
15 EXTRN _des_SPtrans:DWORD
16 _fcrypt_body PROC NEAR
25 mov ebp, DWORD PTR 24[esp]
26 mov DWORD PTR 36[esp],25
30 mov eax, DWORD PTR 28[esp]
33 mov ecx, DWORD PTR 32[esp]
43 mov ebx, DWORD PTR [ebp]
45 mov ecx, DWORD PTR 4[ebp]
56 mov ebp, DWORD PTR _des_SPtrans[ebx]
59 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
63 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
67 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
69 mov ebp, DWORD PTR 24[esp]
73 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
75 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
77 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
79 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
83 mov eax, DWORD PTR 28[esp]
86 mov ecx, DWORD PTR 32[esp]
96 mov ebx, DWORD PTR 8[ebp]
98 mov ecx, DWORD PTR 12[ebp]
109 mov ebp, DWORD PTR _des_SPtrans[ebx]
112 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
116 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
120 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
122 mov ebp, DWORD PTR 24[esp]
126 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
128 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
130 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
132 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
136 mov eax, DWORD PTR 28[esp]
139 mov ecx, DWORD PTR 32[esp]
149 mov ebx, DWORD PTR 16[ebp]
151 mov ecx, DWORD PTR 20[ebp]
162 mov ebp, DWORD PTR _des_SPtrans[ebx]
165 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
169 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
173 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
175 mov ebp, DWORD PTR 24[esp]
179 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
181 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
183 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
185 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
189 mov eax, DWORD PTR 28[esp]
192 mov ecx, DWORD PTR 32[esp]
202 mov ebx, DWORD PTR 24[ebp]
204 mov ecx, DWORD PTR 28[ebp]
215 mov ebp, DWORD PTR _des_SPtrans[ebx]
218 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
222 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
226 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
228 mov ebp, DWORD PTR 24[esp]
232 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
234 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
236 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
238 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
242 mov eax, DWORD PTR 28[esp]
245 mov ecx, DWORD PTR 32[esp]
255 mov ebx, DWORD PTR 32[ebp]
257 mov ecx, DWORD PTR 36[ebp]
268 mov ebp, DWORD PTR _des_SPtrans[ebx]
271 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
275 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
279 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
281 mov ebp, DWORD PTR 24[esp]
285 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
287 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
289 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
291 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
295 mov eax, DWORD PTR 28[esp]
298 mov ecx, DWORD PTR 32[esp]
308 mov ebx, DWORD PTR 40[ebp]
310 mov ecx, DWORD PTR 44[ebp]
321 mov ebp, DWORD PTR _des_SPtrans[ebx]
324 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
328 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
332 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
334 mov ebp, DWORD PTR 24[esp]
338 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
340 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
342 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
344 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
348 mov eax, DWORD PTR 28[esp]
351 mov ecx, DWORD PTR 32[esp]
361 mov ebx, DWORD PTR 48[ebp]
363 mov ecx, DWORD PTR 52[ebp]
374 mov ebp, DWORD PTR _des_SPtrans[ebx]
377 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
381 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
385 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
387 mov ebp, DWORD PTR 24[esp]
391 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
393 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
395 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
397 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
401 mov eax, DWORD PTR 28[esp]
404 mov ecx, DWORD PTR 32[esp]
414 mov ebx, DWORD PTR 56[ebp]
416 mov ecx, DWORD PTR 60[ebp]
427 mov ebp, DWORD PTR _des_SPtrans[ebx]
430 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
434 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
438 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
440 mov ebp, DWORD PTR 24[esp]
444 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
446 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
448 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
450 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
454 mov eax, DWORD PTR 28[esp]
457 mov ecx, DWORD PTR 32[esp]
467 mov ebx, DWORD PTR 64[ebp]
469 mov ecx, DWORD PTR 68[ebp]
480 mov ebp, DWORD PTR _des_SPtrans[ebx]
483 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
487 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
491 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
493 mov ebp, DWORD PTR 24[esp]
497 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
499 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
501 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
503 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
507 mov eax, DWORD PTR 28[esp]
510 mov ecx, DWORD PTR 32[esp]
520 mov ebx, DWORD PTR 72[ebp]
522 mov ecx, DWORD PTR 76[ebp]
533 mov ebp, DWORD PTR _des_SPtrans[ebx]
536 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
540 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
544 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
546 mov ebp, DWORD PTR 24[esp]
550 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
552 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
554 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
556 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
560 mov eax, DWORD PTR 28[esp]
563 mov ecx, DWORD PTR 32[esp]
573 mov ebx, DWORD PTR 80[ebp]
575 mov ecx, DWORD PTR 84[ebp]
586 mov ebp, DWORD PTR _des_SPtrans[ebx]
589 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
593 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
597 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
599 mov ebp, DWORD PTR 24[esp]
603 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
605 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
607 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
609 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
613 mov eax, DWORD PTR 28[esp]
616 mov ecx, DWORD PTR 32[esp]
626 mov ebx, DWORD PTR 88[ebp]
628 mov ecx, DWORD PTR 92[ebp]
639 mov ebp, DWORD PTR _des_SPtrans[ebx]
642 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
646 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
650 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
652 mov ebp, DWORD PTR 24[esp]
656 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
658 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
660 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
662 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
666 mov eax, DWORD PTR 28[esp]
669 mov ecx, DWORD PTR 32[esp]
679 mov ebx, DWORD PTR 96[ebp]
681 mov ecx, DWORD PTR 100[ebp]
692 mov ebp, DWORD PTR _des_SPtrans[ebx]
695 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
699 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
703 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
705 mov ebp, DWORD PTR 24[esp]
709 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
711 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
713 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
715 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
719 mov eax, DWORD PTR 28[esp]
722 mov ecx, DWORD PTR 32[esp]
732 mov ebx, DWORD PTR 104[ebp]
734 mov ecx, DWORD PTR 108[ebp]
745 mov ebp, DWORD PTR _des_SPtrans[ebx]
748 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
752 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
756 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
758 mov ebp, DWORD PTR 24[esp]
762 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
764 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
766 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
768 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
772 mov eax, DWORD PTR 28[esp]
775 mov ecx, DWORD PTR 32[esp]
785 mov ebx, DWORD PTR 112[ebp]
787 mov ecx, DWORD PTR 116[ebp]
798 mov ebp, DWORD PTR _des_SPtrans[ebx]
801 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
805 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
809 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
811 mov ebp, DWORD PTR 24[esp]
815 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
817 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
819 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
821 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
825 mov eax, DWORD PTR 28[esp]
828 mov ecx, DWORD PTR 32[esp]
838 mov ebx, DWORD PTR 120[ebp]
840 mov ecx, DWORD PTR 124[ebp]
851 mov ebp, DWORD PTR _des_SPtrans[ebx]
854 mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
858 mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
862 mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
864 mov ebp, DWORD PTR 24[esp]
868 mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
870 mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
872 mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
874 mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
877 dec DWORD PTR 36[esp]
883 mov edx, DWORD PTR 20[esp]
920 mov DWORD PTR [edx],eax
921 mov DWORD PTR 4[edx],edi