Function at 0x41fba0
Capabilities:
Query or enumerate registry value

Disassembly:
sub esp, 0x860
mov eax, dword [0x45a080]
xor eax, esp
mov dword [esp + 0x85c], eax
mov eax, dword [esp + 0x870]
push ebp
mov ebp, dword [esp + 0x868]
push esi
mov esi, dword [esp + 0x870]
push 0x128
lea ecx, [esp + 0x20]
push 0
push ecx
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
call fcn.0042cb50
add esp, 0xc
lea edx, [esp + 0x1c]
push edx
push esi
push ebp
mov dword [esp + 0x28], 0x128
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstallParamsA]
test eax, eax
je 0x41fc29
push 0x20019
push 2
push 0
push 1
push esi
push ebp
call dword [sym.imp.SETUPAPI.dll_SetupDiOpenDevRegKey]
mov esi, eax
cmp esi, 0xffffffff
jne 0x41fc42
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop esi
xor eax, eax
pop ebp
mov ecx, dword [esp + 0x85c]
xor ecx, esp
call fcn.004251af
add esp, 0x860
ret
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [esp + 0xc]
push eax
lea ecx, [esp + 0x48]
push ecx
lea edx, [esp + 0x18]
push edx
push 0
push str.InfPath
push esi
mov dword [esp + 0x24], 0x104
call edi
test eax, eax
jne 0x41ff60
cmp dword [esp + 0x10], 1
jne 0x41ff60
cmp dword [esp + 0x878], eax
je 0x41fcd6
cmp dword [esp + 0xc], 3
jb 0x41ff60
movsx eax, byte [esp + 0x44]
push eax
call fcn.0042b5c3
add esp, 4
cmp eax, 0x4f
jne 0x41ff60
movsx ecx, byte [esp + 0x45]
push ecx
call fcn.0042b5c3
add esp, 4
cmp eax, 0x45
jne 0x41ff60
movsx edx, byte [esp + 0x46]
push edx
call fcn.0042b5c3
add esp, 4
cmp eax, 0x4d
jne 0x41ff60
push ebx
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x570]
push ecx
lea edx, [esp + 0x1c]
push edx
push 0
push str.ProviderName
mov ebx, 0x100
push esi
mov dword [esp + 0x28], ebx
call edi
test eax, eax
jne 0x41ff55
cmp dword [esp + 0x14], 1
jne 0x41ff55
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x770]
push ecx
lea edx, [esp + 0x1c]
push edx
push 0
push str.InfSection
push esi
mov dword [esp + 0x28], ebx
call edi
test eax, eax
jne 0x41ff55
cmp dword [esp + 0x14], 1
jne 0x41ff55
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x670]
push ecx
lea edx, [esp + 0x1c]
push edx
push 0
push str.DriverDesc
push esi
mov dword [esp + 0x28], ebx
call edi
push esi
mov edi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
jne 0x41ff5c
cmp dword [esp + 0x14], 1
jne 0x41ff5c
mov esi, dword [esp + 0x20]
push edi
push ebx
lea eax, [esp + 0x474]
push eax
push edi
push 0xb
push esi
push ebp
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
test eax, eax
je 0x41ff5c
or dword [esp + 0x28], 0x10000
or dword [esp + 0x2c], 0x800
lea ecx, [esp + 0x24]
push ecx
push esi
push ebp
call dword [sym.imp.SETUPAPI.dll_SetupDiSetDeviceInstallParamsA]
test eax, eax
je 0x41ff5c
push 1
push esi
push ebp
call dword [sym.imp.SETUPAPI.dll_SetupDiBuildDriverInfoList]
test eax, eax
je 0x41ff5c
mov edi, dword [esp + 0x18]
push edi
xor ebx, ebx
push ebx
push 1
push esi
push ebp
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDriverInfoA]
test eax, eax
je 0x41ff27
lea ecx, [esp + 0x46c]
lea eax, [edi + 0x10c]
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41fe20
test dl, dl
je 0x41fe1c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41fe20
add eax, 2
add ecx, 2
test dl, dl
jne 0x41fe00
xor eax, eax
jmp 0x41fe25
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41ff10
lea ecx, [esp + 0x56c]
lea eax, [edi + 0x20c]
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41fe60
test dl, dl
je 0x41fe5c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41fe60
add eax, 2
add ecx, 2
test dl, dl
jne 0x41fe40
xor eax, eax
jmp 0x41fe65
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41ff10
push eax
push 0x31d
lea edx, [esp + 0x154]
push edx
push edi
push esi
push ebp
mov dword [esp + 0x164], 0x31d
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDriverInfoDetailA]
test eax, eax
jne 0x41fe9e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x41ff10
lea ecx, [esp + 0x76c]
lea eax, [esp + 0x164]
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41fed0
test dl, dl
je 0x41fecc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41fed0
add eax, 2
add ecx, 2
test dl, dl
jne 0x41feb0
xor eax, eax
jmp 0x41fed5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x41ff10
lea ecx, [esp + 0x66c]
lea eax, [esp + 0x368]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41ff07
test dl, dl
je 0x41ff03
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41ff07
add eax, 2
add ecx, 2
test dl, dl
jne 0x41fee7
xor eax, eax
jmp 0x41ff0c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x41ff4e
push edi
add ebx, 1
push ebx
push 1
push esi
push ebp
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDriverInfoA]
test eax, eax
jne 0x41fdf0
push 1
push esi
push ebp
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDriverInfoList]
mov eax, dword [esp + 0x1c]
pop ebx
pop edi
pop esi
pop ebp
mov ecx, dword [esp + 0x85c]
xor ecx, esp
call fcn.004251af
add esp, 0x860
ret
mov eax, 1
jmp 0x41ff35
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
jmp 0x41ff35
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x868]
pop edi
pop esi
pop ebp
xor ecx, esp
xor eax, eax
call fcn.004251af
add esp, 0x860
ret