Function at 0x4c635c
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [0x65c748]
and eax, 0xfffffff
sub eax, 0x4800000
je 0x4c640d
sub eax, 4
je 0x4c63ed
sub eax, 0xc
je 0x4c63cd
sub eax, 8
je 0x4c63a3
cmp byte [0x65c71c], 0
je 0x4c641f
mov ecx, dword [0x65c678]
push 0x856
push 0x5e5248
mov eax, dword [ecx]
call dword [eax + 0x28]
ret
mov eax, dword [0x65c670]
mov eax, dword [eax + 0x94]
and dword [eax], 0xfffffffd
mov eax, dword [0x65c670]
mov eax, dword [eax + 0x1c4]
and dword [eax], 0xffffefff
mov ecx, dword [0x65c670]
jmp fcn.004a89c2
mov eax, dword [0x65c670]
mov ecx, dword [eax + 0x1c0]
mov eax, dword [0x65c750]
mov dword [ecx], eax
mov ecx, dword [0x65c668]
lea ecx, [ecx + 0xc]
jmp fcn.004e020e
mov eax, dword [0x65c670]
mov ecx, dword [eax + 0x1bc]
mov eax, dword [0x65c750]
mov dword [ecx], eax
mov ecx, dword [0x65c668]
lea ecx, [ecx + 0xc]
jmp 0x4dff26
mov eax, dword [0x65c670]
mov ecx, dword [eax + 0x1b8]
mov eax, dword [0x65c750]
mov dword [ecx], eax
ret
mov eax, 0x565f16
call fcn.00514868
sub esp, 0xec
push ebx
push esi
push edi
mov edi, ecx
mov ecx, dword [0x65c668]
call fcn.004c4b7a
mov edx, dword [0x65c670]
mov dword [ebp - 0x10], eax
mov esi, dword [edx + 0x1b8]
mov edx, dword [esi]
cmp edx, dword [0x65c764]
jle 0x4dffb1
cmp byte [0x65c728], 0
je 0x4e01fd
push 0x5e9cd4
lea eax, [ebp - 0x30]
push 0x5e9cec
push eax
call fcn.00490eb7
add esp, 0xc
mov edx, eax
xor ebx, ebx
mov dword [ebp - 4], ebx
cmp dword [edx + 0x14], 0x10
jb 0x4dff91
mov edx, dword [edx]
mov ecx, dword [0x65c678]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x30]
push ebx
push 1
call fcn.00401fa5
jmp 0x4e01fd
mov ecx, edi
call fcn.004df655
and dword [esi], 0xfffffff8
mov edx, dword [esi]
jge 0x4dffe2
xor ebx, ebx
mov esi, ebx
mov ebx, dword [ebp - 0x10]
test edx, edx
js 0x4dffd9
mov al, byte [esi + edi + 0xfd8]
mov ecx, edx
xor ecx, 3
mov byte [ecx + ebx], al
inc esi
inc edx
cmp esi, 0x40
jl 0x4dffc6
jmp 0x4e0000
xor ebx, ebx
mov edx, ebx
mov ebx, dword [ebp - 0x10]
mov ecx, dword [esi]
mov al, byte [edi + edx + 0xfd8]
add ecx, edx
xor ecx, 3
inc edx
mov byte [ecx + ebx], al
cmp edx, 0x40
jb 0x4dffe9
xor ebx, ebx
cmp byte [0x65c8bf], bl
je 0x4e0182
push 0x5e9d14
call fcn.004d1c7a
mov dword [esp], 0x5e9d2c
call fcn.004d1c7a
pop ecx
mov eax, ebx
lea ecx, [edi + 0xfda]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], ecx
and eax, 0x80000003
jns 0x4e003f
dec eax
or eax, 0xfffffffc
inc eax
jne 0x4e004d
mov byte [ebp - 0x94], bl
mov byte [ebp - 0xf8], bl
movzx eax, byte [ecx + 1]
push eax
movzx eax, byte [ecx]
push eax
movzx eax, byte [ecx - 1]
push eax
movzx eax, byte [ecx - 2]
push eax
lea eax, [ebp - 0x2c]
push 0x5e9d44
push eax
call fcn.00403e18
lea edx, [ebp - 0x2c]
add esp, 0x18
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x4e0076
lea edi, [ebp - 0x94]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4e0086
mov eax, dword [ebp - 0x10]
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
inc eax
mov dword [ebp - 0x10], eax
rep movsb byte es:[edi], byte [esi]
and eax, 0x80000003
jns 0x4e00af
dec eax
or eax, 0xfffffffc
inc eax
mov dword [ebp - 0x18], eax
je 0x4e00ef
lea eax, [ebp - 0x2c]
push 0x5dfc04
push eax
call fcn.00403e18
pop ecx
lea edx, [ebp - 0x2c]
pop ecx
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x4e00c9
lea edi, [ebp - 0x94]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4e00d9
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 0x14]
movzx eax, byte [ecx + 1]
push eax
movzx eax, byte [ecx]
push eax
movzx eax, byte [ecx - 1]
push eax
movzx eax, byte [ecx - 2]
push eax
lea eax, [ebp - 0x2c]
push 0x5e9d58
push eax
call fcn.00403e18
lea edx, [ebp - 0x2c]
add esp, 0x18
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x4e011b
lea edi, [ebp - 0xf8]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4e012b
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
cmp dword [ebp - 0x18], 0
rep movsb byte es:[edi], byte [esi]
jne 0x4e0162
lea eax, [ebp - 0xf8]
push eax
lea eax, [ebp - 0x94]
push eax
push 0x5e9d64
call fcn.004d1c7a
add esp, 0xc
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
add ecx, 4
mov dword [ebp - 0x14], ecx
cmp eax, 0x10
jl 0x4e0033
push 0x5cba50
call fcn.004d1c7a
pop ecx
cmp byte [0x622535], 0
je 0x4e01b5
cmp byte [0x65c761], 0
mov ecx, dword [0x65c6b0]
push ebx
je 0x4e01aa
call fcn.004d7daf
and eax, 0x3f
add eax, 0x900
jmp 0x4e01b2
call fcn.004d7daf
and eax, 0x3f
push eax
jmp 0x4e01c4
cmp byte [0x65c761], 0
je 0x4e01d3
push ebx
push 0x900
mov ecx, dword [0x65c68c]
push 7
call fcn.004d38de
jmp 0x4e01fd
mov eax, dword [0x65c670]
mov eax, dword [eax + 0x94]
or dword [eax], 2
mov eax, dword [0x65c670]
mov eax, dword [eax + 0x1c4]
or dword [eax], 0x1000
mov ecx, dword [0x65c670]
call fcn.004a89c2
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret