Function at 0x10150cc0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x130
mov eax, dword [0x102e5cc0]
xor eax, esp
mov dword [esp + 0x12c], eax
mov eax, dword [esp + 0x138]
mov edx, dword [esp + 0x140]
mov ecx, dword [esp + 0x13c]
push esi
mov esi, dword [esp + 0x138]
mov dword [esp + 0xc], edx
xor edx, edx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], ecx
movsd xmm6, qword [esi]
mov dword [esp + 0x28], edx
cmp dword [eax], edx
jbe 0x10150fe4
movsd xmm5, qword [0x101f4c00]
lea eax, [ecx + 8]
movsd xmm7, qword [0x101f33a8]
lea ecx, [esp + 0x40]
mov dword [esp + 0x24], eax
lea eax, [esp + 0x38]
sub eax, esi
mov dword [esp + 0x2c], 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, xmm5
test edx, edx
je 0x10150e58
cmp edx, 4
jb 0x10150dc8
mov esi, edx
mov eax, edi
and esi, 0xfffffffc
lea edi, [esp + 0x34]
xorps xmm4, xmm4
xorps xmm3, xmm3
nop
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 + 0x44]
add ecx, 4
subpd xmm4, xmm1
movsd xmm1, qword [eax]
movhpd xmm1, qword [eax - 8]
sub eax, 0x20
mulpd xmm1, xmm0
subpd xmm3, xmm1
cmp ecx, esi
jb 0x10150d70
addpd xmm3, xmm4
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
addsd xmm2, xmm3
cmp ecx, edx
jae 0x10150e58
mov esi, dword [esp + 0x13c]
mov eax, edx
sub eax, ecx
cmp eax, 4
jb 0x10150e34
add esi, 0xfffffff0
lea edi, [edx - 3]
lea edx, [esp + 0x34]
lea eax, [esi + eax*8]
nop
movsd xmm0, qword [edx + ecx*8]
lea esi, [esp + 0x44]
mulsd xmm0, qword [eax + 0x10]
subsd xmm2, xmm0
movsd xmm0, qword [esp + ecx*8 + 0x3c]
mulsd xmm0, qword [eax + 8]
subsd xmm2, xmm0
movsd xmm0, qword [esi + ecx*8]
mulsd xmm0, qword [eax]
lea esi, [esp + 0x4c]
subsd xmm2, xmm0
movsd xmm0, qword [esi + ecx*8]
mulsd xmm0, qword [eax - 8]
add ecx, 4
sub eax, 0x20
mov esi, ecx
subsd xmm2, xmm0
cmp ecx, edi
jb 0x10150de0
mov edx, dword [esp + 0x2c]
cmp esi, edx
jae 0x10150e58
mov esi, dword [esp + 0x13c]
mov eax, edx
sub eax, ecx
lea eax, [esi + eax*8]
movsd xmm0, qword [esp + ecx*8 + 0x34]
inc ecx
mulsd xmm0, qword [eax]
sub eax, 8
subsd xmm2, xmm0
cmp ecx, edx
jb 0x10150e42
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 0x10150eab
add ecx, dword [esp + 0x18]
nop dword [eax + eax]
movsd xmm1, qword [esp + eax*8 + 0x34]
movaps xmm0, xmm2
mulsd xmm0, qword [ecx]
addsd xmm0, xmm1
mulsd xmm1, xmm2
movsd qword [esp + eax*8 + 0x34], xmm0
inc eax
addsd xmm1, qword [ecx]
movsd qword [ecx], xmm1
sub ecx, 8
cmp eax, esi
jb 0x10150e80
test dl, 1
je 0x10150ec3
movaps xmm0, xmm2
addsd xmm0, xmm7
mulsd xmm0, qword [esp + eax*8 + 0x34]
movsd qword [esp + eax*8 + 0x34], xmm0
mulsd xmm2, xmm2
lea edi, [edx + 1]
mov dword [esp + 0x2c], edi
xor ecx, ecx
movaps xmm0, xmm7
subsd xmm0, xmm2
mulsd xmm6, xmm0
cmp edi, 4
jb 0x10150f53
mov eax, dword [esp + 0x28]
lea esi, [edx - 3]
lea edi, [esp + 0x34]
nop dword [eax + eax]
movsd xmm0, qword [edi + ecx*8]
lea eax, [eax + 0x10]
xorps xmm0, xmm5
lea edi, [esp + 0x44]
cvtsd2ss xmm0, xmm0
movss dword [eax - 0x18], xmm0
movsd xmm0, qword [esp + ecx*8 + 0x3c]
xorps xmm0, xmm5
cvtsd2ss xmm0, xmm0
movss dword [eax - 0x14], xmm0
movsd xmm0, qword [edi + ecx*8]
lea edi, [esp + 0x4c]
xorps xmm0, xmm5
cvtsd2ss xmm0, xmm0
movss dword [eax - 0x10], xmm0
movsd xmm0, qword [edi + ecx*8]
add ecx, 4
lea edi, [esp + 0x34]
xorps xmm0, xmm5
cvtsd2ss xmm0, xmm0
movss dword [eax - 0xc], xmm0
cmp ecx, esi
jbe 0x10150ef0
mov edi, dword [esp + 0x2c]
cmp ecx, edx
ja 0x10150f80
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x14]
add eax, ecx
lea eax, [esi + eax*4]
mov esi, dword [esp + 0x30]
movsd xmm0, qword [esp + ecx*8 + 0x34]
lea eax, [eax + 4]
xorps xmm0, xmm5
inc ecx
cvtsd2ss xmm0, xmm0
movss dword [eax - 4], xmm0
cmp ecx, edx
jbe 0x10150f64
jmp 0x10150f84
mov esi, dword [esp + 0x30]
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 0x10150fe1
sub dword [esp + 0x28], 0xffffff80
mov edx, edi
mov edi, dword [esp + 0x24]
add esi, 0x20
add edi, 8
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x13c]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x24], edi
cmp edx, dword [eax]
jb 0x10150d46
pop edi
pop esi
mov ecx, dword [esp + 0x12c]
xor ecx, esp
call fcn.1010d06f
add esp, 0x130
ret
mov dword [eax], edi
pop edi
mov ecx, dword [esp + 0x130]
pop esi
xor ecx, esp
call fcn.1010d06f
add esp, 0x130
ret