Function at 0x10116840
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x1c4
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
test byte [ebp + 0x10], 3
je 0x101172b6
mov ecx, dword [ebp + 0x10]
and ecx, 1
jne 0x10116874
test al, 0xf
jne 0x10116874
test dl, 0xf
je 0x10116e63
cmp dword [ebp + 0x14], 0
jle 0x101172f8
mov esi, dword [ebp + 0x10]
mov edi, esi
shl edi, 4
mov dword [esp + 0xac], edi
lea ebx, [esi - 1]
mov dword [esp + 0x1b0], ebx
lea ebx, [esi + esi*2]
mov edi, esi
lea esi, [esi + esi*4]
mov dword [esp + 0x20], esi
mov esi, dword [ebp + 0x18]
mov dword [esp + 0xa4], 0
shl edi, 5
mov dword [esp + 0x1b4], edi
lea edi, [esi + 0x30]
mov dword [esp + 0xa8], ecx
mov dword [esp + 0x1b8], ebx
shl ebx, 4
mov dword [esp + 0xa0], edi
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0xa4]
mov edi, dword [ebp + 0x18]
cmp dword [esp + 0xa8], 0
je 0x10116acb
mov edi, dword [ebp + 0x10]
mov dword [esp + 0xa4], esi
mov esi, dword [esp + 0xac]
movsd xmm4, qword [eax + edi*8]
movsd xmm7, qword [eax + ecx*8]
movaps xmm5, xmm4
movsd xmm1, qword [eax + esi]
mov esi, dword [esp + 0x1b8]
movsd xmm6, qword [eax + ebx]
movsd xmm2, qword [eax]
addps xmm5, xmm6
subps xmm4, xmm6
movaps xmm6, xmm1
subps xmm1, xmm7
addps xmm6, xmm7
movsd xmm0, qword [eax + esi*8]
mov esi, dword [esp + 0x1b4]
movaps xmm7, xmm0
shufps xmm1, xmm1, 0xb1
movaps xmmword [esp + 0x40], xmm1
movaps xmm1, xmm5
movsd xmm3, qword [eax + esi]
add eax, 8
movaps xmmword [esp + 0x20], xmm2
addps xmm7, xmm3
addps xmm1, xmm6
subps xmm0, xmm3
addps xmm1, xmm7
shufps xmm0, xmm0, 0xb1
addps xmm1, xmm2
movaps xmmword [esp + 0x50], xmm0
movaps xmm2, xmmword [0x103a06e0]
movaps xmm0, xmmword [0x103a06f0]
movaps xmm3, xmm2
shufps xmm4, xmm4, 0xb1
movaps xmmword [esp + 0x30], xmm4
movaps xmm4, xmm0
mulps xmm3, xmm5
mulps xmm4, xmm6
movlps qword [edx], xmm1
addps xmm3, xmm4
movaps xmm4, xmmword [0x103a0700]
movaps xmm1, xmm4
mulps xmm1, xmm7
addps xmm3, xmm1
movaps xmm1, xmm0
mulps xmm1, xmm5
mulps xmm5, xmm4
movaps xmmword [esp + 0x60], xmm3
movaps xmm3, xmm4
mulps xmm3, xmm6
mulps xmm6, xmm2
addps xmm1, xmm3
addps xmm5, xmm6
movaps xmm3, xmm2
mulps xmm3, xmm7
mulps xmm7, xmm0
addps xmm1, xmm3
addps xmm5, xmm7
movaps xmm3, xmmword [0x103a0710]
movaps xmm2, xmmword [0x103a0720]
movaps xmm4, xmm3
movaps xmmword [esp + 0x70], xmm1
movaps xmmword [esp + 0x80], xmm5
movaps xmm5, xmm2
movaps xmm6, xmmword [esp + 0x30]
movaps xmm1, xmmword [esp + 0x40]
mulps xmm4, xmm6
mulps xmm5, xmm1
movaps xmm7, xmmword [0x103a0730]
addps xmm4, xmm5
movaps xmm0, xmmword [esp + 0x50]
movaps xmm5, xmm7
mulps xmm5, xmm0
addps xmm4, xmm5
movaps xmm5, xmm2
mulps xmm5, xmm6
mulps xmm6, xmm7
movaps xmmword [esp + 0x90], xmm4
movaps xmm4, xmm7
mulps xmm4, xmm1
mulps xmm1, xmm3
subps xmm5, xmm4
subps xmm6, xmm1
movaps xmm4, xmm3
mulps xmm4, xmm0
mulps xmm0, xmm2
subps xmm5, xmm4
addps xmm6, xmm0
movaps xmm2, xmmword [esp + 0x20]
movaps xmm0, xmmword [esp + 0x60]
movaps xmm1, xmmword [esp + 0x70]
addps xmm0, xmm2
addps xmm1, xmm2
movaps xmm3, xmmword [esp + 0x80]
movaps xmm4, xmm1
movaps xmm7, xmmword [esp + 0x90]
addps xmm3, xmm2
subps xmm4, xmm5
addps xmm1, xmm5
movaps xmm2, xmm0
movaps xmm5, xmm3
subps xmm2, xmm7
subps xmm5, xmm6
addps xmm3, xmm6
addps xmm0, xmm7
movlps qword [edx + edi*8], xmm2
mov edi, dword [esp + 0xac]
movlps qword [edx + edi], xmm4
mov edi, dword [esp + 0x1b8]
movlps qword [edx + edi*8], xmm5
movlps qword [edx + esi], xmm3
movlps qword [edx + ecx*8], xmm1
movlps qword [edx + ebx], xmm0
add edx, 8
mov edi, dword [esp + 0xa0]
mov esi, dword [esp + 0xa4]
cmp dword [esp + 0x1b0], 0
jle 0x10116e50
movaps xmm6, xmmword [0x103a06d0]
movaps xmm5, xmmword [0x103a06e0]
movaps xmm4, xmmword [0x103a06f0]
movaps xmm3, xmmword [0x103a0700]
movaps xmm2, xmmword [0x103a0710]
movaps xmm1, xmmword [0x103a0720]
movaps xmm0, xmmword [0x103a0730]
mov dword [esp + 0x1bc], 0
mov dword [esp + 0xa4], esi
movaps xmmword [esp + 0xb0], xmm0
movaps xmmword [esp + 0xc0], xmm1
movaps xmmword [esp + 0xd0], xmm2
movaps xmmword [esp + 0xe0], xmm3
movaps xmmword [esp + 0xf0], xmm4
movaps xmmword [esp + 0x100], xmm5
movaps xmmword [esp + 0x110], xmm6
mov esi, dword [esp + 0x1bc]
mov dword [esp + 0x1bc], esi
mov esi, dword [ebp + 0x10]
movsldup xmm0, xmmword [edi]
movaps xmm4, xmmword [esp + 0x110]
movups xmm2, xmmword [eax + esi*8]
movups xmm3, xmmword [eax + ecx*8]
mulps xmm0, xmm2
shufps xmm2, xmm2, 0xb1
movshdup xmm1, xmmword [edi]
xorps xmm2, xmm4
mov esi, dword [esp + 0xac]
mulps xmm1, xmm2
movups xmm5, xmmword [eax + esi]
addps xmm0, xmm1
movsldup xmm1, xmmword [edi + 0x10]
mulps xmm1, xmm5
shufps xmm5, xmm5, 0xb1
movshdup xmm2, xmmword [edi + 0x10]
xorps xmm5, xmm4
mov esi, dword [esp + 0x1b8]
mulps xmm2, xmm5
movups xmm7, xmmword [eax + esi*8]
addps xmm1, xmm2
movsldup xmm2, xmmword [edi + 0x20]
mulps xmm2, xmm7
shufps xmm7, xmm7, 0xb1
movshdup xmm5, xmmword [edi + 0x20]
xorps xmm7, xmm4
mov esi, dword [esp + 0x1b4]
mulps xmm5, xmm7
movups xmm6, xmmword [eax + esi]
addps xmm2, xmm5
movsldup xmm5, xmmword [edi + 0x30]
mulps xmm5, xmm6
shufps xmm6, xmm6, 0xb1
movshdup xmm7, xmmword [edi + 0x30]
xorps xmm6, xmm4
mulps xmm7, xmm6
movshdup xmm6, xmmword [edi + 0x40]
addps xmm5, xmm7
movaps xmmword [esp + 0x120], xmm5
movsldup xmm5, xmmword [edi + 0x40]
mulps xmm5, xmm3
shufps xmm3, xmm3, 0xb1
xorps xmm3, xmm4
mulps xmm6, xmm3
movups xmm3, xmmword [eax + ebx]
addps xmm5, xmm6
movsldup xmm6, xmmword [edi + 0x50]
mulps xmm6, xmm3
shufps xmm3, xmm3, 0xb1
movshdup xmm7, xmmword [edi + 0x50]
xorps xmm3, xmm4
mulps xmm7, xmm3
movaps xmm4, xmm0
movaps xmm3, xmmword [esp + 0x120]
addps xmm6, xmm7
movaps xmm7, xmm1
addps xmm4, xmm6
addps xmm7, xmm5
subps xmm0, xmm6
subps xmm1, xmm5
movaps xmm6, xmm2
subps xmm2, xmm3
addps xmm6, xmm3
movaps xmm3, xmm4
shufps xmm0, xmm0, 0xb1
addps xmm3, xmm7
movaps xmmword [esp + 0x130], xmm0
addps xmm3, xmm6
movups xmm0, xmmword [eax]
shufps xmm1, xmm1, 0xb1
add eax, 0x10
shufps xmm2, xmm2, 0xb1
addps xmm3, xmm0
movaps xmmword [esp + 0x140], xmm1
movaps xmmword [esp + 0x150], xmm2
movaps xmm1, xmmword [esp + 0x100]
movaps xmm2, xmmword [esp + 0xf0]
movlps qword [edx], xmm3
movaps xmm5, xmm2
movhps qword [edx + 8], xmm3
movaps xmm3, xmm1
mulps xmm3, xmm4
mulps xmm5, xmm7
movaps xmmword [esp + 0x160], xmm0
addps xmm3, xmm5
movaps xmm5, xmmword [esp + 0xe0]
movaps xmm0, xmm5
mulps xmm0, xmm6
mov dword [esp + 0x1c0], edi
addps xmm3, xmm0
movaps xmmword [esp + 0x170], xmm3
movaps xmm0, xmm2
movaps xmm3, xmm5
mulps xmm0, xmm4
mulps xmm3, xmm7
mulps xmm4, xmm5
mulps xmm7, xmm1
addps xmm0, xmm3
addps xmm4, xmm7
movaps xmm3, xmm1
mulps xmm3, xmm6
mulps xmm6, xmm2
addps xmm0, xmm3
addps xmm4, xmm6
movaps xmmword [esp + 0x190], xmm4
movaps xmm3, xmmword [esp + 0xd0]
movaps xmm4, xmmword [esp + 0xc0]
movaps xmm2, xmm3
movaps xmmword [esp + 0x180], xmm0
movaps xmm6, xmm4
movaps xmm0, xmmword [esp + 0x130]
movaps xmm1, xmmword [esp + 0x140]
mulps xmm2, xmm0
mulps xmm6, xmm1
movaps xmm7, xmmword [esp + 0xb0]
addps xmm2, xmm6
movaps xmm5, xmmword [esp + 0x150]
movaps xmm6, xmm7
mulps xmm6, xmm5
mov edi, dword [ebp + 0x10]
addps xmm2, xmm6
movaps xmmword [esp + 0x1a0], xmm2
movaps xmm6, xmm4
movaps xmm2, xmm7
mulps xmm6, xmm0
mulps xmm2, xmm1
mulps xmm0, xmm7
mulps xmm1, xmm3
subps xmm6, xmm2
subps xmm0, xmm1
movaps xmm2, xmm3
mulps xmm2, xmm5
mulps xmm5, xmm4
subps xmm6, xmm2
addps xmm0, xmm5
movaps xmm4, xmmword [esp + 0x160]
movaps xmm2, xmmword [esp + 0x170]
nop
movaps xmm5, xmmword [esp + 0x180]
addps xmm2, xmm4
addps xmm5, xmm4
movaps xmm3, xmmword [esp + 0x190]
movaps xmm1, xmm2
movaps xmm7, xmm5
addps xmm3, xmm4
subps xmm7, xmm6
addps xmm5, xmm6
movaps xmm4, xmmword [esp + 0x1a0]
movaps xmm6, xmm3
subps xmm1, xmm4
subps xmm6, xmm0
addps xmm3, xmm0
addps xmm2, xmm4
movlps qword [edx + edi*8], xmm1
movhps qword [edx + edi*8 + 8], xmm1
mov edi, dword [esp + 0xac]
movlps qword [edx + edi], xmm7
movhps qword [edx + edi + 8], xmm7
mov edi, dword [esp + 0x1b8]
movlps qword [edx + edi*8], xmm6
movhps qword [edx + edi*8 + 8], xmm6
movlps qword [edx + esi], xmm3
movhps qword [edx + esi + 8], xmm3
mov esi, dword [esp + 0x1bc]
add esi, 2
mov edi, dword [esp + 0x1c0]
movlps qword [edx + ecx*8], xmm5
add edi, 0x60
movhps qword [edx + ecx*8 + 8], xmm5
movlps qword [edx + ebx], xmm2
movhps qword [edx + ebx + 8], xmm2
add edx, 0x10
cmp esi, dword [esp + 0x1b0]
jl 0x10116b5b
mov esi, dword [esp + 0xa4]
inc esi
add eax, ebx
add edx, ebx
cmp esi, dword [ebp + 0x14]
jl 0x101168e1
jmp 0x101172f8
cmp dword [ebp + 0x14], 0
jle 0x101172f8
mov esi, dword [ebp + 0x10]
mov ecx, esi
shl ecx, 4
mov dword [esp + 0x2c], ecx
lea ebx, [esi + esi*2]
mov ecx, esi
lea edi, [esi + esi*4]
mov dword [esp + 0x24], edi
lea esi, [esi + 1]
mov edi, esi
shr edi, 0x1f
add edi, esi
movaps xmm6, xmmword [0x103a06d0]
movaps xmm5, xmmword [0x103a06e0]
movaps xmm4, xmmword [0x103a06f0]
movaps xmm3, xmmword [0x103a0700]
movaps xmm2, xmmword [0x103a0710]
movaps xmm1, xmmword [0x103a0720]
movaps xmm0, xmmword [0x103a0730]
mov dword [esp + 0x28], ebx
shl ebx, 4
shl ecx, 5
sar edi, 1
mov dword [esp + 0x34], 0
movaps xmmword [esp + 0x40], xmm0
movaps xmmword [esp + 0x50], xmm1
movaps xmmword [esp + 0x60], xmm2
movaps xmmword [esp + 0x70], xmm3
movaps xmmword [esp + 0x80], xmm4
movaps xmmword [esp + 0x90], xmm5
movaps xmmword [esp + 0xa0], xmm6
mov dword [esp + 0x38], edi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x30], ebx
mov esi, eax
cmp dword [ebp + 0x10], 0
jle 0x1011729a
mov ebx, dword [esp + 0x30]
xor edi, edi
lea ecx, [ebx + eax]
mov dword [esp + 0x16c], ecx
lea ecx, [ebx + edx]
mov dword [esp + 0x170], ecx
mov ecx, dword [ebp + 0x10]
lea ebx, [eax + ecx*8]
mov dword [esp + 0x174], ebx
lea ebx, [edx + ecx*8]
mov dword [esp + 0x168], ebx
mov ebx, dword [esp + 0x2c]
lea ecx, [eax + ebx]
mov dword [esp + 0x164], ecx
lea ecx, [edx + ebx]
mov dword [esp + 0x160], ecx
mov ecx, dword [esp + 0x28]
lea ebx, [eax + ecx*8]
mov dword [esp + 0x15c], ebx
lea ebx, [edx + ecx*8]
mov dword [esp + 0x158], ebx
mov ebx, dword [esp + 0x20]
lea ecx, [eax + ebx]
mov dword [esp + 0x154], ecx
lea ecx, [edx + ebx]
mov dword [esp + 0x150], ecx
mov ebx, dword [esp + 0x24]
mov ecx, edx
lea eax, [eax + ebx*8]
mov dword [esp + 0x3c], eax
lea eax, [edx + ebx*8]
xor ebx, ebx
mov dword [esp + 0x178], eax
mov edx, dword [esp + 0x164]
mov eax, dword [esp + 0x174]
movaps xmm2, xmmword [ebx + edx]
mov edx, dword [esp + 0x154]
movaps xmm1, xmmword [ebx + eax]
mov eax, dword [esp + 0x15c]
movaps xmm4, xmmword [ebx + edx]
mov edx, dword [esp + 0x16c]
movaps xmm3, xmmword [ebx + eax]
mov eax, dword [esp + 0x3c]
movaps xmm6, xmmword [ebx + edx]
lea edx, [edi + edi*2]
shl edx, 5
inc edi
movaps xmm5, xmmword [ebx + eax]
mov eax, dword [ebp + 0x18]
movaps xmmword [esp + 0xb0], xmm6
movaps xmm6, xmmword [esp + 0xa0]
movsldup xmm0, xmmword [eax + edx]
mulps xmm0, xmm1
shufps xmm1, xmm1, 0xb1
movshdup xmm7, xmmword [eax + edx]
xorps xmm1, xmm6
mulps xmm7, xmm1
movsldup xmm1, xmmword [eax + edx + 0x10]
addps xmm0, xmm7
mulps xmm1, xmm2
shufps xmm2, xmm2, 0xb1
movshdup xmm7, xmmword [eax + edx + 0x10]
xorps xmm2, xmm6
mulps xmm7, xmm2
movsldup xmm2, xmmword [eax + edx + 0x20]
addps xmm1, xmm7
mulps xmm2, xmm3
shufps xmm3, xmm3, 0xb1
movshdup xmm7, xmmword [eax + edx + 0x20]
xorps xmm3, xmm6
mulps xmm7, xmm3
movshdup xmm3, xmmword [eax + edx + 0x30]
addps xmm2, xmm7
movsldup xmm7, xmmword [eax + edx + 0x30]
mulps xmm7, xmm4
shufps xmm4, xmm4, 0xb1
xorps xmm4, xmm6
mulps xmm3, xmm4
movshdup xmm4, xmmword [eax + edx + 0x40]
addps xmm7, xmm3
movaps xmmword [esp + 0xc0], xmm7
movsldup xmm7, xmmword [eax + edx + 0x40]
mulps xmm7, xmm5
shufps xmm5, xmm5, 0xb1
xorps xmm5, xmm6
mulps xmm4, xmm5
movsldup xmm5, xmmword [eax + edx + 0x50]
addps xmm7, xmm4
movaps xmm3, xmmword [esp + 0xb0]
mulps xmm5, xmm3
shufps xmm3, xmm3, 0xb1
nop
movshdup xmm4, xmmword [eax + edx + 0x50]
xorps xmm3, xmm6
mulps xmm4, xmm3
movaps xmm6, xmm2
movaps xmm3, xmmword [esp + 0xc0]
addps xmm5, xmm4
addps xmm6, xmm3
subps xmm2, xmm3
movaps xmm4, xmm0
subps xmm0, xmm5
addps xmm4, xmm5
movaps xmm5, xmm1
movaps xmm3, xmm4
shufps xmm0, xmm0, 0xb1
addps xmm5, xmm7
subps xmm1, xmm7
addps xmm3, xmm5
movaps xmmword [esp + 0xd0], xmm0
addps xmm3, xmm6
movaps xmm0, xmmword [ebx + esi]
movaps xmm7, xmmword [esp + 0x80]
addps xmm3, xmm0
movaps xmmword [ebx + ecx], xmm3
movaps xmm3, xmmword [esp + 0x90]
shufps xmm1, xmm1, 0xb1
movaps xmmword [esp + 0xe0], xmm1
movaps xmm1, xmm7
movaps xmmword [esp + 0x100], xmm0
movaps xmm0, xmm3
mulps xmm0, xmm4
mulps xmm1, xmm5
shufps xmm2, xmm2, 0xb1
addps xmm0, xmm1
movaps xmmword [esp + 0xf0], xmm2
movaps xmm2, xmmword [esp + 0x70]
movaps xmm1, xmm2
mulps xmm1, xmm6
mov eax, dword [esp + 0x168]
addps xmm0, xmm1
movaps xmmword [esp + 0x110], xmm0
movaps xmm1, xmm7
movaps xmm0, xmm2
mulps xmm1, xmm4
mulps xmm0, xmm5
mulps xmm4, xmm2
mulps xmm5, xmm3
addps xmm1, xmm0
addps xmm4, xmm5
movaps xmm0, xmm3
mulps xmm0, xmm6
mulps xmm6, xmm7
addps xmm1, xmm0
addps xmm4, xmm6
movaps xmmword [esp + 0x130], xmm4
movaps xmm4, xmmword [esp + 0x60]
movaps xmm3, xmmword [esp + 0x50]
movaps xmm2, xmm4
movaps xmmword [esp + 0x120], xmm1
movaps xmm5, xmm3
movaps xmm1, xmmword [esp + 0xd0]
movaps xmm6, xmmword [esp + 0xe0]
mulps xmm2, xmm1
mulps xmm5, xmm6
movaps xmm7, xmmword [esp + 0x40]
addps xmm2, xmm5
movaps xmm5, xmmword [esp + 0xf0]
movaps xmm0, xmm7
mulps xmm0, xmm5
mov edx, dword [esp + 0x160]
addps xmm2, xmm0
movaps xmmword [esp + 0x140], xmm2
movaps xmm0, xmm3
movaps xmm2, xmm7
mulps xmm0, xmm1
mulps xmm2, xmm6
mulps xmm1, xmm7
mulps xmm6, xmm4
subps xmm0, xmm2
subps xmm1, xmm6
movaps xmm2, xmm4
mulps xmm2, xmm5
mulps xmm5, xmm3
subps xmm0, xmm2
addps xmm1, xmm5
movaps xmm5, xmmword [esp + 0x100]
movaps xmm3, xmmword [esp + 0x110]
movaps xmm6, xmmword [esp + 0x120]
addps xmm3, xmm5
addps xmm6, xmm5
movaps xmm4, xmmword [esp + 0x130]
movaps xmm2, xmm3
movaps xmm7, xmmword [esp + 0x140]
addps xmm4, xmm5
subps xmm2, xmm7
addps xmm3, xmm7
movaps xmm5, xmm6
addps xmm6, xmm0
subps xmm5, xmm0
movaps xmm0, xmm4
addps xmm4, xmm1
subps xmm0, xmm1
movaps xmmword [ebx + eax], xmm2
movaps xmmword [ebx + edx], xmm5
mov eax, dword [esp + 0x158]
mov edx, dword [esp + 0x150]
movaps xmmword [ebx + eax], xmm0
movaps xmmword [ebx + edx], xmm4
mov eax, dword [esp + 0x178]
mov edx, dword [esp + 0x170]
movaps xmmword [ebx + eax], xmm6
lea eax, [ebx + esi + 0x10]
movaps xmmword [ebx + edx], xmm3
lea edx, [ebx + ecx + 0x10]
add ebx, 0x10
cmp edi, dword [esp + 0x38]
jb 0x10116faa
mov ebx, dword [esp + 0x34]
inc ebx
mov ecx, dword [esp + 0x30]
add eax, ecx
add edx, ecx
mov dword [esp + 0x34], ebx
cmp ebx, dword [ebp + 0x14]
jb 0x10116f0c
jmp 0x101172f8
test al, 0xf
jne 0x101172e2
test dl, 0xf
jne 0x101172e2
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], esi
call fcn.10117310
add esp, 0x1c4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], esi
call fcn.10118030
add esp, 0x1c4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret