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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x4a8]
sub rsp, 0x580
movaps xmmword [rax - 0x38], xmm6
movaps xmmword [rax - 0x48], xmm7
movaps xmmword [rax - 0x58], xmm8
movaps xmmword [rax - 0x68], xmm9
movaps xmmword [rax - 0x78], xmm10
mov rax, qword [0x1400c0040]
xor rax, rsp
mov qword [rbp + 0x420], rax
mov r12, rcx
xor r13d, r13d
xorps xmm0, xmm0
movups xmmword [rbp - 0x80], xmm0
lea rcx, [rbp + 0x4a8]
movabs rdi, 0xff00ff00ff00ff00
mov qword [rbp - 0x78], rdi
mov qword [rbp - 0x70], rcx
mov rax, qword [rcx]
xor rax, rdi
mov qword [rbp - 0x80], rax
mov qword [rcx], r13
lea rcx, str.security_start
call qword [sym.imp.VMProtectSDK64.dll_VMProtectBeginUltra]
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x10]
nop
mov r10, qword [rax + 0x30]
movsxd rcx, dword [r10 + 0x3c]
mov r11d, dword [rcx + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008f624
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008f624
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [rbx + r9*4]
mov r8d, dword [rdx + r10]
add r8, r10
mov edx, 0xbb85f10a
movzx ecx, byte [r8]
inc r8
test cl, cl
je 0x14008f61f
nop
movsx ecx, cl
xor ecx, edx
imul edx, ecx, 0x1000193
movzx ecx, byte [r8]
lea r8, [r8 + 1]
test cl, cl
jne 0x14008f600
cmp edx, 0x157effc4
je 0x14008f629
test r9d, r9d
jne 0x14008f5e0
mov rax, qword [rax]
jmp 0x14008f5b0
mov edx, dword [r11 + 0x1c]
add rdx, r10
mov ecx, dword [r11 + 0x24]
add rcx, r10
movzx ecx, word [rcx + r9*2]
mov eax, dword [rdx + rcx*4]
add rax, r10
call rax
test eax, eax
jne 0x14009002c
xorps xmm0, xmm0
movups xmmword [rsp + 0x50], xmm0
lea rcx, [rbp + 0x4a8]
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x60], rcx
mov rax, qword [rcx]
xor rax, rdi
mov qword [rsp + 0x50], rax
mov qword [rcx], r13
xor r15b, r15b
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x10]
nop word [rax + rax]
mov r10, qword [rax + 0x30]
movsxd rcx, dword [r10 + 0x3c]
mov r11d, dword [rcx + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008f704
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008f704
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [rbx + r9*4]
mov r8d, dword [rdx + r10]
add r8, r10
mov edx, 0xc85754b5
movzx ecx, byte [r8]
inc r8
test cl, cl
je 0x14008f6ff
nop
movsx ecx, cl
xor ecx, edx
imul edx, ecx, 0x1000193
movzx ecx, byte [r8]
lea r8, [r8 + 1]
test cl, cl
jne 0x14008f6e0
cmp edx, 0xfebc3eb0
je 0x14008f709
test r9d, r9d
jne 0x14008f6c0
mov rax, qword [rax]
jmp 0x14008f690
mov edx, dword [r11 + 0x1c]
add rdx, r10
mov ecx, dword [r11 + 0x24]
add rcx, r10
movzx ecx, word [rcx + r9*2]
mov eax, dword [rdx + rcx*4]
add rax, r10
call rax
mov esi, eax
xor edx, edx
mov r14d, 0xffffffff
mov r8d, 0x234
lea rcx, [rbp - 0x5c]
call sub.VCRUNTIME140.dll_memset
mov dword [rbp - 0x60], 0x238
mov rcx, qword gs:[0x60]
mov rcx, qword [rcx + 0x18]
mov rcx, qword [rcx + 0x10]
nop word [rax + rax]
mov r10, qword [rcx + 0x30]
movsxd rax, dword [r10 + 0x3c]
mov r11d, dword [rax + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008f7d4
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008f7d4
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [rbx + r9*4]
mov r8d, dword [rdx + r10]
add r8, r10
mov edx, 0x4d70387d
movzx eax, byte [r8]
inc r8
test al, al
je 0x14008f7cf
nop
movsx eax, al
xor eax, edx
imul edx, eax, 0x1000193
movzx eax, byte [r8]
lea r8, [r8 + 1]
test al, al
jne 0x14008f7b0
cmp edx, 0xe28bec2d
je 0x14008f7d9
test r9d, r9d
jne 0x14008f790
mov rcx, qword [rcx]
jmp 0x14008f760
mov edx, dword [r11 + 0x1c]
add rdx, r10
mov ecx, dword [r11 + 0x24]
add rcx, r10
movzx ecx, word [rcx + r9*2]
mov eax, dword [rdx + rcx*4]
add rax, r10
xor edx, edx
mov ecx, 2
call rax
mov rdi, rax
mov rcx, qword gs:[0x60]
mov rcx, qword [rcx + 0x18]
mov rcx, qword [rcx + 0x10]
nop
mov r10, qword [rcx + 0x30]
movsxd rdx, dword [r10 + 0x3c]
mov r11d, dword [rdx + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008f884
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008f884
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [rbx + r9*4]
mov r8d, dword [rdx + r10]
add r8, r10
mov edx, 0x54581519
movzx eax, byte [r8]
inc r8
test al, al
je 0x14008f87f
nop
movsx eax, al
xor eax, edx
imul edx, eax, 0x1000193
movzx eax, byte [r8]
lea r8, [r8 + 1]
test al, al
jne 0x14008f860
cmp edx, 0xcd10cb9c
je 0x14008f889
test r9d, r9d
jne 0x14008f840
mov rcx, qword [rcx]
jmp 0x14008f810
mov edx, dword [r11 + 0x1c]
add rdx, r10
mov ecx, dword [r11 + 0x24]
add rcx, r10
movzx ecx, word [rcx + r9*2]
mov eax, dword [rdx + rcx*4]
add rax, r10
lea rdx, [rbp - 0x60]
mov rcx, rdi
call rax
test eax, eax
je 0x14008f97b
cmp dword [rbp - 0x58], esi
je 0x14008f977
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x10]
nop dword [rax]
mov r10, qword [rax + 0x30]
movsxd rcx, dword [r10 + 0x3c]
mov r11d, dword [rcx + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008f946
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008f946
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [r10 + r9*4]
mov ecx, dword [rdx + rbx]
add rcx, r10
mov r8d, 0x80280ab8
movzx edx, byte [rcx]
inc rcx
test dl, dl
je 0x14008f941
nop dword [rax]
movsx edx, dl
xor edx, r8d
imul r8d, edx, 0x1000193
movzx edx, byte [rcx]
lea rcx, [rcx + 1]
test dl, dl
jne 0x14008f920
cmp r8d, 0xe74a0d32
je 0x14008f94b
test r9d, r9d
jne 0x14008f900
mov rax, qword [rax]
jmp 0x14008f8d0
mov edx, dword [r11 + 0x1c]
add rdx, r10
mov ecx, dword [r11 + 0x24]
add rcx, r10
movzx ecx, word [rcx + r9*2]
mov eax, dword [rdx + rcx*4]
add rax, r10
lea rdx, [rbp - 0x60]
mov rcx, rdi
call rax
test eax, eax
jne 0x14008f8b3
jmp 0x14008f97b
mov r14d, dword [rbp - 0x40]
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x10]
nop dword [rax]
mov r10, qword [rax + 0x30]
movsxd rcx, dword [r10 + 0x3c]
mov r11d, dword [rcx + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008fa04
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008fa04
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [r10 + r9*4]
mov r8d, dword [rdx + rbx]
add r8, r10
mov edx, 0x16436e02
movzx ecx, byte [r8]
inc r8
test cl, cl
je 0x14008f9ff
nop
movsx ecx, cl
xor ecx, edx
imul edx, ecx, 0x1000193
movzx ecx, byte [r8]
lea r8, [r8 + 1]
test cl, cl
jne 0x14008f9e0
cmp edx, 0xe3258408
je 0x14008fa09
test r9d, r9d
jne 0x14008f9c0
mov rax, qword [rax]
jmp 0x14008f990
mov edx, dword [r11 + 0x1c]
add rdx, r10
mov ecx, dword [r11 + 0x24]
add rcx, r10
movzx ecx, word [rcx + r9*2]
mov eax, dword [rdx + rcx*4]
add rax, r10
mov rcx, rdi
call rax
xor edx, edx
mov r8d, 0x234
lea rcx, [rbp + 0x1e4]
call sub.VCRUNTIME140.dll_memset
mov dword [rbp + 0x1e0], 0x238
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x10]
nop word [rax + rax]
mov r10, qword [rax + 0x30]
movsxd rcx, dword [r10 + 0x3c]
mov r11d, dword [rcx + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008fad4
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008fad4
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [r10 + r9*4]
mov r8d, dword [rdx + rbx]
add r8, r10
mov edx, 0x2a3be4d3
movzx ecx, byte [r8]
inc r8
test cl, cl
je 0x14008facf
nop
movsx ecx, cl
xor ecx, edx
imul edx, ecx, 0x1000193
movzx ecx, byte [r8]
lea r8, [r8 + 1]
test cl, cl
jne 0x14008fab0
cmp edx, 0x9d581243
je 0x14008fad9
test r9d, r9d
jne 0x14008fa90
mov rax, qword [rax]
jmp 0x14008fa60
mov r8d, dword [r11 + 0x1c]
add r8, r10
mov edx, dword [r11 + 0x24]
add rdx, r10
movzx edx, word [rdx + r9*2]
mov eax, dword [r8 + rdx*4]
add rax, r10
xor edx, edx
mov ecx, 2
call rax
mov rsi, rax
mov rcx, qword gs:[0x60]
mov rcx, qword [rcx + 0x18]
mov rcx, qword [rcx + 0x10]
mov r10, qword [rcx + 0x30]
movsxd rdx, dword [r10 + 0x3c]
mov r11d, dword [rdx + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008fb84
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008fb84
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [r10 + r9*4]
mov r8d, dword [rdx + rbx]
add r8, r10
mov edx, 0x6ca0f572
movzx eax, byte [r8]
inc r8
test al, al
je 0x14008fb7f
nop
movsx eax, al
xor eax, edx
imul edx, eax, 0x1000193
movzx eax, byte [r8]
lea r8, [r8 + 1]
test al, al
jne 0x14008fb60
cmp edx, 0xcef4bc4d
je 0x14008fb89
test r9d, r9d
jne 0x14008fb40
mov rcx, qword [rcx]
jmp 0x14008fb10
mov edx, dword [r11 + 0x1c]
add rdx, r10
mov ecx, dword [r11 + 0x24]
add rcx, r10
movzx ecx, word [rcx + r9*2]
mov eax, dword [rdx + rcx*4]
add rax, r10
lea rdx, [rbp + 0x1e0]
mov rcx, rsi
call rax
test eax, eax
je 0x14008fe2b
mov edi, dword [0x1400c0090]
movdqa xmm6, xmmword [0x1400af100]
movdqa xmm7, xmmword [0x1400af0e0]
movdqa xmm9, xmmword [str.55555555]
movdqa xmm10, xmmword [0x1400af120]
movdqa xmm8, xmmword [0x1400af610]
nop word [rax + rax]
cmp dword [rbp + 0x1e8], r14d
jne 0x14008fd6f
movups xmm3, xmmword [str.PNGTVHN]
movups xmmword [rsp + 0x30], xmm3
movsd xmm0, qword [0x1400aecc0]
movsd qword [rsp + 0x40], xmm0
movzx eax, word [0x1400aecc8]
mov word [rsp + 0x48], ax
mov r8d, r13d
cmp edi, 2
jl 0x14008fcf9
movdqa xmm2, xmm7
punpckldq xmm2, xmm7
pmuldq xmm2, xmm8
movdqa xmm0, xmm7
punpckhdq xmm0, xmm7
pmuldq xmm0, xmm8
shufps xmm2, xmm0, 0xdd
psrad xmm2, 4
movdqa xmm1, xmm2
psrld xmm1, 0x1f
paddd xmm1, xmm2
pmulld xmm1, xmm10
movdqa xmm0, xmm7
psubd xmm0, xmm1
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm1, xmm0, 0xd8
pshufd xmm2, xmm1, 0xd8
paddw xmm2, xmm9
movq xmm1, xmm3
xorps xmm2, xmm1
movq qword [rsp + 0x30], xmm2
movdqa xmm2, xmm6
punpckldq xmm2, xmm6
pmuldq xmm2, xmm8
movdqa xmm0, xmm6
punpckhdq xmm0, xmm6
pmuldq xmm0, xmm8
shufps xmm2, xmm0, 0xdd
psrad xmm2, 4
movdqa xmm1, xmm2
psrld xmm1, 0x1f
paddd xmm1, xmm2
pmulld xmm1, xmm10
movdqa xmm0, xmm6
psubd xmm0, xmm1
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm1, xmm0, 0xd8
pshufd xmm2, xmm1, 0xd8
paddw xmm2, xmm9
movq xmm0, qword [rsp + 0x38]
xorps xmm2, xmm0
movq qword [rsp + 0x38], xmm2
mov r8d, 8
movsxd rax, r8d
lea r9, [rsp + 0x30]
lea r9, [r9 + rax*2]
nop word [rax + rax]
mov eax, 0x4ec4ec4f
imul r8d
sar edx, 4
mov eax, edx
shr eax, 0x1f
add edx, eax
movzx eax, dx
imul ecx, eax, 0x34
movzx eax, r8w
sub ax, cx
add ax, 0x35
xor word [r9], ax
inc r8d
lea r9, [r9 + 2]
cmp r8d, 0xd
jl 0x14008fd10
lea rax, [rbp + 0x20c]
lea r8, [rsp + 0x30]
sub r8, rax
movzx edx, word [rax]
movzx ecx, word [rax + r8]
sub edx, ecx
jne 0x14008fd67
add rax, 2
test ecx, ecx
jne 0x14008fd53
test edx, edx
jne 0x14008fe28
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x10]
mov r10, qword [rax + 0x30]
movsxd rcx, dword [r10 + 0x3c]
mov r11d, dword [rcx + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008fdf4
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008fdf4
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [rbx + r9*4]
mov r8d, dword [rdx + r10]
add r8, r10
mov edx, 0x6b9a9195
movzx ecx, byte [r8]
inc r8
test cl, cl
je 0x14008fdef
nop
movsx ecx, cl
xor ecx, edx
imul edx, ecx, 0x1000193
movzx ecx, byte [r8]
lea r8, [r8 + 1]
test cl, cl
jne 0x14008fdd0
cmp edx, 0x5a77636f
je 0x14008fdf9
test r9d, r9d
jne 0x14008fdb0
mov rax, qword [rax]
jmp 0x14008fd80
mov edx, dword [r11 + 0x1c]
add rdx, r10
mov ecx, dword [r11 + 0x24]
add rcx, r10
movzx ecx, word [rcx + r9*2]
mov eax, dword [rdx + rcx*4]
add rax, r10
lea rdx, [rbp + 0x1e0]
mov rcx, rsi
call rax
test eax, eax
jne 0x14008fbf0
jmp 0x14008fe2b
mov r15b, 1
mov rax, qword gs:[0x60]
mov rax, qword [rax + 0x18]
mov rax, qword [rax + 0x10]
nop dword [rax]
mov r10, qword [rax + 0x30]
movsxd rcx, dword [r10 + 0x3c]
mov r11d, dword [rcx + r10 + 0x88]
add r11, r10
cmp r11, r10
je 0x14008feb4
mov r9d, dword [r11 + 0x18]
test r9d, r9d
je 0x14008feb4
mov ebx, dword [r11 + 0x20]
nop word [rax + rax]
dec r9d
lea rdx, [r10 + r9*4]
mov r8d, dword [rdx + rbx]
add r8, r10
mov edx, 0xedf40b3b
movzx ecx, byte [r8]
inc r8
test cl, cl
je 0x14008feaf
nop
movsx ecx, cl
xor ecx, edx
imul edx, ecx, 0x1000193
movzx ecx, byte [r8]
lea r8, [r8 + 1]
test cl, cl
jne 0x14008fe90
cmp edx, 0x6b05c6ef
je 0x14008feb9
test r9d, r9d
jne 0x14008fe70
mov rax, qword [rax]
jmp 0x14008fe40
mov edx, dword [r11 + 0x1c]
add rdx, r10
mov ecx, dword [r11 + 0x24]
add rcx, r10
movzx ecx, word [rcx + r9*2]
mov eax, dword [rdx + rcx*4]
add rax, r10
mov rcx, rsi
call rax
nop
mov rax, qword [rsp + 0x50]
movabs rdi, 0xff00ff00ff00ff00
xor rax, rdi
lea rcx, [rbp + 0x4a8]
mov qword [rcx], rax
test r15b, r15b
jne 0x14009002c
mov ecx, 0x10
call fcn.140090a70
mov qword [rax], r12
lea rcx, [0x14008c660]
mov qword [rax + 8], rcx
mov qword [rsp + 0x70], rax
lea rcx, [rsp + 0x58]
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], r13d
mov r9, rax
lea r8, [0x140090a10]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__beginthreadex]
mov qword [rsp + 0x50], rax
test rax, rax
je 0x14009001b
cmp dword [rsp + 0x58], 0
je 0x14009000f
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x70], xmm0
lea rcx, [rsp + 0x70]
call qword [sym.imp.MSVCP140.dll__Thrd_detach]
test eax, eax
jne 0x14009000f
xorps xmm0, xmm0
movdqa xmmword [rsp + 0x50], xmm0
mov ecx, 0x10
call fcn.140090a70
mov qword [rax], r12
lea rcx, [0x14008da90]
mov qword [rax + 8], rcx
mov qword [rsp + 0x70], rax
lea rcx, [rsp + 0x58]
mov qword [rsp + 0x28], rcx
mov dword [rsp + 0x20], r13d
mov r9, rax
lea r8, [0x140090a10]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__beginthreadex]
mov qword [rsp + 0x50], rax
test rax, rax
je 0x14008fffe
cmp dword [rsp + 0x58], 0
je 0x14008fff2
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x70], xmm0
lea rcx, [rsp + 0x70]
call qword [sym.imp.MSVCP140.dll__Thrd_detach]
test eax, eax
jne 0x14008fff2
call qword [sym.imp.VMProtectSDK64.dll_VMProtectEnd]
mov al, 1
jmp 0x14009002e
mov ecx, 1
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov dword [rsp + 0x58], r13d
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov ecx, 1
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
mov dword [rsp + 0x58], r13d
mov ecx, 6
call qword [sym.imp.MSVCP140.dll_void___cdecl_std::_Throw_Cpp_error_int_]
nop
xor al, al
mov rcx, qword [rbp - 0x80]
xor rcx, rdi
lea rdx, [rbp + 0x4a8]
mov qword [rdx], rcx
mov rcx, qword [rbp + 0x420]
xor rcx, rsp
call fcn.140090a50
lea r11, [rsp + 0x580]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
movaps xmm10, xmmword [r11 - 0x50]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret