Function at 0x4069e0
Capabilities:
Get common file path
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xc6c
mov eax, dword [0x828208]
xor eax, esp
mov dword [esp + 0xc68], eax
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
push 0x8489d0
mov dword [esp + 0x18], 0
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
push 0x8489d8
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
push 0x4da4c2
mov bl, 1
mov dword [esp + 0x10], 0
call dword [sym.imp.KERNEL32.dll_SetDllDirectoryA]
test eax, eax
je 0x406c04
lea eax, [esp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
test eax, eax
je 0x406b14
cmp dword [esp + 0xc], 0
push 0x200
je 0x406aa8
lea eax, [esp + 0x74]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemWow64DirectoryA]
test eax, eax
je 0x406afb
lea ecx, [esp + 0x70]
lea edx, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x406a80
sub ecx, edx
lea eax, [ecx + 1]
push eax
lea eax, [esp + 0x74]
push eax
lea eax, [esp + 0x478]
push eax
call fcn.0049a5b2
lea eax, [esp + 0x47c]
jmp 0x406aed
lea eax, [esp + 0x274]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
je 0x406afb
lea ecx, [esp + 0x270]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x406ac4
sub ecx, edx
lea eax, [ecx + 1]
push eax
lea eax, [esp + 0x274]
push eax
lea eax, [esp + 0x878]
push eax
call fcn.0049a5b2
lea eax, [esp + 0x87c]
add esp, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_AddDllDirectory]
test eax, eax
jne 0x406afd
xor bl, bl
push 0x400
call dword [sym.imp.KERNEL32.dll_SetDefaultDllDirectories]
test eax, eax
je 0x406b14
test bl, bl
jne 0x406c04
push 0x50
lea eax, [esp + 0x24]
push 0
push eax
call fcn.0048ff50
add esp, 0xc
push 0x200
push 0x875c30
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0xc]
push eax
lea eax, [esp + 0x14]
push eax
push 1
push esi
call fcn.0042b500
mov ecx, eax
add esp, 0x10
mov esi, 0xa
test ecx, ecx
jne 0x406b65
cmp dword [esp + 0x10], 1
sete cl
jne 0x406be8
mov eax, dword [esp + 0xc]
mov dword [eax], 0x875c30
test ecx, ecx
je 0x406be8
mov edx, dword [esp + 0xc]
lea eax, [esp + 0x20]
mov ecx, dword [esp + 0x10]
push eax
call fcn.00401680
add esp, 4
test al, al
je 0x406be8
cmp byte [esp + 0x20], 0
jne 0x406bc2
cmp byte [esp + 0x23], 0
jne 0x406bc2
push 0x10
push str.FlashUiWin
push str.Your_security_settings_could_not_be_detected._Try_restarting_your_system_and_running_the_update_again.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [0x867ad0]
test eax, eax
cmove eax, esi
mov dword [0x867ad0], eax
jmp 0x406daa
lea eax, [esp + 0x20]
push str.Your_security_settings_could_not_be_detected._Try_restarting_your_system_and_running_the_update_again._n
push eax
call fcn.0040abf0
mov eax, dword [0x867ad0]
add esp, 8
test eax, eax
cmove eax, esi
mov dword [0x867ad0], eax
jmp 0x406daa
cmp dword [0x867ad0], 0
jne 0x406daa
mov dword [0x867ad0], 0x100
jmp 0x406daa
push 0x4da4c2
push 0
call fcn.0049a2d7
push 0xfffffffffffffffc
call fcn.0049abfd
add esp, 0xc
push 0x200
push 0x8487d0
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov ecx, 0x8489e0
sub ecx, esi
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [ecx + esi - 1], al
test al, al
jne 0x406c33
mov byte [0x837fae], al
lea eax, [esp + 0x10]
push eax
push str.SystemControlSet001ControlMiniNT
push 0x80000002
mov dword [esp + 0x1c], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
jne 0x406c79
push dword [esp + 0x10]
mov byte [0x837fae], 1
call esi
cmp byte [0x837fae], 0
jne 0x406cfa
lea eax, [esp + 0xc]
mov dword [esp + 0xc], 0
push eax
push 1
push 0
push str.SoftwareMicrosoftNET_Framework_SetupNDP_v4Full
push 0x80000002
mov dword [esp + 0x30], 4
xor bl, bl
mov dword [esp + 0x24], 0
mov dword [esp + 0x2c], 4
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x406cf0
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x24]
push eax
push 0
push str.Install
push dword [esp + 0x20]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov eax, 1
movzx ebx, bl
cmp dword [esp + 0x10], eax
cmove ebx, eax
push dword [esp + 0xc]
call esi
test bl, bl
jne 0x406d01
mov byte [0x837fad], 1
push str.GlobalDELL_BIOS_FLASH_LOGGING_MUTEX
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
push 0
xor edx, edx
lea ecx, [esp + 0x18]
mov ebx, eax
call fcn.00417680
push str.Before_FLASH_EXIT_PROCESS_ITEM_n
push 0x848ae0
xor edi, edi
call fcn.0040adc0
add esp, 0xc
mov esi, 0x828e20
mov eax, dword [esi]
test eax, eax
je 0x406d85
cmp dword [esi + 4], 0
je 0x406d7d
push eax
push str.Before_FLASH_EXIT_PROCESS_ITEM:__08x_n
push 0x848ae0
call fcn.0040adc0
push 0
push 0
lea eax, [esp + 0x28]
push 0x848ae0
push eax
mov eax, dword [esi + 8]
call eax
push dword [esi]
mov edi, eax
push str.After_FLASH_EXIT_PROCESS_ITEM:__08x_n
push 0x848ae0
call fcn.0040adc0
add esp, 0x28
add esi, 0xc
cmp edi, 1
jne 0x406d38
push str.After_FLASH_EXIT_PROCESS_ITEM_n
push 0x848ae0
call fcn.0040adc0
add esp, 8
call fcn.004178a0
mov esi, eax
call fcn.0040d440
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0xc74]
mov eax, esi
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0048980e
mov esp, ebp
pop ebp
ret 0x10