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

Disassembly:
push ebp
lea ebp, [esp - 0x5d8]
sub esp, 0x658
mov eax, dword [0x30034be8]
push esi
xor esi, esi
mov dword [ebp + 0x5d4], eax
mov eax, dword [ebp + 0x5e0]
push edi
lea edi, [eax*4 + 0x3007714c]
cmp dword [edi], esi
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0x80], 0x14
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x7c], esi
mov dword [ebp - 0x5c], edi
jne 0x30016bfd
cmp dword [0x3007bc44], esi
jne 0x30016830
cmp eax, 1
je 0x30016bfd
push ebx
mov ebx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
lea eax, [ebp - 0x68]
push eax
push 0x20019
push esi
push 0x30007270
push reloc.OLEAUT32.dll_SysReAllocString
call ebx
test eax, eax
jne 0x300168c4
mov edi, 0x104
push edi
lea eax, [ebp - 0x58]
push eax
mov dword [ebp - 0x60], esi
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
jmp 0x300168b8
lea eax, [ebp - 0x64]
push eax
push 0x20019
push 0
lea eax, [ebp - 0x58]
push eax
push dword [ebp - 0x68]
call ebx
test eax, eax
jne 0x300168ad
lea eax, [ebp - 0x80]
push eax
lea eax, [ebp + 0x5c0]
push eax
push 0
push 0
push 0x3000724c
push dword [ebp - 0x64]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x3001690c
push dword [ebp - 0x64]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
and dword [ebp - 0x64], 0
inc dword [ebp - 0x60]
push edi
lea eax, [ebp - 0x58]
push eax
push dword [ebp - 0x60]
push dword [ebp - 0x68]
call esi
test eax, eax
je 0x30016867
mov edi, dword [ebp - 0x5c]
xor ebx, ebx
cmp dword [0x30076f2c], ebx
mov esi, 0x30077154
je 0x300169ac
push esi
call fcn.30016286
test eax, eax
je 0x300169a6
mov ax, word [0x30077154]
cmp ax, 0x61
jb 0x30016987
cmp ax, 0x7a
ja 0x30016987
movzx eax, ax
sub eax, 0x60
mov dword [edi], eax
jmp 0x30016bde
lea eax, [ebp + 0x5c0]
push eax
push 0xa
push 0x30077154
call fcn.3000cd1d
test eax, eax
mov dword [ebp - 0x6c], eax
jge 0x30016943
push eax
push 0x30001400
call fcn.3000fdf9
push 0x30007228
call fcn.3000fdf9
add esp, 0xc
jmp 0x30016bde
mov ax, word [0x30077154]
cmp ax, 0x61
jb 0x3001695d
cmp ax, 0x7a
ja 0x3001695d
movzx eax, ax
sub eax, 0x60
jmp 0x3001696f
cmp ax, 0x41
jb 0x30016974
cmp ax, 0x5a
ja 0x30016974
movzx eax, ax
sub eax, 0x40
mov ecx, dword [ebp - 0x5c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax]
add eax, 0x40
push eax
push 0x300071b0
jmp 0x30016b7e
cmp ax, 0x41
jb 0x30016bde
cmp ax, 0x5a
ja 0x30016bde
movzx eax, ax
sub eax, 0x40
jmp 0x30016905
mov dword [0x30076f2c], ebx
cmp dword [edi], ebx
jne 0x30016b6f
push 0xa
push esi
push 0x30003ba8
push 0x30006584
push 0x30006578
call fcn.3001038d
push esi
call fcn.30016286
test eax, eax
je 0x30016a07
mov ax, word [0x30077154]
cmp ax, 0x61
mov dword [0x30076f2c], 1
jb 0x300169f5
cmp ax, 0x7a
jbe 0x300168ff
cmp ax, 0x41
jb 0x30016a01
cmp ax, 0x5a
jbe 0x3001699b
mov dword [0x30076f2c], ebx
cmp dword [edi], ebx
jne 0x30016b6f
or dword [ebp - 0x78], 0xffffffff
lea eax, [ebp - 0x70]
push eax
lea eax, [ebp + 0x1b0]
push eax
mov dword [ebp - 0x70], 0x1a
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x74], ebx
call fcn.3001e2a7
mov esi, eax
test esi, esi
mov dword [ebp - 0x6c], esi
jge 0x30016a57
push esi
push 0x30001400
call fcn.3000fdf9
push esi
push 0x3000716c
call fcn.3000fdf9
add esp, 0x10
jmp 0x30016bde
cmp dword [ebp + 0x5e0], 1
jne 0x30016bca
xor edi, edi
cmp dword [ebp - 0x70], edi
jbe 0x30016b54
lea esi, [ebp + 0x1b8]
cmp dword [ebp - 0x60], 0
jne 0x30016b54
lea eax, [ebp - 0x7c]
push eax
lea ebx, [esi + 0xc]
mov ax, word [ebx - 0x14]
add ax, 0x40
push eax
call fcn.3001f17b
test eax, eax
mov dword [ebp - 0x6c], eax
jl 0x30016b87
cmp dword [ebp - 0x7c], 0
jne 0x30016b47
cmp dword [ebp - 0x78], 0xffffffff
jne 0x30016ab2
mov dword [ebp - 0x78], edi
cmp dword [0x3007bc44], 0xffffffff
jne 0x30016b00
mov eax, dword [esi + 4]
cmp eax, dword [0x30006614]
mov ecx, dword [esi]
jb 0x30016adb
ja 0x30016ad2
cmp ecx, dword [0x30006610]
jb 0x30016adb
mov dword [ebp - 0x74], 1
jmp 0x30016b00
cmp dword [ebp - 0x74], 0
je 0x30016aea
mov dword [ebp - 0x60], 1
jmp 0x30016b00
cmp eax, dword [0x3000661c]
ja 0x30016afc
jb 0x30016ae1
cmp ecx, dword [0x30006618]
jb 0x30016ae1
and dword [ebp - 0x60], 0
push 0x30007160
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
jne 0x30016b47
mov eax, dword [esi + 4]
cmp eax, dword [0x30006614]
mov ecx, dword [esi]
ja 0x30016baf
jb 0x30016b2f
cmp ecx, dword [0x30006610]
jae 0x30016baf
cmp eax, dword [0x3000661c]
jb 0x30016b47
ja 0x30016b41
cmp ecx, dword [0x30006618]
jbe 0x30016b47
cmp dword [ebp - 0x74], 0
je 0x30016baf
inc edi
add esi, 0x28
cmp edi, dword [ebp - 0x70]
jb 0x30016a75
mov edi, dword [ebp - 0x5c]
cmp dword [edi], 0
jne 0x30016b6f
mov eax, dword [ebp - 0x78]
test eax, eax
jl 0x30016b6f
imul eax, eax, 0x28
mov eax, dword [ebp + eax + 0x1b0]
mov dword [edi], eax
mov eax, dword [edi]
test eax, eax
je 0x30016bd4
add eax, 0x40
push eax
push 0x3000712c
call fcn.3000ff32
pop ecx
pop ecx
jmp 0x30016bde
push eax
push 0x30001400
call fcn.3000fdf9
imul edi, edi, 0x28
mov ax, word [ebp + edi + 0x1b0]
add ax, 0x40
movzx eax, ax
push eax
push 0x300070fc
jmp 0x30016a4a
push 0x300070d8
call fcn.3000fe20
imul edi, edi, 0x28
mov eax, dword [ebp + edi + 0x1b0]
mov dword [0x30077150], eax
jmp 0x30016b54
mov eax, dword [ebp + 0x1b0]
mov dword [edi], eax
jmp 0x30016b57
push 0x30007090
call fcn.3000fe20
cmp dword [ebp - 0x64], 0
pop ebx
je 0x30016bee
push dword [ebp - 0x64]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 0x68], 0
je 0x30016bfd
push dword [ebp - 0x68]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp + 0x5d4]
mov eax, dword [ebp - 0x6c]
pop edi
pop esi
call fcn.3001f57d
add ebp, 0x5d8
leave
ret 4