Function at 0x5ea330
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [ecx + 0x44]
sub esp, 0xa8
cmp eax, 3
push ebx
push ebp
push esi
push edi
jne 0x5ea38c
mov eax, dword [esp + 0xd4]
mov edx, dword [esp + 0xd0]
push eax
mov eax, dword [esp + 0xd0]
push edx
mov edx, dword [esp + 0xd0]
push eax
mov eax, dword [esp + 0xd0]
push edx
mov edx, dword [esp + 0xd0]
push eax
mov eax, dword [esp + 0xd0]
push edx
push eax
call fcn.005ea160
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa8
ret 0x1c
mov esi, dword [esp + 0xc4]
push esi
call fcn.004f1bb0
mov ecx, dword [esp + 0xd0]
mov ebp, eax
add esp, 4
lea eax, [ecx + ebp]
mov dword [esp + 0x18], eax
add eax, 0x14
cmp eax, 0x80
ja 0x5ea5a5
mov ecx, dword [esp + 0xc0]
lea edi, [esp + 0x4c]
lea eax, [ecx + 1]
cdq
sub eax, edx
mov edx, dword [esp + 0xbc]
mov ebx, eax
mov eax, edx
sar ebx, 1
sub eax, ebx
add eax, ecx
mov ecx, ebp
mov dword [esp + 0x20], eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0xcc]
mov esi, dword [esp + 0xc8]
mov eax, ecx
lea edi, [esp + ebp + 0x4c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x18]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x3c]
push ecx
lea ecx, [esp + 0x50]
push eax
push ecx
push ebx
push edx
call fcn.005dd0c0
mov ebp, dword [esp + 0xe8]
add esp, 0x14
test ebp, ebp
jle 0x5ea4d7
mov edi, dword [esp + 0xd0]
mov eax, 0x10
sub eax, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x1c], eax
lea eax, [ebp + 0xf]
shr eax, 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0xbc]
lea edx, [esp + 0x24]
add eax, 0x10
push edx
lea ecx, [esp + 0x40]
push eax
push ecx
push ebx
push esi
call fcn.005dd0c0
lea edx, [esp + 0x50]
lea eax, [esp + 0x50]
push edx
push 0x10
push eax
push ebx
push esi
call fcn.005dd0c0
mov ecx, dword [esp + 0x44]
add esp, 0x28
add ecx, edi
cmp ecx, ebp
jle 0x5ea528
mov ecx, ebp
and ecx, reloc.WS2_32.dll_ntohs
jns 0x5ea4ab
dec ecx
or ecx, 0xfffffff0
inc ecx
test ecx, ecx
jle 0x5ea4c5
mov edx, ecx
lea esi, [esp + 0x24]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
add edi, 0x10
dec eax
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
jne 0x5ea458
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x38]
lea ecx, [esp + 0x4c]
push eax
push esi
push ecx
push ebx
push edx
call fcn.005dd0f0
add esp, 0x14
test ebp, ebp
jle 0x5ea5a5
lea ecx, [ebp + 0x13]
mov eax, 0xcccccccd
mul ecx
add esi, 0x14
mov edi, 0x14
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0xd0]
sub edi, esi
shr edx, 4
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], edx
jmp 0x5ea533
mov ecx, 0x10
jmp 0x5ea4af
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x24]
push edx
mov edx, dword [esp + 0x24]
lea ecx, [esp + 0x3c]
push eax
push ecx
push ebx
push edx
call fcn.005dd0f0
mov edx, dword [esp + 0x34]
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x50]
push 0x14
push ecx
push ebx
push edx
call fcn.005dd0f0
add edi, esi
add esp, 0x28
cmp edi, ebp
jle 0x5ea57b
mov eax, ebp
mov ecx, 0x14
cdq
idiv ecx
mov edi, edx
jmp 0x5ea580
mov edi, 0x14
xor eax, eax
test edi, edi
jle 0x5ea597
mov dl, byte [esp + eax + 0x24]
mov cl, byte [esi + eax]
xor cl, dl
mov byte [esi + eax], cl
inc eax
cmp eax, edi
jl 0x5ea586
mov eax, dword [esp + 0x10]
add esi, 0x14
dec eax
mov dword [esp + 0x10], eax
jne 0x5ea52f
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa8
ret 0x1c