Function at 0x401172
Capabilities:
Link many functions at runtime

Disassembly:
jmp 0x402140
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4128e0
push eax
mov dword fs:[0], esp
sub esp, 0x18
push esi
call fcn.004011db
mov eax, dword [0x41af9c]
test eax, eax
jne 0x4026a0
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
push 0
push 0
push str.newdev.dll
call esi
test eax, eax
mov dword [0x41b004], eax
jne 0x4021e7
lea eax, [esp + 4]
push eax
call fcn.00401087
add esp, 4
mov ecx, eax
mov dword [esp + 0x24], 0
call fcn.00401118
push eax
mov ecx, 0x41afd0
call fcn.00401118
push eax
push str._sCannot_load_library_newdev.dll:__s_n
push 0x41afd0
call fcn.0040104b
add esp, 0x10
lea ecx, [esp + 4]
mov dword [esp + 0x24], 0xffffffff
call fcn.0040109b
call fcn.0040113b
xor eax, eax
pop esi
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
add esp, 0x24
ret
push 0
push 0
push str.setupapi.dll
call esi
test eax, eax
mov dword [0x41b008], eax
jne 0x40225d
lea ecx, [esp + 4]
push ecx
call fcn.00401087
add esp, 4
mov ecx, eax
mov dword [esp + 0x24], 1
call fcn.00401118
push eax
mov ecx, 0x41afd0
call fcn.00401118
push eax
push str._sCannot_load_library_setupapi.dll:__s_n
push 0x41afd0
call fcn.0040104b
add esp, 0x10
lea ecx, [esp + 4]
mov dword [esp + 0x24], 0xffffffff
call fcn.0040109b
call fcn.0040113b
xor eax, eax
pop esi
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
add esp, 0x24
ret
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.SetupDiGetClassDevsA
push eax
call esi
test eax, eax
mov dword [0x41aff0], eax
jne 0x4022f9
mov edx, dword [0x41b008]
mov eax, dword [0x41b004]
cmp edx, eax
mov esi, str.newdev.dll
je 0x402291
mov esi, str.setupapi.dll
lea eax, [esp + 4]
push eax
call fcn.00401087
add esp, 4
mov ecx, eax
mov dword [esp + 0x24], 2
call fcn.00401118
push eax
mov ecx, 0x41afd0
call fcn.00401118
push eax
push esi
push str.SetupDiGetClassDevsA
push str._sCannot_find_the_function__s_in__s:__s_n
push 0x41afd0
call fcn.0040104b
add esp, 0x18
lea ecx, [esp + 4]
mov dword [esp + 0x24], 0xffffffff
call fcn.0040109b
call fcn.0040113b
xor eax, eax
pop esi
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
add esp, 0x24
ret
mov ecx, dword [0x41b008]
push str.SetupDiEnumDeviceInfo
push ecx
call esi
test eax, eax
mov dword [0x41afc0], eax
jne 0x402395
mov edx, dword [0x41b008]
mov eax, dword [0x41b004]
cmp edx, eax
mov esi, str.newdev.dll
je 0x40232d
mov esi, str.setupapi.dll
lea eax, [esp + 4]
push eax
call fcn.00401087
add esp, 4
mov ecx, eax
mov dword [esp + 0x24], 3
call fcn.00401118
push eax
mov ecx, 0x41afd0
call fcn.00401118
push eax
push esi
push str.SetupDiEnumDeviceInfo
push str._sCannot_find_the_function__s_in__s:__s_n
push 0x41afd0
call fcn.0040104b
add esp, 0x18
lea ecx, [esp + 4]
mov dword [esp + 0x24], 0xffffffff
call fcn.0040109b
call fcn.0040113b
xor eax, eax
pop esi
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
add esp, 0x24
ret
mov ecx, dword [0x41b008]
push str.SetupDiGetDeviceRegistryPropertyA
push ecx
call esi
test eax, eax
mov dword [0x41afe8], eax
jne 0x402431
mov edx, dword [0x41b008]
mov eax, dword [0x41b004]
cmp edx, eax
mov esi, str.newdev.dll
je 0x4023c9
mov esi, str.setupapi.dll
lea eax, [esp + 4]
push eax
call fcn.00401087
add esp, 4
mov ecx, eax
mov dword [esp + 0x24], 4
call fcn.00401118
push eax
mov ecx, 0x41afd0
call fcn.00401118
push eax
push esi
push str.SetupDiGetDeviceRegistryPropertyA
push str._sCannot_find_the_function__s_in__s:__s_n
push 0x41afd0
call fcn.0040104b
add esp, 0x18
lea ecx, [esp + 4]
mov dword [esp + 0x24], 0xffffffff
call fcn.0040109b
call fcn.0040113b
xor eax, eax
pop esi
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
add esp, 0x24
ret
mov ecx, dword [0x41b008]
push str.SetupDiDestroyDeviceInfoList
push ecx
call esi
test eax, eax
mov dword [0x41afdc], eax
jne 0x4024cd
mov edx, dword [0x41b008]
mov eax, dword [0x41b004]
cmp edx, eax
mov esi, str.newdev.dll
je 0x402465
mov esi, str.setupapi.dll
lea eax, [esp + 0x10]
push eax
call fcn.00401087
add esp, 4
mov ecx, eax
mov dword [esp + 0x24], 5
call fcn.00401118
push eax
mov ecx, 0x41afd0
call fcn.00401118
push eax
push esi
push str.SetupDiDestroyDeviceInfoList
push str._sCannot_find_the_function__s_in__s:__s_n
push 0x41afd0
call fcn.0040104b
add esp, 0x18
lea ecx, [esp + 0x10]
mov dword [esp + 0x24], 0xffffffff
call fcn.0040109b
call fcn.0040113b
xor eax, eax
pop esi
mov ecx, dword [esp + 0x18]
mov dword fs:[0], ecx
add esp, 0x24
ret
mov ecx, dword [0x41b004]
push str.UpdateDriverForPlugAndPlayDevicesA
push ecx
call esi
mov edx, dword [0x41b008]
push str.CM_Locate_DevNodeA
push edx
mov dword [0x41afc8], eax
call esi
mov dword [0x41af94], eax
mov eax, dword [0x41b008]
push str.CM_Reenumerate_DevNode
push eax
call esi
mov ecx, dword [0x41b008]
push str.SetupDiSetDeviceRegistryPropertyA
push ecx
mov dword [0x41afb8], eax
call esi
mov edx, dword [0x41b008]
push str.SetupCopyOEMInfA
push edx
mov dword [0x41af7c], eax
call esi
mov dword [0x41afa4], eax
mov eax, dword [0x41b008]
push str.SetupGetStringFieldA
push eax
call esi
mov ecx, dword [0x41b008]
push str.SetupFindNextLine
push ecx
mov dword [0x41afbc], eax
call esi
mov edx, dword [0x41b008]
push str.SetupOpenInfFileA
push edx
mov dword [0x41aff4], eax
call esi
mov dword [0x41af90], eax
mov eax, dword [0x41b008]
push str.SetupCloseInfFile
push eax
call esi
mov ecx, dword [0x41b008]
push str.SetupFindFirstLineA
push ecx
mov dword [0x41afb4], eax
call esi
mov edx, dword [0x41b008]
push str.SetupDiRemoveDevice
push edx
mov dword [0x41af84], eax
call esi
mov dword [0x41afc4], eax
mov eax, dword [0x41b008]
push str.SetupDiCreateDeviceInfoList
push eax
call esi
mov ecx, dword [0x41b008]
push str.SetupDiCreateDeviceInfoA
push ecx
mov dword [0x41afac], eax
call esi
mov edx, dword [0x41b008]
push str.SetupDiCallClassInstaller
push edx
mov dword [0x41afe0], eax
call esi
mov dword [0x41af8c], eax
mov eax, dword [0x41b008]
push str.SetupDiGetINFClassA
push eax
call esi
mov ecx, dword [0x41b008]
push str.SetupDiClassGuidsFromNameA
push ecx
mov dword [0x41affc], eax
call esi
mov dword [0x41af78], eax
push str.SetupDiSetClassInstallParamsA
mov edx, dword [0x41b008]
push edx
call esi
mov dword [0x41af98], eax
mov eax, dword [0x41b008]
push str.SetupDiGetDeviceInstallParamsA
push eax
call esi
mov ecx, dword [0x41b008]
push str.SetupInstallFilesFromInfSectionA
push ecx
mov dword [0x41af80], eax
call esi
mov edx, dword [0x41b008]
push str.SetupCommitFileQueueA
push edx
mov dword [0x41afec], eax
call esi
mov dword [0x41afa8], eax
mov eax, dword [0x41b008]
push str.SetupOpenFileQueue
push eax
call esi
mov ecx, dword [0x41b008]
push str.SetupCloseFileQueue
push ecx
mov dword [0x41afa0], eax
call esi
mov edx, dword [0x41b008]
push str.SetupInitDefaultQueueCallback
push edx
mov dword [0x41afb0], eax
call esi
mov dword [0x41afe4], eax
mov eax, dword [0x41b008]
push str.SetupDefaultQueueCallbackA
push eax
call esi
mov ecx, dword [0x41b008]
push str.SetupTermDefaultQueueCallback
push ecx
mov dword [0x41aff8], eax
call esi
mov dword [0x41af88], eax
mov eax, dword [0x41af9c]
mov ecx, dword [esp + 0x1c]
inc eax
pop esi
mov dword [0x41af9c], eax
mov eax, 1
mov dword fs:[0], ecx
add esp, 0x24
ret