Function at 0x103111e0
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, [0x1030e590]
test ecx, 3
jne 0x103115f0
shl ecx, 3
test esi, 0xf
jne 0x103113ef
test edi, 0xf
jne 0x103113ef
lea eax, [ecx + esi]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
cmp edx, 0
jle 0x1031130b
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 0x10311235
lea esi, [esi + ecx*2]
lea edi, [edi + ecx*2]
dec edx
jg 0x10311221
jmp 0x103117d4
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 0x1031130b
jmp 0x103117d4
lea eax, [ecx + esi]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
cmp edx, 0
jle 0x103114f2
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 0x10311403
lea esi, [esi + ecx*2]
lea edi, [edi + ecx*2]
dec edx
jg 0x103113ef
jmp 0x103117d4
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 0x103114f2
jmp 0x103117d4
mov eax, ecx
shl ecx, 3
test eax, 1
jne 0x103116c6
test esi, 0xf
jne 0x103116c6
test edi, 0xf
jne 0x103116c6
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 0x10311623
lea esi, [esi + ecx*2]
lea edi, [edi + ecx*2]
dec edx
jg 0x10311618
jmp 0x103117d4
mov eax, dword [esp + 0x1c]
test eax, 1
lea eax, [ecx + esi]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
je 0x10311728
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 0x10311728
lea esi, [esi + ecx*2]
lea edi, [edi + ecx*2]
dec edx
jg 0x103116c6
pop ebp
pop edi
pop esi
pop ebx
ret