Function at 0x102e0da
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.01002716
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_SetForegroundWindow]
cmp esi, edi
je 0x102e3a0
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 0x102e397
push esi
call fcn.0103434f
mov esi, eax
cmp esi, edi
mov dword [ebp - 0x18], esi
je 0x102e38e
call dword [sym.imp.USER32.dll_CreatePopupMenu]
cmp eax, edi
mov dword [ebp - 4], eax
je 0x102e388
mov eax, dword [esi]
lea ecx, [ebp - 0xc]
push ecx
push edi
push 0x101b688
lea ecx, [ebp - 0x10]
push ecx
push 1
push dword [ebp + 8]
push esi
call dword [eax + 0x28]
test eax, eax
jl 0x102e37f
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 0x102e373
push ebx
mov ebx, dword [sym.imp.USER32.dll_LoadStringW]
push 0x104
lea eax, [ebp - 0x264]
push eax
push 0x2d0
push dword [0x103f654]
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 0x102e26d
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 0x102e26d
call dword [sym.imp.SHELL32.dll_IsUserAnAdmin]
cmp eax, edi
je 0x102e26d
push edi
push edi
push 0x800
push dword [ebp - 4]
call esi
push 0x104
lea eax, [ebp - 0x264]
push eax
push 0x2ce
push dword [0x103f654]
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 [0x103f654]
call ebx
lea eax, [ebp - 0x264]
push eax
push 0x7ff1
push edi
push dword [ebp - 4]
call esi
cmp dword [ebp + 0xc], 0xffffffff
jne 0x102e282
push dword [ebp - 4]
mov ecx, dword [ebp - 8]
call fcn.0102bbd7
mov edx, eax
jmp 0x102e2d2
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 0x102e373
sub eax, 0x7ff0
je 0x102e36a
dec eax
je 0x102e366
dec eax
je 0x102e35a
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 0x102e373
mov ecx, dword [ebp - 8]
push 2
call fcn.0102dcbb
jmp 0x102e373
push 1
jmp 0x102e36b
push edi
mov ecx, dword [ebp - 8]
call fcn.0102cdbd
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