Function at 0x40e5c0
Capabilities:
Encode data using xor
Encrypt data using des

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xc
mov ebx, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esp + 4], eax
mov edi, ebx
movzx esi, bl
shr edi, 0x18
mov eax, dword [esi*8 + 0x41d840]
mov esi, dword [esi*8 + 0x41d844]
add edi, 0x300
xor eax, dword [edi*8 + 0x41d840]
xor esi, dword [edi*8 + 0x41d844]
movzx edi, cl
add edi, 0x400
xor eax, dword [edi*8 + 0x41d840]
xor esi, dword [edi*8 + 0x41d844]
mov edi, ecx
shr edi, 0x18
add edi, 0x700
xor eax, dword [edi*8 + 0x41d840]
xor esi, dword [edi*8 + 0x41d844]
movzx edi, bh
shr ebx, 0x10
add edi, 0x100
movzx ebx, bl
xor eax, dword [edi*8 + 0x41d840]
xor esi, dword [edi*8 + 0x41d844]
add ebx, 0x200
lea edi, [edx + 0x80]
xor eax, dword [ebx*8 + 0x41d840]
xor esi, dword [ebx*8 + 0x41d844]
movzx ebx, ch
shr ecx, 0x10
add ebx, 0x500
mov dword [esp], edi
movzx ecx, cl
xor eax, dword [ebx*8 + 0x41d840]
xor esi, dword [ebx*8 + 0x41d844]
add ecx, 0x600
xor esi, dword [ecx*8 + 0x41d844]
xor eax, dword [ecx*8 + 0x41d840]
mov edi, eax
mov ecx, dword [edx + 4]
add edx, 0x10
ror edi, 4
xor edi, dword [edx - 0x10]
xor ecx, eax
mov ebp, ecx
mov ebx, edi
and ebp, 0x3f
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x421940]
xor ebx, dword [ebp*4 + 0x421840]
mov ebp, edi
shr ebp, 8
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x421b40]
mov ebp, edi
shr edi, 0x18
shr ebp, 0x10
and edi, 0x3f
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x421d40]
xor ebx, dword [edi*4 + 0x421f40]
mov edi, ecx
shr edi, 8
and edi, 0x3f
xor ebx, dword [edi*4 + 0x421a40]
mov edi, ecx
shr ecx, 0x18
shr edi, 0x10
and ecx, 0x3f
and edi, 0x3f
xor ebx, dword [edi*4 + 0x421c40]
xor ebx, dword [ecx*4 + 0x421e40]
xor esi, ebx
mov ebx, esi
ror ebx, 4
xor ebx, dword [edx - 8]
mov edi, dword [edx - 4]
xor edi, esi
mov ecx, ebx
mov ebp, edi
and ecx, 0x3f
and ebp, 0x3f
mov ecx, dword [ecx*4 + 0x421940]
xor ecx, dword [ebp*4 + 0x421840]
xor eax, ecx
mov ecx, edi
shr ecx, 8
and ecx, 0x3f
xor eax, dword [ecx*4 + 0x421a40]
mov ecx, edi
shr edi, 0x18
shr ecx, 0x10
and edi, 0x3f
and ecx, 0x3f
xor eax, dword [ecx*4 + 0x421c40]
mov ecx, ebx
shr ecx, 8
xor eax, dword [edi*4 + 0x421e40]
and ecx, 0x3f
xor eax, dword [ecx*4 + 0x421b40]
mov ecx, ebx
shr ebx, 0x18
shr ecx, 0x10
and ebx, 0x3f
and ecx, 0x3f
xor eax, dword [ecx*4 + 0x421d40]
xor eax, dword [ebx*4 + 0x421f40]
cmp edx, dword [esp]
jne 0x40e695
mov ebx, esi
mov edx, esi
shr ebx, 0x18
movzx edx, dl
add ebx, 0x300
mov ecx, dword [edx*8 + 0x419840]
mov edx, dword [edx*8 + 0x419844]
xor ecx, dword [ebx*8 + 0x419840]
xor edx, dword [ebx*8 + 0x419844]
movzx ebx, al
add ebx, 0x400
xor ecx, dword [ebx*8 + 0x419840]
xor edx, dword [ebx*8 + 0x419844]
mov ebx, eax
shr ebx, 0x18
add ebx, 0x700
xor ecx, dword [ebx*8 + 0x419840]
xor edx, dword [ebx*8 + 0x419844]
mov ebx, esi
movzx ebx, bh
shr esi, 0x10
add ebx, 0x100
xor ecx, dword [ebx*8 + 0x419840]
xor edx, dword [ebx*8 + 0x419844]
mov ebx, esi
movzx esi, bl
movzx ebx, ah
shr eax, 0x10
add esi, 0x200
add ebx, 0x500
movzx eax, al
xor ecx, dword [esi*8 + 0x419840]
xor edx, dword [esi*8 + 0x419844]
add eax, 0x600
xor ecx, dword [ebx*8 + 0x419840]
xor edx, dword [ebx*8 + 0x419844]
xor ecx, dword [eax*8 + 0x419840]
xor edx, dword [eax*8 + 0x419844]
mov eax, dword [esp + 4]
mov dword [eax], ecx
mov dword [eax + 4], edx
add esp, 0xc
pop ebx
pop esi
pop edi
pop ebp
ret