Function at 0x100ac080
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x158
mov edx, dword [esp + 0x164]
push esi
mov esi, dword [esp + 0x16c]
add edx, 0x108
push edi
mov edi, dword [esp + 0x168]
mov ecx, edi
imul ecx, esi
mov eax, ecx
shl ecx, 5
add eax, eax
movsd xmm0, qword [ecx + edx]
movsd xmm2, qword [edx + eax*8]
movsd qword [esp + 0x120], xmm0
movsd xmm0, qword [ecx + edx + 8]
lea ecx, [esi + esi*2]
movsd qword [esp + 0x110], xmm2
movsd xmm2, qword [edx + eax*8 + 8]
mov eax, dword [esp + 0x164]
shl ecx, 4
add eax, ecx
movsd qword [esp + 0x100], xmm2
movsd qword [esp + 0xf8], xmm0
mov dword [esp + 0x16c], eax
test esi, esi
jle 0x100ac58b
mov eax, edi
mov dword [esp + 0x164], esi
shl dword [esp + 0x164], 6
shl eax, 6
sub dword [esp + 0x164], ecx
mov dword [esp + 0x128], eax
lea eax, [edi + edi*2]
shl eax, 4
mov dword [esp + 0x12c], eax
mov eax, edi
shl eax, 5
mov dword [esp + 0x130], eax
mov eax, ecx
neg eax
shl edi, 4
mov dword [esp + 0x150], eax
mov eax, esi
mov dword [esp + 0x168], edi
mov edi, esi
shl eax, 4
shl edi, 5
sub eax, ecx
sub edi, ecx
mov dword [esp + 0x154], edx
mov dword [esp + 0x15c], edx
mov dword [esp + 0x158], edx
mov dword [esp + 0x14c], edi
mov esi, dword [esp + 0x16c]
mov edi, dword [esp + 0x150]
mov ecx, dword [esp + 0x158]
movsd xmm0, qword [esi + edi]
movsd qword [esp + 0x118], xmm0
movsd xmm0, qword [esi + edi + 8]
mov edi, esi
mov esi, dword [esp + 0x15c]
movsd qword [esp + 0x108], xmm0
movsd xmm5, qword [edi + eax]
movsd xmm2, qword [edi + eax + 8]
movaps xmm4, xmm5
mulsd xmm4, qword [ecx]
movaps xmm0, xmm2
mov edi, dword [esp + 0x14c]
mulsd xmm0, qword [ecx + 8]
mulsd xmm2, qword [ecx]
mulsd xmm5, qword [ecx + 8]
mov ecx, dword [esp + 0x15c]
movsd xmm3, qword [esi]
subsd xmm4, xmm0
mov esi, dword [esp + 0x16c]
addsd xmm5, xmm2
movsd xmm2, qword [edi + esi + 8]
movsd xmm7, qword [edi + esi]
movaps xmm0, xmm2
mulsd xmm0, qword [ecx + 8]
mov edi, dword [esp + 0x16c]
mov esi, dword [esp + 0x154]
movsd qword [esp + 0x13c], xmm4
movaps xmm4, xmm7
mulsd xmm7, qword [ecx + 8]
mov ecx, dword [esp + 0x164]
mulsd xmm4, xmm3
mulsd xmm2, xmm3
movsd xmm3, qword [edi]
subsd xmm4, xmm0
movsd qword [esp + 0x144], xmm5
movsd xmm5, qword [edi + ecx]
movaps xmm6, xmm3
mulsd xmm3, qword [esi + 8]
addsd xmm7, xmm2
mulsd xmm6, qword [esi]
movsd xmm2, qword [edi + ecx + 8]
movsd xmm1, qword [esp + 0x144]
movsd qword [esp + 0x134], xmm4
movsd xmm4, qword [edi + 8]
movaps xmm0, xmm4
movsd qword [esp + 0xe8], xmm7
mulsd xmm4, qword [esi]
mulsd xmm0, qword [esi + 8]
addsd xmm4, xmm3
movsd xmm3, qword [edx]
subsd xmm6, xmm0
movaps xmm0, xmm2
mulsd xmm0, qword [edx + 8]
movsd qword [esp + 0xf0], xmm4
movaps xmm4, xmm5
mulsd xmm5, qword [edx + 8]
addsd xmm7, qword [esp + 0xf0]
mulsd xmm2, xmm3
mulsd xmm4, xmm3
movaps xmm3, xmm1
movsd qword [esp + 0x90], xmm7
addsd xmm5, xmm2
subsd xmm4, xmm0
movsd xmm0, qword [esp + 0x13c]
movaps xmm2, xmm0
subsd xmm1, xmm5
addsd xmm3, xmm5
addsd xmm2, xmm4
subsd xmm0, xmm4
movsd qword [esp + 0x144], xmm1
movsd xmm1, qword [esp + 0x134]
movaps xmm5, xmm1
movsd qword [esp + 0xe0], xmm2
movsd qword [esp + 0xd8], xmm3
addsd xmm5, xmm6
movsd qword [esp + 0x80], xmm3
subsd xmm1, xmm6
movsd qword [esp + 0x13c], xmm0
mov esi, dword [esp + 0x16c]
movaps xmm0, xmm2
movhpd xmm0, qword [esp + 0x80]
mov edi, dword [esp + 0x150]
movsd qword [esp + 0x134], xmm1
movaps xmm1, xmm5
movhpd xmm1, qword [esp + 0x90]
addpd xmm1, xmm0
movups xmm0, xmmword [esi + edi]
movsd xmm6, qword [esp + 0xe8]
addpd xmm1, xmm0
movsd xmm0, qword [esp + 0x120]
movups xmmword [esi + edi], xmm1
mov edi, esi
movsd xmm1, qword [esp + 0x110]
movaps xmm4, xmm1
mulsd xmm0, xmm5
mulsd xmm1, xmm3
mulsd xmm4, xmm2
subsd xmm6, qword [esp + 0xf0]
addsd xmm1, qword [esp + 0x108]
movsd xmm3, qword [esp + 0xf8]
addsd xmm4, qword [esp + 0x118]
mulsd xmm3, xmm6
addsd xmm4, xmm0
movsd xmm0, qword [esp + 0x120]
mulsd xmm0, xmm7
movaps xmm2, xmm4
addsd xmm1, xmm0
movsd qword [esp + 0x60], xmm1
movsd xmm1, qword [esp + 0x100]
movaps xmm0, xmm1
movhpd xmm2, qword [esp + 0x60]
mulsd xmm0, qword [esp + 0x144]
mulsd xmm1, qword [esp + 0x13c]
addsd xmm3, xmm0
movsd xmm0, qword [esp + 0xf8]
mulsd xmm0, qword [esp + 0x134]
xorps xmm1, xmmword [0x10139010]
subsd xmm1, xmm0
movaps xmm0, xmm2
movsd qword [esp + 0x70], xmm1
movaps xmm1, xmm3
movhpd xmm1, qword [esp + 0x70]
subpd xmm0, xmm1
addpd xmm1, xmm2
movups xmmword [edi + eax], xmm0
movsd xmm0, qword [esp + 0x110]
movups xmmword [edi + ecx], xmm1
mov edi, dword [esp + 0x14c]
movsd xmm1, qword [esp + 0x120]
movaps xmm4, xmm1
movsd xmm3, qword [esp + 0x100]
mulsd xmm4, qword [esp + 0xe0]
mulsd xmm1, qword [esp + 0xd8]
mulsd xmm0, xmm5
addsd xmm4, qword [esp + 0x118]
addsd xmm1, qword [esp + 0x108]
mulsd xmm3, xmm6
addsd xmm4, xmm0
movsd xmm0, qword [esp + 0x110]
mulsd xmm0, xmm7
addsd xmm1, xmm0
movsd qword [esp + 0xc0], xmm1
movsd xmm1, qword [esp + 0xf8]
movaps xmm0, xmm1
mulsd xmm1, qword [esp + 0x13c]
mulsd xmm0, qword [esp + 0x144]
subsd xmm3, xmm0
movsd xmm0, qword [esp + 0x100]
mulsd xmm0, qword [esp + 0x134]
movaps xmm2, xmm3
subsd xmm1, xmm0
movsd qword [esp + 0xd0], xmm1
movaps xmm1, xmm4
movhpd xmm1, qword [esp + 0xc0]
movhpd xmm2, qword [esp + 0xd0]
movaps xmm0, xmm1
addpd xmm0, xmm2
subpd xmm1, xmm2
movups xmmword [edi + esi], xmm0
add edx, dword [esp + 0x128]
mov edi, esi
mov esi, dword [esp + 0x15c]
add esi, dword [esp + 0x130]
mov dword [esp + 0x15c], esi
mov esi, dword [esp + 0x154]
add esi, dword [esp + 0x12c]
movups xmmword [edi], xmm1
add edi, 0x10
mov dword [esp + 0x154], esi
mov dword [esp + 0x16c], edi
mov edi, dword [esp + 0x168]
add dword [esp + 0x158], edi
sub dword [esp + 0x170], 1
jne 0x100ac181
pop edi
pop esi
add esp, 0x158
ret