Function at 0x405dc0
Capabilities:
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x467a07
mov eax, dword fs:[0]
push eax
mov eax, 0x2fb4
call fcn.00454790
mov eax, dword [0x48807c]
xor eax, esp
mov dword [esp + 0x2fb0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x48807c]
xor eax, esp
push eax
lea eax, [esp + 0x2fc8]
mov dword fs:[0], eax
mov ebx, dword [esp + 0x2fd8]
mov edi, dword [esp + 0x2fdc]
mov ebp, dword [esp + 0x2fe0]
mov esi, ecx
push str.__UninstallDriver___n
mov dword [esp + 0x2c], esi
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], edi
mov dword [esp + 0x44], ebp
call fcn.004454c0
add esp, 4
test ebx, ebx
je 0x405e45
push ebx
push str.__wszModel___s__n
call fcn.004454c0
add esp, 8
test edi, edi
je 0x405e57
push edi
push str.__wszName___s__n
call fcn.004454c0
add esp, 8
test ebp, ebp
je 0x405e69
push ebp
push str.__wszHardwardID___s__n
call fcn.004454c0
add esp, 8
cmp dword [esi + 0x438], 0
mov dword [esp + 0x2c], 0
mov byte [esp + 0x17], 0
jne 0x405e86
xor eax, eax
jmp 0x406622
cmp byte [esi + 0x444], 0
jne 0x405e9c
push 0
push 0
push 1
mov ecx, esi
call fcn.0040bbd0
test byte [esp + 0x2fe4], 2
mov eax, 4
je 0x405eb0
mov eax, 6
push 0
push 0
push 0
push eax
mov eax, dword [esi + 0x438]
push 0
push 0
push 0
call eax
mov dword [esp + 0x1c], eax
cmp eax, 0xffffffff
je 0x4065fb
push 0
push ebx
push 0
lea ecx, [esp + 0x50]
push ecx
push 0
push eax
mov ecx, esi
mov dword [esp + 0x50], 0
call fcn.00401fe0
test eax, eax
je 0x4065e9
cmp eax, 1
jne 0x4065bb
mov edx, dword [esp + 0x30]
push edx
push str.FOUND___s__n
call fcn.004454c0
xor eax, eax
push 0x3fe
push eax
lea ecx, [esp + 0x25be]
push ecx
mov word [esp + 0x25c0], ax
call fcn.00453450
add esp, 0x14
lea edx, [esp + 0x24]
push edx
push 0x104
lea eax, [esp + 0x25b4]
push eax
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x48]
push ecx
push 0xc
lea edx, [esp + 0x58]
push edx
push eax
mov dword [esp + 0x40], 0x104
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
mov esi, eax
push esi
lea ecx, [esp + 0x25b0]
push ecx
push str.__SPDRP_FRIENDLYNAME___s____d__n
mov dword [esp + 0x24], esi
call fcn.004454c0
add esp, 0xc
test esi, esi
jne 0x406208
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 4]
cmp dword [eax], 0x17
jl 0x406208
xor eax, eax
push 0x206
push eax
lea ecx, [esp + 0x2bbe]
push ecx
mov word [esp + 0x2bc0], ax
call fcn.00453450
mov ecx, dword [esp + 0x28]
add esp, 0xc
push esi
push 0x104
lea edx, [esp + 0x2bbc]
push edx
lea eax, [esp + 0x50]
push eax
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstanceIdW]
test eax, eax
setne al
test al, al
je 0x406208
cmp word [esp + 0x2bb4], si
je 0x406208
push 8
call fcn.004534f0
add esp, 4
mov dword [esp + 0x20], eax
mov dword [esp + 0x2fd0], esi
test eax, eax
je 0x40600e
mov ecx, eax
call fcn.004186a0
jmp 0x406010
xor eax, eax
mov ecx, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x2fd0], 0xffffffff
call fcn.004186d0
test eax, eax
jne 0x4061f0
mov esi, dword [0x46adcc]
mov edi, dword [0x46add0]
mov ebp, dword [0x46add4]
mov ebx, dword [0x46add8]
xor edx, edx
push 0x206
push edx
lea eax, [esp + 0x21a6]
push eax
mov word [esp + 0x21a8], dx
call fcn.00453450
add esp, 0xc
push 1
push 0
lea ecx, [esp + 0x21a4]
push ecx
mov ecx, dword [0x46b188]
sub esp, 0x14
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [0x46b18c]
mov dword [eax + 4], ecx
mov ecx, dword [0x46b190]
mov dword [eax + 8], ecx
mov ecx, dword [0x46b194]
mov dword [eax + 0xc], ecx
mov ecx, dword [0x46b198]
mov dword [eax + 0x10], ecx
mov ecx, dword [0x46addc]
lea edx, [esp + 0x2bd4]
push edx
sub esp, 0x14
mov eax, esp
mov dword [eax], esi
mov dword [eax + 4], edi
mov dword [eax + 8], ebp
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ecx
mov ecx, dword [esp + 0x58]
push str.ProviderMicrosoft.Base.PnP
call fcn.00418a30
lea eax, [esp + 0x219c]
push eax
push str.PKEY_PNPX_WIA_FRIENDLY_NAME____s__n
call fcn.004454c0
add esp, 8
cmp word [esp + 0x219c], 0
je 0x40611d
xor eax, eax
jmp 0x406100
movzx ecx, word [esp + eax + 0x219c]
mov word [esp + eax + 0x25ac], cx
add eax, 2
test cx, cx
jne 0x406100
jmp 0x4061e8
push str.Still_nothing__try_registry_n
call fcn.004454c0
mov edx, dword [esp + 0x20]
add esp, 4
push 0x20019
push 2
push 0
push 1
lea ecx, [esp + 0x54]
push ecx
push edx
call dword [sym.imp.SETUPAPI.dll_SetupDiOpenDevRegKey]
mov esi, eax
xor eax, eax
push 0x206
push eax
lea ecx, [esp + 0x23ae]
push ecx
mov word [esp + 0x23b0], ax
call fcn.00453450
add esp, 0xc
cmp esi, 0xffffffff
je 0x4061ac
push 0x20019
lea edx, [esp + 0x23a8]
push edx
push str.FriendlyName
push 0x46b804
push esi
call fcn.00451b90
add esp, 0x14
test eax, eax
je 0x4061a5
lea eax, [esp + 0x23a4]
push eax
push str.FriendlyName____s__n
call fcn.004454c0
add esp, 8
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp word [esp + 0x23a4], 0
je 0x4061f0
push str.found__use_this_one_n
call fcn.004454c0
add esp, 4
xor eax, eax
jmp 0x4061d0
movzx ecx, word [esp + eax + 0x23a4]
mov word [esp + eax + 0x25ac], cx
add eax, 2
test cx, cx
jne 0x4061d0
mov dword [esp + 0x18], 1
mov esi, dword [esp + 0x20]
test esi, esi
je 0x406208
mov ecx, esi
call fcn.004186b0
push esi
call fcn.004534ca
add esp, 4
xor bl, bl
cmp word [esp + 0x25ac], 0
jne 0x406237
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40623e
lea edx, [esp + 0x25ac]
sub edx, eax
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x406226
jmp 0x40623e
cmp dword [esp + 0x18], 0
je 0x40626d
mov esi, dword [esp + 0x34]
test esi, esi
je 0x40627b
lea ecx, [esp + 0x25ac]
push ecx
push esi
call fcn.00453ad3
add esp, 8
test eax, eax
jne 0x406271
push esi
push str.__Found_Friendly_name___s__n
call fcn.004454c0
add esp, 8
mov bl, 1
jmp 0x406271
mov esi, dword [esp + 0x34]
test esi, esi
je 0x40627b
cmp word [esi], 0
jne 0x40627d
mov bl, 1
mov edi, dword [esp + 0x1c]
lea edx, [esp + 0x24]
push edx
mov ebp, 0x104
push ebp
lea eax, [esp + 0x25b4]
push eax
lea ecx, [esp + 0x48]
push ecx
push 1
lea edx, [esp + 0x58]
push edx
push edi
mov dword [esp + 0x40], ebp
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyW]
mov esi, eax
push esi
lea eax, [esp + 0x25b0]
push eax
push str.__SPDRP_HARDWAREID___s____d__n
call fcn.004454c0
add esp, 0xc
test esi, esi
je 0x40659d
mov esi, dword [esp + 0x40]
test esi, esi
je 0x40659d
lea ecx, [esp + 0x25ac]
push ecx
push esi
call fcn.00453ad3
add esp, 8
test eax, eax
jne 0x40659d
push esi
push str.__Found_HWID___s__n
call fcn.004454c0
add esp, 8
test bl, bl
je 0x4065ae
xor edx, edx
push 0x206
push edx
lea eax, [esp + 0x29b6]
push eax
mov byte [esp + 0x23], 1
mov word [esp + 0x29b8], dx
call fcn.00453450
add esp, 0xc
push 0xf003f
push 2
push 0
push 1
lea ecx, [esp + 0x54]
push ecx
push edi
call dword [sym.imp.SETUPAPI.dll_SetupDiOpenDevRegKey]
mov esi, eax
cmp esi, 0xffffffff
je 0x40637c
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x29b0]
push eax
lea ecx, [esp + 0x20]
push ecx
push 0
push str.InfPath
push esi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x30], 0
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea edx, [esp + 0x44]
push edx
push edi
push 5
call dword [sym.imp.SETUPAPI.dll_SetupDiCallClassInstaller]
test eax, eax
je 0x406587
cmp word [esp + 0x29ac], 0
mov dword [esp + 0x2c], 1
je 0x4065bb
xor eax, eax
push 0x206
push eax
lea ecx, [esp + 0x1f9e]
push ecx
mov word [esp + 0x1fa0], ax
call fcn.00453450
mov ebx, dword [esp + 0x34]
mov eax, dword [ebx + 4]
lea edx, [esp + 0x29b8]
push edx
add eax, 0x218
push eax
lea ecx, [esp + 0x1fa8]
push str._sInf_s
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
mov ecx, dword [ebx + 4]
add esp, 0x1c
push 0
lea edx, [esp + 0x1f98]
push edx
call fcn.004496a0
test al, al
je 0x4065bb
push 0x4fc8
call fcn.004534f0
add esp, 4
mov dword [esp + 0x18], eax
mov dword [esp + 0x2fd0], 1
test eax, eax
je 0x406444
push 0
lea ecx, [esp + 0x1f98]
push ecx
mov ecx, eax
call fcn.00446910
mov esi, eax
mov dword [esp + 0x18], eax
jmp 0x40644a
xor esi, esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x2fd0], 0xffffffff
test esi, esi
je 0x4065bb
lea ecx, [esp + 0x60]
call fcn.00405360
mov eax, dword [esp + 0x30]
lea edx, [esp + 0x60]
push edx
push eax
mov ecx, esi
mov dword [esp + 0x2fd8], 2
call fcn.00448670
test eax, eax
je 0x40655d
mov eax, dword [esp + 0x1f50]
xor ebp, ebp
mov dword [esp + 0x20], eax
test eax, eax
jle 0x406514
nop
mov ecx, dword [esp + 0x1f4c]
mov eax, dword [ecx + ebp*8]
mov edx, dword [eax + 4]
mov ecx, dword [esp + 0x1f34]
mov ecx, dword [ecx + edx*8]
add eax, 0x210
push eax
push ecx
lea edx, [esp + 0x2dc4]
push 0x46ab98
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
xor esi, esi
add esp, 0x10
cmp dword [ebx + 0x44c], esi
jle 0x40650d
mov edi, edi
mov eax, dword [ebx + 0x448]
mov edi, dword [eax + esi*8]
lea ecx, [esp + 0x2dbc]
push ecx
push edi
call fcn.00453ad3
add esp, 8
test eax, eax
jne 0x406504
dec dword [edi + 0x208]
inc esi
cmp esi, dword [ebx + 0x44c]
jl 0x4064e0
inc ebp
cmp ebp, dword [esp + 0x20]
jl 0x4064a0
xor esi, esi
cmp dword [ebx + 0x44c], esi
jle 0x40655d
or ebp, 0xffffffff
jmp 0x406530
mov edx, dword [ebx + 0x448]
mov edi, dword [edx + esi*8]
lea eax, [esp + 0x1f94]
push eax
push edi
call fcn.00453ad3
add esp, 8
test eax, eax
jne 0x406554
add dword [edi + 0x208], ebp
inc esi
cmp esi, dword [ebx + 0x44c]
jl 0x406530
mov esi, dword [esp + 0x18]
mov ecx, esi
call fcn.00447670
push esi
call fcn.004534ca
add esp, 4
lea ecx, [esp + 0x60]
mov dword [esp + 0x2fd0], 0xffffffff
call fcn.00405530
jmp 0x4065bb
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.SetupDiCallClassInstaller2___ld__n
call fcn.004454c0
add esp, 8
jmp 0x4065bb
push str.bHwIdMatch_is_not_match_n
call fcn.004454c0
add esp, 4
test bl, bl
jne 0x4065bb
push str.bFriendNameMatch_is_not_match_n
call fcn.004454c0
add esp, 4
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x38]
push 0
push ecx
mov ecx, dword [esp + 0x30]
push 0
inc eax
lea edx, [esp + 0x50]
push edx
push eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x30]
push eax
call fcn.00401fe0
test eax, eax
jne 0x405ef6
mov ecx, dword [esp + 0x1c]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
cmp byte [esp + 0x17], 0
jne 0x406603
mov dword [esp + 0x2c], 1
mov ecx, dword [esp + 0x28]
cmp byte [ecx + 0x444], 0
jne 0x40661e
mov edx, dword [esp + 0x2c]
push 0
push edx
push 2
call fcn.0040bbd0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x2fc8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x2fb0]
xor ecx, esp
call fcn.00453432
add esp, 0x2fc0
ret 0x10