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

Disassembly:
push ebx
push ebp
push esi
push edi
mov edx, dword [esp + 0x14]
movzx eax, byte [edx]
movzx ecx, byte [edx + 1]
inc edx
inc edx
inc edx
inc edx
inc edx
shl eax, 8
or eax, ecx
movzx ecx, byte [edx - 3]
inc edx
shl eax, 8
or eax, ecx
movzx ecx, byte [edx - 3]
shl eax, 8
or eax, ecx
movzx ecx, byte [edx - 2]
shl ecx, 8
movzx esi, byte [edx - 1]
or ecx, esi
movzx esi, byte [edx]
movzx edx, byte [edx + 1]
shl ecx, 8
or ecx, esi
shl ecx, 8
or ecx, edx
mov edx, eax
shr edx, 4
xor edx, ecx
and edx, 0xf0f0f0f
xor ecx, edx
shl edx, 4
xor eax, edx
mov edx, eax
shr edx, 0x10
xor edx, ecx
and edx, 0xffff
xor ecx, edx
shl edx, 0x10
xor eax, edx
mov edx, ecx
shr edx, 2
xor edx, eax
and edx, 0x33333333
xor eax, edx
add edx, edx
add edx, edx
xor ecx, edx
mov edx, ecx
shr edx, 8
xor edx, eax
and edx, 0xff00ff
xor eax, edx
shl edx, 8
xor ecx, edx
mov edx, eax
shr edx, 1
xor edx, ecx
and edx, 0x55555555
xor ecx, edx
add edx, edx
xor eax, edx
cmp dword [esp + 0x20], 0
mov edi, dword [esp + 0x1c]
je 0x407968
add edi, 8
mov dword [esp + 0x1c], 8
mov edx, ecx
ror edx, 3
xor edx, dword [edi - 8]
mov esi, ecx
rol esi, 1
xor esi, dword [edi - 4]
add edi, 0x10
mov ebx, esi
shr ebx, 0x18
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x420a30]
mov ebp, esi
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420c30]
mov ebp, esi
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420e30]
mov ebp, edx
shr ebp, 0x18
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420930]
mov ebp, edx
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420b30]
mov ebp, edx
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420d30]
and esi, 0x3f
or ebx, dword [esi*4 + 0x421030]
and edx, 0x3f
or ebx, dword [edx*4 + 0x420f30]
xor eax, ebx
mov edx, eax
ror edx, 3
xor edx, dword [edi - 0x10]
mov esi, eax
rol esi, 1
xor esi, dword [edi - 0xc]
mov ebx, esi
shr ebx, 0x18
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x420a30]
mov ebp, esi
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420c30]
mov ebp, esi
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420e30]
mov ebp, edx
shr ebp, 0x18
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420930]
mov ebp, edx
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420b30]
mov ebp, edx
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420d30]
and esi, 0x3f
or ebx, dword [esi*4 + 0x421030]
and edx, 0x3f
or ebx, dword [edx*4 + 0x420f30]
xor ecx, ebx
sub dword [esp + 0x1c], 1
jne 0x407857
jmp 0x407a7f
add edi, 0x70
mov dword [esp + 0x1c], 8
mov edx, ecx
ror edx, 3
xor edx, dword [edi + 8]
mov esi, ecx
rol esi, 1
xor esi, dword [edi + 0xc]
sub edi, 0x10
mov ebx, esi
shr ebx, 0x18
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x420a30]
mov ebp, esi
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420c30]
mov ebp, esi
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420e30]
mov ebp, edx
shr ebp, 0x18
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420930]
mov ebp, edx
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420b30]
mov ebp, edx
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420d30]
and esi, 0x3f
or ebx, dword [esi*4 + 0x421030]
and edx, 0x3f
or ebx, dword [edx*4 + 0x420f30]
xor eax, ebx
mov edx, eax
ror edx, 3
xor edx, dword [edi + 0x10]
mov esi, eax
rol esi, 1
xor esi, dword [edi + 0x14]
mov ebx, esi
shr ebx, 0x18
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x420a30]
mov ebp, esi
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420c30]
mov ebp, esi
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420e30]
mov ebp, edx
shr ebp, 0x18
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420930]
mov ebp, edx
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420b30]
mov ebp, edx
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x420d30]
and esi, 0x3f
or ebx, dword [esi*4 + 0x421030]
and edx, 0x3f
or ebx, dword [edx*4 + 0x420f30]
xor ecx, ebx
sub dword [esp + 0x1c], 1
jne 0x407973
mov edx, ecx
shr edx, 1
xor edx, eax
and edx, 0x55555555
xor eax, edx
add edx, edx
xor ecx, edx
mov edx, eax
shr edx, 8
xor edx, ecx
and edx, 0xff00ff
xor ecx, edx
shl edx, 8
xor eax, edx
mov edx, eax
shr edx, 2
xor edx, ecx
and edx, 0x33333333
xor ecx, edx
add edx, edx
add edx, edx
xor eax, edx
mov edx, ecx
shr edx, 0x10
xor edx, eax
and edx, 0xffff
xor eax, edx
mov esi, dword [esp + 0x18]
shl edx, 0x10
xor ecx, edx
mov edx, ecx
shr edx, 4
xor edx, eax
and edx, 0xf0f0f0f
xor eax, edx
shl edx, 4
xor ecx, edx
mov edx, ecx
shr edx, 0x18
mov byte [esi], dl
inc esi
mov edx, ecx
shr edx, 0x10
mov byte [esi], dl
mov edx, ecx
inc esi
shr edx, 8
mov byte [esi], dl
mov byte [esi + 1], cl
inc esi
inc esi
mov ecx, eax
shr ecx, 0x18
mov byte [esi], cl
inc esi
mov edx, eax
shr edx, 0x10
mov byte [esi], dl
inc esi
mov ecx, eax
shr ecx, 8
pop edi
mov byte [esi], cl
mov byte [esi + 1], al
pop esi
pop ebp
pop ebx
ret