Function at 0x4fce30
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xdc
call fcn.006149d0
mov eax, dword [0x6ae280]
xor eax, esp
mov dword [esp + 0xd8], eax
mov ecx, dword [esp + 0xe0]
mov eax, dword [esp + 0xe4]
mov edx, dword [esp + 0xec]
push ebp
mov ebp, dword [esp + 0xec]
push esi
mov esi, dword [ecx + 0x64]
push edi
mov dword [esp + 0xc], eax
mov dword [esp + 0x24], ecx
mov edi, dword [esi + 0xc8]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], esi
lea eax, [edi + 0x10]
mov dword [esp + 0x30], edi
cmp edx, eax
jne 0x4fd43c
lea eax, [esp + 0x44]
mov dword [esi + 0x20], 0
neg eax
lea edx, [esp + 0x44]
and eax, 0xf
lea ecx, [esi + 0xd0]
add edx, eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x2c], edx
push ebx
lea eax, [edx + 0x30]
mov dword [esp + 0x2c], eax
lea eax, [esi + 0x20]
lea ebx, [edx + 0x40]
mov dword [esp + 0x24], ebx
push eax
push esi
cmp edi, 0x40
ja 0x4fd29a
push 0x80
push 0x652090
push edx
mov dword [esp + 0x50], 0x80
call fcn.00413040
push dword [esp + 0x44]
lea eax, [esi + 0xd0]
push eax
call fcn.0056d270
mov eax, dword [esp + 0x48]
movups xmm0, xmmword [esi + 0x94]
mov dword [esi + 0x70], 0
push dword [esp + 0x44]
movups xmmword [eax], xmm0
mov dword [esi + 0xa8], 0xd
mov dword [esi + 0xac], 0
mov dword [esi + 0xb0], edi
mov dword [esi + 0xb4], 0
call fcn.00486f10
add esp, 0x20
xor esi, esi
test eax, eax
je 0x4fd13c
test edi, edi
je 0x4fd277
mov eax, dword [esp + 0x10]
cmp edi, 0x10
jb 0x4fd101
lea edx, [edi - 1]
lea ecx, [eax - 1]
add edx, ebx
add ecx, edi
cmp eax, edx
ja 0x4fcf76
cmp ecx, ebx
jae 0x4fd101
lea edx, [ebp - 1]
add edx, edi
cmp eax, edx
ja 0x4fcf87
cmp ecx, ebp
jae 0x4fd101
cmp ebx, edx
ja 0x4fcf98
lea ecx, [edi - 1]
add ecx, ebx
cmp ecx, ebp
jae 0x4fd101
mov ecx, edi
mov edx, eax
and ecx, 0xfffffff0
mov edi, ebp
mov dword [esp + 0x1c], ecx
sub edx, ebx
lea ecx, [eax + 8]
sub edi, ebx
mov dword [esp + 0x14], ecx
lea ecx, [ebx + 4]
mov ebx, ebp
sub ebx, eax
mov eax, edx
nop dword [eax]
movd xmm2, dword [esi + ebp]
lea ecx, [ecx + 0x10]
movd xmm1, dword [ecx - 0x14]
xorps xmm0, xmm0
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
mov edx, dword [esp + 0x14]
xorps xmm2, xmm1
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
andps xmm0, xmmword [0x652150]
packuswb xmm0, xmm0
movd dword [ecx - 0x14], xmm0
movd xmm1, dword [ecx - 0x10]
movd dword [edx - 8], xmm0
xorps xmm0, xmm0
movd xmm2, dword [edi + ecx - 0x10]
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
xorps xmm2, xmm1
add dword [esp + 0x14], 0x10
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
andps xmm0, xmmword [0x652150]
packuswb xmm0, xmm0
movd dword [ecx - 0x10], xmm0
movd xmm1, dword [ecx - 0xc]
movd dword [eax + ecx - 0x10], xmm0
xorps xmm0, xmm0
movd xmm2, dword [ebx + edx]
punpcklbw xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm2, xmm0
punpcklwd xmm1, xmm0
xorps xmm2, xmm1
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
andps xmm0, xmmword [0x652150]
packuswb xmm0, xmm0
movd dword [ecx - 0xc], xmm0
movd xmm1, dword [ecx - 8]
movd dword [edx], xmm0
xorps xmm0, xmm0
movd xmm2, dword [esi + ebp + 0xc]
add esi, 0x10
punpcklbw xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm2, xmm0
punpcklwd xmm1, xmm0
xorps xmm2, xmm1
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
andps xmm0, xmmword [0x652150]
packuswb xmm0, xmm0
movd dword [ecx - 8], xmm0
movd dword [edx + 4], xmm0
mov edx, esi
cmp esi, dword [esp + 0x1c]
jb 0x4fcfc0
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
cmp edx, edi
jae 0x4fd277
mov edx, ebp
lea ecx, [esi + ebx]
sub edx, ebx
sub eax, ebx
mov dword [esp + 0x1c], edx
mov ebp, eax
mov edx, edi
mov dword [esp + 0x18], eax
sub edx, esi
mov esi, edi
mov edi, dword [esp + 0x1c]
nop
movzx eax, byte [ecx + edi]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
movzx eax, byte [ecx - 1]
mov byte [ecx + ebp - 1], al
sub edx, 1
jne 0x4fd120
jmp 0x4fd273
test edi, edi
je 0x4fd277
mov edx, dword [esp + 0x10]
cmp edi, 0x40
jb 0x4fd22e
lea ecx, [edx - 1]
xor esi, esi
lea eax, [edi - 1]
add ecx, edi
add eax, ebx
cmp ebx, ecx
ja 0x4fd169
cmp eax, edx
jae 0x4fd22e
lea ecx, [ebp - 1]
add ecx, edi
cmp ebx, ecx
ja 0x4fd17a
cmp eax, ebp
jae 0x4fd22e
cmp edx, ecx
ja 0x4fd18b
lea eax, [edx - 1]
add eax, edi
cmp eax, ebp
jae 0x4fd22e
mov eax, edi
lea ecx, [ebx + 0x10]
and eax, 0xffffffc0
mov dword [esp + 0x20], eax
lea eax, [edx + 0x20]
mov dword [esp + 0x1c], eax
mov eax, edx
sub eax, ebx
mov dword [esp + 0x14], eax
mov eax, ebp
mov edi, dword [esp + 0x14]
sub eax, edx
mov edx, dword [esp + 0x1c]
mov ebx, eax
movups xmm2, xmmword [esi + ebp]
lea eax, [edi + ecx]
movups xmm0, xmmword [ecx - 0x10]
lea edx, [edx + 0x40]
movups xmmword [ecx - 0x10], xmm2
lea ecx, [ecx + 0x40]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmm0, xmmword [ecx - 0x40]
movups xmmword [edx - 0x60], xmm1
movups xmm2, xmmword [ebx + eax]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax], xmm1
movups xmmword [ecx - 0x40], xmm2
movups xmm2, xmmword [ebx + edx - 0x40]
movups xmm0, xmmword [ecx - 0x30]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [esi + ebp + 0x30]
add esi, 0x40
mov eax, esi
movups xmmword [ecx - 0x30], xmm2
movups xmm0, xmmword [ecx - 0x20]
movups xmmword [ecx - 0x20], xmm1
xorps xmm0, xmm1
movups xmmword [edx - 0x30], xmm0
cmp esi, dword [esp + 0x20]
jb 0x4fd1b4
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
cmp eax, edi
jae 0x4fd277
mov eax, ebp
mov dword [esp + 0x18], edi
sub eax, edx
add ebx, esi
mov dword [esp + 0x20], eax
mov ebp, edi
mov eax, edx
sub eax, dword [esp + 0x24]
sub ebp, esi
mov esi, dword [esp + 0x20]
mov dword [esp + 0x1c], eax
nop
lea ecx, [eax + ebx]
mov al, byte [ebx]
mov dl, byte [esi + ecx]
lea ebx, [ebx + 1]
xor al, dl
mov byte [ebx - 1], dl
mov byte [ecx], al
mov eax, dword [esp + 0x1c]
sub ebp, 1
jne 0x4fd250
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x38]
mov edi, esi
lea eax, [esi + ebx]
neg edi
and edi, 0xf
push edi
push 0
push eax
call sub.VCRUNTIME140.dll_memset
lea eax, [edi + esi]
add esp, 0xc
add ebx, eax
lea ecx, [eax + 0x20]
jmp 0x4fd379
push 0x40
push 0x652090
push edx
mov dword [esp + 0x50], 0x40
call fcn.00413040
push dword [esp + 0x44]
lea eax, [esi + 0xd0]
push eax
call fcn.0056d270
push 0x10
lea eax, [esi + 0x94]
mov dword [esi + 0x20], 1
push eax
lea eax, [esi + 0xd0]
mov dword [esi + 0x70], 0
push eax
call fcn.0056d340
push dword [esp + 0x50]
mov dword [esp + 0x58], ebx
mov dword [esi + 0xa8], 0xd
mov dword [esi + 0xac], 0
mov dword [esi + 0xb0], edi
mov dword [esi + 0xb4], 0
call fcn.00486f10
add esp, 0x2c
test eax, eax
je 0x4fd338
lea eax, [esi + 0x20]
push eax
push esi
mov esi, dword [esp + 0x18]
push edi
push ebp
push esi
call fcn.00413040
push edi
push esi
push dword [esp + 0x30]
call fcn.0056d340
jmp 0x4fd356
push edi
lea eax, [esi + 0xd0]
push ebp
push eax
call fcn.0056d340
lea eax, [esi + 0x20]
push eax
push esi
push edi
push ebp
push dword [esp + 0x2c]
call fcn.00413040
add esp, 0x20
mov eax, edi
neg eax
and eax, 0xf
push eax
push 0x652090
push dword [esp + 0x1c]
call fcn.0056d340
add esp, 0xc
mov esi, edi
mov ecx, 0x10
mov edi, dword [esp + 0x10]
lea eax, [esi + ebp]
mov ebp, dword [esp + 0x2c]
add edi, esi
mov esi, dword [esp + 0x44]
push ecx
push ebp
mov dword [esp + 0x28], eax
movups xmm0, xmmword [esi + 0xa8]
movups xmmword [ebx], xmm0
lea ebx, [esi + 0xd0]
push ebx
call fcn.0056d340
push dword [esp + 0x48]
push dword [esp + 0x40]
call fcn.00401320
push dword [esp + 0x3c]
call fcn.00486f10
mov ecx, eax
lea eax, [esi + 0x84]
test ecx, ecx
cmove eax, ebp
push eax
push ebx
call fcn.0056d1f0
push dword [esp + 0x48]
mov dword [esi + 0xc8], 0xffffffff
call fcn.00486f10
add esp, 0x24
pop ebx
test eax, eax
je 0x4fd411
movups xmm0, xmmword [esi + 0x84]
movups xmmword [edi], xmm0
mov eax, dword [esp + 0x3c]
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0xd8]
xor ecx, esp
call fcn.00614242
add esp, 0xdc
ret
push 0x10
push dword [esp + 0x20]
push ebp
call fcn.00401390
add esp, 0xc
test eax, eax
je 0x4fd3f5
mov ecx, dword [esp + 0x3c]
sub edi, ecx
add edi, 0x10
lea eax, [ecx - 0x10]
push eax
push 0
push edi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov ecx, dword [esp + 0xe4]
or eax, 0xffffffff
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.00614242
add esp, 0xdc
ret