Function at 0x401000
Capabilities:
Link many functions at runtime

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, ecx
push edi
xor ebx, ebx
push str.Kernel32.dll
mov dword [esi], 0x4173b0
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
mov dword [esi + 0x2c], ebx
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x20], ebx
mov dword [esi + 0x24], ebx
mov dword [esi + 0x28], ebx
mov dword [esi + 0x30], ebx
mov dword [esi + 0x34], ebx
mov dword [esi + 0x38], ebx
mov dword [esi + 0x3c], ebx
mov dword [esi + 0x40], ebx
mov dword [esi + 0x44], ebx
mov dword [esi + 0x48], ebx
mov dword [esi + 0x4c], ebx
mov dword [esi + 0x50], ebx
mov dword [esi + 0x54], ebx
mov dword [esi + 0x58], ebx
mov dword [esi + 0x5c], ebx
mov dword [esi + 0x60], ebx
mov dword [esi + 0x64], ebx
mov dword [esi + 0x68], ebx
mov dword [esi + 0x6c], ebx
mov dword [esi + 0x70], ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
mov dword [esi + 4], eax
je 0x401092
push str.GetDiskFreeSpaceExA
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x14], eax
jne 0x4010b1
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_GetDiskFreeSpaceEx
jmp 0x4010a1
push ecx
mov dword [esi + 4], ebx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUti_LoadLibrary_Kernel32_
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
push str.User32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
mov dword [esi + 8], eax
je 0x40113c
push str.RegisterDeviceNotificationA
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x2c], eax
jne 0x4010ee
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_RegisterDeviceNotification
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov eax, dword [esi + 8]
push str.UnregisterDeviceNotification
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x18], eax
jne 0x40111c
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_UnregisterDeviceNotification
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov ecx, dword [esi + 8]
push str.GetWindowModuleFileNameA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x1c], eax
jne 0x40115b
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_GetWindowModuleFileNameA
jmp 0x40114b
push ecx
mov dword [esi + 8], ebx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUti_LoadLibrary_User32_
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
push str.SetupAPI.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
mov dword [esi + 0xc], eax
je 0x40146e
push str.SetupDiEnumDeviceInterfaces
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x20], eax
jne 0x40119c
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupDiEnumDeviceInterfaces
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov edx, dword [esi + 0xc]
push str.SetupDiGetDeviceInterfaceDetailA
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x24], eax
jne 0x4011ca
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupDiGetDeviceInterfaceDetail
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov eax, dword [esi + 0xc]
push str.SetupDiOpenDeviceInterfaceRegKey
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x28], eax
jne 0x4011f8
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupDiOpenDeviceInterfaceRegKey
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov ecx, dword [esi + 0xc]
push str.SetupDiGetClassDevsA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x30], eax
jne 0x401226
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupDiGetClassDevsA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov edx, dword [esi + 0xc]
push str.SetupDiDestroyDeviceInfoList
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x34], eax
jne 0x401254
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupDiDestroyDeviceInfoList
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov eax, dword [esi + 0xc]
push str.SetupDiEnumDeviceInfo
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x38], eax
jne 0x401282
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupDiEnumDeviceInfo
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov ecx, dword [esi + 0xc]
push str.SetupDiGetDeviceRegistryPropertyA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x3c], eax
jne 0x4012b0
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupDiGetDeviceRegistryPropertyA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov edx, dword [esi + 0xc]
push str.SetupDiSetDeviceRegistryPropertyA
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x40], eax
jne 0x4012de
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupDiSetDeviceRegistryPropertyA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov eax, dword [esi + 0xc]
push str.SetupDiRemoveDevice
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x44], eax
jne 0x40130c
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupDiRemoveDevice
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov ecx, dword [esi + 0xc]
push str.SetupOpenInfFileA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x48], eax
jne 0x40133a
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupOpenInfFileA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov edx, dword [esi + 0xc]
push str.SetupGetLineByIndexA
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x4c], eax
jne 0x401368
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupGetLineByIndexA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov eax, dword [esi + 0xc]
push str.SetupGetStringFieldA
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x50], eax
jne 0x401396
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupGetStringFieldA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov ecx, dword [esi + 0xc]
push str.SetupCloseInfFile
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x54], eax
jne 0x4013c4
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupCloseInfFile
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov edx, dword [esi + 0xc]
push str.SetupGetLineCountA
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x58], eax
jne 0x4013f2
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupGetLineCountA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov eax, dword [esi + 0xc]
push str.SetupGetInfFileListA
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x5c], eax
jne 0x401420
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupGetInfFileListA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov ecx, dword [esi + 0xc]
push str.SetupGetInfInformationA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x60], eax
jne 0x40144e
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_lpfnSetupGetInfInformationA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov edx, dword [esi + 0xc]
push str.SetupQueryInfFileInformationA
push edx
call edi
cmp eax, ebx
mov dword [esi + 0x64], eax
jne 0x40148d
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_SetupQueryInfFileInformationA
jmp 0x40147d
push ecx
mov dword [esi + 0xc], ebx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUti_LoadLibrary_SetupApi_
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
push str.Cfgmgr32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
mov dword [esi + 0x10], eax
je 0x401518
push str.CM_Locate_DevNode_ExA
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x68], eax
jne 0x4014ca
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_CM_Locate_DevNode_ExA
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov eax, dword [esi + 0x10]
push str.CM_Reenumerate_DevNode_Ex
push eax
call edi
cmp eax, ebx
mov dword [esi + 0x6c], eax
jne 0x4014f8
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_CM_Reenumerate_DevNode_Ex
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov ecx, dword [esi + 0x10]
push str.CM_Get_Device_IDA
push ecx
call edi
cmp eax, ebx
mov dword [esi + 0x70], eax
jne 0x401537
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUtil_GetProcAddress_CM_Get_Device_IDA
jmp 0x401527
push ecx
mov dword [esi + 0x10], ebx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.SysUti_LoadLibrary_Cfgmgr32_
call fcn.0040ffda
call ebp
push eax
call fcn.00401680
add esp, 8
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret