Function at 0x1009e6f0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x28
push ebx
mov ebx, dword [esp + 0x30]
push ebp
mov ebp, edx
mov dword [esp + 0xc], ebx
push esi
mov esi, dword [esp + 0x3c]
mov edx, ecx
mov ecx, esi
mov dword [esp + 0x20], ebp
shr ecx, 2
push edi
xor edi, edi
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x1009e89e
cmp ecx, 2
jb 0x1009e85c
lea eax, [ebx - 4]
lea eax, [eax + ecx*4]
cmp edx, eax
ja 0x1009e747
lea eax, [edx - 4]
lea eax, [eax + ecx*4]
cmp eax, ebx
jae 0x1009e85c
lea eax, [ebp - 4]
lea eax, [eax + ecx*4]
cmp edx, eax
ja 0x1009e75f
lea eax, [edx - 4]
lea eax, [eax + ecx*4]
cmp eax, ebp
jae 0x1009e85c
cmp ecx, 0x10
jb 0x1009e80d
mov esi, ecx
mov eax, ecx
and esi, 0xf
mov ecx, edx
sub eax, esi
mov dword [esp + 0x34], esi
sub ecx, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], ecx
lea esi, [ebx + 0x10]
mov eax, ebp
mov ecx, ebp
sub eax, ebx
sub ecx, edx
mov dword [esp + 0x2c], ecx
lea ecx, [edx + 0x20]
mov dword [esp + 0x1c], eax
nop word [eax + eax]
movups xmm0, xmmword [esi - 0x10]
mov ebx, dword [esp + 0x28]
lea esi, [esi + 0x40]
movups xmm1, xmmword [ebp + edi*4]
lea ecx, [ecx + 0x40]
xorps xmm1, xmm0
movups xmmword [ecx - 0x60], xmm1
movups xmm0, xmmword [esi - 0x40]
movups xmm1, xmmword [eax + esi - 0x40]
xorps xmm1, xmm0
movups xmmword [ebx + esi - 0x40], xmm1
mov ebx, dword [esp + 0x2c]
movups xmm0, xmmword [esi - 0x30]
movups xmm1, xmmword [ebx + ecx - 0x40]
mov ebx, dword [esp + 0x3c]
xorps xmm1, xmm0
movups xmmword [ecx - 0x40], xmm1
movups xmm1, xmmword [ebp + edi*4 + 0x30]
add edi, 0x10
movups xmm0, xmmword [esi - 0x20]
xorps xmm1, xmm0
movups xmmword [ecx - 0x30], xmm1
cmp edi, dword [esp + 0x30]
jb 0x1009e7a0
cmp dword [esp + 0x34], 2
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x20]
jb 0x1009e858
jmp 0x1009e815
mov eax, ebp
sub eax, ebx
mov dword [esp + 0x1c], eax
mov eax, ecx
mov esi, edx
and eax, 0xfffffffe
sub esi, ebx
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x30], eax
lea eax, [ebx + edi*4]
movq xmm1, qword [eax + esi]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edi, 2
xorps xmm1, xmm0
movq qword [eax + ebp - 8], xmm1
cmp edi, dword [esp + 0x30]
jb 0x1009e831
mov esi, dword [esp + 0x40]
mov ebp, dword [esp + 0x24]
cmp edi, ecx
jae 0x1009e89e
mov esi, dword [esp + 0x20]
lea ecx, [ebx + edi*4]
sub ebp, ebx
mov eax, edx
sub eax, ebx
mov dword [esp + 0x34], ebp
sub esi, edi
mov dword [esp + 0x30], eax
mov edi, dword [esp + 0x20]
mov ebx, ebp
mov ebp, eax
nop dword [eax + eax]
mov eax, dword [ecx + ebx]
lea ecx, [ecx + 4]
xor eax, dword [ecx - 4]
mov dword [ecx + ebp - 4], eax
sub esi, 1
jne 0x1009e880
mov esi, dword [esp + 0x40]
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x24]
shl edi, 2
sub esi, edi
mov dword [esp + 0x40], esi
je 0x1009ea16
add ebx, edi
add edx, edi
add ebp, edi
mov dword [esp + 0x3c], ebx
xor ecx, ecx
test esi, esi
je 0x1009ea16
cmp esi, 8
jb 0x1009e9e1
lea eax, [ebx - 1]
lea edi, [edx - 1]
add eax, esi
add edi, esi
cmp edx, eax
ja 0x1009e8e0
cmp edi, ebx
jae 0x1009e9e1
lea eax, [ebp - 1]
add eax, esi
cmp edx, eax
ja 0x1009e8f1
cmp edi, ebp
jae 0x1009e9e1
cmp esi, 0x40
jb 0x1009e99d
mov edi, esi
mov eax, esi
and edi, 0x3f
add edx, 0x20
sub eax, edi
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x10]
mov esi, edi
sub esi, dword [esp + 0x14]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x18]
sub esi, dword [esp + 0x14]
sub edi, dword [esp + 0x18]
mov dword [esp + 0x28], eax
lea eax, [ebx + 0x10]
mov dword [esp + 0x2c], edi
mov ebx, esi
mov edi, dword [esp + 0x34]
movups xmm0, xmmword [eax - 0x10]
mov esi, dword [esp + 0x2c]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx + ebp]
lea edx, [edx + 0x40]
xorps xmm1, xmm0
movups xmmword [edx - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [eax + edi - 0x40]
xorps xmm1, xmm0
movups xmmword [eax + ebx - 0x40], xmm1
movups xmm1, xmmword [edx + esi - 0x40]
mov esi, dword [esp + 0x40]
movups xmm0, xmmword [eax - 0x30]
xorps xmm1, xmm0
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [ecx + ebp + 0x30]
add ecx, 0x40
movups xmm0, xmmword [eax - 0x20]
xorps xmm1, xmm0
movups xmmword [edx - 0x30], xmm1
cmp ecx, dword [esp + 0x28]
jb 0x1009e935
cmp dword [esp + 0x24], 8
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x10]
jb 0x1009e9dd
jmp 0x1009e9a1
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x18]
lea eax, [ecx + ebx]
sub edi, dword [esp + 0x14]
mov edx, esi
and edx, 0xfffffff8
sub ebp, dword [esp + 0x14]
nop word [eax + eax]
movq xmm1, qword [eax + edi]
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 0x1009e9c0
cmp ecx, esi
jae 0x1009ea16
mov eax, dword [esp + 0x10]
lea edx, [ecx + ebx]
sub eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
sub ebx, dword [esp + 0x14]
sub esi, ecx
mov dword [esp + 0x10], eax
nop word [eax + eax]
mov al, byte [edx + eax]
lea edx, [edx + 1]
xor al, byte [edx - 1]
mov byte [ebx + edx - 1], al
mov eax, dword [esp + 0x10]
sub esi, 1
jne 0x1009ea00
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret