Function at 0x140020490
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r14
push r15
sub rsp, 0x30
mov r14, rcx
mov rax, rdx
sub rax, rcx
movzx ebx, r9b
mov rcx, rax
mov r15, r8
sar rcx, 3
mov rbp, rdx
cmp rcx, 0x20
jle 0x1400206e5
nop dword [rax]
test r15, r15
jle 0x140020745
sar rax, 4
lea r8, [rbp - 8]
movzx r9d, bl
mov rcx, r14
lea rsi, [r14 + rax*8]
mov rdx, rsi
call fcn.14001eec0
lea rdi, [rsi + 8]
cmp r14, rsi
jae 0x14002052f
nop dword [rax]
mov rcx, qword [rsi - 8]
lea rdx, [rsi - 8]
mov rax, qword [rsi]
movsd xmm0, qword [rcx + 0xa8]
movsd xmm1, qword [rax + 0xa8]
comisd xmm0, xmm1
ja 0x14002052f
comisd xmm1, xmm0
ja 0x14002052f
mov rsi, rdx
cmp r14, rdx
jb 0x140020500
cmp rdi, rbp
jae 0x140020560
mov rax, qword [rsi]
movsd xmm0, qword [rax + 0xa8]
nop
mov rax, qword [rdi]
movsd xmm1, qword [rax + 0xa8]
comisd xmm1, xmm0
ja 0x140020560
comisd xmm0, xmm1
ja 0x140020560
add rdi, 8
cmp rdi, rbp
jb 0x140020540
mov rdx, rdi
mov r8, rsi
cmp rdx, rbp
jae 0x1400205ad
nop dword [rax + rax]
mov rcx, qword [rdx]
mov rax, qword [rsi]
movsd xmm1, qword [rcx + 0xa8]
movsd xmm0, qword [rax + 0xa8]
comisd xmm0, xmm1
ja 0x1400205a4
comisd xmm1, xmm0
ja 0x1400205ad
cmp rdi, rdx
je 0x1400205a0
mov rax, qword [rdi]
mov qword [rdi], rcx
mov qword [rdx], rax
add rdi, 8
add rdx, 8
cmp rdx, rbp
jb 0x140020570
cmp r8, r14
jbe 0x140020605
lea rcx, [r8 - 8]
nop word [rax + rax]
mov rax, qword [rsi]
mov r9, qword [rcx]
movsd xmm1, qword [rax + 0xa8]
movsd xmm0, qword [r9 + 0xa8]
comisd xmm0, xmm1
ja 0x1400205f5
comisd xmm1, xmm0
ja 0x140020602
sub rsi, 8
cmp rsi, rcx
je 0x1400205f5
mov rax, qword [rsi]
mov qword [rsi], r9
mov qword [rcx], rax
sub r8, 8
sub rcx, 8
cmp r14, r8
jb 0x1400205c0
cmp r8, r14
jne 0x14002063a
cmp rdx, rbp
je 0x140020683
cmp rdi, rdx
je 0x14002061d
mov rax, qword [rdi]
mov rcx, qword [rsi]
mov qword [rsi], rax
mov qword [rdi], rcx
mov rax, qword [rdx]
add rdi, 8
mov rcx, qword [rsi]
mov qword [rsi], rax
add rsi, 8
mov qword [rdx], rcx
add rdx, 8
jmp 0x140020566
add r8, 0xfffffffffffffff8
cmp rdx, rbp
jne 0x14002066e
sub rsi, 8
cmp r8, rsi
je 0x140020658
mov rax, qword [rsi]
mov rcx, qword [r8]
mov qword [r8], rax
mov qword [rsi], rcx
mov rax, qword [rdi - 8]
sub rdi, 8
mov rcx, qword [rsi]
mov qword [rsi], rax
mov qword [rdi], rcx
jmp 0x140020566
mov rcx, qword [rdx]
mov rax, qword [r8]
mov qword [rdx], rax
add rdx, 8
mov qword [r8], rcx
jmp 0x140020566
mov rcx, r15
mov rax, rsi
sar rcx, 2
sub rax, r14
sar r15, 1
and rax, 0xfffffffffffffff8
add r15, rcx
movzx r9d, bl
mov rcx, rbp
mov r8, r15
sub rcx, rdi
and rcx, 0xfffffffffffffff8
cmp rax, rcx
jge 0x1400206c0
mov rdx, rsi
mov rcx, r14
call fcn.140020490
mov r14, rdi
jmp 0x1400206ce
mov rdx, rbp
mov rcx, rdi
call fcn.140020490
mov rbp, rsi
mov rax, rbp
sub rax, r14
mov rcx, rax
sar rcx, 3
cmp rcx, 0x20
jg 0x1400204d0
cmp rcx, 2
jl 0x1400208ce
cmp r14, rbp
je 0x1400208ce
lea r15, [r14 + 8]
mov rbx, r15
cmp r15, rbp
je 0x1400208ce
mov edi, 8
nop dword [rax]
mov rsi, qword [rbx]
mov rdx, rbx
mov rax, qword [r14]
movsd xmm0, qword [rsi + 0xa8]
comisd xmm0, xmmword [rax + 0xa8]
jbe 0x140020891
mov r8, rdi
mov rdx, r14
mov rcx, r15
call sub.VCRUNTIME140.dll_memmove
mov qword [r14], rsi
jmp 0x1400208bd
cmp rcx, 0x20
jle 0x1400206e5
mov r10, rbp
sub r10, r14
sar r10, 3
mov r9, r10
sar r9, 1
test r9, r9
jle 0x140020831
lea r11, [r10 - 1]
sar r11, 1
nop dword [rax + rax]
mov rdi, qword [r14 + r9*8 - 8]
dec r9
mov r8, r9
mov rcx, r9
cmp r9, r11
jge 0x1400207cd
nop dword [rax]
nop word [rax + rax]
lea rdx, [rcx + rcx]
mov rcx, qword [r14 + rdx*8 + 0x10]
mov rax, qword [r14 + rdx*8 + 8]
movsd xmm0, qword [rcx + 0xa8]
xor ecx, ecx
comisd xmm0, xmmword [rax + 0xa8]
seta cl
xor rcx, 1
inc rcx
add rcx, rdx
mov rax, qword [r14 + rcx*8]
mov qword [r14 + r8*8], rax
mov r8, rcx
cmp rcx, r11
jl 0x140020790
cmp rcx, r11
jne 0x1400207e5
test r10b, 1
jne 0x1400207e5
mov rax, qword [r14 + r10*8 - 8]
mov qword [r14 + r8*8], rax
lea r8, [r10 - 1]
lea rax, [r8 - 1]
sar rax, 1
cmp r9, r8
jge 0x140020824
movsd xmm1, qword [rdi + 0xa8]
nop dword [rax]
mov rcx, qword [r14 + rax*8]
movsd xmm0, qword [rcx + 0xa8]
comisd xmm0, xmm1
jbe 0x140020824
mov qword [r14 + r8*8], rcx
mov r8, rax
dec rax
sar rax, 1
cmp r9, r8
jl 0x140020800
mov qword [r14 + r8*8], rdi
test r9, r9
jg 0x140020770
cmp r10, 2
jl 0x1400208ce
add rbp, 0xfffffffffffffff8
mov edi, 8
sub rdi, r14
cmp r10, 2
jl 0x14002087a
mov rax, qword [rbp]
lea r9, [rsp + 0x50]
mov qword [rsp + 0x50], rax
mov r8, rbp
mov rax, qword [r14]
sub r8, r14
sar r8, 3
xor edx, edx
mov rcx, r14
mov qword [rbp], rax
mov byte [rsp + 0x20], bl
call fcn.14001fe00
sub rbp, 8
lea rax, [rdi + rbp]
sar rax, 3
mov r10, rax
cmp rax, 2
jge 0x140020847
jmp 0x1400208ce
mov rax, rbx
nop dword [rax]
nop dword [rax + rax]
mov rcx, qword [rax - 8]
sub rax, 8
comisd xmm0, xmmword [rcx + 0xa8]
jbe 0x1400208ba
mov qword [rdx], rcx
mov rdx, rax
jmp 0x1400208a0
mov qword [rdx], rsi
add rbx, 8
add rdi, 8
cmp rbx, rbp
jne 0x140020710
mov rbx, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
add rsp, 0x30
pop r15
pop r14
pop rdi
ret