Function at 0x457330
Capabilities:
Get common file path
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x10]
sub esp, 0x38
mov ecx, eax
and ecx, 0x2000
push esi
mov esi, dword [ebp + 8]
je 0x457359
cmp dword [esi + 0x2c], 0
jne 0x457359
mov eax, 0x80004005
pop esi
mov esp, ebp
pop ebp
ret 0xc
mov edx, eax
and edx, 0x1000
je 0x457369
cmp dword [esi + 0x18], 0
je 0x45734d
mov eax, dword [esi + 0x18]
push ebx
lea ebx, [esi + 0x18]
mov dword [ebp + 8], eax
mov eax, dword [ebp + 0xc]
push edi
mov dword [ebp + 0x10], 0
mov edi, 0x80004005
test eax, eax
jne 0x4573b8
test ecx, ecx
jne 0x4573b8
mov ecx, esi
call fcn.00456dc0
push ebx
call dword [sym.imp.SHELL32.dll_SHGetDesktopFolder]
test eax, eax
js 0x457452
mov edx, dword [esi + 0xc]
lea ecx, [ebp + 0x10]
push ecx
push 0
push edx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov edi, eax
jmp 0x45744e
test edx, edx
je 0x4573e5
push eax
mov eax, dword [esi + 0x2c]
push eax
call dword [sym.imp.SHELL32.dll_ILCombine]
mov edx, dword [ebp + 0xc]
push ebx
push 0x4c994c
mov dword [ebp + 0x10], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
push 0
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
mov edi, eax
jmp 0x45744e
test ecx, ecx
je 0x45740a
mov edx, dword [esi + 0x2c]
push 0
lea ecx, [ebp + 0x10]
push ecx
push edx
lea ecx, [esi + 0x24]
call fcn.004418c0
test al, al
jne 0x457414
mov eax, edi
pop edi
pop ebx
pop esi
mov esp, ebp
pop ebp
ret 0xc
push eax
call dword [sym.imp.SHELL32.dll_ILClone]
mov dword [ebp + 0x10], eax
lea eax, [ebp + 0xc]
push eax
call dword [sym.imp.SHELL32.dll_SHGetDesktopFolder]
mov edi, eax
test edi, edi
js 0x457452
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov ecx, dword [eax]
push ebx
push 0x4c994c
push 0
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
test eax, eax
mov eax, dword [ebp + 0xc]
js 0x45744c
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
jmp 0x45744e
mov dword [ebx], eax
test edi, edi
jns 0x457482
cmp dword [ebp + 0x10], 0
je 0x457464
lea ecx, [ebp + 0x10]
push ecx
lea ecx, [esi + 0x24]
call fcn.004418a0
mov eax, dword [ebx]
test eax, eax
je 0x457472
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov ecx, dword [ebp + 8]
mov eax, edi
pop edi
mov dword [ebx], ecx
pop ebx
pop esi
mov esp, ebp
pop ebp
ret 0xc
cmp dword [ebx], 0
je 0x457705
cmp dword [ebp + 0x10], 0
je 0x457705
mov eax, 4
lea edi, [esi + 0x1c]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
mov eax, dword [edi]
test eax, eax
je 0x4574b5
mov edx, dword [eax]
mov edx, dword [edx + 0x2c]
lea ecx, [ebp - 0x10]
push ecx
push eax
call edx
mov eax, dword [edi]
mov edx, dword [esi + 0xc]
push edi
mov dword [ebp + 0xc], eax
mov eax, dword [ebx]
push 0x4c993c
mov dword [edi], 0
mov dword [ebp - 8], 0
mov ecx, dword [eax]
push edx
push eax
mov eax, dword [ecx + 0x20]
call eax
mov dword [ebp - 4], eax
test eax, eax
js 0x457505
mov eax, dword [edi]
mov ecx, dword [eax]
lea edx, [ebp - 8]
push edx
push 0x4e81cc
push esi
lea edx, [ebp - 0x10]
push edx
mov edx, dword [ebp + 0xc]
push edx
push eax
mov eax, dword [ecx + 0x24]
call eax
mov dword [ebp - 4], eax
test eax, eax
jns 0x457555
mov eax, dword [edi]
test eax, eax
je 0x45752e
mov ecx, dword [eax]
mov edx, dword [ecx + 0x1c]
push 0
push eax
call edx
mov eax, dword [edi]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x28]
push eax
call edx
mov eax, dword [edi]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [ebp + 0xc]
mov dword [edi], eax
lea ecx, [ebp + 0x10]
push ecx
lea ecx, [esi + 0x24]
call fcn.004418a0
mov eax, dword [ebx]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 4]
pop edi
mov dword [ebx], ecx
pop ebx
pop esi
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [esi + 0x14]
push edx
call dword [sym.imp.USER32.dll_IsWindow]
mov ebx, dword [sym.imp.USER32.dll_SetWindowLongW]
test eax, eax
je 0x4575a3
cmp dword [0x4efe38], 0
je 0x4575a3
mov eax, dword [esi + 0x14]
push eax
call dword [sym.imp.USER32.dll_IsWindowUnicode]
test eax, eax
je 0x457591
mov ecx, dword [0x4efe38]
mov edx, dword [esi + 0x14]
push ecx
push 0xfffffffffffffffc
push edx
call ebx
jmp 0x4575a3
mov eax, dword [0x4efe38]
mov ecx, dword [esi + 0x14]
push eax
push 0xfffffffffffffffc
push ecx
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov eax, dword [ebp - 8]
push eax
mov dword [esi + 0x14], eax
call dword [sym.imp.USER32.dll_IsWindowUnicode]
test eax, eax
mov eax, dword [esi + 0x14]
push 0xfffffffffffffffc
push eax
je 0x4575d4
call dword [sym.imp.USER32.dll_GetWindowLongW]
push 0x457080
mov dword [0x4efe38], eax
mov edx, dword [esi + 0x14]
push 0xfffffffffffffffc
push edx
call ebx
jmp 0x4575f0
call dword [sym.imp.USER32.dll_GetWindowLongA]
push 0x457080
mov dword [0x4efe38], eax
mov eax, dword [esi + 0x14]
push 0xfffffffffffffffc
push eax
call dword [sym.imp.USER32.dll_SetWindowLongA]
cmp dword [esi + 0x2c], 0
lea ebx, [esi + 0x2c]
je 0x457602
push ebx
lea ecx, [esi + 0x24]
call fcn.004418a0
mov ecx, dword [ebp + 0x10]
mov dword [ebx], ecx
mov ebx, dword [ebp + 0xc]
test ebx, ebx
je 0x457628
mov edx, dword [ebx]
mov eax, dword [edx + 0x1c]
push 0
push ebx
call eax
mov ecx, dword [ebx]
mov edx, dword [ecx + 0x28]
push ebx
call edx
mov eax, dword [ebx]
mov ecx, dword [eax + 8]
push ebx
call ecx
mov eax, dword [ebp + 8]
test eax, eax
je 0x457637
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov ecx, esi
call fcn.00456d70
mov ebx, eax
call dword [sym.imp.USER32.dll_GetFocus]
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
push ecx
push 0
cmp eax, ebx
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push 0x8008
push edx
sete byte [ebp + 0xf]
call ebx
mov edi, dword [edi]
mov eax, dword [edi]
mov edx, dword [eax + 0x1c]
xor ecx, ecx
cmp byte [ebp + 0xf], cl
setne cl
inc ecx
push ecx
push edi
call edx
mov eax, dword [esi + 0x14]
push 0
push 0x4c49d0
push 0
push eax
call dword [sym.imp.USER32.dll_FindWindowExW]
lea ecx, [ebp - 0x38]
push ecx
push 0
mov edi, eax
push 0x102b
push edi
mov dword [ebp - 0x28], 0xf
mov dword [ebp - 0x2c], 3
call ebx
push 1
push edi
call dword [sym.imp.USER32.dll_ShowWindow]
mov edx, dword [esi + 0x14]
mov eax, dword [esi + 0x10]
push edx
push 0
push 0x8009
push eax
call ebx
test edi, edi
je 0x4576fa
cmp dword [0x4efe18], 6
jne 0x4576fa
push 0xffffffffffffffec
push edi
call dword [sym.imp.USER32.dll_GetWindowLongW]
or eax, 0x200
push eax
push 0xffffffffffffffec
push edi
call dword [sym.imp.USER32.dll_SetWindowLongW]
push 0x37
push 0
push 0
push 0
push 0
push 0
push edi
call dword [sym.imp.USER32.dll_SetWindowPos]
pop edi
pop ebx
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret 0xc
pop edi
pop ebx
mov eax, 0x80004005
pop esi
mov esp, ebp
pop ebp
ret 0xc