Function at 0x403717
Capabilities:
Check os version
Find taskbar
Get common file path

Disassembly:
mov eax, 0x40d9d0
call fcn.0040d1a0
sub esp, 0xf0
push ebx
push esi
mov ebx, ecx
push edi
push ebx
lea ecx, [ebp - 0x68]
call sub.MFC42.DLL_CPaintDC::CPaintDC
mov esi, dword [sym.imp.MSVCRT.dll_malloc]
and dword [ebp - 4], 0
mov edi, 0xe290
push edi
call esi
mov dword [ebx + 0xa8], eax
pop ecx
xor eax, eax
mov ecx, dword [ebx + 0xa8]
add eax, 0xe8
and dword [eax + ecx - 0x14], 0
cmp eax, edi
jl 0x403750
mov eax, dword [ebx + 0x240]
mov edi, dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov dword [ebx + 0x214], eax
mov eax, dword [ebx + 0x244]
shl eax, 1
mov dword [ebx + 0x218], eax
lea eax, [ebp - 0x68]
neg eax
sbb eax, eax
and eax, dword [ebp - 0x64]
push eax
call edi
push eax
lea ecx, [ebx + 0x1f8]
call sub.MFC42.DLL_CDC::Attach
mov eax, dword [ebx + 0x218]
mov ecx, dword [ebx + 0x214]
push eax
push ecx
push dword [ebp - 0x64]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push eax
lea ecx, [ebx + 0x208]
call sub.MFC42.DLL_CGdiObject::Attach
lea eax, [ebx + 0x208]
test eax, eax
je 0x4037cd
mov eax, dword [eax + 4]
push eax
push dword [ebx + 0x1fc]
call sub.MFC42.DLL_CDC::SelectGdiObject
mov dword [ebx + 0x210], eax
push 0
lea eax, [ebp - 0x14]
push 0
push eax
lea ecx, [ebx + 0x1f8]
call sub.MFC42.DLL_CDC::SetWindowOrg
mov eax, dword [ebx + 0x218]
imul eax, dword [ebx + 0x214]
shl eax, 2
push eax
call esi
mov dword [ebx + 0x21c], eax
lea eax, [ebp - 0x68]
neg eax
sbb eax, eax
pop ecx
and eax, dword [ebp - 0x64]
push eax
call edi
push eax
lea ecx, [ebx + 0x220]
call sub.MFC42.DLL_CDC::Attach
mov eax, dword [ebx + 0x218]
mov ecx, dword [ebx + 0x214]
push eax
push ecx
push dword [ebp - 0x64]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push eax
lea ecx, [ebx + 0x230]
call sub.MFC42.DLL_CGdiObject::Attach
lea eax, [ebx + 0x230]
test eax, eax
je 0x403855
mov eax, dword [eax + 4]
push eax
push dword [ebx + 0x224]
call sub.MFC42.DLL_CDC::SelectGdiObject
mov dword [ebx + 0x238], eax
push 0
lea eax, [ebp - 0x14]
push 0
push eax
lea ecx, [ebx + 0x220]
call sub.MFC42.DLL_CDC::SetWindowOrg
mov eax, dword [ebx + 0x218]
imul eax, dword [ebx + 0x214]
shl eax, 2
push eax
call esi
mov dword [ebx + 0x23c], eax
mov eax, dword [ebx + 0x240]
mov dword [ebx + 0x1ec], eax
mov eax, dword [ebx + 0x244]
mov dword [ebx + 0x1f0], eax
lea eax, [ebp - 0x68]
neg eax
sbb eax, eax
pop ecx
and eax, dword [ebp - 0x64]
push eax
call edi
push eax
lea ecx, [ebx + 0x1d0]
call sub.MFC42.DLL_CDC::Attach
mov eax, dword [ebx + 0x1f0]
mov ecx, dword [ebx + 0x1ec]
push eax
push ecx
push dword [ebp - 0x64]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push eax
lea ecx, [ebx + 0x1e0]
call sub.MFC42.DLL_CGdiObject::Attach
lea eax, [ebx + 0x1e0]
test eax, eax
je 0x4038f5
mov eax, dword [eax + 4]
push eax
push dword [ebx + 0x1d4]
call sub.MFC42.DLL_CDC::SelectGdiObject
mov dword [ebx + 0x1e8], eax
push 0
lea eax, [ebp - 0x14]
push 0
push eax
lea ecx, [ebx + 0x1d0]
call sub.MFC42.DLL_CDC::SetWindowOrg
mov eax, dword [ebx + 0x1f0]
imul eax, dword [ebx + 0x1ec]
shl eax, 2
push eax
call esi
mov dword [ebx + 0x1f4], eax
lea eax, [ebp - 0x68]
neg eax
sbb eax, eax
pop ecx
and eax, dword [ebp - 0x64]
push eax
call edi
push eax
lea ecx, [ebx + 0x1b0]
call sub.MFC42.DLL_CDC::Attach
mov eax, dword [ebx + 0x1f0]
mov ecx, dword [ebx + 0x1ec]
push eax
push ecx
push dword [ebp - 0x64]
lea edi, [ebx + 0x1c0]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
push eax
mov ecx, edi
call sub.MFC42.DLL_CGdiObject::Attach
test edi, edi
je 0x403979
mov edi, dword [edi + 4]
push edi
push dword [ebx + 0x1b4]
call sub.MFC42.DLL_CDC::SelectGdiObject
xor edi, edi
mov dword [ebx + 0x1c8], eax
push edi
lea eax, [ebp - 0x14]
push edi
push eax
lea ecx, [ebx + 0x1b0]
call sub.MFC42.DLL_CDC::SetWindowOrg
mov eax, dword [ebx + 0x1f0]
imul eax, dword [ebx + 0x1ec]
shl eax, 2
push eax
call esi
mov dword [esp], 0x4146c4
push str.Shell_TrayWnd
mov dword [ebx + 0x1cc], eax
call dword [sym.imp.USER32.dll_FindWindowA]
push eax
call sub.MFC42.DLL_CWnd::FromHandle
mov esi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
cmp eax, edi
mov dword [ebx + 0x48], 0x60
je 0x4039f9
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_GetDC]
push eax
call sub.MFC42.DLL_CDC::FromHandle
push 0x5a
push dword [eax + 8]
call esi
mov dword [ebx + 0x48], eax
cmp dword [ebx + 0x44], 0xffffffff
jne 0x403a0c
push 0x5a
push dword [ebx + 0x200]
call esi
mov dword [ebx + 0x44], eax
lea eax, [ebp - 0xfc]
mov dword [ebp - 0xfc], 0x94
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0xec], 2
jne 0x403a49
cmp dword [ebp - 0xf8], 6
jb 0x403a49
push 0x7f89
push edi
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [ebx + 0x270], eax
jmp 0x403ab3
lea ecx, [ebp - 0x10]
call fcn.0040cf46
mov eax, 0x104
lea ecx, [ebp - 0x10]
push eax
push eax
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::GetBuffer
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push 0xffffffffffffffff
lea ecx, [ebp - 0x10]
call sub.MFC42.DLL_CString::ReleaseBuffer
push str.winhlp32.exe
lea ecx, [ebp - 0x10]
call sub.MFC42.DLL_CString::operator
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
cmp esi, edi
je 0x403aa0
push 0x6a
push esi
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [ebx + 0x270], eax
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
and byte [ebp - 4], 0
lea ecx, [ebp - 0x10]
call sub.MFC42.DLL_CString::CString
push 1
lea esi, [ebx + 0x5c]
sub esp, 0x3c
mov byte [ebx + 0x180], 1
push 0xf
pop ecx
mov edi, esp
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
call fcn.00403cb8
mov ecx, ebx
call fcn.004069aa
push dword [ebx + 0x278]
mov ecx, ebx
call fcn.00403bb5
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x68]
call fcn.0040cfdc
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret