Function at 0x180018c40
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov rsi, rcx
cmp qword [rcx + 0x20], 0
jne 0x180018e3c
mov rcx, rsi
call fcn.18001c9c0
cmp eax, 0xef
jne 0x180018e08
mov rcx, rsi
call fcn.18001c9c0
cmp eax, 0xbb
jne 0x180018c93
mov rcx, rsi
call fcn.18001c9c0
cmp eax, 0xbf
je 0x180018e3c
cmp byte [0x180045b9f], 0
jne 0x180018ddd
mov rax, qword [0x1800447c0]
movabs rcx, 0xda57e88d0ecf5fb7
add rcx, rax
mov qword [rsp + 0x30], rcx
movabs r8, 0xda57e88d0ecf5f9b
add r8, rax
xor r9d, r9d
nop dword [rax]
mov rax, r9
shr rax, 2
movabs rcx, 0x4924924924924925
mul rcx
shr rdx, 1
imul rdx, rdx, 0xffffffffffffffe4
add rdx, r8
mov rax, qword [rsp + 0x30]
movzx eax, byte [rax + r9]
movzx r13d, byte [r9 + rdx]
mov r14d, r13d
not r14b
mov ebx, r13d
or bl, 0x57
mov ecx, ebx
not cl
mov edx, eax
xor dl, 0xa8
and bl, 0x36
mov edi, ecx
and dil, 0x88
or dil, bl
mov ebx, r14d
or bl, 0xa8
and bl, 0xfd
mov r15d, r13d
and r15b, 2
or r15b, bl
mov ebx, r15d
xor bl, 2
mov r12d, edi
xor r12b, 0x36
mov r11d, r15d
xor r11b, 0xa5
and r11b, bl
or r14b, 0xf8
mov r10d, ecx
and r10b, 8
or r10b, 0x14
mov ebp, ecx
or bpl, 0xc
xor bpl, r10b
mov r10d, r14d
and r10b, 0x7a
and r13b, 5
or r13b, r10b
xor r13b, r11b
xor r13b, 0x7a
not r14b
and r14b, r11b
or r14b, r13b
or bpl, 0x40
xor bpl, r14b
xor r15b, 0xfd
and cl, 0x80
and dil, 0x2a
or dil, cl
or r12b, r15b
and r15b, 0x15
and bl, 0x6a
or bl, r15b
xor bl, dil
xor bl, 0xb7
and bl, r12b
or bl, bpl
mov ecx, eax
and cl, 0xdc
xor cl, 0x54
xor al, 0x74
and al, dl
or al, cl
xor al, bl
xor al, 0xdc
lea rcx, [0x180045b72]
mov byte [r9 + rcx], al
inc r9
cmp r9, 0x2d
jne 0x180018cd0
mov byte [0x180045b9f], 1
movabs rax, 0xda57e88d0ecf509b
add rax, qword [0x1800447c8]
mov qword [rsi + 0x70], rax
mov eax, 0xe
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov byte [rsi + 0x18], 1
dec qword [rsi + 0x20]
mov rax, qword [rsi + 0x28]
test rax, rax
je 0x180018e1f
lea rcx, [rsi + 0x28]
jmp 0x180018e2c
mov rax, qword [rsi + 0x30]
test rax, rax
je 0x180018e32
lea rcx, [rsi + 0x30]
dec rax
mov qword [rcx], rax
cmp dword [rsi + 0x14], 0xffffffff
je 0x180018e3c
dec qword [rsi + 0x40]
movabs rdi, 0x100002600
nop word cs:[rax + rax]
mov rcx, rsi
call fcn.18001c9c0
mov eax, dword [rsi + 0x14]
cmp rax, 0x20
ja 0x180018e97
bt rdi, rax
jb 0x180018e50
jmp 0x180018e97
mov rcx, rsi
call fcn.180018fe0
test al, al
je 0x180018df2
mov rcx, rsi
call fcn.18001c9c0
mov eax, dword [rsi + 0x14]
cmp rax, 0x20
ja 0x180018e97
bt rdi, rax
jb 0x180018e80
cmp eax, 0x2f
jne 0x180018ea2
cmp byte [rsi + 0x10], 0
jne 0x180018e70
inc eax
cmp eax, 0x7e
ja case.0x180018eb7.1
lea rcx, [0x18003a15c]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov rcx, rsi
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.18001c0c0
mov eax, 0xf
jmp 0x180018df7
movabs rcx, 0xda57e88d0ecf5ff4
add rcx, qword [0x1800447c0]
call fcn.180030390
movabs rax, 0xda57e88d0ecf509b
add rax, qword [0x1800447e8]
jmp 0x180018dee
mov rcx, rsi
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.1800193c0
mov eax, 0xd
jmp 0x180018df7
mov eax, 0xc
jmp 0x180018df7
mov eax, 8
jmp 0x180018df7
mov eax, 0xa
jmp 0x180018df7
mov byte [rsp + 0x24], 0x65
mov dword [rsp + 0x20], 0x736c6166
lea rdx, [rsp + 0x20]
mov r8d, 5
mov rcx, rsi
mov r9d, 2
call fcn.180019330
jmp 0x180018df7
mov dword [rsp + 0x28], 0x6c6c756e
lea rdx, [rsp + 0x28]
mov r8d, 4
mov rcx, rsi
mov r9d, 3
call fcn.180019330
jmp 0x180018df7
mov dword [rsp + 0x2c], 0x65757274
lea rdx, [rsp + 0x2c]
mov r8d, 4
mov rcx, rsi
mov r9d, 1
call fcn.180019330
jmp 0x180018df7
mov eax, 9
jmp 0x180018df7
mov eax, 0xb
jmp 0x180018df7