Function at 0x102c8200
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ebp
sub esp, 0xc
lea eax, [0x102c81a0]
mov ecx, dword [esp + 0x2c]
cmp ecx, 0
jl 0x102c821b
movaps xmm7, xmmword [eax]
jmp 0x102c821f
movaps xmm7, xmmword [eax + 0x10]
mov ebx, dword [esp + 0x28]
test ebx, 1
je 0x102c8340
lea ecx, [ebx + 1]
mov dword [esp], ecx
mov esi, dword [esp + 0x20]
shl ebx, 1
lea edi, [esi + ebx*4 - 8]
mov edx, dword [esp + 0x34]
movsd xmm6, qword [esi]
movaps xmm4, xmm6
cmp ebx, 2
jle 0x102c827c
movsd xmm0, qword [esi + 8]
movlhps xmm0, xmm0
movsd xmm1, qword [edi]
movlhps xmm1, xmm1
xorps xmm1, xmmword [eax + 0x20]
addps xmm0, xmm1
movaps xmmword [edx], xmm0
andps xmm0, xmmword [eax + 0x40]
addps xmm4, xmm0
add esi, 8
sub edi, 8
add edx, 0x10
cmp esi, edi
jne 0x102c824f
mov esi, dword [esp + 0x24]
movlps qword [esi], xmm4
mov dword [esp + 4], esi
lea edi, [esi + ebx*4]
mov dword [esp + 8], edi
cmp ebx, 2
jle 0x102c8484
mov edi, dword [esp + 0x30]
lea ebp, [edi + ebx*4]
mov ecx, 2
movaps xmm4, xmm6
xorps xmm3, xmm3
mov esi, dword [esp + 0x34]
mov eax, dword [esp]
mov edx, ecx
sub eax, 4
jle 0x102c82ed
movsd xmm0, qword [edi + edx*4]
shufps xmm0, xmm0, 0x50
mulps xmm0, xmmword [esi]
add edx, ecx
mov edx, dword [ebp + edx*2]
addps xmm4, xmm0
movsd xmm1, qword [edi + edx*4]
shufps xmm1, xmm1, 0x50
mulps xmm1, xmmword [esi + 0x10]
add edx, ecx
mov edx, dword [ebp + edx*2]
addps xmm3, xmm1
add esi, 0x20
sub eax, 4
jg 0x102c82b7
addps xmm4, xmm3
add eax, 2
jle 0x102c8301
movsd xmm0, qword [edi + edx*4]
shufps xmm0, xmm0, 0x50
mulps xmm0, xmmword [esi]
addps xmm4, xmm0
movhlps xmm0, xmm4
movlhps xmm4, xmm4
shufps xmm0, xmm0, 0x11
xorps xmm0, xmm7
addps xmm4, xmm0
mov esi, dword [esp + 4]
movlps qword [esi + 8], xmm4
add esi, 8
mov dword [esp + 4], esi
mov esi, dword [esp + 8]
movhps qword [esi - 8], xmm4
sub esi, 8
mov dword [esp + 8], esi
add ecx, 2
cmp ecx, dword [esp]
jl 0x102c82a3
jmp 0x102c8484
mov ecx, ebx
mov dword [esp], ecx
mov esi, dword [esp + 0x20]
shl ebx, 1
lea edi, [esi + ebx*4 - 8]
mov edx, dword [esp + 0x34]
movsd xmm6, qword [esi]
movsd xmm5, qword [esi + ecx*4]
movlhps xmm4, xmm6
movhlps xmm4, xmm4
addps xmm4, xmm5
cmp ebx, 4
jle 0x102c839a
movsd xmm0, qword [esi + 8]
movlhps xmm0, xmm0
movsd xmm1, qword [edi]
movlhps xmm1, xmm1
xorps xmm1, xmmword [eax + 0x20]
addps xmm0, xmm1
movaps xmmword [edx], xmm0
movlhps xmm0, xmm0
xorps xmm4, xmmword [eax + 0x20]
addps xmm4, xmm0
add esi, 8
sub edi, 8
add edx, 0x10
cmp esi, edi
jne 0x102c836a
mov esi, dword [esp + 0x24]
movlps qword [esi], xmm4
mov dword [esp + 4], esi
lea edi, [esi + ebx*4]
mov dword [esp + 8], edi
movhlps xmm4, xmm4
subps xmm4, xmm5
mov ecx, dword [esp]
test ecx, 2
jne 0x102c83c1
xorps xmm4, xmmword [eax + 0x30]
movlps qword [esi + ecx*4], xmm4
cmp ebx, 4
jle 0x102c8484
movaps xmm4, xmm6
subps xmm6, xmm5
addps xmm5, xmm4
mov edi, dword [esp + 0x30]
lea ebp, [edi + ebx*4]
mov ecx, 2
movaps xmm4, xmm6
xorps xmm3, xmm3
mov esi, dword [esp + 0x34]
mov eax, dword [esp]
mov edx, ecx
sub eax, 4
jle 0x102c842d
movsd xmm0, qword [edi + edx*4]
shufps xmm0, xmm0, 0x50
mulps xmm0, xmmword [esi]
add edx, ecx
mov edx, dword [ebp + edx*2]
addps xmm4, xmm0
movsd xmm1, qword [edi + edx*4]
shufps xmm1, xmm1, 0x50
mulps xmm1, xmmword [esi + 0x10]
add edx, ecx
mov edx, dword [ebp + edx*2]
addps xmm3, xmm1
add esi, 0x20
sub eax, 4
jg 0x102c83f7
addps xmm4, xmm3
add eax, 2
jle 0x102c8441
movsd xmm0, qword [edi + edx*4]
shufps xmm0, xmm0, 0x50
mulps xmm0, xmmword [esi]
addps xmm4, xmm0
movhlps xmm0, xmm4
movlhps xmm4, xmm4
shufps xmm0, xmm0, 0x11
xorps xmm0, xmm7
addps xmm4, xmm0
mov esi, dword [esp + 4]
movlps qword [esi + 8], xmm4
add esi, 8
mov dword [esp + 4], esi
mov esi, dword [esp + 8]
movhps qword [esi - 8], xmm4
sub esi, 8
mov dword [esp + 8], esi
movaps xmm4, xmm6
movaps xmm6, xmm5
movaps xmm5, xmm4
add ecx, 2
cmp ecx, dword [esp]
jl 0x102c83e3
add esp, 0xc
pop ebp
pop edi
pop esi
pop ebx
ret