Function at 0x10053230
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100bcc67
mov eax, dword fs:[0]
push eax
sub esp, 0x238
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 ebx, edx
mov dword [ebp - 0x240], ebx
mov eax, ecx
mov dword [ebp - 0x22c], eax
mov dword [ebp - 0x224], eax
mov dword [ebp - 0x244], eax
mov dword [ebp - 0x23c], 0
call fcn.10012770
mov ecx, eax
test ecx, ecx
je 0x100536d9
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x100536e3
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
lea esi, [eax + 0x10]
mov dword [ebp - 0x228], esi
mov dword [ebp - 4], 2
call fcn.10012770
mov ecx, eax
test ecx, ecx
je 0x100536ea
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x100536f4
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
add eax, 0x10
mov dword [ebp - 0x21c], eax
mov byte [ebp - 4], 4
lea eax, [ebp - 0x21c]
push dword [ebx]
push str.SOFTWARE_s
push eax
call fcn.1004e430
add esp, 0xc
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0
mov dword [ebp - 0x230], 0
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x238]
mov edi, dword [ebp - 0x21c]
push 1
push edi
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.10010e10
test eax, eax
jne 0x10053408
push 0x208
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.10097030
add esp, 0xc
mov dword [ebp - 0x220], 0x208
lea eax, [ebp - 0x220]
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x224]
push eax
push 0
push 0x100e6eec
push dword [ebp - 0x238]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x10053408
mov eax, dword [ebp - 0x224]
cmp eax, 1
je 0x100533a1
cmp eax, 2
jne 0x10053408
mov ecx, dword [ebp - 0x220]
test ecx, ecx
je 0x100533c1
test cl, 1
jne 0x10053408
mov eax, ecx
shr eax, 1
cmp word [ebp + eax*2 - 0x21a], 0
je 0x100533ca
jmp 0x10053408
xor eax, eax
mov word [ebp - 0x218], ax
shr ecx, 1
cmp ecx, 0x2d
jne 0x10053408
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x100533e0
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x228]
call fcn.10016cf0
mov esi, dword [ebp - 0x228]
or ebx, 0xffffffff
cmp dword [esi - 0xc], 0x2c
jne 0x100535f2
lea eax, [ebp - 0x224]
mov dword [ebp - 0x224], 0
push eax
lea eax, [esi + 0x54]
push 0x100e6cb4
push eax
call fcn.100216d0
add esp, 0xc
call fcn.10012770
mov ecx, eax
test ecx, ecx
je 0x100536fb
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x10053705
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
add eax, 0x10
mov dword [ebp - 0x220], eax
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x220]
push esi
call fcn.10050a50
test al, al
jne 0x10053486
push esi
lea ecx, [ebp - 0x220]
call fcn.1004e140
mov byte [ebp - 4], 7
mov edx, 0x2a
mov edi, dword [ebp - 0x220]
mov ecx, edi
call fcn.10051240
movzx eax, al
cmp dword [ebp - 0x224], eax
jne 0x100535b8
mov ebx, dword [ebp - 0x240]
mov ecx, 0x100f8f60
mov edx, 0x100
mov ebx, dword [ebx]
sub ebx, ecx
nop
lea eax, [edx + 0x7ffffefe]
test eax, eax
je 0x100534e0
movzx eax, word [ebx + ecx]
test ax, ax
je 0x100534e0
mov word [ecx], ax
add ecx, 2
sub edx, 1
jne 0x100534c0
jmp 0x100534e4
test edx, edx
jne 0x100534e7
sub ecx, 2
xor eax, eax
add esi, 0xfffffff0
mov word [ecx], ax
mov ecx, esi
call fcn.10017460
mov ecx, dword [ebp - 0x22c]
add eax, 0x10
mov dword [ecx], eax
mov byte [ebp - 4], 7
mov dword [ebp - 0x23c], 1
mov byte [ebp - 4], 5
or ebx, 0xffffffff
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x10053546
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x1005370c
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x238]
test eax, eax
je 0x10053565
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0
mov byte [ebp - 4], 2
mov eax, ebx
mov ecx, dword [ebp - 0x21c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x100535ad
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov edi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x10053713
mov eax, dword [edx + 4]
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call edi
jmp 0x100535b3
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x1005368d
mov byte [ebp - 4], 5
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x100535ec
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x1005371c
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov edi, dword [ebp - 0x21c]
lea ecx, [ebp - 0x228]
call fcn.10014f70
mov esi, dword [ebp - 0x228]
add esi, 0xfffffff0
mov ecx, esi
call fcn.10017460
mov ecx, dword [ebp - 0x22c]
add eax, 0x10
mov dword [ecx], eax
mov byte [ebp - 4], 5
mov dword [ebp - 0x23c], 1
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x238]
test eax, eax
je 0x10053645
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x238], 0
mov dword [ebp - 0x234], 0
mov byte [ebp - 4], 2
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x10053687
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x10053723
mov eax, dword [ecx + 4]
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [eax + 4]
call edi
jmp 0x1005368d
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [ebp - 4], 0
lock xadd dword [esi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x100536b7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x1005372a
mov eax, dword [ecx + 4]
push 0
push dword [eax + 4]
call edi
mov eax, dword [ebp - 0x22c]
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
push 0x80004005
call fcn.10010ca0
call edx
jmp 0x100532aa
push 0x80004005
call fcn.10010ca0
call edx
jmp 0x100532e0
push 0x80004005
call fcn.10010ca0
call edx
jmp 0x1005345d
call edx
jmp 0x10053546
mov ecx, edx
call edi
jmp 0x100535ad
call edx
jmp 0x100535ec
call edx
jmp 0x10053687
call edx
jmp 0x100536b7