Function at 0x4d9610
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xac
mov eax, dword [0x5894dc]
xor eax, esp
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xbc]
mov edx, dword [esp + 0xc4]
mov ecx, dword [esp + 0xb4]
push ebx
push esi
mov esi, dword [esp + 0xb8]
push edi
mov edi, dword [esp + 0xc4]
mov dword [esp + 0xc], eax
mov eax, edi
mov dword [esp + 0x10], esi
mov dword [esp + 0x1c], edx
lea ebx, [eax + 1]
jmp 0x4d9660
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4d9660
sub eax, ebx
mov ebx, dword [esp + 0xcc]
lea eax, [eax + ebx + 0x14]
cmp eax, 0x80
ja 0x4d984f
lea eax, [ecx + 1]
cdq
sub eax, edx
push ebp
mov ebp, eax
sar ebp, 1
sub ecx, ebp
add ecx, esi
mov esi, edi
mov dword [esp + 0x1c], ecx
lea eax, [esi + 1]
lea esp, [esp]
mov cl, byte [esi]
add esi, 1
test cl, cl
jne 0x4d96a0
sub esi, eax
push esi
lea ecx, [esp + 0x50]
push edi
push ecx
call fcn.004ed460
mov edx, dword [esp + 0x1c]
push ebx
push edx
lea eax, [esp + esi + 0x60]
push eax
call fcn.004ed460
mov eax, dword [esp + 0x2c]
lea ecx, [esp + 0x54]
push ecx
add esi, ebx
push esi
lea edx, [esp + 0x6c]
push edx
push ebp
push eax
call fcn.004ab710
mov edi, dword [esp + 0x104]
add esp, 0x2c
test edi, edi
jle 0x4d977a
mov ebx, dword [esp + 0x20]
mov eax, 0x10
sub eax, ebx
mov dword [esp + 0x18], eax
lea eax, [edi - 1]
shr eax, 4
add eax, 1
mov dword [esp + 0x10], eax
lea ecx, [ecx]
lea ecx, [esp + 0x24]
push ecx
lea eax, [esi + 0x10]
push eax
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x44]
push edx
push ebp
push eax
call fcn.004ab710
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x50]
push ecx
push 0x10
mov edx, ecx
push edx
push ebp
push eax
call fcn.004ab710
mov ecx, dword [esp + 0x40]
add ecx, ebx
add esp, 0x28
cmp ecx, edi
jle 0x4d981f
mov eax, edi
and eax, reloc.WS2_32.dll_ntohs
jns 0x4d975d
dec eax
or eax, 0xfffffff0
inc eax
test eax, eax
jle 0x4d9770
push eax
lea edx, [esp + 0x28]
push edx
push ebx
call fcn.004ed460
add esp, 0xc
add ebx, 0x10
sub dword [esp + 0x10], 1
jne 0x4d9710
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x38]
push eax
push esi
lea ecx, [esp + 0x54]
push ecx
push ebp
push edx
call fcn.004ab7b0
add esp, 0x14
test edi, edi
jle 0x4d984e
add esi, 0x14
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x20]
mov eax, 0x14
sub eax, esi
mov dword [esp + 0x10], eax
lea ecx, [edi - 1]
mov eax, 0xcccccccd
mul ecx
mov ebx, edx
shr ebx, 4
add ebx, 1
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x24]
push edx
mov edx, dword [esp + 0x20]
push eax
lea ecx, [esp + 0x40]
push ecx
push ebp
push edx
call fcn.004ab7b0
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x4c]
push eax
push 0x14
mov ecx, eax
push ecx
push ebp
push edx
call fcn.004ab7b0
mov eax, dword [esp + 0x38]
add eax, esi
add esp, 0x28
cmp eax, edi
jle 0x4d9829
mov eax, 0x66666667
imul edi
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
add ecx, ecx
add ecx, ecx
mov edx, ecx
mov ecx, edi
sub ecx, edx
jmp 0x4d982e
mov eax, 0x10
jmp 0x4d9761
mov ecx, 0x14
xor eax, eax
test ecx, ecx
jle 0x4d9842
mov dl, byte [esp + eax + 0x24]
xor byte [esi + eax], dl
add eax, 1
cmp eax, ecx
jl 0x4d9834
add esi, 0x14
sub ebx, 1
jne 0x4d97c3
pop ebp
mov ecx, dword [esp + 0xb4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004ec47e
add esp, 0xac
ret