Function at 0x405b32
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 4]
mov edx, dword [esp + 8]
add ecx, 0xfffffa2b
push ebx
mov ebx, dword [esp + 0x14]
xor edx, 0xd87
push ebp
mov ebp, dword [esp + 0x1c]
add ebx, 0xffffe716
push edi
mov edi, dword [esp + 0x28]
xor ebp, 0x177d
add edi, 0x539
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], edi
mov dword [esp + 0x10], ecx
lea eax, [edi - 0x654]
cmp ecx, eax
je 0x405db4
lea eax, [ebp + 0x1524]
push esi
mov esi, dword [esp + 0x28]
cmp ecx, eax
je 0x405c1c
add edx, 0x2e7
mov eax, ebx
mov dword [esp + 0x18], edx
xor eax, 0x15a3
mov edx, dword [esp + 0x1c]
xor edi, 0xedb
push eax
lea eax, [edx + 0x9c]
push eax
lea eax, [ecx + 0x1da]
push eax
push edx
push edi
push 0x4bc9f0
call fcn.00404495
xor ebp, 0x1b30
mov edi, eax
xor ebx, 0x1762
mov dword [esp + 0x44], edi
push ebx
mov ecx, ebp
mov eax, ebp
xor ecx, 0x88
xor eax, 0xe88
push ecx
mov ecx, dword [esp + 0x38]
push esi
add ecx, 0x97
push ecx
push eax
lea eax, [ebp + 0xb]
push eax
mov eax, dword [esp + 0x44]
add eax, 0x9c
push eax
call fcn.0041377b
add esp, 0x34
mov dword [0x4bcaa4], 0x46a000
mov ebx, eax
mov ebp, dword [esp + 0x1c]
mov ecx, ebx
xor ecx, 0xb69
add ebp, 0xfffffe5f
cmp ebp, ecx
je 0x405d8d
xor edi, edi
mov eax, dword [0x4a67bc]
push 0x37
mov eax, dword [eax + 0xb4]
mov ecx, dword [edi + eax]
add edi, 4
mov eax, dword [esi + 0x70]
imul eax, dword [esi + 0x90]
movzx edx, cl
mov ecx, dword [esi + 0x84]
mov dword [esi + 0x70], eax
mov eax, dword [esi + 0x108]
sub eax, dword [0x4bcad8]
xor eax, 0xfffdbbad
add dword [esi + 0x7c], eax
mov eax, dword [0x4a67bc]
mov eax, dword [eax + 0x70]
dec eax
add dword [esi + 0x44], eax
mov eax, dword [esi + 0x124]
sub eax, 0x1388de
imul eax, dword [esi + 0x120]
mov dword [esi + 0x120], eax
movzx eax, byte [esi + 0x80]
imul edx, eax
mov eax, dword [esi + 0xb8]
mov byte [ecx + eax], dl
inc dword [esi + 0x84]
mov ecx, dword [esi + 0xdc]
xor ecx, dword [0x4bcafc]
mov edx, dword [0x4a67bc]
pop eax
sub eax, ecx
push 0x1d
add dword [edx + 0x90], eax
mov ecx, dword [esi + 0x34]
mov eax, dword [esi + 0x48]
dec ecx
add eax, ecx
imul eax, dword [esi + 0xdc]
mov dword [esi + 0xdc], eax
mov eax, dword [0x4a67bc]
mov eax, dword [eax + 0x78]
add eax, dword [esi + 0x1c]
xor eax, 0x13
imul eax, dword [esi + 0x118]
mov dword [esi + 0x118], eax
mov eax, dword [esi + 0x114]
xor eax, 0x1d
sub dword [0x4bcb08], eax
pop eax
sub eax, dword [esi + 0x114]
sub eax, dword [esi + 0x20]
add dword [esi + 0xc4], eax
mov edx, dword [0x4a67bc]
mov eax, dword [0x4bcad0]
add eax, 0xb2d11
mov ecx, dword [edx + 0x70]
sub ecx, dword [esi + 0xe8]
add eax, ecx
mov dword [0x4bcad0], eax
mov eax, dword [esi + 0xdc]
sub eax, dword [edx + 8]
sub eax, 0x23
add dword [edx + 0x20], eax
cmp edi, 0x3b4c0
jl 0x405c38
mov edi, dword [esp + 0x2c]
mov eax, ebx
xor eax, 0x928
xor edi, 0x18
push esi
push eax
lea eax, [ebp - 0x41f]
push eax
push edi
lea eax, [ebx - 0x6f0]
push eax
mov eax, dword [esp + 0x2c]
xor eax, 0x216
push eax
call fcn.0040654d
add esp, 0x18
jmp 0x405db3
mov eax, dword [esi + 0xfc]
or eax, dword [0x4bcb08]
or eax, edi
imul eax, dword [esi + 0x78]
mov dword [esi + 0x78], eax
mov eax, dword [esi + 0x28]
imul eax, ebx
or eax, 0x1b8e
add dword [esi + 0xc8], eax
pop esi
mov eax, dword [esp + 0x14]
pop edi
pop ebp
add eax, 0x2ee
pop ebx
ret