Function at 0x405af3
Capabilities:
Check os version
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x354
mov eax, dword [0x4a6074]
xor eax, esp
mov dword [esp + 0x350], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
push ecx
push ecx
mov dword [esp + 0x24], eax
call fcn.00405ac3
pop ecx
mov eax, esp
mov esi, 0x492644
push ecx
mov dword [eax], 0x492624
mov eax, esp
mov dword [eax], esi
call fcn.004031a6
mov ecx, eax
call fcn.0040deff
test eax, eax
je 0x406608
push ecx
mov eax, esp
push ecx
mov dword [eax], 0x49264c
mov eax, esp
mov dword [eax], esi
call fcn.004031a6
mov ecx, eax
call fcn.0040deff
test eax, eax
je 0x406608
call fcn.004031a6
mov ecx, eax
call fcn.00401ae9
mov ebx, eax
mov edx, str.global_install_mutex_guid
mov ecx, ebx
call fcn.0041f340
xor edi, edi
or edx, 0xffffffff
push edi
mov ecx, ebx
call fcn.0041ee90
pop ecx
mov edx, eax
lea ecx, [esp + 0x30]
call fcn.00403c5d
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
mov edx, 0x492688
call fcn.0041f340
push edi
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041ec50
pop ecx
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
mov esi, eax
call fcn.0041e600
mov ecx, dword [esp + 0x30]
cmp dword [ecx - 0xc], edi
je 0x405be4
push 0x49248c
push ecx
call fcn.00459de3
pop ecx
pop ecx
test eax, eax
je 0x405be4
mov esi, edi
jmp 0x405bfd
mov edi, str.GlobalA043B702_166A_4FB8_9733_E2BC4713F36F
push edi
call fcn.0045631c
pop ecx
push eax
push edi
lea ecx, [esp + 0x38]
call fcn.00401d4a
xor edi, edi
mov ecx, dword [esp + 0x30]
push esi
call fcn.004012fd
pop ecx
test eax, eax
jne 0x4065f5
push edi
call dword [sym.imp.ole32.dll_CoInitialize]
call fcn.00406687
push edi
push edi
push edi
push edi
call dword [sym.imp.USER32.dll_DefWindowProcW]
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 8
push eax
mov dword [esp + 0x1c], 4
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
sub esp, 0xc
call fcn.00406f63
lea eax, [esp + 0x88]
mov dword [esp + 0x88], vtable.std::_Func_impl_no_alloc_class__lambda_ee8cfc33ba922a5d7f362c026e03dcf3___void___.0
push eax
lea ecx, [esp + 0x20c]
mov dword [esp + 0xb0], eax
call fcn.00405801
mov ecx, dword [esp + 0xac]
test ecx, ecx
je 0x405c8f
mov edx, dword [ecx]
lea eax, [esp + 0x88]
cmp ecx, eax
setne al
movzx eax, al
push eax
call dword [edx + 0x10]
mov edx, str.DTLSE_BeforeInit
mov ecx, ebx
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041e900
cmp eax, 6
jne 0x405cb9
call fcn.004031a6
push edi
push edi
push ebx
call fcn.0040e43b
jmp 0x405cc3
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
mov edx, 0x492724
mov ecx, ebx
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041ee10
mov edi, eax
mov ecx, ebx
push 0xfffffffffffffffe
pop edx
mov dword [esp + 0x3c], edi
call fcn.0041e600
mov edx, str.global_show_completewindow
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041ee10
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
mov dword [esp + 0x14], eax
call fcn.0041e600
xor eax, eax
lea ecx, [esp + 0x140]
mov esi, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x38], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x140], eax
mov dword [esp + 0x144], eax
call fcn.0041dd90
test edi, edi
je 0x405d43
cmp dword [esp + 0x14], esi
je 0x405e28
push ecx
mov eax, esp
push ecx
lea ecx, [esp + 0x28]
mov dword [eax], str.LAYOUT.XML
mov eax, esp
mov dword [eax], 0x492770
call fcn.00406f0a
mov esi, dword [esp + 0x20]
test al, al
je 0x4063bc
push esi
mov dword [esp + 0x3c], esi
call dword [sym.imp.KERNEL32.dll_LockResource]
mov edi, eax
test edi, edi
je 0x4063bc
push dword [esp + 0x24]
push dword [0x4a7a98]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov dword [esp + 0x10], eax
test eax, eax
je 0x4063bc
lea eax, [esp + 0x88]
push eax
push 0x492a40
push dword [esp + 0x24]
call dword [sym.imp.USER32.dll_GetClassInfoW]
lea eax, [esp + 0x88]
mov dword [esp + 0xac], str.Dtl_Installer
push eax
call dword [sym.imp.USER32.dll_RegisterClassW]
sub esp, 0x10
lea eax, [esp + 0x30]
lea ecx, [esp + 0x150]
push dword [esp + 0x20]
push edi
push eax
call fcn.0041de90
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x405e18
cmp ecx, 0xe
ja 0x405df8
call fcn.0041dce0
jmp 0x405dfd
mov eax, str.Unknown_error
push eax
lea ecx, [esp + 0x18]
call fcn.00406ebb
mov ecx, dword [esp + 0x14]
lea ecx, [ecx - 0x10]
call fcn.00401aec
jmp 0x4063bc
test esi, esi
je 0x405e28
push esi
call dword [sym.imp.KERNEL32.dll_FreeResource]
and dword [esp + 0x38], 0
mov edx, 0x49235c
mov ecx, ebx
call fcn.0041f340
push 0
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041ee90
pop ecx
mov edx, eax
lea ecx, [esp + 0x2c]
call fcn.00403c5d
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
mov esi, 0x11c
lea eax, [esp + 0x238]
push esi
push 0
push eax
call fcn.0044cd20
add esp, 0xc
mov dword [esp + 0x238], esi
lea eax, [esp + 0x238]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x4063ac
mov esi, dword [esp + 0x23c]
and dword [esp + 0x34], 0
call fcn.00401830
push eax
lea ecx, [esp + 0x10]
call fcn.00401666
mov eax, str.SoftwareMicrosoftWindowsCurrentVersionExplorerUserAssist75048700_EF1F_11D0_9888_006097DEACF9Count
cmp esi, 5
mov edi, str.SoftwareMicrosoftWindowsCurrentVersionExplorerUserAssistF4E57C4B_2036_45F0_A9AB_443BCFE33D9FCount
cmovbe edi, eax
push edi
call fcn.0045631c
pop ecx
push eax
push edi
lea ecx, [esp + 0x14]
call fcn.00401d4a
mov esi, dword [esp + 0xc]
lea eax, [esp + 0x34]
push eax
push 0x20019
push 0
push esi
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x405f3a
cmp dword [esi - 4], 1
jle 0x405efe
push dword [esi - 0xc]
lea ecx, [esp + 0x10]
call fcn.00401b04
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x2c]
cmp dword [edi - 4], 1
jle 0x405f18
push dword [edi - 0xc]
lea ecx, [esp + 0x30]
call fcn.00401b04
mov edi, dword [esp + 0x2c]
sub esp, 0x18
mov ecx, esp
push esi
call fcn.00406658
sub esp, 0x18
mov ecx, esp
push edi
call fcn.00406658
mov ecx, dword [esp + 0x64]
call fcn.004058bf
add esp, 0x30
push dword [esp + 0x34]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, str.is_upgrade
mov ecx, ebx
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041ee10
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
mov dword [esp + 0x1c], eax
call fcn.0041e600
cmp dword [esp + 0x3c], 0
mov edi, dword [sym.imp.USER32.dll_ShowWindow]
je 0x40604a
mov edx, str.global_install_path
call fcn.0041f340
push 0
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041ee90
pop ecx
mov edx, eax
lea ecx, [esp + 0x20]
call fcn.00403c5d
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0xc]
call fcn.00406dbe
mov edx, dword [esp + 0xc]
mov ecx, ebx
call fcn.0041f130
mov ecx, dword [esp + 0xc]
lea ecx, [ecx - 0x10]
call fcn.00401aec
mov edx, 0x492934
mov ecx, ebx
call fcn.0041f610
mov edx, str.DTLSE_BeforeInstall
mov ecx, ebx
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041e900
cmp eax, 6
jne 0x406001
call fcn.004031a6
push 0
push 0
push ebx
call fcn.0040e43b
jmp 0x40600b
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
mov edx, str.DTLSE_OnInstall
mov ecx, ebx
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041e900
cmp eax, 6
jne 0x406037
call fcn.004031a6
push 0
push 0
push ebx
call fcn.0040e43b
jmp 0x406041
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
mov ecx, dword [esp + 0x20]
jmp 0x4061fd
cmp dword [esp + 0x1c], 0
je 0x40620a
mov edx, str.global_install_path
call fcn.0041f340
push 0
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041ee90
pop ecx
mov edx, eax
lea ecx, [esp + 0xc]
call fcn.00403c5d
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
mov edx, dword [esp + 0xc]
lea ecx, [esp + 0x20]
call fcn.00406dbe
mov edx, dword [esp + 0x20]
mov ecx, ebx
call fcn.0041f130
mov ecx, dword [esp + 0x20]
lea ecx, [ecx - 0x10]
call fcn.00401aec
mov edx, 0x492934
mov ecx, ebx
call fcn.0041f610
mov edx, str.DTLSE_BeforeInstall
mov ecx, ebx
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041e900
cmp eax, 6
jne 0x4060dd
call fcn.004031a6
push 0
push 0
push ebx
call fcn.0040e43b
jmp 0x4060e7
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
push str.UpdateInstallDlg
push ecx
push ecx
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x30]
push eax
lea ecx, [esp + 0x154]
call fcn.0041db20
mov ecx, eax
call fcn.0041db40
cmp dword [esp + 0x10], 0
je 0x406181
and dword [esp + 0x9c], 0
lea eax, [esp + 0x88]
and dword [esp + 0xa0], 0
xorps xmm0, xmm0
push eax
mov dword [esp + 0x8c], vtable.WTL::CMessageLoop.0
movups xmmword [esp + 0x90], xmm0
call fcn.00406d03
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x44]
call fcn.0041bc17
push 0
push 0
lea ecx, [esp + 0x50]
call fcn.00406a39
test eax, eax
jne 0x406192
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea ecx, [esp + 0x40]
call fcn.0041bcc6
lea ecx, [esp + 0x88]
call fcn.00406621
mov ecx, dword [esp + 0xc]
lea ecx, [ecx - 0x10]
call fcn.00401aec
jmp 0x4063a4
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.004069e9
push 0
push 0x40689d
push 0
push 0x81
push dword [0x4a7a98]
call dword [sym.imp.USER32.dll_CreateDialogParamW]
test eax, eax
je 0x40616c
push 1
push dword [esp + 0x48]
call edi
lea ecx, [esp + 0x88]
call fcn.00406bff
cmp eax, 1
je 0x4061df
call fcn.00406b12
jmp 0x40616c
call fcn.00406b12
lea ecx, [esp + 0x40]
call fcn.0041bcc6
lea ecx, [esp + 0x88]
call fcn.00406621
mov ecx, dword [esp + 0xc]
lea ecx, [ecx - 0x10]
call fcn.00401aec
jmp 0x40645e
push str.InitDlg
push ecx
push ecx
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x154]
call fcn.0041db20
mov ecx, eax
call fcn.0041db40
cmp dword [esp + 0x10], 0
je 0x4063a4
and dword [esp + 0x9c], 0
lea eax, [esp + 0x88]
and dword [esp + 0xa0], 0
xorps xmm0, xmm0
push eax
mov dword [esp + 0x8c], vtable.WTL::CMessageLoop.0
movups xmmword [esp + 0x90], xmm0
call fcn.00406d03
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0xc4]
call fcn.00409f6d
push 0
push 0
lea ecx, [esp + 0xd0]
call fcn.00406a39
test eax, eax
jne 0x40629e
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x40638c
lea eax, [esp + 0xc0]
push eax
lea eax, [esp + 0xcc]
push eax
call fcn.004069e9
push 0
push 0x40689d
push 0
push 0x81
push dword [0x4a7a98]
call dword [sym.imp.USER32.dll_CreateDialogParamW]
test eax, eax
je 0x40638c
push 1
push dword [esp + 0xc8]
call edi
lea ecx, [esp + 0x88]
call fcn.00406bff
cmp eax, 1
je 0x4062fb
call fcn.00406b12
jmp 0x40638c
mov edx, str.DTLSE_BeforeInstall
mov ecx, ebx
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041e900
cmp eax, 6
jne 0x406327
call fcn.004031a6
push 0
push 0
push ebx
call fcn.0040e43b
jmp 0x406331
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
push str.InstallDlg
push ecx
push ecx
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x154]
call fcn.0041db20
mov ecx, eax
call fcn.0041db40
cmp dword [esp + 0x20], 0
je 0x40638c
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x44]
call fcn.00409282
push 0
push 0
lea ecx, [esp + 0x50]
call fcn.00406a39
test eax, eax
jne 0x4063e4
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea ecx, [esp + 0x40]
call fcn.00409331
lea ecx, [esp + 0xc0]
call fcn.0040a096
lea ecx, [esp + 0x88]
call fcn.00406621
lea ecx, [esi - 0x10]
call fcn.00401aec
mov ecx, dword [esp + 0x2c]
lea ecx, [ecx - 0x10]
call fcn.00401aec
mov esi, dword [esp + 0x38]
lea ecx, [esp + 0x140]
call fcn.0041de20
test esi, esi
je 0x4063d3
push esi
call dword [sym.imp.KERNEL32.dll_FreeResource]
lea ecx, [esp + 0x208]
call fcn.0040583d
jmp 0x4065fc
lea eax, [esp + 0x40]
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.004069e9
push 0
push 0x40689d
push 0
push 0x81
push dword [0x4a7a98]
call dword [sym.imp.USER32.dll_CreateDialogParamW]
test eax, eax
je 0x406383
push 1
push dword [esp + 0x48]
call edi
lea ecx, [esp + 0x88]
call fcn.00406bff
cmp eax, 1
je 0x406438
call fcn.00406b12
jmp 0x406383
call fcn.00406b12
lea ecx, [esp + 0x40]
call fcn.00409331
lea ecx, [esp + 0xc0]
call fcn.0040a096
lea ecx, [esp + 0x88]
call fcn.00406621
mov edx, str.DTLSE_BeforeComplete
mov ecx, ebx
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041e900
cmp eax, 6
jne 0x40648a
call fcn.004031a6
push 0
push 0
push ebx
call fcn.0040e43b
jmp 0x406494
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
cmp dword [esp + 0x1c], 0
jne 0x4065b7
cmp dword [esp + 0x3c], 0
jne 0x4065b7
cmp dword [esp + 0x14], 0
je 0x4065b7
push str.CompleteDlg
push ecx
push ecx
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x154]
call fcn.0041db20
mov ecx, eax
call fcn.0041db40
cmp dword [esp + 0x14], 0
je 0x4063a4
and dword [esp + 0x54], 0
lea eax, [esp + 0x40]
and dword [esp + 0x58], 0
xorps xmm0, xmm0
push eax
mov dword [esp + 0x44], vtable.WTL::CMessageLoop.0
movups xmmword [esp + 0x48], xmm0
call fcn.00406d03
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x8c]
call fcn.004020f8
push 0
push 0
lea ecx, [esp + 0x98]
call fcn.00406a39
test eax, eax
jne 0x40654a
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
lea ecx, [esp + 0x88]
call fcn.00402147
lea ecx, [esp + 0x40]
jmp 0x40639f
lea eax, [esp + 0x88]
push eax
lea eax, [esp + 0x94]
push eax
call fcn.004069e9
push 0
push 0x40689d
push 0
push 0x81
push dword [0x4a7a98]
call dword [sym.imp.USER32.dll_CreateDialogParamW]
test eax, eax
je 0x406535
push 1
push dword [esp + 0x90]
call edi
lea ecx, [esp + 0x40]
call fcn.00406bff
cmp eax, 1
je 0x40659d
call fcn.00406b12
jmp 0x406535
call fcn.00406b12
lea ecx, [esp + 0x88]
call fcn.00402147
lea ecx, [esp + 0x40]
call fcn.00406621
mov edx, str.DTLSE_AfterComplete
mov ecx, ebx
call fcn.0041f340
or edx, 0xffffffff
mov ecx, ebx
call fcn.0041e900
cmp eax, 6
jne 0x4065e6
call fcn.004031a6
push 0
push 0
push ebx
call fcn.0040e43b
jmp 0x4063a4
push 0xfffffffffffffffe
pop edx
mov ecx, ebx
call fcn.0041e600
jmp 0x4063a4
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0x30]
lea ecx, [ecx - 0x10]
call fcn.00401aec
mov ecx, dword [esp + 0x35c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0044b0c6
mov esp, ebp
pop ebp
ret 0x10