Function at 0x1401ca820
Capabilities:
Encode data using xor

Disassembly:
push rbx
sub rsp, 0x60
mov qword [rcx + 0xa0], 0
mov rdx, qword [rcx + 0x10]
movaps xmmword [rsp + 0x30], xmm8
sub rdx, qword [rcx + 8]
movabs rax, 0x2aaaaaaaaaaaaaab
movaps xmmword [rsp + 0x20], xmm9
xorpd xmm9, xmm9
movapd xmm8, xmm9
mov rbx, rcx
imul rdx
sar rdx, 2
mov rax, rdx
shr rax, 0x3f
add rdx, rax
dec edx
movsxd r8, edx
js 0x1401cab60
lea rdx, [r8 + 1]
movaps xmmword [rsp + 0x50], xmm6
movaps xmmword [rsp + 0x40], xmm7
movsd xmm7, qword [0x140329d10]
cmp rdx, 4
jl 0x1401caa3b
mov rcx, qword [rcx + 0x28]
mov rax, qword [rbx + 0x48]
mov r9, qword [rbx + 8]
mov qword [rsp + 0x70], rsi
lea rsi, [rax + r8*8 - 0x10]
lea rax, [r8 + r8*2]
lea r11, [r9 + rax*8 - 0x10]
shr rdx, 2
lea r10, [rcx + rax*8 + 8]
mov qword [rsp + 0x78], rdi
lea rdi, [rcx + rax*8 - 0x10]
mov rax, rdx
sub r9, rcx
neg rax
lea r8, [r8 + rax*4]
nop word [rax + rax]
movsd xmm6, qword [r10 + r9]
movsd xmm5, qword [r10 + r9 + 8]
movsd xmm2, qword [r10 + 8]
sub rsi, 0x20
sub r10, 0x60
sub rdi, 0x60
movsd xmm3, qword [r11 + 8]
movsd xmm4, qword [r11]
movapd xmm0, xmm5
mulsd xmm5, qword [r10 + 0x60]
sub r11, 0x60
dec rdx
mulsd xmm0, xmm2
xorpd xmm2, xmm7
movapd xmm1, xmm6
mulsd xmm1, qword [r10 + 0x60]
mulsd xmm6, xmm2
movsd xmm2, qword [r11 + 0x48]
addsd xmm6, xmm5
movsd xmm5, qword [r11 + 0x50]
mulsd xmm6, qword [rsi + 0x30]
addsd xmm1, xmm0
movapd xmm0, xmm4
mulsd xmm1, qword [rsi + 0x30]
mulsd xmm0, qword [rdi + 0x60]
addsd xmm8, xmm6
addsd xmm9, xmm1
movapd xmm1, xmm3
mulsd xmm1, qword [rdi + 0x68]
mulsd xmm3, qword [r10 + 0x48]
addsd xmm1, xmm0
movsd xmm0, qword [r10 + 0x50]
mulsd xmm1, qword [rsi + 0x28]
xorpd xmm0, xmm7
mulsd xmm4, xmm0
addsd xmm9, xmm1
movapd xmm1, xmm2
movapd xmm0, xmm5
mulsd xmm1, qword [rdi + 0x48]
mulsd xmm5, qword [r10 + 0x30]
addsd xmm4, xmm3
mulsd xmm0, qword [rdi + 0x50]
mulsd xmm4, qword [rsi + 0x28]
addsd xmm1, xmm0
movsd xmm0, qword [r10 + 0x38]
addsd xmm8, xmm4
mulsd xmm1, qword [rsi + 0x20]
xorpd xmm0, xmm7
movsd xmm4, qword [r11 + 0x38]
addsd xmm9, xmm1
mulsd xmm2, xmm0
movapd xmm0, xmm4
mulsd xmm4, qword [r10 + 0x18]
addsd xmm5, xmm2
mulsd xmm0, qword [rdi + 0x38]
mulsd xmm5, qword [rsi + 0x20]
movsd xmm2, qword [r11 + 0x30]
movapd xmm1, xmm2
addsd xmm8, xmm5
mulsd xmm1, qword [rdi + 0x30]
addsd xmm1, xmm0
movsd xmm0, qword [r10 + 0x20]
xorpd xmm0, xmm7
mulsd xmm1, qword [rsi + 0x18]
mulsd xmm2, xmm0
addsd xmm4, xmm2
addsd xmm9, xmm1
mulsd xmm4, qword [rsi + 0x18]
addsd xmm8, xmm4
jne 0x1401ca8e0
mov rdi, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x70]
test r8, r8
js 0x1401caaba
mov rax, qword [rbx + 0x48]
lea rcx, [r8 + r8*2]
lea r10, [rax + r8*8]
mov rax, qword [rbx + 8]
lea rdx, [rax + rcx*8 + 8]
mov rax, qword [rbx + 0x28]
lea r9, [rax + rcx*8 + 8]
movsd xmm6, qword [rdx + 8]
movsd xmm3, qword [r9 + 8]
movsd xmm5, qword [rdx]
sub rdx, 0x18
sub r10, 8
movsd xmm0, qword [r9]
movapd xmm1, xmm6
mulsd xmm6, qword [r9]
sub r9, 0x18
dec r8
mulsd xmm1, xmm3
mulsd xmm0, xmm5
xorpd xmm3, xmm7
addsd xmm1, xmm0
mulsd xmm1, qword [r10 + 8]
mulsd xmm5, xmm3
addsd xmm6, xmm5
addsd xmm9, xmm1
mulsd xmm6, qword [r10 + 8]
addsd xmm8, xmm6
jns 0x1401caa5e
ucomisd xmm8, qword [0x1402cb440]
jp 0x1401caacb
je 0x1401cab56
movapd xmm6, xmm8
movapd xmm0, xmm9
mulsd xmm0, xmm9
mulsd xmm6, xmm8
addsd xmm0, xmm6
call sub.MSVCR100.dll_sqrt
movapd xmm7, xmm0
movapd xmm0, xmm9
subsd xmm0, xmm7
mulsd xmm0, xmm0
addsd xmm0, xmm6
call sub.MSVCR100.dll_sqrt
subsd xmm7, xmm9
divsd xmm8, xmm0
divsd xmm7, xmm0
movapd xmm0, xmm7
movapd xmm1, xmm8
call sub.MSVCR100.dll_atan2
movsd xmm1, qword [0x140314ce0]
movsd xmm2, qword [0x140314ce8]
mulsd xmm0, qword [0x140329dc0]
comisd xmm1, xmm0
jbe 0x1401cab40
addsd xmm0, xmm2
comisd xmm0, xmmword [0x1402d02f8]
jbe 0x1401cab4e
subsd xmm0, xmm2
movsd qword [rbx + 0xa0], xmm0
movaps xmm6, xmmword [rsp + 0x50]
movaps xmm7, xmmword [rsp + 0x40]
movaps xmm8, xmmword [rsp + 0x30]
movaps xmm9, xmmword [rsp + 0x20]
add rsp, 0x60
pop rbx
ret