Function at 0x562890
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov ecx, dword [esp + 0x24]
mov eax, 0xffffffff
test cl, 3
jne 0x562a48
mov eax, 0xffffffbe
cmp dword [esp + 0x28], 0x1000
jb 0x562a48
mov ebp, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
cmp dword [edi], 0xfe
ja 0x5628df
mov eax, ecx
mov ecx, esi
mov edx, edi
push eax
push 1
jmp 0x562a3e
mov dword [edi], 0xff
cmp ebp, 0x5db
ja 0x562a35
push 0x400
push 0
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
test ebp, ebp
je 0x562a4d
add ebp, ebx
nop dword [eax + eax]
movzx eax, byte [ebx]
add ebx, 1
add dword [esi + eax*4], 1
cmp ebx, ebp
jb 0x562910
mov ecx, 0x101
nop word cs:[eax + eax]
nop dword [eax]
cmp dword [esi + ecx*4 - 8], 0
lea ecx, [ecx - 1]
je 0x562930
lea eax, [ecx - 1]
mov dword [edi], eax
xor edx, edx
mov edi, 0
mov eax, 0
cmp ecx, 8
jb 0x562b36
mov edi, ecx
and edi, 0xfffffff8
lea ebx, [edi - 8]
mov eax, ebx
shr eax, 3
add eax, 1
test ebx, ebx
je 0x562a57
mov ebp, ecx
and ebp, 0xfffffff8
add ebp, 0xfffffff8
shr ebp, 3
add ebp, 1
and ebp, 0xfffffffe
pxor xmm0, xmm0
xor ebx, ebx
movdqa xmm2, xmmword [0x688420]
pxor xmm1, xmm1
nop
movdqu xmm4, xmmword [esi + ebx*4]
movdqu xmm5, xmmword [esi + ebx*4 + 0x10]
movdqa xmm6, xmm0
pxor xmm6, xmm2
movdqa xmm3, xmm4
pxor xmm3, xmm2
pcmpgtd xmm3, xmm6
pand xmm4, xmm3
pandn xmm3, xmm0
por xmm3, xmm4
movdqa xmm0, xmm1
pxor xmm0, xmm2
movdqa xmm4, xmm5
pxor xmm4, xmm2
pcmpgtd xmm4, xmm0
pand xmm5, xmm4
pandn xmm4, xmm1
por xmm4, xmm5
movdqu xmm1, xmmword [esi + ebx*4 + 0x20]
movdqu xmm5, xmmword [esi + ebx*4 + 0x30]
movdqa xmm6, xmm3
pxor xmm6, xmm2
movdqa xmm0, xmm1
pxor xmm0, xmm2
pcmpgtd xmm0, xmm6
pand xmm1, xmm0
pandn xmm0, xmm3
por xmm0, xmm1
movdqa xmm3, xmm4
pxor xmm3, xmm2
movdqa xmm1, xmm5
pxor xmm1, xmm2
pcmpgtd xmm1, xmm3
pand xmm5, xmm1
pandn xmm1, xmm4
por xmm1, xmm5
add ebx, 0x10
add ebp, 0xfffffffe
jne 0x562990
jmp 0x562a61
mov eax, ecx
mov ecx, esi
mov edx, edi
push eax
push 0
push ebp
push ebx
call fcn.00562530
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [edi], 0
xor eax, eax
jmp 0x562a48
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
test al, 1
je 0x562abc
movdqu xmm5, xmmword [esi + ebx*4]
movdqu xmm3, xmmword [esi + ebx*4 + 0x10]
movdqa xmm2, xmmword [0x688420]
movdqa xmm6, xmm0
pxor xmm6, xmm2
movdqa xmm4, xmm5
pxor xmm4, xmm2
pcmpgtd xmm4, xmm6
pand xmm5, xmm4
pandn xmm4, xmm0
por xmm4, xmm5
movdqa xmm0, xmm1
pxor xmm0, xmm2
pxor xmm2, xmm3
pcmpgtd xmm2, xmm0
pand xmm3, xmm2
pandn xmm2, xmm1
por xmm2, xmm3
movdqa xmm0, xmm4
movdqa xmm1, xmm2
movdqa xmm2, xmmword [0x688420]
movdqa xmm4, xmm1
pxor xmm4, xmm2
movdqa xmm3, xmm0
pxor xmm3, xmm2
pcmpgtd xmm3, xmm4
pand xmm0, xmm3
pandn xmm3, xmm1
por xmm3, xmm0
pshufd xmm1, xmm3, 0xee
movdqa xmm0, xmm3
pxor xmm0, xmm2
movdqa xmm4, xmm1
pxor xmm4, xmm2
pcmpgtd xmm0, xmm4
pand xmm3, xmm0
pandn xmm0, xmm1
por xmm0, xmm3
pshufd xmm1, xmm0, 0x55
movdqa xmm3, xmm0
pxor xmm3, xmm2
pxor xmm2, xmm1
pcmpgtd xmm3, xmm2
pand xmm0, xmm3
pandn xmm3, xmm1
por xmm3, xmm0
movd eax, xmm3
cmp ecx, edi
je 0x562a48
sub ecx, edi
lea esi, [esi + edi*4]
nop dword [eax + eax]
mov edi, dword [esi + edx*4]
cmp edi, eax
cmova eax, edi
add edx, 1
cmp ecx, edx
jne 0x562b40
jmp 0x562a48