Function at 0x4ff950
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x20
call fcn.00629030
mov eax, dword [ebp + 0x10]
push ebx
xor ebx, ebx
mov dword [ebp - 4], edx
push esi
xor esi, esi
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp + 0xc]
test eax, eax
mov edx, ecx
mov dword [ebp - 8], ebx
cmovne edx, eax
mov dword [ebp - 0x1c], edx
test ecx, ecx
jne 0x4ff9b4
push 0x143
push 0x6d6d38
push 0x9f
mov edx, 0xa2
lea ecx, [esi + 6]
call fcn.004818c0
xor ecx, ecx
call fcn.00478250
push ebx
call fcn.0062fb07
add esp, 0x10
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ecx + 8]
mov dword [ebp + 0x10], eax
push edi
mov edi, dword [ebp + 0x14]
test eax, eax
js 0x4ffc76
cmp edi, 0xffffffff
jne 0x4ffa22
mov edi, eax
mov esi, dword [ebp - 0x18]
mov esi, dword [esi + 0x10]
push esi
call fcn.00474800
dec eax
and eax, 7
push esi
mov dword [ebp - 0x14], eax
call fcn.00474800
mov esi, dword [ebp - 4]
add eax, 7
cdq
add esp, 8
and edx, 7
add edx, eax
sar edx, 3
mov dword [ebp - 0x18], edx
cmp dword [ebp - 0x14], ebx
jne 0x4ffa0a
mov byte [esi], bl
inc esi
dec edx
mov dword [ebp - 4], esi
mov dword [ebp - 0x18], edx
mov ecx, dword [ebp + 0x10]
lea eax, [ecx + 2]
cmp edx, eax
jge 0x4ffa6b
push 0xba
push 0x6e8868
push 0x6e
jmp 0x4ffaa1
cmp edi, 0xfffffffe
jne 0x4ffa2e
mov edi, 0xfffffffd
jmp 0x4ff9cd
cmp edi, 0xfffffffd
jge 0x4ff9cd
push 0xae
push 0x6e8868
push 0x88
mov edx, 0x98
mov ecx, 4
call fcn.004818c0
xor ecx, ecx
call fcn.00478250
push 0
call fcn.0062fb07
add esp, 0x10
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, edx
sub eax, ecx
mov dword [ebp - 0x10], eax
lea ecx, [eax - 2]
cmp edi, 0xfffffffd
jne 0x4ffaca
mov edi, ecx
test edi, edi
jle 0x4ffaf1
push edi
mov dword [0x70e32c], ebx
call fcn.0063320d
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x4ffadc
push 0xc8
push 0x6e8868
push 0x41
mov edx, 0x98
mov ecx, 4
call fcn.004818c0
xor ecx, ecx
call fcn.00478250
push 0
call fcn.0062fb07
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, ecx
jle 0x4ffa7c
push 0xc1
push 0x6e8868
push 0x6e
jmp 0x4ffaa1
push edi
push ebx
call fcn.0047f770
add esp, 8
test eax, eax
jle 0x4ffc74
mov eax, dword [ebp - 0x10]
dec eax
mov dword [ebp - 0x20], eax
add eax, esi
mov dword [ebp - 0xc], eax
call fcn.00478310
mov esi, eax
mov dword [ebp - 8], esi
test esi, esi
je 0x4ffc74
push 0
push dword [ebp + 0xc]
push esi
call fcn.00478380
add esp, 0xc
test eax, eax
je 0x4ffc74
mov eax, dword [esi + 0x14]
push 8
push 0x6b7a68
push esi
call eax
add esp, 0xc
test eax, eax
je 0x4ffc74
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x4ffb56
push eax
push dword [ebp + 8]
mov eax, dword [esi + 0x14]
push esi
call eax
add esp, 0xc
test eax, eax
je 0x4ffc74
test edi, edi
je 0x4ffb6d
mov eax, dword [esi + 0x14]
push edi
push ebx
push esi
call eax
add esp, 0xc
test eax, eax
je 0x4ffc74
push 0
push dword [ebp - 0xc]
push esi
call fcn.00478680
add esp, 0xc
test eax, eax
je 0x4ffc74
push dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x10]
mov esi, dword [ebp - 4]
mov edx, dword [ebp - 0x20]
push ecx
push dword [ebp - 0xc]
mov ecx, esi
call fcn.004df3a0
add esp, 0xc
test eax, eax
jne 0x4ffc74
mov eax, dword [ebp - 0x10]
sub eax, edi
add eax, 0xfffffffe
add eax, esi
mov dword [ebp + 0xc], eax
xor byte [eax], 1
inc eax
test edi, edi
jle 0x4ffc4e
xor edx, edx
cmp edi, 0x40
jb 0x4ffc40
lea ecx, [edi - 1]
add ecx, ebx
cmp eax, ecx
ja 0x4ffbd7
mov ecx, dword [ebp + 0xc]
add ecx, edi
cmp ecx, ebx
jae 0x4ffc40
mov ecx, edi
and ecx, 0x8000003f
jns 0x4ffbe6
dec ecx
or ecx, 0xffffffc0
inc ecx
mov dword [ebp + 0xc], edi
sub dword [ebp + 0xc], ecx
lea ecx, [ebx + 0x20]
nop
movups xmm0, xmmword [eax]
add edx, 0x40
lea ecx, [ecx + 0x40]
movups xmm1, xmmword [ecx - 0x60]
pxor xmm1, xmm0
movups xmmword [eax], xmm1
movups xmm0, xmmword [eax + 0x10]
movups xmm1, xmmword [ecx - 0x50]
pxor xmm1, xmm0
movups xmm0, xmmword [ecx - 0x40]
movups xmmword [eax + 0x10], xmm1
movups xmm1, xmmword [eax + 0x20]
pxor xmm1, xmm0
movups xmmword [eax + 0x20], xmm1
movups xmm0, xmmword [eax + 0x30]
movups xmm1, xmmword [ecx - 0x30]
pxor xmm1, xmm0
movups xmmword [eax + 0x30], xmm1
add eax, 0x40
cmp edx, dword [ebp + 0xc]
jl 0x4ffbf0
cmp edx, edi
jge 0x4ffc4e
mov cl, byte [edx + ebx]
lea eax, [eax + 1]
xor byte [eax - 1], cl
inc edx
cmp edx, edi
jl 0x4ffc40
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x4ffc65
mov ecx, 8
sub ecx, eax
mov eax, 0xff
sar eax, cl
and byte [esi], al
mov eax, dword [ebp - 0x18]
mov byte [eax + esi - 1], 0xbc
mov esi, 1
jmp 0x4ffc76
xor esi, esi
mov ecx, dword [ebp - 8]
call fcn.00478250
push dword [ebp - 8]
call fcn.0062fb07
add esp, 4
test ebx, ebx
je 0x4ffca4
test edi, edi
je 0x4ffc9b
push edi
push ebx
call fcn.00401320
add esp, 8
push ebx
call fcn.0062fb07
add esp, 4
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret