Function at 0x101a1f2
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x570
push esi
push edi
push 1
push 0xb
push dword [ebp + 8]
mov dword [ebp - 8], ecx
call dword [sym.imp.SHELL32.dll_SHCloneSpecialIDList]
mov ecx, dword [ebp - 8]
mov esi, eax
xor edi, edi
push edi
mov dword [ebp - 0x14], esi
call fcn.01018ddb
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetForegroundWindow]
cmp esi, edi
je 0x101a4b8
push esi
call dword [sym.imp.SHELL32.dll_ILFindLastID]
push eax
call dword [sym.imp.SHELL32.dll_ILClone]
push esi
mov dword [ebp - 0x10], eax
call dword [sym.imp.SHELL32.dll_ILRemoveLastID]
cmp dword [ebp - 0x10], edi
je 0x101a4af
push esi
call fcn.010283b3
mov esi, eax
cmp esi, edi
mov dword [ebp - 0x18], esi
je 0x101a4a6
call dword [sym.imp.USER32.dll_CreatePopupMenu]
cmp eax, edi
mov dword [ebp - 4], eax
je 0x101a4a0
mov eax, dword [esi]
lea ecx, [ebp - 0xc]
push ecx
push edi
push 0x100556c
lea ecx, [ebp - 0x10]
push ecx
push 1
push dword [ebp + 8]
push esi
call dword [eax + 0x28]
test eax, eax
jl 0x101a497
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
push 2
push 0x7fef
push 2
push edi
push dword [ebp - 4]
push eax
call dword [ecx + 0xc]
test eax, eax
jl 0x101a48b
push ebx
mov ebx, dword [sym.imp.USER32.dll_LoadStringW]
push 0x104
lea eax, [ebp - 0x264]
push eax
push 0x2d0
push dword [0x103d768]
call ebx
mov esi, dword [sym.imp.USER32.dll_AppendMenuW]
lea eax, [ebp - 0x264]
push eax
push 0x7ff2
push edi
push dword [ebp - 4]
call esi
push 0x400000
call dword [sym.imp.SHELL32.dll_SHRestricted]
test eax, eax
jne 0x101a385
lea eax, [ebp - 0x264]
push eax
push edi
push edi
push 0x16
push edi
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
neg eax
sbb eax, eax
inc eax
mov dword [ebp - 0x1c], eax
je 0x101a385
call dword [sym.imp.SHELL32.dll_IsUserAnAdmin]
cmp eax, edi
je 0x101a385
push edi
push edi
push 0x800
push dword [ebp - 4]
call esi
push 0x104
lea eax, [ebp - 0x264]
push eax
push 0x2ce
push dword [0x103d768]
call ebx
lea eax, [ebp - 0x264]
push eax
push 0x7ff0
push edi
push dword [ebp - 4]
call esi
push 0x104
lea eax, [ebp - 0x264]
push eax
push 0x2cf
push dword [0x103d768]
call ebx
lea eax, [ebp - 0x264]
push eax
push 0x7ff1
push edi
push dword [ebp - 4]
call esi
cmp dword [ebp + 0xc], 0xffffffff
jne 0x101a39a
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
call fcn.0101575f
mov edx, eax
jmp 0x101a3ea
mov eax, dword [ebp - 8]
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push edi
push edi
mov ebx, 0x401
push ebx
push dword [eax + 0x3b4]
call esi
mov eax, dword [ebp + 0xc]
push edi
push dword [ebp + 8]
shr eax, 0x10
push edi
movsx eax, ax
push eax
movsx eax, word [ebp + 0xc]
push eax
push 0x102
push dword [ebp - 4]
call dword [sym.imp.USER32.dll_TrackPopupMenu]
push edi
push 1
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 8]
push ebx
push dword [eax + 0x3b4]
call esi
mov edx, dword [ebp + 0xc]
mov eax, edx
sub eax, edi
pop ebx
je 0x101a48b
sub eax, 0x7ff0
je 0x101a482
dec eax
je 0x101a47e
dec eax
je 0x101a472
push 0xf
xor eax, eax
pop ecx
lea edi, [ebp - 0x58]
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x54], eax
add edx, 0xfffffffe
movzx eax, dx
mov dword [ebp - 0x50], eax
lea eax, [ebp - 0x368]
push eax
push dword [ebp - 0x14]
mov dword [ebp - 0x5c], 0x40
mov dword [ebp - 0x44], 1
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
lea eax, [ebp - 0x570]
push eax
push dword [ebp - 0x14]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
or byte [ebp - 0x57], 0x40
lea eax, [ebp - 0x368]
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0x570]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
lea edx, [ebp - 0x5c]
push edx
push eax
call dword [ecx + 0x10]
jmp 0x101a48b
mov ecx, dword [ebp - 8]
push 2
call fcn.01019cf2
jmp 0x101a48b
push 1
jmp 0x101a483
push edi
mov ecx, dword [ebp - 8]
call fcn.01017f0a
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, dword [ebp - 0x18]
push dword [ebp - 4]
call dword [sym.imp.USER32.dll_DestroyMenu]
mov eax, dword [esi]
push esi
call dword [eax + 8]
push dword [ebp - 0x10]
call dword [sym.imp.SHELL32.dll_ILFree]
push dword [ebp - 0x14]
call dword [sym.imp.SHELL32.dll_ILFree]
pop edi
pop esi
leave
ret 8