Function at 0x46f3eb
Capabilities:
Query or enumerate registry value

Disassembly:
push 0x378
mov eax, 0x527bd8
call fcn.004f4139
mov eax, dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 0x2e8], ecx
mov dword [ecx], ebx
mov dword [ecx + 4], ebx
mov dword [ecx + 8], ebx
mov dword [ebp - 4], ebx
cmp dword [eax + 0x14], 8
mov dword [ebp - 0x2e4], ebx
jb 0x46f41e
mov eax, dword [eax]
lea ecx, [ebp - 0x2e4]
push ecx
push 0x20019
push ebx
push eax
push reloc.WS2_32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, ebx
je 0x46f4d7
push eax
lea ecx, [ebp - 0x2c0]
call fcn.0042c6f0
pop ecx
mov esi, eax
mov byte [ebp - 4], 1
lea eax, [ebp - 0x384]
push eax
call fcn.004036d7
mov edi, eax
mov byte [ebp - 4], 2
push str._GF3DVisionDeviceInfo__RegOpenKeyEx_failed:
push edi
call fcn.00406897
push edi
mov ecx, esi
call fcn.004080d0
add esp, 0xc
lea eax, [ebp - 0x2a4]
push eax
mov eax, edi
call fcn.00403741
mov byte [ebp - 4], 3
cmp dword [ebp - 0x290], 8
mov eax, dword [ebp - 0x2a4]
jae 0x46f4a1
lea eax, [ebp - 0x2a4]
push eax
push 2
pop ecx
call fcn.004284f3
pop ecx
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2a4]
call fcn.004014ad
mov byte [ebp - 4], 1
lea eax, [ebp - 0x384]
call fcn.004025ae
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x2c0]
jmp 0x46f868
lea ecx, [ebp - 0x288]
call fcn.0040318b
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x2a4]
call fcn.0040318b
mov byte [ebp - 4], 5
push str.Capabilities
lea eax, [ebp - 0x288]
push eax
mov dword [ebp - 0x2e0], ebx
call fcn.00403fad
cmp dword [ebp - 0x274], 8
mov eax, dword [ebp - 0x288]
mov dword [ebp - 0x2e0], 0x258
jae 0x46f52b
lea eax, [ebp - 0x288]
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea ecx, [ebp - 0x2e0]
push ecx
lea ecx, [ebp - 0x26c]
push ecx
push ebx
push ebx
push eax
push dword [ebp - 0x2e4]
call edi
cmp eax, ebx
jne 0x46f5fe
lea eax, [ebp - 0x384]
push eax
call fcn.004036d7
mov esi, eax
mov byte [ebp - 4], 6
push dword [ebp - 0x26c]
push esi
call fcn.004053dc
lea eax, [ebp - 0x2c0]
push eax
mov eax, esi
call fcn.00403741
mov byte [ebp - 4], 7
push 0xffffffffffffffff
push ebx
lea eax, [ebp - 0x2c0]
lea ecx, [ebp - 0x2a4]
call fcn.00403f13
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x2c0]
call fcn.004014ad
mov byte [ebp - 4], 5
lea eax, [ebp - 0x384]
call fcn.004025ae
lea eax, [ebp - 0x2a4]
push eax
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x2dc]
push eax
call fcn.0046fca0
add esp, 0xc
mov byte [ebp - 4], 8
mov esi, dword [ebp - 0x2e8]
call fcn.0046f9a2
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x2c0]
call fcn.004014ad
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x2dc]
call fcn.004014ad
push str.CompatibleIDs
lea eax, [ebp - 0x288]
push eax
call fcn.00403fad
cmp dword [ebp - 0x274], 8
mov eax, dword [ebp - 0x288]
mov dword [ebp - 0x2e0], 0x258
jae 0x46f62e
lea eax, [ebp - 0x288]
lea ecx, [ebp - 0x2e0]
push ecx
lea ecx, [ebp - 0x26c]
push ecx
push ebx
push ebx
push eax
push dword [ebp - 0x2e4]
call edi
cmp eax, ebx
jne 0x46f6d2
mov edx, dword [ebp - 0x2e0]
shr edx, 1
xor ecx, ecx
dec edx
cmp edx, ebx
jbe 0x46f675
lea eax, [ebp + ecx*2 - 0x26c]
cmp word [eax], bx
jne 0x46f670
push 0x3b
pop esi
mov word [eax], si
inc ecx
cmp ecx, edx
jb 0x46f65e
lea eax, [ebp - 0x26c]
push eax
lea eax, [ebp - 0x2a4]
push eax
call fcn.00403fad
lea eax, [ebp - 0x2a4]
push eax
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x2dc]
push eax
call fcn.0046fca0
add esp, 0xc
mov byte [ebp - 4], 0xc
mov esi, dword [ebp - 0x2e8]
call fcn.0046f9a2
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x2c0]
call fcn.004014ad
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x2dc]
call fcn.004014ad
push str.DeviceDesc
lea eax, [ebp - 0x288]
push eax
call fcn.00403fad
cmp dword [ebp - 0x274], 8
mov eax, dword [ebp - 0x288]
mov dword [ebp - 0x2e0], 0x258
jae 0x46f702
lea eax, [ebp - 0x288]
lea ecx, [ebp - 0x2e0]
push ecx
lea ecx, [ebp - 0x26c]
push ecx
push ebx
push ebx
push eax
push dword [ebp - 0x2e4]
call edi
cmp eax, ebx
jne 0x46f77c
lea eax, [ebp - 0x26c]
push eax
lea eax, [ebp - 0x2a4]
push eax
call fcn.00403fad
lea eax, [ebp - 0x2a4]
push eax
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x2dc]
push eax
call fcn.0046fca0
add esp, 0xc
mov byte [ebp - 4], 0x10
mov esi, dword [ebp - 0x2e8]
call fcn.0046f9a2
mov byte [ebp - 4], 0x12
lea ecx, [ebp - 0x2c0]
call fcn.004014ad
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x2dc]
call fcn.004014ad
push str.HardwareID
lea eax, [ebp - 0x288]
push eax
call fcn.00403fad
cmp dword [ebp - 0x274], 8
mov eax, dword [ebp - 0x288]
mov dword [ebp - 0x2e0], 0x258
jae 0x46f7ac
lea eax, [ebp - 0x288]
lea ecx, [ebp - 0x2e0]
push ecx
lea ecx, [ebp - 0x26c]
push ecx
push ebx
push ebx
push eax
push dword [ebp - 0x2e4]
call edi
cmp eax, ebx
jne 0x46f850
mov edx, dword [ebp - 0x2e0]
shr edx, 1
xor ecx, ecx
dec edx
cmp edx, ebx
jbe 0x46f7f3
lea eax, [ebp + ecx*2 - 0x26c]
cmp word [eax], bx
jne 0x46f7ee
push 0x3b
pop esi
mov word [eax], si
inc ecx
cmp ecx, edx
jb 0x46f7dc
lea eax, [ebp - 0x26c]
push eax
lea eax, [ebp - 0x2a4]
push eax
call fcn.00403fad
lea eax, [ebp - 0x2a4]
push eax
lea eax, [ebp - 0x288]
push eax
lea eax, [ebp - 0x2dc]
push eax
call fcn.0046fca0
add esp, 0xc
mov byte [ebp - 4], 0x14
mov esi, dword [ebp - 0x2e8]
call fcn.0046f9a2
mov byte [ebp - 4], 0x16
lea ecx, [ebp - 0x2c0]
call fcn.004014ad
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x2dc]
call fcn.004014ad
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x2a4]
call fcn.004014ad
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x288]
call fcn.004014ad
push dword [ebp - 0x2e4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
or dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x2e8]
call fcn.004f41bc
ret 4