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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x83c
mov eax, dword [0x429010]
xor eax, esp
mov dword [esp + 0x838], eax
push ebx
push esi
mov dword [esp + 0x1c], edx
lea edx, [esp + 0x62c]
push edi
call fcn.004041c7
test eax, eax
jne 0x404578
xor eax, eax
jmp 0x4047ad
mov ebx, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
lea eax, [esp + 0x14]
push eax
push 0x20119
xor esi, esi
lea eax, [esp + 0x638]
push esi
push eax
push 0x80000002
call ebx
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
je 0x404608
push eax
push str.Could_not_open_key.____d_
call fcn.00401034
push eax
call fcn.004049e5
add esp, 0xc
lea eax, [esp + 0x14]
push eax
push 0x20119
push esi
push str.SOFTWAREMozillaMaintenanceService3932ecacee736d366d6436db0f55bce4
push 0x80000002
call ebx
test eax, eax
je 0x4045e9
push eax
push str.Could_not_open_fallback_key.____d_
call fcn.00401034
push eax
call fcn.004049e5
add esp, 0xc
jmp 0x404571
cmp dword [ebp + 8], esi
je 0x404608
push str.Fallback_key_present__skipping_VerifyCertificateTrustForFile_check_and_the_certificate_attribute_registry_matching_check.
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
xor esi, esi
inc esi
jmp 0x4047a5
push esi
push esi
push esi
push esi
push esi
push esi
push esi
lea eax, [esp + 0x38]
mov dword [esp + 0x38], esi
push eax
push esi
push esi
push esi
push dword [esp + 0x40]
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
je 0x404634
push eax
push str.Could_not_query_info_key.____d_
jmp 0x404797
mov ebx, esi
cmp dword [esp + 0x1c], ebx
jbe 0x4047a5
push esi
push esi
push esi
push esi
lea eax, [esp + 0x34]
mov dword [esp + 0x34], 0xff
push eax
lea eax, [esp + 0x444]
push eax
push ebx
push dword [esp + 0x30]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x404791
lea eax, [esp + 0x10]
push eax
push 0x20119
push esi
lea eax, [esp + 0x43c]
push eax
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x4046a6
push eax
push str.Could_not_open_subkey.____d_
call fcn.00401034
push eax
call fcn.004049e5
add esp, 0xc
jmp 0x404784
mov eax, 0x200
push eax
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x34]
push esi
push eax
call fcn.00406960
add esp, 0xc
lea eax, [esp + 0x230]
push 0x200
push esi
push eax
call fcn.00406960
add esp, 0xc
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x34]
push eax
push esi
push esi
push str.name
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x4046fb
push eax
push str.Could_not_obtain_name_from_registry.____d_
jmp 0x404770
lea eax, [esp + 0x18]
mov dword [esp + 0x18], 0x200
push eax
lea eax, [esp + 0x234]
push eax
push esi
push esi
push str.issuer
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x40472d
push eax
push str.Could_not_obtain_issuer_from_registry.____d_
jmp 0x404770
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x30]
mov dword [esp + 0x28], eax
lea edx, [esp + 0x28]
lea eax, [esp + 0x230]
mov dword [esp + 0x2c], eax
call fcn.00403ccc
test eax, eax
je 0x404759
push eax
push str.Error_on_certificate_check.____d_
jmp 0x404770
mov ecx, dword [esp + 0x20]
call fcn.00403ff0
test eax, eax
je 0x404600
push eax
push str.Error_on_certificate_trust_check.____d_
call fcn.00401034
push eax
call fcn.004049e5
add esp, 0xc
push dword [esp + 0x10]
call edi
inc ebx
cmp ebx, dword [esp + 0x1c]
jb 0x404640
jmp 0x4047a5
push eax
push str.Could_not_enum_certs.____d_
call fcn.00401034
push eax
call fcn.004049e5
add esp, 0xc
push dword [esp + 0x14]
call edi
mov eax, esi
mov ecx, dword [esp + 0x844]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004053fc
mov esp, ebp
pop ebp
ret