Function at 0x410716
Capabilities:
Link many functions at runtime

Disassembly:
push rbp
mov rbp, rsp
sub rsp, 0x90
lea rcx, str.Cfgmgr32.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 8], rax
cmp qword [rbp - 8], 0
jne 0x410750
lea rcx, str.Cfgmgr32.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 8], rax
cmp qword [rbp - 8], 0
jne 0x410761
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 8]
lea rdx, str.CM_Get_Parent
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fe0], rax
mov rax, qword [0x00528fe0]
test rax, rax
jne 0x4107e9
mov rax, qword [rbp - 8]
lea rdx, str.CM_Get_ParentA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fe0], rax
mov rax, qword [0x00528fe0]
test rax, rax
jne 0x4107e9
mov rax, qword [rbp - 8]
lea rdx, str.CM_Get_ParentW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fe0], rax
mov rax, qword [0x00528fe0]
test rax, rax
jne 0x4107e9
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.Cfgmgr32.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x10], rax
cmp qword [rbp - 0x10], 0
jne 0x410819
lea rcx, str.Cfgmgr32.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x10], rax
cmp qword [rbp - 0x10], 0
jne 0x41082a
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x10]
lea rdx, str.CM_Get_Child
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fe8], rax
mov rax, qword [0x00528fe8]
test rax, rax
jne 0x4108b2
mov rax, qword [rbp - 0x10]
lea rdx, str.CM_Get_ChildA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fe8], rax
mov rax, qword [0x00528fe8]
test rax, rax
jne 0x4108b2
mov rax, qword [rbp - 0x10]
lea rdx, str.CM_Get_ChildW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fe8], rax
mov rax, qword [0x00528fe8]
test rax, rax
jne 0x4108b2
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.Cfgmgr32.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x18], rax
cmp qword [rbp - 0x18], 0
jne 0x4108e2
lea rcx, str.Cfgmgr32.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x18], rax
cmp qword [rbp - 0x18], 0
jne 0x4108f3
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x18]
lea rdx, str.CM_Get_Sibling
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528ff0], rax
mov rax, qword [0x00528ff0]
test rax, rax
jne 0x41097b
mov rax, qword [rbp - 0x18]
lea rdx, str.CM_Get_SiblingA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528ff0], rax
mov rax, qword [0x00528ff0]
test rax, rax
jne 0x41097b
mov rax, qword [rbp - 0x18]
lea rdx, str.CM_Get_SiblingW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528ff0], rax
mov rax, qword [0x00528ff0]
test rax, rax
jne 0x41097b
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.Cfgmgr32.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x20], rax
cmp qword [rbp - 0x20], 0
jne 0x4109ab
lea rcx, str.Cfgmgr32.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x20], rax
cmp qword [rbp - 0x20], 0
jne 0x4109bc
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x20]
lea rdx, str.CM_Get_Device_IDA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528ff8], rax
mov rax, qword [0x00528ff8]
test rax, rax
jne 0x410a44
mov rax, qword [rbp - 0x20]
lea rdx, str.CM_Get_Device_IDAA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528ff8], rax
mov rax, qword [0x00528ff8]
test rax, rax
jne 0x410a44
mov rax, qword [rbp - 0x20]
lea rdx, str.CM_Get_Device_IDAW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528ff8], rax
mov rax, qword [0x00528ff8]
test rax, rax
jne 0x410a44
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.OLE32.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x28], rax
cmp qword [rbp - 0x28], 0
jne 0x410a74
lea rcx, str.OLE32.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x28], rax
cmp qword [rbp - 0x28], 0
jne 0x410a85
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x28]
lea rdx, str.CLSIDFromString
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528f90], rax
mov rax, qword [0x00528f90]
test rax, rax
jne 0x410b0d
mov rax, qword [rbp - 0x28]
lea rdx, str.CLSIDFromStringA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528f90], rax
mov rax, qword [0x00528f90]
test rax, rax
jne 0x410b0d
mov rax, qword [rbp - 0x28]
lea rdx, str.CLSIDFromStringW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528f90], rax
mov rax, qword [0x00528f90]
test rax, rax
jne 0x410b0d
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x30], rax
cmp qword [rbp - 0x30], 0
jne 0x410b3d
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x30], rax
cmp qword [rbp - 0x30], 0
jne 0x410b4e
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x30]
lea rdx, str.SetupDiGetClassDevsA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528f98], rax
mov rax, qword [0x00528f98]
test rax, rax
jne 0x410bd6
mov rax, qword [rbp - 0x30]
lea rdx, str.SetupDiGetClassDevsAA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528f98], rax
mov rax, qword [0x00528f98]
test rax, rax
jne 0x410bd6
mov rax, qword [rbp - 0x30]
lea rdx, str.SetupDiGetClassDevsAW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528f98], rax
mov rax, qword [0x00528f98]
test rax, rax
jne 0x410bd6
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x38], rax
cmp qword [rbp - 0x38], 0
jne 0x410c06
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x38], rax
cmp qword [rbp - 0x38], 0
jne 0x410c17
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x38]
lea rdx, str.SetupDiEnumDeviceInfo
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fa0], rax
mov rax, qword [0x00528fa0]
test rax, rax
jne 0x410c9f
mov rax, qword [rbp - 0x38]
lea rdx, str.SetupDiEnumDeviceInfoA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fa0], rax
mov rax, qword [0x00528fa0]
test rax, rax
jne 0x410c9f
mov rax, qword [rbp - 0x38]
lea rdx, str.SetupDiEnumDeviceInfoW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fa0], rax
mov rax, qword [0x00528fa0]
test rax, rax
jne 0x410c9f
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x40], rax
cmp qword [rbp - 0x40], 0
jne 0x410ccf
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x40], rax
cmp qword [rbp - 0x40], 0
jne 0x410ce0
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x40]
lea rdx, str.SetupDiEnumDeviceInterfaces
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fa8], rax
mov rax, qword [0x00528fa8]
test rax, rax
jne 0x410d68
mov rax, qword [rbp - 0x40]
lea rdx, str.SetupDiEnumDeviceInterfacesA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fa8], rax
mov rax, qword [0x00528fa8]
test rax, rax
jne 0x410d68
mov rax, qword [rbp - 0x40]
lea rdx, str.SetupDiEnumDeviceInterfacesW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fa8], rax
mov rax, qword [0x00528fa8]
test rax, rax
jne 0x410d68
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x48], rax
cmp qword [rbp - 0x48], 0
jne 0x410d98
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x48], rax
cmp qword [rbp - 0x48], 0
jne 0x410da9
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x48]
lea rdx, str.SetupDiGetDeviceInterfaceDetailA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fb0], rax
mov rax, qword [0x00528fb0]
test rax, rax
jne 0x410e31
mov rax, qword [rbp - 0x48]
lea rdx, str.SetupDiGetDeviceInterfaceDetailAA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fb0], rax
mov rax, qword [0x00528fb0]
test rax, rax
jne 0x410e31
mov rax, qword [rbp - 0x48]
lea rdx, str.SetupDiGetDeviceInterfaceDetailAW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fb0], rax
mov rax, qword [0x00528fb0]
test rax, rax
jne 0x410e31
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x50], rax
cmp qword [rbp - 0x50], 0
jne 0x410e61
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x50], rax
cmp qword [rbp - 0x50], 0
jne 0x410e72
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x50]
lea rdx, str.SetupDiDestroyDeviceInfoList
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fb8], rax
mov rax, qword [0x00528fb8]
test rax, rax
jne 0x410efa
mov rax, qword [rbp - 0x50]
lea rdx, str.SetupDiDestroyDeviceInfoListA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fb8], rax
mov rax, qword [0x00528fb8]
test rax, rax
jne 0x410efa
mov rax, qword [rbp - 0x50]
lea rdx, str.SetupDiDestroyDeviceInfoListW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fb8], rax
mov rax, qword [0x00528fb8]
test rax, rax
jne 0x410efa
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x58], rax
cmp qword [rbp - 0x58], 0
jne 0x410f2a
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x58], rax
cmp qword [rbp - 0x58], 0
jne 0x410f3b
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x58]
lea rdx, str.SetupDiOpenDevRegKey
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fc0], rax
mov rax, qword [0x00528fc0]
test rax, rax
jne 0x410fc3
mov rax, qword [rbp - 0x58]
lea rdx, str.SetupDiOpenDevRegKeyA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fc0], rax
mov rax, qword [0x00528fc0]
test rax, rax
jne 0x410fc3
mov rax, qword [rbp - 0x58]
lea rdx, str.SetupDiOpenDevRegKeyW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fc0], rax
mov rax, qword [0x00528fc0]
test rax, rax
jne 0x410fc3
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x60], rax
cmp qword [rbp - 0x60], 0
jne 0x410ff3
lea rcx, str.SetupAPI.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x60], rax
cmp qword [rbp - 0x60], 0
jne 0x411004
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x60]
lea rdx, str.SetupDiGetDeviceRegistryPropertyA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fc8], rax
mov rax, qword [0x00528fc8]
test rax, rax
jne 0x41108c
mov rax, qword [rbp - 0x60]
lea rdx, str.SetupDiGetDeviceRegistryPropertyAA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fc8], rax
mov rax, qword [0x00528fc8]
test rax, rax
jne 0x41108c
mov rax, qword [rbp - 0x60]
lea rdx, str.SetupDiGetDeviceRegistryPropertyAW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fc8], rax
mov rax, qword [0x00528fc8]
test rax, rax
jne 0x41108c
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.AdvAPI32.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x68], rax
cmp qword [rbp - 0x68], 0
jne 0x4110bc
lea rcx, str.AdvAPI32.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x68], rax
cmp qword [rbp - 0x68], 0
jne 0x4110cd
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x68]
lea rdx, str.RegQueryValueExW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fd0], rax
mov rax, qword [0x00528fd0]
test rax, rax
jne 0x411155
mov rax, qword [rbp - 0x68]
lea rdx, str.RegQueryValueExWA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fd0], rax
mov rax, qword [0x00528fd0]
test rax, rax
jne 0x411155
mov rax, qword [rbp - 0x68]
lea rdx, str.RegQueryValueExWW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fd0], rax
mov rax, qword [0x00528fd0]
test rax, rax
jne 0x411155
mov eax, 0xfffffffb
jmp 0x411221
nop
lea rcx, str.AdvAPI32.dll
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov qword [rbp - 0x70], rax
cmp qword [rbp - 0x70], 0
jne 0x411185
lea rcx, str.AdvAPI32.dll
mov rax, qword [sym.imp.KERNEL32.dll_LoadLibraryA]
call rax
mov qword [rbp - 0x70], rax
cmp qword [rbp - 0x70], 0
jne 0x411196
mov eax, 0xfffffffb
jmp 0x411221
mov rax, qword [rbp - 0x70]
lea rdx, str.RegCloseKey
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fd8], rax
mov rax, qword [0x00528fd8]
test rax, rax
jne 0x41121b
mov rax, qword [rbp - 0x70]
lea rdx, str.RegCloseKeyA
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fd8], rax
mov rax, qword [0x00528fd8]
test rax, rax
jne 0x41121b
mov rax, qword [rbp - 0x70]
lea rdx, str.RegCloseKeyW
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [0x00528fd8], rax
mov rax, qword [0x00528fd8]
test rax, rax
jne 0x41121b
mov eax, 0xfffffffb
jmp 0x411221
nop
mov eax, 0
add rsp, 0x90
pop rbp
ret