📄 bx86unix.cpp
字号:
/* Run the C pre-processor over this file with one of the following defined * ELF - elf object files, * OUT - a.out object files, * BSDI - BSDI style a.out object files * SOL - Solaris style elf */#define TYPE(a,b) .type a,b#define SIZE(a,b) .size a,b#if defined(OUT) || defined(BSDI)#define BF_encrypt _BF_encrypt#define BF_decrypt _BF_decrypt#define BF_cbc_encrypt _BF_cbc_encrypt#endif#ifdef OUT#define OK 1#define ALIGN 4#endif#ifdef BSDI#define OK 1#define ALIGN 4#undef SIZE#undef TYPE#define SIZE(a,b)#define TYPE(a,b)#endif#if defined(ELF) || defined(SOL)#define OK 1#define ALIGN 16#endif#ifndef OKYou need to define one ofELF - elf systems - linux-elf, NetBSD and DG-UXOUT - a.out systems - linux-a.out and FreeBSDSOL - solaris systems, which are elf with strange comment linesBSDI - a.out with a very primative version of as.#endif/* Let the Assembler begin :-) */ /* Don't even think of reading this code */ /* It was automatically generated by bf-586.pl */ /* Which is a perl program used to generate the x86 assember for */ /* any of elf, a.out, BSDI,Win32, or Solaris */ /* eric <eay@cryptsoft.com> */ .file "bf-586.s" .version "01.01"gcc2_compiled.:.text .align ALIGN.globl BF_encrypt TYPE(BF_encrypt,@function)BF_encrypt: pushl %ebp pushl %ebx movl 12(%esp), %ebx movl 16(%esp), %ebp pushl %esi pushl %edi /* Load the 2 words */ movl (%ebx), %edi movl 4(%ebx), %esi xorl %eax, %eax movl (%ebp), %ebx xorl %ecx, %ecx xorl %ebx, %edi /* Round 0 */ movl 4(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 1 */ movl 8(%ebp), %edx movl %esi, %ebx xorl %edx, %edi shrl $16, %ebx movl %esi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %edi /* Round 2 */ movl 12(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 3 */ movl 16(%ebp), %edx movl %esi, %ebx xorl %edx, %edi shrl $16, %ebx movl %esi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %edi /* Round 4 */ movl 20(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 5 */ movl 24(%ebp), %edx movl %esi, %ebx xorl %edx, %edi shrl $16, %ebx movl %esi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %edi /* Round 6 */ movl 28(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 7 */ movl 32(%ebp), %edx movl %esi, %ebx xorl %edx, %edi shrl $16, %ebx movl %esi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %edi /* Round 8 */ movl 36(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 9 */ movl 40(%ebp), %edx movl %esi, %ebx xorl %edx, %edi shrl $16, %ebx movl %esi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %edi /* Round 10 */ movl 44(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 11 */ movl 48(%ebp), %edx movl %esi, %ebx xorl %edx, %edi shrl $16, %ebx movl %esi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %edi /* Round 12 */ movl 52(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 13 */ movl 56(%ebp), %edx movl %esi, %ebx xorl %edx, %edi shrl $16, %ebx movl %esi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %edi /* Round 14 */ movl 60(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 15 */ movl 64(%ebp), %edx movl %esi, %ebx xorl %edx, %edi shrl $16, %ebx movl %esi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx /* Load parameter 0 (16) enc=1 */ movl 20(%esp), %eax xorl %ebx, %edi movl 68(%ebp), %edx xorl %edx, %esi movl %edi, 4(%eax) movl %esi, (%eax) popl %edi popl %esi popl %ebx popl %ebp ret.BF_encrypt_end: SIZE(BF_encrypt,.BF_encrypt_end-BF_encrypt).ident "BF_encrypt".text .align ALIGN.globl BF_decrypt TYPE(BF_decrypt,@function)BF_decrypt: pushl %ebp pushl %ebx movl 12(%esp), %ebx movl 16(%esp), %ebp pushl %esi pushl %edi /* Load the 2 words */ movl (%ebx), %edi movl 4(%ebx), %esi xorl %eax, %eax movl 68(%ebp), %ebx xorl %ecx, %ecx xorl %ebx, %edi /* Round 16 */ movl 64(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 15 */ movl 60(%ebp), %edx movl %esi, %ebx xorl %edx, %edi shrl $16, %ebx movl %esi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %edi /* Round 14 */ movl 56(%ebp), %edx movl %edi, %ebx xorl %edx, %esi shrl $16, %ebx movl %edi, %edx movb %bh, %al andl $255, %ebx movb %dh, %cl andl $255, %edx movl 72(%ebp,%eax,4),%eax movl 1096(%ebp,%ebx,4),%ebx addl %eax, %ebx movl 2120(%ebp,%ecx,4),%eax xorl %eax, %ebx movl 3144(%ebp,%edx,4),%edx addl %edx, %ebx xorl %eax, %eax xorl %ebx, %esi /* Round 13 */ movl 52(%ebp), %edx movl %esi, %ebx
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -