Function at 0x705124e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xc8
movaps xmmword [rsp + 0x40], xmm6
movaps xmmword [rsp + 0x50], xmm7
movaps xmmword [rsp + 0x60], xmm8
movaps xmmword [rsp + 0x70], xmm9
movaps xmmword [rsp + 0x80], xmm10
movaps xmmword [rsp + 0x90], xmm11
movaps xmmword [rsp + 0xa0], xmm12
movaps xmmword [rsp + 0xb0], xmm13
test rcx, rcx
je 0x7051283f
movsxd rbx, dword [rcx]
mov rbp, r8
mov rsi, rdx
mov r12, rcx
cmp ebx, 0x20
jle 0x7051288d
cmp qword [rcx + 0x10], 0
je 0x7051288d
mov rax, qword [rcx + 8]
test rax, rax
mov qword [rsp + 0x20], rax
je 0x7051288d
mov rdi, qword [rcx + 0x18]
test rdi, rdi
je 0x7051288d
mov eax, ebx
mov r14, qword [rsp + 0x20]
mov ecx, ebx
sar eax, 1
sar ecx, 3
mov r13d, ebx
mov dword [rsp + 0x38], eax
cdqe
sar r13d, 2
lea rdx, [rax*8]
mov dword [rsp + 0x28], ecx
mov r15, rdx
mov qword [rsp + 0x30], rdx
lea r8, [rdi + rdx]
add r14, r15
lea r15d, [rcx - 1]
movsxd rdx, r13d
add rax, rdx
mov rdx, r14
shr r15d, 1
lea r9, [rsi + rax*8]
mov r11d, r15d
mov rax, r11
mov rcx, r9
shl rax, 5
sub rcx, rax
xor eax, eax
lea r10, [rcx - 0x20]
mov rcx, r9
nop dword [rax + rax]
sub rcx, 0x20
movsd xmm1, qword [rcx + 0x10]
movsd xmm0, qword [rcx]
sub rdx, 0x10
addsd xmm1, qword [r9 + rax*2 + 8]
movsd xmm3, qword [rdx + 8]
addsd xmm0, qword [r9 + rax*2 + 0x18]
movsd xmm2, qword [rdx]
mulsd xmm2, xmm1
mulsd xmm3, xmm0
addsd xmm2, xmm3
movsd qword [r8 + rax], xmm2
mulsd xmm0, qword [rdx]
mulsd xmm1, qword [rdx + 8]
subsd xmm0, xmm1
movsd qword [r8 + rax + 8], xmm0
add rax, 0x10
cmp rcx, r10
jne 0x705125e0
mov rax, r11
mov edx, dword [rsp + 0x38]
sub edx, dword [rsp + 0x28]
not rax
lea r15d, [r15 + r15 + 2]
lea r10, [rsi + 8]
mov r11, rax
shl rax, 4
shl r11, 5
add rax, r14
add r11, r9
cmp edx, r15d
jle 0x7051270a
sub edx, 1
movsxd rcx, r15d
mov r9, r10
sub edx, r15d
lea rcx, [r8 + rcx*8]
shr edx, 1
mov dword [rsp + 0x3c], edx
mov qword [rsp + 0x28], rdx
shl rdx, 5
lea r14, [rsi + rdx + 0x28]
mov rdx, rax
nop
sub r11, 0x20
movsd xmm1, qword [r11 + 0x10]
movsd xmm0, qword [r11]
sub rdx, 0x10
subsd xmm1, qword [r9]
movsd xmm3, qword [rdx + 8]
subsd xmm0, qword [r9 + 0x10]
movsd xmm2, qword [rdx]
add r9, 0x20
add rcx, 0x10
mulsd xmm2, xmm1
mulsd xmm3, xmm0
addsd xmm2, xmm3
movsd qword [rcx - 0x10], xmm2
mulsd xmm0, qword [rdx]
mulsd xmm1, qword [rdx + 8]
subsd xmm0, xmm1
movsd qword [rcx - 8], xmm0
cmp r9, r14
jne 0x70512690
mov rdx, qword [rsp + 0x28]
add rdx, 1
mov rcx, rdx
shl rdx, 5
shl rcx, 4
add r10, rdx
sub rax, rcx
mov ecx, dword [rsp + 0x3c]
lea r15d, [r15 + rcx*2 + 2]
cmp dword [rsp + 0x38], r15d
lea rdx, [rsi + rbx*8]
jle 0x705127ae
mov esi, dword [rsp + 0x38]
movsxd rcx, r15d
lea rcx, [r8 + rcx*8]
movsd xmm4, qword [0x705a6450]
lea r9d, [rsi - 1]
mov rsi, rdx
sub r9d, r15d
shr r9d, 1
shl r9, 5
sub rsi, r9
mov r9, rsi
sub r9, 0x20
nop word [rax + rax]
sub rdx, 0x20
movsd xmm1, qword [rdx + 0x10]
movsd xmm0, qword [rdx]
sub rax, 0x10
xorpd xmm1, xmm4
add r10, 0x20
xorpd xmm0, xmm4
add rcx, 0x10
movsd xmm3, qword [rax + 8]
subsd xmm1, qword [r10 - 0x20]
movsd xmm2, qword [rax]
subsd xmm0, qword [r10 - 0x10]
mulsd xmm2, xmm1
mulsd xmm3, xmm0
addsd xmm2, xmm3
movsd qword [rcx - 0x10], xmm2
mulsd xmm0, qword [rax]
mulsd xmm1, qword [rax + 8]
subsd xmm0, xmm1
movsd qword [rcx - 8], xmm0
cmp rdx, r9
jne 0x70512750
mov ecx, dword [r12 + 4]
mov r9d, dword [rsp + 0x38]
mov rdx, qword [rsp + 0x20]
call fcn.70504250
mov rdx, rdi
mov rcx, r12
call fcn.70502b50
mov rcx, qword [rsp + 0x30]
xor edx, edx
mov rax, rcx
add rax, qword [r12 + 8]
add rcx, rbp
nop
movsd xmm0, qword [rdi]
sub rcx, 8
movsd xmm1, qword [rax]
add rdi, 0x10
add rax, 0x10
mulsd xmm1, xmm0
movsd xmm0, qword [rdi - 8]
mulsd xmm0, qword [rax - 8]
addsd xmm0, xmm1
mulsd xmm0, qword [r12 + 0x20]
movsd qword [rbp + rdx*8], xmm0
add rdx, 1
movsd xmm0, qword [rdi - 0x10]
movsd xmm1, qword [rdi - 8]
mulsd xmm0, qword [rax - 8]
mulsd xmm1, qword [rax - 0x10]
cmp r13d, edx
subsd xmm0, xmm1
mulsd xmm0, qword [r12 + 0x20]
movsd qword [rcx], xmm0
jg 0x705127e0
movaps xmm6, xmmword [rsp + 0x40]
movaps xmm7, xmmword [rsp + 0x50]
movaps xmm8, xmmword [rsp + 0x60]
movaps xmm9, xmmword [rsp + 0x70]
movaps xmm10, xmmword [rsp + 0x80]
movaps xmm11, xmmword [rsp + 0x90]
movaps xmm12, xmmword [rsp + 0xa0]
movaps xmm13, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
pxor xmm10, xmm10
mov r13d, ebx
shr r13d, 0x1f
movsd xmm9, qword [0x705a6470]
add r13d, ebx
xor r12d, r12d
cvtsi2sd xmm10, ebx
sar r13d, 1
test r13d, r13d
pxor xmm11, xmm11
divsd xmm9, xmm10
jle 0x7051283f
test ebx, ebx
movsd xmm12, qword [0x705a6308]
movsd xmm7, qword [0x705a6478]
jle 0x7051294d
pxor xmm6, xmm6
movapd xmm8, xmm10
movapd xmm13, xmm11
xor edi, edi
mulsd xmm8, xmm12
cvtsi2sd xmm6, r12d
addsd xmm6, xmm6
addsd xmm6, xmm7
nop word cs:[rax + rax]
pxor xmm0, xmm0
cvtsi2sd xmm0, edi
addsd xmm0, xmm0
addsd xmm0, xmm7
addsd xmm0, xmm8
mulsd xmm0, xmm9
mulsd xmm0, xmm6
call fcn.70532510
mulsd xmm0, qword [rsi + rdi*8]
add rdi, 1
cmp ebx, edi
addsd xmm13, xmm0
jg 0x70512900
movsd qword [rbp + r12*8], xmm13
add r12, 1
cmp r13d, r12d
jle 0x7051283f
test ebx, ebx
jg 0x705128d4
movapd xmm13, xmm11
movsd qword [rbp + r12*8], xmm13
add r12, 1
cmp r13d, r12d
jg 0x70512949
jmp 0x7051283f