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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x63c
cmp dword [0x420a88], 0
je 0x407776
cmp dword [ebp + 0x14], 0xffffffff
jne 0x407776
mov eax, dword [ebp + 0x18]
and eax, 0xff
push eax
push 0x420b48
push 0x420b4c
push 0x420b50
push 0
push 0x420b54
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call fcn.00406c95
add esp, 0xc
push eax
push 0x420b58
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.00406c95
add esp, 0xc
push eax
push 0
mov edx, dword [ebp + 0x14]
push edx
push 0
mov eax, dword [ebp + 8]
push eax
call fcn.0040652e
add esp, 0x2c
mov dword [ebp + 0x14], eax
lea ecx, [ebp - 0x420]
push ecx
push 0x20019
push 0
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x407ac0
mov dword [ebp - 0x210], 0
jmp 0x4077b5
mov ecx, dword [ebp - 0x210]
add ecx, 1
mov dword [ebp - 0x210], ecx
mov dword [ebp - 0x63c], 0x104
mov edx, dword [ebp - 0x63c]
push edx
lea eax, [ebp - 0x638]
push eax
mov ecx, dword [ebp - 0x210]
push ecx
mov edx, dword [ebp - 0x420]
push edx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
test eax, eax
je 0x4077ea
jmp 0x407ab3
lea eax, [ebp - 0x638]
push eax
push str.CLSID_sInprocServer32
lea ecx, [ebp - 0x52c]
push ecx
call fcn.0040dddb
add esp, 0xc
lea edx, [ebp - 0x530]
push edx
push 0x20019
push 0
lea eax, [ebp - 0x52c]
push eax
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4078a6
mov dword [ebp - 0x428], 0x104
lea ecx, [ebp - 0x428]
push ecx
lea edx, [ebp - 0x52c]
push edx
push 0
push 0
push 0x420b5c
mov eax, dword [ebp - 0x530]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x407897
push 0
lea ecx, [ebp - 0x52c]
push ecx
call fcn.00403360
add esp, 8
mov dword [ebp - 0x424], eax
mov edx, dword [ebp - 0x424]
push edx
lea eax, [ebp - 0x52c]
push eax
call fcn.0040dc70
add esp, 8
mov ecx, dword [ebp - 0x424]
push ecx
call fcn.0040da3e
add esp, 4
mov edx, dword [ebp - 0x530]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x4078ab
jmp 0x4077a6
push 0
lea eax, [ebp - 0x52c]
push eax
call fcn.00403360
add esp, 8
mov dword [ebp - 0x534], eax
lea ecx, [ebp - 0x20c]
push ecx
lea edx, [ebp - 0x104]
push edx
mov eax, dword [ebp - 0x534]
push eax
call fcn.004038ca
add esp, 0xc
mov dword [ebp - 0x108], eax
mov ecx, dword [ebp - 0x108]
push ecx
push 0xffffffffffffffff
push 0
push 1
push 0x1002
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
push eax
call dword [sym.imp.COMCTL32.dll_ImageList_ReplaceIcon]
mov dword [ebp - 0x41c], eax
lea eax, [ebp - 0x638]
push eax
push str.CLSID_s
lea ecx, [ebp - 0x52c]
push ecx
call fcn.0040dddb
add esp, 0xc
lea edx, [ebp - 0x638]
push edx
lea eax, [ebp - 0x418]
push eax
call fcn.0040dc70
add esp, 8
lea ecx, [ebp - 0x530]
push ecx
push 0x20019
push 0
lea edx, [ebp - 0x52c]
push edx
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4079b8
mov dword [ebp - 0x428], 0x104
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x52c]
push ecx
push 0
push 0
push 0x420b60
mov edx, dword [ebp - 0x530]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4079ab
lea eax, [ebp - 0x52c]
push eax
lea ecx, [ebp - 0x418]
push ecx
call fcn.0040dc70
add esp, 8
mov edx, dword [ebp - 0x530]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0x314]
push eax
lea ecx, [ebp - 0x104]
push ecx
mov edx, dword [ebp - 0x534]
push edx
lea eax, [ebp - 0x418]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00406381
add esp, 0x14
and eax, 0xff
test eax, eax
je 0x407aae
cmp dword [ebp + 0x14], 0xffffffff
jne 0x407a51
mov edx, dword [ebp + 0x18]
and edx, 0xff
push edx
push 0x420b64
push 0x420b68
push 0x420b6c
push 0
push 0x420b70
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.00406c95
add esp, 0xc
push eax
push 0x420b74
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.00406c95
add esp, 0xc
push eax
push 0
mov ecx, dword [ebp + 0x14]
push ecx
push 0
mov edx, dword [ebp + 8]
push edx
call fcn.0040652e
add esp, 0x2c
mov dword [ebp + 0x14], eax
mov eax, dword [ebp + 0x18]
and eax, 0xff
push eax
lea ecx, [ebp - 0x314]
push ecx
lea edx, [ebp - 0x20c]
push edx
lea eax, [ebp - 0x104]
push eax
mov ecx, dword [ebp - 0x534]
push ecx
lea edx, [ebp - 0x638]
push edx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.00406c95
add esp, 0xc
push eax
lea edx, [ebp - 0x418]
push edx
push 2
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp - 0x41c]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.0040652e
add esp, 0x2c
jmp 0x4077a6
mov eax, dword [ebp - 0x420]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp + 0x14]
mov esp, ebp
pop ebp
ret