Function at 0x442290
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0x3ac
push esi
push edi
xor edi, edi
push 8
push edi
push edi
push 0x485fbc
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x28], 1
mov dword [esp + 0x24], edi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
mov esi, eax
cmp esi, 0xffffffff
je 0x4422ed
lea eax, [esp + 0x1cc]
push eax
push esi
mov dword [esp + 0x1d4], 0x11f
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInfoListDetailA]
test eax, eax
jne 0x4422f8
push esi
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
pop edi
xor eax, eax
pop esi
add esp, 0x3ac
ret
lea ecx, [esp + 0x20]
push ecx
push edi
push esi
mov dword [esp + 0x2c], 0x1c
mov dword [esp + 0x28], edi
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
je 0x4424a4
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push ebx
push ebp
mov ebp, dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
mov ebx, 4
lea esp, [esp]
lea edx, [esp + 0x10]
push edx
push 0xc8
lea eax, [esp + 0x2fc]
push eax
lea ecx, [esp + 0x20]
push ecx
push 1
lea edx, [esp + 0x3c]
push edx
push esi
call ebp
test eax, eax
jne 0x44236e
test dword [0x4900e8], 0x10000
je 0x44236e
push str.PowerXpressSetDesktopPreference:_fail_to_get_SPDRP_HARDWAREID
call fcn.0040aab0
add esp, 4
lea eax, [esp + 0x10]
push eax
push 0xc8
lea ecx, [esp + 0x114]
push ecx
lea edx, [esp + 0x20]
push edx
push 9
lea eax, [esp + 0x3c]
push eax
push esi
call ebp
test eax, eax
jne 0x4423ac
test dword [0x4900e8], 0x10000
je 0x4423ac
push str.PowerXpressSetDesktopPreference:_fail_to_get_SPDRP_DRIVER
call fcn.0040aab0
add esp, 4
lea ecx, [esp + 0x10c]
push ecx
push str.SYSTEMCurrentControlSetControlClass
lea edx, [esp + 0x4c]
push str._s_s
push edx
call fcn.0045e6a9
mov eax, dword [0x4900e8]
add esp, 0x10
test eax, 0x10000
je 0x4423e9
lea eax, [esp + 0x44]
push eax
push str.PowerXpressSetDesktopPreference:_registry:_s_n
call fcn.0040aab0
add esp, 8
lea ecx, [esp + 0x18]
push ecx
push 0x2001f
push 0
lea edx, [esp + 0x50]
push edx
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x442479
lea eax, [esp + 0x10]
push eax
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x1c]
push edx
push 0
push str.PXACAutoSwitch
push eax
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x38], 1
call edi
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x442471
lea ecx, [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x1c]
push eax
push 0
push str.PXPreference
push ecx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x34], 0
call edi
test eax, eax
je 0x4424a2
jmp 0x442479
mov dword [esp + 0x1c], 0xffffffff
mov edx, dword [esp + 0x18]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x24]
lea ecx, [esp + 0x28]
inc eax
push ecx
push eax
push esi
mov dword [esp + 0x30], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
jne 0x442330
pop ebp
pop ebx
push esi
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov eax, dword [esp + 0x14]
pop edi
pop esi
add esp, 0x3ac
ret