Function at 0x5e8ad0
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 0x5e8efa
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 0x5e8b69
cmp ebx, 0x10
jb 0x5e8bd9
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 0x5e8b10
lea esi, [edi + 0x10]
mov eax, dword [esp + 0x50]
cmp edi, eax
je 0x5e8e82
movups xmm0, xmmword [edi]
movups xmmword [eax], xmm0
mov edi, eax
test ebx, ebx
jne 0x5e8bd9
jmp 0x5e8efa
cmp ebx, 0x10
jb 0x5e8bd9
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 0x5e8b70
test ebx, ebx
je 0x5e8efa
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 0x5e8c2b
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 0x5e8d3c
cmp ebx, edx
jne 0x5e8d60
cmp ecx, 0xe
jbe 0x5e8ddc
jmp 0x5e8efa
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 0x5e8bfc
mov dh, byte [esp + 0x14]
and byte [esp + 0x15], dh
mov esi, dword [esp]
jne 0x5e8bff
mov dh, byte [esp + 0x12]
and byte [esp + 0x13], dh
jne 0x5e8bff
mov dh, byte [esp + 0x11]
and byte [esp + 0xc], dh
jne 0x5e8bff
and byte [esp + 8], dl
jne 0x5e8bff
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 0x5e8d00
mov edx, ecx
sub edx, ebx
jne 0x5e8bff
dec ecx
lea esi, [edx + 0x10]
cmp ecx, 0xe
jbe 0x5e8ddc
jmp 0x5e8efa
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 0x5e8c1d
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 0x5e8d90
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 0x5e8efa
mov dword [esp], esi
mov edx, 0x10
sub edx, ebx
cmp edx, 8
jb 0x5e8e96
mov eax, edi
mov ecx, dword [esp + 4]
sub eax, ecx
cmp eax, 0x20
jb 0x5e8e8e
xor ebp, ebp
cmp edx, 0x20
jb 0x5e8e48
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 0x5e8e20
cmp edx, ebp
je 0x5e8efa
mov edi, eax
test dl, 0x18
je 0x5e8e94
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 0x5e8e60
cmp edx, ecx
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 4]
mov eax, dword [esp]
jne 0x5e8e9f
jmp 0x5e8efa
mov edi, eax
test ebx, ebx
jne 0x5e8bd9
jmp 0x5e8efa
mov ebp, ecx
mov esi, ebx
jmp 0x5e8e9c
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 0x5e8ebc
mov ecx, esi
nop
movzx eax, byte [ebp + ecx]
mov byte [edx + ecx], al
inc ecx
dec edi
jne 0x5e8eb0
mov edi, dword [esp]
sub esi, edi
cmp esi, 0xfffffffc
ja 0x5e8efa
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 0x5e8ed0
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret