Function at 0x4f4287
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x70
mov eax, dword [ebp + 0xc]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x14], edx
mov ecx, dword [eax + 8]
mov eax, dword [eax]
test ecx, ecx
mov dword [esp + 8], eax
mov dword [esp + 4], ecx
je 0x4f4325
lea ebx, [eax + 5]
lea edx, [ecx*8]
mov ecx, 0xcbf29ce4
mov eax, 0x84222325
movzx esi, byte [ebx - 1]
imul edi, ecx, 0x1b3
movzx ecx, byte [ebx]
mov dword [esp], edx
mov edx, 0x1b3
xor esi, eax
mov eax, esi
shl esi, 8
mul edx
xor ecx, eax
add esi, edx
mov edx, 0x1b3
mov eax, ecx
add edi, esi
shl ecx, 8
mul edx
imul esi, edi, 0x1b3
add ecx, edx
mov edx, 0x1b3
add esi, ecx
mov ecx, eax
xor ecx, dword [ebx - 5]
add ebx, 8
mov eax, ecx
shl ecx, 8
mul edx
add ecx, edx
imul edx, esi, 0x1b3
add ecx, edx
mov edx, dword [esp]
add edx, 0xfffffff8
jne 0x4f42c3
jmp 0x4f432f
mov ecx, 0xcbf29ce4
mov eax, 0x84222325
mov esi, dword [ebp + 8]
mov ebx, dword [esi + 8]
test ebx, ebx
je 0x4f44c3
push 0
push ebx
push ecx
push eax
call fcn.00649bd0
mov ecx, eax
cmp ebx, eax
jbe 0x4f44d9
mov eax, dword [esi]
mov dword [esp + 0x10], ecx
lea ecx, [ecx + ecx*4]
mov edi, dword [esp + 8]
mov dword [esp], ecx
movzx ecx, word [eax + ecx*4 + 0x10]
cmp cx, word [esi + 0x10]
mov esi, dword [esp + 4]
jne 0x4f43c0
mov ecx, dword [esp]
cmp dword [eax + ecx*4 + 8], esi
jne 0x4f43c0
mov ecx, dword [esp]
xor esi, esi
mov ecx, dword [eax + ecx*4]
cmp dword [esp + 4], esi
je 0x4f448f
mov bl, byte [ecx + esi*8 + 4]
mov edx, esi
cmp bl, byte [edi + esi*8 + 4]
jne 0x4f43b4
mov bl, byte [ecx + edx*8 + 5]
cmp bl, byte [edi + edx*8 + 5]
jne 0x4f43b4
mov edi, dword [ecx + edx*8]
mov ebx, dword [esp + 8]
lea esi, [edx + 1]
cmp edi, dword [ebx + edx*8]
mov edi, dword [esp + 8]
je 0x4f4381
mov esi, dword [esp + 4]
cmp edx, esi
jae 0x4f448f
mov ecx, esi
call fcn.004f3fbf
mov ebx, eax
lea eax, [esi*8]
mov dword [esp + 4], edx
push eax
push edi
push ebx
call fcn.0064a810
add esp, 0xc
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x18]
mov dword [eax + 4], ebx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], esi
lea esi, [esp + 0x28]
mov dword [eax], 2
mov ecx, esi
push eax
call fcn.004f262c
add esp, 4
mov eax, dword [esi]
cmp eax, 0x2a
jne 0x4f446f
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x10]
mov edx, dword [eax + 8]
cmp edx, ecx
jbe 0x4f44e2
movzx edi, word [eax + 0x10]
mov eax, dword [eax]
mov ecx, dword [esp]
mov esi, dword [esp + 0x2c]
lea ebx, [eax + ecx*4]
cmp dword [ebx + 4], 0
je 0x4f4448
push dword [ebx]
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 8]
mov dword [ebx + 8], eax
mov eax, dword [esp + 0xc]
movsd xmm0, qword [ecx]
movsd qword [ebx], xmm0
mov dword [ebx + 0xc], esi
mov word [ebx + 0x10], di
mov dword [eax + 4], esi
mov dword [eax], 0x2a
jmp 0x4f44bb
mov ebx, dword [esp + 0xc]
lea esi, [esp + 0x30]
mov ecx, 0xe
mov edx, dword [esi - 4]
lea edi, [ebx + 8]
rep movsd dword es:[edi], dword [esi]
mov dword [ebx], eax
mov dword [ebx + 4], edx
mov edi, dword [esp + 8]
jmp 0x4f44a3
mov ecx, dword [esp]
mov edx, dword [esp + 0xc]
mov eax, dword [eax + ecx*4 + 0xc]
mov dword [edx + 4], eax
mov dword [edx], 0x2a
mov eax, dword [ebp + 0xc]
cmp dword [eax + 4], 0
je 0x4f44bb
push edi
push 0
push dword [0x8032a8]
call dword [sym.imp.kernel32.dll_HeapFree]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0x7673a0
mov edx, 0x39
push 0x769c78
call fcn.006522d0
jmp 0x4f44ec
mov edx, ebx
push 0x769c88
jmp 0x4f44e7
push 0x769c98
call fcn.006521f0
add esp, 4
ud2