Function at 0x14007cc20
Capabilities:
Link many functions at runtime

Disassembly:
push rbx
sub rsp, 0xd0
mov rax, qword [0x14028b7c8]
xor rax, rsp
mov qword [rsp + 0xc0], rax
mov rbx, rcx
lea rcx, [rsp + 0x20]
xor edx, edx
mov r8d, DllRegisterServer
call fcn.140158a90
lea rcx, [rsp + 0x20]
mov dword [rsp + 0x20], DllRegisterServer
call qword [sym.imp.KERNEL32.dll_GetVersionExA]
lea rcx, str.setupapi.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 0x10], rax
test rax, rax
je 0x14007cdfc
lea rdx, str.SetupDiEnumDeviceInterfaces
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.SetupDiDestroyDeviceInfoList
mov qword [rbx + 0x108], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.SetupDiGetDeviceInterfaceDetailA
mov qword [rbx + 0x110], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.SetupDiGetClassDevsA
mov qword [rbx + 0x118], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.SetupDiGetDeviceRegistryPropertyA
mov qword [rbx + 0x128], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.SetupDiGetDeviceInstanceIdA
mov qword [rbx + 0x130], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.SetupDiEnumDeviceInfo
mov qword [rbx + 0x120], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.SetupDiOpenDevRegKey
mov qword [rbx + 0x138], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.CM_Get_DevNode_Registry_PropertyA
mov qword [rbx + 0x140], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.CM_Locate_DevNodeA
mov qword [rbx + 0x148], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.CM_Get_Device_IDA
mov qword [rbx + 0x170], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.CM_Get_Device_Interface_List_SizeA
mov qword [rbx + 0x178], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.CM_Get_Child
mov qword [rbx + 0x180], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.CM_Get_Sibling
mov qword [rbx + 0x150], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.CM_Get_Parent
mov qword [rbx + 0x158], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x10]
lea rdx, str.CM_Get_Device_ID_Size
mov qword [rbx + 0x160], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x168], rax
lea rcx, [0x1401ce318]
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 8], rax
test rax, rax
je 0x14007cfb0
lea rdx, str.LoadLibraryExA
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, [0x1401d3540]
mov qword [rbx + 0x48], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetNativeSystemInfo
mov qword [rbx + 0x50], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetLogicalProcessorInformation
mov qword [rbx + 0x58], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetLogicalProcessorInformationEx
mov qword [rbx + 0x60], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetActiveProcessorGroupCount
mov qword [rbx + 0x68], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetMaximumProcessorCount
mov qword [rbx + 0x80], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetActiveProcessorCount
mov qword [rbx + 0x78], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.IsWow64Process2
mov qword [rbx + 0x70], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetSystemFirmwareTable
mov qword [rbx + 0xa8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, [0x1401dd4d0]
mov qword [rbx + 0xc0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, [0x1401dd4b8]
mov qword [rbx + 0x88], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.SetThreadDescription
mov qword [rbx + 0x90], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetThreadDescription
mov qword [rbx + 0x98], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetDevicePowerState
mov qword [rbx + 0xa0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, str.GetProductInfo
mov qword [rbx + 0xc8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, [0x1401dd450]
mov qword [rbx + 0xd0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 8]
lea rdx, [0x1401dd438]
mov qword [rbx + 0xd8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0xe0], rax
lea rcx, str.gdi32.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 0x18], rax
test rax, rax
je 0x14007d059
lea rdx, str.D3DKMTOpenAdapterFromDeviceName
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x18]
lea rdx, str.D3DKMTOpenAdapterFromGdiDisplayName
mov qword [rbx + 0x190], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x18]
lea rdx, str.D3DKMTCloseAdapter
mov qword [rbx + 0x198], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x18]
lea rdx, str.D3DKMTQueryStatistics
mov qword [rbx + 0x1a0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x18]
lea rdx, str.D3DKMTQueryAdapterInfo
mov qword [rbx + 0x1a8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x18]
lea rdx, str.D3DKMTOpenAdapterFromHdc
mov qword [rbx + 0x1b0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x1b8], rax
lea rcx, str.NtDll.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 0x20], rax
test rax, rax
je 0x14007d0b6
lea rdx, str.NtQuerySystemInformation
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x20]
lea rdx, str.RtlGetVersion
mov qword [rbx + 0xf0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x20]
lea rdx, str.RtlGetNtVersionNumbers
mov qword [rbx + 0xf8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x100], rax
lea rcx, str.User32.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 0x28], rax
test rax, rax
je 0x14007d0f1
cmp dword [rsp + 0x30], 2
jne 0x14007d0f1
cmp dword [rsp + 0x24], 4
jb 0x14007d0f1
lea rdx, str.EnumDisplayDevicesA
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0xe8], rax
lea rcx, str.DXGI.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 0x38], rax
test rax, rax
je 0x14007d11e
lea rdx, str.CreateDXGIFactory
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x1c0], rax
lea rcx, str.pdh.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 0x40], rax
test rax, rax
je 0x14007d26f
lea rdx, str.PdhEnumObjectItemsA
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhOpenQueryA
mov qword [rbx + 0x1c8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhAddCounterA
mov qword [rbx + 0x1d0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhEnumMachinesA
mov qword [rbx + 0x1d8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhConnectMachineA
mov qword [rbx + 0x1e0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhEnumObjectsA
mov qword [rbx + 0x1e8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhLookupPerfNameByIndexA
mov qword [rbx + 0x1f0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhLookupPerfIndexByNameA
mov qword [rbx + 0x1f8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhAddEnglishCounterA
mov qword [rbx + 0x200], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhCloseQuery
mov qword [rbx + 0x208], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhCollectQueryData
mov qword [rbx + 0x218], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhGetFormattedCounterValue
mov qword [rbx + 0x210], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x40]
lea rdx, str.PdhGetRawCounterValue
mov qword [rbx + 0x220], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x228], rax
lea rcx, str.advapi32.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 0x30], rax
test rax, rax
je 0x14007d330
lea rdx, [0x1401ce3f8]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x30]
lea rdx, [0x1401ce3f0]
mov qword [rbx + 0x230], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x30]
lea rdx, [0x1401ce3e0]
mov qword [rbx + 0x238], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x30]
lea rdx, [0x1401ce3d0]
mov qword [rbx + 0x240], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x30]
lea rdx, [0x1401ce3b0]
mov qword [rbx + 0x248], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x30]
lea rdx, [0x1401ce390]
mov qword [rbx + 0x250], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [rbx + 0x30]
lea rdx, str.AddAce
mov qword [rbx + 0x258], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x260], rax
mov eax, 1
mov rcx, qword [rsp + 0xc0]
xor rcx, rsp
call fcn.140156fd0
add rsp, 0xd0
pop rbx
ret