Function at 0x18018ce80
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x188
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x100], 0xfffffffffffffffe
mov rsi, rcx
mov dword [rdx + 0x14], 6
mov qword [rbp + 0x10], rdx
mov rax, qword [rdx]
mov qword [rbp - 0x20], rax
lea rax, [0x1801a1bfd]
mov qword [rbp], rax
mov qword [rbp + 8], 7
movzx eax, byte [0x18028ecd1]
mov ecx, 0x18
mov edx, 8
call fcn.18006a570
mov qword [rbp + 0xf0], rax
test rax, rax
je 0x18018d70f
mov rax, rbp
mov qword [rbp + 0x80], rax
lea rax, [0x180067d10]
mov qword [rbp + 0x88], rax
lea rax, [0x1801a1c10]
mov qword [rbp + 0xb0], rax
mov qword [rbp + 0xb8], 1
mov qword [rbp + 0xd0], 0
lea rax, [rbp + 0x80]
mov qword [rbp + 0xc0], rax
mov qword [rbp + 0xc8], 1
lea rcx, [rbp - 0x50]
lea rdx, [rbp + 0xb0]
call fcn.1801776a0
mov qword [rbp - 0x18], rsi
mov rax, qword [rbp - 0x40]
mov rcx, qword [rbp + 0xf0]
mov qword [rcx + 0x10], rax
movdqu xmm0, xmmword [rbp - 0x50]
movdqu xmmword [rcx], xmm0
mov qword [rbp + 0x68], 1
mov qword [rbp + 0x70], rcx
mov qword [rbp + 0x78], 1
mov rax, qword [0x180277178]
movzx eax, byte [rax]
test al, al
jne 0x18018d0d8
mov ecx, dword [0x18028e858]
test cl, 1
jne 0x18018d0d8
cmp ecx, 0x100
jae 0x18018cfd8
mov edx, ecx
or edx, 0x20000000
mov eax, ecx
lock cmpxchg dword [0x18028e858], edx
jne 0x18018cfd8
lea rax, [0x18028e858]
movd xmm0, ecx
pshufd xmm0, xmm0, 0x50
jmp 0x18018d01c
lea rdx, [0x18028e858]
lea r9, [0x18028e840]
lea rcx, [rbp + 0xb0]
lea r8, [rbp + 0x30]
call fcn.1801844d0
mov eax, dword [rbp + 0xb0]
test eax, eax
je 0x18018d09f
cmp eax, 2
je 0x18018d0d8
mov rax, qword [rbp + 0xb8]
movq xmm0, qword [rbp + 0xc0]
lea rcx, [0x18028e840]
mov qword [rbp + 0x80], rcx
mov qword [rbp + 0x88], rax
movq qword [rbp + 0x90], xmm0
lea rcx, [rbp + 0xb0]
lea rdx, [rbp + 0x80]
call fcn.18018dfb0
mov r8d, dword [rbp + 0xc0]
mov rcx, qword [rbp + 0xb8]
mov eax, r8d
or eax, 0x20000000
mov edx, dword [rbp + 0xc4]
lock cmpxchg dword [rcx], edx
je 0x18018d0d8
xor edx, r8d
or edx, 0x20000000
mov eax, dword [rcx]
nop dword [rax]
mov r8d, eax
xor r8d, edx
lock cmpxchg dword [rcx], r8d
jne 0x18018d080
cmp eax, 0x40000000
jb 0x18018d0d8
xor eax, edx
mov edx, eax
call fcn.18018c540
jmp 0x18018d0d8
mov rcx, qword [rbp + 0xb8]
mov edx, 0xffffff00
lock xadd dword [rcx], edx
mov eax, edx
and eax, 0x3fffff00
cmp eax, 0x100
setne al
cmp edx, 0x40000000
setb r8b
or r8b, al
jne 0x18018d0d8
add edx, 0xffffff00
call fcn.18018c540
mov rcx, qword [0x18028e840]
test rcx, rcx
je 0x18018d91d
mov rdi, qword [rbp]
mov r14, qword [rbp + 8]
mov rax, qword [0x18028e848]
mov qword [rbp + 0xf8], rax
lea rax, [rcx + 8]
mov qword [rbp + 0xf0], rcx
movzx ecx, word [rcx + 0x21a]
mov qword [rbp + 0xe8], rcx
lea ecx, [rcx*8]
lea r13, [rcx + rcx*2]
mov rsi, 0xffffffffffffffff
xor r15d, r15d
nop dword [rax]
cmp r13, r15
je 0x18018d190
lea rbx, [rax + 0x18]
mov rdx, qword [rax + 8]
mov r8, qword [rax + 0x10]
mov r12, r14
sub r12, r8
cmovb r8, r14
mov rcx, rdi
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r12, rax
xor ecx, ecx
test r12, r12
setne cl
mov eax, 0xff
cmovs ecx, eax
add r15, 0x18
inc rsi
mov rax, rbx
cmp cl, 1
je 0x18018d130
movzx eax, cl
test eax, eax
jne 0x18018d197
jmp 0x18018d1c3
mov rsi, qword [rbp + 0xe8]
mov rcx, qword [rbp + 0xf0]
mov rax, qword [rbp + 0xf8]
sub rax, 1
jb 0x18018d91d
mov qword [rbp + 0xf8], rax
mov rcx, qword [rcx + rsi*8 + 0x220]
jmp 0x18018d0fe
lea rdx, [0x1801a1c20]
lea rcx, [rbp + 0xb0]
mov r8d, 0x14
call fcn.180164750
mov rbx, qword [rbp + 0xf0]
mov rax, qword [rbp + 0xb0]
mov r9, qword [rbp + 0xb8]
mov qword [rbp + 0xf8], rax
neg rax
jo 0x18018d723
mov rax, qword [rbp + 0xc0]
mov ecx, 1
test rax, rax
mov qword [rbp + 0xe8], r9
je 0x18018d23d
mov edx, 0x40
cmp rax, 0x40
jb 0x18018d241
mov rdx, r9
and rdx, 3
je 0x18018d696
mov ecx, 3
mov eax, 4
jmp 0x18018d241
xor edx, edx
xor eax, eax
movabs r8, 0x8000000000000004
mov qword [rbp + 0x80], r8
mov qword [rbp + 0x88], rcx
mov qword [rbp + 0x90], rax
mov qword [rbp + 0x98], rdx
lea rax, [rbp + 0x80]
mov qword [rbp + 0x30], rax
lea rax, [0x180028e50]
mov qword [rbp + 0x38], rax
lea rax, [0x1801a1c60]
mov qword [rbp + 0xb0], rax
mov qword [rbp + 0xb8], 1
mov qword [rbp + 0xd0], 0
lea rax, [rbp + 0x30]
mov qword [rbp + 0xc0], rax
mov qword [rbp + 0xc8], 1
lea rcx, [rbp - 0x38]
lea rdx, [rbp + 0xb0]
call fcn.1801776a0
mov rsi, qword [rbp + 0x78]
cmp rsi, qword [rbp + 0x68]
jne 0x18018d2da
lea rcx, [rbp + 0x68]
call fcn.180014e80
mov rax, qword [rbp + 0x70]
lea rcx, [rsi + rsi*2]
mov rdx, qword [rbp - 0x28]
mov qword [rax + rcx*8 + 0x10], rdx
movdqu xmm0, xmmword [rbp - 0x38]
movdqu xmmword [rax + rcx*8], xmm0
inc rsi
mov qword [rbp + 0x78], rsi
mov rdx, qword [rbp + 0x80]
movabs rcx, 0x7fffffffffffffff
add rcx, rdx
cmp rcx, 0x15
mov eax, 2
cmovb rax, rcx
cmp rax, 3
je 0x18018d393
cmp rax, 2
je 0x18018d36f
test rax, rax
jne 0x18018d402
mov rax, qword [rbp + 0x88]
mov ecx, eax
and ecx, 3
cmp ecx, 1
jne 0x18018d402
lea rcx, [rax - 1]
mov qword [rbp + 0x50], rcx
mov rcx, qword [rax - 1]
mov qword [rbp + 0x58], rcx
mov rax, qword [rax + 7]
mov qword [rbp + 0x60], rax
mov rax, qword [rax]
test rax, rax
je 0x18018d3d4
mov rcx, qword [rbp + 0x58]
call rax
jmp 0x18018d3d4
mov rax, rdx
neg rax
jo 0x18018d402
jae 0x18018d402
mov rcx, qword [rbp + 0x88]
add rdx, rdx
mov r8d, 2
jmp 0x18018d3fd
cmp qword [rbp + 0x88], 0
jne 0x18018d402
mov rax, qword [rbp + 0x90]
mov ecx, eax
and ecx, 3
cmp ecx, 1
jne 0x18018d402
lea rcx, [rax - 1]
mov qword [rbp + 0x50], rcx
mov rcx, qword [rax - 1]
mov qword [rbp + 0x58], rcx
mov rax, qword [rax + 7]
mov qword [rbp + 0x60], rax
mov rax, qword [rax]
test rax, rax
je 0x18018d3d4
mov rcx, qword [rbp + 0x58]
call rax
mov rcx, qword [rbp + 0x58]
mov rax, qword [rbp + 0x60]
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x18018d3ee
mov r8, qword [rax + 0x10]
call fcn.18006a580
mov rcx, qword [rbp + 0x50]
mov edx, 0x18
mov r8d, 8
call fcn.18006a580
xor edi, edi
mov rdx, qword [rbp + 0xf8]
test rdx, rdx
je 0x18018d422
mov r8d, 1
mov rcx, qword [rbp + 0xe8]
call fcn.18006a580
test dil, dil
je 0x18018d91d
mov dword [rbp + 0x4c], esi
lea rax, [rbp + 0x4c]
mov qword [rbp + 0x80], rax
lea rax, [fcn.18017f6a0]
mov qword [rbp + 0x88], rax
lea rax, [0x1801a1cb0]
mov qword [rbp + 0xb0], rax
mov qword [rbp + 0xb8], 1
mov qword [rbp + 0xd0], 0
lea rax, [rbp + 0x80]
mov qword [rbp + 0xc0], rax
mov qword [rbp + 0xc8], 1
lea rcx, [rbp + 0x18]
lea rdx, [rbp + 0xb0]
call fcn.1801776a0
mov rsi, qword [rbp + 0x78]
cmp rsi, qword [rbp + 0x68]
jne 0x18018d4a7
lea rcx, [rbp + 0x68]
call fcn.180014e80
mov rax, qword [rbp + 0x70]
lea rcx, [rsi + rsi*2]
mov rdx, qword [rbp + 0x28]
mov qword [rax + rcx*8 + 0x10], rdx
movdqu xmm0, xmmword [rbp + 0x18]
movdqu xmmword [rax + rcx*8], xmm0
inc rsi
mov qword [rbp + 0x78], rsi
mov rax, qword [rbx + r15 + 0xf8]
test rax, rax
je 0x18018d91d
mov rcx, qword [rbx + r15 + 0x100]
mov edx, dword [rbp + 0x4c]
mov r8d, 0xff
movzx r10d, word [rax + 0x13e]
lea r9d, [r10*8]
lea rsi, [r9 + r9*2]
mov r9, 0xffffffffffffffff
xor r11d, r11d
nop dword [rax]
mov rdi, rsi
add rdi, r11
je 0x18018d550
xor edi, edi
cmp dword [rax + r9*4 + 0x114], edx
setne dil
cmova edi, r8d
inc r9
add r11, 0xffffffffffffffe8
cmp dil, 1
je 0x18018d510
movzx r10d, dil
test r10d, r10d
jne 0x18018d553
jmp 0x18018d567
mov r9, r10
sub rcx, 1
jb 0x18018d91d
mov rax, qword [rax + r9*8 + 0x140]
jmp 0x18018d4eb
sub rax, r11
add rax, 0xfffffffffffffff0
mov qword [rbp - 0x10], rax
mov rax, rbp
mov qword [rbp + 0x80], rax
lea rax, [0x180067d10]
mov qword [rbp + 0x88], rax
lea rax, [rbp - 0x10]
mov qword [rbp + 0x90], rax
lea rax, [0x180067d30]
mov qword [rbp + 0x98], rax
lea rax, [0x1801a1cc8]
mov qword [rbp + 0xb0], rax
mov qword [rbp + 0xb8], 2
mov qword [rbp + 0xd0], 0
lea rax, [rbp + 0x80]
mov qword [rbp + 0xc0], rax
mov qword [rbp + 0xc8], 2
lea rcx, [rbp + 0x30]
lea rdx, [rbp + 0xb0]
call fcn.1801776a0
mov rsi, qword [rbp + 0x78]
test rsi, rsi
je 0x18018d632
mov rdi, qword [rbp + 0x70]
add rdi, 8
jmp 0x18018d619
add rdi, 0x18
dec rsi
je 0x18018d632
mov rdx, qword [rdi - 8]
test rdx, rdx
je 0x18018d610
mov rcx, qword [rdi]
mov r8d, 1
call fcn.18006a580
jmp 0x18018d610
mov rax, qword [rbp + 0x68]
test rax, rax
je 0x18018d652
mov rcx, qword [rbp + 0x70]
shl rax, 3
lea rdx, [rax + rax*2]
mov r8d, 8
call fcn.18006a580
mov rax, qword [rbp + 0x40]
mov rcx, qword [rbp - 0x20]
mov qword [rcx + 0x10], rax
movups xmm0, xmmword [rbp + 0x30]
movups xmmword [rcx], xmm0
mov rax, qword [rbp + 0x10]
mov dword [rax + 0x14], 1
movups xmm0, xmmword [rax]
mov rcx, qword [rbp - 0x18]
movups xmmword [rcx], xmm0
mov rax, qword [rax + 0x10]
mov qword [rcx + 0x10], rax
add rsp, 0x188
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
movzx ecx, word [r9]
cmp rcx, 0x5a4d
jne 0x18018d6dc
mov r8d, dword [r9 + 0x3c]
mov ecx, 1
cmp rax, r8
jbe 0x18018d6eb
lea rdx, [r8 + 0x88]
cmp rdx, rax
ja 0x18018d241
add r8, r9
mov rdx, r8
and rdx, 7
je 0x18018d6f3
mov ecx, 3
mov eax, 8
jmp 0x18018d241
movabs r8, 0x8000000000000007
jmp 0x18018d24b
mov rdx, r8
jmp 0x18018d241
mov esi, dword [r8 + 8]
mov dil, 1
mov rdx, qword [rbp + 0xf8]
test rdx, rdx
jne 0x18018d410
jmp 0x18018d422
mov ecx, 8
mov edx, 0x18
call fcn.18019decf
jmp 0x18018da1b
movabs rax, 0x8000000000000004
mov qword [rbp + 0x80], rax
mov qword [rbp + 0x88], 0
mov qword [rbp + 0x90], r9
mov byte [rbp + 0xa0], 0
lea rax, [rbp + 0x80]
mov qword [rbp + 0x30], rax
lea rax, [0x180028e50]
mov qword [rbp + 0x38], rax
lea rax, [0x1801a1c90]
mov qword [rbp + 0xb0], rax
mov qword [rbp + 0xb8], 1
mov qword [rbp + 0xd0], 0
lea rax, [rbp + 0x30]
mov qword [rbp + 0xc0], rax
mov qword [rbp + 0xc8], 1
lea rcx, [rbp + 0x18]
lea rdx, [rbp + 0xb0]
call fcn.1801776a0
mov rsi, qword [rbp + 0x78]
cmp rsi, qword [rbp + 0x68]
jne 0x18018d7c0
lea rcx, [rbp + 0x68]
call fcn.180014e80
mov rax, qword [rbp + 0x70]
lea rcx, [rsi + rsi*2]
mov rdx, qword [rbp + 0x28]
mov qword [rax + rcx*8 + 0x10], rdx
movups xmm0, xmmword [rbp + 0x18]
movups xmmword [rax + rcx*8], xmm0
inc rsi
mov qword [rbp + 0x78], rsi
mov rdx, qword [rbp + 0x80]
movabs rcx, 0x7fffffffffffffff
add rcx, rdx
cmp rcx, 0x15
mov eax, 2
cmovb rax, rcx
cmp rax, 3
je 0x18018d88e
cmp rax, 2
je 0x18018d867
test rax, rax
jne 0x18018d91d
mov rax, qword [rbp + 0x88]
mov ecx, eax
and ecx, 3
cmp ecx, 1
jne 0x18018d91d
lea rcx, [rax - 1]
mov qword [rbp + 0xf0], rcx
mov rcx, qword [rax - 1]
mov qword [rbp + 0xe8], rcx
mov rax, qword [rax + 7]
mov qword [rbp + 0xf8], rax
mov rax, qword [rax]
test rax, rax
je 0x18018d8df
mov rcx, qword [rbp + 0xe8]
call rax
jmp 0x18018d8df
mov rax, rdx
neg rax
jo 0x18018d91d
jae 0x18018d91d
mov rcx, qword [rbp + 0x88]
add rdx, rdx
mov r8d, 2
jmp 0x18018d918
cmp qword [rbp + 0x88], 0
jne 0x18018d91d
mov rax, qword [rbp + 0x90]
mov ecx, eax
and ecx, 3
cmp ecx, 1
jne 0x18018d91d
lea rcx, [rax - 1]
mov qword [rbp + 0xf0], rcx
mov rcx, qword [rax - 1]
mov qword [rbp + 0xe8], rcx
mov rax, qword [rax + 7]
mov qword [rbp + 0xf8], rax
mov rax, qword [rax]
test rax, rax
je 0x18018d8df
mov rcx, qword [rbp + 0xe8]
call rax
mov rax, qword [rbp + 0xf8]
mov rdx, qword [rax + 8]
test rdx, rdx
je 0x18018d906
mov rax, qword [rbp + 0xf8]
mov r8, qword [rax + 0x10]
mov rcx, qword [rbp + 0xe8]
call fcn.18006a580
mov edx, 0x18
mov r8d, 8
mov rcx, qword [rbp + 0xf0]
call fcn.18006a580
mov rdx, qword [rbp + 0x70]
mov r8, qword [rbp + 0x78]
mov qword [rsp + 0x20], 3
lea r9, [0x1801a1ce8]
lea rcx, [rbp + 0xb0]
call fcn.180041120
mov rax, qword [rbp + 0xc0]
mov qword [rbp + 0x90], rax
movdqu xmm0, xmmword [rbp + 0xb0]
movdqa xmmword [rbp + 0x80], xmm0
lea rax, [rbp + 0x80]
mov qword [rbp - 0x10], rax
lea rax, [0x180015400]
mov qword [rbp - 8], rax
lea rax, [0x1801a1d00]
mov qword [rbp + 0xb0], rax
mov qword [rbp + 0xb8], 1
mov qword [rbp + 0xd0], 0
lea rax, [rbp - 0x10]
mov qword [rbp + 0xc0], rax
mov qword [rbp + 0xc8], 1
lea rcx, [rbp + 0x30]
lea rdx, [rbp + 0xb0]
call fcn.1801776a0
mov rdx, qword [rbp + 0x80]
test rdx, rdx
je 0x18018d9dd
mov rcx, qword [rbp + 0x88]
mov r8d, 1
call fcn.18006a580
movdqu xmm0, xmmword [rbp + 0x30]
movdqa xmmword [rbp + 0xb0], xmm0
mov rdx, qword [rbp + 0x40]
mov qword [rbp + 0xc0], rdx
mov rcx, qword [rbp + 0xb8]
mov qword [rbp + 0xf0], rcx
call fcn.180038290
lea rdx, [0x1801a1d28]
lea rcx, [rbp + 0xb0]
call fcn.180197880
ud2