Function at 0x417c20
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x874
mov eax, dword [0x4263e4]
xor eax, ebp
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x874], ecx
mov dword [ebp - 8], 0
mov dword [ebp - 0x444], 0
push 0x128
push 0
lea eax, [ebp - 0x240]
push eax
call fcn.00409340
add esp, 0xc
mov dword [ebp - 0x240], 0x128
lea ecx, [ebp - 0x240]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstallParamsA]
test eax, eax
jne 0x417ca3
push str.not_SetupDiGetDeviceInstallParams_n
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor ecx, ecx
jne 0x417c83
xor al, al
jmp 0x418182
mov edx, dword [ebp - 0x238]
or edx, 0x4000800
mov dword [ebp - 0x238], edx
lea eax, [ebp - 0x240]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupDiSetDeviceInstallParamsA]
test eax, eax
je 0x417d11
push 1
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiBuildDriverInfoList]
test eax, eax
jne 0x417ce9
xor al, al
jmp 0x418182
mov edx, dword [ebp + 0x10]
push edx
push 0
push 1
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDriverInfoA]
test eax, eax
jne 0x417d0a
xor al, al
jmp 0x418182
mov al, 1
jmp 0x418182
mov edx, dword [ebp - 0x238]
and edx, 0xfbfff7ff
mov dword [ebp - 0x238], edx
push 0x20019
push 2
push 0
push 1
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiOpenDevRegKey]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0xffffffff
jne 0x417d6f
push str.not_SetupDiOpenDevRegKey_n
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor edx, edx
jne 0x417d45
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor al, al
jmp 0x418182
mov dword [ebp - 4], 0x104
lea ecx, [ebp - 4]
push ecx
lea edx, [ebp - 0x21c]
push edx
lea eax, [ebp - 0x44c]
push eax
push 0
push str.InfPath
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x114], eax
cmp dword [ebp - 0x114], 0
jne 0x417db1
cmp dword [ebp - 0x44c], 1
je 0x417ddb
push 0x421634
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor edx, edx
jne 0x417db1
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor al, al
jmp 0x418182
mov dword [ebp - 4], 0x100
lea ecx, [ebp - 4]
push ecx
lea edx, [ebp - 0x340]
push edx
lea eax, [ebp - 0x44c]
push eax
push 0
push str.ProviderName
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x114], eax
cmp dword [ebp - 0x114], 0
jne 0x417e1d
cmp dword [ebp - 0x44c], 1
je 0x417e47
push 0x42165c
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor edx, edx
jne 0x417e1d
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor al, al
jmp 0x418182
mov dword [ebp - 4], 0x100
lea ecx, [ebp - 4]
push ecx
lea edx, [ebp - 0x550]
push edx
lea eax, [ebp - 0x44c]
push eax
push 0
push str.InfSection
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x114], eax
cmp dword [ebp - 0x114], 0
jne 0x417e89
cmp dword [ebp - 0x44c], 1
je 0x417eb3
push 0x421680
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor edx, edx
jne 0x417e89
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor al, al
jmp 0x418182
mov dword [ebp - 4], 0x100
lea ecx, [ebp - 4]
push ecx
lea edx, [ebp - 0x110]
push edx
lea eax, [ebp - 0x44c]
push eax
push 0
push str.DriverDesc
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x114], eax
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x114], 0
jne 0x417eff
cmp dword [ebp - 0x44c], 1
je 0x417f1f
push str.not_RegQueryValueEx_n
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor eax, eax
jne 0x417eff
xor al, al
jmp 0x418182
push 0
push 0x100
lea ecx, [ebp - 0x440]
push ecx
push 0
push 0xb
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
test eax, eax
jne 0x417f63
push str.not_SetupDiGetDeviceRegistryProperty_n
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor ecx, ecx
jne 0x417f43
xor al, al
jmp 0x418182
mov edx, dword [ebp - 0x23c]
or edx, 0x10000
mov dword [ebp - 0x23c], edx
mov eax, dword [ebp - 0x238]
or eax, 0x800
mov dword [ebp - 0x238], eax
lea ecx, [ebp - 0x240]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiSetDeviceInstallParamsA]
test eax, eax
jne 0x417fbf
push str.not_SetupDiSetDeviceInstallParams_n
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor ecx, ecx
jne 0x417f9f
xor al, al
jmp 0x418182
push 1
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiBuildDriverInfoList]
test eax, eax
jne 0x417ff3
push str.SetupDiBuildDriverInfoList_is_failed_n
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor ecx, ecx
jne 0x417fd3
xor al, al
jmp 0x418182
mov dword [ebp - 0x448], 0
jmp 0x41800e
mov edx, dword [ebp - 0x448]
add edx, 1
mov dword [ebp - 0x448], edx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp - 0x448]
push ecx
push 1
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDriverInfoA]
test eax, eax
je 0x41815d
lea ecx, [ebp - 0x440]
push ecx
mov edx, dword [ebp + 0x10]
add edx, 0x10c
push edx
call fcn.00404260
add esp, 8
test eax, eax
jne 0x418158
lea eax, [ebp - 0x340]
push eax
mov ecx, dword [ebp + 0x10]
add ecx, 0x20c
push ecx
call fcn.00404260
add esp, 8
test eax, eax
jne 0x418158
mov dword [ebp - 0x870], 0x31d
push 0
push 0x31d
lea edx, [ebp - 0x870]
push edx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDriverInfoDetailA]
test eax, eax
jne 0x4180b1
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
je 0x4180b1
jmp 0x417fff
lea eax, [ebp - 0x550]
push eax
lea ecx, [ebp - 0x858]
push ecx
push str.detail:local__s:_s_n
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0x14
xor edx, edx
jne 0x4180b1
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp - 0x654]
push ecx
push str.desc:local__s:_s_n
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0x14
xor edx, edx
jne 0x4180d8
lea eax, [ebp - 0x550]
push eax
lea ecx, [ebp - 0x858]
push ecx
call fcn.00404260
add esp, 8
test eax, eax
jne 0x418158
lea edx, [ebp - 0x110]
push edx
lea eax, [ebp - 0x654]
push eax
call fcn.00404260
add esp, 8
test eax, eax
jne 0x418158
push str.matchtrue_n
push 2
call fcn.004168e0
push eax
call fcn.00416130
add esp, 0xc
xor ecx, ecx
jne 0x418133
mov dword [ebp - 0x444], 1
jmp 0x41815d
jmp 0x417fff
cmp dword [ebp - 0x444], 0
jne 0x418176
push 1
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDriverInfoList]
xor eax, eax
cmp dword [ebp - 0x444], 1
sete al
mov ecx, dword [ebp - 0xc]
xor ecx, ebp
call fcn.00405248
mov esp, ebp
pop ebp
ret 0xc