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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x640
mov dword [ebp - 0x638], 0
cmp dword [0x420a88], 0
je 0x409215
cmp dword [ebp + 0x14], 0xffffffff
jne 0x409215
mov eax, dword [ebp + 0x18]
and eax, 0xff
push eax
push 0x420b84
push 0x420b88
push 0x420b8c
push 0x420b90
push 0x420b94
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call fcn.00406c95
add esp, 0xc
push eax
push 0x420b98
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 - 0x63c]
push ecx
push 0x20019
push 0
mov edx, dword [ebp + 0x10]
push edx
mov eax, dword [reloc.OLEAUT32.dll_SysReAllocString]
push eax
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x640], eax
cmp dword [ebp - 0x640], 0
je 0x40924a
mov eax, dword [ebp + 0x14]
jmp 0x40954d
push 0x104
lea ecx, [ebp - 0x310]
push ecx
mov edx, dword [ebp - 0x638]
push edx
mov eax, dword [ebp - 0x63c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyA]
test eax, eax
jne 0x40953d
lea ecx, [ebp - 0x314]
push ecx
push 0x20019
push 0
lea edx, [ebp - 0x310]
push edx
mov eax, dword [ebp - 0x63c]
push eax
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x409529
mov dword [ebp - 0x420], 4
lea ecx, [ebp - 0x420]
push ecx
lea edx, [ebp - 0x108]
push edx
push 0
push 0
push str.Start
mov eax, dword [ebp - 0x314]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x40951c
cmp dword [ebp - 0x108], 2
jne 0x40951c
lea ecx, [ebp - 0x420]
push ecx
lea edx, [ebp - 0x630]
push edx
push 0
push 0
push str.Type
mov eax, dword [ebp - 0x314]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x40951c
cmp dword [ebp - 0x630], 2
jbe 0x40951c
mov dword [ebp - 0x420], 0x104
lea ecx, [ebp - 0x420]
push ecx
lea edx, [ebp - 0x528]
push edx
push 0
push 0
push str.ImagePath
mov eax, dword [ebp - 0x314]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x40951c
push 0
lea ecx, [ebp - 0x528]
push ecx
call fcn.00403360
add esp, 8
mov dword [ebp - 0x424], eax
lea edx, [ebp - 0x41c]
push edx
lea eax, [ebp - 0x104]
push eax
mov ecx, dword [ebp - 0x424]
push ecx
call fcn.004038ca
add esp, 0xc
mov dword [ebp - 0x318], eax
mov edx, dword [ebp - 0x318]
push edx
push 0xffffffffffffffff
push 0
push 1
push 0x1002
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
push eax
call dword [sym.imp.COMCTL32.dll_ImageList_ReplaceIcon]
mov dword [ebp - 0x634], eax
mov dword [ebp - 0x420], 0x104
lea ecx, [ebp - 0x420]
push ecx
lea edx, [ebp - 0x41c]
push edx
push 0
push 0
push str.Description
mov eax, dword [ebp - 0x314]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea ecx, [ebp - 0x310]
push ecx
lea edx, [ebp - 0x20c]
push edx
call fcn.0040dc70
add esp, 8
mov dword [ebp - 0x420], 0x104
lea eax, [ebp - 0x420]
push eax
lea ecx, [ebp - 0x20c]
push ecx
push 0
push 0
push str.DislpayName
mov edx, dword [ebp - 0x314]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [ebp - 0x62c]
push eax
lea ecx, [ebp - 0x104]
push ecx
mov edx, dword [ebp - 0x424]
push edx
lea eax, [ebp - 0x20c]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00406381
add esp, 0x14
and eax, 0xff
test eax, eax
je 0x40951c
cmp dword [ebp + 0x14], 0xffffffff
jne 0x4094bf
mov edx, dword [ebp + 0x18]
and edx, 0xff
push edx
push 0x420b9c
push 0x420ba0
push 0x420ba4
push 0x420ba8
push 0x420bac
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.00406c95
add esp, 0xc
push eax
push 0x420bb0
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 - 0x62c]
push ecx
lea edx, [ebp - 0x41c]
push edx
lea eax, [ebp - 0x104]
push eax
mov ecx, dword [ebp - 0x424]
push ecx
lea edx, [ebp - 0x310]
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 - 0x20c]
push edx
push 7
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp - 0x634]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.0040652e
add esp, 0x2c
mov eax, dword [ebp - 0x314]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x638]
add ecx, 1
mov dword [ebp - 0x638], ecx
jmp 0x40924a
mov edx, dword [ebp - 0x63c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp + 0x14]
mov esp, ebp
pop ebp
ret