Function at 0x10029af0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10060193
mov eax, dword fs:[0]
push eax
sub esp, 0x84c
mov eax, dword [0x10081708]
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 - 0x848], 0
call fcn.10003510
mov ecx, eax
test ecx, ecx
je 0x1002a0d4
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx], eax
mov dword [ebp - 4], 0
mov dword [ebp - 0x848], 1
call fcn.10003510
mov ecx, eax
test ecx, ecx
je 0x1002a0de
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x838], eax
push 0x10061598
lea ecx, [ebp - 0x838]
mov dword [ebp - 4], 1
call fcn.10003a90
test al, al
jne 0x10029bac
push 0
push 0x10061598
lea ecx, [ebp - 0x838]
call fcn.10003730
push dword [ebp + 0xc]
mov dword [ebp - 4], 2
call fcn.1002a240
mov edx, dword [0x10083c48]
add esp, 4
mov esi, eax
mov eax, edx
mov ecx, dword [edx + 4]
cmp byte [ecx + 0xd], 0
jne 0x10029bee
cmp dword [ecx + 0x10], esi
jge 0x10029bdb
mov ecx, dword [ecx + 8]
jmp 0x10029bdf
mov eax, ecx
mov ecx, dword [ecx]
cmp byte [ecx + 0xd], 0
je 0x10029bd1
cmp eax, edx
je 0x10029bee
cmp esi, dword [eax + 0x10]
jge 0x10029bf0
mov eax, edx
cmp edx, eax
je 0x10029c20
mov edx, dword [eax + 0x14]
test edx, edx
jne 0x10029bff
xor ecx, ecx
jmp 0x10029c13
mov ecx, edx
lea edi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10029c04
sub ecx, edi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x838]
call fcn.10003730
call fcn.10003510
mov ecx, eax
test ecx, ecx
je 0x1002a0e8
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x83c], eax
push 0x1006c688
lea ecx, [ebp - 0x83c]
mov byte [ebp - 4], 3
call fcn.10003a90
test al, al
jne 0x10029c67
push 3
push 0x1006c688
lea ecx, [ebp - 0x83c]
call fcn.10003730
dec esi
mov byte [ebp - 4], 4
cmp esi, 9
ja case.default.0x10029c7c
movzx eax, byte [esi + 0x1002a120]
jmp dword [eax*4 + 0x1002a110]
push 8
push str.VendorID
lea ecx, [ebp - 0x83c]
call fcn.10003730
mov dword [ebp - 0x854], 0
mov dword [ebp - 0x850], 0
mov dword [ebp - 0x84c], 0
mov esi, dword [ebp - 0x838]
lea ecx, [ebp - 0x854]
push 0x20219
push esi
push reloc.OLEAUT32.dll_SysReAllocString
mov byte [ebp - 4], 5
call fcn.1002a3f0
mov edi, dword [ebp - 0x83c]
test eax, eax
jne 0x10029d42
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.10037300
add esp, 0xc
mov dword [ebp - 0x834], 0x104
lea eax, [ebp - 0x834]
lea ecx, [ebp - 0x854]
push eax
lea eax, [ebp - 0x218]
push eax
push edi
call fcn.1002a4a0
test eax, eax
jne 0x10029d42
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10029d24
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
mov ecx, ebx
call fcn.10003730
mov eax, dword [ebp - 0x854]
test eax, eax
je 0x1002a07e
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x1002a07e
call fcn.10003510
mov ecx, eax
test ecx, ecx
je 0x1002a0f2
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x844], esi
mov dword [ebp - 0x854], 0
mov dword [ebp - 0x850], 0
mov dword [ebp - 0x84c], 0
push 0x20219
push dword [ebp - 0x838]
lea ecx, [ebp - 0x854]
mov byte [ebp - 4], 7
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.1002a3f0
mov edi, dword [ebp - 0x83c]
test eax, eax
jne 0x10029fb7
push 0x208
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.10037300
add esp, 0xc
mov dword [ebp - 0x834], 0x104
lea eax, [ebp - 0x834]
lea ecx, [ebp - 0x854]
push eax
lea eax, [ebp - 0x420]
push eax
push edi
call fcn.1002a4a0
test eax, eax
jne 0x10029e2e
lea ecx, [ebp - 0x420]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10029e10
sub ecx, edx
lea eax, [ebp - 0x420]
sar ecx, 1
push ecx
push eax
mov ecx, ebx
call fcn.10003730
push 0x208
lea eax, [ebp - 0x628]
push 0
push eax
call fcn.10037300
add esp, 0xc
mov dword [ebp - 0x834], 0x104
lea eax, [ebp - 0x834]
lea ecx, [ebp - 0x854]
push eax
lea eax, [ebp - 0x628]
push eax
push str.SUBPID
call fcn.1002a4a0
test eax, eax
jne 0x10029ea8
lea ecx, [ebp - 0x628]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10029e80
sub ecx, edx
lea eax, [ebp - 0x628]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x844]
call fcn.10003730
mov esi, dword [ebp - 0x844]
cmp dword [esi - 0xc], 0
jne 0x10029ec0
push ebx
lea ecx, [ebp - 0x844]
call fcn.10003980
mov esi, dword [ebp - 0x844]
mov eax, dword [ebx]
mov byte [ebp - 4], 8
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x10029ed8
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x10029eee
call fcn.10003510
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x1002a0fc
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x848], 3
mov dword [ebp - 0x840], eax
mov eax, dword [ebx]
push 2
push 0x1006c6b4
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x840]
push eax
call fcn.10005090
add esp, 0x14
mov eax, dword [ebp - 0x840]
mov byte [ebp - 4], 9
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x10029f3e
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x10029f54
call fcn.10003510
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x1002a106
mov eax, dword [ecx]
call dword [eax + 0xc]
push dword [esi - 0xc]
add eax, 0x10
mov dword [ebp - 0x848], 7
mov dword [ebp - 0x834], eax
mov eax, dword [ebp - 0x840]
push esi
push dword [eax - 0xc]
push eax
lea eax, [ebp - 0x834]
push eax
call fcn.10005090
add esp, 0x14
lea eax, [ebp - 0x834]
mov ecx, ebx
push eax
call fcn.10003980
lea ecx, [ebp - 0x834]
call fcn.10003010
lea ecx, [ebp - 0x840]
mov dword [ebp - 0x848], 1
call fcn.10003010
mov eax, dword [ebp - 0x854]
test eax, eax
je 0x10029fc8
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 0x1002a078
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1002a078
push 0x208
lea eax, [ebp - 0x830]
mov dword [ebp - 0x840], 1
push 0
push eax
mov dword [ebp - 0x834], 0x104
call fcn.10037300
mov edi, dword [ebp - 0x83c]
lea eax, [ebp - 0x834]
mov esi, dword [ebp - 0x838]
add esp, 0xc
push eax
lea eax, [ebp - 0x830]
push eax
lea eax, [ebp - 0x840]
push eax
push edi
push esi
push SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
test eax, eax
jne 0x1002a07e
lea ecx, [ebp - 0x830]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x1002a052
sub ecx, edx
lea eax, [ebp - 0x830]
sar ecx, 1
push ecx
push eax
mov ecx, ebx
call fcn.10003730
jmp 0x1002a07e
mov edi, dword [ebp - 0x83c]
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 0x1002a09a
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 0x1002a0b6
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.1002bf51
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.100031a0
push 0x80004005
call fcn.100031a0
push 0x80004005
call fcn.100031a0
push 0x80004005
call fcn.100031a0
push 0x80004005
call fcn.100031a0
push 0x80004005
call fcn.100031a0
sbb dword [edx + eax + 0x29fed10], 0x10
pop esp
popfd
add dl, byte [eax]
xchg ebp, eax
pushfd
add dl, byte [eax]
add byte [eax], al
add dword [edx], eax
add dword [ebx], eax
add eax, dword [ebx]
add eax, dword [ebx]
int3