Function at 0x4f4430
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, dword [esp + 0x10]
push esi
mov esi, dword [esp + 0xc]
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x40], 0
mov dword [esi + 0x44], 0
mov dword [esi + 0x48], 0
mov dword [esi + 0x4c], 0
mov dword [esi + 0x30], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], 0
mov dword [esi + 0x16c], 0
mov dword [esi + 0x168], 0
cmp ebx, 0xc
jne 0x4f44c6
mov eax, dword [esp + 0x10]
mov ebx, 1
movq xmm0, qword [eax]
movq qword [esi], xmm0
mov eax, dword [eax + 8]
mov dword [esi + 8], eax
mov byte [esi + 0xf], 1
jmp 0x4f4651
mov dword [esp + 0x14], ebx
push ebp
mov ebp, dword [esp + 0x14]
push edi
lea edi, [esi + 0x60]
cmp ebx, 0x10
jb 0x4f4541
mov edi, ebp
lea ecx, [esi + 0xf]
mov eax, ebx
sub edi, esi
shr eax, 4
mov dword [esp + 0x14], eax
lea eax, [ecx + edi]
cmp esi, eax
ja 0x4f4510
cmp ecx, ebp
jb 0x4f4510
mov eax, esi
mov edx, 0x10
nop word [eax + eax]
mov cl, byte [edi + eax]
lea eax, [eax + 1]
xor byte [eax - 1], cl
sub edx, 1
jne 0x4f4500
jmp 0x4f451e
movups xmm1, xmmword [esi]
movups xmm0, xmmword [ebp]
pxor xmm1, xmm0
movups xmmword [esi], xmm1
lea eax, [esi + 0x60]
push eax
push esi
call fcn.004f48f0
add esp, 8
lea ecx, [esi + 0xf]
add ebp, 0x10
add edi, 0x10
sub ebx, 0x10
sub dword [esp + 0x14], 1
jne 0x4f44e8
lea edi, [esi + 0x60]
test ebx, ebx
je 0x4f45eb
xor edx, edx
test ebx, ebx
je 0x4f45e1
cmp ebx, 0x40
jb 0x4f45c2
lea eax, [ebp - 1]
lea ecx, [esi - 1]
add eax, ebx
add ecx, ebx
cmp esi, eax
ja 0x4f456a
cmp ecx, ebp
jae 0x4f45c2
mov ecx, ebx
mov edi, ebp
and ecx, 0xffffffc0
mov eax, esi
sub edi, esi
movups xmm0, xmmword [eax]
lea eax, [eax + 0x40]
movups xmm1, xmmword [eax + edi - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [edx + ebp + 0x10]
pxor xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm0, xmmword [eax - 0x20]
movups xmm1, xmmword [edx + ebp + 0x20]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
movups xmm0, xmmword [eax - 0x10]
movups xmm1, xmmword [edx + ebp + 0x30]
add edx, 0x40
pxor xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
cmp edx, ecx
jb 0x4f4575
cmp edx, ebx
jae 0x4f45de
sub ebp, esi
lea ecx, [edx + esi]
sub ebx, edx
nop dword [eax]
mov al, byte [ecx + ebp]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub ebx, 1
jne 0x4f45d0
lea edi, [esi + 0x60]
push edi
push esi
call fcn.004f48f0
add esp, 8
mov ebx, dword [esp + 0x1c]
xor edx, edx
shld edx, ebx, 3
push edi
xor byte [esi + 0xb], dl
mov eax, edx
shl ebx, 3
xor byte [esi + 0xf], bl
mov ecx, ebx
shrd ecx, eax, 0x18
push esi
xor byte [esi + 0xc], cl
mov ecx, ebx
shr eax, 0x18
mov eax, edx
shrd ecx, eax, 0x10
xor byte [esi + 0xd], cl
shr eax, 0x10
mov eax, ebx
shrd eax, edx, 8
xor byte [esi + 0xe], al
shr edx, 8
call fcn.004f48f0
movzx ebx, byte [esi + 0xc]
add esp, 8
movzx eax, byte [esi + 0xd]
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 0xe]
shl ebx, 8
or ebx, eax
movzx eax, byte [esi + 0xf]
shl ebx, 8
pop edi
or ebx, eax
pop ebp
push dword [esi + 0x174]
lea eax, [esi + 0x20]
push eax
mov eax, dword [esi + 0x170]
push esi
call eax
inc ebx
add esp, 0xc
mov eax, ebx
mov byte [esi + 0xf], bl
shr eax, 0x18
mov byte [esi + 0xc], al
mov eax, ebx
shr eax, 0x10
mov byte [esi + 0xd], al
mov eax, ebx
shr eax, 8
mov byte [esi + 0xe], al
pop esi
pop ebx
ret