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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x169c
call fcn.0045ed20
mov eax, dword [0x4900e8]
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 0x4434b6
push str.PowerXpressChangeDisplaySettings:_Start_n
call fcn.0040aac0
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 0x443500
mov dword [esp + 0x18], ebx
jmp 0x443522
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 0x4435c3
lea edi, [esp + 0xa0c]
lea esi, [esp + 0x968]
mov dword [esp + 0x24], edi
lea ecx, [ecx]
mov eax, dword [edi]
test al, 4
je 0x443578
test al, 1
je 0x443578
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 0x443596
lea edx, [edi + 4]
push edx
call fcn.00441990
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 0x443550
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x44364d
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 0x4435f1
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 0x443520
test dword [0x4900e8], 0x10000
je 0x443d3e
push str.PowerXpressChangeDisplaySettings:_No_primary_desktop__timeout_for_20_secs_n
call fcn.0040aac0
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 0x44366f
test dword [0x4900e8], 0x10000
je 0x44366f
push eax
push str.PowerXpressChangeDisplaySettings:_Before_ChangeDisplaySettingsEx__wait_for_100_d_millisec_n
call fcn.0040aac0
add esp, 8
xor ebx, ebx
lea esi, [esp + 0xa0c]
mov eax, dword [esi]
test al, 1
je 0x44368c
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 0x4436d5
push 0xb
lea edi, [esi - 0xa0]
push str..DISPLAY
push edi
call fcn.0045f501
add esp, 0xc
test eax, eax
jne 0x4436d5
test dword [0x4900e8], 0x10000
je 0x4436d5
mov eax, dword [esi]
push eax
push edi
push str.DeviceName:__s__StateFlag:__.8X
call fcn.0040aac0
add esp, 0xc
inc ebx
add esi, 0x1a8
cmp ebx, 8
jb 0x443678
mov al, byte [esp + 0x10]
test al, 1
jne 0x44370f
test dword [0x4900e8], 0x10000
je 0x443d3e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_integrated_display_device_is_not_enabled_loaded__n
call fcn.0040aac0
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 0x44373e
test dword [0x4900e8], 0x10000
je 0x443d3e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_discrete_display_device_is_not_enabled_loaded__n
call fcn.0040aac0
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 0x44376e
test al, 2
je 0x44376e
test dword [0x4900e8], 0x10000
je 0x443763
push str.PowerXpressChangeDisplaySettings:_already_has_an_extended_desktop_n
call fcn.0040aac0
add esp, 4
mov ecx, 1
mov dword [esp + 0x2c], ecx
jmp 0x4437ab
mov ecx, dword [esp + 0x20]
cmp dword [esp + ecx*4 + 0x30], ebx
jne 0x4437a6
cmp dword [ebp + 8], ebx
jne 0x4437a6
test dword [0x4900e8], 0x10000
je 0x443d88
push str.PowerXpressChangeDisplaySettings:_Os_automatically_setup_primary_to_discrete_already_n
call fcn.0040aac0
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 0x4437ce
xor eax, eax
lea ecx, [ecx]
cmp dword [esp + eax*4 + 0x30], ebx
je 0x4437de
inc eax
cmp eax, 8
jb 0x4437c0
jmp 0x4437f9
xor eax, eax
cmp dword [esp + eax*4 + 0x30], ecx
je 0x4437de
inc eax
cmp eax, 8
jb 0x4437d0
jmp 0x4437f9
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 0x443873
lea eax, [esp + 0x190]
push eax
mov dword [esp + 0x194], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x443873
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 0x443873
call fcn.0044eaf0
test eax, eax
je 0x443873
push 0xc
lea eax, [esp + 0x1a8]
push str.Service_Pack
push eax
mov dword [esp + 0x34], esi
call fcn.0045f501
add esp, 0xc
xor ebx, ebx
test eax, eax
jne 0x443875
mov dword [esp + 0x28], ebx
jmp 0x443875
xor ebx, ebx
test dword [esp + 0x2cc], 0x8000000
je 0x443898
cmp dword [ebp + 8], 1
jne 0x443898
lea ecx, [esp + 0x2d0]
push ecx
call fcn.00442170
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 [0x4900e8]
mov edi, 0x10000
test edi, eax
je 0x44392c
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.0040aac0
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.00451150
test eax, eax
je 0x4439a4
test dword [0x4900e8], 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 0x4439a2
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.0040aac0
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 0x443a77
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 0x443a22
test dword [0x4900e8], edi
je 0x443d3e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_cannot_remove_extended_dekstop_ChangeDisplaySettingsEx_1__fail_n
call fcn.0040aac0
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 [0x4900e8]
je 0x443a50
test edi, eax
je 0x443d3e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_cannot_remove_extended_dekstop_ChangeDisplaySettingsEx_2__fail_n
call fcn.0040aac0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test edi, eax
je 0x443a61
push str.PowerXpressChangeDisplaySettings:_successfully_remove_extended_desktop_before_perform_change_desktop_n
call fcn.0040aac0
add esp, 4
mov ecx, dword [esp + 0x24]
mov eax, 2
cmp ecx, eax
jne 0x443a77
cmp dword [ebp + 8], eax
je 0x443d88
test dword [0x4900e8], edi
je 0x443a8c
push str.PowerXpressChangeDisplaySettings:_Ready_to_ChangeDisplaySettingsEx_n
call fcn.0040aac0
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 0x443ceb
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 0x443b11
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 0x443b44
test dword [0x4900e8], 0x10000
je 0x443b44
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_2__fail_n
call fcn.0040aac0
add esp, 4
push esi
push esi
push esi
push esi
push esi
call edi
test eax, eax
je 0x443b68
test dword [0x4900e8], 0x10000
je 0x443b68
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_3__fail_n
call fcn.0040aac0
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 0x443c43
mov eax, dword [esp + 0x474]
test al, 4
je 0x443be4
test al, 1
je 0x443be4
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 0x443c0a
test dword [0x4900e8], 0x10000
je 0x443c0a
push eax
lea ecx, [esp + 0x3d8]
push ecx
push str.DeviceName:__s__StateFlag:__.8X
call fcn.0040aac0
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 0x443bb2
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x443c4f
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
inc dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp eax, 0xc8
je 0x443c6a
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x443b80
test eax, eax
jbe 0x443c89
mov ecx, dword [0x4900e8]
mov esi, 0x10000
test esi, ecx
je 0x443c8e
push eax
push str.PowerXpressChangeDisplaySettings:_After_ChangeDisplaySettingEx__wait_for_100_d_millisec
call fcn.0040aac0
add esp, 8
jmp 0x443c8e
mov esi, 0x10000
lea eax, [esp + 0x868]
push eax
call fcn.00441990
add esp, 4
test al, al
mov eax, dword [ebp + 8]
je 0x443caa
cmp eax, 2
jmp 0x443cad
cmp eax, 1
je 0x443d0d
push 0x32
call dword [sym.imp.KERNEL32.dll_Sleep]
test dword [0x4900e8], esi
je 0x443cd2
mov ecx, dword [esp + 0x10]
inc ecx
push ecx
push str.PowerXpressChangeDisplaySettings:_fail_and_retry__d
call fcn.0040aac0
add esp, 8
mov eax, dword [esp + 0x10]
inc eax
cmp eax, 0x32
mov dword [esp + 0x10], eax
jb 0x443a90
mov esi, 0x10000
jmp 0x443d22
test dword [0x4900e8], 0x10000
je 0x443d3e
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_1__fail_n
call fcn.0040aac0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test dword [0x4900e8], esi
je 0x443d22
push str.PowerXpressChangeDisplaySettings:_desktop_correctly_set_on_target_adapter
call fcn.0040aac0
add esp, 4
cmp dword [esp + 0x10], 0x32
jne 0x443d47
test dword [0x4900e8], esi
je 0x443d3e
push str.PowerXpressChangeDisplaySettings:_End_n
call fcn.0040aac0
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 0x443d73
test dword [0x4900e8], esi
je 0x443d64
push str.PowerXpressChangeDisplaySettings:_apply_workaround_to_disable_enable_DWM_n
call fcn.0040aac0
add esp, 4
call fcn.0044ead0
cmp eax, 1
jne 0x443d73
call fcn.0044eae0
test dword [0x4900e8], esi
je 0x443d88
push str.PowerXpressChangeDisplaySettings:_End_n
call fcn.0040aac0
add esp, 4
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret