Function at 0x4136b1
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 0x4138f6
lea eax, [ebp - 0x474]
push eax
lea eax, [ebp - 0x464]
push eax
call dword [sym.imp.ole32.dll_CLSIDFromString]
cmp eax, 0x800401f3
je 0x430375
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.00403d7c
test eax, eax
jne 0x43036a
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 0x410524
lea ecx, [ebp - 0x484]
call fcn.0040a4c5
test eax, eax
jne 0x4137b5
lea esi, [ebx + 0x98]
push dword [esi]
call dword [sym.imp.OLEAUT32.dll_VariantInit]
test eax, eax
jne 0x4300e0
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 0x4138fc
lea ecx, [ebp - 0x484]
mov dword [ebp - 0x478], 0x104
call fcn.0040a4c5
test eax, eax
jne 0x43036a
mov eax, dword [ebx + 0x54]
lea ecx, [ebp - 0x20c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4138e3
cmp dx, di
je 0x41382d
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4138e3
add eax, 4
add ecx, 4
cmp dx, di
jne 0x413803
xor eax, eax
cmp eax, edi
jne 0x430120
lea esi, [ebx + 0x20]
mov dword [ebp - 0x494], 1
cmp dword [esi], edi
jne 0x4303cc
mov eax, dword [ebp - 0x484]
mov dword [esi], eax
mov dword [ebp - 0x484], edi
lea eax, [ebx + 0x68]
push 4
pop ecx
mov edi, 0x408558
mov esi, eax
xor edx, edx
repe cmpsd dword [esi], dword es:[edi]
jne 0x4303d8
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.00403d1d
xor edi, edi
cmp dword [ebp - 0x494], edi
je 0x4138f6
test byte [ebx + 0x10c], 1
jne 0x4138d0
lea eax, [ebp - 0x48c]
push eax
push 0x412ca4
lea ecx, [ebx + 0x20]
mov dword [ebp - 0x48c], edi
call fcn.00403d3d
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 0x41382f
test eax, eax
jne 0x41388b
jmp 0x413712
xor eax, eax
inc eax
jmp 0x4138d2
mov eax, dword [esi]
lea ecx, [ebp - 0x20c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x43010e
cmp dx, di
je 0x43010a
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x43010e
add eax, 4
add ecx, 4
cmp dx, di
jne 0x4300e8
xor eax, eax
jmp 0x430113
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x4137b5
jmp 0x43039e
mov ecx, dword [ebp - 0x49c]
call fcn.0040fd20
test eax, eax
je 0x43036a
push dword [ebp - 0x484]
mov ecx, dword [ebp - 0x49c]
call fcn.00418b14
test eax, eax
je 0x43036a
push 0x430680
push 4
pop esi
push esi
call fcn.004015a0
lea eax, [ebp - 0x20c]
push eax
push 0x430618
push esi
call fcn.004015a0
push dword [ebx + 0x54]
push 0x4305b0
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 0x43baa8
lea ecx, [ebp - 0x484]
mov dword [ebp - 0x478], 0x104
call fcn.0040a4c5
test eax, eax
jne 0x43036a
mov eax, dword [ebx + 0x58]
lea ecx, [ebp - 0x20c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4301ec
cmp dx, di
je 0x4301e8
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4301ec
add eax, esi
add ecx, esi
cmp dx, di
jne 0x4301c8
xor eax, eax
jmp 0x4301f1
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x43036a
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 0x43ba90
lea ecx, [ebp - 0x484]
mov dword [ebp - 0x478], 0x104
call fcn.0040a4c5
test eax, eax
jne 0x43036a
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 0x430285
cmp edx, eax
jae 0x430285
mov esi, dword [ebx + 0x5c]
mov si, word [esi + edx*2]
cmp si, word [ebp + edx*2 - 0x20c]
jne 0x430280
inc dword [ebp - 0x488]
inc edx
cmp edx, ecx
jb 0x430265
cmp eax, ecx
je 0x4302c7
lea edx, [ecx - 1]
cmp edx, edi
jbe 0x4302c7
lea edx, [eax + eax]
lea esi, [ebp + ecx*2 - 0x210]
jmp 0x4302a2
mov eax, dword [ebp - 0x4a4]
cmp edi, eax
jae 0x4302c5
mov eax, dword [ebx + 0x5c]
mov ax, word [edx + eax - 2]
cmp ax, word [esi]
jne 0x4302b9
inc dword [ebp - 0x490]
inc edi
dec edx
dec edx
dec esi
lea eax, [ecx - 1]
dec esi
cmp edi, eax
jb 0x43029c
xor edi, edi
mov eax, dword [ebp - 0x488]
add eax, dword [ebp - 0x490]
mov dword [ebp - 0x488], eax
cmp eax, dword [ebp - 0x4a0]
jbe 0x43036a
shr ecx, 1
cmp eax, ecx
jbe 0x43036a
push dword [ebp - 0x490]
mov ecx, dword [ebp - 0x49c]
push eax
lea eax, [ebp - 0x474]
push eax
push ebx
call fcn.0046be79
test eax, eax
jne 0x43036a
lea esi, [ebx + 0x20]
mov dword [ebp - 0x494], 1
cmp dword [esi], edi
je 0x430321
mov ecx, esi
call fcn.00403d1d
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 0x4304d0
push 4
movsd dword es:[edi], dword [esi]
call fcn.004015a0
add esp, 0x18
xor edi, edi
lea ecx, [ebp - 0x484]
call fcn.00403d1d
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 0x4138ed
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.00403d1d
xor edi, edi
jmp 0x413893
mov ecx, esi
call fcn.00403d1d
jmp 0x41384c
push 0x28
lea ecx, [ebp - 0x25c]
push ecx
push eax
call dword [sym.imp.ole32.dll_StringFromGUID2]
test eax, eax
jle 0x413871
lea eax, [ebp - 0x25c]
push eax
push 0x430410
push 4
call fcn.004015a0
add esp, 0xc
jmp 0x413871