Function at 0x444f10
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1688
call fcn.00461300
mov eax, dword [0x49a0e8]
push ebx
xor ebx, ebx
test eax, 0x10000
push esi
push edi
mov dword [ebp - 0x10], ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
je 0x444f4d
push str.PowerXpressChangeDisplaySettings:_Start_n
call fcn.0040acd0
add esp, 4
xor eax, eax
mov ecx, 0x6a
lea edi, [ebp - 0x7a0]
rep stosd dword es:[edi], eax
mov ecx, 0x6a
lea edi, [ebp - 0x3b4]
rep stosd dword es:[edi], eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
lea edx, [ebp - 0x1688]
mov dword [ebp - 0x24], eax
mov esi, 8
lea esp, [esp]
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 0x444f90
mov dword [ebp - 0xc], ebx
jmp 0x444fb1
xor ebx, ebx
push ebx
lea ecx, [ebp - 0x1688]
push ecx
push ebx
push ebx
call dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
test eax, eax
je 0x44503d
lea edi, [ebp - 0x15e4]
lea esi, [ebp - 0x1688]
mov dword [ebp - 0x18], edi
mov eax, dword [edi]
test al, 4
je 0x444ff8
test al, 1
je 0x444ff8
mov ecx, 0x6a
lea edi, [ebp - 0x7a0]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0xc], 1
test al, 8
jne 0x445016
lea edx, [edi + 4]
push edx
call fcn.00443560
xor ecx, ecx
add esp, 4
test al, al
setne cl
inc ecx
mov eax, ecx
mov dword [ebp + ebx*4 - 0x40], eax
add edi, 0x1a8
push 0
lea esi, [edi - 0xa4]
push esi
inc ebx
push ebx
push 0
mov dword [ebp - 0x18], edi
call dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
test eax, eax
jne 0x444fd4
mov eax, dword [ebp - 0xc]
test eax, eax
jne 0x4450bc
xor eax, eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
lea edx, [ebp - 0x1688]
mov dword [ebp - 0x24], 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 0x445062
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 8]
inc eax
cmp eax, 0xc8
mov dword [ebp - 8], eax
jne 0x444faf
test dword [0x49a0e8], 0x10000
je 0x445739
push str.PowerXpressChangeDisplaySettings:_No_primary_desktop__timeout_for_20_secs_n
call fcn.0040acd0
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 8]
test eax, eax
jbe 0x4450dd
test dword [0x49a0e8], 0x10000
je 0x4450dd
push eax
push str.PowerXpressChangeDisplaySettings:_Before_ChangeDisplaySettingsEx__wait_for_100_d_millisec_n
call fcn.0040acd0
add esp, 8
xor ebx, ebx
lea esi, [ebp - 0x15e4]
mov eax, dword [esi]
test al, 1
je 0x4450f7
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp + ebx*4 - 0x40]
or edx, ecx
mov dword [ebp - 0x10], edx
mov edi, dword [ebp - 4]
mov edx, dword [ebp + ebx*4 - 0x40]
or edi, edx
test al, 8
mov dword [ebp - 4], edi
jne 0x44513e
push 0xb
lea edi, [esi - 0xa0]
push str..DISPLAY
push edi
call fcn.00461fe2
add esp, 0xc
test eax, eax
jne 0x44513e
test dword [0x49a0e8], 0x10000
je 0x44513e
mov eax, dword [esi]
push eax
push edi
push str.DeviceName:__s__StateFlag:__.8X
call fcn.0040acd0
add esp, 0xc
inc ebx
add esi, 0x1a8
cmp ebx, 8
jb 0x4450e5
mov al, byte [ebp - 4]
test al, 1
jne 0x445177
test dword [0x49a0e8], 0x10000
je 0x445739
push str.PowerXpressChangeDisplaySettings:_fail_due_to_integrated_display_device_is_not_enabled_loaded__n
call fcn.0040acd0
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, 2
test bl, al
jne 0x4451a6
test dword [0x49a0e8], 0x10000
je 0x445739
push str.PowerXpressChangeDisplaySettings:_fail_due_to_discrete_display_device_is_not_enabled_loaded__n
call fcn.0040acd0
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [ebp - 0x10]
test al, 1
je 0x4451d4
test al, 2
je 0x4451d4
test dword [0x49a0e8], 0x10000
je 0x4451ca
push str.PowerXpressChangeDisplaySettings:_already_has_an_extended_desktop_n
call fcn.0040acd0
add esp, 4
mov ecx, 1
mov dword [ebp - 0x20], ecx
jmp 0x445210
mov ecx, dword [ebp - 0x14]
cmp dword [ebp + ecx*4 - 0x40], ebx
jne 0x44520b
cmp dword [ebp + 8], ebx
jne 0x44520b
test dword [0x49a0e8], 0x10000
je 0x445782
push str.PowerXpressChangeDisplaySettings:_Os_automatically_setup_primary_to_discrete_already_n
call fcn.0040acd0
add esp, 4
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, 1
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp + edx*4 - 0x40]
cmp eax, ecx
mov dword [ebp - 0x18], eax
jne 0x44522e
xor eax, eax
cmp dword [ebp + eax*4 - 0x40], ebx
je 0x44523e
inc eax
cmp eax, 8
jb 0x445220
jmp 0x445258
xor eax, eax
cmp dword [ebp + eax*4 - 0x40], ecx
je 0x44523e
inc eax
cmp eax, 8
jb 0x445230
jmp 0x445258
imul eax, eax, 0x1a8
lea esi, [ebp + eax - 0x1688]
lea edi, [ebp - 0x3b4]
mov ecx, 0x6a
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 8]
mov esi, 1
cmp eax, esi
jne 0x4452cb
lea eax, [ebp - 0x20c]
push eax
mov dword [ebp - 0x20c], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x4452cb
mov eax, dword [ebp - 0x208]
mov edi, dword [ebp - 0x1fc]
xor ecx, ecx
cmp eax, 6
sete cl
xor edx, edx
cmp edi, ebx
sete dl
cmp edx, ecx
jne 0x4452cb
call fcn.00450300
test eax, eax
je 0x4452cb
push 0xc
lea eax, [ebp - 0x1f8]
push str.Service_Pack
push eax
mov dword [ebp - 0x1c], esi
call fcn.00461fe2
add esp, 0xc
xor ebx, ebx
test eax, eax
jne 0x4452cd
mov dword [ebp - 0x1c], ebx
jmp 0x4452cd
xor ebx, ebx
test dword [ebp - 0x310], 0x8000000
je 0x4452ee
cmp dword [ebp + 8], 1
jne 0x4452ee
lea ecx, [ebp - 0x30c]
push ecx
call fcn.00443ce0
add esp, 4
mov esi, dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
xor eax, eax
mov ecx, 0x27
lea edi, [ebp - 0xdc]
rep stosd dword es:[edi], eax
mov ecx, 0x27
lea edi, [ebp - 0x5f8]
rep stosd dword es:[edi], eax
lea edx, [ebp - 0xdc]
push edx
mov ecx, 0x27
lea edi, [ebp - 0x178]
rep stosd dword es:[edi], eax
push 0xffffffffffffffff
lea eax, [ebp - 0x79c]
push eax
call esi
lea ecx, [ebp - 0x5f8]
push ecx
push 0xffffffffffffffff
lea edx, [ebp - 0x3b0]
push edx
call esi
mov eax, dword [0x49a0e8]
mov edi, 0x10000
test edi, eax
je 0x445373
mov eax, dword [ebp - 0xb4]
mov ecx, dword [ebp - 0x64]
mov edx, dword [ebp - 0x74]
push eax
mov eax, dword [ebp - 0x6c]
push ecx
mov ecx, dword [ebp - 0x70]
push edx
push eax
push ecx
push str.PowerXpressChangeDisplaySettings:_current_mode__.4dx_.4dx_2d__2dHz:_.8x_n
call fcn.0040acd0
add esp, 0x18
lea edx, [ebp - 0x178]
push edx
lea eax, [ebp - 0xdc]
push eax
push 0xffffffffffffffff
lea ecx, [ebp - 0x3b0]
push ecx
call fcn.00454ca0
test eax, eax
je 0x4453d9
test dword [0x49a0e8], edi
mov eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0x108]
mov edx, dword [ebp - 0x10c]
mov esi, dword [ebp - 0x100]
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x64], esi
je 0x4453d7
mov ebx, dword [ebp - 0xb4]
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.0040acd0
add esp, 0x18
xor ebx, ebx
mov eax, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x70]
mov esi, dword [sym.imp.USER32.dll_ChangeDisplaySettingsExA]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x20], ebx
mov dword [ebp - 0x14], edx
je 0x445497
push ebx
push 0x10000001
push ebx
lea ecx, [ebp - 0xdc]
push ecx
lea edx, [ebp - 0x3b0]
push edx
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xac], ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], ebx
call esi
test eax, eax
je 0x445443
test dword [0x49a0e8], edi
je 0x445739
push str.PowerXpressChangeDisplaySettings:_fail_due_to_cannot_remove_extended_dekstop_ChangeDisplaySettingsEx_1__fail_n
call fcn.0040acd0
add esp, 4
pop edi
pop esi
xor eax, eax
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 [0x49a0e8]
je 0x445471
test edi, eax
je 0x445739
push str.PowerXpressChangeDisplaySettings:_fail_due_to_cannot_remove_extended_dekstop_ChangeDisplaySettingsEx_2__fail_n
call fcn.0040acd0
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
test edi, eax
je 0x445482
push str.PowerXpressChangeDisplaySettings:_successfully_remove_extended_desktop_before_perform_change_desktop_n
call fcn.0040acd0
add esp, 4
mov ecx, dword [ebp - 0x18]
mov eax, 2
cmp ecx, eax
jne 0x445497
cmp dword [ebp + 8], eax
je 0x445782
test dword [0x49a0e8], edi
je 0x4454ac
push str.PowerXpressChangeDisplaySettings:_Ready_to_ChangeDisplaySettingsEx_n
call fcn.0040acd0
add esp, 4
mov dword [ebp - 4], ebx
nop
mov edi, dword [sym.imp.USER32.dll_ChangeDisplaySettingsExA]
xor esi, esi
push esi
push 0x10000001
push esi
lea eax, [ebp - 0xdc]
push eax
lea ecx, [ebp - 0x79c]
push ecx
mov dword [ebp - 0xb0], esi
mov dword [ebp - 0xac], esi
mov dword [ebp - 0x70], esi
mov dword [ebp - 0x6c], esi
call edi
test eax, eax
jne 0x4456e7
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0xb4]
test eax, 0x20000000
mov dword [ebp - 0xb0], esi
mov dword [ebp - 0xac], esi
mov dword [ebp - 0x70], edx
mov word [ebp - 0xb0], si
mov word [ebp - 0xae], si
je 0x445527
and eax, 0xdfffffff
mov dword [ebp - 0xb4], eax
push esi
push 0x10000011
push esi
lea ecx, [ebp - 0xdc]
push ecx
lea edx, [ebp - 0x3b0]
push edx
call edi
test eax, eax
je 0x44555b
test dword [0x49a0e8], 0x10000
je 0x44555b
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_2__fail_n
call fcn.0040acd0
add esp, 4
push esi
push esi
push esi
push esi
push esi
call edi
test eax, eax
je 0x44557f
test dword [0x49a0e8], 0x10000
je 0x44557f
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_3__fail_n
call fcn.0040acd0
add esp, 4
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [ebp - 0xc], esi
mov dword [ebp - 8], esi
mov esi, dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
xor eax, eax
xor ebx, ebx
mov ecx, 0x6a
lea edi, [ebp - 0x55c]
rep stosd dword es:[edi], eax
push ebx
lea eax, [ebp - 0x55c]
push eax
push ebx
push ebx
mov dword [ebp - 0x55c], 0x1a8
call esi
test eax, eax
je 0x445646
mov eax, dword [ebp - 0x4b8]
test al, 4
je 0x4455f0
test al, 1
je 0x4455f0
mov ecx, 0x6a
lea esi, [ebp - 0x55c]
lea edi, [ebp - 0x948]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [sym.imp.USER32.dll_EnumDisplayDevicesA]
mov dword [ebp - 0xc], 1
test al, 8
jne 0x445615
test dword [0x49a0e8], 0x10000
je 0x445615
push eax
lea ecx, [ebp - 0x558]
push ecx
push str.DeviceName:__s__StateFlag:__.8X
call fcn.0040acd0
add esp, 0xc
xor eax, eax
push eax
lea edx, [ebp - 0x55c]
push edx
inc ebx
push ebx
mov ecx, 0x6a
lea edi, [ebp - 0x55c]
rep stosd dword es:[edi], eax
push eax
mov dword [ebp - 0x55c], 0x1a8
call esi
test eax, eax
jne 0x4455c2
mov eax, dword [ebp - 0xc]
test eax, eax
jne 0x445651
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, 0xc8
je 0x44566a
mov ecx, dword [ebp - 0xc]
test ecx, ecx
je 0x445593
test eax, eax
jbe 0x445689
mov ecx, dword [0x49a0e8]
mov esi, 0x10000
test esi, ecx
je 0x44568e
push eax
push str.PowerXpressChangeDisplaySettings:_After_ChangeDisplaySettingEx__wait_for_100_d_millisec
call fcn.0040acd0
add esp, 8
jmp 0x44568e
mov esi, 0x10000
lea eax, [ebp - 0x8a0]
push eax
call fcn.00443560
add esp, 4
test al, al
mov eax, dword [ebp + 8]
je 0x4456a9
cmp eax, 2
jmp 0x4456ac
cmp eax, 1
je 0x445709
push 0x32
call dword [sym.imp.KERNEL32.dll_Sleep]
test dword [0x49a0e8], esi
je 0x4456d0
mov ecx, dword [ebp - 4]
inc ecx
push ecx
push str.PowerXpressChangeDisplaySettings:_fail_and_retry__d
call fcn.0040acd0
add esp, 8
mov eax, dword [ebp - 4]
inc eax
cmp eax, 0x32
mov dword [ebp - 4], eax
jb 0x4454b0
mov esi, 0x10000
jmp 0x44571e
test dword [0x49a0e8], 0x10000
je 0x445739
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_1__fail_n
call fcn.0040acd0
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
test dword [0x49a0e8], esi
je 0x44571e
push str.PowerXpressChangeDisplaySettings:_desktop_correctly_set_on_target_adapter
call fcn.0040acd0
add esp, 4
cmp dword [ebp - 4], 0x32
jne 0x445742
test dword [0x49a0e8], esi
je 0x445739
push str.PowerXpressChangeDisplaySettings:_End_n
call fcn.0040acd0
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x44576d
test dword [0x49a0e8], esi
je 0x44575e
push str.PowerXpressChangeDisplaySettings:_apply_workaround_to_disable_enable_DWM_n
call fcn.0040acd0
add esp, 4
call fcn.004502e0
cmp eax, 1
jne 0x44576d
call fcn.004502f0
test dword [0x49a0e8], esi
je 0x445782
push str.PowerXpressChangeDisplaySettings:_End_n
call fcn.0040acd0
add esp, 4
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret