Function at 0x444080
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x169c
call fcn.0045f540
mov eax, dword [0x4910e8]
push ebx
xor ebx, ebx
test eax, 0x10000
push esi
push edi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], ebx
je 0x4440c6
push str.PowerXpressChangeDisplaySettings:_Start_n
call fcn.0040a4a0
add esp, 4
xor eax, eax
mov ecx, 0x6a
lea edi, [esp + 0x618]
rep stosd dword es:[edi], eax
mov ecx, 0x6a
lea edi, [esp + 0x228]
rep stosd dword es:[edi], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
lea edx, [esp + 0x968]
mov dword [esp + 0x4c], eax
mov esi, 8
xor eax, eax
mov edi, edx
mov ecx, 0x6a
rep stosd dword es:[edi], eax
mov dword [edx], 0x1a8
add edx, 0x1a8
dec esi
jne 0x444110
mov dword [esp + 0x18], ebx
jmp 0x444132
xor ebx, ebx
push ebx
lea ecx, [esp + 0x96c]
push ecx
push ebx
push ebx
call dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
test eax, eax
je 0x4441d3
lea edi, [esp + 0xa0c]
lea esi, [esp + 0x968]
mov dword [esp + 0x24], edi
lea ecx, [ecx]
mov eax, dword [edi]
test al, 4
je 0x444188
test al, 1
je 0x444188
mov ecx, 0x6a
lea edi, [esp + 0x618]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], 1
test al, 8
jne 0x4441a6
lea edx, [edi + 4]
push edx
call fcn.004425a0
xor ecx, ecx
add esp, 4
test al, al
setne cl
inc ecx
mov eax, ecx
mov dword [esp + ebx*4 + 0x30], eax
add edi, 0x1a8
push 0
lea esi, [edi - 0xa4]
push esi
inc ebx
push ebx
push 0
mov dword [esp + 0x34], edi
call dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
test eax, eax
jne 0x444160
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x44425d
xor eax, eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
lea edx, [esp + 0x968]
mov dword [esp + 0x4c], eax
mov esi, 8
xor eax, eax
mov edi, edx
mov ecx, 0x6a
rep stosd dword es:[edi], eax
mov dword [edx], 0x1a8
add edx, 0x1a8
dec esi
jne 0x444201
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0xc8
mov dword [esp + 0x14], eax
jne 0x444130
test dword [0x4910e8], 0x10000
je 0x44494e
push str.PowerXpressChangeDisplaySettings:_No_primary_desktop__timeout_for_20_secs_n
call fcn.0040a4a0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x14]
test eax, eax
jbe 0x44427f
test dword [0x4910e8], 0x10000
je 0x44427f
push eax
push str.PowerXpressChangeDisplaySettings:_Before_ChangeDisplaySettingsEx__wait_for_100_d_millisec_n
call fcn.0040a4a0
add esp, 8
xor ebx, ebx
lea esi, [esp + 0xa0c]
mov eax, dword [esi]
test al, 1
je 0x44429c
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + ebx*4 + 0x30]
or edx, ecx
mov dword [esp + 0x1c], edx
mov edi, dword [esp + 0x10]
mov edx, dword [esp + ebx*4 + 0x30]
or edi, edx
test al, 8
mov dword [esp + 0x10], edi
jne 0x4442e5
push 0xb
lea edi, [esi - 0xa0]
push str..DISPLAY
push edi
call fcn.00460171
add esp, 0xc
test eax, eax
jne 0x4442e5
test dword [0x4910e8], 0x10000
je 0x4442e5
mov eax, dword [esi]
push eax
push edi
push str.DeviceName:__s__StateFlag:__.8X
call fcn.0040a4a0
add esp, 0xc
inc ebx
add esi, 0x1a8
cmp ebx, 8
jb 0x444288
mov al, byte [esp + 0x10]
test al, 1
jne 0x44431f
test dword [0x4910e8], 0x10000
je 0x44494e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_integrated_display_device_is_not_enabled_loaded__n
call fcn.0040a4a0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, 2
test bl, al
jne 0x44434e
test dword [0x4910e8], 0x10000
je 0x44494e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_discrete_display_device_is_not_enabled_loaded__n
call fcn.0040a4a0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [esp + 0x1c]
test al, 1
je 0x44437e
test al, 2
je 0x44437e
test dword [0x4910e8], 0x10000
je 0x444373
push str.PowerXpressChangeDisplaySettings:_already_has_an_extended_desktop_n
call fcn.0040a4a0
add esp, 4
mov ecx, 1
mov dword [esp + 0x2c], ecx
jmp 0x4443bb
mov ecx, dword [esp + 0x20]
cmp dword [esp + ecx*4 + 0x30], ebx
jne 0x4443b6
cmp dword [ebp + 8], ebx
jne 0x4443b6
test dword [0x4910e8], 0x10000
je 0x444998
push str.PowerXpressChangeDisplaySettings:_Os_automatically_setup_primary_to_discrete_already_n
call fcn.0040a4a0
add esp, 4
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, 1
mov edx, dword [esp + 0x20]
mov eax, dword [esp + edx*4 + 0x30]
cmp eax, ecx
mov dword [esp + 0x24], eax
jne 0x4443de
xor eax, eax
lea ecx, [ecx]
cmp dword [esp + eax*4 + 0x30], ebx
je 0x4443ee
inc eax
cmp eax, 8
jb 0x4443d0
jmp 0x444409
xor eax, eax
cmp dword [esp + eax*4 + 0x30], ecx
je 0x4443ee
inc eax
cmp eax, 8
jb 0x4443e0
jmp 0x444409
imul eax, eax, 0x1a8
lea esi, [esp + eax + 0x968]
lea edi, [esp + 0x228]
mov ecx, 0x6a
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 8]
mov esi, 1
cmp eax, esi
jne 0x444483
lea eax, [esp + 0x190]
push eax
mov dword [esp + 0x194], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x444483
mov eax, dword [esp + 0x194]
mov edi, dword [esp + 0x1a0]
xor ecx, ecx
cmp eax, 6
sete cl
xor edx, edx
cmp edi, ebx
sete dl
cmp edx, ecx
jne 0x444483
call fcn.0044f700
test eax, eax
je 0x444483
push 0xc
lea eax, [esp + 0x1a8]
push str.Service_Pack
push eax
mov dword [esp + 0x34], esi
call fcn.00460171
add esp, 0xc
xor ebx, ebx
test eax, eax
jne 0x444485
mov dword [esp + 0x28], ebx
jmp 0x444485
xor ebx, ebx
test dword [esp + 0x2cc], 0x8000000
je 0x4444a8
cmp dword [ebp + 8], 1
jne 0x4444a8
lea ecx, [esp + 0x2d0]
push ecx
call fcn.00442d80
add esp, 4
mov esi, dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
xor eax, eax
mov ecx, 0x27
lea edi, [esp + 0x50]
rep stosd dword es:[edi], eax
mov ecx, 0x27
lea edi, [esp + 0x578]
rep stosd dword es:[edi], eax
lea edx, [esp + 0x50]
push edx
mov ecx, 0x27
lea edi, [esp + 0xf4]
rep stosd dword es:[edi], eax
push 0xffffffffffffffff
lea eax, [esp + 0x624]
push eax
call esi
lea ecx, [esp + 0x578]
push ecx
push 0xffffffffffffffff
lea edx, [esp + 0x234]
push edx
call esi
mov eax, dword [0x4910e8]
mov edi, 0x10000
test edi, eax
je 0x44453c
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xb8]
push eax
mov eax, dword [esp + 0xc4]
push ecx
mov ecx, dword [esp + 0xc4]
push edx
push eax
push ecx
push str.PowerXpressChangeDisplaySettings:_current_mode__.4dx_.4dx_2d__2dHz:_.8x_n
call fcn.0040a4a0
add esp, 0x18
lea edx, [esp + 0xf0]
push edx
lea eax, [esp + 0x54]
push eax
push 0xffffffffffffffff
lea ecx, [esp + 0x238]
push ecx
call fcn.00451d60
test eax, eax
je 0x4445b4
test dword [0x4910e8], edi
mov eax, dword [esp + 0x158]
mov ecx, dword [esp + 0x160]
mov edx, dword [esp + 0x15c]
mov esi, dword [esp + 0x168]
mov dword [esp + 0xb8], eax
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xbc], edx
mov dword [esp + 0xc8], esi
je 0x4445b2
mov ebx, dword [esp + 0x78]
push ebx
push esi
push eax
push ecx
push edx
push str.PowerXpressChangeDisplaySettings:_Candidate_mode_to_set__.4dx_.4dx_2d__2dHz:_.8x_n
call fcn.0040a4a0
add esp, 0x18
xor ebx, ebx
mov eax, dword [esp + 0xc0]
mov edx, dword [esp + 0xbc]
mov esi, dword [sym.imp.USER32.dll_ChangeDisplaySettingsExA]
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x2c], ebx
mov dword [esp + 0x20], edx
je 0x444687
push ebx
push 0x10000001
push ebx
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x23c]
push edx
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], ebx
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xd4], ebx
call esi
test eax, eax
je 0x444632
test dword [0x4910e8], edi
je 0x44494e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_cannot_remove_extended_dekstop_ChangeDisplaySettingsEx_1__fail_n
call fcn.0040a4a0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ebx
push ebx
push ebx
push ebx
push ebx
call esi
test eax, eax
mov eax, dword [0x4910e8]
je 0x444660
test edi, eax
je 0x44494e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_cannot_remove_extended_dekstop_ChangeDisplaySettingsEx_2__fail_n
call fcn.0040a4a0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test edi, eax
je 0x444671
push str.PowerXpressChangeDisplaySettings:_successfully_remove_extended_desktop_before_perform_change_desktop_n
call fcn.0040a4a0
add esp, 4
mov ecx, dword [esp + 0x24]
mov eax, 2
cmp ecx, eax
jne 0x444687
cmp dword [ebp + 8], eax
je 0x444998
test dword [0x4910e8], edi
je 0x44469c
push str.PowerXpressChangeDisplaySettings:_Ready_to_ChangeDisplaySettingsEx_n
call fcn.0040a4a0
add esp, 4
mov dword [esp + 0x10], ebx
mov edi, dword [sym.imp.USER32.dll_ChangeDisplaySettingsExA]
xor esi, esi
push esi
push 0x10000001
push esi
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x62c]
push ecx
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
mov dword [esp + 0xd0], esi
mov dword [esp + 0xd4], esi
call edi
test eax, eax
jne 0x4448fb
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x78]
test eax, 0x20000000
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], esi
mov dword [esp + 0xbc], edx
mov word [esp + 0x7c], si
mov word [esp + 0x7e], si
je 0x444721
and eax, 0xdfffffff
mov dword [esp + 0x78], eax
push esi
push 0x10000011
push esi
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x23c]
push edx
call edi
test eax, eax
je 0x444754
test dword [0x4910e8], 0x10000
je 0x444754
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_2__fail_n
call fcn.0040a4a0
add esp, 4
push esi
push esi
push esi
push esi
push esi
call edi
test eax, eax
je 0x444778
test dword [0x4910e8], 0x10000
je 0x444778
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_3__fail_n
call fcn.0040a4a0
add esp, 4
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], esi
mov esi, dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
mov edi, edi
xor eax, eax
xor ebx, ebx
mov ecx, 0x6a
lea edi, [esp + 0x3d0]
rep stosd dword es:[edi], eax
push ebx
lea eax, [esp + 0x3d4]
push eax
push ebx
push ebx
mov dword [esp + 0x3e0], 0x1a8
call esi
test eax, eax
je 0x444853
mov eax, dword [esp + 0x474]
test al, 4
je 0x4447f4
test al, 1
je 0x4447f4
mov ecx, 0x6a
lea esi, [esp + 0x3d0]
lea edi, [esp + 0x7c0]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
mov dword [esp + 0x18], 1
test al, 8
jne 0x44481a
test dword [0x4910e8], 0x10000
je 0x44481a
push eax
lea ecx, [esp + 0x3d8]
push ecx
push str.DeviceName:__s__StateFlag:__.8X
call fcn.0040a4a0
add esp, 0xc
xor eax, eax
push eax
lea edx, [esp + 0x3d4]
push edx
inc ebx
push ebx
mov ecx, 0x6a
lea edi, [esp + 0x3dc]
rep stosd dword es:[edi], eax
push eax
mov dword [esp + 0x3e0], 0x1a8
call esi
test eax, eax
jne 0x4447c2
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x44485f
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
inc dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp eax, 0xc8
je 0x44487a
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x444790
test eax, eax
jbe 0x444899
mov ecx, dword [0x4910e8]
mov esi, 0x10000
test esi, ecx
je 0x44489e
push eax
push str.PowerXpressChangeDisplaySettings:_After_ChangeDisplaySettingEx__wait_for_100_d_millisec
call fcn.0040a4a0
add esp, 8
jmp 0x44489e
mov esi, 0x10000
lea eax, [esp + 0x868]
push eax
call fcn.004425a0
add esp, 4
test al, al
mov eax, dword [ebp + 8]
je 0x4448ba
cmp eax, 2
jmp 0x4448bd
cmp eax, 1
je 0x44491d
push 0x32
call dword [sym.imp.KERNEL32.dll_Sleep]
test dword [0x4910e8], esi
je 0x4448e2
mov ecx, dword [esp + 0x10]
inc ecx
push ecx
push str.PowerXpressChangeDisplaySettings:_fail_and_retry__d
call fcn.0040a4a0
add esp, 8
mov eax, dword [esp + 0x10]
inc eax
cmp eax, 0x32
mov dword [esp + 0x10], eax
jb 0x4446a0
mov esi, 0x10000
jmp 0x444932
test dword [0x4910e8], 0x10000
je 0x44494e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_1__fail_n
call fcn.0040a4a0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test dword [0x4910e8], esi
je 0x444932
push str.PowerXpressChangeDisplaySettings:_desktop_correctly_set_on_target_adapter
call fcn.0040a4a0
add esp, 4
cmp dword [esp + 0x10], 0x32
jne 0x444957
test dword [0x4910e8], esi
je 0x44494e
push str.PowerXpressChangeDisplaySettings:_End_n
call fcn.0040a4a0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x28]
test eax, eax
je 0x444983
test dword [0x4910e8], esi
je 0x444974
push str.PowerXpressChangeDisplaySettings:_apply_workaround_to_disable_enable_DWM_n
call fcn.0040a4a0
add esp, 4
call fcn.0044f6e0
cmp eax, 1
jne 0x444983
call fcn.0044f6f0
test dword [0x4910e8], esi
je 0x444998
push str.PowerXpressChangeDisplaySettings:_End_n
call fcn.0040a4a0
add esp, 4
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret