Function at 0x180017430
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov r11, rsp
mov qword [r11 + 8], rbx
mov qword [r11 + 0x10], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x160
mov edi, r8d
mov r14, rdx
mov rsi, rcx
test byte [0x18015d028], 2
je 0x1800174b2
lea rax, [r11 + 0x20]
mov qword [rsp + 0x20], rax
lea r9, [r11 - 0xe0]
call fcn.180017f70
mov ebx, eax
test eax, eax
je 0x180017f42
movzx eax, word [rsp + 0x1a8]
test ax, ax
je 0x180017f42
movzx ecx, ax
mov rax, qword [0x18015aa38]
mov rdx, qword [rax + rcx*8 - 8]
mov rax, qword [rsp + 0xa8]
neg rax
lock xadd qword [rdx + 0x20], rax
jmp 0x180017f42
xor r15d, r15d
mov r13d, r15d
mov qword [rsp + 0xc0], rsi
cmp dword [rcx + 0x10], 0xddeeddee
jne 0x18001765c
test byte [0x180159760], 2
jne 0x1800175d5
mov ebx, r15d
mov dword [rsp + 0x34], ebx
test dil, 1
jne 0x1800175bb
test dil, 8
jne 0x1800175c9
test dil, 4
jne 0x1800175e7
bt edi, 8
jb 0x1800175f4
mov eax, edi
and eax, 0xe00
jne 0x180017601
test dil, 0x10
jne 0x18001760c
test dil, 2
jne 0x180017619
and ebx, 0x11000001
mov qword [rsp + 0x20], r15
xor r9d, r9d
mov r8d, ebx
mov rdx, r14
call fcn.180016a80
mov ebx, eax
mov dword [rsp + 0x38], eax
test eax, eax
je 0x180017626
mov eax, dword [0x18015d2e8]
test al, 1
je 0x180017f42
test al, 2
je 0x180017f42
mov rax, qword gs:[0x60]
cmp qword [rax + 0x30], r13
je 0x180017f42
movups xmm0, xmmword [0x18015a790]
movups xmmword [rsp + 0x150], xmm0
movups xmmword [rsp + 0x110], xmm0
lea rcx, [rsp + 0x110]
call fcn.18005dfe4
cmp rsi, qword [rax]
setne r15b
mov dword [rsp + 0x98], r15d
test r15d, r15d
jne 0x180017f37
jmp 0x180017f42
mov ebx, 1
mov dword [rsp + 0x34], ebx
jmp 0x1800174eb
or ebx, 2
mov dword [rsp + 0x34], ebx
jmp 0x1800174f5
test r14, r14
je 0x1800174da
sub r14, qword [rdx - 0x10]
jmp 0x1800174da
bts ebx, 0x1f
mov dword [rsp + 0x34], ebx
jmp 0x1800174ff
bts ebx, 8
mov dword [rsp + 0x34], ebx
jmp 0x180017509
or ebx, eax
mov dword [rsp + 0x34], ebx
jmp 0x180017516
bts ebx, 0x19
mov dword [rsp + 0x34], ebx
jmp 0x180017520
bts ebx, 0x18
mov dword [rsp + 0x34], ebx
jmp 0x18001752a
mov rax, qword gs:[0x30]
mov dword [rax + 0x1250], 0xc000000d
mov rdi, qword gs:[0x30]
mov qword [rsp + 0xc8], rdi
mov ecx, 0xc000000d
call sym.ntdll.dll_RtlNtStatusToDosError
mov dword [rdi + 0x68], eax
jmp 0x180017f42
test dword [rcx + 0x74], 0x1000000
jne 0x180017f07
test byte [rcx + 0x78], 1
je 0x180017679
call fcn.18006377c
mov r13, rax
jmp 0x1800176f1
test r14b, 0xf
jne 0x1800176cd
lea r13, [rdx - 0x10]
prefetchw byte [r13]
cmp byte [r13 + 0xf], 5
jne 0x18001769b
movzx eax, byte [r13 + 0xe]
shl rax, 4
sub r13, rax
test byte [r13 + 0xf], 0x3f
je 0x1800176ac
mov qword [rsp + 0x88], r13
jmp 0x1800176f1
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], r15
xor r9d, r9d
mov r8, r13
mov rdx, rsi
lea ecx, [r9 + 8]
call fcn.18009a4c0
mov r13, r15
jmp 0x1800176e9
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], r15
xor r9d, r9d
mov r8, r14
mov rdx, rsi
lea ecx, [r9 + 9]
call fcn.18009a4c0
mov qword [rsp + 0x88], r15
test r13, r13
jne 0x180017759
mov rax, qword gs:[0x30]
mov dword [rax + 0x1250], 0xc000000d
mov rbx, qword gs:[0x30]
mov qword [rsp + 0xd0], rbx
jmp 0x180017740
mov rax, qword gs:[0x30]
mov dword [rax + 0x1250], 0xc000000d
mov rbx, qword gs:[0x30]
mov qword [rsp + 0xe0], rbx
mov ecx, 0xc000000d
call sym.ntdll.dll_RtlNtStatusToDosError
mov dword [rbx + 0x68], eax
mov ebx, r15d
mov dword [rsp + 0x38], ebx
jmp 0x180017f42
cmp byte [r14 - 1], 5
jne 0x18001794c
mov byte [rsp + 0x30], 1
cmp byte [r13 + 0xf], r15b
jge 0x1800177df
mov rdx, r13
mov rcx, rsi
call fcn.180102a20
movzx ebx, al
mov byte [rsp + 0x30], al
test al, al
jne 0x180017825
test bl, bl
jne 0x1800178fc
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], r15
mov r9, r14
mov r8, r13
mov rdx, rsi
mov ecx, 3
call fcn.18009a4c0
test bl, bl
jne 0x1800178fc
mov rax, qword gs:[0x30]
mov dword [rax + 0x1250], 0xc000000d
mov rbx, qword gs:[0x30]
mov qword [rsp + 0xd8], rbx
jmp 0x180017740
cmp dword [rsi + 0x7c], r15d
je 0x18001781f
mov eax, dword [r13 + 8]
mov dword [rsp + 0x128], eax
mov edx, dword [rsi + 0x88]
xor edx, eax
mov dword [rsp + 0x128], edx
mov ecx, edx
shr ecx, 0x10
mov eax, edx
shr eax, 8
xor cl, al
xor cl, dl
shr edx, 0x18
cmp dl, cl
je 0x18001781f
xor bl, bl
mov byte [rsp + 0x30], bl
jmp 0x180017791
mov bl, 1
mov byte [rsp + 0x30], bl
cmp byte [r13 + 0xf], r15b
jge 0x18001785c
mov rcx, r13
shr rcx, 4
xor ecx, dword [r13 + 8]
xor ecx, esi
xor ecx, dword [0x18015d458]
test cx, cx
je 0x180017848
mov rax, r15
jmp 0x180017856
shr ecx, 0xc
mov eax, ecx
mov rcx, r13
sub rcx, rax
mov rax, qword [rcx]
movzx ecx, word [rax + 0x24]
jmp 0x180017890
cmp dword [rsi + 0x7c], r15d
je 0x180017886
mov ecx, dword [r13 + 8]
mov dword [rsp + 0x138], ecx
test dword [rsi + 0x7c], ecx
je 0x18001788b
mov eax, dword [rsi + 0x88]
xor eax, ecx
mov dword [rsp + 0x138], eax
movzx ecx, ax
jmp 0x18001788b
movzx ecx, word [r13 + 8]
mov word [rsp + 0x3c], cx
movzx edx, cx
cmp byte [r13 + 0xf], 4
jne 0x1800178dd
cmp dword [rsi + 0x7c], r15d
je 0x1800178c4
mov ecx, dword [r13 + 8]
mov dword [rsp + 0x148], ecx
test dword [rsi + 0x7c], ecx
je 0x1800178c9
mov eax, dword [rsi + 0x88]
xor eax, ecx
mov dword [rsp + 0x148], eax
movzx ecx, ax
jmp 0x1800178c9
movzx ecx, word [r13 + 8]
mov word [rsp + 0x3e], cx
movzx eax, cx
mov rcx, qword [r13 - 0x10]
sub rcx, rax
add rcx, rdx
jmp 0x1800178e4
mov rcx, rdx
shl rcx, 4
lea rax, [rcx + r13]
cmp rax, r14
jae 0x180017789
xor bl, bl
mov byte [rsp + 0x30], bl
jmp 0x180017791
test edi, 0x3c000102
jne 0x18001794c
lea rcx, [r14 - 0x10]
cmp byte [rcx + 0xf], 5
jne 0x18001791f
movzx eax, byte [rcx + 0xe]
shl rax, 4
sub rcx, rax
add rcx, 0x10
jmp 0x180017922
mov rcx, r15
mov qword [rsp + 0xb0], rcx
mov qword [rsp + 0x20], rcx
mov r9d, 3
mov r8, r14
mov rdx, rsi
mov ecx, dword [r14 - 8]
call fcn.1800ebde8
test eax, eax
js 0x18001771c
cmp byte [r13 + 0xf], r15b
jge 0x180017f07
mov rcx, r13
shr rcx, 4
xor ecx, dword [r13 + 8]
xor ecx, esi
mov r9, qword [0x18015d458]
xor ecx, r9d
test cx, cx
je 0x180017977
mov r12, r15
jmp 0x180017985
shr ecx, 0xc
mov eax, ecx
mov rdx, r13
sub rdx, rax
mov r12, qword [rdx]
test r12, r12
jne 0x1800179ac
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], r15
xor r9d, r9d
mov r8, r13
mov rdx, rsi
lea ecx, [r12 + 3]
call fcn.18009a4c0
jmp 0x180017efc
prefetchw byte [r12]
mov rdx, qword [r12 + 8]
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0xe8], rdx
mov dword [rsp + 0x40], r15d
mov eax, dword [r13 + 0xc]
shr eax, 8
movzx r8d, ax
mov dword [rsp + 0x58], r8d
mov rax, qword [r12]
mov rcx, qword [rax]
mov rbx, qword [rcx + 0x18]
mov qword [rsp + 0xf0], rbx
mov ecx, dword [rdx + 0x18]
xor ecx, ebx
xor ecx, edx
xor ecx, r9d
mov dword [rsp + 0x9c], ecx
mov eax, ecx
shr eax, 0x10
imul eax, r8d
movzx ecx, cx
add rax, rdx
add rcx, rax
cmp rcx, r13
je 0x180017a35
mov qword [rsp + 0x28], r15
mov qword [rsp + 0x20], r15
xor r9d, r9d
mov r8, r13
mov rdx, qword [rbx + 0x18]
lea ecx, [r9 + 3]
call fcn.18009a4c0
jmp 0x180017efc
call sym.ntdll.dll_RtlGetCurrentServiceSessionId
test eax, eax
je 0x180017a57
mov rax, qword gs:[0x60]
mov rcx, qword [rax + 0x90]
add rcx, 0x226
jmp 0x180017a5c
mov ecx, 0x7ffe0380
cmp byte [rcx], r15b
je 0x180017a86
mov rax, qword gs:[0x60]
test byte [rax + 0x378], 1
je 0x180017a86
lea rdx, [r13 + 0x10]
mov r8d, 2
mov rcx, qword [rbx + 0x18]
call fcn.1800fe26c
mov dword [rsp + 0x54], r15d
mov dword [rsp + 0x50], r15d
mov r8d, r15d
mov eax, 0x64
cmp word [0x7ffe036a], 1
cmova r8d, eax
mov edx, r15d
mov r10d, 0x8000
mov dword [rsp + 0x50], edx
cmp edx, r8d
ja 0x180017ae7
mov ebx, dword [r12 + 0x20]
mov dword [rsp + 0x54], ebx
mov eax, ebx
shr eax, 0x10
test r10w, ax
je 0x180017acd
jmp 0x180017ae3
mov ecx, ebx
or ecx, 0x80000000
mov r9d, ebx
mov eax, ebx
lock cmpxchg dword [r12 + 0x20], ecx
je 0x180017af1
inc edx
jmp 0x180017aae
or ebx, 0xffffffff
mov dword [rsp + 0x54], ebx
or r9d, ebx
mov dword [rsp + 0x5c], ebx
mov byte [r13 + 0xf], 0x80
cmp r9d, 0xffffffff
jne 0x180017b0e
lea rdx, [r13 + 0x10]
lea rcx, [r12 + 0x10]
jmp 0x180017ef7
mov rax, qword [rsp + 0x48]
mov rcx, qword [rax + 0x28]
mov r13d, dword [rsp + 0x58]
btr qword [rcx], r13
cmp word [r12 + 0x10], r15w
je 0x180017b66
lea rcx, [r12 + 0x10]
call fcn.18009e4a0
mov r8d, r15d
mov r9, qword [rsp + 0x48]
mov rcx, rax
test rax, rax
je 0x180017b69
mov rax, qword [rax]
mov ecx, dword [rcx - 4]
shr ecx, 8
movzx r13d, cx
mov dword [rsp + 0x58], r13d
mov rdx, qword [r9 + 0x28]
btr qword [rdx], r13
inc r8d
mov dword [rsp + 0x40], r8d
jmp 0x180017b3a
mov r8d, r15d
movzx eax, bx
inc r8d
add eax, r8d
shl r13d, 0x10
or eax, r13d
mov dword [rsp + 0x5c], eax
mov r8, qword [r12]
cmp ax, word [r12 + 0x28]
jne 0x180017e18
mov rcx, qword [r8]
mov edx, dword [rcx + 0x20]
mov r9d, dword [r8 + 0xa8]
mov ecx, dword [r8 + 0xa4]
cmp ecx, 1
jne 0x180017bba
cmp edx, r9d
jb 0x180017bba
sub edx, r9d
mov rcx, qword [r8]
cmp edx, dword [rcx + 0x24]
jb 0x180017e18
mov dword [rsp + 0x5c], r15d
mov r13, qword [r12]
mov rbx, r15
xchg qword [r13 + 8], rbx
test rbx, rbx
je 0x180017cc4
prefetchw byte [rbx + 0x2c]
mov eax, dword [rbx + 0x2c]
mov ecx, eax
and ecx, 0xfffffff9
lock cmpxchg dword [rbx + 0x2c], ecx
jne 0x180017bda
cmp eax, 6
jne 0x180017bf9
mov rax, qword [rbx]
mov rcx, qword [rax]
mov qword [rbx], r15
jmp 0x180017cbb
mov rdx, rbx
mov rcx, r13
call fcn.180014fcc
test al, al
je 0x180017cc4
mov eax, dword [rbx + 0x2c]
test eax, eax
je 0x180017cc4
test al, 2
jne 0x180017cc4
mov ecx, eax
or ecx, 2
lock cmpxchg dword [rbx + 0x2c], ecx
jne 0x180017c0c
mov r9, qword [rbx]
mov ecx, r15d
mov dword [rsp + 0x68], ecx
cmp ecx, 0x10
jae 0x180017c9b
movzx eax, word [r9 + 0xae]
add eax, ecx
and eax, 0xf
lea r8, [r9 + rax*8]
mov rdx, qword [r8 + 0x10]
test rdx, rdx
jne 0x180017c62
xor eax, eax
lock cmpxchg qword [r8 + 0x10], rbx
je 0x180017cc4
inc ecx
jmp 0x180017c31
mov eax, dword [rdx + 0x2c]
test al, 1
jne 0x180017c5e
mov rax, rdx
lock cmpxchg qword [r8 + 0x10], rbx
jne 0x180017c5e
prefetchw byte [rdx + 0x2c]
mov eax, dword [rdx + 0x2c]
mov ecx, eax
and ecx, 0xfffffffd
lock cmpxchg dword [rdx + 0x2c], ecx
jne 0x180017c7b
cmp eax, 2
jne 0x180017cc4
mov rax, qword [rdx]
mov rcx, qword [rax]
mov qword [rdx], r15
add rdx, 0x30
jmp 0x180017cbf
mov rdx, qword [rbx]
mov rax, qword [rdx]
mov rcx, qword [rax + 0x18]
movzx eax, word [rdx + 0xac]
mov rcx, qword [rcx + rax*8 + 0x4a8]
add rcx, 0x90
lea rdx, [rbx + 0x30]
call fcn.18009e460
mov rax, qword [r13]
mov r13, qword [rax + 0x18]
mov rax, qword [r12]
mov qword [rsp + 0x48], rax
test byte [r12 + 0x26], 3
je 0x180017d72
mov rax, qword [r12 + 8]
add rax, 0x38
mov qword [rsp + 0x90], rax
add rax, 0xfff
and rax, 0xfffffffffffff000
mov qword [rsp + 0x90], rax
mov rcx, r12
call fcn.180102608
movzx ecx, ax
mov qword [rsp + 0x80], rcx
movzx eax, word [r12 + 0x28]
imul rax, rcx
mov qword [rsp + 0x80], rax
shl rax, 4
mov qword [rsp + 0x80], rax
mov ebx, 1
mov edx, ebx
mov rcx, qword [r13 + 0x18]
call fcn.18002ae30
mov r9d, eax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x80]
lea rdx, [rsp + 0x90]
or rcx, 0xffffffffffffffff
call sym.ntdll.dll_NtProtectVirtualMemory
jmp 0x180017d77
mov ebx, 1
mov rax, qword [r12 + 8]
mov dword [rax + 0x14], r15d
mov rdx, qword [r12 + 8]
mov rcx, r13
call fcn.180013ac8
movzx r8d, word [r12 + 0x28]
mov rdx, qword [rsp + 0x48]
mov rax, qword [rdx + 0xa0]
mov qword [rsp + 0xf8], rax
mov ecx, eax
sub ecx, r8d
mov dword [rsp + 0x48], ecx
mov rcx, rax
shr rcx, 0x20
dec ecx
mov dword [rsp + 0x4c], ecx
mov rcx, qword [rsp + 0x48]
lock cmpxchg qword [rdx + 0xa0], rcx
jne 0x180017d98
mov qword [r12 + 8], r15
lock inc dword [r13 + 0x3c]
mov dword [r12 + 0x20], r15d
prefetchw byte [r12 + 0x2c]
mov eax, dword [r12 + 0x2c]
mov ecx, eax
and ecx, 0xfffffffe
lock cmpxchg dword [r12 + 0x2c], ecx
jne 0x180017de7
cmp eax, 1
jne 0x180017f01
mov rax, qword [r12]
mov rcx, qword [rax]
mov qword [r12], r15
lea rdx, [r12 + 0x30]
call fcn.18009e460
jmp 0x180017f01
mov dword [r12 + 0x20], eax
mov eax, dword [r12 + 0x2c]
test al, 2
jne 0x180017efc
mov rdx, r12
mov rcx, r8
call fcn.180014fcc
test al, al
je 0x180017efc
mov eax, dword [r12 + 0x2c]
test eax, eax
je 0x180017efc
test al, 2
jne 0x180017efc
mov ecx, eax
or ecx, 2
lock cmpxchg dword [r12 + 0x2c], ecx
jne 0x180017e3d
mov r9, qword [r12]
mov ecx, r15d
mov dword [rsp + 0x6c], ecx
cmp ecx, 0x10
jae 0x180017ed1
movzx eax, word [r9 + 0xae]
add eax, ecx
and eax, 0xf
lea r8, [r9 + rax*8]
mov rdx, qword [r8 + 0x10]
test rdx, rdx
jne 0x180017e98
xor eax, eax
lock cmpxchg qword [r8 + 0x10], r12
je 0x180017efc
inc ecx
jmp 0x180017e67
mov eax, dword [rdx + 0x2c]
test al, 1
jne 0x180017e94
mov rax, rdx
lock cmpxchg qword [r8 + 0x10], r12
jne 0x180017e94
prefetchw byte [rdx + 0x2c]
mov eax, dword [rdx + 0x2c]
mov ecx, eax
and ecx, 0xfffffffd
lock cmpxchg dword [rdx + 0x2c], ecx
jne 0x180017eb1
cmp eax, 2
jne 0x180017efc
mov rax, qword [rdx]
mov rcx, qword [rax]
mov qword [rdx], r15
add rdx, 0x30
jmp 0x180017ef7
mov rdx, qword [r12]
mov rax, qword [rdx]
mov rcx, qword [rax + 0x18]
movzx eax, word [rdx + 0xac]
mov rcx, qword [rcx + rax*8 + 0x4a8]
lea rdx, [r12 + 0x30]
add rcx, 0x90
call fcn.18009e460
mov ebx, 1
mov dword [rsp + 0x38], ebx
jmp 0x180017f25
mov edx, edi
or edx, 2
mov r9, r14
mov r8, r13
mov rcx, rsi
call fcn.1800150a0
movzx ebx, al
mov dword [rsp + 0x38], ebx
test al, al
je 0x180017f42
mov rcx, rsi
call fcn.1800173e0
test eax, eax
je 0x180017f42
bt edi, 0x1c
jb 0x180017f42
mov rdx, r14
mov rcx, rsi
call fcn.1800fd5bc
mov dword [rsp + 0x64], ebx
jmp 0x180017f4e
mov eax, ebx
lea r11, [rsp + 0x160]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret