Function at 0x443920
Capabilities:
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b79ca
mov eax, dword fs:[0]
push eax
mov eax, 0x24b0
call fcn.0059a600
mov eax, dword [0x6319d0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x24a0], ecx
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x24b8], edi
mov dword [ebp - 0x24bc], eax
mov dword [ebp - 0x249c], ecx
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x443990
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x2498], eax
push esi
lea ecx, [ebp - 0x2494]
mov dword [ebp - 4], 0
call fcn.00407f40
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.COMMAND_LINE
push edi
lea ecx, [ebp - 0x2494]
mov byte [ebp - 4], 1
call fcn.00433f80
test eax, eax
je 0x4439fc
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4439e0
sub eax, edx
push eax
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea eax, [ebp - 0x114]
push eax
push str.DisableSplashScreenDlgBox
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443a2c
push 3
push 0x5d42d4
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.DisableInitialInstallProgBar
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443a5c
push 3
push 0x5d42b0
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea edx, [ebp - 0x114]
push edx
push str.DisableInitialUninstallProgBar
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443a8c
push 3
push 0x5d42b0
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea eax, [ebp - 0x114]
push eax
push str.DisableInitialInstallDlgBox
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443abc
push 3
push 0x5d4270
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.DisableInitialUninstallDlgBox
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443aec
push 3
push 0x5d4270
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea edx, [ebp - 0x114]
push edx
push str.DisableInstallProgBar
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443b1c
push 3
push 0x5d4234
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea eax, [ebp - 0x114]
push eax
push str.DisableInstallProgBar
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443b4c
push 3
push 0x5d4234
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.DisableFinalInstallDlgBox
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443b7c
push 3
push 0x5d4214
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea edx, [ebp - 0x114]
push edx
push str.DisableFinalUninstallDlgBox
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443bac
push 3
push 0x5d4214
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea eax, [ebp - 0x114]
push eax
push str.EnableStandardProgBar
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443bdc
push 4
push str._PB0
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.EnableBusyProgBar
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443c0c
push 4
push str._PB1
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea edx, [ebp - 0x114]
push edx
push str.DisableStatusUpgrade
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
mov ebx, 5
test eax, eax
je 0x443c40
push ebx
push str._GDSU
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea eax, [ebp - 0x114]
push eax
push str.DisplaySuccessResultOnly
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443c6f
push ebx
push str._GDSO
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.HSFInstallPathAC97
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443dda
push 0x5cd28c
lea ecx, [ebp - 0x24a4]
call fcn.00403380
mov esi, eax
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x24a8]
mov byte [ebp - 4], 2
call fcn.00403380
mov edi, eax
mov eax, dword [ebp - 0x24a0]
add eax, 0x4bf0
push eax
lea ecx, [ebp - 0x24ac]
mov byte [ebp - 4], 3
call fcn.00403380
push edi
push eax
lea ecx, [ebp - 0x24b4]
push ecx
mov byte [ebp - 4], 4
call fcn.00402910
push esi
push eax
lea edx, [ebp - 0x24b0]
push edx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0x18
mov esi, dword [ebp - 0x249c]
push eax
lea ecx, [esi + 0x1c]
mov byte [ebp - 4], 6
call fcn.00402af0
mov eax, dword [ebp - 0x24b0]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443d34
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24b4]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443d5a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24ac]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443d80
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24a8]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443da6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24a4]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443dcc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esi + 0x1c]
call fcn.004027d0
mov edi, dword [ebp - 0x24b8]
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.HSPInstallPathAC97
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443f47
push 0x5cd28c
lea ecx, [ebp - 0x24b0]
call fcn.00403380
mov esi, eax
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebp - 0x24b4]
mov byte [ebp - 4], 7
call fcn.00403380
mov edi, eax
mov eax, dword [ebp - 0x24a0]
add eax, 0x4bf0
push eax
lea ecx, [ebp - 0x24ac]
mov byte [ebp - 4], 8
call fcn.00403380
push edi
push eax
lea ecx, [ebp - 0x24a8]
push ecx
mov byte [ebp - 4], 9
call fcn.00402910
push esi
push eax
lea edx, [ebp - 0x24a4]
mov bl, 0xa
push edx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0x18
mov esi, dword [ebp - 0x249c]
push eax
lea ecx, [esi + 0x20]
mov byte [ebp - 4], 0xb
call fcn.00402af0
mov eax, dword [ebp - 0x24a4]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443ea1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24a8]
add eax, 0xfffffff0
mov byte [ebp - 4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443ec7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24ac]
add eax, 0xfffffff0
mov byte [ebp - 4], 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443eed
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24b4]
add eax, 0xfffffff0
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443f13
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24b0]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x443f39
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esi + 0x20]
call fcn.004027d0
mov edi, dword [ebp - 0x24b8]
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.HDAudioBusQFEName
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
mov ebx, dword [ebp - 0x249c]
test eax, eax
je 0x443f95
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x443f74
sub eax, edx
push eax
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebx + 0x24]
call fcn.004026b0
lea ecx, [ebx + 0x24]
call fcn.004027d0
push 1
lea eax, [ebp - 0x114]
push eax
push str.HDAudioBusDriverName
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x443fe1
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x443fc0
sub eax, edx
push eax
lea ecx, [ebp - 0x114]
push ecx
lea ecx, [ebx + 0x28]
call fcn.004026b0
lea ecx, [ebx + 0x28]
call fcn.004027d0
push 1
lea edx, [ebp - 0x114]
push edx
push str.CnxtCrossCert
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x444026
lea eax, [ebp - 0x114]
lea ecx, [ebx + 0x44]
lea esi, [eax + 1]
jmp 0x444010
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x444010
sub eax, esi
push eax
lea eax, [ebp - 0x114]
push eax
call fcn.004026b0
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.FriendlyName
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433d40
test eax, eax
je 0x444073
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x444050
sub eax, edx
push eax
lea edx, [ebp - 0x114]
push edx
lea ecx, [ebx + 0x38]
call fcn.004026b0
push 0x22
lea ecx, [ebx + 0x38]
call fcn.004414e0
push 1
lea eax, [ebp - 0x114]
push eax
push str.MUP_ENABLE
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x44409b
or dword [ebx + 0xcdc], 0x4000000
push 1
lea ecx, [ebp - 0x114]
push ecx
push str.EnableUpgradeUI
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x4440df
lea edx, [ebp - 0x114]
push edx
call fcn.0059ab03
add esp, 4
cmp eax, 1
jne 0x4440df
push 0xc
push str.__EUPGRADEUI
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea eax, [ebp - 0x114]
push eax
push str.EnableReinstallUI
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x444123
lea ecx, [ebp - 0x114]
push ecx
call fcn.0059ab03
add esp, 4
cmp eax, 1
jne 0x444123
push 0xe
push str.__EREINSTALLUI
lea ecx, [ebp - 0x2498]
call fcn.004078c0
push 1
lea edx, [ebp - 0x114]
push edx
push str.PINI_UNINST_PATH
push edi
lea ecx, [ebp - 0x2494]
call fcn.00433f80
test eax, eax
je 0x44432c
mov esi, dword [ebp - 0x249c]
lea eax, [ebp - 0x114]
lea ebx, [esi + 0xdb0]
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x444160
sub eax, edx
push eax
lea eax, [ebp - 0x114]
push eax
mov ecx, ebx
call fcn.004026b0
cmp dword [esi + 0xda4], 1
jne 0x44432c
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x44419f
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x249c], esi
mov byte [ebp - 4], 0xc
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4441cf
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x24a0], edi
lea ecx, [ebp - 0x218]
push ecx
push 0
push 0
push 0x26
push 0
mov byte [ebp - 4], 0xd
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
jne 0x4442ec
push ebx
lea ecx, [ebp - 0x249c]
call fcn.00402af0
lea ecx, [ebp - 0x249c]
call fcn.004027d0
lea eax, [ebp - 0x218]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x444222
sub eax, edx
push eax
lea edx, [ebp - 0x218]
push edx
lea ecx, [ebp - 0x24a0]
call fcn.004026b0
lea ecx, [ebp - 0x24a0]
call fcn.004027d0
mov edi, dword [ebp - 0x24a0]
mov esi, dword [ebp - 0x249c]
test edi, edi
je 0x4442ec
cmp dword [esi - 0xc], 0
jl 0x4442ec
push edi
push esi
call fcn.0059a963
add esp, 8
test eax, eax
je 0x4442ec
sub eax, esi
cmp eax, 0xffffffff
je 0x4442ec
push 0
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x518]
call fcn.0047aa50
lea eax, [ebp - 0x24a4]
push eax
lea ecx, [ebp - 0x31c]
push ecx
push str.ProgramFilesDir
push str.SoftwareMicrosoftWindowsCurrentVersion
lea ecx, [ebp - 0x518]
mov dword [ebp - 0x320], 0x100
mov dword [ebp - 0x24a4], 0x104
call fcn.0047b3d0
lea edx, [ebp - 0x31c]
push edx
push edi
lea ecx, [ebp - 0x249c]
call fcn.00408720
lea eax, [ebp - 0x249c]
push eax
mov ecx, ebx
call fcn.00402af0
mov esi, dword [ebp - 0x249c]
add edi, 0xfffffff0
mov byte [ebp - 4], 0xc
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x44430c
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
add esi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x44432c
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov esi, dword [ebp - 0x2498]
cmp dword [esi - 0xc], 0
je 0x44437c
push 0x22
lea ecx, [ebp - 0x2498]
call fcn.004414e0
lea ecx, [ebp - 0x2498]
call fcn.00408a80
lea ecx, [ebp - 0x2498]
call fcn.00408a00
lea ecx, [ebp - 0x2498]
call fcn.004027d0
mov esi, dword [ebp - 0x2498]
mov eax, dword [esi - 0xc]
mov ecx, dword [ebp - 0x24bc]
push eax
push esi
call fcn.004078c0
lea ecx, [ebp - 0x2494]
mov byte [ebp - 4], 0
call fcn.004339c0
lea eax, [esi - 0x10]
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4443ae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00599ed4
mov esp, ebp
pop ebp
ret 0x10