www.pudn.com > speakfs72.zip > WIN32.ASM, change:2002-01-05,size:25873b


        ; Don't even think of reading this code 
        ; It was automatically generated by bf586.pl 
        ; Which is a perl program used to generate the x86 assember for 
        ; any of elf, a.out, Win32, or Solaris 
        ; It can be found in SSLeay 0.7.0+ 
        ; eric <eay@mincom.oz.au> 
        ;  
        TITLE   bfx86xxxx.asm 
        .386 
.model FLAT 
_TEXT   SEGMENT 
PUBLIC  _BF_encrypt 
EXTRN   _des_SPtrans:DWORD 
_BF_encrypt PROC NEAR 
        push    ebp 
        push    ebx 
        push    esi 
        push    edi 
        ;  
        ; Load the 2 words 
        mov     eax,            DWORD PTR 20[esp] 
        mov     ecx,            DWORD PTR [eax] 
        mov     edx,            DWORD PTR 4[eax] 
        ;  
        ; P pointer, s and enc flag 
        mov     edi,            DWORD PTR 24[esp] 
        xor     eax,            eax 
        xor     ebx,            ebx 
        mov     ebp,            DWORD PTR 28[esp] 
        cmp     ebp,            0 
        je      $L000start_decrypt 
        xor     ecx,            DWORD PTR [edi] 
        ;  
        ; Round 0 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 4[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 1 
        ror     edx,            16 
        mov     esi,            DWORD PTR 8[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 2 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 12[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 3 
        ror     edx,            16 
        mov     esi,            DWORD PTR 16[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 4 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 20[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 5 
        ror     edx,            16 
        mov     esi,            DWORD PTR 24[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 6 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 28[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 7 
        ror     edx,            16 
        mov     esi,            DWORD PTR 32[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 8 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 36[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 9 
        ror     edx,            16 
        mov     esi,            DWORD PTR 40[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 10 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 44[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 11 
        ror     edx,            16 
        mov     esi,            DWORD PTR 48[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 12 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 52[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 13 
        ror     edx,            16 
        mov     esi,            DWORD PTR 56[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 14 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 60[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 15 
        ror     edx,            16 
        mov     esi,            DWORD PTR 64[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        xor     edx,            DWORD PTR 68[edi] 
        mov     eax,            DWORD PTR 20[esp] 
        mov     DWORD PTR [eax],edx 
        mov     DWORD PTR 4[eax],ecx 
        pop     edi 
        pop     esi 
        pop     ebx 
        pop     ebp 
        ret 
$L000start_decrypt: 
        xor     ecx,            DWORD PTR 68[edi] 
        ;  
        ; Round 16 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 64[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 15 
        ror     edx,            16 
        mov     esi,            DWORD PTR 60[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 14 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 56[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 13 
        ror     edx,            16 
        mov     esi,            DWORD PTR 52[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 12 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 48[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 11 
        ror     edx,            16 
        mov     esi,            DWORD PTR 44[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 10 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 40[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 9 
        ror     edx,            16 
        mov     esi,            DWORD PTR 36[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 8 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 32[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 7 
        ror     edx,            16 
        mov     esi,            DWORD PTR 28[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 6 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 24[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 5 
        ror     edx,            16 
        mov     esi,            DWORD PTR 20[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 4 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 16[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 3 
        ror     edx,            16 
        mov     esi,            DWORD PTR 12[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        ;  
        ; Round 2 
        ror     ecx,            16 
        mov     esi,            DWORD PTR 8[edi] 
        mov     al,             ch 
        mov     bl,             cl 
        ror     ecx,            16 
        xor     edx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             ch 
        mov     bl,             cl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     edx,            esi 
        ;  
        ; Round 1 
        ror     edx,            16 
        mov     esi,            DWORD PTR 4[edi] 
        mov     al,             dh 
        mov     bl,             dl 
        ror     edx,            16 
        xor     ecx,            esi 
        mov     esi,            DWORD PTR 72[eax*4+edi] 
        mov     ebp,            DWORD PTR 1096[ebx*4+edi] 
        mov     al,             dh 
        mov     bl,             dl 
        add     esi,            ebp 
        mov     eax,            DWORD PTR 2120[eax*4+edi] 
        xor     esi,            eax 
        mov     ebp,            DWORD PTR 3144[ebx*4+edi] 
        add     esi,            ebp 
        xor     eax,            eax 
        xor     ecx,            esi 
        xor     edx,            DWORD PTR [edi] 
        mov     eax,            DWORD PTR 20[esp] 
        mov     DWORD PTR [eax],edx 
        mov     DWORD PTR 4[eax],ecx 
        pop     edi 
        pop     esi 
        pop     ebx 
        pop     ebp 
        ret 
_BF_encrypt ENDP 
_TEXT   ENDS 
END