Function at 0x5ea0e0
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 0x5ea50a
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 0x5ea179
cmp ebx, 0x10
jb 0x5ea1e9
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 0x5ea120
lea esi, [edi + 0x10]
mov eax, dword [esp + 0x50]
cmp edi, eax
je 0x5ea492
movups xmm0, xmmword [edi]
movups xmmword [eax], xmm0
mov edi, eax
test ebx, ebx
jne 0x5ea1e9
jmp 0x5ea50a
cmp ebx, 0x10
jb 0x5ea1e9
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 0x5ea180
test ebx, ebx
je 0x5ea50a
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 0x5ea23b
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 0x5ea34c
cmp ebx, edx
jne 0x5ea370
cmp ecx, 0xe
jbe 0x5ea3ec
jmp 0x5ea50a
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 0x5ea20c
mov dh, byte [esp + 0x14]
and byte [esp + 0x15], dh
mov esi, dword [esp]
jne 0x5ea20f
mov dh, byte [esp + 0x12]
and byte [esp + 0x13], dh
jne 0x5ea20f
mov dh, byte [esp + 0x11]
and byte [esp + 0xc], dh
jne 0x5ea20f
and byte [esp + 8], dl
jne 0x5ea20f
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 0x5ea310
mov edx, ecx
sub edx, ebx
jne 0x5ea20f
dec ecx
lea esi, [edx + 0x10]
cmp ecx, 0xe
jbe 0x5ea3ec
jmp 0x5ea50a
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 0x5ea22d
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 0x5ea3a0
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 0x5ea50a
mov dword [esp], esi
mov edx, 0x10
sub edx, ebx
cmp edx, 8
jb 0x5ea4a6
mov eax, edi
mov ecx, dword [esp + 4]
sub eax, ecx
cmp eax, 0x20
jb 0x5ea49e
xor ebp, ebp
cmp edx, 0x20
jb 0x5ea458
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 0x5ea430
cmp edx, ebp
je 0x5ea50a
mov edi, eax
test dl, 0x18
je 0x5ea4a4
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 0x5ea470
cmp edx, ecx
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 4]
mov eax, dword [esp]
jne 0x5ea4af
jmp 0x5ea50a
mov edi, eax
test ebx, ebx
jne 0x5ea1e9
jmp 0x5ea50a
mov ebp, ecx
mov esi, ebx
jmp 0x5ea4ac
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 0x5ea4cc
mov ecx, esi
nop
movzx eax, byte [ebp + ecx]
mov byte [edx + ecx], al
inc ecx
dec edi
jne 0x5ea4c0
mov edi, dword [esp]
sub esi, edi
cmp esi, 0xfffffffc
ja 0x5ea50a
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 0x5ea4e0
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret