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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7c
mov eax, dword [0x5cb160]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
xor esi, esi
mov dword [ebp - 0x7c], esi
cmp dword [0x5d5760], esi
jle 0x4061ab
push ebx
mov dword [ebp - 0xc], 0x10204080
mov dword [ebp - 8], 0x1020408
mov dword [0x5d499c], 0x5d4f10
mov dword [0x5d4998], 0x5d4f30
push edi
jmp 0x405f00
movzx ecx, byte [esi + 0x5d4a81]
movzx eax, byte [esi + 0x5d4a80]
movzx edx, byte [esi + 0x5d4a82]
mov byte [0x5d4f51], cl
movzx ecx, byte [esi + 0x5d4a84]
mov byte [0x5d4f50], al
movzx eax, byte [esi + 0x5d4a83]
mov byte [0x5d4f54], cl
movzx ecx, byte [esi + 0x5d4a87]
mov byte [0x5d4f52], dl
movzx edx, byte [esi + 0x5d4a85]
mov byte [0x5d4f53], al
movzx eax, byte [esi + 0x5d4a86]
mov byte [0x5d4f57], cl
mov byte [0x5d4f55], dl
mov byte [0x5d4f56], al
xor edi, edi
mov ecx, 0x5d4f10
lea esp, [esp]
mov dl, byte [edi + 0x5d4f50]
xor eax, eax
jmp 0x405f80
test byte [ebp + eax - 0xc], dl
setne bl
mov byte [ecx + eax], bl
inc eax
cmp eax, 8
jl 0x405f80
add ecx, 8
inc edi
cmp ecx, 0x5d4f50
jl 0x405f70
cmp dword [ebp - 0x7c], 0
jne 0x405fec
mov dword [ebp - 0x14], 0x10204080
mov dword [ebp - 0x10], 0x1020408
xor edi, edi
mov ecx, 0x5d4fa0
jmp 0x405fc0
mov dl, byte [edi + 0x5d49a8]
xor eax, eax
jmp 0x405fd0
test byte [ebp + eax - 0x14], dl
setne bl
mov byte [ecx + eax], bl
inc eax
cmp eax, 8
jl 0x405fd0
add ecx, 8
inc edi
cmp ecx, 0x5d4fe0
jl 0x405fc0
xor eax, eax
mov edi, edi
movzx edx, byte [eax + 0x5d4fa0]
movzx ecx, byte [eax + 0x5d4fa1]
xor byte [eax + 0x5d4f10], dl
xor byte [eax + 0x5d4f11], cl
movzx edx, byte [eax + 0x5d4fa2]
movzx ecx, byte [eax + 0x5d4fa3]
xor byte [eax + 0x5d4f12], dl
xor byte [eax + 0x5d4f13], cl
add eax, 4
cmp eax, 0x40
jl 0x405ff0
xor eax, eax
mov edi, edi
movzx edx, byte [eax + 0x5cc9b8]
movzx ecx, byte [edx + 0x5d4f0f]
movzx edx, byte [eax + 0x5cc9b9]
mov byte [ebp + eax - 0x78], cl
movzx ecx, byte [edx + 0x5d4f0f]
movzx edx, byte [eax + 0x5cc9ba]
mov byte [ebp + eax - 0x77], cl
movzx ecx, byte [edx + 0x5d4f0f]
movzx edx, byte [eax + 0x5cc9bb]
mov byte [ebp + eax - 0x76], cl
movzx ecx, byte [edx + 0x5d4f0f]
mov byte [ebp + eax - 0x75], cl
add eax, 4
cmp eax, 0x40
jl 0x406030
push 0x40
lea edx, [ebp - 0x78]
push edx
push 0x5d4f10
call fcn.0053ff80
add esp, 0xc
call fcn.004062c0
xor eax, eax
lea ebx, [ebx]
movzx ecx, byte [eax + 0x5cc9f8]
movzx edx, byte [ecx + 0x5d4f0f]
movzx ecx, byte [eax + 0x5cc9f9]
mov byte [ebp + eax - 0x78], dl
movzx edx, byte [ecx + 0x5d4f0f]
movzx ecx, byte [eax + 0x5cc9fa]
mov byte [ebp + eax - 0x77], dl
movzx edx, byte [ecx + 0x5d4f0f]
movzx ecx, byte [eax + 0x5cc9fb]
mov byte [ebp + eax - 0x76], dl
movzx edx, byte [ecx + 0x5d4f0f]
mov byte [ebp + eax - 0x75], dl
add eax, 4
cmp eax, 0x40
jl 0x4060a0
push 0x40
lea eax, [ebp - 0x78]
push eax
push 0x5d4f10
call fcn.0053ff80
add esp, 0xc
xor eax, eax
jmp 0x406110
mov cl, byte [eax + 0x5d4f10]
mov byte [eax + 0x5d4fa0], cl
inc eax
cmp eax, 0x40
jl 0x406110
call fcn.00406860
movzx eax, byte [0x5d5759]
movzx edx, byte [0x5d5758]
movzx ecx, byte [0x5d575a]
mov byte [esi + 0x5d4a19], al
movzx eax, byte [0x5d575c]
mov byte [esi + 0x5d4a18], dl
movzx edx, byte [0x5d575b]
mov byte [esi + 0x5d4a1c], al
movzx eax, byte [0x5d575f]
mov byte [esi + 0x5d4a1a], cl
movzx ecx, byte [0x5d575d]
mov byte [esi + 0x5d4a1b], dl
movzx edx, byte [0x5d575e]
mov byte [esi + 0x5d4a1f], al
mov eax, dword [ebp - 0x7c]
inc eax
mov byte [esi + 0x5d4a1d], cl
mov byte [esi + 0x5d4a1e], dl
lea esi, [eax*8]
mov dword [ebp - 0x7c], eax
cmp esi, dword [0x5d5760]
jl 0x405f00
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop esi
call fcn.0053866d
mov esp, ebp
pop ebp
ret