Function at 0x1800020a0
Capabilities:
Access peb ldr_data
Encode data using xor
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push rbp
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x30
lea rbp, [rsp + 0x30]
mov qword [rbp - 8], 0xfffffffffffffffe
mov rdi, rcx
lea rcx, str.init_auth
call qword [sym.imp.VMProtectSDK64.dll_VMProtectBeginUltra]
call qword [sym.imp.VMProtectSDK64.dll_VMProtectIsValidImageCRC]
test al, al
je 0x180002238
call qword [sym.imp.VMProtectSDK64.dll_VMProtectIsVirtualMachinePresent]
test al, al
jne 0x180002238
xor esi, esi
cmp qword [rdi + 0x10], 0x40
jne 0x1800021d6
cmp qword [0x1800a9bc0], 0x40
jne 0x1800021d6
cmp qword [rdi + 0x18], 0x10
mov rcx, rdi
jb 0x18000210f
mov rcx, qword [rdi]
cmp qword [0x1800a9bc8], 0x10
jb 0x180002122
mov rsi, qword [0x1800a9bb0]
jmp 0x180002129
lea rsi, [0x1800a9bb0]
mov r8d, 0x40
mov rdx, rsi
call sub.VCRUNTIME140.dll_memcmp
test eax, eax
je 0x180002142
xor esi, esi
jmp 0x1800021d6
mov qword [rbp - 0x10], rdi
mov qword [0x1800a9bc0], 0
mov byte [rsi], 0
mov dword [0x1800a9003], 0
mov dword [str.SP_Q__6], 0
mov qword [0x1800a9008], 0
mov dword [0x1800a900f], 0
xorps xmm0, xmm0
movaps xmmword [0x1800a9020], xmm0
movaps xmmword [0x1800a9030], xmm0
movaps xmmword [0x1800a9040], xmm0
movaps xmmword [0x1800a9050], xmm0
mov byte [0x1800a9060], 0
mov dword [0x1800a9064], 0
movups xmmword [0x1800a9068], xmm0
movups xmmword [0x1800a9075], xmm0
lea rcx, [0x1800a9938]
call fcn.180004c70
cmp byte [0x1800a9b48], 0
setne sil
mov rdi, qword [rbp - 0x10]
mov rax, qword [rdi + 0x18]
cmp rax, 0x10
jb 0x180002214
mov rcx, qword [rdi]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x18000220f
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x18000252c
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.18003f298
mov qword [rdi + 0x10], 0
mov qword [rdi + 0x18], reloc.WS2_32.dll_ntohs
mov byte [rdi], 0
mov eax, esi
add rsp, 0x30
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
pop rbp
ret
mov qword [rbp - 0x10], rdi
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
add rax, 0x10
nop dword [rax]
mov rax, qword [rax]
mov rdi, qword [rax + 0x30]
movsxd rcx, dword [rdi + 0x3c]
mov ecx, dword [rdi + rcx + 0x88]
test rcx, rcx
je 0x180002250
mov edx, dword [rdi + rcx + 0x18]
test rdx, rdx
je 0x180002250
mov r8d, dword [rdi + rcx + 0x20]
add r8, rdi
lea r9, [rdi + 1]
jmp 0x180002285
test r10, r10
je 0x180002250
dec rdx
mov r10d, edx
mov r11d, dword [r8 + r10*4]
movzx ebx, byte [rdi + r11]
test bl, bl
je 0x180002280
add r11, r9
mov esi, 0x462cd022
movsx ebx, bl
xor ebx, esi
imul esi, ebx, 0x1000193
movzx ebx, byte [r11]
inc r11
test bl, bl
jne 0x1800022a0
cmp esi, 0x95bfee6a
jne 0x180002280
mov eax, dword [rdi + rcx + 0x1c]
mov ecx, dword [rdi + rcx + 0x24]
add rax, rdi
add rcx, rdi
movzx ecx, word [rcx + r10*2]
mov ebx, dword [rax + rcx*4]
mov rax, qword gs:[0x60]
mov rcx, qword [rax + 0x18]
add rcx, 0x10
nop word cs:[rax + rax]
mov rcx, qword [rcx]
mov rax, qword [rcx + 0x30]
movsxd rdx, dword [rax + 0x3c]
mov edx, dword [rax + rdx + 0x88]
test rdx, rdx
je 0x1800022f0
mov r8d, dword [rax + rdx + 0x18]
test r8, r8
je 0x1800022f0
mov r9d, dword [rax + rdx + 0x20]
add r9, rax
lea r10, [rax + 1]
jmp 0x180002325
test r11, r11
je 0x1800022f0
dec r8
mov r11d, r8d
mov esi, dword [r9 + r11*4]
movzx r14d, byte [rax + rsi]
test r14b, r14b
je 0x180002320
add rsi, r10
mov r15d, 0x442cccfc
nop word cs:[rax + rax]
movsx r14d, r14b
xor r14d, r15d
imul r15d, r14d, 0x1000193
movzx r14d, byte [rsi]
inc rsi
test r14b, r14b
jne 0x180002350
cmp r15d, 0x9a57088b
jne 0x180002320
mov ecx, dword [rax + rdx + 0x1c]
mov edx, dword [rax + rdx + 0x24]
add rcx, rax
add rdx, rax
movzx edx, word [rdx + r11*2]
mov ecx, dword [rcx + rdx*4]
add rcx, rax
call rcx
mov esi, eax
mov rax, qword gs:[0x60]
mov rcx, qword [rax + 0x18]
add rcx, 0x10
mov rcx, qword [rcx]
mov rax, qword [rcx + 0x30]
movsxd rdx, dword [rax + 0x3c]
mov edx, dword [rax + rdx + 0x88]
test rdx, rdx
je 0x1800023a1
mov r8d, dword [rax + rdx + 0x18]
test r8, r8
je 0x1800023a1
mov r9d, dword [rax + rdx + 0x20]
add r9, rax
lea r10, [rax + 1]
jmp 0x1800023d5
test r11, r11
je 0x1800023a1
dec r8
mov r11d, r8d
mov r14d, dword [r9 + r11*4]
movzx r15d, byte [rax + r14]
test r15b, r15b
je 0x1800023d0
add r14, r10
mov r12d, 0x472cd1b5
nop word cs:[rax + rax]
movsx r15d, r15b
xor r15d, r12d
imul r12d, r15d, 0x1000193
movzx r15d, byte [r14]
inc r14
test r15b, r15b
jne 0x180002400
cmp r12d, 0xfce1e6f5
jne 0x1800023d0
mov ecx, dword [rax + rdx + 0x1c]
mov edx, dword [rax + rdx + 0x24]
add rcx, rax
add rdx, rax
movzx edx, word [rdx + r11*2]
mov ecx, dword [rcx + rdx*4]
add rcx, rax
call rcx
movsxd rcx, esi
imul rdx, rcx, 0xffffffff80010003
shr rdx, 0x20
add edx, ecx
mov r8d, edx
shr r8d, 0x1f
sar edx, 0xe
add edx, r8d
mov r8d, edx
shl r8d, 0xf
sub edx, r8d
add edx, ecx
add rdi, rbx
mov rcx, rax
call rdi
mov rax, qword gs:[0x60]
mov rcx, qword [rax + 0x18]
add rcx, 0x10
mov rcx, qword [rcx]
mov rax, qword [rcx + 0x30]
movsxd rdx, dword [rax + 0x3c]
mov edx, dword [rax + rdx + 0x88]
test rdx, rdx
je 0x180002480
mov r8d, dword [rax + rdx + 0x18]
test r8, r8
je 0x180002480
mov r9d, dword [rax + rdx + 0x20]
add r9, rax
lea r10, [rax + 1]
jmp 0x1800024b5
test r11, r11
je 0x180002480
dec r8
mov r11d, r8d
mov esi, dword [r9 + r11*4]
movzx ebx, byte [rax + rsi]
test bl, bl
je 0x1800024b0
add rsi, r10
mov edi, 0x4d2f19be
nop
movsx ebx, bl
xor ebx, edi
imul edi, ebx, 0x1000193
movzx ebx, byte [rsi]
inc rsi
test bl, bl
jne 0x1800024d0
cmp edi, 0xd311ac05
jne 0x1800024b0
mov ecx, dword [rax + rdx + 0x1c]
mov edx, dword [rax + rdx + 0x24]
add rcx, rax
add rdx, rax
movzx edx, word [rdx + r11*2]
mov ecx, dword [rcx + rdx*4]
add rcx, rax
call rcx
cdqe
imul rcx, rax, 0xffffffff80010003
shr rcx, 0x20
add ecx, eax
mov edx, ecx
shr edx, 0x1f
sar ecx, 0xe
add ecx, edx
mov edx, ecx
shl edx, 0xf
sub ecx, edx
add ecx, eax
int 0x29
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3