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

Disassembly:
push ebp
lea ebp, [esp - 0x1c8]
sub esp, 0x248
mov eax, dword [0x30012970]
push ebx
mov dword [ebp + 0x1c4], eax
mov eax, dword [0x300142f4]
xor ebx, ebx
cmp eax, ebx
push esi
mov esi, eax
je 0x3000bfe7
mov al, byte [ebp + 0x1d4]
cmp al, byte [esi + 0x12]
jne 0x3000bfe0
mov ax, word [esi + 0x10]
and eax, dword [ebp + 0x1ec]
test ax, ax
je 0x3000bfe0
push dword [esi]
push dword [ebp + 0x1d0]
call fcn.30007b1b
test eax, eax
pop ecx
pop ecx
jne 0x3000c00e
mov esi, dword [esi + 0x14]
cmp esi, ebx
jne 0x3000bfb3
lea eax, [ebp - 0x6c]
push eax
movzx eax, byte [ebp + 0x1d4]
push 0x20019
push ebx
push dword [ebp + 0x1d0]
sub eax, 0x80000000
push eax
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x3000c015
xor eax, eax
jmp 0x3000c548
push edi
push ebx
push ebx
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp - 0x60]
push eax
push ebx
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp - 0x5c]
push eax
push ebx
push ebx
push ebx
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
push dword [ebp + 0x1d0]
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenW]
call edi
add eax, dword [ebp - 0x70]
lea eax, [eax + eax + 4]
cmp eax, dword [ebp - 0x50]
jbe 0x3000c056
mov dword [ebp - 0x50], eax
inc dword [ebp - 0x50]
mov esi, dword [sym.imp.KERNEL32.dll_LocalAlloc]
jmp 0x3000c079
cmp dword [ebp + 0x1e4], ebx
je 0x3000c0cf
push dword [ebp + 0x1e8]
call fcn.30006d0a
test eax, eax
pop ecx
je 0x3000c0cf
push dword [ebp - 0x50]
push 0x40
call esi
cmp eax, ebx
mov dword [ebp - 0x4c], eax
je 0x3000c061
cmp dword [ebp + 0x1d8], ebx
mov dword [ebp - 0x54], ebx
je 0x3000c13f
push dword [ebp + 0x1d0]
mov eax, dword [ebp - 0x50]
shr eax, 1
push eax
push dword [ebp - 0x4c]
call fcn.30002d80
mov eax, dword [ebp - 0x50]
shr eax, 1
cmp eax, 0x7fffffff
ja 0x3000c0c4
push 0x3000135c
push eax
push dword [ebp - 0x4c]
call fcn.3000405a
mov esi, dword [ebp - 0x4c]
push esi
call edi
lea esi, [esi + eax*2]
jmp 0x3000c137
push 7
pop esi
jmp 0x3000c53c
dec dword [ebp - 0x5c]
mov eax, dword [ebp - 0x70]
inc eax
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0x7c]
push eax
push ebx
push ebx
push ebx
lea eax, [ebp - 0x68]
push eax
push esi
push dword [ebp - 0x5c]
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
push dword [ebp + 0x1ec]
push dword [ebp + 0x1e8]
push dword [ebp + 0x1e4]
push dword [ebp + 0x1e0]
push dword [ebp + 0x1dc]
push 1
push dword [ebp + 0x1d4]
push dword [ebp - 0x4c]
call fcn.3000bf8b
add esp, 0x20
cmp eax, ebx
mov dword [ebp - 0x54], eax
jne 0x3000c530
xor ebx, ebx
cmp dword [ebp - 0x5c], ebx
ja 0x3000c0d7
dec dword [ebp - 0x5c]
mov esi, dword [0x300142f8]
jmp 0x3000c17d
mov al, byte [ebp + 0x1d4]
cmp al, byte [esi + 0x12]
jne 0x3000c17a
mov ax, word [esi + 0x10]
and eax, dword [ebp + 0x1ec]
test ax, ax
je 0x3000c17a
push dword [esi]
push dword [ebp + 0x1d0]
call fcn.30007b1b
test eax, eax
pop ecx
pop ecx
jne 0x3000c530
xor ebx, ebx
mov esi, dword [esi + 0x14]
cmp esi, ebx
jne 0x3000c147
mov edi, 0x33a
call fcn.3000916b
mov al, byte [ebp + 0x1d4]
cmp al, byte [0x300128f6]
mov esi, 0x104
mov edi, 0x30013ee0
jne 0x3000c1b5
push dword [ebp + 0x1d0]
push edi
call fcn.30007b1b
test eax, eax
pop ecx
pop ecx
jne 0x3000c20e
cmp byte [ebp + 0x1d4], 1
jne 0x3000c1c5
push 0x30001e0c
jmp 0x3000c1ea
cmp byte [ebp + 0x1d4], 2
jne 0x3000c1d5
push 0x30001e00
jmp 0x3000c1ea
cmp byte [ebp + 0x1d4], 0
jne 0x3000c1e5
push 0x30001df4
jmp 0x3000c1ea
push 0x30001de8
lea eax, [ebp - 0x48]
push esi
push eax
call fcn.30002c36
push dword [ebp + 0x1d0]
lea eax, [ebp - 0x48]
push esi
push eax
call fcn.3000405a
lea eax, [ebp - 0x48]
push eax
call fcn.300091e6
pop ecx
mov al, byte [ebp + 0x1d4]
cmp al, byte [0x300128f6]
je 0x3000c28b
push dword [ebp + 0x1e8]
mov byte [0x300128f6], al
push dword [ebp + 0x1e4]
push 1
push 0xe
push dword [ebp + 0x1e0]
push dword [ebp + 0x1dc]
call fcn.30009699
add esp, 0x18
cmp eax, ebx
mov dword [ebp - 0x54], eax
jne 0x3000c530
push dword [ebp + 0x1e8]
lea eax, [ebp + 0x1d4]
push dword [ebp + 0x1e4]
push 1
push eax
push dword [ebp + 0x1e0]
push dword [ebp + 0x1dc]
call fcn.30002f7a
add esp, 0x18
test eax, eax
jne 0x3000c289
mov dword [ebp - 0x54], 7
jmp 0x3000c530
xor ebx, ebx
push dword [ebp + 0x1d0]
push edi
call fcn.30007b1b
test eax, eax
pop ecx
pop ecx
je 0x3000c2b1
mov eax, dword [0x300140e8]
and eax, dword [ebp + 0x1ec]
cmp ax, word [ebp + 0x1ec]
je 0x3000c300
push dword [ebp + 0x1d0]
push esi
push edi
call fcn.30002c36
push dword [ebp + 0x1e8]
mov eax, dword [ebp + 0x1ec]
push dword [ebp + 0x1e4]
mov word [0x300140e8], ax
push dword [ebp + 0x1d0]
push eax
push 4
push dword [ebp + 0x1e0]
push dword [ebp + 0x1dc]
call fcn.300096e1
add esp, 0x1c
cmp eax, ebx
mov dword [ebp - 0x54], eax
jne 0x3000c530
xor ebx, ebx
cmp dword [ebp - 0x60], ebx
jbe 0x3000c52d
mov eax, dword [ebp - 0x50]
dec dword [ebp - 0x60]
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x58]
push eax
push dword [ebp - 0x4c]
lea eax, [ebp - 0x78]
push eax
push 0
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0x48]
push eax
push dword [ebp - 0x60]
mov dword [ebp - 0x74], 0x105
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
mov esi, dword [0x300142fc]
xor edi, edi
test esi, esi
je 0x3000c38f
mov al, byte [ebp + 0x1d4]
cmp al, byte [esi + 0x12]
jne 0x3000c388
mov ax, word [esi + 0x10]
and eax, dword [ebp + 0x1ec]
test ax, ax
je 0x3000c388
push dword [esi + 4]
lea eax, [ebp - 0x48]
push eax
call fcn.30007b1b
test eax, eax
pop ecx
pop ecx
je 0x3000c388
push dword [esi]
push dword [ebp + 0x1d0]
call fcn.30007b1b
test eax, eax
pop ecx
pop ecx
je 0x3000c388
xor edi, edi
inc edi
test edi, edi
mov esi, dword [esi + 0x14]
je 0x3000c342
test edi, edi
jne 0x3000c523
mov eax, dword [ebp - 0x78]
cmp eax, 1
jne 0x3000c3cb
mov esi, dword [ebp - 0x4c]
push esi
mov byte [ebp - 0x64], 5
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [eax + eax + 2]
test eax, eax
mov dword [ebp - 0x58], eax
jne 0x3000c4ba
and word [esi], ax
mov dword [ebp - 0x58], 2
jmp 0x3000c4ba
cmp eax, 7
jne 0x3000c3d9
mov byte [ebp - 0x64], 6
jmp 0x3000c4ba
cmp eax, 2
jne 0x3000c4a2
mov esi, dword [ebp - 0x4c]
push esi
mov byte [ebp - 0x64], 7
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [eax + eax + 2]
mov dword [ebp - 0x58], eax
cmp word [esi], 0
je 0x3000c4ba
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edi, dword [0x30014300]
mov ebx, eax
jmp 0x3000c446
mov eax, dword [edi + 0xc]
cmp ebx, eax
jl 0x3000c443
lea eax, [esi + eax*2]
mov cx, word [eax]
and word [eax], 0
push dword [edi + 4]
mov dword [ebp - 0x54], eax
push esi
mov word [ebp - 0x68], cx
call fcn.30007b1b
test eax, eax
pop ecx
pop ecx
jne 0x3000c455
mov ax, word [ebp - 0x68]
mov ecx, dword [ebp - 0x54]
mov word [ecx], ax
mov edi, dword [edi + 0x14]
test edi, edi
jne 0x3000c412
push esi
call dword [sym.imp.USER32.dll_CharNextW]
mov esi, eax
jmp 0x3000c3f7
sub ebx, dword [edi + 0xc]
lea eax, [ebx + ebx + 2]
push eax
mov eax, dword [edi + 8]
push dword [ebp - 0x54]
lea eax, [esi + eax*2]
push eax
call dword [sym.imp.MSVCRT.dll_memmove]
mov ecx, dword [ebp - 0x50]
mov eax, esi
sub eax, dword [ebp - 0x4c]
add esp, 0xc
push dword [edi]
sar eax, 1
shr ecx, 1
sub ecx, eax
push ecx
push esi
call fcn.30002d80
mov eax, dword [edi + 8]
mov cx, word [ebp - 0x68]
lea esi, [esi + eax*2]
mov word [esi], cx
sub eax, dword [edi + 0xc]
mov ecx, dword [ebp - 0x58]
lea eax, [ecx + eax*2]
jmp 0x3000c3f4
cmp eax, 4
jne 0x3000c4ad
mov byte [ebp - 0x64], 8
jmp 0x3000c4ba
cmp eax, 3
je 0x3000c4b6
test eax, eax
jne 0x3000c523
mov byte [ebp - 0x64], 9
mov edi, 0x33b
call fcn.3000916b
lea eax, [ebp - 0x48]
push eax
call fcn.300091e6
push dword [ebp - 0x58]
mov esi, dword [ebp + 0x1e8]
mov edi, dword [ebp + 0x1e4]
mov ebx, dword [ebp + 0x1e0]
lea eax, [ebp - 0x48]
push eax
push dword [ebp + 0x1ec]
push dword [ebp - 0x64]
push dword [ebp + 0x1dc]
call fcn.30009821
add esp, 0x18
test eax, eax
mov dword [ebp - 0x54], eax
jne 0x3000c530
push esi
push edi
push dword [ebp - 0x58]
push dword [ebp - 0x4c]
push ebx
push dword [ebp + 0x1dc]
call fcn.30002f7a
add esp, 0x18
test eax, eax
je 0x3000c27d
cmp dword [ebp - 0x60], 0
ja 0x3000c309
dec dword [ebp - 0x60]
push dword [ebp - 0x4c]
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov esi, dword [ebp - 0x54]
push dword [ebp - 0x6c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
pop edi
mov ecx, dword [ebp + 0x1c4]
pop esi
pop ebx
call fcn.300101bf
add ebp, 0x1c8
leave
ret