Function at 0x10196ae0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x74
mov ebx, dword [ebp + 0x14]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
imul edx, ebx
test al, 0xf
jne 0x10196e35
cmp dword [ebp + 0x18], 0
jle 0x10197173
mov esi, edx
lea edi, [edx + edx*4]
mov dword [esp + 8], edi
lea edi, [edx*8]
sub edi, edx
lea ecx, [ebx - 1]
mov dword [esp + 0xc], edi
and ebx, 1
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x60], ecx
lea ecx, [edx + edx*2]
mov dword [esp + 0x14], ebx
mov ebx, edx
shl esi, 4
add edi, edi
mov dword [esp + 0x10], 0
sub edi, edx
mov dword [esp], esi
mov esi, ecx
shl ebx, 5
mov dword [esp + 0x64], edi
mov dword [esp + 4], ecx
shl esi, 4
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], edx
mov ecx, dword [esp]
mov edi, dword [esp + 0x10]
mov ebx, dword [ebp + 0x1c]
mov edx, dword [ebp + 8]
cmp dword [esp + 0x60], 0
mov ebx, dword [ebx + edi*4]
lea ebx, [edx + ebx*8]
mov edx, dword [ebp + 0xc]
lea edx, [ebx + edx*8]
jle 0x10196d3f
movaps xmm1, xmmword [0x103a43a0]
movaps xmm0, xmmword [0x103a43b0]
mov dword [esp + 0x68], 0
mov dword [esp + 0x10], edi
movaps xmmword [esp + 0x20], xmm0
movaps xmmword [esp + 0x30], xmm1
mov edi, dword [esp + 0x68]
mov dword [esp], eax
mov dword [esp + 0x68], edi
movsd xmm3, qword [ebx + ecx]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
movsd xmm5, qword [ebx + esi]
movhps xmm3, qword [edx + ecx]
movhps xmm5, qword [edx + esi]
movaps xmm0, xmm5
subps xmm5, xmm3
addps xmm0, xmm3
movsd xmm6, qword [ebx]
movsd xmm7, qword [ebx + eax]
lea ebx, [ebx + edi*8]
movhps xmm6, qword [edx]
movhps xmm7, qword [edx + eax]
lea edx, [edx + edi*8]
movsd xmm3, qword [ebx]
movaps xmm2, xmm6
movhps xmm3, qword [edx]
addps xmm2, xmm7
subps xmm6, xmm7
movsd xmm1, qword [ebx + eax]
movaps xmm7, xmm3
movsd xmm4, qword [ebx + esi]
movaps xmmword [esp + 0x40], xmm5
movsd xmm5, qword [ebx + ecx]
movhps xmm1, qword [edx + eax]
movhps xmm4, qword [edx + esi]
addps xmm7, xmm1
subps xmm3, xmm1
movhps xmm5, qword [edx + ecx]
movaps xmm1, xmm4
mov eax, dword [esp]
addps xmm1, xmm5
subps xmm4, xmm5
movaps xmm5, xmm2
subps xmm2, xmm0
addps xmm5, xmm0
movaps xmm0, xmm1
subps xmm1, xmm7
addps xmm0, xmm7
shufps xmm1, xmm1, 0xb1
movaps xmm7, xmm5
xorps xmm1, xmmword [esp + 0x30]
addps xmm7, xmm0
subps xmm5, xmm0
movaps xmm0, xmm2
addps xmm2, xmm1
subps xmm0, xmm1
movaps xmmword [esp + 0x50], xmm2
movaps xmm1, xmm6
movaps xmm2, xmmword [esp + 0x20]
mulps xmm4, xmm2
mulps xmm3, xmm2
movaps xmm2, xmm4
subps xmm4, xmm3
addps xmm2, xmm3
movaps xmm3, xmmword [esp + 0x40]
addps xmm1, xmm2
subps xmm6, xmm2
movaps xmm2, xmm3
mov edi, dword [esp + 0x64]
addps xmm2, xmm4
subps xmm4, xmm3
movaps xmm3, xmmword [esp + 0x30]
lea ebx, [ebx + edi*8]
shufps xmm2, xmm2, 0xb1
lea edx, [edx + edi*8]
shufps xmm4, xmm4, 0xb1
xorps xmm2, xmm3
xorps xmm4, xmm3
movaps xmm3, xmm1
mov edi, dword [esp + 0x68]
subps xmm3, xmm2
addps xmm1, xmm2
movaps xmm2, xmm6
add edi, 2
subps xmm2, xmm4
addps xmm6, xmm4
movaps xmm4, xmm7
unpcklps xmm4, xmm3
unpckhps xmm7, xmm3
movaps xmm3, xmm0
unpckhps xmm0, xmm2
movlps qword [eax + 0x48], xmm0
movhps qword [eax + 0x58], xmm0
movaps xmm0, xmm5
unpcklps xmm0, xmm6
unpckhps xmm5, xmm6
movaps xmm6, xmmword [esp + 0x50]
movlps qword [eax], xmm4
movhps qword [eax + 0x10], xmm4
movaps xmm4, xmm6
unpcklps xmm3, xmm2
unpcklps xmm4, xmm1
unpckhps xmm6, xmm1
movlps qword [eax + 8], xmm3
movhps qword [eax + 0x18], xmm3
movlps qword [eax + 0x40], xmm7
movhps qword [eax + 0x50], xmm7
movlps qword [eax + 0x20], xmm0
movhps qword [eax + 0x30], xmm0
movlps qword [eax + 0x28], xmm4
movhps qword [eax + 0x38], xmm4
movlps qword [eax + 0x60], xmm5
movhps qword [eax + 0x70], xmm5
movlps qword [eax + 0x68], xmm6
movhps qword [eax + 0x78], xmm6
add eax, 0x80
cmp edi, dword [esp + 0x60]
jl 0x10196bac
mov edi, dword [esp + 0x10]
cmp dword [esp + 0x14], 0
je 0x10196e26
mov edx, dword [esp + 0x1c]
movsd xmm2, qword [ebx]
movhps xmm2, qword [ecx + ebx]
movsd xmm5, qword [edx + ebx]
movaps xmm6, xmm2
mov edx, dword [esp + 0x18]
movhps xmm5, qword [esi + ebx]
addps xmm6, xmm5
subps xmm2, xmm5
movsd xmm7, qword [ebx + edx*8]
movaps xmm0, xmm6
mov edx, dword [esp + 4]
movlhps xmm0, xmm2
shufps xmm6, xmm2, 0xbe
movaps xmm2, xmm0
movhps xmm7, qword [ebx + edx*8]
mov edx, dword [esp + 8]
movaps xmm5, xmm7
movsd xmm3, qword [ebx + edx*8]
mov edx, dword [esp + 0xc]
movhps xmm3, qword [ebx + edx*8]
addps xmm5, xmm3
subps xmm7, xmm3
movaps xmm1, xmm5
movlhps xmm1, xmm7
shufps xmm5, xmm7, 0xbe
movaps xmm7, xmmword [0x103a43c0]
xorps xmm6, xmm7
xorps xmm5, xmm7
movaps xmm7, xmmword [0x103a43e0]
addps xmm2, xmm6
subps xmm0, xmm6
movaps xmm6, xmm1
subps xmm1, xmm5
addps xmm6, xmm5
movaps xmm4, xmm6
movaps xmm5, xmm2
shufps xmm4, xmm1, 0x88
shufps xmm6, xmm1, 0xdd
movaps xmm1, xmmword [0x103a43d0]
shufps xmm5, xmm0, 0x88
movaps xmm3, xmm1
shufps xmm2, xmm0, 0xdd
movaps xmm0, xmm7
mulps xmm3, xmm4
mulps xmm0, xmm6
mulps xmm6, xmm1
mulps xmm4, xmm7
subps xmm3, xmm0
addps xmm6, xmm4
movaps xmm4, xmm3
movaps xmm0, xmm6
addps xmm4, xmm5
subps xmm5, xmm3
addps xmm0, xmm2
subps xmm2, xmm6
movaps xmmword [eax], xmm4
movaps xmmword [eax + 0x10], xmm0
movaps xmmword [eax + 0x20], xmm5
movaps xmmword [eax + 0x30], xmm2
add eax, 0x40
inc edi
cmp edi, dword [ebp + 0x18]
jl 0x10196b67
jmp 0x10197173
cmp dword [ebp + 0x18], 0
jle 0x10197173
mov ecx, edx
lea edi, [edx + edx*2]
mov dword [esp + 0xc], edi
lea esi, [ebx - 1]
shl edi, 4
and ebx, 1
mov dword [esp], edi
mov edi, dword [ebp + 0xc]
shl ecx, 5
mov dword [esp + 0x64], ecx
lea ecx, [edx + edx*4]
mov dword [esp + 8], ecx
add edi, edi
sub edi, edx
lea ecx, [edx*8]
mov dword [esp + 0x10], 0
sub ecx, edx
mov dword [esp + 0x60], esi
mov esi, edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x14], ebx
shl esi, 4
mov dword [esp + 4], ecx
mov dword [esp + 0x18], edx
mov ebx, dword [esp]
mov edi, dword [esp + 0x10]
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp + 8]
cmp dword [esp + 0x60], 0
mov ecx, dword [ecx + edi*4]
lea ecx, [edx + ecx*8]
mov edx, dword [ebp + 0xc]
lea edx, [ecx + edx*8]
jle 0x10197072
movaps xmm1, xmmword [0x103a43a0]
movaps xmm0, xmmword [0x103a43b0]
mov dword [esp + 0x68], 0
mov dword [esp + 0x10], edi
movaps xmmword [esp + 0x20], xmm0
movaps xmmword [esp + 0x30], xmm1
mov edi, dword [esp + 0x68]
mov dword [esp], eax
mov dword [esp + 0x68], edi
movsd xmm3, qword [ecx + esi]
mov eax, dword [esp + 0x64]
mov edi, dword [esp + 0x18]
movsd xmm5, qword [ecx + ebx]
movhps xmm3, qword [edx + esi]
movhps xmm5, qword [edx + ebx]
movaps xmm0, xmm5
subps xmm5, xmm3
addps xmm0, xmm3
movsd xmm6, qword [ecx]
movsd xmm7, qword [ecx + eax]
lea ecx, [ecx + edi*8]
movhps xmm6, qword [edx]
movhps xmm7, qword [edx + eax]
lea edx, [edx + edi*8]
movsd xmm3, qword [ecx]
movaps xmm2, xmm6
movhps xmm3, qword [edx]
addps xmm2, xmm7
subps xmm6, xmm7
movsd xmm1, qword [ecx + eax]
movaps xmm7, xmm3
movsd xmm4, qword [ecx + ebx]
movaps xmmword [esp + 0x40], xmm5
movsd xmm5, qword [ecx + esi]
movhps xmm1, qword [edx + eax]
movhps xmm4, qword [edx + ebx]
addps xmm7, xmm1
subps xmm3, xmm1
movhps xmm5, qword [edx + esi]
movaps xmm1, xmm4
mov eax, dword [esp]
addps xmm1, xmm5
subps xmm4, xmm5
movaps xmm5, xmm2
subps xmm2, xmm0
addps xmm5, xmm0
movaps xmm0, xmm1
subps xmm1, xmm7
addps xmm0, xmm7
shufps xmm1, xmm1, 0xb1
movaps xmm7, xmm5
xorps xmm1, xmmword [esp + 0x30]
addps xmm7, xmm0
subps xmm5, xmm0
movaps xmm0, xmm2
addps xmm2, xmm1
subps xmm0, xmm1
movaps xmmword [esp + 0x50], xmm2
movaps xmm1, xmm6
movaps xmm2, xmmword [esp + 0x20]
mulps xmm4, xmm2
mulps xmm3, xmm2
movaps xmm2, xmm4
subps xmm4, xmm3
addps xmm2, xmm3
movaps xmm3, xmmword [esp + 0x40]
addps xmm1, xmm2
subps xmm6, xmm2
movaps xmm2, xmm3
mov edi, dword [esp + 0x1c]
addps xmm2, xmm4
subps xmm4, xmm3
movaps xmm3, xmmword [esp + 0x30]
lea ecx, [ecx + edi*8]
shufps xmm2, xmm2, 0xb1
lea edx, [edx + edi*8]
shufps xmm4, xmm4, 0xb1
xorps xmm2, xmm3
xorps xmm4, xmm3
movaps xmm3, xmm1
mov edi, dword [esp + 0x68]
subps xmm3, xmm2
addps xmm1, xmm2
movaps xmm2, xmm6
add edi, 2
subps xmm2, xmm4
addps xmm6, xmm4
movaps xmm4, xmm7
unpcklps xmm4, xmm3
unpckhps xmm7, xmm3
movaps xmm3, xmm0
unpckhps xmm0, xmm2
movlps qword [eax + 0x48], xmm0
movhps qword [eax + 0x58], xmm0
movaps xmm0, xmm5
unpcklps xmm0, xmm6
unpckhps xmm5, xmm6
movaps xmm6, xmmword [esp + 0x50]
movlps qword [eax], xmm4
movhps qword [eax + 0x10], xmm4
movaps xmm4, xmm6
unpcklps xmm3, xmm2
unpcklps xmm4, xmm1
unpckhps xmm6, xmm1
movlps qword [eax + 8], xmm3
movhps qword [eax + 0x18], xmm3
movlps qword [eax + 0x40], xmm7
movhps qword [eax + 0x50], xmm7
movlps qword [eax + 0x20], xmm0
movhps qword [eax + 0x30], xmm0
movlps qword [eax + 0x28], xmm4
movhps qword [eax + 0x38], xmm4
movlps qword [eax + 0x60], xmm5
movhps qword [eax + 0x70], xmm5
movlps qword [eax + 0x68], xmm6
movhps qword [eax + 0x78], xmm6
add eax, 0x80
cmp edi, dword [esp + 0x60]
jl 0x10196edf
mov edi, dword [esp + 0x10]
cmp dword [esp + 0x14], 0
je 0x10197169
mov edx, dword [esp + 0x64]
movsd xmm2, qword [ecx]
movhps xmm2, qword [esi + ecx]
movsd xmm5, qword [edx + ecx]
movaps xmm6, xmm2
mov edx, dword [esp + 0x18]
movhps xmm5, qword [ebx + ecx]
addps xmm6, xmm5
subps xmm2, xmm5
movsd xmm7, qword [ecx + edx*8]
movaps xmm0, xmm6
mov edx, dword [esp + 0xc]
movlhps xmm0, xmm2
shufps xmm6, xmm2, 0xbe
movaps xmm2, xmm0
movhps xmm7, qword [ecx + edx*8]
mov edx, dword [esp + 8]
movaps xmm5, xmm7
movsd xmm3, qword [ecx + edx*8]
mov edx, dword [esp + 4]
movhps xmm3, qword [ecx + edx*8]
addps xmm5, xmm3
subps xmm7, xmm3
movaps xmm1, xmm5
movlhps xmm1, xmm7
shufps xmm5, xmm7, 0xbe
movaps xmm7, xmmword [0x103a43c0]
xorps xmm6, xmm7
xorps xmm5, xmm7
movaps xmm7, xmmword [0x103a43e0]
addps xmm2, xmm6
subps xmm0, xmm6
movaps xmm6, xmm1
subps xmm1, xmm5
addps xmm6, xmm5
movaps xmm4, xmm6
movaps xmm5, xmm2
shufps xmm4, xmm1, 0x88
shufps xmm6, xmm1, 0xdd
movaps xmm1, xmmword [0x103a43d0]
shufps xmm5, xmm0, 0x88
movaps xmm3, xmm1
shufps xmm2, xmm0, 0xdd
movaps xmm0, xmm7
mulps xmm3, xmm4
mulps xmm0, xmm6
mulps xmm6, xmm1
mulps xmm4, xmm7
subps xmm3, xmm0
addps xmm6, xmm4
movaps xmm4, xmm3
movaps xmm0, xmm6
addps xmm4, xmm5
subps xmm5, xmm3
addps xmm0, xmm2
subps xmm2, xmm6
movlps qword [eax], xmm4
movhps qword [eax + 8], xmm4
movlps qword [eax + 0x10], xmm0
movhps qword [eax + 0x18], xmm0
movlps qword [eax + 0x20], xmm5
movhps qword [eax + 0x28], xmm5
movlps qword [eax + 0x30], xmm2
movhps qword [eax + 0x38], xmm2
add eax, 0x40
inc edi
cmp edi, dword [ebp + 0x18]
jl 0x10196e9a
add esp, 0x74
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret