Function at 0x4099ae
Capabilities:
Get common file path
Get program files directory
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
lea ebp, [esp - 0xf08]
sub esp, 0xf88
mov eax, dword [0x427470]
xor eax, ebp
mov dword [ebp + 0xf04], eax
push ebx
push esi
mov esi, 0x104
push esi
xor ebx, ebx
lea eax, [ebp + 0x7e8]
push ebx
push eax
call fcn.00410400
push 0x140
lea eax, [ebp - 0x68]
push ebx
push eax
call fcn.00410400
add esp, 0x18
lea eax, [ebp + 0x7e8]
push eax
push ebx
push ebx
push 0x26
push ebx
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
push 0x422070
lea eax, [ebp + 0x7e8]
push esi
push eax
call fcn.0041140d
push str.IntelIntel_Control_CenterIntelControlCenter.exe
lea eax, [ebp + 0x7e8]
push esi
push eax
call fcn.0041140d
add esp, 0x18
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp + 0x7e8]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
jne 0x409a4f
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
xor al, al
jmp 0x409f75
push edi
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
push 3
lea eax, [ebp - 0x74]
push ebx
push eax
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x78], ebx
mov byte [ebp - 0x69], 1
mov dword [ebp - 0x80], 1
mov dword [ebp - 0x7c], esi
call fcn.00410400
mov edi, pe_nt_image_headers32
push edi
lea eax, [ebp + 0x1d8]
push ebx
push eax
call fcn.00410400
push edi
lea eax, [ebp + 0xd8]
push ebx
push eax
call fcn.00410400
push edi
lea eax, [ebp + 0x2d8]
push ebx
push eax
call fcn.00410400
push esi
lea eax, [ebp + 0xe00]
push ebx
push eax
call fcn.00410400
push esi
lea eax, [ebp + 0xbf8]
push ebx
push eax
call fcn.00410400
add esp, 0x48
push esi
lea eax, [ebp + 0xaf4]
push ebx
push eax
call fcn.00410400
push esi
lea eax, [ebp + 0xcfc]
push ebx
push eax
call fcn.00410400
push esi
lea eax, [ebp + 0x9f0]
push ebx
push eax
call fcn.00410400
push esi
lea eax, [ebp + 0x5e0]
push ebx
push eax
call fcn.00410400
push esi
lea eax, [ebp + 0x8ec]
push ebx
push eax
call fcn.00410400
push esi
lea eax, [ebp + 0x4dc]
push ebx
push eax
call fcn.00410400
add esp, 0x48
push esi
lea eax, [ebp + 0x4dc]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea eax, [ebp + 0x2d8]
push eax
lea eax, [ebp + 0xd8]
push eax
lea eax, [ebp + 0x1d8]
push eax
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp + 0x4dc]
push eax
call fcn.00411ffc
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp + 0x8ec]
push eax
call fcn.00410480
lea eax, [ebp + 0x8ec]
push 0x422070
push eax
call fcn.00410490
lea eax, [ebp + 0x8ec]
push str.IntelExtremeGraphicsCUIResource
push eax
call fcn.00410490
lea eax, [ebp + 0xe00]
push str.Success
push eax
call fcn.00410480
push dword [0x4288d0]
lea eax, [ebp + 0xcfc]
push esi
push eax
push 0x24f3
push ebx
call sub.hccutils.DLL_LoadSTRING
add esp, 0x48
mov edi, str.Cant_find_requested_string.
lea eax, [ebp + 0xcfc]
push edi
push eax
call fcn.00411860
pop ecx
pop ecx
test eax, eax
je 0x409bdd
lea eax, [ebp + 0xcfc]
push 0x421e16
push eax
call fcn.00411860
pop ecx
pop ecx
test eax, eax
jne 0x409bf0
lea eax, [ebp + 0xcfc]
push str.Intel_R__Graphics_and_Media_Control_Panel
push eax
call fcn.00410480
pop ecx
pop ecx
push dword [0x4288d0]
lea eax, [ebp + 0x9f0]
push esi
push eax
push 0x24f2
push ebx
call sub.hccutils.DLL_LoadSTRING
lea eax, [ebp + 0x9f0]
push edi
push eax
call fcn.00411860
add esp, 0x1c
test eax, eax
je 0x409c34
lea eax, [ebp + 0x9f0]
push 0x421e16
push eax
call fcn.00411860
pop ecx
pop ecx
test eax, eax
jne 0x409c47
lea eax, [ebp + 0x9f0]
push str.Configure_and_adjust_graphics_and_media_settings.
push eax
call fcn.00410480
pop ecx
pop ecx
lea eax, [ebp + 0x8ec]
push eax
call fcn.004095b2
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
pop ecx
test al, al
jne 0x409c77
lea eax, [ebp + 0xe00]
push str.Cannot_create_the_Directory
push eax
call fcn.00410480
mov byte [ebp - 0x69], bl
jmp 0x409f29
lea eax, [ebp + 0x8ec]
push eax
lea eax, [ebp + 0xbf8]
push eax
call fcn.00410480
lea eax, [ebp + 0xbf8]
push 0x422070
push eax
call fcn.00410490
lea eax, [ebp + 0xcfc]
push eax
lea eax, [ebp + 0xbf8]
push eax
call fcn.00410490
lea eax, [ebp + 0xbf8]
push str..lnk
push eax
call fcn.00410490
add esp, 0x20
lea eax, [ebp - 0x70]
push eax
push 0x2001f
push ebx
push str.SOFTWAREINTELICCApplicationsIntel_Graphics_Driver
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x409db9
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp + 0x5e0]
push eax
lea eax, [ebp - 0x80]
push eax
push ebx
push str.ShortcutName_MUI_
push dword [ebp - 0x70]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
neg eax
sbb eax, eax
xor ecx, ecx
inc eax
cmp dword [ebp - 0x70], ebx
setne cl
test ecx, eax
je 0x409db2
lea eax, [ebp + 0xaf4]
push str.IntelExtremeGraphicsCUIResource
push eax
call fcn.00410480
lea eax, [ebp + 0x5e0]
push eax
lea eax, [ebp + 0xaf4]
push eax
call fcn.00410490
lea eax, [ebp + 0xaf4]
push str..lnk
push eax
call fcn.00410490
lea eax, [ebp + 0xaf4]
push 0x422164
push eax
call fcn.00411df3
add esp, 0x20
cmp eax, ebx
je 0x409dab
push eax
call fcn.00411cb3
lea eax, [ebp + 0x5e0]
push eax
lea eax, [ebp + 0xcfc]
push eax
call fcn.00411860
add esp, 0xc
test eax, eax
je 0x409df4
lea eax, [ebp + 0xaf4]
push eax
call fcn.00411c0c
pop ecx
test eax, eax
je 0x409df4
mov byte [ebp - 0x69], bl
push str.Could_not_Delete_file
lea eax, [ebp + 0xe00]
push eax
call fcn.00410480
jmp 0x409df2
push str.Shortcut_file_does_not_exists
jmp 0x409d9d
push str.Could_not_Find_Shortcut_key
jmp 0x409d9d
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x70]
push eax
push ebx
push 0x2001f
push ebx
push ebx
push ebx
push str.SOFTWAREINTELICCApplicationsIntel_Graphics_Driver
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
je 0x409df4
lea eax, [ebp + 0xe00]
push str.Could_not_create_ICC_keys
push eax
call fcn.00410480
mov byte [ebp - 0x69], bl
pop ecx
pop ecx
cmp byte [ebp - 0x69], bl
je 0x409f2b
push esi
lea eax, [ebp + 0x6e4]
push ebx
push eax
call fcn.00410400
push esi
lea eax, [ebp + 0x3d8]
push ebx
push eax
call fcn.00410400
add esp, 0x18
push esi
lea eax, [ebp + 0x3d8]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
jne 0x409e31
mov byte [ebp - 0x69], bl
lea eax, [ebp + 0x3d8]
push eax
lea eax, [ebp + 0x6e4]
push eax
call fcn.00410490
lea eax, [ebp + 0x6e4]
push 0x422070
push eax
call fcn.00410490
lea eax, [ebp + 0x6e4]
push str.GfxUI.exe
push eax
call fcn.00410490
lea eax, [ebp + 0x9f0]
push eax
lea eax, [ebp + 0xbf8]
push eax
lea eax, [ebp + 0x6e4]
push eax
call fcn.00409441
add esp, 0x24
test eax, eax
je 0x409e9d
lea eax, [ebp + 0xe00]
push str.Could_not_create_link
push eax
call fcn.00410480
pop ecx
pop ecx
mov byte [ebp - 0x69], bl
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea eax, [ebp + 0xbf8]
push eax
call esi
inc eax
push eax
lea eax, [ebp + 0xbf8]
push eax
push 1
push ebx
push str.Path
push dword [ebp - 0x70]
call edi
neg eax
sbb eax, eax
xor ecx, ecx
inc eax
cmp dword [ebp - 0x70], ebx
setne cl
test ecx, eax
je 0x409f2b
lea eax, [ebp + 0xcfc]
push eax
call esi
inc eax
push eax
lea eax, [ebp + 0xcfc]
push eax
push 1
push ebx
push str.ShortcutName_MUI_
push dword [ebp - 0x70]
call edi
test eax, eax
jne 0x409f2b
push str.Display
call esi
inc eax
push eax
push str.Display
push 1
push ebx
push str.Class
push dword [ebp - 0x70]
call edi
test eax, eax
je 0x409f2b
lea eax, [ebp + 0xe00]
push str.Could_not_update_ICC_keys
push eax
mov byte [ebp - 0x69], bl
call fcn.00410480
pop ecx
pop ecx
push 1
lea eax, [ebp - 0x69]
push eax
push 3
push ebx
push str.IsICCSupported
push dword [ebp - 0x70]
call edi
neg eax
sbb eax, eax
xor ecx, ecx
neg eax
cmp dword [ebp - 0x70], ebx
pop edi
setne cl
test ecx, eax
je 0x409f64
lea eax, [ebp + 0xe00]
push str.Could_not_Set_IsICCSupported_Key
push eax
call fcn.00410480
pop ecx
pop ecx
cmp dword [ebp - 0x70], ebx
je 0x409f72
push dword [ebp - 0x70]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov al, byte [ebp - 0x69]
mov ecx, dword [ebp + 0xf04]
pop esi
xor ecx, ebp
pop ebx
call fcn.00410578
add ebp, 0xf08
leave
ret