Function at 0x47a540
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x6670
call fcn.0040ab00
mov ebx, dword [ebp + 8]
lea eax, [esp + 0x48]
push eax
call sub.dwmapi.dll_DwmIsCompositionEnabled
mov ecx, dword [ebx]
test eax, eax
js 0x47a5af
cmp dword [esp + 0x48], 0
je 0x47a5af
test ecx, ecx
je 0x47a589
mov dword [ebx + 4], 0
mov dword [ebx], 0
push dword [ebx + 8]
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
mov dword [ebx], 0
mov dword [ebx + 4], 7
mov dword [ebx + 8], 0x4f98c8
mov esi, str.Desktop_Window_Manager
mov edi, 0x16
cmp dword [ebx + 0xc], 0
jne 0x47a5ef
jmp 0x47a608
test ecx, ecx
je 0x47a5cb
mov dword [ebx + 4], 0
mov dword [ebx], 0
push dword [ebx + 8]
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
mov dword [ebx], 0
mov dword [ebx + 4], 0xc
mov dword [ebx + 8], str.explorer.exe
mov esi, str.Internal
mov edi, 8
cmp dword [ebx + 0xc], 0
je 0x47a608
mov dword [ebx + 0x10], 0
mov dword [ebx + 0xc], 0
push dword [ebx + 0x14]
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
mov dword [ebx + 0xc], 0
mov dword [ebx + 0x10], edi
mov dword [ebx + 0x14], esi
movapd xmm0, xmmword [0x4f98b0]
movupd xmmword [esp + 0x30], xmm0
lea eax, [esp + 0x30]
push eax
push 0x47ad80
push 0
push 0
call dword [sym.imp.USER32.dll_EnumDisplayMonitors]
mov dword [esp + 0x2c], 0x80
mov dword [esp + 0x4c], 0x100
lea eax, [esp + 0x2668]
lea ecx, [esp + 0x4c]
lea edx, [esp + 0x268]
lea esi, [esp + 0x2c]
push 0
push eax
push ecx
push edx
push esi
push 2
call dword [sym.imp.USER32.dll_QueryDisplayConfig]
test eax, eax
jne 0x47ab1c
cmp dword [esp + 0x2c], 0
je 0x47ab1c
xor esi, esi
jmp 0x47a71b
lea edx, [ecx + 1]
mov dword [edi + 0x44], edx
imul ecx, dword [edi + 0x40]
mov edx, dword [esp + 0x20]
mov dword [eax + ecx], edx
mov edx, dword [esp + 0xc]
mov dword [eax + ecx + 4], edx
movsd xmm0, qword [0x4f98c0]
orpd xmm1, xmm0
subsd xmm1, xmm0
orpd xmm2, xmm0
subsd xmm2, xmm0
divsd xmm1, xmm2
movsd qword [eax + ecx + 8], xmm1
mov edx, dword [esp + 0x28]
mov dword [eax + ecx + 0x10], edx
mov edx, dword [esp + 0x44]
mov dword [eax + ecx + 0x14], edx
mov edx, dword [esp + 0x24]
mov dword [eax + ecx + 0x28], edx
mov edx, dword [esp + 0x10]
mov dword [eax + ecx + 0x18], edx
mov edx, dword [esp + 0x18]
mov dword [eax + ecx + 0x20], edx
mov edx, dword [esp + 0x14]
mov dword [eax + ecx + 0x1c], edx
mov edx, dword [esp + 0x1c]
mov dword [eax + ecx + 0x24], edx
and bl, 1
mov byte [eax + ecx + 0x2c], bl
mov edx, dword [esp + 0x40]
mov dword [eax + ecx + 0x30], edx
mov dword [eax + ecx + 0x34], 0
nop
inc esi
cmp esi, dword [esp + 0x2c]
jae 0x47ab1c
lea ecx, [esi + esi*8]
lea eax, [esp + 0x84]
xorpd xmm0, xmm0
movupd xmmword [eax + 0x30], xmm0
movupd xmmword [eax + 0x20], xmm0
movupd xmmword [eax + 0x10], xmm0
movupd xmmword [eax], xmm0
mov dword [esp + 0x70], 1
mov dword [esp + 0x74], 0x54
movsd xmm0, qword [esp + ecx*8 + 0x268]
movsd qword [esp + 0x78], xmm0
mov dword [esp + 0xc], ecx
mov eax, dword [esp + ecx*8 + 0x270]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x70]
push eax
call dword [sym.imp.USER32.dll_DisplayConfigGetDeviceInfo]
test eax, eax
jne 0x47a710
cmp dword [esp + 0x38], 0
jle 0x47a710
mov eax, dword [esp + 0xc]
lea eax, [esp + eax*8]
add eax, 0x268
mov dword [esp + 0x20], eax
mov edi, dword [esp + 0x30]
lea ebx, [edi + 0x6c]
nop word [eax + eax]
lea eax, [edi + 0x2c]
push 0x20
lea ecx, [esp + 0x88]
push ecx
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_wcsncmp
add esp, 0xc
test eax, eax
je 0x47a7e0
add edi, 0x6c
mov eax, ebx
sub eax, dword [esp + 0x30]
sar eax, 2
imul eax, eax, 0x684bda13
add ebx, 0x6c
cmp eax, dword [esp + 0x38]
jl 0x47a7a0
jmp 0x47a710
test edi, edi
je 0x47a710
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov eax, dword [0x5052b0]
mov dword [esp + 0x18], eax
push 0x190
push 0
lea eax, [esp + 0xe0]
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov dword [esp + 0xc4], 2
mov dword [esp + 0xc8], 0x1a4
mov ebx, dword [esp + 0xc]
movsd xmm0, qword [esp + ebx*8 + 0x27c]
movsd qword [esp + 0xcc], xmm0
mov eax, dword [esp + ebx*8 + 0x284]
mov dword [esp + 0xd4], eax
lea eax, [esp + 0xc4]
push eax
call dword [sym.imp.USER32.dll_DisplayConfigGetDeviceInfo]
test eax, eax
jne 0x47a9d3
test byte [esp + 0xd8], 1
jne 0x47a8f6
lea ebx, [esp + 0x168]
push ebx
call sub.api_ms_win_crt_string_l1_1_0.dll_wcslen
add esp, 4
push ebx
push eax
lea eax, [esp + 0x18]
push eax
call fcn.00485cd0
add esp, 0xc
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x18]
push eax
push 0x23
push ebx
call sub.api_ms_win_crt_private_l1_1_0.dll_memchr
mov edx, dword [esp + 0x28]
mov ecx, ebx
add esp, 0xc
mov ebx, eax
sub ebx, ecx
test eax, eax
cmove ebx, edx
mov eax, edx
sub eax, ebx
jbe 0x47a91e
cmp dword [esp + 0x10], 0
je 0x47a922
lea eax, [ecx + ebx]
inc eax
not ebx
add edx, ebx
push edx
push eax
push ecx
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
add esp, 0xc
add ebx, dword [esp + 0x14]
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x18]
mov byte [eax + ebx], 0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
jmp 0x47a92c
lea ebx, [esp + 0xe8]
push ebx
call sub.api_ms_win_crt_string_l1_1_0.dll_wcslen
add esp, 4
push ebx
mov ebx, dword [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
call fcn.00485cd0
add esp, 0xc
jmp 0x47a9d3
mov eax, edx
jmp 0x47a92c
mov dword [esp + 0x14], eax
add ecx, ebx
mov dword [esp + 0x18], ecx
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], ecx
push eax
push 0x23
push ecx
call sub.api_ms_win_crt_private_l1_1_0.dll_memchr
mov edx, dword [esp + 0x30]
add esp, 0xc
mov ecx, eax
sub ecx, edx
test eax, eax
mov eax, dword [esp + 0x1c]
cmove ecx, eax
cmp eax, ecx
jbe 0x47a9d3
cmp dword [esp + 0x10], 0
je 0x47a968
mov dword [esp + 0x14], ecx
add edx, ecx
jmp 0x47a9d0
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov eax, dword [0x5052b0]
mov dword [esp + 0x18], eax
test edx, edx
je 0x47a9d3
mov eax, dword [esp + 0x1c]
inc eax
mov ecx, 0x20
nop
mov ebx, ecx
add ecx, ecx
cmp eax, ebx
ja 0x47a990
push ebx
call sub.api_ms_win_crt_heap_l1_1_0.dll_malloc
add esp, 4
mov dword [esp + 0x28], eax
mov byte [eax], 0
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x1c]
push ebx
push dword [esp + 0x28]
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x34]
add esp, 0xc
mov dword [esp + 0x14], ebx
add edx, ebx
mov ebx, dword [esp + 0xc]
mov byte [edx], 0
mov eax, dword [esp + 0x20]
mov eax, dword [eax + 0xc]
shl eax, 6
mov edx, dword [esp + eax + 0x2678]
mov ecx, dword [esp + eax + 0x267c]
mov eax, dword [esp + ebx*8 + 0x290]
cmp eax, 4
je 0x47a9fc
cmp eax, 2
jne 0x47aa06
mov dword [esp + 0xc], edx
mov dword [esp + 0x20], ecx
jmp 0x47aa0e
mov dword [esp + 0x20], edx
mov dword [esp + 0xc], ecx
add eax, 0xfffffffe
imul ecx, eax, 0x5a
add ecx, 0x5a
xor edx, edx
cmp eax, 3
mov dword [esp + 0x1c], 0
cmovae ecx, edx
mov dword [esp + 0x24], ecx
movss xmm1, dword [esp + ebx*8 + 0x298]
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
sub eax, dword [edi + 8]
mov dword [esp + 0x28], eax
sub ecx, dword [edi + 0xc]
mov dword [esp + 0x44], ecx
movss xmm2, dword [esp + ebx*8 + 0x29c]
mov ecx, dword [esp + ebx*8 + 0x28c]
mov eax, 2
cmp ecx, 0xa
jg 0x47aa71
cmp ecx, 0x80000000
je 0x47aa7b
cmp ecx, 0xffffffff
je 0x47aa84
jmp 0x47aa80
cmp ecx, 0xd
je 0x47aa7b
cmp ecx, 0xb
jne 0x47aa80
mov eax, 1
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x20], 0
mov eax, dword [esp + 0xc]
je 0x47aaf0
test eax, eax
je 0x47aaf0
mov eax, dword [edi]
mov dword [esp + 0x40], eax
movzx ebx, byte [edi + 0x28]
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0x3c]
mov ecx, dword [edi + 0x44]
cmp ecx, dword [edi + 0x48]
jne 0x47a685
lea edx, [ecx + ecx]
test ecx, ecx
mov ecx, 0x10
cmove edx, ecx
mov dword [edi + 0x48], edx
imul edx, dword [edi + 0x40]
push edx
push eax
movapd xmmword [esp + 0x68], xmm1
movapd xmmword [esp + 0x58], xmm2
call sub.api_ms_win_crt_heap_l1_1_0.dll_realloc
movapd xmm2, xmmword [esp + 0x58]
movapd xmm1, xmmword [esp + 0x68]
add esp, 8
mov dword [edi + 0x3c], eax
mov ecx, dword [edi + 0x44]
jmp 0x47a685
cmp dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
je 0x47a710
mov dword [esp + 0x10], 0
push dword [esp + 0x18]
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
jmp 0x47a710
mov eax, dword [esp + 0x30]
test eax, eax
je 0x47ab3d
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
push eax
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
cmp dword [0x505d8c], 0
mov ebx, dword [ebp + 8]
jne 0x47ac59
mov dword [0x505d84], 0
mov dword [0x505d88], 0
mov eax, dword [0x5052b0]
mov dword [0x505d8c], eax
mov dword [0x505d90], 0
mov dword [0x505d94], 0
mov dword [0x505d98], eax
mov dword [0x505d9c], 0
mov dword [0x505da0], 0
mov dword [0x505da4], eax
mov dword [0x505dcc], 0
mov dword [0x505dd0], 0
mov dword [0x505dd4], eax
mov dword [0x505dd8], 0
mov dword [0x505ddc], 0
mov dword [0x505de0], eax
mov dword [0x505de4], 0
mov dword [0x505de8], 0
mov dword [0x505dec], eax
mov dword [0x505df0], 0
mov dword [0x505df4], 0
mov dword [0x505df8], eax
mov dword [0x505da8], 0
mov dword [0x505dac], 0
mov dword [0x505db0], eax
mov dword [0x505db4], 0
mov dword [0x505db8], 0
mov dword [0x505dbc], eax
mov dword [0x505dc0], 0
mov dword [0x505dc4], 0
mov dword [0x505dc8], eax
push 0x505d84
call fcn.0047eb20
add esp, 4
mov esi, dword [0x505dd4]
push 0x4f98fd
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
add esp, 8
test eax, eax
je 0x47ad23
push 0x4f9900
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
add esp, 8
test eax, eax
je 0x47ad23
push str.2022
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
add esp, 8
test eax, eax
je 0x47ad23
push str.2019
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
add esp, 8
test eax, eax
je 0x47ad23
push str.2016
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
add esp, 8
test eax, eax
je 0x47ad23
push 0x4f9919
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
add esp, 8
test eax, eax
je 0x47ad61
push 0x4f991b
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
add esp, 8
test eax, eax
je 0x47ad61
push str.2012_R2
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
add esp, 8
test eax, eax
je 0x47ad61
push str.2012
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strcmp
add esp, 8
test eax, eax
je 0x47ad61
mov esi, str.Aero
mov edi, 4
cmp dword [ebx + 0x30], 0
jne 0x47ad33
jmp 0x47ad4c
mov esi, str.Fluent
mov edi, 6
cmp dword [ebx + 0x30], 0
je 0x47ad4c
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 0
push dword [ebx + 0x38]
call sub.api_ms_win_crt_heap_l1_1_0.dll_free
add esp, 4
mov dword [ebx + 0x30], 0
mov dword [ebx + 0x34], edi
mov dword [ebx + 0x38], esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, str.Metro
mov edi, 5
cmp dword [ebx + 0x30], 0
jne 0x47ad33
jmp 0x47ad4c