Function at 0x1003720
Capabilities:
Query or enumerate registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov eax, 0x10d0
call fcn.01008100
mov eax, dword [0x100a1b0]
xor eax, ebp
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], 0
mov dword [ebp - 0x84c], 0
push 0x22c
push 0
lea eax, [ebp - 0x448]
push eax
call fcn.01008130
add esp, 0xc
mov dword [ebp - 0x448], 0x22c
lea ecx, [ebp - 0x448]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstallParamsW]
test eax, eax
jne 0x100378a
xor eax, eax
jmp 0x1003d4b
mov ecx, dword [ebp - 0x440]
or ecx, 0x4000800
mov dword [ebp - 0x440], ecx
lea edx, [ebp - 0x448]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiSetDeviceInstallParamsW]
test eax, eax
je 0x10037fb
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 0x10037d0
xor eax, eax
jmp 0x1003d4b
mov ecx, dword [ebp + 0x10]
push ecx
push 0
push 1
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDriverInfoW]
test eax, eax
jne 0x10037f1
xor eax, eax
jmp 0x1003d4b
mov eax, 1
jmp 0x1003d4b
mov ecx, dword [ebp - 0x440]
and ecx, 0xfbfff7ff
mov dword [ebp - 0x440], ecx
push 0x20019
push 2
push 0
push 1
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiOpenDevRegKey]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0xffffffff
jne 0x1003840
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
jmp 0x1003d4b
mov dword [ebp - 4], 0x208
lea edx, [ebp - 4]
push edx
lea eax, [ebp - 0x424]
push eax
lea ecx, [ebp - 0x854]
push ecx
push 0
push 0x100137c
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0x214], eax
cmp dword [ebp - 0x214], 0
jne 0x1003882
cmp dword [ebp - 0x854], 1
je 0x1003893
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
jmp 0x1003d4b
mov dword [ebp - 4], 0x200
lea ecx, [ebp - 4]
push ecx
lea edx, [ebp - 0x648]
push edx
lea eax, [ebp - 0x854]
push eax
push 0
push 0x1001360
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0x214], eax
cmp dword [ebp - 0x214], 0
jne 0x10038d5
cmp dword [ebp - 0x854], 1
je 0x10038e6
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
jmp 0x1003d4b
mov dword [ebp - 4], 0x200
lea eax, [ebp - 4]
push eax
lea ecx, [ebp - 0xa58]
push ecx
lea edx, [ebp - 0x854]
push edx
push 0
push 0x1001348
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0x214], eax
cmp dword [ebp - 0x214], 0
jne 0x1003928
cmp dword [ebp - 0x854], 1
je 0x1003939
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
jmp 0x1003d4b
mov dword [ebp - 4], 0x200
lea edx, [ebp - 4]
push edx
lea eax, [ebp - 0x210]
push eax
lea ecx, [ebp - 0x854]
push ecx
push 0
push 0x1001330
mov edx, dword [ebp - 8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0x214], eax
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x214], 0
jne 0x1003985
cmp dword [ebp - 0x854], 1
je 0x100398c
xor eax, eax
jmp 0x1003d4b
push 0
push 0x200
lea ecx, [ebp - 0x848]
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_SetupDiGetDeviceRegistryPropertyW]
test eax, eax
jne 0x10039b7
xor eax, eax
jmp 0x1003d4b
mov ecx, dword [ebp - 0x444]
or ecx, 0x10000
mov dword [ebp - 0x444], ecx
mov edx, dword [ebp - 0x440]
or edx, 0x800
mov dword [ebp - 0x440], edx
lea eax, [ebp - 0x448]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.SETUPAPI.dll_SetupDiSetDeviceInstallParamsW]
test eax, eax
jne 0x10039fb
xor eax, eax
jmp 0x1003d4b
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 0x1003a16
xor eax, eax
jmp 0x1003d4b
mov dword [ebp - 0x850], 0
jmp 0x1003a31
mov edx, dword [ebp - 0x850]
add edx, 1
mov dword [ebp - 0x850], edx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp - 0x850]
push ecx
push 1
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDriverInfoW]
test eax, eax
je 0x1003d2c
lea ecx, [ebp - 0x848]
mov dword [ebp - 0x1084], ecx
mov edx, dword [ebp + 0x10]
add edx, 0x20c
mov dword [ebp - 0x1088], edx
mov eax, dword [ebp - 0x1088]
mov cx, word [eax]
mov word [ebp - 0x108a], cx
mov edx, dword [ebp - 0x1084]
cmp cx, word [edx]
jne 0x1003ad5
cmp word [ebp - 0x108a], 0
je 0x1003ac9
mov eax, dword [ebp - 0x1088]
mov cx, word [eax + 2]
mov word [ebp - 0x108c], cx
mov edx, dword [ebp - 0x1084]
cmp cx, word [edx + 2]
jne 0x1003ad5
add dword [ebp - 0x1088], 4
add dword [ebp - 0x1084], 4
cmp word [ebp - 0x108c], 0
jne 0x1003a6f
mov dword [ebp - 0x1090], 0
jmp 0x1003ae0
sbb eax, eax
sbb eax, 0xffffffff
mov dword [ebp - 0x1090], eax
mov ecx, dword [ebp - 0x1090]
mov dword [ebp - 0x1094], ecx
cmp dword [ebp - 0x1094], 0
jne 0x1003d27
lea edx, [ebp - 0x648]
mov dword [ebp - 0x1098], edx
mov eax, dword [ebp + 0x10]
add eax, 0x40c
mov dword [ebp - 0x109c], eax
mov ecx, dword [ebp - 0x109c]
mov dx, word [ecx]
mov word [ebp - 0x109e], dx
mov eax, dword [ebp - 0x1098]
cmp dx, word [eax]
jne 0x1003b79
cmp word [ebp - 0x109e], 0
je 0x1003b6d
mov ecx, dword [ebp - 0x109c]
mov dx, word [ecx + 2]
mov word [ebp - 0x10a0], dx
mov eax, dword [ebp - 0x1098]
cmp dx, word [eax + 2]
jne 0x1003b79
add dword [ebp - 0x109c], 4
add dword [ebp - 0x1098], 4
cmp word [ebp - 0x10a0], 0
jne 0x1003b13
mov dword [ebp - 0x10a4], 0
jmp 0x1003b84
sbb ecx, ecx
sbb ecx, 0xffffffff
mov dword [ebp - 0x10a4], ecx
mov edx, dword [ebp - 0x10a4]
mov dword [ebp - 0x10a8], edx
cmp dword [ebp - 0x10a8], 0
jne 0x1003d27
mov dword [ebp - 0x1080], 0x622
push 0
push 0x622
lea eax, [ebp - 0x1080]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDriverInfoDetailW]
test eax, eax
jne 0x1003bdb
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
je 0x1003bdb
jmp 0x1003a22
lea ecx, [ebp - 0xa58]
mov dword [ebp - 0x10ac], ecx
lea edx, [ebp - 0x1068]
mov dword [ebp - 0x10b0], edx
mov eax, dword [ebp - 0x10b0]
mov cx, word [eax]
mov word [ebp - 0x10b2], cx
mov edx, dword [ebp - 0x10ac]
cmp cx, word [edx]
jne 0x1003c59
cmp word [ebp - 0x10b2], 0
je 0x1003c4d
mov eax, dword [ebp - 0x10b0]
mov cx, word [eax + 2]
mov word [ebp - 0x10b4], cx
mov edx, dword [ebp - 0x10ac]
cmp cx, word [edx + 2]
jne 0x1003c59
add dword [ebp - 0x10b0], 4
add dword [ebp - 0x10ac], 4
cmp word [ebp - 0x10b4], 0
jne 0x1003bf3
mov dword [ebp - 0x10b8], 0
jmp 0x1003c64
sbb eax, eax
sbb eax, 0xffffffff
mov dword [ebp - 0x10b8], eax
mov ecx, dword [ebp - 0x10b8]
mov dword [ebp - 0x10bc], ecx
cmp dword [ebp - 0x10bc], 0
jne 0x1003d27
lea edx, [ebp - 0x210]
mov dword [ebp - 0x10c0], edx
lea eax, [ebp - 0xc60]
mov dword [ebp - 0x10c4], eax
mov ecx, dword [ebp - 0x10c4]
mov dx, word [ecx]
mov word [ebp - 0x10c6], dx
mov eax, dword [ebp - 0x10c0]
cmp dx, word [eax]
jne 0x1003cfb
cmp word [ebp - 0x10c6], 0
je 0x1003cef
mov ecx, dword [ebp - 0x10c4]
mov dx, word [ecx + 2]
mov word [ebp - 0x10c8], dx
mov eax, dword [ebp - 0x10c0]
cmp dx, word [eax + 2]
jne 0x1003cfb
add dword [ebp - 0x10c4], 4
add dword [ebp - 0x10c0], 4
cmp word [ebp - 0x10c8], 0
jne 0x1003c95
mov dword [ebp - 0x10cc], 0
jmp 0x1003d06
sbb ecx, ecx
sbb ecx, 0xffffffff
mov dword [ebp - 0x10cc], ecx
mov edx, dword [ebp - 0x10cc]
mov dword [ebp - 0x10d0], edx
cmp dword [ebp - 0x10d0], 0
jne 0x1003d27
mov dword [ebp - 0x84c], 1
jmp 0x1003d2c
jmp 0x1003a22
cmp dword [ebp - 0x84c], 0
jne 0x1003d45
push 1
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDriverInfoList]
mov eax, dword [ebp - 0x84c]
mov ecx, dword [ebp - 0xc]
xor ecx, ebp
call fcn.010080e3
mov esp, ebp
pop ebp
ret 0xc