Function at 0x5e9250
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x50
mov eax, ecx
mov esi, dword [esp + 0x78]
mov ebp, dword [ecx + 0xc]
cmp ebp, 4
setae bl
lea ecx, [ebp*8]
shr esi, cl
mov dword [esp + 4], edx
mov ecx, dword [esp + 0x6c]
test esi, esi
sete dl
mov esi, 0xf
sub esi, ebp
xor edi, edi
cmp esi, ecx
jne 0x5e9773
or bl, dl
je 0x5e9773
mov edx, dword [eax]
mov dword [esp], edx
mov eax, dword [eax + 8]
pxor xmm0, xmm0
mov ebx, dword [esp + 4]
movdqu xmmword [ebx + 0x10], xmm0
movdqu xmmword [ebx + 1], xmm0
lea edx, [ebp - 1]
and eax, 0x3e
lea eax, [eax*4 + 0xf8]
or eax, edx
mov edx, eax
or dl, 0x40
cmp dword [esp + 0x74], 0
movzx edx, dl
cmove edx, eax
mov byte [ebx], dl
test ecx, ecx
je 0x5e92e5
lea eax, [ebx + 1]
push ecx
push dword [esp + 0x6c]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
test ebp, ebp
mov esi, dword [esp + 0x78]
je 0x5e9540
xor ecx, ecx
cmp ebp, 0x10
jb 0x5e951a
mov ecx, ebp
and ecx, 0xfffffff0
movd xmm0, esi
pshufd xmm1, xmm0, 0
mov eax, ecx
neg eax
movdqa xmm4, xmmword [0x8bed00]
movdqa xmm5, xmmword [0x8bed10]
movdqa xmm3, xmmword [0x8bed20]
movdqa xmm0, xmmword [0x8bed30]
xor edx, edx
movdqu xmmword [esp + 0x30], xmm0
movdqu xmmword [esp + 0x20], xmm3
movdqu xmmword [esp + 0x40], xmm5
movdqu xmmword [esp + 8], xmm4
movdqa xmm4, xmm0
pslld xmm4, 3
movdqu xmm3, xmmword [esp + 0x20]
pslld xmm3, 3
movdqu xmm7, xmmword [esp + 0x40]
pslld xmm7, 3
movdqu xmm6, xmmword [esp + 8]
pslld xmm6, 3
pshuflw xmm0, xmm6, 0xfe
movdqa xmm2, xmm1
psrld xmm2, xmm0
pshuflw xmm5, xmm6, 0x54
movdqa xmm0, xmm1
psrld xmm0, xmm5
punpcklqdq xmm0, xmm2
pshufd xmm2, xmm6, 0xee
pshuflw xmm5, xmm2, 0xfe
movdqa xmm6, xmm1
psrld xmm6, xmm5
pshuflw xmm2, xmm2, 0x54
movdqa xmm5, xmm1
psrld xmm5, xmm2
punpckhqdq xmm5, xmm6
shufps xmm0, xmm5, 0xcc
pshuflw xmm2, xmm7, 0xfe
movdqa xmm5, xmm1
psrld xmm5, xmm2
pshuflw xmm2, xmm7, 0x54
movdqa xmm6, xmm1
psrld xmm6, xmm2
punpcklqdq xmm6, xmm5
pshufd xmm2, xmm7, 0xee
pshuflw xmm5, xmm2, 0xfe
movdqa xmm7, xmm1
psrld xmm7, xmm5
pshuflw xmm2, xmm2, 0x54
movdqa xmm5, xmm1
psrld xmm5, xmm2
punpckhqdq xmm5, xmm7
shufps xmm6, xmm5, 0xcc
pshuflw xmm2, xmm3, 0xfe
movdqa xmm5, xmm1
psrld xmm5, xmm2
pshuflw xmm2, xmm3, 0x54
movdqa xmm7, xmm1
psrld xmm7, xmm2
punpcklqdq xmm7, xmm5
pshufd xmm2, xmm3, 0xee
pshuflw xmm3, xmm2, 0xfe
movdqa xmm5, xmm1
psrld xmm5, xmm3
pshuflw xmm2, xmm2, 0x54
movdqa xmm3, xmm1
psrld xmm3, xmm2
punpckhqdq xmm3, xmm5
shufps xmm7, xmm3, 0xcc
pshuflw xmm2, xmm4, 0xfe
movdqa xmm5, xmm1
psrld xmm5, xmm2
pshuflw xmm2, xmm4, 0x54
movdqa xmm3, xmm1
psrld xmm3, xmm2
punpcklqdq xmm3, xmm5
pshufd xmm2, xmm4, 0xee
pshuflw xmm4, xmm2, 0xfe
movdqa xmm5, xmm1
psrld xmm5, xmm4
pshuflw xmm2, xmm2, 0x54
movdqa xmm4, xmm1
psrld xmm4, xmm2
punpckhqdq xmm4, xmm5
shufps xmm3, xmm4, 0xcc
movaps xmm2, xmmword [0x8bed40]
andps xmm3, xmm2
andps xmm7, xmm2
packuswb xmm3, xmm7
movdqu xmm5, xmmword [esp + 0x40]
andps xmm6, xmm2
andps xmm0, xmm2
packuswb xmm6, xmm0
packuswb xmm3, xmm6
movdqu xmm4, xmmword [esp + 8]
movdqa xmm0, xmm3
xorps xmm2, xmm2
punpcklbw xmm0, xmm2
pshufd xmm0, xmm0, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshufhw xmm0, xmm0, 0x1b
punpckhbw xmm3, xmm2
pshufd xmm2, xmm3, 0x4e
movdqu xmm3, xmmword [esp + 0x20]
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm0
movdqu xmm0, xmmword [esp + 0x30]
movdqu xmmword [ebx + edx], xmm2
movdqa xmm2, xmmword [0x8bed50]
paddd xmm0, xmm2
paddd xmm3, xmm2
paddd xmm5, xmm2
paddd xmm4, xmm2
add edx, 0xfffffff0
cmp eax, edx
jne 0x5e9330
cmp ebp, ecx
je 0x5e9540
neg ebp
mov eax, ecx
neg eax
shl ecx, 3
nop word cs:[eax + eax]
mov edx, esi
shr edx, cl
mov byte [ebx + eax + 0xf], dl
dec eax
add ecx, 8
cmp ebp, eax
jne 0x5e9530
lea ebp, [ebx + 0x10]
push dword [esp + 0x64]
push ebp
push ebx
call dword [esp + 0xc]
add esp, 0xc
mov edx, dword [esp + 0x74]
test edx, edx
je 0x5e956f
cmp edx, 0xfeff
ja 0x5e9582
xor byte [ebp], dh
mov eax, 2
mov ecx, 0x11
jmp 0x5e95c2
mov eax, 0xfffffffe
cmp esi, 0xfffffff0
jbe 0x5e975e
jmp 0x5e9773
mov ecx, edx
shr ecx, 0x18
movd xmm0, dword [ebx + 0x10]
mov eax, edx
shr eax, 8
mov edx, eax
and edx, 0xff00
or edx, ecx
movdqa xmm1, xmmword [0x8bed60]
pinsrw xmm1, edx, 1
mov edx, dword [esp + 0x74]
pxor xmm1, xmm0
movd dword [ebx + 0x10], xmm1
xor byte [ebx + 0x14], al
mov eax, 6
mov ecx, 0x15
xor byte [ebx + ecx], dl
mov edi, dword [esp + 0x70]
lea ecx, [ebx + 0x11]
mov dword [esp + 0x1c], ecx
lea ecx, [ebx + 0x20]
mov dword [esp + 0x18], ecx
mov ecx, 1
jmp 0x5e9606
push dword [esp + 0x64]
push ebp
push ebp
mov esi, edx
call dword [esp + 0xc]
mov edx, esi
add esp, 0xc
mov esi, dword [esp + 0x40]
lea ecx, [esi + 1]
xor eax, eax
test bl, bl
mov ebx, dword [esp + 4]
je 0x5e974c
mov esi, ecx
test edx, edx
je 0x5e973f
mov dword [esp + 0x40], esi
mov dword [esp + 8], edx
dec edx
mov ecx, 0xf
sub ecx, eax
cmp edx, ecx
mov ebx, ecx
cmovb ebx, edx
cmp ebx, 0xf
jb 0x5e9646
lea esi, [eax + ebp]
cmp edx, ecx
cmovb ecx, edx
lea edx, [edi + ecx]
inc edx
cmp esi, edx
jae 0x5e9680
add ecx, eax
add ecx, dword [esp + 0x1c]
cmp edi, ecx
jae 0x5e9680
mov edx, dword [esp + 8]
mov ecx, edx
nop dword [eax]
movzx edx, byte [edi]
xor byte [ebp + eax], dl
inc edi
lea edx, [ecx - 1]
cmp ecx, 1
setne bl
cmp eax, 0xe
ja 0x5e95e0
inc eax
cmp ecx, 1
mov ecx, edx
jne 0x5e9650
jmp 0x5e95e0
lea ecx, [ebx + 1]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 8]
add ecx, 0xfffffff1
mov dword [esp + 0x30], ecx
add ebx, 0xfffffff1
mov edx, ebx
shr edx, 4
inc edx
xor ecx, ecx
cmp ebx, 0x10
jae 0x5e96a4
jmp 0x5e96f8
mov esi, edx
and esi, 0xfffffffe
mov ecx, dword [esp + 0x18]
lea ebx, [ecx + eax]
xor ecx, ecx
nop word cs:[eax + eax]
movups xmm0, xmmword [edi + ecx]
movups xmm1, xmmword [ebx + ecx - 0x10]
xorps xmm1, xmm0
movdqu xmm0, xmmword [ebx + ecx]
movups xmmword [ebx + ecx - 0x10], xmm1
movdqu xmm1, xmmword [edi + ecx + 0x10]
pxor xmm1, xmm0
movdqu xmmword [ebx + ecx], xmm1
add ecx, 0x20
add esi, 0xfffffffe
jne 0x5e96c0
mov ebx, dword [esp + 8]
sub ebx, ecx
inc ebx
sub dword [esp + 0x30], ecx
mov esi, dword [esp + 0x20]
and esi, 0xfffffff0
test dl, 1
je 0x5e9720
lea edx, [eax + ecx]
movdqu xmm0, xmmword [edi + ecx]
movdqu xmm1, xmmword [ebp + edx]
pxor xmm1, xmm0
movdqu xmmword [ebp + edx], xmm1
mov ebx, dword [esp + 0x30]
mov edx, dword [esp + 8]
sub edx, esi
add edi, esi
cmp ebx, 1
setne bl
cmp dword [esp + 0x20], esi
je 0x5e95e0
add eax, esi
jmp 0x5e964a
push dword [esp + 0x64]
push ebp
push ebp
call dword [esp + 0xc]
add esp, 0xc
mov eax, 0xfffffffe
sub eax, esi
xor edi, edi
mov esi, dword [esp + 0x78]
cmp esi, 0xfffffff0
ja 0x5e9773
add esi, 0xf
shr esi, 3
or esi, 1
cmp eax, esi
jb 0x5e9773
and byte [ebx], 7
mov edi, 1
mov eax, edi
add esp, 0x50
pop esi
pop edi
pop ebx
pop ebp
ret