Function at 0x180086c80
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x50
mov rax, rdx
mov qword [rsp + 0x40], rdx
sub rax, rcx
mov rbx, r9
and rax, 0xfffffffffffffff8
mov rsi, r8
mov r13, rdx
mov rdi, rcx
cmp rax, 0x100
jle 0x180086d41
test rsi, rsi
jle 0x180086d9c
mov r9, rbx
lea rcx, [rsp + 0x30]
mov r8, r13
mov rdx, rdi
call fcn.1800894c0
mov r14, qword [rsp + 0x30]
mov rcx, rsi
mov rbp, qword [rsp + 0x38]
mov rax, r14
sar rcx, 2
sub rax, rdi
sar rsi, 1
and rax, 0xfffffffffffffff8
add rsi, rcx
mov r9, rbx
mov rcx, r13
mov r8, rsi
sub rcx, rbp
and rcx, 0xfffffffffffffff8
cmp rax, rcx
jge 0x180086d18
mov rdx, r14
mov rcx, rdi
call fcn.180086c80
mov rdi, rbp
jmp 0x180086d2b
mov rdx, r13
mov rcx, rbp
call fcn.180086c80
mov r13, r14
mov qword [rsp + 0x40], r14
mov rax, r13
sub rax, rdi
and rax, 0xfffffffffffffff8
cmp rax, 0x100
jg 0x180086cb6
cmp rdi, r13
je 0x180086f50
lea r14, [rdi + 8]
cmp r14, r13
je 0x180086f50
nop word [rax + rax]
mov rbp, qword [r14]
mov rcx, rbx
mov r8, qword [rdi]
mov rdx, rbp
mov r15, r14
call fcn.180059e30
test al, al
je 0x180086efd
mov r8, r14
mov rdx, rdi
add r14, 8
sub r8, rdi
mov rcx, r14
sub rcx, r8
call sub.VCRUNTIME140.dll_memmove
mov qword [rdi], rbp
jmp 0x180086f47
mov rax, r13
sub rax, rdi
sar rax, 3
mov r14, rax
mov qword [rsp + 0x30], rax
sar r14, 1
test r14, r14
jle 0x180086e8d
lea rdx, [rax - 1]
mov qword [rsp + 0xa8], r12
mov r15, rdx
mov r13, rax
sar r15, 1
nop
mov r12, qword [rdi + r14*8 - 8]
dec r14
mov rbp, r14
mov rcx, r14
cmp r14, r15
jge 0x180086e1a
lea rsi, [rcx + rcx]
mov rcx, rbx
mov r8, qword [rdi + rsi*8 + 8]
mov rdx, qword [rdi + rsi*8 + 0x10]
call fcn.180059e30
movzx ecx, al
xor rcx, 1
inc rcx
add rcx, rsi
mov rax, qword [rdi + rcx*8]
mov qword [rdi + rbp*8], rax
mov rbp, rcx
cmp rcx, r15
jl 0x180086de3
lea rdx, [r13 - 1]
cmp rbp, r15
jne 0x180086e31
test r13b, 1
jne 0x180086e31
mov rax, qword [rdi + r13*8 - 8]
mov qword [rdi + rbp*8], rax
mov rbp, rdx
cmp r14, rbp
jge 0x180086e6a
nop word [rax + rax]
lea rsi, [rbp - 1]
mov r8, r12
sar rsi, 1
mov rcx, rbx
mov rdx, qword [rdi + rsi*8]
call fcn.180059e30
test al, al
je 0x180086e6a
mov rax, qword [rdi + rsi*8]
mov qword [rdi + rbp*8], rax
mov rbp, rsi
cmp r14, rsi
jl 0x180086e40
mov qword [rdi + rbp*8], r12
lea rdx, [r13 - 1]
test r14, r14
jg 0x180086dd0
mov r12, qword [rsp + 0xa8]
mov r13, qword [rsp + 0x40]
mov rax, qword [rsp + 0x30]
cmp rax, 2
jl 0x180086f50
mov r14d, 8
lea rsi, [r13 - 8]
sub r14, rdi
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [rsi]
lea r9, [rsp + 0x30]
mov qword [rsp + 0x30], rax
mov r8, rsi
mov rax, qword [rdi]
sub r8, rdi
sar r8, 3
xor edx, edx
mov rcx, rdi
mov qword [rsi], rax
mov qword [rsp + 0x20], rbx
call fcn.18008a780
sub rsi, 8
lea rax, [r14 + rsi]
and rax, 0xfffffffffffffff8
cmp rax, 0x10
jge 0x180086eb0
add rsp, 0x50
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov r8, qword [r14 - 8]
lea rsi, [r14 - 8]
mov rdx, rbp
mov rcx, rbx
call fcn.180059e30
test al, al
je 0x180086f40
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [rsi]
mov rdx, rbp
mov qword [r15], rax
mov rcx, rbx
mov r8, qword [rsi - 8]
mov r15, rsi
sub rsi, 8
call fcn.180059e30
test al, al
jne 0x180086f20
mov qword [r15], rbp
add r14, 8
cmp r14, r13
jne 0x180086d60
add rsp, 0x50
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret