Function at 0x5e8520
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov ebx, dword [esp + 0x48]
test ebx, ebx
je 0x5e894a
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
cmp esi, ebp
je 0x5e85b9
cmp ebx, 0x10
jb 0x5e8629
add esi, 0xfffffff0
mov eax, esi
mov esi, edi
mov edi, eax
nop dword [eax]
add edi, 0x10
push edx
push ebp
push edi
call dword [esp + 0x60]
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x60]
add esp, 0xc
mov eax, dword [esi]
xor dword [ebp], eax
mov eax, dword [esi + 4]
xor dword [ebp + 4], eax
mov eax, dword [esi + 8]
xor dword [ebp + 8], eax
mov eax, dword [esi + 0xc]
xor dword [ebp + 0xc], eax
add ebx, 0xfffffff0
add ebp, 0x10
mov esi, edi
cmp ebx, 0xf
ja 0x5e8560
lea esi, [edi + 0x10]
mov eax, dword [esp + 0x50]
cmp edi, eax
je 0x5e88d2
movups xmm0, xmmword [edi]
movups xmmword [eax], xmm0
mov edi, eax
test ebx, ebx
jne 0x5e8629
jmp 0x5e894a
cmp ebx, 0x10
jb 0x5e8629
nop
push edx
lea eax, [esp + 0x1c]
push eax
push esi
call dword [esp + 0x60]
mov edx, dword [esp + 0x58]
add esp, 0xc
mov eax, dword [esi]
mov ecx, dword [edi]
xor ecx, dword [esp + 0x18]
mov dword [ebp], ecx
mov dword [edi], eax
mov eax, dword [esi + 4]
mov ecx, dword [edi + 4]
xor ecx, dword [esp + 0x1c]
mov dword [ebp + 4], ecx
mov dword [edi + 4], eax
mov eax, dword [esi + 8]
mov ecx, dword [edi + 8]
xor ecx, dword [esp + 0x20]
mov dword [ebp + 8], ecx
mov dword [edi + 8], eax
mov eax, dword [esi + 0xc]
mov ecx, dword [edi + 0xc]
xor ecx, dword [esp + 0x24]
mov dword [ebp + 0xc], ecx
mov ecx, dword [esp + 0x54]
mov dword [edi + 0xc], eax
add ebx, 0xfffffff0
add esi, 0x10
add ebp, 0x10
cmp ebx, 0xf
ja 0x5e85c0
test ebx, ebx
je 0x5e894a
lea eax, [esp + 0x18]
push edx
push eax
push esi
call ecx
add esp, 0xc
mov eax, 0x11
sub eax, ebx
mov dword [esp], eax
xor ecx, ecx
cmp ebx, 0x1f
mov dword [esp + 4], esi
ja 0x5e867b
mov eax, esi
mov esi, dword [esp]
mov edx, ecx
or edx, 1
mov dword [esp + 0xc], esi
mov dword [esp + 8], ecx
test bl, 1
jne 0x5e878c
cmp ebx, edx
jne 0x5e87b0
cmp ecx, 0xe
jbe 0x5e882c
jmp 0x5e894a
lea edx, [ebx + ebp]
lea eax, [edi + ebx]
mov dword [esp + 0x28], eax
mov esi, dword [esp + 4]
add esi, ebx
mov dword [esp + 0xc], esi
lea esi, [esp + ebx]
add esi, 0x18
mov dword [esp + 8], esi
cmp ebp, eax
setb byte [esp + 0x17]
cmp edx, edi
seta byte [esp + 0x16]
cmp ebp, dword [esp + 0xc]
setb byte [esp + 0x15]
cmp dword [esp + 4], edx
setb byte [esp + 0x14]
cmp ebp, dword [esp + 8]
setb byte [esp + 0x13]
lea esi, [esp + 0x18]
cmp esi, edx
setb byte [esp + 0x12]
cmp dword [esp + 0xc], edi
mov eax, dword [esp + 4]
seta byte [esp + 0xc]
mov edx, dword [esp + 0x28]
cmp eax, edx
setb byte [esp + 0x11]
cmp dword [esp + 8], edi
seta byte [esp + 8]
cmp esi, edx
setb dl
mov dh, byte [esp + 0x16]
test byte [esp + 0x17], dh
jne 0x5e864c
mov dh, byte [esp + 0x14]
and byte [esp + 0x15], dh
mov esi, dword [esp]
jne 0x5e864f
mov dh, byte [esp + 0x12]
and byte [esp + 0x13], dh
jne 0x5e864f
mov dh, byte [esp + 0x11]
and byte [esp + 0xc], dh
jne 0x5e864f
and byte [esp + 8], dl
jne 0x5e864f
mov ecx, ebx
and ecx, 0xfffffff0
add esi, ecx
xor edx, edx
nop word cs:[eax + eax]
movups xmm0, xmmword [eax + edx]
movups xmm1, xmmword [esp + edx + 0x18]
movups xmm2, xmmword [edi + edx]
xorps xmm2, xmm1
movups xmmword [ebp + edx], xmm2
movups xmmword [edi + edx], xmm0
add edx, 0x10
cmp ecx, edx
jne 0x5e8750
mov edx, ecx
sub edx, ebx
jne 0x5e864f
dec ecx
lea esi, [edx + 0x10]
cmp ecx, 0xe
jbe 0x5e882c
jmp 0x5e894a
mov ah, byte [eax + ecx]
mov al, byte [edi + ecx]
xor al, byte [esp + ecx + 0x18]
mov byte [ebp + ecx], al
mov byte [edi + ecx], ah
lea eax, [esi + 1]
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
cmp ebx, edx
je 0x5e866d
mov eax, ebx
mov edx, dword [esp + 8]
sub eax, edx
mov dword [esp], eax
lea ecx, [edx + ebp]
inc ecx
lea ebp, [edi + edx + 1]
lea edi, [esp + edx]
add edi, 0x19
mov eax, dword [esp + 4]
lea esi, [eax + edx]
inc esi
xor edx, edx
nop word cs:[eax + eax]
movzx eax, byte [esi + edx - 1]
mov ah, byte [ebp + edx - 1]
xor ah, byte [edi + edx - 1]
mov byte [ecx + edx - 1], ah
mov byte [ebp + edx - 1], al
movzx eax, byte [esi + edx]
mov ah, byte [ebp + edx]
xor ah, byte [edi + edx]
mov byte [ecx + edx], ah
mov byte [ebp + edx], al
add edx, 2
cmp dword [esp], edx
jne 0x5e87e0
mov eax, dword [esp + 0xc]
lea esi, [eax + edx]
dec esi
mov eax, dword [esp + 8]
lea ecx, [eax + edx]
dec ecx
mov edi, dword [esp + 0x50]
cmp ecx, 0xe
ja 0x5e894a
mov dword [esp], esi
mov edx, 0x10
sub edx, ebx
cmp edx, 8
jb 0x5e88e6
mov eax, edi
mov ecx, dword [esp + 4]
sub eax, ecx
cmp eax, 0x20
jb 0x5e88de
xor ebp, ebp
cmp edx, 0x20
jb 0x5e8898
mov ebp, edx
and ebp, 0xffffffe0
add ecx, ebx
add ecx, 0x10
mov eax, edi
lea esi, [edi + ebx]
add esi, 0x10
xor edi, edi
nop dword [eax + eax]
movups xmm0, xmmword [ecx + edi - 0x10]
movups xmm1, xmmword [ecx + edi]
movups xmmword [esi + edi - 0x10], xmm0
movups xmmword [esi + edi], xmm1
add edi, 0x20
cmp ebp, edi
jne 0x5e8870
cmp edx, ebp
je 0x5e894a
mov edi, eax
test dl, 0x18
je 0x5e88e4
mov ecx, edx
and ecx, 0xfffffff8
lea esi, [ebx + ecx]
mov eax, edi
mov edi, dword [esp + 4]
add edi, ebx
add ebx, eax
nop word [eax + eax]
movsd xmm0, qword [edi + ebp]
movsd qword [ebx + ebp], xmm0
add ebp, 8
cmp ecx, ebp
jne 0x5e88b0
cmp edx, ecx
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 4]
mov eax, dword [esp]
jne 0x5e88ef
jmp 0x5e894a
mov edi, eax
test ebx, ebx
jne 0x5e8629
jmp 0x5e894a
mov ebp, ecx
mov esi, ebx
jmp 0x5e88ec
add ebx, ebp
mov esi, ebx
mov ebp, dword [esp + 4]
mov eax, dword [esp]
mov edx, edi
mov edi, eax
sub edi, esi
mov ecx, esi
and edi, 3
je 0x5e890c
mov ecx, esi
nop
movzx eax, byte [ebp + ecx]
mov byte [edx + ecx], al
inc ecx
dec edi
jne 0x5e8900
mov edi, dword [esp]
sub esi, edi
cmp esi, 0xfffffffc
ja 0x5e894a
nop word cs:[eax + eax]
movzx eax, byte [ebp + ecx]
mov byte [edx + ecx], al
movzx eax, byte [ebp + ecx + 1]
mov byte [edx + ecx + 1], al
movzx eax, byte [ebp + ecx + 2]
mov byte [edx + ecx + 2], al
movzx eax, byte [ebp + ecx + 3]
mov byte [edx + ecx + 3], al
add ecx, 4
cmp edi, ecx
jne 0x5e8920
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret