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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x169c
call fcn.0045ef00
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 0x443806
push str.PowerXpressChangeDisplaySettings:_Start_n
call fcn.0040aab0
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 0x443850
mov dword [esp + 0x18], ebx
jmp 0x443872
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 0x443913
lea edi, [esp + 0xa0c]
lea esi, [esp + 0x968]
mov dword [esp + 0x24], edi
lea ecx, [ecx]
mov eax, dword [edi]
test al, 4
je 0x4438c8
test al, 1
je 0x4438c8
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 0x4438e6
lea edx, [edi + 4]
push edx
call fcn.00441ce0
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 0x4438a0
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x44399d
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 0x443941
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 0x443870
test dword [0x4900e8], 0x10000
je 0x444211
push str.PowerXpressChangeDisplaySettings:_No_primary_desktop__timeout_for_20_secs_n
call fcn.0040aab0
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 0x4439bf
test dword [0x4900e8], 0x10000
je 0x4439bf
push eax
push str.PowerXpressChangeDisplaySettings:_Before_ChangeDisplaySettingsEx__wait_for_100_d_millisec_n
call fcn.0040aab0
add esp, 8
xor ebx, ebx
lea esi, [esp + 0xa0c]
mov eax, dword [esi]
test al, 1
je 0x4439dc
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 0x443a25
push 0xb
lea edi, [esi - 0xa0]
push str..DISPLAY
push edi
call fcn.0045f6e1
add esp, 0xc
test eax, eax
jne 0x443a25
test dword [0x4900e8], 0x10000
je 0x443a25
mov eax, dword [esi]
push eax
push edi
push str.DeviceName:__s__StateFlag:__.8X
call fcn.0040aab0
add esp, 0xc
inc ebx
add esi, 0x1a8
cmp ebx, 8
jb 0x4439c8
mov al, byte [esp + 0x10]
test al, 1
jne 0x443a5f
test dword [0x4900e8], 0x10000
je 0x444211
push str.PowerXpressChangeDisplaySettings:_fail_due_to_integrated_display_device_is_not_enabled_loaded__n
call fcn.0040aab0
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 0x443a8e
test dword [0x4900e8], 0x10000
je 0x444211
push str.PowerXpressChangeDisplaySettings:_fail_due_to_discrete_display_device_is_not_enabled_loaded__n
call fcn.0040aab0
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 0x443abe
test al, 2
je 0x443abe
test dword [0x4900e8], 0x10000
je 0x443ab3
push str.PowerXpressChangeDisplaySettings:_already_has_an_extended_desktop_n
call fcn.0040aab0
add esp, 4
mov ecx, 1
mov dword [esp + 0x2c], ecx
jmp 0x443afb
mov ecx, dword [esp + 0x20]
cmp dword [esp + ecx*4 + 0x30], ebx
jne 0x443af6
cmp dword [ebp + 8], ebx
jne 0x443af6
test dword [0x4900e8], 0x10000
je 0x443f49
push str.PowerXpressChangeDisplaySettings:_Os_automatically_setup_primary_to_discrete_already_n
call fcn.0040aab0
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 0x443b1e
xor eax, eax
lea ecx, [ecx]
cmp dword [esp + eax*4 + 0x30], ebx
je 0x443b2e
inc eax
cmp eax, 8
jb 0x443b10
jmp 0x443b49
xor eax, eax
cmp dword [esp + eax*4 + 0x30], ecx
je 0x443b2e
inc eax
cmp eax, 8
jb 0x443b20
jmp 0x443b49
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 0x443bbf
lea eax, [esp + 0x190]
push eax
mov dword [esp + 0x194], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x443bbf
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 0x443bbf
call fcn.0044ef40
test eax, eax
je 0x443bbf
push 0xc
lea eax, [esp + 0x1a8]
push str.Service_Pack
push eax
mov dword [esp + 0x34], esi
call fcn.0045f6e1
add esp, 0xc
test eax, eax
jne 0x443bbf
mov dword [esp + 0x28], eax
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
mov ecx, 0x27
lea edi, [esp + 0xf0]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x50]
push ecx
push 0xffffffffffffffff
lea edx, [esp + 0x624]
push edx
call esi
lea eax, [esp + 0x578]
push eax
push 0xffffffffffffffff
lea ecx, [esp + 0x234]
push ecx
call esi
mov eax, dword [0x4900e8]
mov edi, 0x10000
test edi, eax
je 0x443c53
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0xc8]
mov ecx, dword [esp + 0xb8]
push edx
mov edx, dword [esp + 0xc4]
push eax
mov eax, dword [esp + 0xc4]
push ecx
push edx
push eax
push str.PowerXpressChangeDisplaySettings:_current_mode__.4dx_.4dx_2d__2dHz:_.8x_n
call fcn.0040aab0
add esp, 0x18
lea ecx, [esp + 0xf0]
push ecx
lea edx, [esp + 0x54]
push edx
push 0xffffffffffffffff
lea eax, [esp + 0x238]
push eax
call fcn.00451540
test eax, eax
je 0x443cc9
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 0x443cc9
mov edi, dword [esp + 0x78]
push edi
push esi
push eax
push ecx
push edx
push str.PowerXpressChangeDisplaySettings:_Candidate_mode_to_set__.4dx_.4dx_2d__2dHz:_.8x_n
call fcn.0040aab0
add esp, 0x18
mov eax, dword [esp + 0x2c]
test eax, eax
mov esi, dword [esp + 0xbc]
mov ebx, dword [esp + 0xc0]
mov edi, dword [sym.imp.USER32.dll_ChangeDisplaySettingsExA]
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], ebx
je 0x443daf
xor eax, eax
push eax
push 0x10000001
push eax
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x23c]
push edx
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], eax
call edi
test eax, eax
je 0x443d4f
test dword [0x4900e8], 0x10000
je 0x444211
push str.PowerXpressChangeDisplaySettings:_fail_due_to_cannot_remove_extended_dekstop_ChangeDisplaySettingsEx_1__fail_n
call fcn.0040aab0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0
push 0
push 0
push 0
push 0
call edi
test eax, eax
mov eax, dword [0x4900e8]
je 0x443d85
test eax, 0x10000
je 0x444211
push str.PowerXpressChangeDisplaySettings:_fail_due_to_cannot_remove_extended_dekstop_ChangeDisplaySettingsEx_2__fail_n
call fcn.0040aab0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test eax, 0x10000
je 0x443d99
push str.PowerXpressChangeDisplaySettings:_successfully_remove_extended_desktop_before_perform_change_desktop_n
call fcn.0040aab0
add esp, 4
mov ecx, dword [esp + 0x24]
mov eax, 2
cmp ecx, eax
jne 0x443daf
cmp dword [ebp + 8], eax
je 0x443f49
test dword [0x4900e8], 0x10000
je 0x443dc8
push str.PowerXpressChangeDisplaySettings:_Ready_to_ChangeDisplaySettingsEx_n
call fcn.0040aab0
add esp, 4
test dword [esp + 0x2cc], 0x8000000
je 0x443deb
cmp dword [ebp + 8], 1
jne 0x443deb
lea eax, [esp + 0x2d0]
push eax
call fcn.004424c0
add esp, 4
call fcn.0044e280
cmp eax, 9
jne 0x443f55
xor eax, eax
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], eax
mov word [esp + 0x7c], ax
mov word [esp + 0x7e], ax
mov eax, dword [esp + 0x78]
test eax, 0x20000000
mov dword [esp + 0xbc], esi
mov dword [esp + 0xc0], ebx
je 0x443e32
and eax, 0xdfffffff
mov dword [esp + 0x78], eax
xor esi, esi
push esi
push 0x10000011
push esi
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x23c]
push edx
call edi
test eax, eax
mov ebx, 0x10000
je 0x443e68
test dword [0x4900e8], ebx
je 0x443e68
push str._1_win7:_CDS_fail_n
call fcn.0040aab0
add esp, 4
push esi
push esi
push esi
push esi
push esi
call edi
test eax, eax
je 0x443e88
test dword [0x4900e8], ebx
je 0x443e88
push str._2_win7:_CDS_fail_n
call fcn.0040aab0
add esp, 4
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
je 0x443ee0
test dword [0x4900e8], ebx
je 0x444211
push str._3_win7:_CDS_fail_n
call fcn.0040aab0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push esi
push esi
push esi
push esi
call edi
test eax, eax
je 0x443f00
test dword [0x4900e8], ebx
je 0x443f00
push str._4_win7:_CDS_fail_n
call fcn.0040aab0
add esp, 4
mov eax, dword [esp + 0x28]
test eax, eax
je 0x443f30
test dword [0x4900e8], 0x10000
je 0x443f21
push str.PowerXpressChangeDisplaySettings:_apply_workaround_to_disable_enable_DWM_n
call fcn.0040aab0
add esp, 4
call fcn.0044ef20
cmp eax, 1
jne 0x443f30
call fcn.0044ef30
test dword [0x4900e8], 0x10000
je 0x443f49
push str.PowerXpressChangeDisplaySettings:_End_n
call fcn.0040aab0
add esp, 4
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x10], 0
lea ecx, [ecx]
mov edi, dword [sym.imp.USER32.dll_ChangeDisplaySettingsExA]
xor esi, esi
push esi
push 0x10000001
push esi
lea edx, [esp + 0x5c]
push edx
lea eax, [esp + 0x62c]
push eax
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 0x4441b6
mov eax, dword [esp + 0x78]
test eax, 0x20000000
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], esi
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xc0], edx
mov word [esp + 0x7c], si
mov word [esp + 0x7e], si
je 0x443fe1
and eax, 0xdfffffff
mov dword [esp + 0x78], eax
push esi
push 0x10000011
push esi
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x23c]
push ecx
call edi
test eax, eax
je 0x444014
test dword [0x4900e8], 0x10000
je 0x444014
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_2__fail_n
call fcn.0040aab0
add esp, 4
push esi
push esi
push esi
push esi
push esi
call edi
test eax, eax
je 0x444038
test dword [0x4900e8], 0x10000
je 0x444038
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_3__fail_n
call fcn.0040aab0
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 ebx, ebx
push ebx
lea edx, [esp + 0x3d4]
push edx
xor eax, eax
push ebx
mov ecx, 0x6a
lea edi, [esp + 0x3dc]
rep stosd dword es:[edi], eax
push ebx
mov dword [esp + 0x3e0], 0x1a8
call esi
test eax, eax
je 0x444113
mov eax, dword [esp + 0x474]
test al, 4
je 0x4440b4
test al, 1
je 0x4440b4
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 0x4440da
test dword [0x4900e8], 0x10000
je 0x4440da
push eax
lea eax, [esp + 0x3d8]
push eax
push str.DeviceName:__s__StateFlag:__.8X
call fcn.0040aab0
add esp, 0xc
xor eax, eax
mov ecx, 0x6a
lea edi, [esp + 0x3d0]
rep stosd dword es:[edi], eax
push eax
lea ecx, [esp + 0x3d4]
push ecx
inc ebx
push ebx
push eax
mov dword [esp + 0x3e0], 0x1a8
call esi
test eax, eax
jne 0x444082
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x44411f
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
inc dword [esp + 0x14]
mov eax, dword [esp + 0x14]
cmp eax, 0xc8
je 0x44413a
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x444050
test eax, eax
jbe 0x444159
mov ecx, dword [0x4900e8]
mov esi, 0x10000
test esi, ecx
je 0x44415e
push eax
push str.PowerXpressChangeDisplaySettings:_After_ChangeDisplaySettingEx__wait_for_100_d_millisec
call fcn.0040aab0
add esp, 8
jmp 0x44415e
mov esi, 0x10000
lea edx, [esp + 0x868]
push edx
call fcn.00441ce0
add esp, 4
test al, al
mov eax, dword [ebp + 8]
je 0x44417a
cmp eax, 2
jmp 0x44417d
cmp eax, 1
je 0x4441d8
push 0x32
call dword [sym.imp.KERNEL32.dll_Sleep]
test dword [0x4900e8], esi
je 0x4441a2
mov eax, dword [esp + 0x10]
inc eax
push eax
push str.PowerXpressChangeDisplaySettings:_fail_and_retry__d
call fcn.0040aab0
add esp, 8
mov eax, dword [esp + 0x10]
inc eax
cmp eax, 0x32
mov dword [esp + 0x10], eax
jb 0x443f60
jmp 0x4441ed
test dword [0x4900e8], 0x10000
je 0x444211
push str.PowerXpressChangeDisplaySettings:_fail_due_to_ChangeDisplaySettingsEx_1__fail_n
call fcn.0040aab0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test dword [0x4900e8], esi
je 0x4441ed
push str.PowerXpressChangeDisplaySettings:_desktop_correctly_set_on_target_adapter
call fcn.0040aab0
add esp, 4
cmp dword [esp + 0x10], 0x32
jne 0x443f00
test dword [0x4900e8], 0x10000
je 0x444211
push str.PowerXpressChangeDisplaySettings:_End_n
call fcn.0040aab0
add esp, 4
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret