Function at 0x180004f30
Capabilities:
Link many functions at runtime

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rsi
push rbp
push rdi
push r14
lea rbp, [rsp - 0x290]
sub rsp, 0x390
mov rax, qword [section..data]
xor rax, rsp
mov qword [rbp + 0x280], rax
lea rcx, str.ProcessHacker.ExtendedTools.EnableGpuMonitor
call qword [sym.imp.ProcessHacker.exe_PhGetIntegerSetting]
xor r14d, r14d
test eax, eax
je 0x18000524c
mov rax, qword [sym.imp.ProcessHacker.exe_WindowsVersion]
cmp dword [rax], 0x3d
jb 0x18000524c
lea rax, str.gdi32.dll
mov qword [rsp + 0x3b0], r12
lea r9, [rsp + 0x28]
mov qword [rsp + 0x48], rax
lea r8, [rsp + 0x40]
mov qword [rsp + 0x3b8], r15
xor edx, edx
mov dword [rsp + 0x40], 0x140012
xor ecx, ecx
call qword [sym.imp.ntdll.dll_LdrGetDllHandle]
test eax, eax
js 0x180005088
mov rbx, qword [rsp + 0x28]
test rbx, rbx
je 0x180005088
lea rax, str.D3DKMTOpenAdapterFromDeviceName
mov dword [rsp + 0x30], 0x20001f
lea r9, [rsp + 0x20]
mov qword [rsp + 0x38], rax
xor r8d, r8d
lea rdx, [rsp + 0x30]
mov rcx, rbx
call qword [sym.imp.ntdll.dll_LdrGetProcedureAddress]
mov rcx, qword [rsp + 0x20]
lea r9, [rsp + 0x20]
test eax, eax
mov dword [rsp + 0x30], 0x130012
lea rax, str.D3DKMTCloseAdapter
cmovs rcx, r14
mov qword [rsp + 0x38], rax
mov qword [0x18002c608], rcx
lea rdx, [rsp + 0x30]
mov rcx, rbx
xor r8d, r8d
call qword [sym.imp.ntdll.dll_LdrGetProcedureAddress]
mov rdx, qword [rsp + 0x20]
lea r9, [rsp + 0x20]
test eax, eax
mov dword [rsp + 0x30], 0x160015
lea rax, str.D3DKMTQueryStatistics
mov rcx, rbx
cmovs rdx, r14
mov qword [rsp + 0x38], rax
mov qword [0x18002c5c0], rdx
xor r8d, r8d
lea rdx, [rsp + 0x30]
call qword [sym.imp.ntdll.dll_LdrGetProcedureAddress]
mov rcx, qword [rsp + 0x20]
test eax, eax
cmovs rcx, r14
mov qword [0x18002c5a8], rcx
lea rcx, str.setupapi.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov rbx, rax
test rax, rax
je 0x1800051cd
lea rax, str.SetupDiGetClassDevsW
mov dword [rsp + 0x30], 0x150014
lea r9, [rsp + 0x20]
mov qword [rsp + 0x38], rax
xor r8d, r8d
lea rdx, [rsp + 0x30]
mov rcx, rbx
call qword [sym.imp.ntdll.dll_LdrGetProcedureAddress]
mov rcx, qword [rsp + 0x20]
lea r9, [rsp + 0x20]
test eax, eax
mov dword [rsp + 0x30], 0x1d001c
lea rax, str.SetupDiDestroyDeviceInfoList
cmovs rcx, r14
mov qword [rsp + 0x38], rax
mov qword [0x18002c5c8], rcx
lea rdx, [rsp + 0x30]
mov rcx, rbx
xor r8d, r8d
call qword [sym.imp.ntdll.dll_LdrGetProcedureAddress]
mov rcx, qword [rsp + 0x20]
lea r9, [rsp + 0x20]
test eax, eax
mov dword [rsp + 0x30], 0x1c001b
lea rax, str.SetupDiEnumDeviceInterfaces
cmovs rcx, r14
mov qword [rsp + 0x38], rax
mov qword [0x18002c600], rcx
lea rdx, [rsp + 0x30]
mov rcx, rbx
xor r8d, r8d
call qword [sym.imp.ntdll.dll_LdrGetProcedureAddress]
mov rcx, qword [rsp + 0x20]
lea r9, [rsp + 0x20]
test eax, eax
mov dword [rsp + 0x30], 0x210020
lea rax, str.SetupDiGetDeviceInterfaceDetailW
cmovs rcx, r14
mov qword [rsp + 0x38], rax
mov qword [0x18002c5b8], rcx
lea rdx, [rsp + 0x30]
mov rcx, rbx
xor r8d, r8d
call qword [sym.imp.ntdll.dll_LdrGetProcedureAddress]
mov rcx, qword [rsp + 0x20]
lea r9, [rsp + 0x20]
test eax, eax
mov dword [rsp + 0x30], 0x220021
lea rax, str.SetupDiGetDeviceRegistryPropertyW
cmovs rcx, r14
mov qword [rsp + 0x38], rax
mov qword [0x18002c5d0], rcx
lea rdx, [rsp + 0x30]
mov rcx, rbx
xor r8d, r8d
call qword [sym.imp.ntdll.dll_LdrGetProcedureAddress]
mov rcx, qword [rsp + 0x20]
test eax, eax
cmovs rcx, r14
mov qword [0x18002c5b0], rcx
cmp qword [0x18002c608], r14
mov r15, qword [rsp + 0x3b8]
mov r12, qword [rsp + 0x3b0]
je 0x18000524c
cmp qword [0x18002c5c0], r14
je 0x18000524c
cmp qword [0x18002c5a8], r14
je 0x18000524c
cmp qword [0x18002c5c8], r14
je 0x18000524c
cmp qword [0x18002c600], r14
je 0x18000524c
cmp qword [0x18002c5b8], r14
je 0x18000524c
cmp qword [0x18002c5d0], r14
je 0x18000524c
mov ecx, 4
call qword [sym.imp.ProcessHacker.exe_PhCreateList]
mov qword [0x18002c5a0], rax
call fcn.1800054e0
test al, al
je 0x18000524c
mov rax, qword [0x18002c5a0]
cmp dword [rax], r14d
je 0x18000524c
mov byte [0x18002d138], 1
jmp 0x180005259
cmp byte [0x18002d138], r14b
je 0x1800054b9
lea rcx, str.SampleCount
call qword [sym.imp.ProcessHacker.exe_PhGetIntegerSetting]
mov edx, eax
lea rcx, [0x18002d0a0]
mov edi, eax
call qword [sym.imp.ProcessHacker.exe_PhInitializeCircularBuffer_FLOAT]
mov edx, edi
lea rcx, [0x18002d140]
call qword [sym.imp.ProcessHacker.exe_PhInitializeCircularBuffer_ULONG]
mov edx, edi
lea rcx, [0x18002d120]
call qword [sym.imp.ProcessHacker.exe_PhInitializeCircularBuffer_FLOAT]
mov edx, edi
lea rcx, [0x18002d0e0]
call qword [sym.imp.ProcessHacker.exe_PhInitializeCircularBuffer_ULONG]
mov edx, edi
lea rcx, [0x18002d040]
call qword [sym.imp.ProcessHacker.exe_PhInitializeCircularBuffer_ULONG]
mov ecx, dword [0x18002d104]
shl rcx, 4
call qword [sym.imp.ProcessHacker.exe_PhAllocate]
mov ebx, dword [0x18002d104]
xor edx, edx
mov r8d, ebx
mov qword [0x18002d070], rax
shl r8, 4
mov rcx, rax
call fcn.1800130d0
lea rcx, [rbx + rbx*2]
shl rcx, 3
call qword [sym.imp.ProcessHacker.exe_PhAllocate]
mov ebx, r14d
mov qword [0x18002d068], rax
cmp dword [0x18002d104], ebx
jbe 0x180005326
mov ecx, ebx
lea rdx, [rcx + rcx*2]
lea rcx, [rax + rdx*8]
mov edx, edi
call qword [sym.imp.ProcessHacker.exe_PhInitializeCircularBuffer_FLOAT]
inc ebx
cmp ebx, dword [0x18002d104]
jae 0x180005326
mov rax, qword [0x18002d068]
jmp 0x180005301
mov rcx, qword [sym.imp.ProcessHacker.exe_PhProcessesUpdatedEvent]
lea r9, [0x18002c5d8]
xor r8d, r8d
lea rdx, [0x180005db0]
call qword [sym.imp.ProcessHacker.exe_PhRegisterCallback]
lea rcx, str.ProcessHacker.ExtendedTools.GpuNodeBitmap
call qword [sym.imp.ProcessHacker.exe_PhGetStringSetting]
mov rbx, rax
mov rdx, qword [rax]
test dl, 3
jne 0x1800053a2
mov ecx, dword [0x18002d104]
movabs rax, 0x7ffffffffffffff0
add rcx, 0x1f
and rdx, 0xfffffffffffffffc
shr rcx, 1
and rcx, rax
cmp rdx, rcx
ja 0x1800053a2
mov rdx, qword [0x18002d0f8]
mov rcx, rbx
call qword [sym.imp.ProcessHacker.exe_PhHexStringToBuffer]
lea rcx, [0x18002d080]
call qword [sym.imp.ntdll.dll_RtlNumberOfSetBits]
mov dword [0x18002d100], eax
mov rcx, rbx
call qword [sym.imp.ProcessHacker.exe_PhDereferenceObject]
lea rcx, str.ProcessHacker.ExtendedTools.GpuLastNodeCount
call qword [sym.imp.ProcessHacker.exe_PhGetIntegerSetting]
cmp dword [0x18002d104], eax
je 0x1800054b9
lea rcx, [0x18002d080]
call qword [sym.imp.ntdll.dll_RtlClearAllBits]
mov rdx, qword [0x18002c5a0]
mov esi, r14d
mov dword [0x18002d100], r14d
cmp dword [rdx], r14d
jbe 0x180005489
nop dword [rax + rax]
mov rax, qword [rdx + 8]
mov ebx, r14d
mov ecx, esi
mov rdi, qword [rax + rcx*8]
cmp dword [rdi + 0x14], ebx
jbe 0x180005476
xor edx, edx
lea rcx, [rsp + 0x50]
mov r8d, 0x328
call fcn.1800130d0
mov dword [rsp + 0x50], 5
lea rcx, [rsp + 0x50]
mov rax, qword [rdi]
mov qword [rsp + 0x54], rax
mov dword [rbp + 0x270], ebx
call qword [0x18002c5a8]
test eax, eax
js 0x180005468
cmp qword [rsp + 0x68], r14
je 0x180005468
cmp dword [rsp + 0x70], 0x2710
jbe 0x180005468
mov edx, dword [rdi + 0x18]
lea rcx, [0x18002d080]
add edx, ebx
mov r8d, 1
call qword [sym.imp.ntdll.dll_RtlSetBits]
inc dword [0x18002d100]
inc ebx
cmp ebx, dword [rdi + 0x14]
jb 0x180005402
mov rdx, qword [0x18002c5a0]
inc esi
cmp esi, dword [rdx]
jb 0x1800053f0
cmp dword [0x18002d100], r14d
jne 0x1800054a6
xor edx, edx
lea rcx, [0x18002d080]
lea r8d, [rdx + 1]
call qword [sym.imp.ntdll.dll_RtlSetBits]
mov dword [0x18002d100], 1
mov edx, dword [0x18002d104]
lea rcx, str.ProcessHacker.ExtendedTools.GpuLastNodeCount
call qword [sym.imp.ProcessHacker.exe_PhSetIntegerSetting]
mov rcx, qword [rbp + 0x280]
xor rcx, rsp
call fcn.180011980
lea r11, [rsp + 0x390]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rsp, r11
pop r14
pop rdi
pop rbp
ret