Function at 0x4140b9
Capabilities:
Query or enumerate registry key

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x4a4
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov dword [ebp - 0x49c], ecx
mov ecx, 0x104
push ecx
mov dword [ebp - 0x478], ecx
xor edi, edi
lea ecx, [ebp - 0x464]
push ecx
push edi
push eax
mov dword [ebp - 0x48c], eax
mov dword [ebp - 0x494], edi
mov dword [ebp - 0x4a0], edi
mov dword [ebp - 0x498], edi
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
jne 0x4142fe
lea eax, [ebp - 0x474]
push eax
lea eax, [ebp - 0x464]
push eax
call dword [sym.imp.ole32.dll_CLSIDFromString]
cmp eax, 0x800401f3
je 0x4304dd
push 0x3001f
lea eax, [ebp - 0x464]
push eax
push dword [ebp - 0x48c]
lea ecx, [ebp - 0x484]
mov dword [ebp - 0x484], edi
mov dword [ebp - 0x480], edi
mov dword [ebp - 0x47c], edi
call fcn.0040314f
test eax, eax
jne 0x4304d2
push 0x208
lea eax, [ebp - 0x20c]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x478]
push eax
lea eax, [ebp - 0x20c]
push eax
push 0x410ef4
lea ecx, [ebp - 0x484]
call fcn.0040ae95
test eax, eax
jne 0x4141bd
lea esi, [ebx + 0x98]
push dword [esi]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
jne 0x430248
push 0x208
lea eax, [ebp - 0x20c]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x478]
push eax
lea eax, [ebp - 0x20c]
push eax
push 0x414304
lea ecx, [ebp - 0x484]
mov dword [ebp - 0x478], 0x104
call fcn.0040ae95
test eax, eax
jne 0x4304d2
mov eax, dword [ebx + 0x54]
lea ecx, [ebp - 0x20c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4142eb
cmp dx, di
je 0x414235
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4142eb
add eax, 4
add ecx, 4
cmp dx, di
jne 0x41420b
xor eax, eax
cmp eax, edi
jne 0x430288
lea esi, [ebx + 0x20]
mov dword [ebp - 0x494], 1
cmp dword [esi], edi
jne 0x430534
mov eax, dword [ebp - 0x484]
mov dword [esi], eax
mov dword [ebp - 0x484], edi
lea eax, [ebx + 0x68]
push 4
pop ecx
mov edi, 0x408f28
mov esi, eax
xor edx, edx
repe cmpsd dword [esi], dword es:[edi]
jne 0x430540
lea esi, [ebp - 0x474]
lea edi, [ebx + 0x68]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea ecx, [ebp - 0x484]
movsd dword es:[edi], dword [esi]
call fcn.004030f0
xor edi, edi
cmp dword [ebp - 0x494], edi
je 0x4142fe
test byte [ebx + 0x10c], 1
jne 0x4142d8
lea eax, [ebp - 0x48c]
push eax
push 0x41367c
lea ecx, [ebx + 0x20]
mov dword [ebp - 0x48c], edi
call fcn.00403110
xor eax, eax
cmp dword [ebp - 0x48c], edi
setne al
xor eax, dword [ebx + 0x10c]
and eax, 1
xor dword [ebx + 0x10c], eax
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00401580
leave
ret 8
sbb eax, eax
sbb eax, 0xffffffff
jmp 0x414237
test eax, eax
jne 0x414293
jmp 0x41411a
xor eax, eax
inc eax
jmp 0x4142da
mov eax, dword [esi]
lea ecx, [ebp - 0x20c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x430276
cmp dx, di
je 0x430272
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x430276
add eax, 4
add ecx, 4
cmp dx, di
jne 0x430250
xor eax, eax
jmp 0x43027b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x4141bd
jmp 0x430506
mov ecx, dword [ebp - 0x49c]
call fcn.004106f0
test eax, eax
je 0x4304d2
push dword [ebp - 0x484]
mov ecx, dword [ebp - 0x49c]
call fcn.00418e0c
test eax, eax
je 0x4304d2
push 0x4307e8
push 4
pop esi
push esi
call fcn.004015a0
lea eax, [ebp - 0x20c]
push eax
push 0x430780
push esi
call fcn.004015a0
push dword [ebx + 0x54]
push 0x430718
push esi
call fcn.004015a0
push 0x208
lea eax, [ebp - 0x20c]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0x2c
lea eax, [ebp - 0x478]
push eax
lea eax, [ebp - 0x20c]
push eax
push 0x43bbb8
lea ecx, [ebp - 0x484]
mov dword [ebp - 0x478], 0x104
call fcn.0040ae95
test eax, eax
jne 0x4304d2
mov eax, dword [ebx + 0x58]
lea ecx, [ebp - 0x20c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x430354
cmp dx, di
je 0x430350
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x430354
add eax, esi
add ecx, esi
cmp dx, di
jne 0x430330
xor eax, eax
jmp 0x430359
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x4304d2
push 0x208
lea eax, [ebp - 0x20c]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0x478]
push eax
lea eax, [ebp - 0x20c]
push eax
push 0x43bba0
lea ecx, [ebp - 0x484]
mov dword [ebp - 0x478], 0x104
call fcn.0040ae95
test eax, eax
jne 0x4304d2
push dword [ebx + 0x5c]
mov dword [ebp - 0x488], edi
mov dword [ebp - 0x490], edi
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov ecx, dword [ebp - 0x478]
xor edx, edx
mov dword [ebp - 0x4a4], eax
cmp ecx, edi
jbe 0x4303ed
cmp edx, eax
jae 0x4303ed
mov esi, dword [ebx + 0x5c]
mov si, word [esi + edx*2]
cmp si, word [ebp + edx*2 - 0x20c]
jne 0x4303e8
inc dword [ebp - 0x488]
inc edx
cmp edx, ecx
jb 0x4303cd
cmp eax, ecx
je 0x43042f
lea edx, [ecx - 1]
cmp edx, edi
jbe 0x43042f
lea edx, [eax + eax]
lea esi, [ebp + ecx*2 - 0x210]
jmp 0x43040a
mov eax, dword [ebp - 0x4a4]
cmp edi, eax
jae 0x43042d
mov eax, dword [ebx + 0x5c]
mov ax, word [edx + eax - 2]
cmp ax, word [esi]
jne 0x430421
inc dword [ebp - 0x490]
inc edi
dec edx
dec edx
dec esi
lea eax, [ecx - 1]
dec esi
cmp edi, eax
jb 0x430404
xor edi, edi
mov eax, dword [ebp - 0x488]
add eax, dword [ebp - 0x490]
mov dword [ebp - 0x488], eax
cmp eax, dword [ebp - 0x4a0]
jbe 0x4304d2
shr ecx, 1
cmp eax, ecx
jbe 0x4304d2
push dword [ebp - 0x490]
mov ecx, dword [ebp - 0x49c]
push eax
lea eax, [ebp - 0x474]
push eax
push ebx
call fcn.0046bed9
test eax, eax
jne 0x4304d2
lea esi, [ebx + 0x20]
mov dword [ebp - 0x494], 1
cmp dword [esi], edi
je 0x430489
mov ecx, esi
call fcn.004030f0
mov eax, dword [ebp - 0x484]
push dword [ebp - 0x490]
mov dword [esi], eax
mov eax, dword [ebp - 0x488]
mov dword [ebp - 0x484], edi
lea edi, [ebx + 0x68]
lea esi, [ebp - 0x474]
movsd dword es:[edi], dword [esi]
push eax
push dword [ebx + 0x5c]
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x4a0], eax
lea eax, [ebp - 0x20c]
push eax
movsd dword es:[edi], dword [esi]
push 0x430638
push 4
movsd dword es:[edi], dword [esi]
call fcn.004015a0
add esp, 0x18
xor edi, edi
lea ecx, [ebp - 0x484]
call fcn.004030f0
inc dword [ebp - 0x498]
push 0x104
lea eax, [ebp - 0x464]
push eax
push dword [ebp - 0x498]
push dword [ebp - 0x48c]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
jmp 0x4142f5
mov eax, dword [ebp - 0x484]
mov dword [ebp - 0x484], edi
lea edi, [ebx + 0x68]
lea esi, [ebp - 0x474]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea ecx, [ebp - 0x484]
mov dword [ebx + 0x20], eax
movsd dword es:[edi], dword [esi]
call fcn.004030f0
xor edi, edi
jmp 0x41429b
mov ecx, esi
call fcn.004030f0
jmp 0x414254
push 0x28
lea ecx, [ebp - 0x25c]
push ecx
push eax
call dword [sym.imp.ole32.dll_StringFromGUID2]
test eax, eax
jle 0x414279
lea eax, [ebp - 0x25c]
push eax
push 0x430578
push 4
call fcn.004015a0
add esp, 0xc
jmp 0x414279