Function at 0x4f5000
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffec
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.004051dc
xor eax, eax
push ebp
push 0x4f5252
push dword fs:[eax]
mov dword fs:[eax], esp
xor esi, esi
mov edx, dword [ebp - 4]
mov eax, edx
test eax, eax
je 0x4f5035
sub eax, 4
mov eax, dword [eax]
test eax, eax
jns 0x4f503c
add eax, 3
sar eax, 2
mov word [ebp - 0x10], ax
mov eax, edx
test eax, eax
je 0x4f504e
sub eax, 4
mov eax, dword [eax]
cmp eax, 3
jle 0x4f512e
movzx eax, word [ebp - 0x10]
dec eax
test ax, ax
jb 0x4f512e
inc eax
mov word [ebp - 0x14], ax
mov word [ebp - 0xe], 0
movzx eax, word [ebp - 0xe]
mov edx, eax
add edx, edx
add edx, edx
mov eax, dword [ebp - 4]
movzx eax, byte [eax + edx]
sub al, 0x3b
mov ecx, dword [ebp - 4]
movzx ecx, byte [ecx + edx + 1]
sub cl, 0x3b
mov byte [ebp - 9], cl
mov ecx, dword [ebp - 4]
movzx ecx, byte [ecx + edx + 2]
sub cl, 0x3b
mov byte [ebp - 0xa], cl
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx + edx + 3]
sub dl, 0x3b
mov byte [ebp - 0xb], dl
mov edx, eax
and dl, 0xfc
add edx, edx
add edx, edx
mov ecx, eax
and cl, 3
movzx eax, byte [ebp - 0xb]
and al, 0xc
movzx ebx, si
mov edi, dword [ebp - 8]
lea ebx, [edi + ebx]
push ebx
or dl, cl
or al, dl
xor al, 0xeb
pop edx
mov byte [edx], al
inc esi
movzx edx, byte [ebp - 9]
and dl, 0xfc
add edx, edx
add edx, edx
movzx ecx, byte [ebp - 9]
and cl, 3
movzx eax, byte [ebp - 0xb]
and al, 3
add eax, eax
add eax, eax
movzx ebx, si
mov edi, dword [ebp - 8]
lea ebx, [edi + ebx]
push ebx
or dl, cl
or al, dl
xor al, 0xeb
pop edx
mov byte [edx], al
inc esi
movzx edx, byte [ebp - 0xb]
and dl, 0x30
add edx, edx
add edx, edx
movzx eax, si
mov ecx, dword [ebp - 8]
or dl, byte [ebp - 0xa]
xor dl, 0xeb
mov byte [ecx + eax], dl
inc esi
inc word [ebp - 0xe]
dec word [ebp - 0x14]
jne 0x4f5070
mov eax, dword [ebp - 4]
test eax, eax
je 0x4f513a
sub eax, 4
mov eax, dword [eax]
and eax, 0x80000003
jns 0x4f5146
dec eax
or eax, 0xfffffffc
inc eax
mov word [ebp - 0x12], ax
cmp word [ebp - 0x12], 2
jne 0x4f519e
movzx eax, word [ebp - 0x10]
mov edx, eax
add edx, edx
add edx, edx
mov eax, dword [ebp - 4]
movzx eax, byte [eax + edx]
sub al, 0x3b
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx + edx + 1]
sub dl, 0x3b
mov byte [ebp - 9], dl
mov edx, eax
and dl, 0xfc
add edx, edx
add edx, edx
mov ecx, eax
and cl, 3
movzx eax, byte [ebp - 9]
and al, 3
add eax, eax
add eax, eax
movzx ebx, si
mov edi, dword [ebp - 8]
lea ebx, [edi + ebx]
push ebx
or dl, cl
or al, dl
xor al, 0xeb
pop edx
mov byte [edx], al
inc esi
cmp word [ebp - 0x12], 3
jne 0x4f5230
movzx eax, word [ebp - 0x10]
mov edx, eax
add edx, edx
add edx, edx
mov eax, dword [ebp - 4]
movzx eax, byte [eax + edx]
sub al, 0x3b
mov ecx, dword [ebp - 4]
movzx ecx, byte [ecx + edx + 1]
sub cl, 0x3b
mov byte [ebp - 9], cl
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx + edx + 2]
sub dl, 0x3b
mov byte [ebp - 0xb], dl
mov edx, eax
and dl, 0xfc
add edx, edx
add edx, edx
mov ecx, eax
and cl, 3
movzx eax, byte [ebp - 0xb]
and al, 0xc
movzx ebx, si
mov edi, dword [ebp - 8]
lea ebx, [edi + ebx]
push ebx
or dl, cl
or al, dl
xor al, 0xeb
pop edx
mov byte [edx], al
inc esi
movzx edx, byte [ebp - 9]
and dl, 0xfc
add edx, edx
add edx, edx
movzx ecx, byte [ebp - 9]
and cl, 3
movzx eax, byte [ebp - 0xb]
and al, 3
add eax, eax
add eax, eax
movzx ebx, si
mov edi, dword [ebp - 8]
lea ebx, [edi + ebx]
push ebx
or dl, cl
or al, dl
xor al, 0xeb
pop edx
mov byte [edx], al
inc esi
movzx eax, si
mov edx, dword [ebp - 8]
mov byte [edx + eax], 0
mov ebx, esi
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4f5259
lea eax, [ebp - 4]
call fcn.00404d5c
ret