Function at 0x101612e0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x12c
mov eax, dword [0x102f0d80]
xor eax, esp
mov dword [esp + 0x128], eax
mov eax, dword [esp + 0x134]
mov edx, dword [esp + 0x13c]
mov ecx, dword [esp + 0x138]
push esi
mov esi, dword [esp + 0x134]
mov dword [esp + 0xc], edx
xor edx, edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], ecx
movsd xmm6, qword [esi]
cmp dword [eax], edx
jbe 0x101615ec
movsd xmm4, qword [0x10200570]
lea eax, [ecx + 8]
movsd xmm7, qword [0x101fcb90]
lea ecx, [esp + 0x3c]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x34]
sub eax, esi
mov dword [esp + 0x28], edx
push edi
lea edi, [esi - 0x10]
mov dword [esp + 0x18], eax
sub ecx, esi
mov dword [esp + 0x24], edi
mov dword [esp + 0x1c], ecx
movsd xmm2, qword [edi + 0x18]
xor ecx, ecx
xorps xmm2, xmm4
test edx, edx
je 0x10161476
cmp edx, 4
jb 0x101613e8
mov esi, edx
mov eax, edi
and esi, 0xfffffffc
lea edi, [esp + 0x30]
xorps xmm5, xmm5
xorps xmm3, xmm3
nop word [eax + eax]
movups xmm0, xmmword [edi + ecx*8]
movsd xmm1, qword [eax + 0x10]
movhpd xmm1, qword [eax + 8]
mulpd xmm1, xmm0
movups xmm0, xmmword [esp + ecx*8 + 0x40]
add ecx, 4
subpd xmm5, xmm1
movsd xmm1, qword [eax]
movhpd xmm1, qword [eax - 8]
sub eax, 0x20
mulpd xmm1, xmm0
subpd xmm3, xmm1
cmp ecx, esi
jb 0x10161390
addpd xmm3, xmm5
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
addsd xmm2, xmm3
cmp ecx, edx
jae 0x10161476
mov esi, dword [esp + 0x138]
mov eax, edx
sub eax, ecx
cmp eax, 4
jb 0x1016144b
add eax, 0xfffffffe
lea edi, [edx - 3]
lea eax, [esi + eax*8]
nop word [eax + eax]
movsd xmm0, qword [esp + ecx*8 + 0x30]
mulsd xmm0, qword [eax + 0x10]
subsd xmm2, xmm0
movsd xmm0, qword [esp + ecx*8 + 0x38]
mulsd xmm0, qword [eax + 8]
subsd xmm2, xmm0
movsd xmm0, qword [esp + ecx*8 + 0x40]
mulsd xmm0, qword [eax]
subsd xmm2, xmm0
movsd xmm0, qword [esp + ecx*8 + 0x48]
mulsd xmm0, qword [eax - 8]
add ecx, 4
sub eax, 0x20
mov esi, ecx
subsd xmm2, xmm0
cmp ecx, edi
jb 0x10161400
cmp esi, edx
jae 0x10161476
mov esi, dword [esp + 0x138]
mov eax, edx
sub eax, ecx
lea eax, [esi + eax*8]
nop dword [eax]
movsd xmm0, qword [esp + ecx*8 + 0x30]
inc ecx
mulsd xmm0, qword [eax]
sub eax, 8
subsd xmm2, xmm0
cmp ecx, edx
jb 0x10161460
divsd xmm2, xmm6
mov eax, dword [esp + 0x1c]
mov esi, edx
shr esi, 1
mov ecx, dword [esp + 0x24]
movsd qword [eax + ecx], xmm2
mov eax, 0
je 0x101614cb
add ecx, dword [esp + 0x18]
nop word [eax + eax]
movsd xmm1, qword [esp + eax*8 + 0x30]
movaps xmm0, xmm2
mulsd xmm0, qword [ecx]
addsd xmm0, xmm1
mulsd xmm1, xmm2
movsd qword [esp + eax*8 + 0x30], xmm0
inc eax
addsd xmm1, qword [ecx]
movsd qword [ecx], xmm1
sub ecx, 8
cmp eax, esi
jb 0x101614a0
test dl, 1
je 0x101614e3
movaps xmm0, xmm2
addsd xmm0, xmm7
mulsd xmm0, qword [esp + eax*8 + 0x30]
movsd qword [esp + eax*8 + 0x30], xmm0
mulsd xmm2, xmm2
lea edi, [edx + 1]
xor ecx, ecx
movaps xmm0, xmm7
subsd xmm0, xmm2
mulsd xmm6, xmm0
cmp edi, 4
jb 0x10161559
mov eax, dword [esp + 0x28]
lea esi, [edx - 3]
movsd xmm0, qword [esp + ecx*8 + 0x30]
lea eax, [eax + 0x10]
xorps xmm0, xmm4
cvtsd2ss xmm0, xmm0
movss dword [eax - 0x18], xmm0
movsd xmm0, qword [esp + ecx*8 + 0x38]
xorps xmm0, xmm4
cvtsd2ss xmm0, xmm0
movss dword [eax - 0x14], xmm0
movsd xmm0, qword [esp + ecx*8 + 0x40]
xorps xmm0, xmm4
cvtsd2ss xmm0, xmm0
movss dword [eax - 0x10], xmm0
movsd xmm0, qword [esp + ecx*8 + 0x48]
add ecx, 4
xorps xmm0, xmm4
cvtsd2ss xmm0, xmm0
movss dword [eax - 0xc], xmm0
cmp ecx, esi
jbe 0x10161503
cmp ecx, edx
ja 0x1016158c
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x14]
add eax, ecx
lea eax, [esi + eax*4]
mov esi, dword [esp + 0x2c]
nop word [eax + eax]
movsd xmm0, qword [esp + ecx*8 + 0x30]
lea eax, [eax + 4]
xorps xmm0, xmm4
inc ecx
cvtsd2ss xmm0, xmm0
movss dword [eax - 4], xmm0
cmp ecx, edx
jbe 0x10161570
jmp 0x10161590
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
xorps xmm0, xmm0
ucomisd xmm6, xmm0
movsd qword [eax + edx*8], xmm6
lahf
test ah, 0x44
mov eax, dword [esp + 0x20]
jnp 0x101615e9
sub dword [esp + 0x28], 0xffffff80
mov edx, edi
mov edi, dword [esp + 0x24]
add esi, 0x20
add edi, 8
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x138]
mov dword [esp + 0x24], edi
cmp edx, dword [eax]
jb 0x10161362
pop edi
pop esi
mov ecx, dword [esp + 0x128]
xor ecx, esp
call fcn.1011bad5
add esp, 0x12c
ret
mov dword [eax], edi
pop edi
mov ecx, dword [esp + 0x12c]
pop esi
xor ecx, esp
call fcn.1011bad5
add esp, 0x12c
ret