Function at 0x10122ff0
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x86c
mov eax, dword [0x102519c8]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x834], eax
push ebx
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x82c], ebx
push esi
push edi
test ecx, ecx
je 0x1012307d
cmp word [ecx], 0
je 0x1012307d
mov edi, dword [ebp + 0x14]
lea eax, [ebp - 0x820]
push eax
mov eax, edi
mov dword [ebp - 0x820], 0
or eax, 0x20019
mov esi, 0x80004005
push eax
push 0
push ecx
push ebx
call fcn.100081c0
test eax, eax
jne 0x1012306d
push dword [ebp + 0x18]
mov ecx, dword [ebp - 0x834]
push edi
push 0
push dword [ebp - 0x820]
mov eax, dword [ecx]
push ecx
call dword [eax + 0x10]
mov esi, eax
push dword [ebp - 0x820]
call fcn.10034ac0
jmp 0x10123582
push 0x800
xor edi, edi
lea eax, [ebp - 0x804]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
call fcn.10003180
mov esi, dword [eax + 0x154]
test esi, esi
je 0x101230aa
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x3b
call fcn.10003680
add esp, 4
push 0x400
test eax, eax
je 0x101230ca
lea ecx, [ebp - 0x804]
push ecx
push edi
push ebx
call eax
jmp 0x101230d9
lea eax, [ebp - 0x804]
push eax
push edi
push ebx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
mov ebx, eax
test esi, esi
je 0x101230e6
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test ebx, ebx
jne 0x1012310d
push dword [ebp + 0x18]
mov ecx, dword [ebp - 0x834]
lea edx, [ebp - 0x804]
push dword [ebp + 0x14]
mov ebx, dword [ebp - 0x82c]
inc edi
push edx
mov eax, dword [ecx]
push ebx
push ecx
call dword [eax + 0x10]
jmp 0x10123094
mov dword [ebp - 0x86c], 0
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
mov ebx, dword [ebp - 0x82c]
add eax, 0x10
mov ecx, dword [ebp - 0x834]
mov dword [ebp - 0x83c], eax
lea eax, [ebp - 0x83c]
push eax
lea eax, [ebp - 0x86c]
push eax
push 0
push ebx
call fcn.10128260
or ecx, 0xffffffff
test eax, eax
jne 0x1012315f
mov esi, 0x80004005
jmp 0x10123567
lea ecx, [ebp - 0x868]
call fcn.10122540
lea eax, [ebp - 0x83c]
mov dword [ebp - 0x850], 0
push eax
lea ecx, [ebp - 0x868]
call fcn.10002790
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x864], eax
mov eax, dword [ebp + 0x18]
push 0x20000
mov dword [ebp - 0x84c], eax
call sub.msvcrt.dll_void____cdecl_operator_new___unsigned_int_
mov edi, eax
mov dword [ebp - 0x838], 0x3fff
push 0x10000
mov dword [ebp - 0x82c], edi
call sub.msvcrt.dll_void____cdecl_operator_new___unsigned_int_
push 0x20000
mov esi, eax
mov dword [ebp - 0x830], 0
push 0
push edi
mov dword [ebp - 0x828], esi
call sub.msvcrt.dll_memset
push 0x10000
push 0
push esi
call sub.msvcrt.dll_memset
add esp, 0x20
mov dword [ebp - 0x820], 0
mov dword [ebp - 0x824], 0x10000
call fcn.10003180
mov esi, dword [eax + 0x154]
test esi, esi
je 0x10123217
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x3f
call fcn.10003680
add esp, 4
test eax, eax
je 0x1012324e
lea ecx, [ebp - 0x824]
push ecx
push dword [ebp - 0x828]
lea ecx, [ebp - 0x830]
push ecx
push 0
lea ecx, [ebp - 0x838]
push ecx
push edi
push dword [ebp - 0x820]
push ebx
call eax
jmp 0x10123279
lea eax, [ebp - 0x824]
push eax
push dword [ebp - 0x828]
lea eax, [ebp - 0x830]
push eax
push 0
lea eax, [ebp - 0x838]
push eax
push edi
push dword [ebp - 0x820]
push ebx
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
mov edi, eax
test esi, esi
je 0x10123286
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
jne 0x10123414
mov edx, dword [ebp - 0x82c]
test edx, edx
jne 0x1012329c
xor eax, eax
jmp 0x101232b0
mov eax, edx
lea esi, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x101232a1
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x860]
call fcn.10003740
mov edi, dword [ebp - 0x824]
mov esi, dword [ebp - 0x830]
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x840], 1
push edi
push dword [ebp - 0x828]
mov dword [ebp - 0x844], eax
lea eax, [ebp - 0x81c]
push eax
mov dword [ebp - 0x848], esi
call fcn.10005ff0
add esp, 0xc
cmp dword [eax + 0x14], 0x10
jb 0x1012330c
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x844]
call fcn.10033bf0
mov edx, dword [ebp - 0x808]
cmp edx, 0x10
jb 0x10123352
mov ecx, dword [ebp - 0x81c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x10123348
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10123597
push edx
push ecx
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
add esp, 8
mov eax, dword [ebp - 0x848]
lea ecx, [ebp - 0x858]
mov dword [ebp - 0x85c], eax
lea eax, [ebp - 0x844]
push eax
mov dword [ebp - 0x80c], 0
mov dword [ebp - 0x808], 0xf
mov byte [ebp - 0x81c], 0
call fcn.10002790
mov eax, dword [ebp - 0x840]
mov edx, dword [ebp - 0x844]
mov dword [ebp - 0x854], eax
add edx, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x101233b5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x834]
lea ecx, [ebp - 0x868]
push ecx
mov eax, dword [esi + 0x28]
cmp dword [esi + 0x2c], eax
je 0x101233f0
mov ecx, eax
call fcn.101224d0
add dword [esi + 0x28], 0x20
inc dword [ebp - 0x820]
mov edi, dword [ebp - 0x82c]
mov dword [ebp - 0x838], 0x3fff
jmp 0x101231f7
push eax
lea ecx, [esi + 0x24]
call fcn.10121990
inc dword [ebp - 0x820]
mov edi, dword [ebp - 0x82c]
mov dword [ebp - 0x838], 0x3fff
jmp 0x101231f7
mov dword [ebp - 0x824], 0x10000
call fcn.10003180
mov esi, dword [eax + 0x154]
test esi, esi
je 0x10123434
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x41
call fcn.10003680
add esp, 4
test eax, eax
je 0x10123462
lea ecx, [ebp - 0x824]
push ecx
push dword [ebp - 0x828]
lea ecx, [ebp - 0x830]
push ecx
push 0
push 0x10202940
push ebx
call eax
jmp 0x10123484
lea eax, [ebp - 0x824]
push eax
push dword [ebp - 0x828]
lea eax, [ebp - 0x830]
push eax
push 0
push 0x10202940
push ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov edi, eax
test esi, esi
je 0x10123491
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
je 0x1012353d
push 0
push 0x10202940
lea ecx, [ebp - 0x860]
call fcn.10003740
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
lea ecx, [ebp - 0x858]
mov dword [ebp - 0x840], 0
mov dword [ebp - 0x848], 0
mov dword [ebp - 0x85c], 0
lea esi, [eax + 0x10]
lea eax, [ebp - 0x844]
mov dword [ebp - 0x844], esi
push eax
call fcn.10002790
mov dword [ebp - 0x854], 0
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10123512
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x834]
lea ecx, [ebp - 0x868]
push ecx
mov eax, dword [esi + 0x28]
cmp dword [esi + 0x2c], eax
je 0x10123534
mov ecx, eax
call fcn.101224d0
add dword [esi + 0x28], 0x20
jmp 0x1012353d
push eax
lea ecx, [esi + 0x24]
call fcn.10121990
mov edx, dword [ebp - 0x82c]
push edx
call sub.msvcrt.dll_void___cdecl_operator_delete___void__
push dword [ebp - 0x828]
call sub.msvcrt.dll_void___cdecl_operator_delete___void__
add esp, 8
lea ecx, [ebp - 0x868]
xor esi, esi
call fcn.10122aa0
or ecx, 0xffffffff
mov eax, dword [ebp - 0x83c]
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x10123582
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.101f99c6
mov esp, ebp
pop ebp
ret 0x14
call fcn.101e6c40
int3