Function at 0x4b8f20
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d2c53
mov eax, dword fs:[0]
push eax
sub esp, 0x84c
mov eax, dword [0x5062f0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x858], ebx
mov dword [ebp - 4], 0
mov dword [ebp - 0x854], 0
call fcn.0044fab0
mov ecx, eax
test ecx, ecx
je 0x4b90d8
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx], eax
mov dword [ebp - 4], 0
mov dword [ebp - 0x854], 1
call fcn.0044fab0
mov ecx, eax
test ecx, ecx
je 0x4b90e2
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x838], eax
push 0x4d8694
lea ecx, [ebp - 0x838]
mov dword [ebp - 4], 1
call fcn.0040f510
test al, al
jne 0x4b8b6c
push 0
push 0x4d8694
lea ecx, [ebp - 0x838]
call fcn.0040cb60
push dword [ebp + 0xc]
mov dword [ebp - 4], 2
call fcn.004b9680
mov edx, dword [0x531550]
add esp, 4
mov esi, eax
mov eax, edx
mov ecx, dword [edx + 4]
cmp byte [ecx + 0xd], 0
jne 0x4b8bae
cmp dword [ecx + 0x10], esi
jge 0x4b8b9b
mov ecx, dword [ecx + 8]
jmp 0x4b8b9f
mov eax, ecx
mov ecx, dword [ecx]
cmp byte [ecx + 0xd], 0
je 0x4b8b91
cmp eax, edx
je 0x4b8bae
cmp esi, dword [eax + 0x10]
jge 0x4b8bb0
mov eax, edx
cmp edx, eax
je 0x4b8be0
mov edx, dword [eax + 0x14]
test edx, edx
jne 0x4b8bbf
xor ecx, ecx
jmp 0x4b8bd3
mov ecx, edx
lea edi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4b8bc4
sub ecx, edi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x838]
call fcn.0040cb60
call fcn.0044fab0
mov ecx, eax
test ecx, ecx
je 0x4b90ec
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x840], eax
push 0x4f35f0
lea ecx, [ebp - 0x840]
mov byte [ebp - 4], 3
call fcn.0040f510
test al, al
jne 0x4b8c27
push 3
push 0x4f35f0
lea ecx, [ebp - 0x840]
call fcn.0040cb60
dec esi
mov byte [ebp - 4], 4
cmp esi, 0xb
ja case.0x4b8c3c.5
movzx eax, byte [esi + 0x4b9124]
jmp dword [eax*4 + 0x4b9114]
call fcn.0044fab0
mov ecx, eax
test ecx, ecx
je 0x4b90f6
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x850], esi
mov dword [ebp - 0x84c], 0
mov dword [ebp - 0x848], 0
mov dword [ebp - 0x844], 0
push 0x20219
push dword [ebp - 0x838]
lea ecx, [ebp - 0x84c]
mov byte [ebp - 4], 6
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0040ff70
mov edi, dword [ebp - 0x840]
test eax, eax
jne 0x4b8e97
push 0x208
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.0046ce10
add esp, 0xc
mov dword [ebp - 0x834], 0x104
lea eax, [ebp - 0x834]
lea ecx, [ebp - 0x84c]
push eax
lea eax, [ebp - 0x420]
push eax
push edi
call fcn.004b5c80
test eax, eax
jne 0x4b8d10
lea ecx, [ebp - 0x420]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4b8cf2
sub ecx, edx
lea eax, [ebp - 0x420]
sar ecx, 1
push ecx
push eax
mov ecx, ebx
call fcn.0040cb60
push 0x208
lea eax, [ebp - 0x628]
push 0
push eax
call fcn.0046ce10
add esp, 0xc
mov dword [ebp - 0x834], 0x104
lea eax, [ebp - 0x834]
lea ecx, [ebp - 0x84c]
push eax
lea eax, [ebp - 0x628]
push eax
push str.SUBPID
call fcn.004b5c80
test eax, eax
jne 0x4b8d88
lea ecx, [ebp - 0x628]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4b8d60
sub ecx, edx
lea eax, [ebp - 0x628]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x850]
call fcn.0040cb60
mov esi, dword [ebp - 0x850]
cmp dword [esi - 0xc], 0
jne 0x4b8da0
push ebx
lea ecx, [ebp - 0x850]
call fcn.0040e630
mov esi, dword [ebp - 0x850]
mov eax, dword [ebx]
mov byte [ebp - 4], 7
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x4b8db8
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x4b8dce
call fcn.0044fab0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x4b9100
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x854], 3
mov dword [ebp - 0x83c], eax
mov eax, dword [ebx]
push 2
push 0x4f3608
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x83c]
push eax
call fcn.004b6a60
add esp, 0x14
mov eax, dword [ebp - 0x83c]
mov byte [ebp - 4], 8
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x4b8e1e
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x4b8e34
call fcn.0044fab0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x4b910a
mov eax, dword [ecx]
call dword [eax + 0xc]
push dword [esi - 0xc]
add eax, 0x10
mov dword [ebp - 0x854], 7
mov dword [ebp - 0x834], eax
mov eax, dword [ebp - 0x83c]
push esi
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x834]
push eax
call fcn.004b6a60
add esp, 0x14
lea eax, [ebp - 0x834]
mov ecx, ebx
push eax
call fcn.0040e630
lea ecx, [ebp - 0x834]
call fcn.0040bc30
lea ecx, [ebp - 0x83c]
mov dword [ebp - 0x854], 1
call fcn.0040bc30
mov eax, dword [ebp - 0x84c]
test eax, eax
je 0x4b8ea8
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov byte [ebp - 4], 4
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4b8ec4
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x838]
mov byte [ebp - 4], 2
add edi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x4b8ee6
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4b8f02
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004537ea
mov esp, ebp
pop ebp
ret
push 0x208
lea eax, [ebp - 0x830]
mov dword [ebp - 0x83c], 1
push 0
push eax
mov dword [ebp - 0x834], 0x104
call fcn.0046ce10
mov edi, dword [ebp - 0x840]
lea eax, [ebp - 0x834]
mov esi, dword [ebp - 0x838]
add esp, 0xc
push eax
lea eax, [ebp - 0x830]
push eax
lea eax, [ebp - 0x83c]
push eax
push edi
push esi
push SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
test eax, eax
jne 0x4b8eca
lea ecx, [ebp - 0x830]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4b8f90
sub ecx, edx
lea eax, [ebp - 0x830]
sar ecx, 1
push ecx
push eax
mov ecx, ebx
call fcn.0040cb60
jmp 0x4b8eca
push 8
push str.VendorID
lea ecx, [ebp - 0x840]
call fcn.0040cb60
mov dword [ebp - 0x84c], 0
mov dword [ebp - 0x848], 0
mov dword [ebp - 0x844], 0
mov esi, dword [ebp - 0x838]
lea ecx, [ebp - 0x84c]
push 0x20219
push esi
push reloc.OLEAUT32.dll_SysReAllocString
mov byte [ebp - 4], 9
call fcn.0040ff70
mov edi, dword [ebp - 0x840]
test eax, eax
mov eax, dword [ebp - 0x84c]
jne 0x4b90c4
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0046ce10
add esp, 0xc
mov dword [ebp - 0x834], 0x208
lea eax, [ebp - 0x834]
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x83c]
push eax
push 0
push edi
push dword [ebp - 0x84c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4b90be
mov eax, dword [ebp - 0x83c]
cmp eax, 1
je 0x4b906f
cmp eax, 2
jne 0x4b90be
mov eax, dword [ebp - 0x834]
test eax, eax
je 0x4b908c
test al, 1
jne 0x4b90be
shr eax, 1
cmp word [ebp + eax*2 - 0x21a], 0
je 0x4b9095
jmp 0x4b90be
xor eax, eax
mov word [ebp - 0x218], ax
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4b90a0
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
mov ecx, ebx
call fcn.0040cb60
mov eax, dword [ebp - 0x84c]
test eax, eax
je 0x4b8eca
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4b8eca
push 0x80004005
call fcn.0040bd70
push 0x80004005
call fcn.0040bd70
push 0x80004005
call fcn.0040bd70
push 0x80004005
call fcn.0040bd70
push 0x80004005
call fcn.0040bd70
push 0x80004005
call fcn.0040bd70
mov bl, 0x8f
dec ebx
add byte [eax], ah
invalid