Function at 0x180018fe0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov rsi, rcx
call fcn.18001c9c0
cmp eax, 0x2a
je 0x18001902b
cmp eax, 0x2f
jne 0x180019092
mov edi, 0x4803
nop dword [rax + rax]
mov rcx, rsi
call fcn.18001c9c0
inc eax
cmp eax, 0xf
jae 0x180019010
bt edi, eax
jae 0x180019010
mov al, 1
jmp 0x180019315
lea rdi, [rsi + 0x28]
lea rbx, [rsi + 0x30]
jmp 0x180019047
inc eax
cmp eax, 1
jbe 0x1800190a7
mov rcx, rsi
call fcn.18001c9c0
cmp eax, 0x2a
jne 0x180019040
mov rcx, rsi
call fcn.18001c9c0
cmp eax, 0x2f
je 0x180019024
mov byte [rsi + 0x18], 1
dec qword [rsi + 0x20]
mov rax, qword [rsi + 0x28]
mov rcx, rdi
test rax, rax
jne 0x180019080
mov rax, qword [rbx]
mov rcx, rbx
test rax, rax
je 0x180019086
dec rax
mov qword [rcx], rax
cmp dword [rsi + 0x14], 0xffffffff
je 0x180019047
dec qword [rsi + 0x40]
jmp 0x180019047
cmp byte [0x180045c08], 0
je 0x1800190c0
lea r8, [0x180044800]
jmp 0x180019302
cmp byte [0x180045bd7], 0
je 0x1800191d9
lea r8, [0x1800447f8]
jmp 0x180019302
mov rax, qword [0x1800447f0]
movabs r10, 0x31ce915c70d1a7ed
add r10, rax
movabs r11, 0x31ce915c70d1a7db
add r11, rax
xor ecx, ecx
movabs rdi, 0xe38e38e38e38e38f
lea rbx, [0x180045bd8]
lea r8, [0x180044800]
lea r13, [0x180045c08]
nop word cs:[rax + rax]
mov rax, rcx
mul rdi
shr rdx, 3
and rdx, 0xfffffffffffffffe
lea rax, [rdx + rdx*8]
mov rdx, r11
sub rdx, rax
movzx eax, byte [r10 + rcx]
movzx edx, byte [rdx + rcx]
mov ebp, edx
not bpl
or bpl, 0x4a
xor al, 0x4a
mov r9d, edx
and r9b, 0x40
or r9b, 0xb3
mov r15d, edx
and r15b, 0xa
or r15b, 0xa4
xor r15b, r9b
mov r9d, r15d
xor r9b, 8
mov r14d, ebp
and r14b, 0x82
mov r12d, edx
and r12b, 0x20
or r12b, r14b
mov r14d, edx
and r14b, 0x15
xor r12b, 0xc2
xor r15b, 0xf7
and r15b, r12b
or r14b, 0xa
and r14b, r9b
or r14b, r15b
mov r9d, edx
and r9b, 0xa4
and bpl, 0x51
or bpl, r9b
mov r9d, edx
and r9b, 0x4a
or r9b, 0x11
or bpl, 0xa
xor bpl, r9b
xor dl, 0xb5
or dl, bpl
not dl
or dl, r14b
mov r9d, eax
xor r9b, al
xor r9b, dl
and r9b, dl
xor r9b, al
mov byte [rcx + rbx], r9b
inc rcx
cmp rcx, 0x30
jne 0x180019110
jmp 0x1800192fd
mov rax, qword [0x1800447f0]
movabs r10, 0x31ce915c70d1a7a3
add r10, rax
movabs r11, 0x31ce915c70d1a78b
add r11, rax
xor ecx, ecx
movabs rdi, 0xaaaaaaaaaaaaaaab
lea rbx, [0x180045bb1]
lea r8, [0x1800447f8]
nop word cs:[rax + rax]
mov rax, rcx
mul rdi
shr rdx, 1
and rdx, 0xfffffffffffffff8
lea rax, [rdx + rdx*2]
mov r14, r11
sub r14, rax
movzx edx, byte [r10 + rcx]
mov eax, edx
not al
movzx r14d, byte [r14 + rcx]
mov r15d, edx
or r15b, 0xf7
and al, 8
mov r12d, edx
xor r12b, 0xf7
mov r13d, eax
or r13b, r12b
not r13b
mov ebp, r14d
and bpl, 8
and r14b, 0xf7
and r12b, 0x11
mov r9d, r13d
and r9b, 0x2a
or al, r15b
and r15b, 0x58
and r13b, 0x44
or r13b, r12b
or r9b, 0x14
xor r9b, r13b
and dl, 0x80
or dl, r9b
xor dl, r15b
mov r9d, edx
or r9b, al
not al
or al, 0xc1
xor al, dl
or bpl, 0x35
xor bpl, r14b
mov r14d, ebp
xor r14b, 0x3d
mov r15d, eax
xor r15b, 0x40
and r15b, r9b
mov r9d, ebp
and r9b, 0xa3
xor bpl, 0x9e
and bpl, r14b
and dl, 0x10
and r15b, 0x4c
or r15b, dl
and al, 0xa3
or r15b, 1
xor r9b, 0x82
or r9b, bpl
xor r9b, al
xor r9b, r15b
xor r9b, 0x7e
mov byte [rcx + rbx], r9b
inc rcx
cmp rcx, 0x26
jne 0x180019220
lea r13, [0x180045bd7]
mov byte [r13], 1
movabs rax, 0x31ce915c70d197f4
add rax, qword [r8]
mov qword [rsi + 0x70], rax
xor eax, eax
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret