draconisplusplus/subprojects/openssl-3.0.8/generated-config/archs/VC-WIN32/asm/crypto/des/des-586.asm

1899 lines
35 KiB
NASM

%ifidn __OUTPUT_FORMAT__,obj
section code use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
$@feat.00 equ 1
section .text code align=64
%else
section .text code
%endif
global _DES_SPtrans
align 16
__x86_DES_encrypt:
push ecx
; Round 0
mov eax,DWORD [ecx]
xor ebx,ebx
mov edx,DWORD [4+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 1
mov eax,DWORD [8+ecx]
xor ebx,ebx
mov edx,DWORD [12+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 2
mov eax,DWORD [16+ecx]
xor ebx,ebx
mov edx,DWORD [20+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 3
mov eax,DWORD [24+ecx]
xor ebx,ebx
mov edx,DWORD [28+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 4
mov eax,DWORD [32+ecx]
xor ebx,ebx
mov edx,DWORD [36+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 5
mov eax,DWORD [40+ecx]
xor ebx,ebx
mov edx,DWORD [44+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 6
mov eax,DWORD [48+ecx]
xor ebx,ebx
mov edx,DWORD [52+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 7
mov eax,DWORD [56+ecx]
xor ebx,ebx
mov edx,DWORD [60+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 8
mov eax,DWORD [64+ecx]
xor ebx,ebx
mov edx,DWORD [68+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 9
mov eax,DWORD [72+ecx]
xor ebx,ebx
mov edx,DWORD [76+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 10
mov eax,DWORD [80+ecx]
xor ebx,ebx
mov edx,DWORD [84+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 11
mov eax,DWORD [88+ecx]
xor ebx,ebx
mov edx,DWORD [92+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 12
mov eax,DWORD [96+ecx]
xor ebx,ebx
mov edx,DWORD [100+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 13
mov eax,DWORD [104+ecx]
xor ebx,ebx
mov edx,DWORD [108+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 14
mov eax,DWORD [112+ecx]
xor ebx,ebx
mov edx,DWORD [116+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 15
mov eax,DWORD [120+ecx]
xor ebx,ebx
mov edx,DWORD [124+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
add esp,4
ret
align 16
__x86_DES_decrypt:
push ecx
; Round 15
mov eax,DWORD [120+ecx]
xor ebx,ebx
mov edx,DWORD [124+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 14
mov eax,DWORD [112+ecx]
xor ebx,ebx
mov edx,DWORD [116+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 13
mov eax,DWORD [104+ecx]
xor ebx,ebx
mov edx,DWORD [108+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 12
mov eax,DWORD [96+ecx]
xor ebx,ebx
mov edx,DWORD [100+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 11
mov eax,DWORD [88+ecx]
xor ebx,ebx
mov edx,DWORD [92+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 10
mov eax,DWORD [80+ecx]
xor ebx,ebx
mov edx,DWORD [84+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 9
mov eax,DWORD [72+ecx]
xor ebx,ebx
mov edx,DWORD [76+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 8
mov eax,DWORD [64+ecx]
xor ebx,ebx
mov edx,DWORD [68+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 7
mov eax,DWORD [56+ecx]
xor ebx,ebx
mov edx,DWORD [60+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 6
mov eax,DWORD [48+ecx]
xor ebx,ebx
mov edx,DWORD [52+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 5
mov eax,DWORD [40+ecx]
xor ebx,ebx
mov edx,DWORD [44+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 4
mov eax,DWORD [32+ecx]
xor ebx,ebx
mov edx,DWORD [36+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 3
mov eax,DWORD [24+ecx]
xor ebx,ebx
mov edx,DWORD [28+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 2
mov eax,DWORD [16+ecx]
xor ebx,ebx
mov edx,DWORD [20+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
; Round 1
mov eax,DWORD [8+ecx]
xor ebx,ebx
mov edx,DWORD [12+ecx]
xor eax,esi
xor ecx,ecx
xor edx,esi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor edi,DWORD [0x600+ebx*1+ebp]
xor edi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor edi,DWORD [0x400+eax*1+ebp]
xor edi,DWORD [0x500+edx*1+ebp]
; Round 0
mov eax,DWORD [ecx]
xor ebx,ebx
mov edx,DWORD [4+ecx]
xor eax,edi
xor ecx,ecx
xor edx,edi
and eax,0xfcfcfcfc
and edx,0xcfcfcfcf
mov bl,al
mov cl,ah
ror edx,4
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
xor esi,DWORD [0x600+ebx*1+ebp]
xor esi,DWORD [0x700+ecx*1+ebp]
mov ecx,DWORD [esp]
xor esi,DWORD [0x400+eax*1+ebp]
xor esi,DWORD [0x500+edx*1+ebp]
add esp,4
ret
global _DES_encrypt1
align 16
_DES_encrypt1:
L$_DES_encrypt1_begin:
push esi
push edi
;
; Load the 2 words
mov esi,DWORD [12+esp]
xor ecx,ecx
push ebx
push ebp
mov eax,DWORD [esi]
mov ebx,DWORD [28+esp]
mov edi,DWORD [4+esi]
;
; IP
rol eax,4
mov esi,eax
xor eax,edi
and eax,0xf0f0f0f0
xor esi,eax
xor edi,eax
;
rol edi,20
mov eax,edi
xor edi,esi
and edi,0xfff0000f
xor eax,edi
xor esi,edi
;
rol eax,14
mov edi,eax
xor eax,esi
and eax,0x33333333
xor edi,eax
xor esi,eax
;
rol esi,22
mov eax,esi
xor esi,edi
and esi,0x03fc03fc
xor eax,esi
xor edi,esi
;
rol eax,9
mov esi,eax
xor eax,edi
and eax,0xaaaaaaaa
xor esi,eax
xor edi,eax
;
rol edi,1
call L$000pic_point
L$000pic_point:
pop ebp
lea ebp,[(L$des_sptrans-L$000pic_point)+ebp]
mov ecx,DWORD [24+esp]
cmp ebx,0
je NEAR L$001decrypt
call __x86_DES_encrypt
jmp NEAR L$002done
L$001decrypt:
call __x86_DES_decrypt
L$002done:
;
; FP
mov edx,DWORD [20+esp]
ror esi,1
mov eax,edi
xor edi,esi
and edi,0xaaaaaaaa
xor eax,edi
xor esi,edi
;
rol eax,23
mov edi,eax
xor eax,esi
and eax,0x03fc03fc
xor edi,eax
xor esi,eax
;
rol edi,10
mov eax,edi
xor edi,esi
and edi,0x33333333
xor eax,edi
xor esi,edi
;
rol esi,18
mov edi,esi
xor esi,eax
and esi,0xfff0000f
xor edi,esi
xor eax,esi
;
rol edi,12
mov esi,edi
xor edi,eax
and edi,0xf0f0f0f0
xor esi,edi
xor eax,edi
;
ror eax,4
mov DWORD [edx],eax
mov DWORD [4+edx],esi
pop ebp
pop ebx
pop edi
pop esi
ret
global _DES_encrypt2
align 16
_DES_encrypt2:
L$_DES_encrypt2_begin:
push esi
push edi
;
; Load the 2 words
mov eax,DWORD [12+esp]
xor ecx,ecx
push ebx
push ebp
mov esi,DWORD [eax]
mov ebx,DWORD [28+esp]
rol esi,3
mov edi,DWORD [4+eax]
rol edi,3
call L$003pic_point
L$003pic_point:
pop ebp
lea ebp,[(L$des_sptrans-L$003pic_point)+ebp]
mov ecx,DWORD [24+esp]
cmp ebx,0
je NEAR L$004decrypt
call __x86_DES_encrypt
jmp NEAR L$005done
L$004decrypt:
call __x86_DES_decrypt
L$005done:
;
; Fixup
ror edi,3
mov eax,DWORD [20+esp]
ror esi,3
mov DWORD [eax],edi
mov DWORD [4+eax],esi
pop ebp
pop ebx
pop edi
pop esi
ret
global _DES_encrypt3
align 16
_DES_encrypt3:
L$_DES_encrypt3_begin:
push ebx
mov ebx,DWORD [8+esp]
push ebp
push esi
push edi
;
; Load the data words
mov edi,DWORD [ebx]
mov esi,DWORD [4+ebx]
sub esp,12
;
; IP
rol edi,4
mov edx,edi
xor edi,esi
and edi,0xf0f0f0f0
xor edx,edi
xor esi,edi
;
rol esi,20
mov edi,esi
xor esi,edx
and esi,0xfff0000f
xor edi,esi
xor edx,esi
;
rol edi,14
mov esi,edi
xor edi,edx
and edi,0x33333333
xor esi,edi
xor edx,edi
;
rol edx,22
mov edi,edx
xor edx,esi
and edx,0x03fc03fc
xor edi,edx
xor esi,edx
;
rol edi,9
mov edx,edi
xor edi,esi
and edi,0xaaaaaaaa
xor edx,edi
xor esi,edi
;
ror edx,3
ror esi,2
mov DWORD [4+ebx],esi
mov eax,DWORD [36+esp]
mov DWORD [ebx],edx
mov edi,DWORD [40+esp]
mov esi,DWORD [44+esp]
mov DWORD [8+esp],DWORD 1
mov DWORD [4+esp],eax
mov DWORD [esp],ebx
call L$_DES_encrypt2_begin
mov DWORD [8+esp],DWORD 0
mov DWORD [4+esp],edi
mov DWORD [esp],ebx
call L$_DES_encrypt2_begin
mov DWORD [8+esp],DWORD 1
mov DWORD [4+esp],esi
mov DWORD [esp],ebx
call L$_DES_encrypt2_begin
add esp,12
mov edi,DWORD [ebx]
mov esi,DWORD [4+ebx]
;
; FP
rol esi,2
rol edi,3
mov eax,edi
xor edi,esi
and edi,0xaaaaaaaa
xor eax,edi
xor esi,edi
;
rol eax,23
mov edi,eax
xor eax,esi
and eax,0x03fc03fc
xor edi,eax
xor esi,eax
;
rol edi,10
mov eax,edi
xor edi,esi
and edi,0x33333333
xor eax,edi
xor esi,edi
;
rol esi,18
mov edi,esi
xor esi,eax
and esi,0xfff0000f
xor edi,esi
xor eax,esi
;
rol edi,12
mov esi,edi
xor edi,eax
and edi,0xf0f0f0f0
xor esi,edi
xor eax,edi
;
ror eax,4
mov DWORD [ebx],eax
mov DWORD [4+ebx],esi
pop edi
pop esi
pop ebp
pop ebx
ret
global _DES_decrypt3
align 16
_DES_decrypt3:
L$_DES_decrypt3_begin:
push ebx
mov ebx,DWORD [8+esp]
push ebp
push esi
push edi
;
; Load the data words
mov edi,DWORD [ebx]
mov esi,DWORD [4+ebx]
sub esp,12
;
; IP
rol edi,4
mov edx,edi
xor edi,esi
and edi,0xf0f0f0f0
xor edx,edi
xor esi,edi
;
rol esi,20
mov edi,esi
xor esi,edx
and esi,0xfff0000f
xor edi,esi
xor edx,esi
;
rol edi,14
mov esi,edi
xor edi,edx
and edi,0x33333333
xor esi,edi
xor edx,edi
;
rol edx,22
mov edi,edx
xor edx,esi
and edx,0x03fc03fc
xor edi,edx
xor esi,edx
;
rol edi,9
mov edx,edi
xor edi,esi
and edi,0xaaaaaaaa
xor edx,edi
xor esi,edi
;
ror edx,3
ror esi,2
mov DWORD [4+ebx],esi
mov esi,DWORD [36+esp]
mov DWORD [ebx],edx
mov edi,DWORD [40+esp]
mov eax,DWORD [44+esp]
mov DWORD [8+esp],DWORD 0
mov DWORD [4+esp],eax
mov DWORD [esp],ebx
call L$_DES_encrypt2_begin
mov DWORD [8+esp],DWORD 1
mov DWORD [4+esp],edi
mov DWORD [esp],ebx
call L$_DES_encrypt2_begin
mov DWORD [8+esp],DWORD 0
mov DWORD [4+esp],esi
mov DWORD [esp],ebx
call L$_DES_encrypt2_begin
add esp,12
mov edi,DWORD [ebx]
mov esi,DWORD [4+ebx]
;
; FP
rol esi,2
rol edi,3
mov eax,edi
xor edi,esi
and edi,0xaaaaaaaa
xor eax,edi
xor esi,edi
;
rol eax,23
mov edi,eax
xor eax,esi
and eax,0x03fc03fc
xor edi,eax
xor esi,eax
;
rol edi,10
mov eax,edi
xor edi,esi
and edi,0x33333333
xor eax,edi
xor esi,edi
;
rol esi,18
mov edi,esi
xor esi,eax
and esi,0xfff0000f
xor edi,esi
xor eax,esi
;
rol edi,12
mov esi,edi
xor edi,eax
and edi,0xf0f0f0f0
xor esi,edi
xor eax,edi
;
ror eax,4
mov DWORD [ebx],eax
mov DWORD [4+ebx],esi
pop edi
pop esi
pop ebp
pop ebx
ret
global _DES_ncbc_encrypt
align 16
_DES_ncbc_encrypt:
L$_DES_ncbc_encrypt_begin:
;
push ebp
push ebx
push esi
push edi
mov ebp,DWORD [28+esp]
; getting iv ptr from parameter 4
mov ebx,DWORD [36+esp]
mov esi,DWORD [ebx]
mov edi,DWORD [4+ebx]
push edi
push esi
push edi
push esi
mov ebx,esp
mov esi,DWORD [36+esp]
mov edi,DWORD [40+esp]
; getting encrypt flag from parameter 5
mov ecx,DWORD [56+esp]
; get and push parameter 5
push ecx
; get and push parameter 3
mov eax,DWORD [52+esp]
push eax
push ebx
cmp ecx,0
jz NEAR L$006decrypt
and ebp,4294967288
mov eax,DWORD [12+esp]
mov ebx,DWORD [16+esp]
jz NEAR L$007encrypt_finish
L$008encrypt_loop:
mov ecx,DWORD [esi]
mov edx,DWORD [4+esi]
xor eax,ecx
xor ebx,edx
mov DWORD [12+esp],eax
mov DWORD [16+esp],ebx
call L$_DES_encrypt1_begin
mov eax,DWORD [12+esp]
mov ebx,DWORD [16+esp]
mov DWORD [edi],eax
mov DWORD [4+edi],ebx
add esi,8
add edi,8
sub ebp,8
jnz NEAR L$008encrypt_loop
L$007encrypt_finish:
mov ebp,DWORD [56+esp]
and ebp,7
jz NEAR L$009finish
call L$010PIC_point
L$010PIC_point:
pop edx
lea ecx,[(L$011cbc_enc_jmp_table-L$010PIC_point)+edx]
mov ebp,DWORD [ebp*4+ecx]
add ebp,edx
xor ecx,ecx
xor edx,edx
jmp ebp
L$012ej7:
#ifdef __CET__
db 243,15,30,251
#endif
mov dh,BYTE [6+esi]
shl edx,8
L$013ej6:
#ifdef __CET__
db 243,15,30,251
#endif
mov dh,BYTE [5+esi]
L$014ej5:
#ifdef __CET__
db 243,15,30,251
#endif
mov dl,BYTE [4+esi]
L$015ej4:
#ifdef __CET__
db 243,15,30,251
#endif
mov ecx,DWORD [esi]
jmp NEAR L$016ejend
L$017ej3:
#ifdef __CET__
db 243,15,30,251
#endif
mov ch,BYTE [2+esi]
shl ecx,8
L$018ej2:
#ifdef __CET__
db 243,15,30,251
#endif
mov ch,BYTE [1+esi]
L$019ej1:
#ifdef __CET__
db 243,15,30,251
#endif
mov cl,BYTE [esi]
L$016ejend:
xor eax,ecx
xor ebx,edx
mov DWORD [12+esp],eax
mov DWORD [16+esp],ebx
call L$_DES_encrypt1_begin
mov eax,DWORD [12+esp]
mov ebx,DWORD [16+esp]
mov DWORD [edi],eax
mov DWORD [4+edi],ebx
jmp NEAR L$009finish
L$006decrypt:
and ebp,4294967288
mov eax,DWORD [20+esp]
mov ebx,DWORD [24+esp]
jz NEAR L$020decrypt_finish
L$021decrypt_loop:
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
mov DWORD [12+esp],eax
mov DWORD [16+esp],ebx
call L$_DES_encrypt1_begin
mov eax,DWORD [12+esp]
mov ebx,DWORD [16+esp]
mov ecx,DWORD [20+esp]
mov edx,DWORD [24+esp]
xor ecx,eax
xor edx,ebx
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
mov DWORD [edi],ecx
mov DWORD [4+edi],edx
mov DWORD [20+esp],eax
mov DWORD [24+esp],ebx
add esi,8
add edi,8
sub ebp,8
jnz NEAR L$021decrypt_loop
L$020decrypt_finish:
mov ebp,DWORD [56+esp]
and ebp,7
jz NEAR L$009finish
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
mov DWORD [12+esp],eax
mov DWORD [16+esp],ebx
call L$_DES_encrypt1_begin
mov eax,DWORD [12+esp]
mov ebx,DWORD [16+esp]
mov ecx,DWORD [20+esp]
mov edx,DWORD [24+esp]
xor ecx,eax
xor edx,ebx
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
L$022dj7:
ror edx,16
mov BYTE [6+edi],dl
shr edx,16
L$023dj6:
mov BYTE [5+edi],dh
L$024dj5:
mov BYTE [4+edi],dl
L$025dj4:
mov DWORD [edi],ecx
jmp NEAR L$026djend
L$027dj3:
ror ecx,16
mov BYTE [2+edi],cl
shl ecx,16
L$028dj2:
mov BYTE [1+esi],ch
L$029dj1:
mov BYTE [esi],cl
L$026djend:
jmp NEAR L$009finish
L$009finish:
mov ecx,DWORD [64+esp]
add esp,28
mov DWORD [ecx],eax
mov DWORD [4+ecx],ebx
pop edi
pop esi
pop ebx
pop ebp
ret
align 64
L$011cbc_enc_jmp_table:
dd 0
dd L$019ej1-L$010PIC_point
dd L$018ej2-L$010PIC_point
dd L$017ej3-L$010PIC_point
dd L$015ej4-L$010PIC_point
dd L$014ej5-L$010PIC_point
dd L$013ej6-L$010PIC_point
dd L$012ej7-L$010PIC_point
align 64
global _DES_ede3_cbc_encrypt
align 16
_DES_ede3_cbc_encrypt:
L$_DES_ede3_cbc_encrypt_begin:
;
push ebp
push ebx
push esi
push edi
mov ebp,DWORD [28+esp]
; getting iv ptr from parameter 6
mov ebx,DWORD [44+esp]
mov esi,DWORD [ebx]
mov edi,DWORD [4+ebx]
push edi
push esi
push edi
push esi
mov ebx,esp
mov esi,DWORD [36+esp]
mov edi,DWORD [40+esp]
; getting encrypt flag from parameter 7
mov ecx,DWORD [64+esp]
; get and push parameter 5
mov eax,DWORD [56+esp]
push eax
; get and push parameter 4
mov eax,DWORD [56+esp]
push eax
; get and push parameter 3
mov eax,DWORD [56+esp]
push eax
push ebx
cmp ecx,0
jz NEAR L$030decrypt
and ebp,4294967288
mov eax,DWORD [16+esp]
mov ebx,DWORD [20+esp]
jz NEAR L$031encrypt_finish
L$032encrypt_loop:
mov ecx,DWORD [esi]
mov edx,DWORD [4+esi]
xor eax,ecx
xor ebx,edx
mov DWORD [16+esp],eax
mov DWORD [20+esp],ebx
call L$_DES_encrypt3_begin
mov eax,DWORD [16+esp]
mov ebx,DWORD [20+esp]
mov DWORD [edi],eax
mov DWORD [4+edi],ebx
add esi,8
add edi,8
sub ebp,8
jnz NEAR L$032encrypt_loop
L$031encrypt_finish:
mov ebp,DWORD [60+esp]
and ebp,7
jz NEAR L$033finish
call L$034PIC_point
L$034PIC_point:
pop edx
lea ecx,[(L$035cbc_enc_jmp_table-L$034PIC_point)+edx]
mov ebp,DWORD [ebp*4+ecx]
add ebp,edx
xor ecx,ecx
xor edx,edx
jmp ebp
L$036ej7:
#ifdef __CET__
db 243,15,30,251
#endif
mov dh,BYTE [6+esi]
shl edx,8
L$037ej6:
#ifdef __CET__
db 243,15,30,251
#endif
mov dh,BYTE [5+esi]
L$038ej5:
#ifdef __CET__
db 243,15,30,251
#endif
mov dl,BYTE [4+esi]
L$039ej4:
#ifdef __CET__
db 243,15,30,251
#endif
mov ecx,DWORD [esi]
jmp NEAR L$040ejend
L$041ej3:
#ifdef __CET__
db 243,15,30,251
#endif
mov ch,BYTE [2+esi]
shl ecx,8
L$042ej2:
#ifdef __CET__
db 243,15,30,251
#endif
mov ch,BYTE [1+esi]
L$043ej1:
#ifdef __CET__
db 243,15,30,251
#endif
mov cl,BYTE [esi]
L$040ejend:
xor eax,ecx
xor ebx,edx
mov DWORD [16+esp],eax
mov DWORD [20+esp],ebx
call L$_DES_encrypt3_begin
mov eax,DWORD [16+esp]
mov ebx,DWORD [20+esp]
mov DWORD [edi],eax
mov DWORD [4+edi],ebx
jmp NEAR L$033finish
L$030decrypt:
and ebp,4294967288
mov eax,DWORD [24+esp]
mov ebx,DWORD [28+esp]
jz NEAR L$044decrypt_finish
L$045decrypt_loop:
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
mov DWORD [16+esp],eax
mov DWORD [20+esp],ebx
call L$_DES_decrypt3_begin
mov eax,DWORD [16+esp]
mov ebx,DWORD [20+esp]
mov ecx,DWORD [24+esp]
mov edx,DWORD [28+esp]
xor ecx,eax
xor edx,ebx
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
mov DWORD [edi],ecx
mov DWORD [4+edi],edx
mov DWORD [24+esp],eax
mov DWORD [28+esp],ebx
add esi,8
add edi,8
sub ebp,8
jnz NEAR L$045decrypt_loop
L$044decrypt_finish:
mov ebp,DWORD [60+esp]
and ebp,7
jz NEAR L$033finish
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
mov DWORD [16+esp],eax
mov DWORD [20+esp],ebx
call L$_DES_decrypt3_begin
mov eax,DWORD [16+esp]
mov ebx,DWORD [20+esp]
mov ecx,DWORD [24+esp]
mov edx,DWORD [28+esp]
xor ecx,eax
xor edx,ebx
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
L$046dj7:
ror edx,16
mov BYTE [6+edi],dl
shr edx,16
L$047dj6:
mov BYTE [5+edi],dh
L$048dj5:
mov BYTE [4+edi],dl
L$049dj4:
mov DWORD [edi],ecx
jmp NEAR L$050djend
L$051dj3:
ror ecx,16
mov BYTE [2+edi],cl
shl ecx,16
L$052dj2:
mov BYTE [1+esi],ch
L$053dj1:
mov BYTE [esi],cl
L$050djend:
jmp NEAR L$033finish
L$033finish:
mov ecx,DWORD [76+esp]
add esp,32
mov DWORD [ecx],eax
mov DWORD [4+ecx],ebx
pop edi
pop esi
pop ebx
pop ebp
ret
align 64
L$035cbc_enc_jmp_table:
dd 0
dd L$043ej1-L$034PIC_point
dd L$042ej2-L$034PIC_point
dd L$041ej3-L$034PIC_point
dd L$039ej4-L$034PIC_point
dd L$038ej5-L$034PIC_point
dd L$037ej6-L$034PIC_point
dd L$036ej7-L$034PIC_point
align 64
align 64
_DES_SPtrans:
L$des_sptrans:
dd 34080768,524288,33554434,34080770
dd 33554432,526338,524290,33554434
dd 526338,34080768,34078720,2050
dd 33556482,33554432,0,524290
dd 524288,2,33556480,526336
dd 34080770,34078720,2050,33556480
dd 2,2048,526336,34078722
dd 2048,33556482,34078722,0
dd 0,34080770,33556480,524290
dd 34080768,524288,2050,33556480
dd 34078722,2048,526336,33554434
dd 526338,2,33554434,34078720
dd 34080770,526336,34078720,33556482
dd 33554432,2050,524290,0
dd 524288,33554432,33556482,34080768
dd 2,34078722,2048,526338
dd 1074823184,0,1081344,1074790400
dd 1073741840,32784,1073774592,1081344
dd 32768,1074790416,16,1073774592
dd 1048592,1074823168,1074790400,16
dd 1048576,1073774608,1074790416,32768
dd 1081360,1073741824,0,1048592
dd 1073774608,1081360,1074823168,1073741840
dd 1073741824,1048576,32784,1074823184
dd 1048592,1074823168,1073774592,1081360
dd 1074823184,1048592,1073741840,0
dd 1073741824,32784,1048576,1074790416
dd 32768,1073741824,1081360,1073774608
dd 1074823168,32768,0,1073741840
dd 16,1074823184,1081344,1074790400
dd 1074790416,1048576,32784,1073774592
dd 1073774608,16,1074790400,1081344
dd 67108865,67371264,256,67109121
dd 262145,67108864,67109121,262400
dd 67109120,262144,67371008,1
dd 67371265,257,1,67371009
dd 0,262145,67371264,256
dd 257,67371265,262144,67108865
dd 67371009,67109120,262401,67371008
dd 262400,0,67108864,262401
dd 67371264,256,1,262144
dd 257,262145,67371008,67109121
dd 0,67371264,262400,67371009
dd 262145,67108864,67371265,1
dd 262401,67108865,67108864,67371265
dd 262144,67109120,67109121,262400
dd 67109120,0,67371009,257
dd 67108865,262401,256,67371008
dd 4198408,268439552,8,272633864
dd 0,272629760,268439560,4194312
dd 272633856,268435464,268435456,4104
dd 268435464,4198408,4194304,268435456
dd 272629768,4198400,4096,8
dd 4198400,268439560,272629760,4096
dd 4104,0,4194312,272633856
dd 268439552,272629768,272633864,4194304
dd 272629768,4104,4194304,268435464
dd 4198400,268439552,8,272629760
dd 268439560,0,4096,4194312
dd 0,272629768,272633856,4096
dd 268435456,272633864,4198408,4194304
dd 272633864,8,268439552,4198408
dd 4194312,4198400,272629760,268439560
dd 4104,268435456,268435464,272633856
dd 134217728,65536,1024,134284320
dd 134283296,134218752,66592,134283264
dd 65536,32,134217760,66560
dd 134218784,134283296,134284288,0
dd 66560,134217728,65568,1056
dd 134218752,66592,0,134217760
dd 32,134218784,134284320,65568
dd 134283264,1024,1056,134284288
dd 134284288,134218784,65568,134283264
dd 65536,32,134217760,134218752
dd 134217728,66560,134284320,0
dd 66592,134217728,1024,65568
dd 134218784,1024,0,134284320
dd 134283296,134284288,1056,65536
dd 66560,134283296,134218752,1056
dd 32,66592,134283264,134217760
dd 2147483712,2097216,0,2149588992
dd 2097216,8192,2147491904,2097152
dd 8256,2149589056,2105344,2147483648
dd 2147491840,2147483712,2149580800,2105408
dd 2097152,2147491904,2149580864,0
dd 8192,64,2149588992,2149580864
dd 2149589056,2149580800,2147483648,8256
dd 64,2105344,2105408,2147491840
dd 8256,2147483648,2147491840,2105408
dd 2149588992,2097216,0,2147491840
dd 2147483648,8192,2149580864,2097152
dd 2097216,2149589056,2105344,64
dd 2149589056,2105344,2097152,2147491904
dd 2147483712,2149580800,2105408,0
dd 8192,2147483712,2147491904,2149588992
dd 2149580800,8256,64,2149580864
dd 16384,512,16777728,16777220
dd 16794116,16388,16896,0
dd 16777216,16777732,516,16793600
dd 4,16794112,16793600,516
dd 16777732,16384,16388,16794116
dd 0,16777728,16777220,16896
dd 16793604,16900,16794112,4
dd 16900,16793604,512,16777216
dd 16900,16793600,16793604,516
dd 16384,512,16777216,16793604
dd 16777732,16900,16896,0
dd 512,16777220,4,16777728
dd 0,16777732,16777728,16896
dd 516,16384,16794116,16777216
dd 16794112,4,16388,16794116
dd 16777220,16794112,16793600,16388
dd 545259648,545390592,131200,0
dd 537001984,8388736,545259520,545390720
dd 128,536870912,8519680,131200
dd 8519808,537002112,536871040,545259520
dd 131072,8519808,8388736,537001984
dd 545390720,536871040,0,8519680
dd 536870912,8388608,537002112,545259648
dd 8388608,131072,545390592,128
dd 8388608,131072,536871040,545390720
dd 131200,536870912,0,8519680
dd 545259648,537002112,537001984,8388736
dd 545390592,128,8388736,537001984
dd 545390720,8388608,545259520,536871040
dd 8519680,131200,537002112,545259520
dd 128,545390592,8519808,0
dd 536870912,545259648,131072,8519808