Function at 0x4e9e50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x25c
mov eax, dword [0x58bb30]
xor eax, esp
mov dword [esp + 0x258], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x10]
push ebx
push esi
mov esi, dword [ebp + 0x14]
mov dword [esp + 0x2c], eax
mov eax, esi
push edi
mov edi, dword [ebp + 8]
cmp esi, 0x40
jb 0x4e9e89
mov eax, 0x40
push eax
push ecx
lea eax, [esp + 0x220]
push eax
call fcn.00531230
push 0xa8
lea eax, [esp + 0x158]
push 0
push eax
call fcn.00531c60
add esp, 0x18
lea eax, [esp + 0x148]
push dword [ebp + 0xc]
push edi
push eax
call fcn.004e9db0
mov ecx, dword [ebp + 0x1c]
mov eax, 0xcccccccd
dec ecx
mul ecx
mov eax, edx
shr eax, 4
add eax, 1
mov dword [esp + 0x38], eax
je 0x4ea109
lea eax, [esp + 0x218]
mov dword [esp + 0x18], 0
add eax, esi
lea edx, [esi + 4]
mov dword [esp + 0x1c], eax
mov ebx, 1
lea eax, [esp + 0x219]
mov dword [esp + 0x3c], edx
add eax, esi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x20], eax
lea eax, [esp + 0x21a]
add eax, esi
mov dword [esp + 0x24], eax
lea eax, [esp + 0x21b]
add eax, esi
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x20]
dec eax
mov dword [esp + 0x2c], eax
jmp 0x4e9f40
mov ecx, 0x2a
mov dword [esp + 0x34], ebx
lea esi, [esp + 0x148]
mov eax, ebx
lea edi, [esp + 0xa0]
shr eax, 0x18
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x1c]
mov byte [ecx], al
mov eax, ebx
mov ecx, dword [esp + 0x20]
shr eax, 0x10
mov byte [ecx], al
mov eax, ebx
mov ecx, dword [esp + 0x24]
shr eax, 8
mov byte [ecx], al
mov eax, dword [esp + 0x28]
mov byte [eax], bl
test edx, edx
je 0x4e9f9a
push edx
lea eax, [esp + 0x21c]
push eax
lea eax, [esp + 0xa8]
push eax
call fcn.004bbd50
push 0
push 0
push 0x14
lea eax, [esp + 0x210]
push eax
lea eax, [esp + 0xb0]
push eax
call fcn.004e9c70
mov eax, dword [esp + 0x204]
mov dword [esp + 0x1f0], eax
mov eax, dword [esp + 0x208]
mov dword [esp + 0x1f4], eax
mov eax, dword [esp + 0x20c]
mov dword [esp + 0x1f8], eax
mov eax, dword [esp + 0x210]
mov dword [esp + 0x1fc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0x2c]
mov byte [esp + 0x13], 0
test eax, eax
je 0x4ea0c0
mov ebx, eax
mov edi, edi
push 0x14
lea eax, [esp + 0x208]
mov ecx, 0x2a
push eax
lea eax, [esp + 0xa8]
lea esi, [esp + 0x150]
lea edi, [esp + 0xa8]
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.004bbd50
lea eax, [esp + 0x13]
push eax
lea eax, [esp + 0x44]
push eax
push 0x14
lea eax, [esp + 0x210]
push eax
lea eax, [esp + 0xb0]
push eax
call fcn.004e9c70
xor eax, eax
nop
movzx ecx, byte [esp + eax + 0x204]
xor byte [esp + eax + 0x1f0], cl
movzx ecx, byte [esp + eax + 0x205]
xor byte [esp + eax + 0x1f1], cl
movzx ecx, byte [esp + eax + 0x206]
xor byte [esp + eax + 0x1f2], cl
movzx ecx, byte [esp + eax + 0x207]
xor byte [esp + eax + 0x1f3], cl
movzx ecx, byte [esp + eax + 0x208]
xor byte [esp + eax + 0x1f4], cl
add eax, 5
cmp eax, 0x14
jb 0x4ea060
sub ebx, 1
jne 0x4ea010
mov ebx, dword [esp + 0x14]
mov eax, dword [ebp + 0x1c]
mov esi, dword [esp + 0x18]
sub eax, esi
cmp eax, 0x14
jbe 0x4ea0d3
mov eax, 0x14
push eax
lea eax, [esp + 0x1f4]
push eax
mov eax, dword [esp + 0x38]
add eax, esi
push eax
call fcn.00531230
mov eax, dword [esp + 0x40]
inc ebx
mov edx, dword [esp + 0x48]
add esi, 0x14
add esp, 0xc
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], esi
cmp eax, dword [esp + 0x38]
jb 0x4e9f40
push 0x44
lea eax, [esp + 0x21c]
push eax
call fcn.004ba540
push 0x14
lea eax, [esp + 0x1f4]
push eax
call fcn.004ba540
push 0x14
lea eax, [esp + 0x208]
push eax
call fcn.004ba540
mov ecx, dword [esp + 0x264]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0052f708
mov esp, ebp
pop ebp
ret 0x1c