1 ; Don't even think of reading this code
2 ; It was automatically generated by bf-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>
17 mov ebx, DWORD PTR 12[esp]
18 mov ebp, DWORD PTR 16[esp]
22 mov edi, DWORD PTR [ebx]
23 mov esi, DWORD PTR 4[ebx]
25 mov ebx, DWORD PTR [ebp]
30 mov edx, DWORD PTR 4[ebp]
39 mov eax, DWORD PTR 72[eax*4+ebp]
40 mov ebx, DWORD PTR 1096[ebx*4+ebp]
42 mov eax, DWORD PTR 2120[ecx*4+ebp]
44 mov edx, DWORD PTR 3144[edx*4+ebp]
50 mov edx, DWORD PTR 8[ebp]
59 mov eax, DWORD PTR 72[eax*4+ebp]
60 mov ebx, DWORD PTR 1096[ebx*4+ebp]
62 mov eax, DWORD PTR 2120[ecx*4+ebp]
64 mov edx, DWORD PTR 3144[edx*4+ebp]
70 mov edx, DWORD PTR 12[ebp]
79 mov eax, DWORD PTR 72[eax*4+ebp]
80 mov ebx, DWORD PTR 1096[ebx*4+ebp]
82 mov eax, DWORD PTR 2120[ecx*4+ebp]
84 mov edx, DWORD PTR 3144[edx*4+ebp]
90 mov edx, DWORD PTR 16[ebp]
99 mov eax, DWORD PTR 72[eax*4+ebp]
100 mov ebx, DWORD PTR 1096[ebx*4+ebp]
102 mov eax, DWORD PTR 2120[ecx*4+ebp]
104 mov edx, DWORD PTR 3144[edx*4+ebp]
110 mov edx, DWORD PTR 20[ebp]
119 mov eax, DWORD PTR 72[eax*4+ebp]
120 mov ebx, DWORD PTR 1096[ebx*4+ebp]
122 mov eax, DWORD PTR 2120[ecx*4+ebp]
124 mov edx, DWORD PTR 3144[edx*4+ebp]
130 mov edx, DWORD PTR 24[ebp]
139 mov eax, DWORD PTR 72[eax*4+ebp]
140 mov ebx, DWORD PTR 1096[ebx*4+ebp]
142 mov eax, DWORD PTR 2120[ecx*4+ebp]
144 mov edx, DWORD PTR 3144[edx*4+ebp]
150 mov edx, DWORD PTR 28[ebp]
159 mov eax, DWORD PTR 72[eax*4+ebp]
160 mov ebx, DWORD PTR 1096[ebx*4+ebp]
162 mov eax, DWORD PTR 2120[ecx*4+ebp]
164 mov edx, DWORD PTR 3144[edx*4+ebp]
170 mov edx, DWORD PTR 32[ebp]
179 mov eax, DWORD PTR 72[eax*4+ebp]
180 mov ebx, DWORD PTR 1096[ebx*4+ebp]
182 mov eax, DWORD PTR 2120[ecx*4+ebp]
184 mov edx, DWORD PTR 3144[edx*4+ebp]
190 mov edx, DWORD PTR 36[ebp]
199 mov eax, DWORD PTR 72[eax*4+ebp]
200 mov ebx, DWORD PTR 1096[ebx*4+ebp]
202 mov eax, DWORD PTR 2120[ecx*4+ebp]
204 mov edx, DWORD PTR 3144[edx*4+ebp]
210 mov edx, DWORD PTR 40[ebp]
219 mov eax, DWORD PTR 72[eax*4+ebp]
220 mov ebx, DWORD PTR 1096[ebx*4+ebp]
222 mov eax, DWORD PTR 2120[ecx*4+ebp]
224 mov edx, DWORD PTR 3144[edx*4+ebp]
230 mov edx, DWORD PTR 44[ebp]
239 mov eax, DWORD PTR 72[eax*4+ebp]
240 mov ebx, DWORD PTR 1096[ebx*4+ebp]
242 mov eax, DWORD PTR 2120[ecx*4+ebp]
244 mov edx, DWORD PTR 3144[edx*4+ebp]
250 mov edx, DWORD PTR 48[ebp]
259 mov eax, DWORD PTR 72[eax*4+ebp]
260 mov ebx, DWORD PTR 1096[ebx*4+ebp]
262 mov eax, DWORD PTR 2120[ecx*4+ebp]
264 mov edx, DWORD PTR 3144[edx*4+ebp]
270 mov edx, DWORD PTR 52[ebp]
279 mov eax, DWORD PTR 72[eax*4+ebp]
280 mov ebx, DWORD PTR 1096[ebx*4+ebp]
282 mov eax, DWORD PTR 2120[ecx*4+ebp]
284 mov edx, DWORD PTR 3144[edx*4+ebp]
290 mov edx, DWORD PTR 56[ebp]
299 mov eax, DWORD PTR 72[eax*4+ebp]
300 mov ebx, DWORD PTR 1096[ebx*4+ebp]
302 mov eax, DWORD PTR 2120[ecx*4+ebp]
304 mov edx, DWORD PTR 3144[edx*4+ebp]
310 mov edx, DWORD PTR 60[ebp]
319 mov eax, DWORD PTR 72[eax*4+ebp]
320 mov ebx, DWORD PTR 1096[ebx*4+ebp]
322 mov eax, DWORD PTR 2120[ecx*4+ebp]
324 mov edx, DWORD PTR 3144[edx*4+ebp]
330 mov edx, DWORD PTR 64[ebp]
339 mov eax, DWORD PTR 72[eax*4+ebp]
340 mov ebx, DWORD PTR 1096[ebx*4+ebp]
342 mov eax, DWORD PTR 2120[ecx*4+ebp]
344 mov edx, DWORD PTR 3144[edx*4+ebp]
346 ; Load parameter 0 (16) enc=1
347 mov eax, DWORD PTR 20[esp]
349 mov edx, DWORD PTR 68[ebp]
351 mov DWORD PTR 4[eax],edi
352 mov DWORD PTR [eax],esi
363 _BF_decrypt PROC NEAR
367 mov ebx, DWORD PTR 12[esp]
368 mov ebp, DWORD PTR 16[esp]
372 mov edi, DWORD PTR [ebx]
373 mov esi, DWORD PTR 4[ebx]
375 mov ebx, DWORD PTR 68[ebp]
380 mov edx, DWORD PTR 64[ebp]
389 mov eax, DWORD PTR 72[eax*4+ebp]
390 mov ebx, DWORD PTR 1096[ebx*4+ebp]
392 mov eax, DWORD PTR 2120[ecx*4+ebp]
394 mov edx, DWORD PTR 3144[edx*4+ebp]
400 mov edx, DWORD PTR 60[ebp]
409 mov eax, DWORD PTR 72[eax*4+ebp]
410 mov ebx, DWORD PTR 1096[ebx*4+ebp]
412 mov eax, DWORD PTR 2120[ecx*4+ebp]
414 mov edx, DWORD PTR 3144[edx*4+ebp]
420 mov edx, DWORD PTR 56[ebp]
429 mov eax, DWORD PTR 72[eax*4+ebp]
430 mov ebx, DWORD PTR 1096[ebx*4+ebp]
432 mov eax, DWORD PTR 2120[ecx*4+ebp]
434 mov edx, DWORD PTR 3144[edx*4+ebp]
440 mov edx, DWORD PTR 52[ebp]
449 mov eax, DWORD PTR 72[eax*4+ebp]
450 mov ebx, DWORD PTR 1096[ebx*4+ebp]
452 mov eax, DWORD PTR 2120[ecx*4+ebp]
454 mov edx, DWORD PTR 3144[edx*4+ebp]
460 mov edx, DWORD PTR 48[ebp]
469 mov eax, DWORD PTR 72[eax*4+ebp]
470 mov ebx, DWORD PTR 1096[ebx*4+ebp]
472 mov eax, DWORD PTR 2120[ecx*4+ebp]
474 mov edx, DWORD PTR 3144[edx*4+ebp]
480 mov edx, DWORD PTR 44[ebp]
489 mov eax, DWORD PTR 72[eax*4+ebp]
490 mov ebx, DWORD PTR 1096[ebx*4+ebp]
492 mov eax, DWORD PTR 2120[ecx*4+ebp]
494 mov edx, DWORD PTR 3144[edx*4+ebp]
500 mov edx, DWORD PTR 40[ebp]
509 mov eax, DWORD PTR 72[eax*4+ebp]
510 mov ebx, DWORD PTR 1096[ebx*4+ebp]
512 mov eax, DWORD PTR 2120[ecx*4+ebp]
514 mov edx, DWORD PTR 3144[edx*4+ebp]
520 mov edx, DWORD PTR 36[ebp]
529 mov eax, DWORD PTR 72[eax*4+ebp]
530 mov ebx, DWORD PTR 1096[ebx*4+ebp]
532 mov eax, DWORD PTR 2120[ecx*4+ebp]
534 mov edx, DWORD PTR 3144[edx*4+ebp]
540 mov edx, DWORD PTR 32[ebp]
549 mov eax, DWORD PTR 72[eax*4+ebp]
550 mov ebx, DWORD PTR 1096[ebx*4+ebp]
552 mov eax, DWORD PTR 2120[ecx*4+ebp]
554 mov edx, DWORD PTR 3144[edx*4+ebp]
560 mov edx, DWORD PTR 28[ebp]
569 mov eax, DWORD PTR 72[eax*4+ebp]
570 mov ebx, DWORD PTR 1096[ebx*4+ebp]
572 mov eax, DWORD PTR 2120[ecx*4+ebp]
574 mov edx, DWORD PTR 3144[edx*4+ebp]
580 mov edx, DWORD PTR 24[ebp]
589 mov eax, DWORD PTR 72[eax*4+ebp]
590 mov ebx, DWORD PTR 1096[ebx*4+ebp]
592 mov eax, DWORD PTR 2120[ecx*4+ebp]
594 mov edx, DWORD PTR 3144[edx*4+ebp]
600 mov edx, DWORD PTR 20[ebp]
609 mov eax, DWORD PTR 72[eax*4+ebp]
610 mov ebx, DWORD PTR 1096[ebx*4+ebp]
612 mov eax, DWORD PTR 2120[ecx*4+ebp]
614 mov edx, DWORD PTR 3144[edx*4+ebp]
620 mov edx, DWORD PTR 16[ebp]
629 mov eax, DWORD PTR 72[eax*4+ebp]
630 mov ebx, DWORD PTR 1096[ebx*4+ebp]
632 mov eax, DWORD PTR 2120[ecx*4+ebp]
634 mov edx, DWORD PTR 3144[edx*4+ebp]
640 mov edx, DWORD PTR 12[ebp]
649 mov eax, DWORD PTR 72[eax*4+ebp]
650 mov ebx, DWORD PTR 1096[ebx*4+ebp]
652 mov eax, DWORD PTR 2120[ecx*4+ebp]
654 mov edx, DWORD PTR 3144[edx*4+ebp]
660 mov edx, DWORD PTR 8[ebp]
669 mov eax, DWORD PTR 72[eax*4+ebp]
670 mov ebx, DWORD PTR 1096[ebx*4+ebp]
672 mov eax, DWORD PTR 2120[ecx*4+ebp]
674 mov edx, DWORD PTR 3144[edx*4+ebp]
680 mov edx, DWORD PTR 4[ebp]
689 mov eax, DWORD PTR 72[eax*4+ebp]
690 mov ebx, DWORD PTR 1096[ebx*4+ebp]
692 mov eax, DWORD PTR 2120[ecx*4+ebp]
694 mov edx, DWORD PTR 3144[edx*4+ebp]
696 ; Load parameter 0 (1) enc=0
697 mov eax, DWORD PTR 20[esp]
699 mov edx, DWORD PTR [ebp]
701 mov DWORD PTR 4[eax],edi
702 mov DWORD PTR [eax],esi
711 PUBLIC _BF_cbc_encrypt
713 _BF_cbc_encrypt PROC NEAR
719 mov ebp, DWORD PTR 28[esp]
720 ; getting iv ptr from parameter 4
721 mov ebx, DWORD PTR 36[esp]
722 mov esi, DWORD PTR [ebx]
723 mov edi, DWORD PTR 4[ebx]
729 mov esi, DWORD PTR 36[esp]
730 mov edi, DWORD PTR 40[esp]
731 ; getting encrypt flag from parameter 5
732 mov ecx, DWORD PTR 56[esp]
733 ; get and push parameter 3
734 mov eax, DWORD PTR 48[esp]
740 mov eax, DWORD PTR 8[esp]
741 mov ebx, DWORD PTR 12[esp]
742 jz $L001encrypt_finish
744 mov ecx, DWORD PTR [esi]
745 mov edx, DWORD PTR 4[esi]
750 mov DWORD PTR 8[esp],eax
751 mov DWORD PTR 12[esp],ebx
753 mov eax, DWORD PTR 8[esp]
754 mov ebx, DWORD PTR 12[esp]
757 mov DWORD PTR [edi],eax
758 mov DWORD PTR 4[edi],ebx
764 mov ebp, DWORD PTR 52[esp]
769 mov ebp, DWORD PTR $L004cbc_enc_jmp_table[ebp*4]
772 mov dh, BYTE PTR 6[esi]
775 mov dh, BYTE PTR 5[esi]
777 mov dl, BYTE PTR 4[esi]
779 mov ecx, DWORD PTR [esi]
782 mov ch, BYTE PTR 2[esi]
785 mov ch, BYTE PTR 1[esi]
787 mov cl, BYTE PTR [esi]
793 mov DWORD PTR 8[esp],eax
794 mov DWORD PTR 12[esp],ebx
796 mov eax, DWORD PTR 8[esp]
797 mov ebx, DWORD PTR 12[esp]
800 mov DWORD PTR [edi],eax
801 mov DWORD PTR 4[edi],ebx
805 mov eax, DWORD PTR 16[esp]
806 mov ebx, DWORD PTR 20[esp]
807 jz $L013decrypt_finish
809 mov eax, DWORD PTR [esi]
810 mov ebx, DWORD PTR 4[esi]
813 mov DWORD PTR 8[esp],eax
814 mov DWORD PTR 12[esp],ebx
816 mov eax, DWORD PTR 8[esp]
817 mov ebx, DWORD PTR 12[esp]
820 mov ecx, DWORD PTR 16[esp]
821 mov edx, DWORD PTR 20[esp]
824 mov eax, DWORD PTR [esi]
825 mov ebx, DWORD PTR 4[esi]
826 mov DWORD PTR [edi],ecx
827 mov DWORD PTR 4[edi],edx
828 mov DWORD PTR 16[esp],eax
829 mov DWORD PTR 20[esp],ebx
835 mov ebp, DWORD PTR 52[esp]
838 mov eax, DWORD PTR [esi]
839 mov ebx, DWORD PTR 4[esi]
842 mov DWORD PTR 8[esp],eax
843 mov DWORD PTR 12[esp],ebx
845 mov eax, DWORD PTR 8[esp]
846 mov ebx, DWORD PTR 12[esp]
849 mov ecx, DWORD PTR 16[esp]
850 mov edx, DWORD PTR 20[esp]
853 mov eax, DWORD PTR [esi]
854 mov ebx, DWORD PTR 4[esi]
857 mov BYTE PTR 6[edi],dl
860 mov BYTE PTR 5[edi],dh
862 mov BYTE PTR 4[edi],dl
864 mov DWORD PTR [edi],ecx
868 mov BYTE PTR 2[edi],cl
871 mov BYTE PTR 1[esi],ch
873 mov BYTE PTR [esi], cl
877 mov ecx, DWORD PTR 60[esp]
879 mov DWORD PTR [ecx],eax
880 mov DWORD PTR 4[ecx],ebx
886 $L004cbc_enc_jmp_table:
895 L023cbc_dec_jmp_table: