diff options
Diffstat (limited to 'secure/lib/libcrypto/i386/des-586.s')
-rw-r--r-- | secure/lib/libcrypto/i386/des-586.s | 2414 |
1 files changed, 979 insertions, 1435 deletions
diff --git a/secure/lib/libcrypto/i386/des-586.s b/secure/lib/libcrypto/i386/des-586.s index 55ddd71..b761290 100644 --- a/secure/lib/libcrypto/i386/des-586.s +++ b/secure/lib/libcrypto/i386/des-586.s @@ -1,22 +1,22 @@ # $FreeBSD$ - # Dont even think of reading this code - # It was automatically generated by des-586.pl - # Which is a perl program used to generate the x86 assember for - # any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris - # eric <eay@cryptsoft.com> + + + + + .file "des-586.s" .version "01.01" gcc2_compiled.: .text .align 16 -.globl des_encrypt1 - .type des_encrypt1,@function -des_encrypt1: +.globl DES_encrypt1 + .type DES_encrypt1,@function +DES_encrypt1: pushl %esi pushl %edi - # Load the 2 words + movl 12(%esp), %esi xorl %ecx, %ecx pushl %ebx @@ -25,7 +25,7 @@ des_encrypt1: movl 28(%esp), %ebx movl 4(%esi), %edi - # IP + roll $4, %eax movl %eax, %esi xorl %edi, %eax @@ -62,1202 +62,979 @@ des_encrypt1: xorl %eax, %edi .byte 209 -.byte 199 # roll $1 %edi - movl 24(%esp), %ebp +.byte 199 + leal DES_SPtrans, %ebp + movl 24(%esp), %ecx cmpl $0, %ebx je .L000start_decrypt - # Round 0 - movl (%ebp), %eax + + movl (%ecx), %eax xorl %ebx, %ebx - movl 4(%ebp), %edx + movl 4(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 1 - movl 8(%ebp), %eax + + movl 8(%ecx), %eax xorl %ebx, %ebx - movl 12(%ebp), %edx + movl 12(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 2 - movl 16(%ebp), %eax + + movl 16(%ecx), %eax xorl %ebx, %ebx - movl 20(%ebp), %edx + movl 20(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 3 - movl 24(%ebp), %eax + movl 24(%ecx), %eax xorl %ebx, %ebx - movl 28(%ebp), %edx + movl 28(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 4 - movl 32(%ebp), %eax + movl 32(%ecx), %eax xorl %ebx, %ebx - movl 36(%ebp), %edx + movl 36(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 5 - movl 40(%ebp), %eax + + movl 40(%ecx), %eax xorl %ebx, %ebx - movl 44(%ebp), %edx + movl 44(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 6 - movl 48(%ebp), %eax + movl 48(%ecx), %eax xorl %ebx, %ebx - movl 52(%ebp), %edx + movl 52(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 7 - movl 56(%ebp), %eax + movl 56(%ecx), %eax xorl %ebx, %ebx - movl 60(%ebp), %edx + movl 60(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 8 - movl 64(%ebp), %eax + + movl 64(%ecx), %eax xorl %ebx, %ebx - movl 68(%ebp), %edx + movl 68(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 9 - movl 72(%ebp), %eax + + movl 72(%ecx), %eax xorl %ebx, %ebx - movl 76(%ebp), %edx + movl 76(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 10 - movl 80(%ebp), %eax + movl 80(%ecx), %eax xorl %ebx, %ebx - movl 84(%ebp), %edx + movl 84(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 11 - movl 88(%ebp), %eax + movl 88(%ecx), %eax xorl %ebx, %ebx - movl 92(%ebp), %edx + movl 92(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 12 - movl 96(%ebp), %eax + + movl 96(%ecx), %eax xorl %ebx, %ebx - movl 100(%ebp), %edx + movl 100(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 13 - movl 104(%ebp), %eax + movl 104(%ecx), %eax xorl %ebx, %ebx - movl 108(%ebp), %edx + movl 108(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 14 - movl 112(%ebp), %eax + movl 112(%ecx), %eax xorl %ebx, %ebx - movl 116(%ebp), %edx + movl 116(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 15 - movl 120(%ebp), %eax + + movl 120(%ecx), %eax xorl %ebx, %ebx - movl 124(%ebp), %edx + movl 124(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi jmp .L001end .L000start_decrypt: - # Round 15 - movl 120(%ebp), %eax + + movl 120(%ecx), %eax xorl %ebx, %ebx - movl 124(%ebp), %edx + movl 124(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 14 - movl 112(%ebp), %eax + movl 112(%ecx), %eax xorl %ebx, %ebx - movl 116(%ebp), %edx + movl 116(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 13 - movl 104(%ebp), %eax + movl 104(%ecx), %eax xorl %ebx, %ebx - movl 108(%ebp), %edx + movl 108(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 12 - movl 96(%ebp), %eax + + movl 96(%ecx), %eax xorl %ebx, %ebx - movl 100(%ebp), %edx + movl 100(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 11 - movl 88(%ebp), %eax + movl 88(%ecx), %eax xorl %ebx, %ebx - movl 92(%ebp), %edx + movl 92(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 10 - movl 80(%ebp), %eax + movl 80(%ecx), %eax xorl %ebx, %ebx - movl 84(%ebp), %edx + movl 84(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 9 - movl 72(%ebp), %eax + + movl 72(%ecx), %eax xorl %ebx, %ebx - movl 76(%ebp), %edx + movl 76(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 8 - movl 64(%ebp), %eax + + movl 64(%ecx), %eax xorl %ebx, %ebx - movl 68(%ebp), %edx + movl 68(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 7 - movl 56(%ebp), %eax + movl 56(%ecx), %eax xorl %ebx, %ebx - movl 60(%ebp), %edx + movl 60(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 6 - movl 48(%ebp), %eax + movl 48(%ecx), %eax xorl %ebx, %ebx - movl 52(%ebp), %edx + movl 52(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 5 - movl 40(%ebp), %eax + + movl 40(%ecx), %eax xorl %ebx, %ebx - movl 44(%ebp), %edx + movl 44(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 4 - movl 32(%ebp), %eax + movl 32(%ecx), %eax xorl %ebx, %ebx - movl 36(%ebp), %edx + movl 36(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 3 - movl 24(%ebp), %eax + movl 24(%ecx), %eax xorl %ebx, %ebx - movl 28(%ebp), %edx + movl 28(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 2 - movl 16(%ebp), %eax + + movl 16(%ecx), %eax xorl %ebx, %ebx - movl 20(%ebp), %edx + movl 20(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 1 - movl 8(%ebp), %eax + + movl 8(%ecx), %eax xorl %ebx, %ebx - movl 12(%ebp), %edx + movl 12(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 0 - movl (%ebp), %eax + movl (%ecx), %eax xorl %ebx, %ebx - movl 4(%ebp), %edx + movl 4(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi .L001end: - # FP + movl 20(%esp), %edx .byte 209 -.byte 206 # rorl $1 %esi +.byte 206 movl %edi, %eax xorl %esi, %edi andl $0xaaaaaaaa, %edi @@ -1300,18 +1077,18 @@ des_encrypt1: popl %edi popl %esi ret -.L_des_encrypt1_end: - .size des_encrypt1,.L_des_encrypt1_end-des_encrypt1 +.L_DES_encrypt1_end: + .size DES_encrypt1,.L_DES_encrypt1_end-DES_encrypt1 .ident "desasm.pl" .text .align 16 -.globl des_encrypt2 - .type des_encrypt2,@function -des_encrypt2: +.globl DES_encrypt2 + .type DES_encrypt2,@function +DES_encrypt2: pushl %esi pushl %edi - # Load the 2 words + movl 12(%esp), %eax xorl %ecx, %ecx pushl %ebx @@ -1321,1198 +1098,975 @@ des_encrypt2: roll $3, %esi movl 4(%eax), %edi roll $3, %edi - movl 24(%esp), %ebp + leal DES_SPtrans, %ebp + movl 24(%esp), %ecx cmpl $0, %ebx je .L002start_decrypt - # Round 0 - movl (%ebp), %eax + + movl (%ecx), %eax xorl %ebx, %ebx - movl 4(%ebp), %edx + movl 4(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 1 - movl 8(%ebp), %eax + movl 8(%ecx), %eax xorl %ebx, %ebx - movl 12(%ebp), %edx + movl 12(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 2 - movl 16(%ebp), %eax + movl 16(%ecx), %eax xorl %ebx, %ebx - movl 20(%ebp), %edx + movl 20(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 3 - movl 24(%ebp), %eax + + movl 24(%ecx), %eax xorl %ebx, %ebx - movl 28(%ebp), %edx + movl 28(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 4 - movl 32(%ebp), %eax + + movl 32(%ecx), %eax xorl %ebx, %ebx - movl 36(%ebp), %edx + movl 36(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 5 - movl 40(%ebp), %eax + movl 40(%ecx), %eax xorl %ebx, %ebx - movl 44(%ebp), %edx + movl 44(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 6 - movl 48(%ebp), %eax + movl 48(%ecx), %eax xorl %ebx, %ebx - movl 52(%ebp), %edx + movl 52(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 7 - movl 56(%ebp), %eax + + movl 56(%ecx), %eax xorl %ebx, %ebx - movl 60(%ebp), %edx + movl 60(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 8 - movl 64(%ebp), %eax + movl 64(%ecx), %eax xorl %ebx, %ebx - movl 68(%ebp), %edx + movl 68(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 9 - movl 72(%ebp), %eax + movl 72(%ecx), %eax xorl %ebx, %ebx - movl 76(%ebp), %edx + movl 76(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 10 - movl 80(%ebp), %eax + + movl 80(%ecx), %eax xorl %ebx, %ebx - movl 84(%ebp), %edx + movl 84(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 11 - movl 88(%ebp), %eax + + movl 88(%ecx), %eax xorl %ebx, %ebx - movl 92(%ebp), %edx + movl 92(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 12 - movl 96(%ebp), %eax + movl 96(%ecx), %eax xorl %ebx, %ebx - movl 100(%ebp), %edx + movl 100(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 13 - movl 104(%ebp), %eax + movl 104(%ecx), %eax xorl %ebx, %ebx - movl 108(%ebp), %edx + movl 108(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 14 - movl 112(%ebp), %eax + + movl 112(%ecx), %eax xorl %ebx, %ebx - movl 116(%ebp), %edx + movl 116(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 15 - movl 120(%ebp), %eax + movl 120(%ecx), %eax xorl %ebx, %ebx - movl 124(%ebp), %edx + movl 124(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi jmp .L003end .L002start_decrypt: - # Round 15 - movl 120(%ebp), %eax + + movl 120(%ecx), %eax xorl %ebx, %ebx - movl 124(%ebp), %edx + movl 124(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 14 - movl 112(%ebp), %eax + + movl 112(%ecx), %eax xorl %ebx, %ebx - movl 116(%ebp), %edx + movl 116(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 13 - movl 104(%ebp), %eax + + movl 104(%ecx), %eax xorl %ebx, %ebx - movl 108(%ebp), %edx + movl 108(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 12 - movl 96(%ebp), %eax + movl 96(%ecx), %eax xorl %ebx, %ebx - movl 100(%ebp), %edx + movl 100(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 11 - movl 88(%ebp), %eax + movl 88(%ecx), %eax xorl %ebx, %ebx - movl 92(%ebp), %edx + movl 92(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 10 - movl 80(%ebp), %eax + + movl 80(%ecx), %eax xorl %ebx, %ebx - movl 84(%ebp), %edx + movl 84(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 9 - movl 72(%ebp), %eax + movl 72(%ecx), %eax xorl %ebx, %ebx - movl 76(%ebp), %edx + movl 76(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 8 - movl 64(%ebp), %eax + movl 64(%ecx), %eax xorl %ebx, %ebx - movl 68(%ebp), %edx + movl 68(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 7 - movl 56(%ebp), %eax + + movl 56(%ecx), %eax xorl %ebx, %ebx - movl 60(%ebp), %edx + movl 60(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 6 - movl 48(%ebp), %eax + + movl 48(%ecx), %eax xorl %ebx, %ebx - movl 52(%ebp), %edx + movl 52(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 5 - movl 40(%ebp), %eax + movl 40(%ecx), %eax xorl %ebx, %ebx - movl 44(%ebp), %edx + movl 44(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 4 - movl 32(%ebp), %eax + movl 32(%ecx), %eax xorl %ebx, %ebx - movl 36(%ebp), %edx + movl 36(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi - # Round 3 - movl 24(%ebp), %eax + + movl 24(%ecx), %eax xorl %ebx, %ebx - movl 28(%ebp), %edx + movl 28(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi + - # Round 2 - movl 16(%ebp), %eax + movl 16(%ecx), %eax xorl %ebx, %ebx - movl 20(%ebp), %edx + movl 20(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi + - # Round 1 - movl 8(%ebp), %eax + movl 8(%ecx), %eax xorl %ebx, %ebx - movl 12(%ebp), %edx + movl 12(%ecx), %edx xorl %esi, %eax + xorl %ecx, %ecx xorl %esi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%edi movb %dl, %bl - xorl %ebp, %edi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi + xorl 0x200(%ebp,%ecx),%edi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %edi + xorl 0x100(%ebp,%ebx),%edi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %edi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%edi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %edi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %edi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %edi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %edi + xorl 0x600(%ebp,%ebx),%edi + xorl 0x700(%ebp,%ecx),%edi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%edi + xorl 0x500(%ebp,%edx),%edi - # Round 0 - movl (%ebp), %eax + + movl (%ecx), %eax xorl %ebx, %ebx - movl 4(%ebp), %edx + movl 4(%ecx), %edx xorl %edi, %eax + xorl %ecx, %ecx xorl %edi, %edx andl $0xfcfcfcfc, %eax andl $0xcfcfcfcf, %edx movb %al, %bl movb %ah, %cl rorl $4, %edx - movl des_SPtrans(%ebx),%ebp + xorl (%ebp,%ebx),%esi movb %dl, %bl - xorl %ebp, %esi - movl 0x200+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi + xorl 0x200(%ebp,%ecx),%esi movb %dh, %cl shrl $16, %eax - movl 0x100+des_SPtrans(%ebx),%ebp - xorl %ebp, %esi + xorl 0x100(%ebp,%ebx),%esi movb %ah, %bl shrl $16, %edx - movl 0x300+des_SPtrans(%ecx),%ebp - xorl %ebp, %esi - movl 24(%esp), %ebp + xorl 0x300(%ebp,%ecx),%esi movb %dh, %cl andl $0xff, %eax andl $0xff, %edx - movl 0x600+des_SPtrans(%ebx),%ebx - xorl %ebx, %esi - movl 0x700+des_SPtrans(%ecx),%ebx - xorl %ebx, %esi - movl 0x400+des_SPtrans(%eax),%ebx - xorl %ebx, %esi - movl 0x500+des_SPtrans(%edx),%ebx - xorl %ebx, %esi + xorl 0x600(%ebp,%ebx),%esi + xorl 0x700(%ebp,%ecx),%esi + movl 24(%esp), %ecx + xorl 0x400(%ebp,%eax),%esi + xorl 0x500(%ebp,%edx),%esi .L003end: - # Fixup + rorl $3, %edi movl 20(%esp), %eax rorl $3, %esi @@ -2523,26 +2077,26 @@ des_encrypt2: popl %edi popl %esi ret -.L_des_encrypt2_end: - .size des_encrypt2,.L_des_encrypt2_end-des_encrypt2 +.L_DES_encrypt2_end: + .size DES_encrypt2,.L_DES_encrypt2_end-DES_encrypt2 .ident "desasm.pl" .text .align 16 -.globl des_encrypt3 - .type des_encrypt3,@function -des_encrypt3: +.globl DES_encrypt3 + .type DES_encrypt3,@function +DES_encrypt3: pushl %ebx movl 8(%esp), %ebx pushl %ebp pushl %esi pushl %edi - # Load the data words + movl (%ebx), %edi movl 4(%ebx), %esi subl $12, %esp - # IP + roll $4, %edi movl %edi, %edx xorl %esi, %edi @@ -2588,20 +2142,20 @@ des_encrypt3: movl $1, 8(%esp) movl %eax, 4(%esp) movl %ebx, (%esp) - call des_encrypt2 + call DES_encrypt2 movl $0, 8(%esp) movl %edi, 4(%esp) movl %ebx, (%esp) - call des_encrypt2 + call DES_encrypt2 movl $1, 8(%esp) movl %esi, 4(%esp) movl %ebx, (%esp) - call des_encrypt2 + call DES_encrypt2 addl $12, %esp movl (%ebx), %edi movl 4(%ebx), %esi - # FP + roll $2, %esi roll $3, %edi movl %edi, %eax @@ -2646,26 +2200,26 @@ des_encrypt3: popl %ebp popl %ebx ret -.L_des_encrypt3_end: - .size des_encrypt3,.L_des_encrypt3_end-des_encrypt3 +.L_DES_encrypt3_end: + .size DES_encrypt3,.L_DES_encrypt3_end-DES_encrypt3 .ident "desasm.pl" .text .align 16 -.globl des_decrypt3 - .type des_decrypt3,@function -des_decrypt3: +.globl DES_decrypt3 + .type DES_decrypt3,@function +DES_decrypt3: pushl %ebx movl 8(%esp), %ebx pushl %ebp pushl %esi pushl %edi - # Load the data words + movl (%ebx), %edi movl 4(%ebx), %esi subl $12, %esp - # IP + roll $4, %edi movl %edi, %edx xorl %esi, %edi @@ -2711,20 +2265,20 @@ des_decrypt3: movl $0, 8(%esp) movl %eax, 4(%esp) movl %ebx, (%esp) - call des_encrypt2 + call DES_encrypt2 movl $1, 8(%esp) movl %edi, 4(%esp) movl %ebx, (%esp) - call des_encrypt2 + call DES_encrypt2 movl $0, 8(%esp) movl %esi, 4(%esp) movl %ebx, (%esp) - call des_encrypt2 + call DES_encrypt2 addl $12, %esp movl (%ebx), %edi movl 4(%ebx), %esi - # FP + roll $2, %esi roll $3, %edi movl %edi, %eax @@ -2769,21 +2323,21 @@ des_decrypt3: popl %ebp popl %ebx ret -.L_des_decrypt3_end: - .size des_decrypt3,.L_des_decrypt3_end-des_decrypt3 +.L_DES_decrypt3_end: + .size DES_decrypt3,.L_DES_decrypt3_end-DES_decrypt3 .ident "desasm.pl" .text .align 16 -.globl des_ncbc_encrypt - .type des_ncbc_encrypt,@function -des_ncbc_encrypt: +.globl DES_ncbc_encrypt + .type DES_ncbc_encrypt,@function +DES_ncbc_encrypt: pushl %ebp pushl %ebx pushl %esi pushl %edi movl 28(%esp), %ebp - # getting iv ptr from parameter 4 + movl 36(%esp), %ebx movl (%ebx), %esi movl 4(%ebx), %edi @@ -2794,11 +2348,11 @@ des_ncbc_encrypt: movl %esp, %ebx movl 36(%esp), %esi movl 40(%esp), %edi - # getting encrypt flag from parameter 5 + movl 56(%esp), %ecx - # get and push parameter 5 + pushl %ecx - # get and push parameter 3 + movl 52(%esp), %eax pushl %eax pushl %ebx @@ -2815,7 +2369,7 @@ des_ncbc_encrypt: xorl %edx, %ebx movl %eax, 12(%esp) movl %ebx, 16(%esp) - call des_encrypt1 + call DES_encrypt1 movl 12(%esp), %eax movl 16(%esp), %ebx movl %eax, (%edi) @@ -2828,33 +2382,38 @@ des_ncbc_encrypt: movl 56(%esp), %ebp andl $7, %ebp jz .L007finish + call .L008PIC_point +.L008PIC_point: + popl %edx + leal .L009cbc_enc_jmp_table-.L008PIC_point(%edx),%ecx + movl (%ecx,%ebp,4), %ebp + addl %edx, %ebp xorl %ecx, %ecx xorl %edx, %edx - movl .L008cbc_enc_jmp_table(,%ebp,4),%ebp jmp *%ebp -.L009ej7: +.L010ej7: movb 6(%esi), %dh sall $8, %edx -.L010ej6: +.L011ej6: movb 5(%esi), %dh -.L011ej5: +.L012ej5: movb 4(%esi), %dl -.L012ej4: +.L013ej4: movl (%esi), %ecx - jmp .L013ejend -.L014ej3: + jmp .L014ejend +.L015ej3: movb 2(%esi), %ch sall $8, %ecx -.L015ej2: +.L016ej2: movb 1(%esi), %ch -.L016ej1: +.L017ej1: movb (%esi), %cl -.L013ejend: +.L014ejend: xorl %ecx, %eax xorl %edx, %ebx movl %eax, 12(%esp) movl %ebx, 16(%esp) - call des_encrypt1 + call DES_encrypt1 movl 12(%esp), %eax movl 16(%esp), %ebx movl %eax, (%edi) @@ -2865,13 +2424,13 @@ des_ncbc_encrypt: andl $4294967288, %ebp movl 20(%esp), %eax movl 24(%esp), %ebx - jz .L017decrypt_finish -.L018decrypt_loop: + jz .L018decrypt_finish +.L019decrypt_loop: movl (%esi), %eax movl 4(%esi), %ebx movl %eax, 12(%esp) movl %ebx, 16(%esp) - call des_encrypt1 + call DES_encrypt1 movl 12(%esp), %eax movl 16(%esp), %ebx movl 20(%esp), %ecx @@ -2887,8 +2446,8 @@ des_ncbc_encrypt: addl $8, %esi addl $8, %edi subl $8, %ebp - jnz .L018decrypt_loop -.L017decrypt_finish: + jnz .L019decrypt_loop +.L018decrypt_finish: movl 56(%esp), %ebp andl $7, %ebp jz .L007finish @@ -2896,7 +2455,7 @@ des_ncbc_encrypt: movl 4(%esi), %ebx movl %eax, 12(%esp) movl %ebx, 16(%esp) - call des_encrypt1 + call DES_encrypt1 movl 12(%esp), %eax movl 16(%esp), %ebx movl 20(%esp), %ecx @@ -2905,26 +2464,26 @@ des_ncbc_encrypt: xorl %ebx, %edx movl (%esi), %eax movl 4(%esi), %ebx -.L019dj7: +.L020dj7: rorl $16, %edx movb %dl, 6(%edi) shrl $16, %edx -.L020dj6: +.L021dj6: movb %dh, 5(%edi) -.L021dj5: +.L022dj5: movb %dl, 4(%edi) -.L022dj4: +.L023dj4: movl %ecx, (%edi) - jmp .L023djend -.L024dj3: + jmp .L024djend +.L025dj3: rorl $16, %ecx movb %cl, 2(%edi) sall $16, %ecx -.L025dj2: +.L026dj2: movb %ch, 1(%esi) -.L026dj1: +.L027dj1: movb %cl, (%esi) -.L023djend: +.L024djend: jmp .L007finish .align 16 .L007finish: @@ -2938,40 +2497,30 @@ des_ncbc_encrypt: popl %ebp ret .align 16 -.L008cbc_enc_jmp_table: +.L009cbc_enc_jmp_table: .long 0 - .long .L016ej1 - .long .L015ej2 - .long .L014ej3 - .long .L012ej4 - .long .L011ej5 - .long .L010ej6 - .long .L009ej7 -.align 16 -.L027cbc_dec_jmp_table: - .long 0 - .long .L026dj1 - .long .L025dj2 - .long .L024dj3 - .long .L022dj4 - .long .L021dj5 - .long .L020dj6 - .long .L019dj7 -.L_des_ncbc_encrypt_end: - .size des_ncbc_encrypt,.L_des_ncbc_encrypt_end-des_ncbc_encrypt + .long .L017ej1-.L008PIC_point + .long .L016ej2-.L008PIC_point + .long .L015ej3-.L008PIC_point + .long .L013ej4-.L008PIC_point + .long .L012ej5-.L008PIC_point + .long .L011ej6-.L008PIC_point + .long .L010ej7-.L008PIC_point +.L_DES_ncbc_encrypt_end: + .size DES_ncbc_encrypt,.L_DES_ncbc_encrypt_end-DES_ncbc_encrypt .ident "desasm.pl" .text .align 16 -.globl des_ede3_cbc_encrypt - .type des_ede3_cbc_encrypt,@function -des_ede3_cbc_encrypt: +.globl DES_ede3_cbc_encrypt + .type DES_ede3_cbc_encrypt,@function +DES_ede3_cbc_encrypt: pushl %ebp pushl %ebx pushl %esi pushl %edi movl 28(%esp), %ebp - # getting iv ptr from parameter 6 + movl 44(%esp), %ebx movl (%ebx), %esi movl 4(%ebx), %edi @@ -2982,15 +2531,15 @@ des_ede3_cbc_encrypt: movl %esp, %ebx movl 36(%esp), %esi movl 40(%esp), %edi - # getting encrypt flag from parameter 7 + movl 64(%esp), %ecx - # get and push parameter 5 + movl 56(%esp), %eax pushl %eax - # get and push parameter 4 + movl 56(%esp), %eax pushl %eax - # get and push parameter 3 + movl 56(%esp), %eax pushl %eax pushl %ebx @@ -3007,7 +2556,7 @@ des_ede3_cbc_encrypt: xorl %edx, %ebx movl %eax, 16(%esp) movl %ebx, 20(%esp) - call des_encrypt3 + call DES_encrypt3 movl 16(%esp), %eax movl 20(%esp), %ebx movl %eax, (%edi) @@ -3020,33 +2569,38 @@ des_ede3_cbc_encrypt: movl 60(%esp), %ebp andl $7, %ebp jz .L031finish + call .L032PIC_point +.L032PIC_point: + popl %edx + leal .L033cbc_enc_jmp_table-.L032PIC_point(%edx),%ecx + movl (%ecx,%ebp,4), %ebp + addl %edx, %ebp xorl %ecx, %ecx xorl %edx, %edx - movl .L032cbc_enc_jmp_table(,%ebp,4),%ebp jmp *%ebp -.L033ej7: +.L034ej7: movb 6(%esi), %dh sall $8, %edx -.L034ej6: +.L035ej6: movb 5(%esi), %dh -.L035ej5: +.L036ej5: movb 4(%esi), %dl -.L036ej4: +.L037ej4: movl (%esi), %ecx - jmp .L037ejend -.L038ej3: + jmp .L038ejend +.L039ej3: movb 2(%esi), %ch sall $8, %ecx -.L039ej2: +.L040ej2: movb 1(%esi), %ch -.L040ej1: +.L041ej1: movb (%esi), %cl -.L037ejend: +.L038ejend: xorl %ecx, %eax xorl %edx, %ebx movl %eax, 16(%esp) movl %ebx, 20(%esp) - call des_encrypt3 + call DES_encrypt3 movl 16(%esp), %eax movl 20(%esp), %ebx movl %eax, (%edi) @@ -3057,13 +2611,13 @@ des_ede3_cbc_encrypt: andl $4294967288, %ebp movl 24(%esp), %eax movl 28(%esp), %ebx - jz .L041decrypt_finish -.L042decrypt_loop: + jz .L042decrypt_finish +.L043decrypt_loop: movl (%esi), %eax movl 4(%esi), %ebx movl %eax, 16(%esp) movl %ebx, 20(%esp) - call des_decrypt3 + call DES_decrypt3 movl 16(%esp), %eax movl 20(%esp), %ebx movl 24(%esp), %ecx @@ -3079,8 +2633,8 @@ des_ede3_cbc_encrypt: addl $8, %esi addl $8, %edi subl $8, %ebp - jnz .L042decrypt_loop -.L041decrypt_finish: + jnz .L043decrypt_loop +.L042decrypt_finish: movl 60(%esp), %ebp andl $7, %ebp jz .L031finish @@ -3088,7 +2642,7 @@ des_ede3_cbc_encrypt: movl 4(%esi), %ebx movl %eax, 16(%esp) movl %ebx, 20(%esp) - call des_decrypt3 + call DES_decrypt3 movl 16(%esp), %eax movl 20(%esp), %ebx movl 24(%esp), %ecx @@ -3097,26 +2651,26 @@ des_ede3_cbc_encrypt: xorl %ebx, %edx movl (%esi), %eax movl 4(%esi), %ebx -.L043dj7: +.L044dj7: rorl $16, %edx movb %dl, 6(%edi) shrl $16, %edx -.L044dj6: +.L045dj6: movb %dh, 5(%edi) -.L045dj5: +.L046dj5: movb %dl, 4(%edi) -.L046dj4: +.L047dj4: movl %ecx, (%edi) - jmp .L047djend -.L048dj3: + jmp .L048djend +.L049dj3: rorl $16, %ecx movb %cl, 2(%edi) sall $16, %ecx -.L049dj2: +.L050dj2: movb %ch, 1(%esi) -.L050dj1: +.L051dj1: movb %cl, (%esi) -.L047djend: +.L048djend: jmp .L031finish .align 16 .L031finish: @@ -3130,25 +2684,15 @@ des_ede3_cbc_encrypt: popl %ebp ret .align 16 -.L032cbc_enc_jmp_table: - .long 0 - .long .L040ej1 - .long .L039ej2 - .long .L038ej3 - .long .L036ej4 - .long .L035ej5 - .long .L034ej6 - .long .L033ej7 -.align 16 -.L051cbc_dec_jmp_table: +.L033cbc_enc_jmp_table: .long 0 - .long .L050dj1 - .long .L049dj2 - .long .L048dj3 - .long .L046dj4 - .long .L045dj5 - .long .L044dj6 - .long .L043dj7 -.L_des_ede3_cbc_encrypt_end: - .size des_ede3_cbc_encrypt,.L_des_ede3_cbc_encrypt_end-des_ede3_cbc_encrypt + .long .L041ej1-.L032PIC_point + .long .L040ej2-.L032PIC_point + .long .L039ej3-.L032PIC_point + .long .L037ej4-.L032PIC_point + .long .L036ej5-.L032PIC_point + .long .L035ej6-.L032PIC_point + .long .L034ej7-.L032PIC_point +.L_DES_ede3_cbc_encrypt_end: + .size DES_ede3_cbc_encrypt,.L_DES_ede3_cbc_encrypt_end-DES_ede3_cbc_encrypt .ident "desasm.pl" |