Function at 0x1008a600
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x24
push ebx
push ebp
mov ebp, ecx
mov ebx, edx
push esi
mov esi, dword [esp + 0x38]
xor edx, edx
mov ecx, esi
mov dword [esp + 0x1c], ebp
shr ecx, 2
mov dword [esp + 0xc], ebx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x10], ecx
push edi
mov edi, dword [esp + 0x38]
mov dword [esp + 0x18], edi
test ecx, ecx
je 0x1008a7a4
cmp ecx, 2
jb 0x1008a76d
lea eax, [edi - 4]
lea eax, [eax + ecx*4]
cmp ebp, eax
ja 0x1008a657
lea eax, [ebp - 4]
lea eax, [eax + ecx*4]
cmp eax, edi
jae 0x1008a76d
lea eax, [ebx - 4]
lea eax, [eax + ecx*4]
cmp ebp, eax
ja 0x1008a66f
lea eax, [ebp - 4]
lea eax, [eax + ecx*4]
cmp eax, ebx
jae 0x1008a76d
cmp ecx, 0x10
jb 0x1008a718
mov esi, ecx
mov eax, ecx
and esi, 0xf
mov ecx, ebx
sub eax, esi
mov dword [esp + 0x30], esi
mov esi, ebp
mov dword [esp + 0x2c], eax
sub esi, edi
lea eax, [edi + 0x10]
mov dword [esp + 0x24], esi
sub ecx, edi
mov edi, dword [esp + 0x24]
mov esi, ebx
sub esi, ebp
mov dword [esp + 0x28], esi
lea esi, [ebp + 0x20]
nop word [eax + eax]
movups xmm0, xmmword [eax - 0x10]
mov ebp, dword [esp + 0x28]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ebx + edx*4]
lea esi, [esi + 0x40]
xorps xmm1, xmm0
movups xmmword [esi - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [ecx + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [edi + eax - 0x40], xmm1
movups xmm1, xmmword [esi + ebp - 0x40]
mov ebp, dword [esp + 0x20]
movups xmm0, xmmword [eax - 0x30]
xorps xmm1, xmm0
movups xmmword [esi - 0x40], xmm1
movups xmm1, xmmword [ebx + edx*4 + 0x30]
add edx, 0x10
movups xmm0, xmmword [eax - 0x20]
xorps xmm1, xmm0
movups xmmword [esi - 0x30], xmm1
cmp edx, dword [esp + 0x2c]
jb 0x1008a6b0
cmp dword [esp + 0x30], 2
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x38]
jb 0x1008a763
jmp 0x1008a71c
mov ecx, ebx
sub ecx, edi
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x3c]
and eax, 0xfffffffe
sub ebp, edi
mov dword [esp + 0x2c], eax
lea eax, [edi + edx*4]
mov dword [esp + 0x30], ebp
nop dword [eax]
nop dword [eax + eax]
movq xmm1, qword [eax + ecx]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 2
xorps xmm1, xmm0
movq qword [eax + ebp - 8], xmm1
cmp edx, dword [esp + 0x2c]
jb 0x1008a740
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
cmp edx, eax
jae 0x1008a7a4
jmp 0x1008a76f
mov eax, ecx
sub ebp, edi
lea ecx, [edi + edx*4]
mov dword [esp + 0x30], ebp
mov esi, ebx
sub esi, edi
mov ebp, eax
mov edi, dword [esp + 0x30]
sub ebp, edx
mov edx, eax
mov eax, dword [ecx + esi]
lea ecx, [ecx + 4]
xor eax, dword [ecx - 4]
mov dword [ecx + edi - 4], eax
sub ebp, 1
jne 0x1008a786
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x20]
shl edx, 2
sub esi, edx
mov dword [esp + 0x3c], esi
je 0x1008a916
add edi, edx
add ebp, edx
add ebx, edx
mov dword [esp + 0x38], edi
xor ecx, ecx
test esi, esi
je 0x1008a916
cmp esi, 8
jb 0x1008a8e3
lea eax, [edi - 1]
lea edx, [ebp - 1]
add eax, esi
add edx, esi
cmp ebp, eax
ja 0x1008a7e6
cmp edx, edi
jae 0x1008a8e3
lea eax, [ebx - 1]
add eax, esi
cmp ebp, eax
ja 0x1008a7f7
cmp edx, ebx
jae 0x1008a8e3
cmp esi, 0x40
jb 0x1008a8a8
mov edx, esi
mov eax, esi
and edx, 0x3f
sub eax, edx
mov dword [esp + 0x20], edx
lea edx, [ebp + 0x20]
mov dword [esp + 0x24], eax
mov ebp, dword [esp + 0x10]
lea eax, [edi + 0x10]
mov esi, ebp
sub esi, dword [esp + 0x18]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x1c]
sub esi, dword [esp + 0x18]
sub ebp, dword [esp + 0x1c]
mov edi, esi
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x30]
nop dword [eax + eax]
movups xmm0, xmmword [eax - 0x10]
mov esi, dword [esp + 0x28]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx + ebx]
lea edx, [edx + 0x40]
xorps xmm1, xmm0
movups xmmword [edx - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [eax + ebp - 0x40]
xorps xmm1, xmm0
movups xmmword [eax + edi - 0x40], xmm1
movups xmm1, xmmword [edx + esi - 0x40]
mov esi, dword [esp + 0x3c]
movups xmm0, xmmword [eax - 0x30]
xorps xmm1, xmm0
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [ebx + ecx + 0x30]
add ecx, 0x40
movups xmm0, xmmword [eax - 0x20]
xorps xmm1, xmm0
movups xmmword [edx - 0x30], xmm1
cmp ecx, dword [esp + 0x24]
jb 0x1008a840
cmp dword [esp + 0x20], 8
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x10]
jb 0x1008a8df
jmp 0x1008a8ac
mov ebp, dword [esp + 0x10]
mov ebx, ebp
lea eax, [ecx + edi]
mov ebp, dword [esp + 0x1c]
mov edx, esi
sub ebx, dword [esp + 0x18]
and edx, 0xfffffff8
sub ebp, dword [esp + 0x18]
movq xmm1, qword [ebx + eax]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add ecx, 8
xorps xmm1, xmm0
movq qword [eax + ebp - 8], xmm1
cmp ecx, edx
jb 0x1008a8c2
cmp ecx, esi
jae 0x1008a916
mov eax, dword [esp + 0x10]
lea edx, [ecx + edi]
sub eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
sub ebx, dword [esp + 0x18]
sub esi, ecx
mov dword [esp + 0x10], eax
nop dword [eax]
mov al, byte [eax + edx]
lea edx, [edx + 1]
xor al, byte [edx - 1]
mov byte [ebx + edx - 1], al
mov eax, dword [esp + 0x10]
sub esi, 1
jne 0x1008a900
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret