Function at 0x4c0860
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xb8
mov eax, dword [0x4d900c]
xor eax, esp
mov dword [esp + 0xb4], eax
push esi
push edi
lea ecx, [esp + 0x78]
call fcn.004c0640
movaps xmm0, xmmword [0x4d4440]
xor ecx, ecx
movups xmmword [esp + 0x38], xmm0
movaps xmm0, xmmword [str.1032547698_]
movups xmmword [esp + 0x48], xmm0
movaps xmm0, xmmword [0x4d3de0]
movups xmmword [esp + 0x58], xmm0
movaps xmm0, xmmword [0x4d3830]
movups xmmword [esp + 0x68], xmm0
mov al, byte [esp + 0x38]
xor byte [esp + ecx + 0x39], al
inc ecx
cmp ecx, 0x3e
jb 0x4c08b7
xorps xmm0, xmm0
mov byte [esp + 0x77], 0
lea ecx, [esp + 0x39]
movaps xmmword [esp + 0x90], xmm0
mov dword [esp + 0xa0], 0
lea edx, [ecx + 1]
mov dword [esp + 0xa4], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c08f2
sub ecx, edx
lea eax, [esp + 0x39]
push ecx
push eax
lea ecx, [esp + 0x98]
call fcn.004b7120
mov ecx, dword [esp + 0x88]
xor eax, eax
mov dword [esp + 0xc], eax
test ecx, ecx
je 0x4c09c2
mov ecx, dword [esp + 0xa0]
nop dword [eax]
xor edi, edi
test ecx, ecx
je 0x4c0985
xor dl, dl
nop dword [eax + eax]
cmp dword [esp + 0xa4], 0x10
lea esi, [esp + 0x90]
push eax
cmovae esi, dword [esp + 0x94]
lea ecx, [esp + 0x7c]
call fcn.004b5dc0
mov ecx, dword [esp + 0xa0]
movzx edx, dl
mov al, byte [eax]
cmp al, byte [esi + edi]
mov eax, 1
cmove edx, eax
mov eax, dword [esp + 0xc]
inc edi
cmp edi, ecx
jb 0x4c0940
test dl, dl
jne 0x4c09a5
cmp dword [esp + 0x8c], 0x10
lea eax, [esp + 0x78]
mov ecx, dword [esp + 0xc]
cmovae eax, dword [esp + 0x78]
mov byte [eax + ecx], 0x20
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0xc]
inc eax
mov dword [esp + 0xc], eax
cmp eax, dword [esp + 0x88]
jb 0x4c0930
mov ecx, dword [esp + 0x88]
mov edi, dword [esp + 0x8c]
lea eax, [esp + 0x78]
mov edx, dword [esp + 0x78]
lea esi, [esp + 0x78]
cmp edi, 0x10
push 0x20
cmovae eax, edx
add eax, ecx
cmp edi, 0x10
mov dword [esp + 0x10], eax
cmovae esi, edx
add esi, ecx
cmp edi, 0x10
lea ecx, [esp + 0x7c]
cmovae ecx, edx
mov edx, esi
call fcn.004c51b0
add esp, 4
mov edi, eax
cmp eax, esi
je 0x4c0a1f
inc eax
cmp eax, esi
je 0x4c0a1f
nop word [eax + eax]
mov cl, byte [eax]
cmp cl, 0x20
je 0x4c0a1a
mov byte [edi], cl
inc edi
inc eax
cmp eax, esi
jne 0x4c0a10
cmp dword [esp + 0x8c], 0x10
lea eax, [esp + 0x78]
mov esi, edi
lea ecx, [esp + 0x78]
cmovae eax, dword [esp + 0x78]
sub dword [esp + 0xc], edi
sub esi, eax
mov edi, dword [esp + 0x88]
mov eax, edi
mov edx, dword [esp + 0xc]
sub eax, esi
cmp eax, edx
cmovb edx, eax
cmp dword [esp + 0x8c], 0x10
mov dword [esp + 0xc], edx
cmovae ecx, dword [esp + 0x78]
sub edi, edx
add ecx, esi
mov eax, edi
sub eax, esi
inc eax
push eax
lea eax, [ecx + edx]
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [0x4d97d0]
add esp, 0xc
mov dword [esp + 0x88], edi
cmp eax, 1
jne 0x4c0ade
mov eax, dword [0x4d90a8]
cmp eax, 0x10
jae 0x4c0b76
mov ecx, 0x10
mov dword [esp + 0x20], 0
sub ecx, eax
mov dword [esp + 0x24], 0
cmp edi, ecx
lea eax, [esp + 0x78]
xorps xmm0, xmm0
cmovb ecx, edi
movaps xmmword [esp + 0x10], xmm0
cmp dword [esp + 0x8c], 0x10
push ecx
cmovae eax, dword [esp + 0x7c]
lea ecx, [esp + 0x14]
push eax
call fcn.004b7120
mov ecx, 0x4d9098
jmp 0x4c0b3a
cmp eax, 2
jne 0x4c0b76
mov eax, dword [0x4d90d8]
cmp eax, 0x10
jae 0x4c0b76
mov ecx, 0x10
mov dword [esp + 0x20], 0
sub ecx, eax
mov dword [esp + 0x24], 0
cmp edi, ecx
lea eax, [esp + 0x78]
xorps xmm0, xmm0
cmovb ecx, edi
movaps xmmword [esp + 0x10], xmm0
cmp dword [esp + 0x8c], 0x10
push ecx
cmovae eax, dword [esp + 0x7c]
lea ecx, [esp + 0x14]
push eax
call fcn.004b7120
mov ecx, 0x4d90c8
lea eax, [esp + 0x10]
push eax
call fcn.004b5e90
mov ecx, dword [esp + 0x24]
cmp ecx, 0x10
jb 0x4c0b76
mov edx, dword [esp + 0x10]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c0b6c
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c0be3
push ecx
push edx
call fcn.004c8a1d
add esp, 8
mov eax, dword [esp + 0xa4]
cmp eax, 0x10
jb 0x4c0bb8
lea ecx, [eax + 1]
mov eax, dword [esp + 0x90]
mov edx, eax
cmp ecx, 0x1000
jb 0x4c0bae
mov eax, dword [edx - 4]
add ecx, 0x23
sub edx, eax
mov dword [esp + 0xc], eax
lea eax, [edx - 4]
cmp eax, 0x1f
ja 0x4c0be3
mov eax, dword [esp + 0xc]
push ecx
push eax
call fcn.004c8a1d
add esp, 8
mov ecx, dword [esp + 0x8c]
cmp ecx, 0x10
jb 0x4c0bf3
mov edx, dword [esp + 0x78]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c0be9
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x4c0be9
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.004c8a1d
add esp, 8
mov ecx, dword [esp + 0xbc]
pop edi
pop esi
xor ecx, esp
call fcn.004c8789
mov esp, ebp
pop ebp
ret