Function at 0x47a770
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 sym.__alloca
mov ebx, dword [ebp + 8]
lea eax, [esp + 0x48]
push eax
call sym._DwmIsCompositionEnabled_4
mov ecx, dword [ebx]
test eax, eax
js 0x47a7df
cmp dword [esp + 0x48], 0
je 0x47a7df
test ecx, ecx
je 0x47a7b9
mov dword [ebx + 4], 0
mov dword [ebx], 0
push dword [ebx + 8]
call sym._free
add esp, 4
mov dword [ebx], 0
mov dword [ebx + 4], 7
mov dword [ebx + 8], 0x4f99a8
mov esi, str.Desktop_Window_Manager
mov edi, 0x16
cmp dword [ebx + 0xc], 0
jne 0x47a81f
jmp 0x47a838
test ecx, ecx
je 0x47a7fb
mov dword [ebx + 4], 0
mov dword [ebx], 0
push dword [ebx + 8]
call sym._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 0x47a838
mov dword [ebx + 0x10], 0
mov dword [ebx + 0xc], 0
push dword [ebx + 0x14]
call sym._free
add esp, 4
mov dword [ebx + 0xc], 0
mov dword [ebx + 0x10], edi
mov dword [ebx + 0x14], esi
movapd xmm0, xmmword [0x4f9990]
movupd xmmword [esp + 0x30], xmm0
lea eax, [esp + 0x30]
push eax
push dbg._MonitorEnumProc@16
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 0x47ad4c
cmp dword [esp + 0x2c], 0
je 0x47ad4c
xor esi, esi
jmp 0x47a94b
lea edx, [ecx + 1]
mov dword [edi + 0x44], edx
imul ecx, dword [edi + 0x40]
mov edx, dword [sourceName.header]
mov dword [eax + ecx], edx
mov edx, dword [esp + 0xc]
mov dword [eax + ecx + 4], edx
movsd xmm0, qword [0x4f99a0]
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 0x47ad4c
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 [targetName.header], 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 0x47a940
cmp dword [esp + 0x38], 0
jle 0x47a940
mov eax, dword [esp + 0xc]
lea eax, [esp + eax*8]
add eax, 0x268
mov dword [sourceName.header], eax
mov edi, dword [esp + 0x30]
lea ebx, [edi + 0x6c]
nop word [eax + eax]
lea eax, [edi + 0x2c]
push 0x20
lea ecx, [targetName.flags]
push ecx
push eax
call sym._wcsncmp
add esp, 0xc
test eax, eax
je 0x47aa10
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 0x47a9d0
jmp 0x47a940
test edi, edi
je 0x47a940
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 sym._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 0x47ac03
test byte [esp + 0xd8], 1
jne 0x47ab26
lea ebx, [esp + 0x168]
push ebx
call sym._wcslen
add esp, 4
push ebx
push eax
lea eax, [esp + 0x18]
push eax
call dbg.ffStrbufSetNWS
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 sym._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 0x47ab4e
cmp dword [esp + 0x10], 0
je 0x47ab52
lea eax, [ecx + ebx]
inc eax
not ebx
add edx, ebx
push edx
push eax
push ecx
call sym._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 0x47ab5c
lea ebx, [esp + 0xe8]
push ebx
call sym._wcslen
add esp, 4
push ebx
mov ebx, dword [esp + 0x10]
push eax
lea eax, [esp + 0x18]
push eax
call dbg.ffStrbufSetNWS
add esp, 0xc
jmp 0x47ac03
mov eax, edx
jmp 0x47ab5c
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 sym._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 0x47ac03
cmp dword [esp + 0x10], 0
je 0x47ab98
mov dword [esp + 0x14], ecx
add edx, ecx
jmp 0x47ac00
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
mov eax, dword [0x5052b0]
mov dword [esp + 0x18], eax
test edx, edx
je 0x47ac03
mov eax, dword [esp + 0x1c]
inc eax
mov ecx, 0x20
nop
mov ebx, ecx
add ecx, ecx
cmp eax, ebx
ja 0x47abc0
push ebx
call sym._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 sym._memcpy
mov edx, dword [sourceName.viewGdiDeviceName]
add esp, 0xc
mov dword [esp + 0x14], ebx
add edx, ebx
mov ebx, dword [esp + 0xc]
mov byte [edx], 0
mov eax, dword [sourceName.header]
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 0x47ac2c
cmp eax, 2
jne 0x47ac36
mov dword [esp + 0xc], edx
mov dword [sourceName.header], ecx
jmp 0x47ac3e
mov dword [sourceName.header], 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 0x47aca1
cmp ecx, 0x80000000
je 0x47acab
cmp ecx, 0xffffffff
je 0x47acb4
jmp 0x47acb0
cmp ecx, 0xd
je 0x47acab
cmp ecx, 0xb
jne 0x47acb0
mov eax, 1
mov dword [esp + 0x1c], eax
cmp dword [sourceName.header], 0
mov eax, dword [esp + 0xc]
je 0x47ad20
test eax, eax
je 0x47ad20
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 0x47a8b5
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 sym._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 0x47a8b5
cmp dword [esp + 0x10], 0
mov dword [esp + 0x14], 0
je 0x47a940
mov dword [esp + 0x10], 0
push dword [esp + 0x18]
call sym._free
add esp, 4
jmp 0x47a940
mov eax, dword [esp + 0x30]
test eax, eax
je 0x47ad6d
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
push eax
call sym._free
add esp, 4
cmp dword [0x505d8c], 0
mov ebx, dword [ebp + 8]
jne 0x47ae89
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 dbg.ffDetectOSImpl
add esp, 4
mov esi, dword [0x505dd4]
push 0x4f99dd
push esi
call sym._strcmp
add esp, 8
test eax, eax
je 0x47af53
push 0x4f99e0
push esi
call sym._strcmp
add esp, 8
test eax, eax
je 0x47af53
push str.2022
push esi
call sym._strcmp
add esp, 8
test eax, eax
je 0x47af53
push str.2019
push esi
call sym._strcmp
add esp, 8
test eax, eax
je 0x47af53
push str.2016
push esi
call sym._strcmp
add esp, 8
test eax, eax
je 0x47af53
push 0x4f99f9
push esi
call sym._strcmp
add esp, 8
test eax, eax
je 0x47af91
push 0x4f99fb
push esi
call sym._strcmp
add esp, 8
test eax, eax
je 0x47af91
push str.2012_R2
push esi
call sym._strcmp
add esp, 8
test eax, eax
je 0x47af91
push str.2012
push esi
call sym._strcmp
add esp, 8
test eax, eax
je 0x47af91
mov esi, str.Aero
mov edi, 4
cmp dword [ebx + 0x30], 0
jne 0x47af63
jmp 0x47af7c
mov esi, str.Fluent
mov edi, 6
cmp dword [ebx + 0x30], 0
je 0x47af7c
mov dword [ebx + 0x34], 0
mov dword [ebx + 0x30], 0
push dword [ebx + 0x38]
call sym._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 0x47af63
jmp 0x47af7c