Function at 0x102dc90
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.01002713
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetForegroundWindow]
cmp esi, edi
je 0x102df56
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 0x102df4d
push esi
call fcn.01033e0a
mov esi, eax
cmp esi, edi
mov dword [ebp - 0x18], esi
je 0x102df44
call dword [sym.imp.USER32.dll_CreatePopupMenu]
cmp eax, edi
mov dword [ebp - 4], eax
je 0x102df3e
mov eax, dword [esi]
lea ecx, [ebp - 0xc]
push ecx
push edi
push 0x10166e4
lea ecx, [ebp - 0x10]
push ecx
push 1
push dword [ebp + 8]
push esi
call dword [eax + 0x28]
test eax, eax
jl 0x102df35
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 0x102df29
push ebx
mov ebx, dword [sym.imp.USER32.dll_LoadStringW]
push 0x104
lea eax, [ebp - 0x264]
push eax
push 0x2d0
push dword [0x103e648]
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 0x102de23
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 0x102de23
call dword [sym.imp.SHELL32.dll_IsUserAnAdmin]
cmp eax, edi
je 0x102de23
push edi
push edi
push 0x800
push dword [ebp - 4]
call esi
push 0x104
lea eax, [ebp - 0x264]
push eax
push 0x2ce
push dword [0x103e648]
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 [0x103e648]
call ebx
lea eax, [ebp - 0x264]
push eax
push 0x7ff1
push edi
push dword [ebp - 4]
call esi
cmp dword [ebp + 0xc], 0xffffffff
jne 0x102de38
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
call fcn.0102b869
mov edx, eax
jmp 0x102de88
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 + 0x3b0]
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 + 0x3b0]
call esi
mov edx, dword [ebp + 0xc]
mov eax, edx
sub eax, edi
pop ebx
je 0x102df29
sub eax, 0x7ff0
je 0x102df20
dec eax
je 0x102df1c
dec eax
je 0x102df10
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 0x102df29
mov ecx, dword [ebp - 8]
push 2
call fcn.0102d871
jmp 0x102df29
push 1
jmp 0x102df21
push edi
mov ecx, dword [ebp - 8]
call fcn.0102c97e
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