Function at 0x18008a090
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 0x18008a151
test rsi, rsi
jle 0x18008a1ac
mov r9, rbx
lea rcx, [rsp + 0x30]
mov r8, r13
mov rdx, rdi
call fcn.18008c620
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 0x18008a128
mov rdx, r14
mov rcx, rdi
call fcn.18008a090
mov rdi, rbp
jmp 0x18008a13b
mov rdx, r13
mov rcx, rbp
call fcn.18008a090
mov r13, r14
mov qword [rsp + 0x40], r14
mov rax, r13
sub rax, rdi
and rax, 0xfffffffffffffff8
cmp rax, 0x100
jg 0x18008a0c6
cmp rdi, r13
je 0x18008a360
lea r14, [rdi + 8]
cmp r14, r13
je 0x18008a360
nop word [rax + rax]
mov rbp, qword [r14]
mov rcx, rbx
mov r8, qword [rdi]
mov rdx, rbp
mov r15, r14
call fcn.18005d180
test al, al
je 0x18008a30d
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 0x18008a357
mov rax, r13
sub rax, rdi
sar rax, 3
mov r14, rax
mov qword [rsp + 0x30], rax
sar r14, 1
test r14, r14
jle 0x18008a29d
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 0x18008a22a
lea rsi, [rcx + rcx]
mov rcx, rbx
mov r8, qword [rdi + rsi*8 + 8]
mov rdx, qword [rdi + rsi*8 + 0x10]
call fcn.18005d180
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 0x18008a1f3
lea rdx, [r13 - 1]
cmp rbp, r15
jne 0x18008a241
test r13b, 1
jne 0x18008a241
mov rax, qword [rdi + r13*8 - 8]
mov qword [rdi + rbp*8], rax
mov rbp, rdx
cmp r14, rbp
jge 0x18008a27a
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.18005d180
test al, al
je 0x18008a27a
mov rax, qword [rdi + rsi*8]
mov qword [rdi + rbp*8], rax
mov rbp, rsi
cmp r14, rsi
jl 0x18008a250
mov qword [rdi + rbp*8], r12
lea rdx, [r13 - 1]
test r14, r14
jg 0x18008a1e0
mov r12, qword [rsp + 0xa8]
mov r13, qword [rsp + 0x40]
mov rax, qword [rsp + 0x30]
cmp rax, 2
jl 0x18008a360
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.18008d570
sub rsi, 8
lea rax, [r14 + rsi]
and rax, 0xfffffffffffffff8
cmp rax, 0x10
jge 0x18008a2c0
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.18005d180
test al, al
je 0x18008a350
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.18005d180
test al, al
jne 0x18008a330
mov qword [r15], rbp
add r14, 8
cmp r14, r13
jne 0x18008a170
add rsp, 0x50
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret