Function at 0x10051430
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100bc6c3
mov eax, dword fs:[0]
push eax
sub esp, 0x88
mov eax, dword [0x100f51d4]
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 eax, edx
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x90], ecx
mov dword [eax], 0
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x84], 0
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x80]
call fcn.100512c0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x8c]
push 0x201
push dword [eax]
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.10010e10
test eax, eax
sete byte [ebp - 0x75]
mov byte [ebp - 4], 0
or esi, 0xffffffff
mov edx, dword [ebp - 0x80]
mov eax, esi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
test eax, eax
jg 0x100514fc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x100516d2
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call ebx
cmp byte [ebp - 0x75], 0
mov edi, dword [ebp - 0x8c]
je 0x1005168c
push 0x64
lea eax, [ebp - 0x74]
push 0
push eax
call fcn.10097030
add esp, 0xc
mov dword [ebp - 0x7c], 0x64
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0x80]
push eax
push 0
push 0x100e6eec
push edi
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x1005168c
mov eax, dword [ebp - 0x80]
cmp eax, 1
je 0x10051556
cmp eax, 2
jne 0x1005168c
mov ecx, dword [ebp - 0x7c]
test ecx, ecx
je 0x10051577
test cl, 1
jne 0x1005168c
mov eax, ecx
shr eax, 1
cmp word [ebp + eax*2 - 0x76], 0
je 0x1005157d
jmp 0x1005168c
xor eax, eax
mov word [ebp - 0x74], ax
shr ecx, 1
cmp ecx, 0x2d
jne 0x1005168c
lea ecx, [ebp - 0x7c]
call fcn.10014460
mov byte [ebp - 4], 3
lea eax, [ebp - 0x74]
push eax
lea ecx, [ebp - 0x7c]
call fcn.1004e140
lea eax, [ebp - 0x80]
mov dword [ebp - 0x80], 0
push eax
lea eax, [ebp - 0x20]
push 0x100e6cb4
push eax
call fcn.100216d0
mov ecx, dword [ebp - 0x7c]
add esp, 0xc
mov edx, 0x2a
call fcn.10051240
movzx eax, al
cmp dword [ebp - 0x80], eax
jne 0x1005165f
lea edx, [ebp - 0x74]
lea ecx, [edx + 2]
jmp 0x100515e0
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x100515e0
sub edx, ecx
lea eax, [ebp - 0x74]
mov ecx, dword [ebp - 0x90]
sar edx, 1
push edx
push eax
call fcn.10016cf0
push 8
push str.ffffffff
lea eax, [ebp - 0x74]
push eax
call dword [sym.imp.SHLWAPI.dll_StrCmpNIW]
test eax, eax
jne 0x10051620
mov eax, dword [ebp - 0x94]
mov dword [eax], 1
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x7c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], esi
dec esi
test esi, esi
jg 0x10051658
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x100516d9
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call ebx
mov esi, 1
jmp 0x1005168e
mov esi, 1
jmp 0x1005168e
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x7c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], esi
dec esi
test esi, esi
jg 0x1005168c
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x100516e2
mov eax, dword [edx + 4]
push 0
push dword [eax + 4]
call ebx
xor esi, esi
mov dword [ebp - 4], 0xffffffff
test edi, edi
je 0x100516aa
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x8c], 0
mov eax, esi
mov dword [ebp - 0x88], 0
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.10071699
mov esp, ebp
pop ebp
ret
call edi
jmp 0x100514fc
mov ecx, edx
call esi
jmp 0x10051658
mov ecx, edx
call esi
jmp 0x1005168c