Function at 0x10310dd0
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ebp
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
shl eax, 3
imul ecx, eax
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
lea edx, [esi + edx*4]
mov dword [esp + 0x28], edx
lea ebx, [0x1030e590]
mov ebp, dword [esp + 0x14]
mov edx, dword [esi]
shl edx, 3
lea edx, [edx + ebp]
lea ebp, [ecx + edx]
sub ebp, eax
mov dword [esp + 0x24], ebp
lea ebp, [ecx + ecx*2]
movsd xmm0, qword [edx]
movsd xmm1, qword [ecx + edx]
movsd xmm2, qword [edx + ecx*2]
movsd xmm3, qword [ebp + edx]
movsd xmm4, qword [edx + ecx*4]
add edx, eax
movhps xmm0, qword [edx]
movhps xmm1, qword [ecx + edx]
movhps xmm2, qword [edx + ecx*2]
movhps xmm3, qword [ebp + edx]
movhps xmm4, qword [edx + ecx*4]
movaps xmm5, xmm1
addps xmm1, xmm4
subps xmm5, xmm4
movaps xmm6, xmm2
addps xmm2, xmm3
subps xmm6, xmm3
movaps xmm7, xmm0
addps xmm0, xmm1
addps xmm0, xmm2
movlps qword [edi], xmm0
movhps qword [edi + 0x28], xmm0
movaps xmm4, xmm1
mulps xmm1, xmmword [ebx + 0x30]
mulps xmm4, xmmword [ebx + 0x50]
addps xmm1, xmm7
addps xmm4, xmm7
movaps xmm3, xmm2
mulps xmm2, xmmword [ebx + 0x50]
mulps xmm3, xmmword [ebx + 0x30]
addps xmm1, xmm2
addps xmm4, xmm3
add edx, eax
movaps xmm7, xmm5
mulps xmm5, xmmword [ebx + 0x40]
mulps xmm7, xmmword [ebx + 0x60]
movaps xmm2, xmm6
mulps xmm6, xmmword [ebx + 0x60]
mulps xmm2, xmmword [ebx + 0x40]
addps xmm5, xmm6
subps xmm7, xmm2
shufps xmm5, xmm5, 0xb1
xorps xmm5, xmmword [ebx]
shufps xmm7, xmm7, 0xb1
xorps xmm7, xmmword [ebx]
movaps xmm3, xmm1
addps xmm1, xmm5
movlps qword [edi + 8], xmm1
movhps qword [edi + 0x30], xmm1
subps xmm3, xmm5
movlps qword [edi + 0x20], xmm3
movhps qword [edi + 0x48], xmm3
movaps xmm6, xmm4
addps xmm6, xmm7
movlps qword [edi + 0x10], xmm6
movhps qword [edi + 0x38], xmm6
subps xmm4, xmm7
movlps qword [edi + 0x18], xmm4
movhps qword [edi + 0x40], xmm4
add edi, 0x50
cmp edx, dword [esp + 0x24]
jne 0x10310e13
movsd xmm1, qword [ecx + edx]
movsd xmm4, qword [edx + ecx*4]
movaps xmm5, xmm1
addps xmm1, xmm4
subps xmm5, xmm4
movsd xmm2, qword [edx + ecx*2]
movsd xmm3, qword [ebp + edx]
movaps xmm6, xmm2
addps xmm2, xmm3
subps xmm6, xmm3
movsd xmm0, qword [edx]
movaps xmm7, xmm0
addps xmm0, xmm1
addps xmm0, xmm2
movlps qword [edi], xmm0
movaps xmm4, xmm1
mulps xmm1, xmmword [ebx + 0x30]
mulps xmm4, xmmword [ebx + 0x50]
addps xmm1, xmm7
addps xmm4, xmm7
movaps xmm3, xmm2
mulps xmm2, xmmword [ebx + 0x50]
mulps xmm3, xmmword [ebx + 0x30]
addps xmm1, xmm2
addps xmm4, xmm3
add edx, eax
movaps xmm7, xmm5
mulps xmm5, xmmword [ebx + 0x40]
mulps xmm7, xmmword [ebx + 0x60]
movaps xmm2, xmm6
mulps xmm6, xmmword [ebx + 0x60]
mulps xmm2, xmmword [ebx + 0x40]
addps xmm5, xmm6
subps xmm7, xmm2
shufps xmm5, xmm5, 0xb1
xorps xmm5, xmmword [ebx]
shufps xmm7, xmm7, 0xb1
xorps xmm7, xmmword [ebx]
movaps xmm3, xmm1
addps xmm1, xmm5
movlps qword [edi + 8], xmm1
subps xmm3, xmm5
movlps qword [edi + 0x20], xmm3
movaps xmm6, xmm4
addps xmm6, xmm7
movlps qword [edi + 0x10], xmm6
subps xmm4, xmm7
movlps qword [edi + 0x18], xmm4
add edi, 0x28
add esi, 4
cmp esi, dword [esp + 0x28]
jne 0x10310dfb
pop ebp
pop edi
pop esi
pop ebx
ret