Function at 0x4fe290
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov esi, ecx
mov ecx, dword [ecx + 0x7c]
mov eax, dword [esi + 0xc4]
lea edx, [ecx - 0x106]
mov dword [esp + 0x10], edx
mov dword [esp + 8], ecx
add ecx, dword [esp + 0x10]
mov ebx, dword [esi + 0x8c]
mov edx, dword [esi + 0xbc]
add eax, edx
sub ebx, eax
cmp edx, ecx
jb 0x4fe4ce
mov eax, dword [esi + 0x88]
mov edi, dword [esp + 8]
lea ecx, [eax + edi]
mov edx, edi
mov dword [esp + 4], ebx
sub edx, ebx
push edx
push ecx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
sub dword [esi + 0xc0], edi
sub dword [esi + 0xbc], edi
sub dword [esi + 0xac], edi
mov eax, dword [esi + 0x7c]
mov ecx, dword [esi + 0x9c]
lea ebp, [ecx + ecx]
add ebp, dword [esi + 0x94]
movd xmm0, eax
cmp ecx, 8
jae 0x4fe340
mov edx, ebp
xor ebp, ebp
movdqa xmm5, xmmword [0x56b210]
movdqa xmm6, xmmword [0x56b220]
pcmpeqd xmm7, xmm7
jmp 0x4fe3dd
mov edx, ecx
and edx, 0xfffffff8
mov dword [esp], ecx
and ecx, 7
mov edi, edx
neg edi
mov dword [esp + 0xc], edx
lea ebx, [edx + edx]
mov edx, ebp
sub edx, ebx
pshufd xmm1, xmm0, 0
add ebp, 0xfffffff0
xor ebx, ebx
movdqa xmm5, xmmword [0x56b210]
movdqa xmm6, xmmword [0x56b220]
pcmpeqd xmm7, xmm7
nop dword [eax + eax]
movdqu xmm2, xmmword [ebp + ebx*2]
movdqa xmm3, xmm1
pxor xmm3, xmm5
movdqa xmm4, xmm6
pcmpgtd xmm4, xmm3
movdqa xmm3, xmm1
pand xmm3, xmm4
pxor xmm4, xmm7
por xmm4, xmm3
pslld xmm4, 0x10
psrad xmm4, 0x10
packssdw xmm4, xmm4
pshuflw xmm3, xmm4, 0x1b
pshufhw xmm3, xmm3, 0x1b
psubusw xmm2, xmm3
movdqu xmmword [ebp + ebx*2], xmm2
add ebx, 0xfffffff8
cmp edi, ebx
jne 0x4fe380
mov edi, dword [esp + 0xc]
cmp dword [esp], edi
mov ebp, 0
je 0x4fe406
neg ecx
xor edi, edi
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ebx, word [edx + edi*2 - 2]
sub ebx, eax
cmovb ebx, ebp
mov word [edx + edi*2 - 2], bx
add edi, 0xffffffff
cmp ecx, edi
jne 0x4fe3f0
lea edi, [eax + eax]
add edi, dword [esi + 0x90]
cmp eax, 8
jae 0x4fe420
mov ecx, eax
mov edx, edi
jmp 0x4fe4a7
mov edx, eax
and edx, 0xfffffff8
mov ecx, eax
and ecx, 7
mov ebp, edx
neg ebp
mov dword [esp], edx
lea ebx, [edx + edx]
mov edx, edi
sub edx, ebx
pshufd xmm0, xmm0, 0
add edi, 0xfffffff0
xor ebx, ebx
nop word cs:[eax + eax]
nop dword [eax]
movdqu xmm1, xmmword [edi + ebx*2]
movdqa xmm2, xmm0
pxor xmm2, xmm5
movdqa xmm3, xmm6
pcmpgtd xmm3, xmm2
movdqa xmm2, xmm0
pand xmm2, xmm3
pxor xmm3, xmm7
por xmm3, xmm2
pslld xmm3, 0x10
psrad xmm3, 0x10
packssdw xmm3, xmm3
pshuflw xmm2, xmm3, 0x1b
pshufhw xmm2, xmm2, 0x1b
psubusw xmm1, xmm2
movdqu xmmword [edi + ebx*2], xmm1
add ebx, 0xfffffff8
cmp ebp, ebx
jne 0x4fe450
cmp eax, dword [esp]
mov ebp, 0
je 0x4fe4c6
neg ecx
xor edi, edi
nop dword [eax + eax]
movzx ebx, word [edx + edi*2 - 2]
sub ebx, eax
cmovb ebx, ebp
mov word [edx + edi*2 - 2], bx
add edi, 0xffffffff
cmp ecx, edi
jne 0x4fe4b0
mov ebx, dword [esp + 4]
add ebx, dword [esp + 8]
mov edi, dword [esi]
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x4fe657
mov eax, dword [esi + 0xc4]
cmp ecx, ebx
cmovbe ebx, ecx
test ebx, ebx
je 0x4fe550
mov ebp, dword [esi + 0x88]
add ebp, dword [esi + 0xbc]
add ebp, eax
sub ecx, ebx
mov dword [edi + 4], ecx
mov eax, dword [edi + 0x1c]
cmp dword [eax + 0x18], 2
jne 0x4fe520
push ebx
push ebp
push edi
call fcn.004bde10
add esp, 0xc
jmp 0x4fe545
push ebx
push dword [edi]
push ebp
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [edi + 0x1c]
cmp dword [eax + 0x18], 1
jne 0x4fe545
push ebx
push ebp
push dword [edi + 0x30]
call fcn.00501ae0
add esp, 0xc
mov dword [edi + 0x30], eax
add dword [edi], ebx
add dword [edi + 8], ebx
mov eax, dword [esi + 0xc4]
add eax, ebx
mov dword [esi + 0xc4], eax
mov edi, dword [esi + 0x1704]
lea ecx, [edi + eax]
cmp ecx, 3
jb 0x4fe640
mov edx, dword [esi + 0xbc]
sub edx, edi
mov ebx, dword [esi + 0x88]
mov dword [esp + 4], edi
mov edi, dword [esi + 0xa4]
movzx ebp, byte [ebx + edx]
mov dword [esi + 0x98], ebp
mov ecx, dword [esi + 0xa8]
shl ebp, cl
mov dword [esp], ebp
movzx ebp, byte [ebx + edx + 1]
xor ebp, dword [esp]
and ebp, edi
mov dword [esi + 0x98], ebp
cmp dword [esp + 4], 0
je 0x4fe640
nop word cs:[eax + eax]
nop dword [eax]
shl ebp, cl
movzx eax, byte [ebx + edx + 2]
xor eax, ebp
and eax, edi
mov dword [esi + 0x98], eax
mov ecx, dword [esi + 0x90]
mov edi, dword [esi + 0x94]
movzx eax, word [edi + eax*2]
mov edi, dword [esi + 0x84]
and edi, edx
mov word [ecx + edi*2], ax
mov eax, dword [esi + 0x94]
mov ecx, dword [esi + 0x98]
mov word [eax + ecx*2], dx
mov edi, dword [esi + 0x1704]
lea ecx, [edi - 1]
mov dword [esi + 0x1704], ecx
mov eax, dword [esi + 0xc4]
add edi, eax
add edi, 0xffffffff
cmp edi, 3
jb 0x4fe640
test ecx, ecx
je 0x4fe640
add edx, 1
mov ebx, dword [esi + 0x88]
mov ebp, dword [esi + 0x98]
mov ecx, dword [esi + 0xa8]
mov edi, dword [esi + 0xa4]
jmp 0x4fe5c0
cmp eax, 0x105
ja 0x4fe657
mov ecx, dword [esi]
cmp dword [ecx + 4], 0
je 0x4fe657
mov ecx, dword [esi + 0x7c]
jmp 0x4fe2b0
mov eax, dword [esi + 0x1710]
mov edx, dword [esi + 0x8c]
mov ecx, edx
sub ecx, eax
jbe 0x4fe6d0
mov edi, dword [esi + 0xc4]
add edi, dword [esi + 0xbc]
cmp eax, edi
jae 0x4fe6a1
sub edx, edi
cmp edx, 0x102
mov ebx, 0x102
cmovb ebx, edx
mov eax, dword [esi + 0x88]
add eax, edi
push ebx
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
add ebx, edi
jmp 0x4fe6ca
add edi, 0x102
sub edi, eax
jbe 0x4fe6d0
cmp edi, ecx
cmova edi, ecx
add eax, dword [esi + 0x88]
push edi
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
add edi, dword [esi + 0x1710]
mov ebx, edi
mov dword [esi + 0x1710], ebx
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret