Function at 0x401159
Capabilities:
Link many functions at runtime

Disassembly:
jmp 0x4023a0
sub esp, 0xc
call fcn.00401294
cmp eax, 2
jne 0x4023b3
xor eax, eax
add esp, 0xc
ret
push edi
xor edi, edi
cmp dword [0x44366c], edi
je 0x4023ce
mov eax, 1
add dword [0x44366c], eax
pop edi
add esp, 0xc
ret
push ebx
mov bl, byte [esp + 0x18]
test bl, 1
push esi
mov esi, dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
je 0x40243a
push edi
push edi
push str.newdev.dll
call esi
cmp eax, edi
mov dword [0x443674], eax
jne 0x40243a
lea eax, [esp + 0xc]
push eax
call fcn.00401087
add esp, 4
mov ecx, eax
call fcn.00401136
push eax
mov ecx, 0x443684
call fcn.00401136
push eax
push str._sCannot_load_library_newdev.dll:__s_n
push 0x443684
call fcn.00401055
add esp, 0x10
lea ecx, [esp + 0xc]
call fcn.004010a0
call fcn.0040123a
pop esi
pop ebx
xor eax, eax
pop edi
add esp, 0xc
ret
test bl, 2
je 0x40249a
push edi
push edi
push str.setupapi.dll
call esi
cmp eax, edi
mov dword [0x443678], eax
jne 0x40249f
lea ecx, [esp + 0xc]
push ecx
call fcn.00401087
add esp, 4
mov ecx, eax
call fcn.00401136
push eax
mov ecx, 0x443684
call fcn.00401136
push eax
push str._sCannot_load_library_setupapi.dll:__s_n
push 0x443684
call fcn.00401055
add esp, 0x10
lea ecx, [esp + 0xc]
call fcn.004010a0
call fcn.0040123a
pop esi
pop ebx
xor eax, eax
pop edi
add esp, 0xc
ret
mov eax, dword [0x443678]
test bl, 4
je 0x402504
push edi
push edi
push str.cfgmgr32.dll
call esi
cmp eax, edi
mov dword [0x44367c], eax
jne 0x4024ff
lea edx, [esp + 0xc]
push edx
call fcn.00401087
add esp, 4
mov ecx, eax
call fcn.00401136
push eax
mov ecx, 0x443684
call fcn.00401136
push eax
push str._sCannot_load_library_cfgmgr32.dll:__s_n
push 0x443684
call fcn.00401055
add esp, 0x10
lea ecx, [esp + 0xc]
call fcn.004010a0
call fcn.0040123a
pop esi
pop ebx
xor eax, eax
pop edi
add esp, 0xc
ret
mov eax, dword [0x443678]
test bl, 8
je 0x402569
push edi
push edi
push str.difxapi.dll
call esi
cmp eax, edi
mov dword [0x443680], eax
jne 0x402564
lea eax, [esp + 0xc]
push eax
call fcn.00401087
add esp, 4
mov ecx, eax
call fcn.00401136
push eax
mov ecx, 0x443684
call fcn.00401136
push eax
push str._sCannot_load_library_difxapi.dll:__s_n
push 0x443684
call fcn.00401055
add esp, 0x10
lea ecx, [esp + 0xc]
call fcn.004010a0
call fcn.0040123a
pop esi
pop ebx
xor eax, eax
pop edi
add esp, 0xc
ret
mov eax, dword [0x443678]
cmp eax, edi
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
je 0x4025bc
push str.SetupDiGetClassDevsA
push eax
call esi
cmp eax, edi
mov dword [0x44361c], eax
jne 0x4025ff
mov ecx, dword [0x443678]
cmp ecx, dword [0x443674]
mov esi, str.newdev.dll
je 0x40259c
mov esi, str.setupapi.dll
lea edx, [esp + 0xc]
push edx
call fcn.00401087
add esp, 4
mov ecx, eax
call fcn.00401136
push eax
push esi
push str.SetupDiGetClassDevsA
jmp 0x402748
mov dword [0x44361c], edi
mov dword [0x443650], edi
mov dword [0x4435b8], edi
mov dword [0x4435c8], edi
mov dword [0x4435c0], edi
mov ecx, dword [0x443674]
cmp ecx, edi
je 0x40277c
push str.UpdateDriverForPlugAndPlayDevicesA
push ecx
call esi
mov dword [0x443638], eax
mov eax, dword [0x443678]
jmp 0x402782
mov eax, dword [0x443678]
cmp eax, edi
je 0x4025c2
push str.SetupDiEnumDeviceInfo
push eax
call esi
mov dword [0x443650], eax
cmp eax, edi
mov eax, dword [0x443678]
jne 0x402650
cmp eax, dword [0x443674]
mov esi, str.newdev.dll
je 0x402630
mov esi, str.setupapi.dll
lea ecx, [esp + 0xc]
push ecx
call fcn.00401087
add esp, 4
mov ecx, eax
call fcn.00401136
push eax
push esi
push str.SetupDiEnumDeviceInfo
jmp 0x402748
cmp eax, edi
je 0x4025c8
push str.SetupDiGetDeviceRegistryPropertyA
push eax
call esi
cmp eax, edi
mov dword [0x4435b8], eax
jne 0x4026a1
mov edx, dword [0x443678]
cmp edx, dword [0x443674]
mov esi, str.newdev.dll
je 0x402681
mov esi, str.setupapi.dll
lea eax, [esp + 0xc]
push eax
call fcn.00401087
add esp, 4
mov ecx, eax
call fcn.00401136
push eax
push esi
push str.SetupDiGetDeviceRegistryPropertyA
jmp 0x402748
mov eax, dword [0x443678]
cmp eax, edi
je 0x4025ce
push str.SetupDiGetDeviceRegistryPropertyW
push eax
call esi
cmp eax, edi
mov dword [0x4435c8], eax
jne 0x4026f4
mov ecx, dword [0x443678]
cmp ecx, dword [0x443674]
mov esi, str.newdev.dll
je 0x4026d7
mov esi, str.setupapi.dll
lea edx, [esp + 0xc]
push edx
call fcn.00401087
add esp, 4
mov ecx, eax
call fcn.00401136
push eax
push esi
push str.SetupDiGetDeviceRegistryPropertyW
jmp 0x402748
mov eax, dword [0x443678]
cmp eax, edi
je 0x4025d4
push str.SetupDiDestroyDeviceInfoList
push eax
call esi
mov dword [0x4435c0], eax
cmp eax, edi
mov eax, dword [0x443678]
jne 0x4025da
cmp eax, dword [0x443674]
mov esi, str.newdev.dll
je 0x40272d
mov esi, str.setupapi.dll
lea ecx, [esp + 0xc]
push ecx
call fcn.00401087
add esp, 4
mov ecx, eax
call fcn.00401136
push eax
push esi
push str.SetupDiDestroyDeviceInfoList
mov ecx, 0x443684
call fcn.00401136
push eax
push str._sCannot_find_the_function__s_in__s:__s_n
push 0x443684
call fcn.00401055
add esp, 0x18
lea ecx, [esp + 0xc]
call fcn.004010a0
call fcn.0040123a
pop esi
pop ebx
xor eax, eax
pop edi
add esp, 0xc
ret
mov dword [0x443638], edi
cmp eax, edi
je 0x402ae1
push str.SetupDiSetDeviceRegistryPropertyA
push eax
call esi
mov dword [0x4435fc], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402ae7
push str.SetupDiOpenDeviceInfoA
push eax
call esi
mov dword [0x44360c], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402aed
push str.SetupCopyOEMInfA
push eax
call esi
mov dword [0x4435f8], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402af3
push str.SetupUninstallOEMInfA
push eax
call esi
mov dword [0x443648], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402af9
push str.SetupGetStringFieldA
push eax
call esi
mov dword [0x4435b0], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402aff
push str.SetupGetFieldCount
push eax
call esi
mov dword [0x443644], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b05
push str.SetupFindNextLine
push eax
call esi
mov dword [0x4435dc], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b0b
push str.SetupOpenInfFileA
push eax
call esi
mov dword [0x4435d4], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b11
push str.SetupCloseInfFile
push eax
call esi
mov dword [0x44364c], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b17
push str.SetupFindFirstLineA
push eax
call esi
mov dword [0x44365c], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b1d
push str.SetupDiRemoveDevice
push eax
call esi
mov dword [0x4435c4], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b23
push str.SetupDiCreateDeviceInfoList
push eax
call esi
mov dword [0x443610], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b29
push str.SetupDiCreateDeviceInfoA
push eax
call esi
mov dword [0x443624], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b2f
push str.SetupDiCallClassInstaller
push eax
call esi
mov dword [0x443634], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b35
push str.SetupDiGetINFClassA
push eax
call esi
mov dword [0x4435cc], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b3b
push str.SetupDiClassGuidsFromNameA
push eax
call esi
mov dword [0x443658], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b41
push str.SetupDiSetClassInstallParamsA
push eax
call esi
mov dword [0x443618], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b47
push str.SetupDiGetDeviceInstallParamsA
push eax
call esi
mov dword [0x44362c], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b4d
push str.SetupDiGetDeviceInstanceIdA
push eax
call esi
mov dword [0x443600], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b53
push str.SetupInstallFilesFromInfSectionA
push eax
call esi
mov dword [0x443664], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b59
push str.SetupCommitFileQueueA
push eax
call esi
mov dword [0x443614], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b5f
push str.SetupOpenFileQueue
push eax
call esi
mov dword [0x443630], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b65
push str.SetupCloseFileQueue
push eax
call esi
mov dword [0x4435b4], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b6b
push str.SetupInitDefaultQueueCallback
push eax
call esi
mov dword [0x4435e4], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b71
push str.SetupDefaultQueueCallbackA
push eax
call esi
mov dword [0x4435d0], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b77
push str.SetupTermDefaultQueueCallback
push eax
call esi
mov dword [0x443608], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b7d
push str.CMP_WaitNoPendingInstallEvents
push eax
call esi
mov dword [0x4435a8], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b83
push str.SetupDiGetDriverInfoDetailA
push eax
call esi
mov dword [0x443640], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b83
push str.SetupDiGetSelectedDriverA
push eax
call esi
mov dword [0x443628], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b89
push str.SetupQueryInfOriginalFileInformationA
push eax
call esi
mov dword [0x4435bc], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b8f
push str.SetupDiGetDriverInfoDetailA
push eax
call esi
mov dword [0x443640], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b95
push str.SetupGetInfInformationA
push eax
call esi
mov dword [0x4435a0], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402b9b
push str.SetupGetInfFileListA
push eax
call esi
mov dword [0x443668], eax
mov eax, dword [0x443678]
jmp 0x402ba1
mov dword [0x4435fc], edi
mov dword [0x44360c], edi
mov dword [0x4435f8], edi
mov dword [0x443648], edi
mov dword [0x4435b0], edi
mov dword [0x443644], edi
mov dword [0x4435dc], edi
mov dword [0x4435d4], edi
mov dword [0x44364c], edi
mov dword [0x44365c], edi
mov dword [0x4435c4], edi
mov dword [0x443610], edi
mov dword [0x443624], edi
mov dword [0x443634], edi
mov dword [0x4435cc], edi
mov dword [0x443658], edi
mov dword [0x443618], edi
mov dword [0x44362c], edi
mov dword [0x443600], edi
mov dword [0x443664], edi
mov dword [0x443614], edi
mov dword [0x443630], edi
mov dword [0x4435b4], edi
mov dword [0x4435e4], edi
mov dword [0x4435d0], edi
mov dword [0x443608], edi
mov dword [0x4435a8], edi
mov dword [0x443628], edi
mov dword [0x4435bc], edi
mov dword [0x443640], edi
mov dword [0x4435a0], edi
mov dword [0x443668], edi
mov ecx, dword [0x443680]
cmp ecx, edi
je 0x402c17
push str.DIFXAPISetLogCallbackA
push ecx
call esi
mov dword [0x443620], eax
mov eax, dword [0x443680]
cmp eax, edi
je 0x402c31
push str.DriverPackageGetPathA
push eax
call esi
mov dword [0x443604], eax
mov eax, dword [0x443680]
cmp eax, edi
je 0x402c4a
push str.DriverPackageInstallA
push eax
call esi
mov dword [0x4435f0], eax
mov eax, dword [0x443680]
cmp eax, edi
je 0x402c5d
push str.DriverPackagePreinstallA
push eax
call esi
mov dword [0x4435e0], eax
mov eax, dword [0x443680]
cmp eax, edi
je 0x402c6a
push str.DriverPackageUninstallA
push eax
call esi
mov dword [0x4435ec], eax
mov eax, dword [0x443678]
jmp 0x402c75
mov dword [0x443620], edi
mov dword [0x443604], edi
mov dword [0x4435f0], edi
mov dword [0x4435e0], edi
jmp 0x402c6f
mov eax, dword [0x443678]
mov dword [0x443604], edi
mov dword [0x4435f0], edi
mov dword [0x4435e0], edi
jmp 0x402c6f
mov eax, dword [0x443678]
mov dword [0x4435f0], edi
mov dword [0x4435e0], edi
jmp 0x402c6f
mov eax, dword [0x443678]
mov dword [0x4435e0], edi
jmp 0x402c6f
mov eax, dword [0x443678]
mov dword [0x4435ec], edi
cmp eax, edi
je 0x402e2a
push str.CM_Locate_DevNodeA
push eax
call esi
cmp eax, edi
mov dword [0x4435ac], eax
jne 0x402ca4
mov eax, dword [0x44367c]
cmp eax, edi
je 0x402ca4
push str.CM_Locate_DevNodeA
push eax
call esi
mov dword [0x4435ac], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402e66
push str.CM_Reenumerate_DevNode
push eax
call esi
cmp eax, edi
mov dword [0x443654], eax
jne 0x402cd8
mov eax, dword [0x44367c]
cmp eax, edi
je 0x402cd8
push str.CM_Reenumerate_DevNode
push eax
call esi
mov dword [0x443654], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402e9c
push str.CM_Get_DevNode_Status
push eax
call esi
cmp eax, edi
mov dword [0x4435e8], eax
jne 0x402d0c
mov eax, dword [0x44367c]
cmp eax, edi
je 0x402d0c
push str.CM_Get_DevNode_Status
push eax
call esi
mov dword [0x4435e8], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402ecc
push str.CM_Get_Child
push eax
call esi
cmp eax, edi
mov dword [0x4435a4], eax
jne 0x402d40
mov eax, dword [0x44367c]
cmp eax, edi
je 0x402d40
push str.CM_Get_Child
push eax
call esi
mov dword [0x4435a4], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402ef3
push str.CM_Get_Parent
push eax
call esi
cmp eax, edi
mov dword [0x4435f4], eax
jne 0x402d74
mov eax, dword [0x44367c]
cmp eax, edi
je 0x402d74
push str.CM_Get_Parent
push eax
call esi
mov dword [0x4435f4], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402f14
push str.CM_Get_Sibling
push eax
call esi
cmp eax, edi
mov dword [0x443660], eax
jne 0x402da8
mov eax, dword [0x44367c]
cmp eax, edi
je 0x402da8
push str.CM_Get_Sibling
push eax
call esi
mov dword [0x443660], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402f2f
push str.CM_Get_Device_IDA
push eax
call esi
cmp eax, edi
mov dword [0x44363c], eax
jne 0x402ddc
mov eax, dword [0x44367c]
cmp eax, edi
je 0x402ddc
push str.CM_Get_Device_IDA
push eax
call esi
mov dword [0x44363c], eax
mov eax, dword [0x443678]
cmp eax, edi
je 0x402f44
push str.CM_Get_Device_ID_Size
push eax
call esi
cmp eax, edi
mov dword [0x4435d8], eax
jne 0x402f57
mov eax, dword [0x44367c]
cmp eax, edi
je 0x402f57
push str.CM_Get_Device_ID_Size
push eax
call esi
pop esi
mov dword [0x4435d8], eax
mov eax, 1
add dword [0x44366c], eax
pop ebx
pop edi
add esp, 0xc
ret
mov eax, dword [0x44367c]
cmp eax, edi
jne 0x402c97
mov dword [0x4435ac], edi
mov dword [0x443654], edi
mov dword [0x4435e8], edi
mov dword [0x4435a4], edi
mov dword [0x4435f4], edi
mov dword [0x443660], edi
mov dword [0x44363c], edi
jmp 0x402f51
mov eax, dword [0x44367c]
cmp eax, edi
jne 0x402ccb
mov dword [0x443654], edi
mov dword [0x4435e8], edi
mov dword [0x4435a4], edi
mov dword [0x4435f4], edi
mov dword [0x443660], edi
mov dword [0x44363c], edi
jmp 0x402f51
mov eax, dword [0x44367c]
cmp eax, edi
jne 0x402cff
mov dword [0x4435e8], edi
mov dword [0x4435a4], edi
mov dword [0x4435f4], edi
mov dword [0x443660], edi
mov dword [0x44363c], edi
jmp 0x402f51
mov eax, dword [0x44367c]
cmp eax, edi
jne 0x402d33
mov dword [0x4435a4], edi
mov dword [0x4435f4], edi
mov dword [0x443660], edi
mov dword [0x44363c], edi
jmp 0x402f51
mov eax, dword [0x44367c]
cmp eax, edi
jne 0x402d67
mov dword [0x4435f4], edi
mov dword [0x443660], edi
mov dword [0x44363c], edi
jmp 0x402f51
mov eax, dword [0x44367c]
cmp eax, edi
jne 0x402d9b
mov dword [0x443660], edi
mov dword [0x44363c], edi
jmp 0x402f51
mov eax, dword [0x44367c]
cmp eax, edi
jne 0x402dcf
mov dword [0x44363c], edi
jmp 0x402f51
mov eax, dword [0x44367c]
cmp eax, edi
jne 0x402e0b
mov dword [0x4435d8], edi
pop esi
mov eax, 1
add dword [0x44366c], eax
pop ebx
pop edi
add esp, 0xc
ret