Function at 0x4057c6
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 8]
push ebx
push esi
push edi
mov edi, eax
lea esi, [eax - 0x1b7]
mov eax, dword [esp + 0x18]
lea ebx, [ecx - 0x58d]
xor eax, 0x2e0
xor edi, 0x1b8e
add eax, 0x1e3
mov dword [esp + 0x14], edi
add ecx, 0xfffffa88
cmp dword [esp + 0x10], eax
jg 0x405ab8
mov esi, dword [esp + 0x1c]
xor dword [esi + 0x80], 0x83951
cmp dword [esi + 0x78], 0xffd2
je 0x40582e
mov eax, dword [0x4bca38]
add eax, 0xbde764d8
xor dword [0x4bca70], eax
mov eax, dword [0x4a67bc]
push ebp
xor ebp, ebp
mov edi, ebp
mov dword [eax + 0xb4], 0x4a7768
mov eax, dword [0x4bc9fc]
sub eax, dword [esi + 0xdc]
xor eax, 0xfb6cf
sub dword [0x4bcafc], eax
mov eax, dword [esi + 0xb4]
mov ecx, dword [edi + eax]
add edi, 4
mov eax, dword [esi + 0xe8]
xor eax, dword [0x4bca6c]
sub eax, 0x13e42d
add dword [esi + 0x120], eax
mov ebx, dword [0x4bca70]
mov eax, dword [esi + 0x90]
imul ebx, ecx
dec eax
mov ecx, dword [0x4a67bc]
add dword [ecx + 0x110], eax
mov edx, ebx
mov eax, dword [0x4a67bc]
shr edx, 0x10
mov ecx, dword [eax + 0x84]
mov eax, dword [0x4bcaa8]
mov byte [eax + ecx], dl
mov edx, ebx
mov eax, dword [0x4a67bc]
shr edx, 8
inc dword [eax + 0x84]
mov eax, dword [0x4a67bc]
mov ecx, dword [eax + 0xb8]
mov eax, dword [esi + 0x84]
mov byte [ecx + eax], dl
mov edx, 0xb2d12
inc dword [esi + 0x84]
mov ecx, dword [0x4a67bc]
mov eax, dword [esi + 0xc4]
add dword [ecx + 0xe8], eax
mov eax, dword [0x4a67bc]
mov eax, dword [eax + 0x108]
add eax, dword [0x4bca10]
xor eax, 0x8e8bf
or dword [esi + 0x1c], eax
mov eax, dword [esi + 0xe8]
sub eax, edx
or dword [esi + 0x68], eax
mov eax, dword [esi + 0x10c]
add eax, dword [0x4bca10]
sub dword [0x4bca9c], eax
mov ecx, dword [esi + 0x84]
mov eax, dword [0x4bcaa8]
mov byte [eax + ecx], bl
inc dword [esi + 0x84]
mov ecx, dword [0x4a67bc]
mov eax, dword [ecx + 0x44]
sub eax, 0x13ffca
xor dword [ecx + 0x110], eax
mov eax, 0xffe85340
mov ecx, dword [esi + 0x68]
xor ecx, dword [0x4bca6c]
sub eax, ecx
add dword [0x4bcad8], eax
mov eax, dword [0x4bca80]
sub eax, dword [esi + 0xe8]
add eax, edx
imul eax, dword [esi + 0x7c]
mov dword [esi + 0x7c], eax
cmp edi, 0x146d0
jl 0x405842
mov ecx, dword [0x4a67bc]
mov edi, dword [esp + 0x18]
mov eax, dword [ecx + 0x90]
cmp eax, dword [esi + 0x20]
jbe 0x4059b2
mov eax, dword [0x4bca80]
add eax, 0x38e38e26
add eax, dword [esi + 0x1c]
mov dword [esi + 0x80], eax
mov ecx, dword [0x4a67bc]
cmp dword [ecx + 0x48], 0x13833
jae 0x4059c7
mov dword [esi + 0xb4], 0x4bc180
jmp 0x4059d3
mov eax, dword [esi + 0xc]
sub eax, dword [ecx + 0x78]
sub eax, dword [ecx + 0x20]
add dword [ecx + 0x5c], eax
mov ecx, dword [0x4a67bc]
mov eax, dword [0x4bca24]
xor eax, 1
add dword [ecx + 0x10c], eax
mov eax, dword [0x4a67bc]
mov eax, dword [eax + 0xb4]
mov ecx, dword [eax + ebp]
add ebp, 4
mov eax, dword [esi + 0xe0]
sub dword [esi + 0xa0], eax
mov eax, dword [0x4a67bc]
mov ebx, dword [eax + 0x80]
mov eax, dword [esi + 0xb8]
imul ebx, ecx
mov ecx, dword [esi + 0x84]
mov edx, ebx
shr edx, 8
mov byte [ecx + eax], dl
inc dword [esi + 0x84]
mov ecx, dword [esi + 0x114]
mov eax, dword [esi + 0x7c]
sub eax, ecx
sub eax, 0x18c922
add dword [esi + 0x78], eax
mov eax, dword [esi + 0x1c]
sub eax, 0x11
imul eax, ecx
mov dword [esi + 0x114], eax
mov eax, dword [0x4bc9f8]
add eax, dword [0x4bca58]
xor eax, 0xfff09a93
or dword [esi + 0x48], eax
mov eax, dword [0x4a67bc]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0xc]
xor eax, 0xfff0490e
add eax, dword [esi + 0x108]
xor eax, dword [esi + 0x34]
xor eax, 1
mov dword [esi + 0x108], eax
mov ecx, dword [esi + 0x84]
mov eax, dword [0x4bcaa8]
mov byte [eax + ecx], bl
inc dword [esi + 0x84]
mov ecx, dword [0x4a67bc]
mov eax, dword [esi + 0x10c]
add dword [ecx + 0xdc], eax
cmp ebp, 0x840
jl 0x4059d3
pop ebp
jmp 0x405b28
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 0x10c]
imul eax, dword [esp + 0x10]
and eax, dword [0x4bca24]
cmp dword [0x4bca5c], eax
je 0x405b28
mov eax, dword [0x4bcb08]
imul eax, ecx
xor eax, dword [edx + 0xc]
cmp dword [0x4bcae4], eax
ja 0x405b19
and esi, edi
or dword [edx + 0xfc], esi
mov eax, dword [0x4a67bc]
sub ecx, dword [eax + 0xc]
or ecx, 0x1b30
add dword [eax + 0x114], ecx
mov eax, dword [0x4a67bc]
mov eax, dword [eax + 0x88]
xor eax, ebx
mov dword [edx + 0x118], eax
jmp 0x405b28
mov ecx, dword [0x4a67bc]
mov eax, edi
and eax, dword [esp + 0x10]
add dword [ecx + 0x7c], eax
lea eax, [edi + 0x1872]
pop edi
pop esi
pop ebx
ret