Function at 0x408ee0
Capabilities:
Get common file path
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x108
mov eax, dword [0x46c004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push edi
push 0x104
lea eax, [ebp - 0x108]
mov ebx, ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
je 0x408f7c
cmp eax, 0x104
jae 0x408f7c
lea ecx, [eax + 0xe]
cmp ecx, 0x104
jb 0x408f50
push str.program_assertion_failed___library_path_buffer_overflow
push str.load_system_library
push 1
push ebx
call fcn.00404600
add esp, 0x10
mov dword [0x46dde0], 0
xor al, al
pop edi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004129d8
mov esp, ebp
pop ebp
ret
push str.Cfgmgr32
lea ecx, [ebp - 0x108]
add eax, ecx
push str._s.dll
push eax
call fcn.00404800
add esp, 0xc
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
jmp 0x408f93
push str.program_assertion_failed___could_not_get_system_directory
push str.load_system_library
push 1
push ebx
call fcn.00404600
add esp, 0x10
xor edi, edi
mov dword [0x46dde0], edi
test edi, edi
jne 0x408faf
pop edi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004129d8
mov esp, ebp
pop ebp
ret
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.CM_Get_Parent
push edi
call esi
mov dword [0x46dee4], eax
test eax, eax
jne 0x408fed
push str.CM_Get_ParentA
push edi
call esi
mov dword [0x46dee4], eax
test eax, eax
jne 0x408fed
push str.CM_Get_ParentW
push edi
call esi
mov dword [0x46dee4], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dde0]
push str.CM_Get_Child
push edi
call esi
mov dword [0x46ddf4], eax
test eax, eax
jne 0x40902a
push str.CM_Get_ChildA
push edi
call esi
mov dword [0x46ddf4], eax
test eax, eax
jne 0x40902a
push str.CM_Get_ChildW
push edi
call esi
mov dword [0x46ddf4], eax
test eax, eax
je 0x4092e9
mov edx, str.AdvAPI32
mov ecx, ebx
call fcn.004049f0
mov edi, eax
mov dword [0x46dde4], edi
test edi, edi
je 0x4092e9
push str.RegQueryValueExA
push edi
call esi
mov dword [0x46ddd8], eax
test eax, eax
jne 0x40907d
push str.RegQueryValueExAA
push edi
call esi
mov dword [0x46ddd8], eax
test eax, eax
jne 0x40907d
push str.RegQueryValueExAW
push edi
call esi
mov dword [0x46ddd8], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dde4]
push str.RegCloseKey
push edi
call esi
mov dword [0x46ddac], eax
test eax, eax
jne 0x4090ba
push str.RegCloseKeyA
push edi
call esi
mov dword [0x46ddac], eax
test eax, eax
jne 0x4090ba
push str.RegCloseKeyW
push edi
call esi
mov dword [0x46ddac], eax
test eax, eax
je 0x4092e9
mov edx, str.SetupAPI
mov ecx, ebx
call fcn.004049f0
mov edi, eax
mov dword [0x46dd8c], edi
test edi, edi
je 0x4092e9
push str.SetupDiGetClassDevsA
push edi
call esi
mov dword [0x46ddcc], eax
test eax, eax
jne 0x40910d
push str.SetupDiGetClassDevsAA
push edi
call esi
mov dword [0x46ddcc], eax
test eax, eax
jne 0x40910d
push str.SetupDiGetClassDevsAW
push edi
call esi
mov dword [0x46ddcc], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dd8c]
push str.SetupDiEnumDeviceInfo
push edi
call esi
mov dword [0x46ddbc], eax
test eax, eax
jne 0x40914a
push str.SetupDiEnumDeviceInfoA
push edi
call esi
mov dword [0x46ddbc], eax
test eax, eax
jne 0x40914a
push str.SetupDiEnumDeviceInfoW
push edi
call esi
mov dword [0x46ddbc], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dd8c]
push str.SetupDiEnumDeviceInterfaces
push edi
call esi
mov dword [0x46ddec], eax
test eax, eax
jne 0x409187
push str.SetupDiEnumDeviceInterfacesA
push edi
call esi
mov dword [0x46ddec], eax
test eax, eax
jne 0x409187
push str.SetupDiEnumDeviceInterfacesW
push edi
call esi
mov dword [0x46ddec], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dd8c]
push str.SetupDiGetDeviceInstanceIdA
push edi
call esi
mov dword [0x46ddd4], eax
test eax, eax
jne 0x4091c4
push str.SetupDiGetDeviceInstanceIdAA
push edi
call esi
mov dword [0x46ddd4], eax
test eax, eax
jne 0x4091c4
push str.SetupDiGetDeviceInstanceIdAW
push edi
call esi
mov dword [0x46ddd4], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dd8c]
push str.SetupDiGetDeviceInterfaceDetailA
push edi
call esi
mov dword [0x46dda8], eax
test eax, eax
jne 0x409201
push str.SetupDiGetDeviceInterfaceDetailAA
push edi
call esi
mov dword [0x46dda8], eax
test eax, eax
jne 0x409201
push str.SetupDiGetDeviceInterfaceDetailAW
push edi
call esi
mov dword [0x46dda8], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dd8c]
push str.SetupDiGetDeviceRegistryPropertyA
push edi
call esi
mov dword [0x46ddc0], eax
test eax, eax
jne 0x40923e
push str.SetupDiGetDeviceRegistryPropertyAA
push edi
call esi
mov dword [0x46ddc0], eax
test eax, eax
jne 0x40923e
push str.SetupDiGetDeviceRegistryPropertyAW
push edi
call esi
mov dword [0x46ddc0], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dd8c]
push str.SetupDiDestroyDeviceInfoList
push edi
call esi
mov dword [0x46dec4], eax
test eax, eax
jne 0x409277
push str.SetupDiDestroyDeviceInfoListA
push edi
call esi
mov dword [0x46dec4], eax
test eax, eax
jne 0x409277
push str.SetupDiDestroyDeviceInfoListW
push edi
call esi
mov dword [0x46dec4], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dd8c]
push str.SetupDiOpenDevRegKey
push edi
call esi
mov dword [0x46ddc4], eax
test eax, eax
jne 0x4092b0
push str.SetupDiOpenDevRegKeyA
push edi
call esi
mov dword [0x46ddc4], eax
test eax, eax
jne 0x4092b0
push str.SetupDiOpenDevRegKeyW
push edi
call esi
mov dword [0x46ddc4], eax
test eax, eax
je 0x4092e9
mov edi, dword [0x46dd8c]
push str.SetupDiOpenDeviceInterfaceRegKey
push edi
call esi
mov dword [0x46dd9c], eax
test eax, eax
jne 0x4092fc
push str.SetupDiOpenDeviceInterfaceRegKeyA
push edi
call esi
mov dword [0x46dd9c], eax
test eax, eax
jne 0x4092fc
push str.SetupDiOpenDeviceInterfaceRegKeyW
push edi
call esi
mov dword [0x46dd9c], eax
test eax, eax
jne 0x4092fc
pop esi
pop edi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004129d8
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
mov al, 1
pop esi
pop edi
xor ecx, ebp
pop ebx
call fcn.004129d8
mov esp, ebp
pop ebp
ret