|
@@ -1,881 +0,0 @@
|
|
|
-
|
|
|
|
|
-%ifidn __OUTPUT_FORMAT__,obj
|
|
|
|
|
-section code use32 class=code align=256
|
|
|
|
|
-%elifidn __OUTPUT_FORMAT__,win32
|
|
|
|
|
[email protected] equ 1
|
|
|
|
|
-section .text code align=256
|
|
|
|
|
-%else
|
|
|
|
|
-section .text code
|
|
|
|
|
-%endif
|
|
|
|
|
-extern _DES_SPtrans
|
|
|
|
|
-global _fcrypt_body
|
|
|
|
|
-align 16
|
|
|
|
|
-_fcrypt_body:
|
|
|
|
|
-L$_fcrypt_body_begin:
|
|
|
|
|
- push ebp
|
|
|
|
|
- push ebx
|
|
|
|
|
- push esi
|
|
|
|
|
- push edi
|
|
|
|
|
- ;
|
|
|
|
|
- ; Load the 2 words
|
|
|
|
|
- xor edi,edi
|
|
|
|
|
- xor esi,esi
|
|
|
|
|
- lea edx,[_DES_SPtrans]
|
|
|
|
|
- push edx
|
|
|
|
|
- mov ebp,DWORD [28+esp]
|
|
|
|
|
- push DWORD 25
|
|
|
|
|
-L$000start:
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 0
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,esi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [4+ebp]
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor edi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor edi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor edi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor edi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 1
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,edi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [8+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [12+ebp]
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor esi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor esi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor esi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor esi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 2
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,esi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [16+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [20+ebp]
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor edi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor edi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor edi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor edi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 3
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,edi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [24+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [28+ebp]
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor esi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor esi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor esi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor esi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 4
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,esi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [32+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [36+ebp]
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor edi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor edi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor edi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor edi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 5
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,edi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [40+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [44+ebp]
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor esi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor esi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor esi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor esi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 6
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,esi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [48+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [52+ebp]
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor edi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor edi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor edi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor edi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 7
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,edi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [56+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [60+ebp]
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor esi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor esi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor esi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor esi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 8
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,esi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [64+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [68+ebp]
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor edi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor edi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor edi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor edi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 9
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,edi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [72+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [76+ebp]
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor esi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor esi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor esi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor esi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 10
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,esi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [80+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [84+ebp]
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor edi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor edi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor edi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor edi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 11
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,edi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [88+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [92+ebp]
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor esi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor esi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor esi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor esi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 12
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,esi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [96+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [100+ebp]
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor edi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor edi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor edi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor edi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 13
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,edi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [104+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [108+ebp]
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor esi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor esi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor esi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor esi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 14
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,esi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [112+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [116+ebp]
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edx,esi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor edi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor edi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor edi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor edi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor edi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- ;
|
|
|
|
|
- ; Round 15
|
|
|
|
|
- mov eax,DWORD [36+esp]
|
|
|
|
|
- mov edx,edi
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- mov ecx,DWORD [40+esp]
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- and eax,edx
|
|
|
|
|
- and edx,ecx
|
|
|
|
|
- mov ebx,eax
|
|
|
|
|
- shl ebx,16
|
|
|
|
|
- mov ecx,edx
|
|
|
|
|
- shl ecx,16
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- mov ebx,DWORD [120+ebp]
|
|
|
|
|
- xor eax,ebx
|
|
|
|
|
- mov ecx,DWORD [124+ebp]
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- xor edx,edi
|
|
|
|
|
- xor edx,ecx
|
|
|
|
|
- and eax,0xfcfcfcfc
|
|
|
|
|
- xor ebx,ebx
|
|
|
|
|
- and edx,0xcfcfcfcf
|
|
|
|
|
- xor ecx,ecx
|
|
|
|
|
- mov bl,al
|
|
|
|
|
- mov cl,ah
|
|
|
|
|
- ror edx,4
|
|
|
|
|
- mov ebp,DWORD [4+esp]
|
|
|
|
|
- xor esi,DWORD [ebx*1+ebp]
|
|
|
|
|
- mov bl,dl
|
|
|
|
|
- xor esi,DWORD [0x200+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- shr eax,16
|
|
|
|
|
- xor esi,DWORD [0x100+ebx*1+ebp]
|
|
|
|
|
- mov bl,ah
|
|
|
|
|
- shr edx,16
|
|
|
|
|
- xor esi,DWORD [0x300+ecx*1+ebp]
|
|
|
|
|
- mov cl,dh
|
|
|
|
|
- and eax,0xff
|
|
|
|
|
- and edx,0xff
|
|
|
|
|
- mov ebx,DWORD [0x600+ebx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x700+ecx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x400+eax*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebx,DWORD [0x500+edx*1+ebp]
|
|
|
|
|
- xor esi,ebx
|
|
|
|
|
- mov ebp,DWORD [32+esp]
|
|
|
|
|
- mov ebx,DWORD [esp]
|
|
|
|
|
- mov eax,edi
|
|
|
|
|
- dec ebx
|
|
|
|
|
- mov edi,esi
|
|
|
|
|
- mov esi,eax
|
|
|
|
|
- mov DWORD [esp],ebx
|
|
|
|
|
- jnz NEAR L$000start
|
|
|
|
|
- ;
|
|
|
|
|
- ; FP
|
|
|
|
|
- mov edx,DWORD [28+esp]
|
|
|
|
|
- ror edi,1
|
|
|
|
|
- mov eax,esi
|
|
|
|
|
- xor esi,edi
|
|
|
|
|
- and esi,0xaaaaaaaa
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edi,esi
|
|
|
|
|
- ;
|
|
|
|
|
- rol eax,23
|
|
|
|
|
- mov esi,eax
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- and eax,0x03fc03fc
|
|
|
|
|
- xor esi,eax
|
|
|
|
|
- xor edi,eax
|
|
|
|
|
- ;
|
|
|
|
|
- rol esi,10
|
|
|
|
|
- mov eax,esi
|
|
|
|
|
- xor esi,edi
|
|
|
|
|
- and esi,0x33333333
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- xor edi,esi
|
|
|
|
|
- ;
|
|
|
|
|
- rol edi,18
|
|
|
|
|
- mov esi,edi
|
|
|
|
|
- xor edi,eax
|
|
|
|
|
- and edi,0xfff0000f
|
|
|
|
|
- xor esi,edi
|
|
|
|
|
- xor eax,edi
|
|
|
|
|
- ;
|
|
|
|
|
- rol esi,12
|
|
|
|
|
- mov edi,esi
|
|
|
|
|
- xor esi,eax
|
|
|
|
|
- and esi,0xf0f0f0f0
|
|
|
|
|
- xor edi,esi
|
|
|
|
|
- xor eax,esi
|
|
|
|
|
- ;
|
|
|
|
|
- ror eax,4
|
|
|
|
|
- mov DWORD [edx],eax
|
|
|
|
|
- mov DWORD [4+edx],edi
|
|
|
|
|
- add esp,8
|
|
|
|
|
- pop edi
|
|
|
|
|
- pop esi
|
|
|
|
|
- pop ebx
|
|
|
|
|
- pop ebp
|
|
|
|
|
- ret
|
|
|