Function at 0x40431a
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x10
mov eax, dword [esp + 0x18]
xor dword [esp + 0x14], 0x3e6c
push ebx
push ebp
lea ecx, [eax - 0x4ff]
mov ebp, eax
mov dword [esp + 0x20], ecx
xor ebp, 0x249b
lea ecx, [eax - 0xd0c]
mov dword [esp + 8], ebp
mov dword [esp + 0x14], ecx
lea ecx, [eax - 0x2df]
push esi
add eax, 0xfffffb35
mov dword [esp + 0x14], ecx
push edi
mov edi, dword [esp + 0x34]
xor ebp, ebp
mov dword [esp + 0x14], eax
mov eax, dword [0x507134]
mov ecx, dword [0x507140]
mov ebx, dword [eax + ebp]
add ebp, 4
mov eax, dword [0x4b570c]
imul ebx, dword [0x507100]
sub ecx, dword [eax + 0xe0]
mov eax, dword [edi + 0xa8]
sub ecx, 0x1583f7
imul ecx, dword [edi + 4]
mov edx, ebx
shr edx, 0x18
mov dword [edi + 4], ecx
mov ecx, dword [edi + 0x84]
mov byte [ecx + eax], dl
mov edx, ebx
inc dword [edi + 0x84]
mov eax, dword [edi + 0x28]
dec eax
shr edx, 0x10
add dword [edi + 0x40], eax
mov eax, 0x14cf97
sub eax, dword [edi + 0xe8]
sub eax, dword [edi + 0x10c]
mov ecx, dword [0x4b570c]
add dword [ecx + 0xe8], eax
mov ecx, dword [edi + 0x84]
mov eax, dword [edi + 0xa8]
mov byte [ecx + eax], dl
mov edx, ebx
inc dword [edi + 0x84]
mov esi, dword [0x4b570c]
mov eax, dword [0x5070b4]
dec eax
shr edx, 8
add eax, dword [esi + 0x108]
mov dword [0x5070b4], eax
mov ecx, dword [esi + 0x84]
mov eax, dword [edi + 0xa8]
mov byte [ecx + eax], dl
mov eax, dword [0x4b570c]
inc dword [eax + 0x84]
mov eax, dword [0x507124]
mov ecx, dword [edi + 0xa8]
mov byte [eax + ecx], bl
inc dword [0x507124]
mov eax, dword [edi + 0xfc]
sub eax, 0x13
xor dword [0x5070dc], eax
mov eax, dword [edi + 0x70]
sub eax, 0x188489
add dword [edi + 0xe8], eax
mov eax, dword [0x4b570c]
mov ecx, dword [edi + 0xe8]
add ecx, 0xffffffed
mov eax, dword [eax + 0xec]
add eax, ecx
mov dword [edi + 0xe8], eax
mov eax, dword [edi + 4]
sub dword [edi + 0xc0], eax
mov ecx, dword [0x4b570c]
mov eax, dword [edi + 0xe0]
add eax, 0x7a04
imul eax, dword [ecx + 0xe4]
mov dword [ecx + 0xe4], eax
cmp ebp, 0x3cab0
jl 0x404366
mov ebp, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
lea eax, [ebp + 0x2408]
cmp edx, eax
je 0x404530
mov eax, edx
xor eax, 0x5bc
cmp ebx, eax
jl 0x40450d
mov eax, dword [0x4b570c]
mov ecx, dword [esp + 0x24]
xor ecx, 0x4c
mov eax, dword [eax + 0xcc]
add eax, 0xa7b17
mov dword [edi + 0x60], eax
mov esi, dword [0x4b570c]
cmp dword [esi + 0x2c], 0x15bc
jae 0x4044f8
xor eax, 0xa7b78
mov dword [edi + 0x60], eax
jmp 0x404509
mov eax, dword [esi + 0x70]
sub eax, dword [0x507150]
add eax, dword [edi]
or dword [edi + 0xe8], eax
xor esi, esi
jmp 0x404536
xor esi, esi
cmp dword [edi + 0xbc], esi
je 0x404532
mov eax, dword [edi + 0xe0]
mov ecx, dword [0x4b570c]
add eax, edx
imul eax, eax, 0x1a6c
add dword [ecx + 0x70], eax
jmp 0x404532
xor esi, esi
mov ecx, dword [esp + 0x24]
lea eax, [ebp + 0x21bc]
cmp ecx, eax
je 0x404708
lea eax, [edx + 0x143]
cmp dword [esp + 0x18], eax
jl 0x404561
mov eax, dword [0x4b570c]
mov dword [eax + 0x94], 0x4a5000
jmp 0x40459e
mov eax, dword [edi + 0xcc]
sub eax, 0x2113
and eax, dword [edi + 0x88]
cmp dword [edi + 0xd4], eax
ja 0x40459e
mov edx, dword [edi]
jmp 0x404593
mov ecx, dword [0x4b570c]
mov eax, ebp
sub eax, dword [edi + 0xfc]
add dword [ecx + 0x10c], eax
inc edx
mov eax, dword [0x507164]
and eax, ebp
cmp edx, eax
jne 0x40457e
lea eax, [ebx - 0x530]
cmp dword [esp + 0x1c], eax
jge 0x404708
mov ecx, dword [0x4b570c]
mov eax, dword [0x5071ac]
add eax, 0xffee3f42
xor dword [ecx + 0x118], eax
mov eax, dword [0x507134]
mov ecx, dword [esi + eax]
add esi, 4
mov eax, dword [edi + 4]
sub dword [0x5070a4], eax
mov eax, dword [0x4b570c]
mov ebx, dword [edi + 0x60]
imul ebx, ecx
mov ecx, dword [eax + 0xa8]
mov eax, dword [eax + 0x84]
mov edx, ebx
shr edx, 0x18
mov byte [ecx + eax], dl
mov edx, ebx
mov eax, dword [0x4b570c]
shr edx, 0x10
inc dword [eax + 0x84]
mov eax, dword [edi + 0x2c]
sub eax, dword [edi + 0x58]
xor eax, 0xfff5c31e
sub dword [edi + 0xb0], eax
mov eax, dword [edi + 0x10c]
sub eax, 0x11c0bd
imul eax, dword [edi + 0x3c]
mov dword [edi + 0x3c], eax
mov eax, dword [0x4b570c]
mov ecx, dword [eax + 0xa8]
mov eax, dword [0x507124]
mov byte [eax + ecx], dl
mov edx, ebx
inc dword [0x507124]
mov eax, dword [edi + 0xb0]
sub eax, dword [0x5071b8]
add eax, 0xaced8c
shr edx, 8
xor dword [edi + 0x104], eax
mov eax, dword [0x50711c]
mov ecx, dword [0x4b570c]
add eax, 0xfffcf127
add eax, dword [edi + 0xe8]
mov dword [0x50711c], eax
mov eax, dword [ecx + 0x28]
sub eax, dword [edi + 0x10c]
add eax, 0x11c0be
imul eax, dword [ecx + 0x3c]
mov dword [ecx + 0x3c], eax
mov eax, dword [edi + 0x70]
sub eax, 0x188488
imul eax, dword [edi + 0xe4]
mov dword [edi + 0xe4], eax
sub eax, dword [0x5071b8]
add eax, 0xacede0
mov dword [edi + 0xe4], eax
mov eax, dword [0x4b570c]
mov ecx, dword [eax + 0xa8]
mov eax, dword [edi + 0x84]
mov byte [ecx + eax], dl
inc dword [edi + 0x84]
mov ecx, dword [edi + 0xa8]
mov eax, dword [0x507124]
mov byte [eax + ecx], bl
mov ecx, dword [0x5070bc]
xor ecx, dword [0x507184]
inc dword [0x507124]
imul ecx, dword [edi + 0x118]
mov dword [edi + 0x118], ecx
cmp esi, 0x10470
jl 0x4045ae
pop edi
xor ebp, 0x2454
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x10
ret