Function at 0x404d09
Capabilities:
Query or enumerate registry key
Resolve function by parsing pe exports

Disassembly:
jmp 0x4ac2e0
push 0xffffffffffffffff
push 0x783f50
mov eax, dword fs:[0]
push eax
sub esp, 0x1ac
mov eax, dword [0x856918]
xor eax, esp
mov dword [esp + 0x1a8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x856918]
xor eax, esp
push eax
lea eax, [esp + 0x1c0]
mov dword fs:[0], eax
mov esi, dword [esp + 0x1d0]
xor ebx, ebx
mov dword [esp + 0x78], ecx
mov ecx, esi
mov dword [esp + 0x1c8], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0x98], ebx
call fcn.004046bf
lea eax, [esp + 0x6c]
push eax
push 0x7b4218
push reloc.WS2_32.dll_bind
mov dword [esp + 0x1d4], ebx
mov dword [esp + 0xa4], 1
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x4aca59
mov eax, dword [esp + 0x6c]
push ebx
push ebx
push ebx
push ebx
lea ecx, [esp + 0x80]
push ecx
lea edx, [esp + 0xcc]
push edx
push ebx
push eax
mov dword [esp + 0x94], ebx
mov dword [esp + 0x90], 0x104
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x4ac9f3
mov edi, 0xf
cmp byte [esp + 0x1dc], bl
je 0x4ac52a
lea eax, [esp + 0xb8]
mov dword [esp + 0x94], edi
mov dword [esp + 0x90], ebx
mov byte [esp + 0x80], bl
lea esi, [eax + 1]
jmp 0x4ac3e0
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4ac3e0
sub eax, esi
push eax
lea ecx, [esp + 0xbc]
push ecx
lea ecx, [esp + 0x84]
call fcn.00405920
push 9
push str.opera.exe
lea ecx, [esp + 0x3c]
mov dword [esp + 0x1d0], 1
mov dword [esp + 0x54], edi
mov dword [esp + 0x50], ebx
mov byte [esp + 0x40], bl
call fcn.00405920
push ebx
xor edx, edx
mov esi, 7
push 0x7b4260
lea ecx, [esp + 0x58]
mov byte [esp + 0x1d0], 2
mov dword [esp + 0x70], esi
mov dword [esp + 0x6c], ebx
mov word [esp + 0x5c], dx
call fcn.00405ef2
push ebx
xor eax, eax
push 0x7b4264
lea ecx, [esp + 0x20]
mov byte [esp + 0x1d0], 3
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], ebx
mov word [esp + 0x24], ax
call fcn.00405ef2
lea ecx, [esp + 0x7c]
push ecx
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x88]
mov byte [esp + 0x1d8], 4
call fcn.00403b66
mov ebp, 8
cmp dword [esp + 0x30], ebp
jb 0x4ac4b6
mov edx, dword [esp + 0x1c]
push edx
call fcn.00564155
add esp, 4
xor eax, eax
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], ebx
mov word [esp + 0x1c], ax
cmp dword [esp + 0x68], ebp
jb 0x4ac4d8
mov ecx, dword [esp + 0x54]
push ecx
call fcn.00564155
add esp, 4
xor edx, edx
cmp dword [esp + 0x4c], 0x10
mov dword [esp + 0x68], esi
mov dword [esp + 0x64], ebx
mov word [esp + 0x54], dx
jb 0x4ac4fb
mov eax, dword [esp + 0x38]
push eax
call fcn.00564155
add esp, 4
cmp dword [esp + 0x94], 0x10
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], ebx
mov byte [esp + 0x38], bl
mov byte [esp + 0x1c8], bl
jb 0x4ac532
mov ecx, dword [esp + 0x80]
push ecx
call fcn.00564155
add esp, 4
jmp 0x4ac532
mov ebp, 8
lea esi, [ebp - 1]
cmp byte [esp + 0x1d4], bl
je 0x4ac6ae
lea eax, [esp + 0xb8]
mov dword [esp + 0x94], edi
mov dword [esp + 0x90], ebx
mov byte [esp + 0x80], bl
lea edi, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4ac560
sub eax, edi
push eax
lea edx, [esp + 0xbc]
push edx
lea ecx, [esp + 0x84]
call fcn.00405920
push 0xb
push 0x7b4268
lea ecx, [esp + 0x20]
mov dword [esp + 0x1d0], 5
mov dword [esp + 0x38], 0xf
mov dword [esp + 0x34], ebx
mov byte [esp + 0x24], bl
call fcn.00405920
push ebx
xor eax, eax
push 0x7b4274
lea ecx, [esp + 0x58]
mov byte [esp + 0x1d0], 6
mov dword [esp + 0x70], esi
mov dword [esp + 0x6c], ebx
mov word [esp + 0x5c], ax
call fcn.00405ef2
xor ecx, ecx
push ebx
mov word [esp + 0x3c], cx
push 0x7b4278
lea ecx, [esp + 0x3c]
mov byte [esp + 0x1d0], 7
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], ebx
call fcn.00405ef2
lea edx, [esp + 0x7c]
push edx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x58]
push ecx
mov ecx, dword [esp + 0x84]
lea edx, [esp + 0x40]
push edx
mov byte [esp + 0x1d8], 8
call fcn.00403b66
cmp dword [esp + 0x4c], ebp
jb 0x4ac630
mov eax, dword [esp + 0x38]
push eax
call fcn.00564155
add esp, 4
xor ecx, ecx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x48], ebx
mov word [esp + 0x38], cx
cmp dword [esp + 0x68], ebp
jb 0x4ac652
mov edx, dword [esp + 0x54]
push edx
call fcn.00564155
add esp, 4
xor eax, eax
mov edi, 0x10
mov dword [esp + 0x68], esi
mov dword [esp + 0x64], ebx
mov word [esp + 0x54], ax
cmp dword [esp + 0x30], edi
jb 0x4ac679
mov ecx, dword [esp + 0x1c]
push ecx
call fcn.00564155
add esp, 4
mov dword [esp + 0x30], 0xf
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], bl
mov byte [esp + 0x1c8], bl
cmp dword [esp + 0x94], edi
jb 0x4ac6a9
mov edx, dword [esp + 0x80]
push edx
call fcn.00564155
add esp, 4
mov edi, 0xf
cmp byte [esp + 0x1d8], bl
je 0x4ac82a
lea eax, [esp + 0xb8]
mov dword [esp + 0x94], edi
mov dword [esp + 0x90], ebx
mov byte [esp + 0x80], bl
lea edi, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4ac6e0
sub eax, edi
push eax
lea eax, [esp + 0xbc]
push eax
lea ecx, [esp + 0x84]
call fcn.00405920
mov edi, 0xf
push edi
push str.thunderbird.exe
lea ecx, [esp + 0x20]
mov dword [esp + 0x1d0], 9
mov dword [esp + 0x38], edi
mov dword [esp + 0x34], ebx
mov byte [esp + 0x24], bl
call fcn.00405920
xor ecx, ecx
push ebx
mov word [esp + 0x58], cx
push 0x7b428c
lea ecx, [esp + 0x58]
mov byte [esp + 0x1d0], 0xa
mov dword [esp + 0x70], esi
mov dword [esp + 0x6c], ebx
call fcn.00405ef2
push ebx
xor edx, edx
push 0x7b4290
lea ecx, [esp + 0x3c]
mov byte [esp + 0x1d0], 0xb
mov dword [esp + 0x54], esi
mov dword [esp + 0x50], ebx
mov word [esp + 0x40], dx
call fcn.00405ef2
lea eax, [esp + 0x7c]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x80]
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x40]
push eax
mov byte [esp + 0x1d8], 0xc
call fcn.00403b66
cmp dword [esp + 0x4c], ebp
jb 0x4ac7b0
mov ecx, dword [esp + 0x38]
push ecx
call fcn.00564155
add esp, 4
xor edx, edx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x48], ebx
mov word [esp + 0x38], dx
cmp dword [esp + 0x68], ebp
jb 0x4ac7d2
mov eax, dword [esp + 0x54]
push eax
call fcn.00564155
add esp, 4
mov dword [esp + 0x68], esi
xor ecx, ecx
mov esi, 0x10
mov dword [esp + 0x64], ebx
mov word [esp + 0x54], cx
cmp dword [esp + 0x30], esi
jb 0x4ac7f9
mov edx, dword [esp + 0x1c]
push edx
call fcn.00564155
add esp, 4
mov dword [esp + 0x30], edi
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1c], bl
mov byte [esp + 0x1c8], bl
cmp dword [esp + 0x94], esi
jb 0x4ac825
mov eax, dword [esp + 0x80]
push eax
call fcn.00564155
add esp, 4
mov edi, 0xf
lea eax, [esp + 0xb8]
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb0], ebx
mov byte [esp + 0xa0], bl
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4ac850
sub eax, edx
push eax
lea ecx, [esp + 0xbc]
push ecx
lea ecx, [esp + 0xa4]
call fcn.00405920
mov esi, dword [esp + 0xb0]
mov dword [esp + 0x1c8], 0xd
mov ecx, esi
cmp esi, ebp
jb 0x4ac888
mov ecx, ebp
cmp dword [esp + 0xb4], 0x10
mov eax, dword [esp + 0xa0]
jae 0x4ac8a0
lea eax, [esp + 0xa0]
push ecx
push 0x7b4294
push eax
call fcn.004060b9
add esp, 0xc
cmp eax, ebx
jne 0x4ac8c6
cmp esi, ebp
jb 0x4ac8ca
xor eax, eax
cmp esi, ebp
setne al
cmp eax, ebx
je 0x4ac993
cmp esi, ebp
jae 0x4ac8ce
mov ecx, esi
jmp 0x4ac8d0
mov ecx, ebp
cmp dword [esp + 0xb4], 0x10
mov eax, dword [esp + 0xa0]
jae 0x4ac8e8
lea eax, [esp + 0xa0]
push ecx
push 0x7b42a0
push eax
call fcn.004060b9
add esp, 0xc
cmp eax, ebx
jne 0x4ac90e
cmp esi, ebp
jb 0x4ac90e
xor eax, eax
cmp esi, ebp
setne al
cmp eax, ebx
je 0x4ac993
push ebp
push 0x7b42ac
push esi
push ebx
lea ecx, [esp + 0xac]
call fcn.00408076
test eax, eax
je 0x4ac993
lea eax, [esp + 0xb8]
mov dword [esp + 0x94], edi
mov dword [esp + 0x90], ebx
mov byte [esp + 0x80], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4ac945
sub eax, edx
push eax
lea edx, [esp + 0xbc]
push edx
lea ecx, [esp + 0x84]
call fcn.00405920
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x7c]
push eax
mov byte [esp + 0x1cc], 0xe
call fcn.00403b57
cmp dword [esp + 0x94], 0x10
jb 0x4ac993
mov ecx, dword [esp + 0x80]
push ecx
call fcn.00564155
add esp, 4
inc dword [esp + 0x74]
cmp dword [esp + 0xb4], 0x10
mov dword [esp + 0x70], 0x104
mov byte [esp + 0x1c8], bl
jb 0x4ac9c0
mov edx, dword [esp + 0xa0]
push edx
call fcn.00564155
add esp, 4
mov edx, dword [esp + 0x74]
push ebx
push ebx
push ebx
push ebx
lea eax, [esp + 0x80]
push eax
mov eax, dword [esp + 0x80]
lea ecx, [esp + 0xcc]
push ecx
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
je 0x4ac3aa
mov esi, dword [esp + 0x14]
mov edi, dword [esi + 0x10]
cmp dword [esi + 0xc], edi
jbe 0x4aca00
call fcn.00565471
mov ebp, dword [esi]
mov esi, dword [esi + 0xc]
mov ecx, dword [esp + 0x14]
cmp esi, dword [ecx + 0x10]
jbe 0x4aca13
call fcn.00565471
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
cmp ebp, ebx
je 0x4aca21
cmp ebp, eax
je 0x4aca26
call fcn.00565471
mov ecx, edi
sub ecx, esi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push edi
push esi
call fcn.00407c57
mov ecx, dword [esp + 0x78]
add esp, 0xc
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x14]
jmp 0x4aca5b
mov eax, esi
mov ecx, dword [esp + 0x1c0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x1a8]
xor ecx, esp
call fcn.00564b24
add esp, 0x1b8
ret 0x10