Function at 0x404023
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 [0x421050]
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.00403c92
test eax, eax
jne 0x40405b
xor eax, eax
jmp 0x4042a4
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 0x4040eb
push eax
push str.Could_not_open_key.____d_
call fcn.0040101c
push eax
call fcn.00404bd5
add esp, 0xc
lea eax, [esp + 0x14]
push eax
push 0x20119
push esi
push str.SOFTWAREMozillaMaintenanceService3932ecacee736d366d6436db0f55bce4
push 0x80000002
call ebx
test eax, eax
je 0x4040cc
push eax
push str.Could_not_open_fallback_key.____d_
call fcn.0040101c
push eax
call fcn.00404bd5
add esp, 0xc
jmp 0x404054
cmp dword [ebp + 8], esi
je 0x4040eb
push str.Fallback_key_present__skipping_VerifyCertificateTrustForFile_check_and_the_certificate_attribute_registry_matching_check.
call fcn.0040101c
push eax
call fcn.00404bd5
pop ecx
pop ecx
xor esi, esi
inc esi
jmp 0x40429c
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 0x404117
push eax
push str.Could_not_query_info_key.____d_
jmp 0x40428e
mov ebx, esi
cmp dword [esp + 0x1c], ebx
jbe 0x40429c
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 0x404288
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 0x404189
push eax
push str.Could_not_open_subkey.____d_
call fcn.0040101c
push eax
call fcn.00404bd5
add esp, 0xc
jmp 0x40427b
xor eax, eax
mov dword [esp + 0x18], 0x200
push 0x1fe
mov word [esp + 0x34], ax
lea eax, [esp + 0x36]
push esi
push eax
call fcn.0040bc00
add esp, 0xc
xor eax, eax
mov word [esp + 0x230], ax
lea eax, [esp + 0x232]
push 0x1fe
push esi
push eax
call fcn.0040bc00
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 0x4041f2
push eax
push str.Could_not_obtain_name_from_registry.____d_
jmp 0x404267
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 0x404224
push eax
push str.Could_not_obtain_issuer_from_registry.____d_
jmp 0x404267
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.00403776
test eax, eax
je 0x404250
push eax
push str.Error_on_certificate_check.____d_
jmp 0x404267
mov ecx, dword [esp + 0x20]
call fcn.00403ab4
test eax, eax
je 0x4040e3
push eax
push str.Error_on_certificate_trust_check.____d_
call fcn.0040101c
push eax
call fcn.00404bd5
add esp, 0xc
push dword [esp + 0x10]
call edi
inc ebx
cmp ebx, dword [esp + 0x1c]
jb 0x404123
jmp 0x40429c
push eax
push str.Could_not_enum_certs.____d_
call fcn.0040101c
push eax
call fcn.00404bd5
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.00404d91
mov esp, ebp
pop ebp
ret