Function at 0x401159
Capabilities:
Link many functions at runtime

Disassembly:
jmp 0x402280
sub esp, 0xc
push esi
call fcn.00401212
cmp eax, 4
jne 0x402295
xor eax, eax
pop esi
add esp, 0xc
ret
mov eax, dword [0x41d82c]
test eax, eax
jne 0x4027ba
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
push 0
push 0
push str.newdev.dll
call esi
test eax, eax
mov dword [0x41d8a4], eax
jne 0x402303
lea eax, [esp + 4]
push eax
call fcn.00401096
add esp, 4
mov ecx, eax
call fcn.00401140
push eax
mov ecx, 0x41d868
call fcn.00401140
push eax
push str._sCannot_load_library_newdev.dll:__s_n
push 0x41d868
call fcn.00401055
add esp, 0x10
lea ecx, [esp + 4]
call fcn.004010af
call fcn.00401226
xor eax, eax
pop esi
add esp, 0xc
ret
push 0
push 0
push str.setupapi.dll
call esi
test eax, eax
mov dword [0x41d8a8], eax
jne 0x40235e
lea ecx, [esp + 4]
push ecx
call fcn.00401096
add esp, 4
mov ecx, eax
call fcn.00401140
push eax
mov ecx, 0x41d868
call fcn.00401140
push eax
push str._sCannot_load_library_setupapi.dll:__s_n
push 0x41d868
call fcn.00401055
add esp, 0x10
lea ecx, [esp + 4]
call fcn.004010af
call fcn.00401226
xor eax, eax
pop esi
add esp, 0xc
ret
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.SetupDiGetClassDevsA
push eax
call esi
test eax, eax
mov dword [0x41d88c], eax
jne 0x4023db
mov edx, dword [0x41d8a8]
mov eax, dword [0x41d8a4]
cmp edx, eax
mov esi, str.newdev.dll
je 0x40238e
mov esi, str.setupapi.dll
lea eax, [esp + 4]
push eax
call fcn.00401096
add esp, 4
mov ecx, eax
call fcn.00401140
push eax
push esi
push str.SetupDiGetClassDevsA
mov ecx, 0x41d868
call fcn.00401140
push eax
push str._sCannot_find_the_function__s_in__s:__s_n
push 0x41d868
call fcn.00401055
add esp, 0x18
lea ecx, [esp + 4]
call fcn.004010af
call fcn.00401226
xor eax, eax
pop esi
add esp, 0xc
ret
mov ecx, dword [0x41d8a8]
push str.SetupDiEnumDeviceInfo
push ecx
call esi
test eax, eax
mov dword [0x41d854], eax
jne 0x402458
mov edx, dword [0x41d8a8]
mov eax, dword [0x41d8a4]
cmp edx, eax
mov esi, str.newdev.dll
je 0x40240b
mov esi, str.setupapi.dll
lea eax, [esp + 4]
push eax
call fcn.00401096
add esp, 4
mov ecx, eax
call fcn.00401140
push eax
push esi
push str.SetupDiEnumDeviceInfo
mov ecx, 0x41d868
call fcn.00401140
push eax
push str._sCannot_find_the_function__s_in__s:__s_n
push 0x41d868
call fcn.00401055
add esp, 0x18
lea ecx, [esp + 4]
call fcn.004010af
call fcn.00401226
xor eax, eax
pop esi
add esp, 0xc
ret
mov ecx, dword [0x41d8a8]
push str.SetupDiGetDeviceRegistryPropertyA
push ecx
call esi
test eax, eax
mov dword [0x41d884], eax
jne 0x4024d5
mov edx, dword [0x41d8a8]
mov eax, dword [0x41d8a4]
cmp edx, eax
mov esi, str.newdev.dll
je 0x402488
mov esi, str.setupapi.dll
lea eax, [esp + 4]
push eax
call fcn.00401096
add esp, 4
mov ecx, eax
call fcn.00401140
push eax
push esi
push str.SetupDiGetDeviceRegistryPropertyA
mov ecx, 0x41d868
call fcn.00401140
push eax
push str._sCannot_find_the_function__s_in__s:__s_n
push 0x41d868
call fcn.00401055
add esp, 0x18
lea ecx, [esp + 4]
call fcn.004010af
call fcn.00401226
xor eax, eax
pop esi
add esp, 0xc
ret
mov ecx, dword [0x41d8a8]
push str.SetupDiDestroyDeviceInfoList
push ecx
call esi
test eax, eax
mov dword [0x41d874], eax
jne 0x402552
mov edx, dword [0x41d8a8]
mov eax, dword [0x41d8a4]
cmp edx, eax
mov esi, str.newdev.dll
je 0x402505
mov esi, str.setupapi.dll
lea eax, [esp + 4]
push eax
call fcn.00401096
add esp, 4
mov ecx, eax
call fcn.00401140
push eax
push esi
push str.SetupDiDestroyDeviceInfoList
mov ecx, 0x41d868
call fcn.00401140
push eax
push str._sCannot_find_the_function__s_in__s:__s_n
push 0x41d868
call fcn.00401055
add esp, 0x18
lea ecx, [esp + 4]
call fcn.004010af
call fcn.00401226
xor eax, eax
pop esi
add esp, 0xc
ret
mov ecx, dword [0x41d8a4]
push str.UpdateDriverForPlugAndPlayDevicesA
push ecx
call esi
mov edx, dword [0x41d8a8]
push str.CM_Locate_DevNodeA
push edx
mov dword [0x41d860], eax
call esi
mov dword [0x41d820], eax
mov eax, dword [0x41d8a8]
push str.CM_Reenumerate_DevNode
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.CM_Get_DevNode_Status
push ecx
mov dword [0x41d84c], eax
call esi
mov edx, dword [0x41d8a8]
push str.SetupDiSetDeviceRegistryPropertyA
push edx
mov dword [0x41d834], eax
call esi
mov dword [0x41d808], eax
mov eax, dword [0x41d8a8]
push str.SetupCopyOEMInfA
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.SetupGetStringFieldA
push ecx
mov dword [0x41d838], eax
call esi
mov edx, dword [0x41d8a8]
push str.SetupGetFieldCount
push edx
mov dword [0x41d850], eax
call esi
mov dword [0x41d864], eax
mov eax, dword [0x41d8a8]
push str.SetupFindNextLine
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.SetupOpenInfFileA
push ecx
mov dword [0x41d890], eax
call esi
mov edx, dword [0x41d8a8]
push str.SetupCloseInfFile
push edx
mov dword [0x41d81c], eax
call esi
mov dword [0x41d848], eax
mov eax, dword [0x41d8a8]
push str.SetupFindFirstLineA
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.SetupDiRemoveDevice
push ecx
mov dword [0x41d810], eax
call esi
mov edx, dword [0x41d8a8]
push str.SetupDiCreateDeviceInfoList
push edx
mov dword [0x41d85c], eax
call esi
mov dword [0x41d840], eax
mov eax, dword [0x41d8a8]
push str.SetupDiCreateDeviceInfoA
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.SetupDiCallClassInstaller
push ecx
mov dword [0x41d878], eax
call esi
mov dword [0x41d818], eax
push str.SetupDiGetINFClassA
mov edx, dword [0x41d8a8]
push edx
call esi
mov dword [0x41d89c], eax
mov eax, dword [0x41d8a8]
push str.SetupDiClassGuidsFromNameA
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.SetupDiSetClassInstallParamsA
push ecx
mov dword [0x41d800], eax
call esi
mov edx, dword [0x41d8a8]
push str.SetupDiGetDeviceInstallParamsA
push edx
mov dword [0x41d824], eax
call esi
mov dword [0x41d80c], eax
mov eax, dword [0x41d8a8]
push str.SetupInstallFilesFromInfSectionA
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.SetupCommitFileQueueA
push ecx
mov dword [0x41d888], eax
call esi
mov edx, dword [0x41d8a8]
push str.SetupOpenFileQueue
push edx
mov dword [0x41d83c], eax
call esi
mov dword [0x41d830], eax
mov eax, dword [0x41d8a8]
push str.SetupCloseFileQueue
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.SetupInitDefaultQueueCallback
push ecx
mov dword [0x41d844], eax
call esi
mov edx, dword [0x41d8a8]
push str.SetupDefaultQueueCallbackA
push edx
mov dword [0x41d87c], eax
call esi
mov dword [0x41d898], eax
mov eax, dword [0x41d8a8]
push str.SetupTermDefaultQueueCallback
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.CMP_WaitNoPendingInstallEvents
push ecx
mov dword [0x41d814], eax
call esi
mov edx, dword [0x41d8a8]
push str.SetupDiGetDriverInfoDetailA
push edx
mov dword [0x41d828], eax
call esi
mov dword [0x41d858], eax
mov eax, dword [0x41d8a8]
push str.SetupDiGetSelectedDriverA
push eax
call esi
mov ecx, dword [0x41d8a8]
push str.SetupQueryInfOriginalFileInformationA
push ecx
mov dword [0x41d894], eax
call esi
mov edx, dword [0x41d8a8]
push str.SetupDiGetDriverInfoDetailA
push edx
mov dword [0x41d880], eax
call esi
mov dword [0x41d858], eax
mov eax, dword [0x41d8a8]
push str.SetupGetInfInformationA
push eax
call esi
mov dword [0x41d804], eax
mov eax, dword [0x41d82c]
pop esi
inc eax
mov dword [0x41d82c], eax
mov eax, 1
add esp, 0xc
ret