Function at 0x140115640
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov r13, rcx
test rcx, rcx
je 0x1401157aa
mov r8, qword [0x1408a6930]
test r8, r8
je 0x1401157aa
mov r12, qword [r8 + 8]
movabs rax, 0x4ec4ec4ec4ec4ec5
mov r8, qword [r8]
mov rdx, r12
sub rdx, r8
imul rdx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
je 0x1401157aa
xor r15d, r15d
cmp r8, r12
je 0x1401157a3
lea r14, [0x140713b6d]
nop dword [rax]
movzx esi, byte [r8]
mov ebp, r15d
movzx ecx, byte [r8 + 1]
mov rax, r14
movzx edx, byte [r8 + 2]
movzx r9d, byte [r8 + 3]
movzx r10d, byte [r8 + 4]
movzx r11d, byte [r8 + 5]
movzx ebx, byte [r8 + 6]
movzx edi, byte [r8 + 7]
nop dword [rax]
xor sil, byte [rax]
lea rax, [rax + 1]
mov byte [r8], sil
inc ebp
xor cl, byte [rax - 1]
mov byte [r8 + 1], cl
xor dl, byte [rax - 1]
mov byte [r8 + 2], dl
xor r9b, byte [rax - 1]
mov byte [r8 + 3], r9b
xor r10b, byte [rax - 1]
mov byte [r8 + 4], r10b
xor r11b, byte [rax - 1]
mov byte [r8 + 5], r11b
xor bl, byte [rax - 1]
mov byte [r8 + 6], bl
xor dil, byte [rax - 1]
mov byte [r8 + 7], dil
cmp ebp, 1
jb 0x1401156f0
mov rax, qword [r8]
cmp rax, r13
je 0x1401157d0
mov ebp, r15d
mov rax, r14
nop dword [rax + rax]
xor sil, byte [rax]
lea rax, [rax + 1]
mov byte [r8], sil
inc ebp
xor cl, byte [rax - 1]
mov byte [r8 + 1], cl
xor dl, byte [rax - 1]
mov byte [r8 + 2], dl
xor r9b, byte [rax - 1]
mov byte [r8 + 3], r9b
xor r10b, byte [rax - 1]
mov byte [r8 + 4], r10b
xor r11b, byte [rax - 1]
mov byte [r8 + 5], r11b
xor bl, byte [rax - 1]
mov byte [r8 + 6], bl
xor dil, byte [rax - 1]
mov byte [r8 + 7], dil
cmp ebp, 1
jb 0x140115750
add r8, 0x1a
cmp r8, r12
jne 0x1401156c0
mov qword [0x1408a8648], r15
xor al, al
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
xor al, byte [r14]
lea r14, [r14 + 1]
mov byte [r8], al
inc r15d
xor cl, byte [r14 - 1]
mov byte [r8 + 1], cl
xor dl, byte [r14 - 1]
mov byte [r8 + 2], dl
xor r9b, byte [r14 - 1]
mov byte [r8 + 3], r9b
xor r10b, byte [r14 - 1]
mov byte [r8 + 4], r10b
xor r11b, byte [r14 - 1]
mov byte [r8 + 5], r11b
xor bl, byte [r14 - 1]
mov byte [r8 + 6], bl
xor dil, byte [r14 - 1]
mov byte [r8 + 7], dil
cmp r15d, 1
jb 0x1401157d0
mov qword [0x1408a8648], r8
test r8, r8
je 0x1401157aa
mov r9, qword [0x1408a6930]
movabs rdi, 0x4ec4ec4ec4ec4ec5
mov r10, qword [r8 + 0xa]
mov rax, rdi
mov rbx, r9
mov rcx, qword [r9 + 8]
sub rcx, qword [r9]
imul rcx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
lea rax, [rdx - 1]
cmp rax, r10
jbe 0x1401158a9
inc r10
cmp r10, rdx
jae 0x1401158a9
imul r11, r10, 0x1a
nop
mov rax, qword [r9]
lea r11, [r11 + 0x1a]
inc r10
dec qword [r11 + rax - 0x10]
mov rax, rdi
mov r9, qword [0x1408a6930]
mov rbx, r9
mov rcx, qword [r9 + 8]
sub rcx, qword [r9]
imul rcx
sar rdx, 3
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp r10, rdx
jb 0x140115870
imul rcx, qword [r8 + 0xa], 0x1a
mov r8, qword [rbx + 8]
add rcx, qword [r9]
lea rdx, [rcx + 0x1a]
sub r8, rdx
call sub.VCRUNTIME140.dll_memmove
add qword [rbx + 8], 0xffffffffffffffe6
mov al, 1
jmp 0x1401157ac