Function at 0x427590
Capabilities:
Check if file exists
Create directory
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x453e26
mov eax, dword fs:[0]
push eax
sub esp, 0x448
mov eax, dword [0x4663d8]
xor eax, esp
mov dword [esp + 0x440], eax
push ebx
push esi
push edi
mov eax, dword [0x4663d8]
xor eax, esp
push eax
lea eax, [esp + 0x458]
mov dword fs:[0], eax
mov esi, ecx
xor edi, edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], edi
lea eax, [esi + 0xa88]
mov dword [esp + 0x24], eax
add eax, 0x40
mov edx, str.msdk
mov dword [esp + 0x460], edi
mov dword [esp + 0x38], eax
call fcn.00401e60
test eax, eax
je 0x427622
mov edx, 0x45af70
call fcn.00401e60
test eax, eax
jne 0x427622
mov eax, esi
call fcn.004272c0
mov eax, dword [esp + 0x10]
cmp eax, edi
jmp 0x427edc
cmp byte [esi + 0xaf4], 0
jne 0x4277c4
cmp byte [esi + 0xaf0], 0
jne 0x427661
cmp byte [esi + 0xb14], 0
jne 0x427661
mov edx, 0x45af70
call fcn.00401e60
test eax, eax
je 0x427661
mov ecx, esi
call fcn.00427320
mov eax, dword [esp + 0x10]
cmp eax, edi
jmp 0x427edc
cmp byte [esi + 0xaf4], 0
jne 0x4277c4
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
mov byte [esp + 0x460], 1
mov eax, dword [esp + 0x10]
cmp eax, edi
mov byte [esp + 0x1f], 0
je 0x427696
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0x10]
push eax
push 0xf003f
push edi
push str.SoftwareIntelGFX
push 0x80000002
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, edi
jne 0x427792
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x14]
push edx
mov eax, str.InstallConfig
call fcn.0042e080
mov eax, dword [esp + 0x10]
cmp eax, edi
je 0x4276e4
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [esp + 0x10], edi
xor esi, esi
mov dword [esp + 0x20], edi
mov edi, edi
mov ebx, dword [esp + 0x2c]
cmp ebx, edi
je 0x427743
mov ecx, dword [esp + 0x30]
sub ecx, ebx
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jae 0x427743
mov eax, dword [esp + 0x20]
lea ecx, [ebx + eax]
mov eax, dword [ecx + 0x14]
push str.IIPS
mov edi, 4
call fcn.00405220
test eax, eax
sete cl
or byte [esp + 0x1f], cl
add dword [esp + 0x20], 0x1c
add esi, 1
xor edi, edi
jmp 0x4276f0
cmp byte [esp + 0x1f], 0
je 0x427796
mov ecx, dword [esp + 0x18]
call fcn.00427f10
mov eax, dword [esp + 0x2c]
cmp eax, edi
je 0x42777b
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x30]
push edx
call fcn.004115d0
mov eax, dword [esp + 0x30]
add esp, 4
push eax
call fcn.00439935
add esp, 4
xor edi, edi
mov eax, dword [esp + 0x10]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], edi
cmp eax, edi
jmp 0x427edc
mov ebx, dword [esp + 0x2c]
cmp ebx, edi
mov byte [esp + 0x460], 0
je 0x4277c4
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x30]
push ecx
mov eax, ebx
call fcn.004115d0
mov edx, dword [esp + 0x30]
add esp, 4
push edx
call fcn.00439935
add esp, 4
xor edi, edi
mov esi, dword [esp + 0x18]
cmp byte [esi + 0xaf4], 0
je 0x4279d6
cmp byte [esi + 0xaf0], 0
je 0x427851
mov eax, dword [esp + 0x10]
cmp eax, edi
je 0x4277ed
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0x10]
push eax
push 0xf003f
push edi
push str.SoftwareIntelIIPS
push 0x80000002
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, edi
jne 0x427851
mov eax, dword [esp + 0x10]
cmp eax, edi
je 0x427823
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push str.IIPS_is_already_installed_and_will_be_uninstalled
push 0x4676b8
mov eax, 1
mov dword [esp + 0x18], edi
call fcn.0042dae0
mov ebx, dword [esp + 0x2c]
add esp, 8
push 0x5208
push 0x428ea0
call fcn.00413b70
cmp byte [esi + 0xaf4], 0
je 0x4279d6
cmp byte [esi + 0xaf0], 0
je 0x4279a7
mov edx, 0x45b01c
call fcn.00401e60
test eax, eax
jne 0x4279a7
push str.IIPS_filter
push str.__s_
push 0x4676b8
call fcn.0042dae0
add dword [0x4676d8], 1
add esp, 0xc
push 0x45b420
call fcn.00406db0
cmp eax, 0xffffffff
je 0x42799c
mov edi, eax
call fcn.00412450
mov esi, dword [eax + 0xd4]
cmp esi, dword [eax + 0xd8]
lea ebx, [eax + 0xd0]
mov dword [esp + 0x20], ebx
jbe 0x4278d2
call fcn.00439412
mov edi, ebx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
lea esp, [esp]
mov ebx, dword [ebx + 8]
mov ecx, dword [esp + 0x20]
cmp dword [ecx + 4], ebx
jbe 0x4278f1
call fcn.00439412
test edi, edi
je 0x4278fb
cmp edi, dword [esp + 0x20]
je 0x427900
call fcn.00439412
cmp esi, ebx
je 0x427998
test edi, edi
jne 0x427911
call fcn.00439412
cmp esi, dword [edi + 8]
jb 0x42791b
call fcn.00439412
mov ebx, 8
cmp dword [esi + 0x18], ebx
jb 0x42792a
mov eax, dword [esi + 4]
jmp 0x42792d
lea eax, [esi + 4]
push str.0042
push eax
call fcn.00439f6d
add esp, 8
test eax, eax
jne 0x427952
cmp esi, dword [edi + 8]
jb 0x427949
call fcn.00439412
mov ebx, dword [esp + 0x20]
add esi, 0x1c
jmp 0x4278e0
mov edx, dword [esp + 0x18]
mov dword [esp + 0x2c], esi
lea esi, [esp + 0x28]
mov byte [edx + 0xaf0], 0
call fcn.0042a670
cmp dword [eax + 0x18], ebx
jb 0x427974
mov eax, dword [eax + 4]
jmp 0x427977
add eax, 4
push eax
push str.This_is_DT___s___IIPS_install_disabled
push 0x4676b8
xor eax, eax
call fcn.0042dae0
add esp, 0xc
push str.4D36E97D_E325_11CE_BFC1_08002BE10318
call fcn.00409570
jmp 0x42799c
mov dword [esp + 0x2c], esi
sub dword [0x4676d8], 1
mov esi, dword [esp + 0x18]
cmp byte [esi + 0xaf4], 0
je 0x4279d6
cmp dword [esi + 0xb10], 8
jb 0x4279c1
mov ebx, dword [esi + 0xafc]
jmp 0x4279c7
lea ebx, [esi + 0xafc]
mov eax, dword [esp + 0x24]
push eax
mov edx, str.GFX_HWID
call fcn.00425880
mov esi, dword [esp + 0x18]
mov edi, esi
call fcn.00426dd0
cmp byte [esi + 0xaf3], 0
je 0x4279fe
mov ecx, dword [esp + 0x24]
push ecx
mov ebx, 0x4582fc
mov edx, str.HDAUDIO
call fcn.00425880
mov ebx, 8
cmp dword [esi + 0xaec], ebx
jb 0x427a13
mov eax, dword [esi + 0xad8]
jmp 0x427a19
lea eax, [esi + 0xad8]
push eax
lea edx, [esp + 0x40]
push 0x104
push edx
call fcn.0043a1a2
add esp, 0xc
cmp byte [esi + 0xaf4], 0
mov eax, str.setup.if2
jne 0x427a3f
mov eax, str.setup2.if2
mov edi, dword [sym.imp.SHLWAPI.dll_PathAppendW]
push eax
lea eax, [esp + 0x40]
push eax
call edi
push esi
lea eax, [esp + 0x40]
call fcn.0042c810
test al, al
je 0x427ed6
cmp dword [esi + 0xaec], ebx
jb 0x427a6f
mov eax, dword [esi + 0xad8]
jmp 0x427a75
lea eax, [esi + 0xad8]
push eax
lea ecx, [esp + 0x40]
push 0x104
push ecx
call fcn.0043a1a2
add esp, 0xc
push str.custom.ini
lea edx, [esp + 0x40]
push edx
call edi
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x427ab5
push esi
lea eax, [esp + 0x40]
call fcn.0042c810
test al, al
je 0x427ed6
call fcn.004021a0
test eax, eax
jne 0x427b9e
mov ecx, esi
call fcn.00428b00
cmp byte [esi + 0xaf4], 0
mov dword [esp + 0x20], 0x7e2
lea ebx, [esp + 0x20]
mov eax, 0x468c64
jne 0x427af0
call fcn.0042f2e0
mov dword [eax], 0x485
jmp 0x427afb
call fcn.0042f2e0
mov dword [eax], 0x48e
mov ecx, esi
mov dl, byte [ecx + 0xaf4]
lea ebx, [esp + 0x20]
mov byte [0x468b48], dl
mov dword [esp + 0x28], 0x42a050
mov dword [esp + 0x20], 0x65
call fcn.00435f90
lea ebx, [esp + 0x28]
mov esi, 0x468c90
call fcn.00436000
call fcn.00432e90
call fcn.00432ed0
push 1
call fcn.00432fd0
cmp eax, 0x3eb
je 0x427b6d
cmp eax, 0x47b
je 0x427b6d
cmp eax, 0xffffffff
jne 0x427b9e
mov eax, dword [esp + 0x18]
lea esi, [esp + 0x10]
mov dword [eax + 0x10], 0xff
call fcn.0042dd50
jmp 0x427ee5
push str.User_canceled_wizard
push 0x4676b8
mov eax, 2
call fcn.0042dae0
mov ecx, dword [esp + 0x20]
mov dword [0x4676dc], 0xa009
add esp, 8
mov dword [ecx + 0x10], 9
jmp 0x427ed6
mov edx, str.noicc
call fcn.00401e60
test eax, eax
mov esi, dword [esp + 0x18]
jne 0x427bcd
cmp byte [esi + 0xaf4], al
je 0x427bcd
mov ebx, dword [esp + 0x24]
push 0x4e20
push 0x42cb80
call fcn.00413b70
jmp 0x427bd7
mov edx, dword [esp + 0x38]
push edx
call fcn.00412ae0
call fcn.00431ae0
cmp eax, 0x6000100
jb 0x427c01
cmp eax, 0xffffffff
ja 0x427c01
cmp byte [esi + 0xaf4], 0
je 0x427c01
mov ebx, dword [esp + 0x24]
push 0xfffffffffffffff6
push 0x429140
call fcn.00413b70
mov edx, str.groups
call fcn.00401e60
test eax, eax
je 0x427c25
mov ecx, str.groups
call fcn.00401f00
mov ecx, dword [esp + 0x38]
push ecx
mov edx, eax
call fcn.00412cd0
call fcn.00434f50
cmp byte [esi + 0xaf4], 0
je 0x427d06
push 0x104
lea edx, [esp + 0x248]
push edx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
lea eax, [esp + 0x244]
push eax
call dword [sym.imp.SHLWAPI.dll_PathStripToRootW]
push str.IntelExtremeGraphicsCUIResource
lea ecx, [esp + 0x248]
push ecx
call edi
push 0
lea edx, [esp + 0x248]
push edx
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
cmp byte [esi + 0xaf4], 0
je 0x427d06
mov edx, str.report
call fcn.00401e60
test eax, eax
je 0x427cf8
mov eax, dword [esp + 0x10]
xor edi, edi
cmp eax, edi
je 0x427ca5
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push edi
lea eax, [esp + 0x14]
push eax
push edi
push 0xf003f
push edi
push edi
push edi
push str.SOFTWAREIntel
push 0x80000002
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, edi
jne 0x427cf8
mov ecx, str.report
call fcn.00401f00
push str.LogPath
lea ecx, [esp + 0x14]
push ecx
mov edx, eax
call fcn.0042dd90
lea esi, [esp + 0x10]
call fcn.0042dd50
mov esi, dword [esp + 0x18]
cmp byte [esi + 0xaf4], 0
mov ecx, str.SoftwareIntelGFX
jne 0x427d0b
mov ecx, str.SoftwareIntelIIPS
mov edi, dword [esp + 0x24]
push edi
call fcn.00413c30
call fcn.00434e60
mov edx, dword [0x468cf8]
push 0xffffffffffffffff
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [0x468cf8]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor ebx, ebx
mov dword [0x468cf8], ebx
cmp dword [edi + 0x38], ebx
jne 0x427ecb
cmp byte [esi + 0xaf4], bl
je 0x427e18
mov edx, 0x45af78
call fcn.00401e60
test eax, eax
je 0x427d65
call fcn.00429ae0
cmp byte [esi + 0xaf4], 0
je 0x427e18
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x427d81
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x10]
push ecx
push 0xf003f
push ebx
push str.SoftwareIntelGFX
push 0x80000002
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, ebx
jne 0x427e8f
push 0x458500
lea edx, [esp + 0x14]
push edx
mov edx, 0x45b040
call fcn.0042dd90
push 0x45b420
call fcn.00406db0
call fcn.0040b1d0
push str.Version
lea ecx, [esp + 0x14]
push ecx
mov edx, eax
call fcn.0042dd90
cmp dword [esi + 0xb10], 8
jb 0x427df1
mov edx, dword [esi + 0xafc]
jmp 0x427df7
lea edx, [esi + 0xafc]
push str.GFX_HWID
lea eax, [esp + 0x14]
push eax
call fcn.0042dd90
push 1
mov ecx, str.HDAUDIO
lea edx, [esp + 0x14]
call fcn.0042dd70
jmp 0x427e82
mov eax, dword [esp + 0x10]
cmp eax, ebx
je 0x427e27
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x10]
push ecx
push 0xf003f
push ebx
push str.SoftwareIntelIIPS
push 0x80000002
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, ebx
jne 0x427e8f
push 0x458500
lea edx, [esp + 0x14]
push edx
mov edx, str.D6C630BF_8DBB_4042_8562_DC9A52CB6E7E
call fcn.0042dd90
push str.IIPS
call fcn.00406db0
call fcn.0040b1d0
push str.Version
lea ecx, [esp + 0x14]
push ecx
mov edx, eax
call fcn.0042dd90
lea esi, [esp + 0x10]
call fcn.0042dd50
mov esi, dword [esp + 0x18]
call fcn.00425940
call fcn.004021a0
test eax, eax
jne 0x427ecb
cmp byte [esi + 0xaf4], al
jne 0x427eb3
mov edx, edi
cmp dword [edx + 0x34], eax
jne 0x427eb3
call fcn.00432f10
jmp 0x427eb8
call fcn.00432f50
push 1
call fcn.00432fd0
cmp eax, 0x467
jne 0x427ecb
call fcn.0042d380
mov eax, edi
mov ecx, dword [eax + 0x38]
mov dword [0x4676dc], ecx
mov eax, dword [esp + 0x10]
test eax, eax
je 0x427ee5
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x458]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x440]
xor ecx, esp
call fcn.00437ffa
mov esp, ebp
pop ebp
ret