Function at 0x46f240
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x488dac
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x288
mov eax, dword [0x4ce19c]
push ebp
mov ebp, dword [esp + 0x29c]
push edi
push 0
mov dword [esp + 0x20], ecx
push 0x3c
mov ecx, ebp
mov dword [esp + 0x294], eax
call dword [sym.imp.MFC71U.DLL_CWnd::FilterToolTipMessage]
mov edi, eax
cmp edi, 0xffffffff
je 0x46f8b5
push ebx
lea ebx, [edi + 1]
push ebx
push 0x3e
mov ecx, ebp
call dword [sym.imp.MFC71U.DLL_CWnd::FilterToolTipMessage]
cmp eax, 0xffffffff
je 0x46f8b4
push esi
mov esi, eax
sub esi, edi
lea eax, [esi - 1]
push eax
push ebx
lea ecx, [esp + 0x18]
push ecx
mov ecx, ebp
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::Mid]
inc esi
push esi
push edi
lea edx, [esp + 0x28]
push edx
mov ecx, ebp
mov dword [esp + 0x2ac], 0
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::Mid]
push 0
mov bl, 1
push str.PATH_
lea ecx, [esp + 0x18]
mov byte [esp + 0x2a8], bl
mov byte [esp + 0x21], 0
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::Find]
cmp eax, 0xffffffff
pop esi
lea ecx, [esp + 0xc]
je 0x46f335
push 5
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.MFC71U.DLL_COleMessageFilter::XMessageFilter::MessagePending]
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x2a0], 2
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::operator_1]
lea ecx, [esp + 0x18]
mov byte [esp + 0x29c], bl
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
mov byte [esp + 0x15], bl
jmp 0x46f37c
push 0
push str.FOLDER_
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::Find]
cmp eax, 0xffffffff
je 0x46f37c
push 7
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x14]
call dword [sym.imp.MFC71U.DLL_COleMessageFilter::XMessageFilter::MessagePending]
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x2a0], 3
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::operator_1]
lea ecx, [esp + 0x18]
mov byte [esp + 0x29c], bl
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
push str.Application_Data
lea ecx, [esp + 0x10]
mov byte [esp + 0x1b], 0
mov byte [esp + 0x1a], 0
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f3a3
mov eax, 0x1c
jmp 0x46f735
push str.Cookies
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f3c0
mov eax, 0x21
jmp 0x46f735
push str.Desktop
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f3dd
mov eax, 0x19
jmp 0x46f735
push str.Favorites
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f3fa
mov eax, 6
jmp 0x46f735
push str.My_Documents
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
je 0x46f5bd
push str.My_Music
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f42e
mov eax, 0xd
jmp 0x46f735
push str.Programs
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f44b
mov eax, 2
jmp 0x46f735
push str.Start_Menu
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f468
mov eax, 0xb
jmp 0x46f735
push str.Startup
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f485
mov eax, 7
jmp 0x46f735
push str.Templates
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f4a2
mov eax, 0x15
jmp 0x46f735
push str.My_Videos
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f4bf
mov eax, 0xe
jmp 0x46f735
push str.Temporary_Internet_Files
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f4dc
mov eax, 0x20
jmp 0x46f735
push str.NetHood
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f4f9
mov eax, 0x13
jmp 0x46f735
push str.Program_Files
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f516
mov eax, 0x26
jmp 0x46f735
push str.Fonts
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f533
mov eax, 0x14
jmp 0x46f735
push str.History
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f550
mov eax, 0x22
jmp 0x46f735
push str.System32
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f56d
mov eax, 0x25
jmp 0x46f735
push str.Windows
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f58a
mov eax, 0x24
jmp 0x46f735
push str.Documents_and_Settings
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f67b
call fcn.00457b70
neg al
mov byte [esp + 0x17], bl
sbb eax, eax
and eax, 0xfffffff8
add eax, 0x21
cmp eax, 0xc
jne 0x46f731
push str.Personal
lea ecx, [esp + 0x40]
call fcn.00414780
push str.SOFTWAREMicrosoftWindowsCurrentVersionExplorerUser_Shell_Folders
lea ecx, [esp + 0x34]
mov byte [esp + 0x2a0], 4
call fcn.00414780
push 0
push 0
push 0x20019
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x40]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [esp + 0x60]
mov byte [esp + 0x2b4], 5
call fcn.0042cae0
lea ecx, [esp + 0x30]
mov byte [esp + 0x29c], 8
call fcn.004034a5
lea ecx, [esp + 0x3c]
mov byte [esp + 0x29c], 7
call fcn.004034a5
lea ecx, [esp + 0x48]
call fcn.0041a280
test al, al
je 0x46f6f1
lea ecx, [esp + 0x24]
call fcn.00414090
push 0
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x50]
mov byte [esp + 0x2a4], 9
call fcn.0042c820
test al, al
je 0x46f6a0
mov edx, dword [esp + 0x28]
push edx
push 0x48c7b8
push 0x208
lea eax, [esp + 0x94]
push eax
jmp 0x46f6c6
push str.Local_Settings
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_CListBox::CompareItem]
test eax, eax
jne 0x46f74e
mov eax, 0x20
mov byte [esp + 0x16], bl
jmp 0x46f735
call fcn.00457b70
test al, al
mov eax, str.Documents
jne 0x46f6b3
mov eax, str.My_Documents
push eax
push 0x48c7b8
push 0x208
lea ecx, [esp + 0x94]
push ecx
call fcn.00403fa3
add esp, 0x10
lea ecx, [esp + 0x24]
mov byte [esp + 0x29c], 7
call fcn.004034a5
lea ecx, [esp + 0x48]
mov byte [esp + 0x29c], bl
call fcn.0042cb50
jmp 0x46f76d
call fcn.00457b70
test al, al
mov eax, str.Documents
jne 0x46f704
mov eax, str.My_Documents
push eax
push 0x48c7b8
lea edx, [esp + 0x90]
push 0x208
push edx
call fcn.00403fa3
add esp, 0x10
lea ecx, [esp + 0x48]
mov byte [esp + 0x29c], bl
call fcn.0042cb50
jmp 0x46f76d
test eax, eax
je 0x46f74e
lea ecx, [esp + 0x88]
push ecx
push 0
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
je 0x46f76d
mov edx, dword [esp + 0xc]
push edx
push 0x48c7b8
lea eax, [esp + 0x90]
push 0x208
push eax
call fcn.00403fa3
add esp, 0x10
lea ecx, [esp + 0x88]
push ecx
lea ecx, [esp + 0x14]
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
mov bl, 0xa
push 0x5c
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a0], bl
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::TrimLeft_1]
mov al, byte [esp + 0x17]
test al, al
je 0x46f7e5
push 3
push 0x5c
lea ecx, [esp + 0x18]
call dword [sym.imp.MFC71U.DLL_CWnd::FilterToolTipMessage]
cmp eax, 0xffffffff
je 0x46f82c
push eax
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x18]
call dword [sym.imp.MFC71U.DLL_CToolBar::Layout]
mov byte [esp + 0x29c], 0xb
push eax
lea ecx, [esp + 0x14]
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::operator_1]
lea ecx, [esp + 0x18]
mov byte [esp + 0x29c], bl
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
jmp 0x46f82c
mov al, byte [esp + 0x16]
test al, al
je 0x46f82c
call fcn.00457b70
test al, al
lea ecx, [esp + 0x10]
jne 0x46f821
push 0x5c
call dword [sym.imp.MFC71U.DLL_COleMessageFilter::XMessageFilter::RetryRejectedCall]
cmp eax, 0xffffffff
je 0x46f82c
push eax
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x18]
call dword [sym.imp.MFC71U.DLL_CToolBar::Layout]
mov byte [esp + 0x29c], 0xc
jmp 0x46f7c7
push str.Local_Settings
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::operator_2]
mov al, byte [esp + 0x15]
test al, al
jne 0x46f87a
push 0x5c
lea ecx, [esp + 0x14]
call dword [sym.imp.MFC71U.DLL_COleMessageFilter::XMessageFilter::RetryRejectedCall]
cmp eax, 0xffffffff
je 0x46f87a
inc eax
push eax
lea ecx, [esp + 0x1c]
push ecx
lea ecx, [esp + 0x18]
call dword [sym.imp.MFC71U.DLL_COleMessageFilter::XMessageFilter::MessagePending]
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x2a0], 0xd
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::operator_1]
lea ecx, [esp + 0x18]
mov byte [esp + 0x29c], bl
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
push edx
push eax
mov ecx, ebp
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::Replace]
mov ecx, dword [esp + 0x20]
push ebp
call fcn.0046f240
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x1c]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0xc]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
pop ebx
mov ecx, dword [esp + 0x290]
pop edi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x288]
pop ebp
call fcn.00475533
add esp, 0x294
ret 4