Function at 0x102fa380
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ebp
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
lea ebx, [0x102f7730]
test ecx, 3
jne 0x102fa790
shl ecx, 3
test esi, 0xf
jne 0x102fa58f
test edi, 0xf
jne 0x102fa58f
lea eax, [ecx + esi]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
cmp edx, 0
jle 0x102fa4ab
movaps xmm0, xmmword [ecx + esi]
movaps xmm4, xmm0
movaps xmm1, xmmword [eax]
mulps xmm0, xmm1
movaps xmm6, xmmword [ecx + esi + 0x10]
mulps xmm1, xmm6
movaps xmm7, xmmword [eax + 0x10]
mulps xmm6, xmm7
mulps xmm7, xmm4
addps xmm0, xmm6
subps xmm1, xmm7
movaps xmm2, xmmword [esi + ecx*2]
movaps xmm4, xmm2
movaps xmm3, xmmword [eax + 0x20]
mulps xmm2, xmm3
movaps xmm6, xmmword [esi + ecx*2 + 0x10]
mulps xmm3, xmm6
movaps xmm7, xmmword [eax + 0x30]
mulps xmm6, xmm7
mulps xmm7, xmm4
addps xmm2, xmm6
subps xmm3, xmm7
add eax, 0x40
movaps xmm4, xmm0
addps xmm0, xmm2
subps xmm4, xmm2
movaps xmm5, xmm1
addps xmm1, xmm3
subps xmm5, xmm3
movaps xmm2, xmmword [esi]
movaps xmm6, xmm0
mulps xmm0, xmmword [ebx + 0x10]
addps xmm6, xmm2
addps xmm2, xmm0
movaps xmmword [edi], xmm6
movaps xmm3, xmmword [esi + 0x10]
movaps xmm7, xmm1
mulps xmm1, xmmword [ebx + 0x10]
addps xmm7, xmm3
addps xmm3, xmm1
movaps xmmword [edi + 0x10], xmm7
add esi, 0x20
mulps xmm5, xmmword [ebx + 0x20]
mulps xmm4, xmmword [ebx + 0x20]
movaps xmm0, xmm2
addps xmm2, xmm5
movaps xmmword [ecx + edi], xmm2
movaps xmm1, xmm3
subps xmm3, xmm4
movaps xmmword [ecx + edi + 0x10], xmm3
subps xmm0, xmm5
movaps xmmword [edi + ecx*2], xmm0
addps xmm1, xmm4
movaps xmmword [edi + ecx*2 + 0x10], xmm1
add edi, 0x20
cmp esi, dword [esp + 0x14]
jne 0x102fa3d5
lea esi, [esi + ecx*2]
lea edi, [edi + ecx*2]
dec edx
jg 0x102fa3c1
jmp 0x102fa974
movaps xmm0, xmmword [ecx + esi]
movaps xmm4, xmm0
movaps xmm1, xmmword [eax]
mulps xmm0, xmm1
movaps xmm6, xmmword [ecx + esi + 0x10]
mulps xmm1, xmm6
movaps xmm7, xmmword [eax + 0x10]
mulps xmm6, xmm7
mulps xmm7, xmm4
addps xmm0, xmm6
subps xmm1, xmm7
movaps xmm2, xmmword [esi + ecx*2]
movaps xmm4, xmm2
movaps xmm3, xmmword [eax + 0x20]
mulps xmm2, xmm3
movaps xmm6, xmmword [esi + ecx*2 + 0x10]
mulps xmm3, xmm6
movaps xmm7, xmmword [eax + 0x30]
mulps xmm6, xmm7
mulps xmm7, xmm4
addps xmm2, xmm6
subps xmm3, xmm7
add eax, 0x40
movaps xmm4, xmm0
addps xmm0, xmm2
subps xmm4, xmm2
movaps xmm5, xmm1
addps xmm1, xmm3
subps xmm5, xmm3
movaps xmm2, xmmword [esi]
movaps xmm6, xmm0
mulps xmm0, xmmword [ebx + 0x10]
addps xmm6, xmm2
addps xmm2, xmm0
movaps xmm3, xmmword [esi + 0x10]
movaps xmm7, xmm1
mulps xmm1, xmmword [ebx + 0x10]
addps xmm7, xmm3
addps xmm3, xmm1
movaps xmm0, xmm6
unpcklps xmm6, xmm7
unpckhps xmm0, xmm7
movaps xmmword [edi], xmm6
movaps xmmword [edi + 0x10], xmm0
add esi, 0x20
mulps xmm5, xmmword [ebx + 0x20]
mulps xmm4, xmmword [ebx + 0x20]
movaps xmm0, xmm2
addps xmm2, xmm5
movaps xmm1, xmm3
subps xmm3, xmm4
movaps xmm6, xmm2
unpcklps xmm2, xmm3
unpckhps xmm6, xmm3
movaps xmmword [ecx + edi], xmm2
movaps xmmword [ecx + edi + 0x10], xmm6
subps xmm0, xmm5
addps xmm1, xmm4
movaps xmm6, xmm0
unpcklps xmm0, xmm1
unpckhps xmm6, xmm1
movaps xmmword [edi + ecx*2], xmm0
movaps xmmword [edi + ecx*2 + 0x10], xmm6
add edi, 0x20
cmp esi, dword [esp + 0x14]
jne 0x102fa4ab
jmp 0x102fa974
lea eax, [ecx + esi]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
cmp edx, 0
jle 0x102fa692
movups xmm6, xmmword [ecx + esi]
movaps xmm0, xmmword [eax]
mulps xmm0, xmm6
movups xmm1, xmmword [ecx + esi + 0x10]
movaps xmm7, xmmword [eax + 0x10]
mulps xmm7, xmm1
mulps xmm1, xmmword [eax]
mulps xmm6, xmmword [eax + 0x10]
addps xmm0, xmm7
subps xmm1, xmm6
movups xmm6, xmmword [esi + ecx*2]
movaps xmm2, xmmword [eax + 0x20]
mulps xmm2, xmm6
movups xmm3, xmmword [esi + ecx*2 + 0x10]
movaps xmm7, xmmword [eax + 0x30]
mulps xmm7, xmm3
mulps xmm3, xmmword [eax + 0x20]
mulps xmm6, xmmword [eax + 0x30]
addps xmm2, xmm7
subps xmm3, xmm6
add eax, 0x40
movaps xmm4, xmm0
addps xmm0, xmm2
subps xmm4, xmm2
movaps xmm5, xmm1
addps xmm1, xmm3
subps xmm5, xmm3
movups xmm2, xmmword [esi]
movaps xmm6, xmm0
mulps xmm0, xmmword [ebx + 0x10]
addps xmm6, xmm2
addps xmm2, xmm0
movlps qword [edi], xmm6
movhps qword [edi + 8], xmm6
movups xmm3, xmmword [esi + 0x10]
movaps xmm7, xmm1
mulps xmm1, xmmword [ebx + 0x10]
addps xmm7, xmm3
addps xmm3, xmm1
movlps qword [edi + 0x10], xmm7
movhps qword [edi + 0x18], xmm7
add esi, 0x20
mulps xmm5, xmmword [ebx + 0x20]
mulps xmm4, xmmword [ebx + 0x20]
movaps xmm0, xmm2
addps xmm2, xmm5
movlps qword [ecx + edi], xmm2
movhps qword [ecx + edi + 8], xmm2
subps xmm0, xmm5
movaps xmm1, xmm3
subps xmm3, xmm4
movlps qword [ecx + edi + 0x10], xmm3
movhps qword [ecx + edi + 0x18], xmm3
movlps qword [edi + ecx*2], xmm0
movhps qword [edi + ecx*2 + 8], xmm0
addps xmm1, xmm4
movlps qword [edi + ecx*2 + 0x10], xmm1
movhps qword [edi + ecx*2 + 0x18], xmm1
add edi, 0x20
cmp esi, dword [esp + 0x14]
jne 0x102fa5a3
lea esi, [esi + ecx*2]
lea edi, [edi + ecx*2]
dec edx
jg 0x102fa58f
jmp 0x102fa974
movups xmm6, xmmword [ecx + esi]
movaps xmm0, xmmword [eax]
mulps xmm0, xmm6
movups xmm1, xmmword [ecx + esi + 0x10]
movaps xmm7, xmmword [eax + 0x10]
mulps xmm7, xmm1
mulps xmm1, xmmword [eax]
mulps xmm6, xmmword [eax + 0x10]
addps xmm0, xmm7
subps xmm1, xmm6
movups xmm6, xmmword [esi + ecx*2]
movaps xmm2, xmmword [eax + 0x20]
mulps xmm2, xmm6
movups xmm3, xmmword [esi + ecx*2 + 0x10]
movaps xmm7, xmmword [eax + 0x30]
mulps xmm7, xmm3
mulps xmm3, xmmword [eax + 0x20]
mulps xmm6, xmmword [eax + 0x30]
addps xmm2, xmm7
subps xmm3, xmm6
add eax, 0x40
movaps xmm4, xmm0
addps xmm0, xmm2
subps xmm4, xmm2
movaps xmm5, xmm1
addps xmm1, xmm3
subps xmm5, xmm3
movups xmm2, xmmword [esi]
movaps xmm6, xmm0
mulps xmm0, xmmword [ebx + 0x10]
addps xmm6, xmm2
addps xmm2, xmm0
movups xmm3, xmmword [esi + 0x10]
movaps xmm7, xmm1
mulps xmm1, xmmword [ebx + 0x10]
addps xmm7, xmm3
addps xmm3, xmm1
movaps xmm0, xmm6
unpcklps xmm6, xmm7
unpckhps xmm0, xmm7
movlps qword [edi], xmm6
movhps qword [edi + 8], xmm6
movlps qword [edi + 0x10], xmm0
movhps qword [edi + 0x18], xmm0
add esi, 0x20
mulps xmm5, xmmword [ebx + 0x20]
mulps xmm4, xmmword [ebx + 0x20]
movaps xmm0, xmm2
addps xmm2, xmm5
movaps xmm1, xmm3
subps xmm3, xmm4
movaps xmm6, xmm2
unpcklps xmm2, xmm3
unpckhps xmm6, xmm3
movlps qword [ecx + edi], xmm2
movhps qword [ecx + edi + 8], xmm2
movlps qword [ecx + edi + 0x10], xmm6
movhps qword [ecx + edi + 0x18], xmm6
subps xmm0, xmm5
addps xmm1, xmm4
movaps xmm6, xmm0
unpcklps xmm0, xmm1
unpckhps xmm6, xmm1
movlps qword [edi + ecx*2], xmm0
movhps qword [edi + ecx*2 + 8], xmm0
movlps qword [edi + ecx*2 + 0x10], xmm6
movhps qword [edi + ecx*2 + 0x18], xmm6
add edi, 0x20
cmp esi, dword [esp + 0x14]
jne 0x102fa692
jmp 0x102fa974
mov eax, ecx
shl ecx, 3
test eax, 1
jne 0x102fa866
test esi, 0xf
jne 0x102fa866
test edi, 0xf
jne 0x102fa866
lea eax, [ecx + esi]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
movaps xmm0, xmmword [esi]
movaps xmm6, xmmword [ecx + esi]
movaps xmm1, xmmword [eax]
shufps xmm1, xmm1, 0xa0
movaps xmm7, xmmword [eax]
shufps xmm7, xmm7, 0xf5
mulps xmm1, xmm6
shufps xmm6, xmm6, 0xb1
xorps xmm6, xmmword [ebx]
mulps xmm7, xmm6
addps xmm1, xmm7
movaps xmm6, xmmword [esi + ecx*2]
movaps xmm2, xmmword [eax + 0x10]
shufps xmm2, xmm2, 0xa0
movaps xmm7, xmmword [eax + 0x10]
shufps xmm7, xmm7, 0xf5
mulps xmm2, xmm6
shufps xmm6, xmm6, 0xb1
xorps xmm6, xmmword [ebx]
mulps xmm7, xmm6
addps xmm2, xmm7
add eax, 0x20
movaps xmm3, xmm1
addps xmm1, xmm2
subps xmm3, xmm2
movaps xmm4, xmm0
addps xmm0, xmm1
movaps xmmword [edi], xmm0
mulps xmm1, xmmword [ebx + 0x10]
mulps xmm3, xmmword [ebx + 0x20]
addps xmm4, xmm1
shufps xmm3, xmm3, 0xb1
xorps xmm3, xmmword [ebx]
add esi, 0x10
movaps xmm5, xmm4
addps xmm4, xmm3
movaps xmmword [ecx + edi], xmm4
subps xmm5, xmm3
movaps xmmword [edi + ecx*2], xmm5
add edi, 0x10
cmp esi, dword [esp + 0x14]
jne 0x102fa7c3
lea esi, [esi + ecx*2]
lea edi, [edi + ecx*2]
dec edx
jg 0x102fa7b8
jmp 0x102fa974
mov eax, dword [esp + 0x1c]
test eax, 1
lea eax, [ecx + esi]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
je 0x102fa8c8
movsd xmm0, qword [esi]
movsd xmm1, qword [ecx + esi]
movsd xmm2, qword [esi + ecx*2]
movaps xmm3, xmm1
addps xmm1, xmm2
subps xmm3, xmm2
movaps xmm4, xmm0
addps xmm0, xmm1
movlps qword [edi], xmm0
mulps xmm1, xmmword [ebx + 0x10]
mulps xmm3, xmmword [ebx + 0x20]
addps xmm4, xmm1
shufps xmm3, xmm3, 0xb1
xorps xmm3, xmmword [ebx]
movaps xmm5, xmm4
addps xmm4, xmm3
movlps qword [ecx + edi], xmm4
subps xmm5, xmm3
movlps qword [edi + ecx*2], xmm5
add esi, 8
add edi, 8
add eax, 0x10
movups xmm0, xmmword [esi]
movups xmm6, xmmword [ecx + esi]
movaps xmm1, xmmword [eax]
shufps xmm1, xmm1, 0xa0
movaps xmm7, xmmword [eax]
shufps xmm7, xmm7, 0xf5
mulps xmm1, xmm6
shufps xmm6, xmm6, 0xb1
xorps xmm6, xmmword [ebx]
mulps xmm7, xmm6
addps xmm1, xmm7
movups xmm6, xmmword [esi + ecx*2]
movaps xmm2, xmmword [eax + 0x10]
shufps xmm2, xmm2, 0xa0
movaps xmm7, xmmword [eax + 0x10]
shufps xmm7, xmm7, 0xf5
mulps xmm2, xmm6
shufps xmm6, xmm6, 0xb1
xorps xmm6, xmmword [ebx]
mulps xmm7, xmm6
addps xmm2, xmm7
add eax, 0x20
movaps xmm3, xmm1
addps xmm1, xmm2
subps xmm3, xmm2
movaps xmm4, xmm0
addps xmm0, xmm1
movlps qword [edi], xmm0
movhps qword [edi + 8], xmm0
mulps xmm1, xmmword [ebx + 0x10]
mulps xmm3, xmmword [ebx + 0x20]
addps xmm4, xmm1
shufps xmm3, xmm3, 0xb1
xorps xmm3, xmmword [ebx]
add esi, 0x10
movaps xmm5, xmm4
addps xmm4, xmm3
movlps qword [ecx + edi], xmm4
movhps qword [ecx + edi + 8], xmm4
subps xmm5, xmm3
movlps qword [edi + ecx*2], xmm5
movhps qword [edi + ecx*2 + 8], xmm5
add edi, 0x10
cmp esi, dword [esp + 0x14]
jne 0x102fa8c8
lea esi, [esi + ecx*2]
lea edi, [edi + ecx*2]
dec edx
jg 0x102fa866
pop ebp
pop edi
pop esi
pop ebx
ret