Function at 0x2a87f6bc
Capabilities:
Get common file path

Disassembly:
push 0x590
mov eax, 0x2a951100
call fcn.2a8b8862
mov dword [ebp - 0x55c], ecx
mov esi, 0x2a9564a0
lea edi, [ebp - 0x28]
push 0x5c
pop eax
mov word [ebp - 0x554], ax
xor ebx, ebx
movsd dword es:[edi], dword [esi]
lea eax, [ebp - 0x564]
push eax
push 0x801a
push ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
call edi
test eax, eax
jne 0x2a87fc0e
mov esi, dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
lea eax, [ebp - 0x33c]
push eax
push dword [ebp - 0x564]
call esi
lea eax, [ebp - 0x564]
push eax
push 0x801c
push ebx
call edi
test eax, eax
jne 0x2a87fc0e
lea eax, [ebp - 0x238]
push eax
push dword [ebp - 0x564]
call esi
xor eax, eax
mov dword [ebp - 0x560], ebx
push 0x1fe
mov word [ebp - 0x53c], ax
lea eax, [ebp - 0x53a]
push ebx
push eax
call sub.MSVCR120.dll_memset
push 0xff
lea eax, [ebp - 0x133]
mov byte [ebp - 0x134], bl
push ebx
push eax
call sub.MSVCR120.dll_memset
push ebx
call fcn.2a885359
add esp, 0x1c
cmp eax, 4
jne 0x2a87fc0e
call fcn.2a885359
mov ebx, eax
mov dword [ebp - 0x584], ebx
test ebx, ebx
je 0x2a87fc0e
mov ecx, dword [0x2a9b6034]
call dword [ecx + 0xca8]
test ax, ax
je 0x2a87f91d
call fcn.2a88812f
test ax, ax
jne 0x2a87f91d
call fcn.2a8883d7
test ax, ax
jne 0x2a87f91d
mov eax, dword [0x2a9b6034]
call dword [eax + 0xcac]
mov esi, 0x100
lea ecx, [ebp - 0x53c]
push esi
push ecx
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xac]
test al, al
je 0x2a87fc0e
and dword [ebp - 0x558], 0
lea eax, [ebp - 0x53c]
push esi
push eax
push esi
lea eax, [ebp - 0x134]
push eax
lea eax, [ebp - 0x558]
push eax
call dword [sym.imp.MSVCR120.dll_wcstombs_s]
add esp, 0x14
test eax, eax
jne 0x2a87fc0e
cmp dword [ebp - 0x558], eax
jbe 0x2a87fc0e
lea eax, [ebp - 0x134]
mov dword [ebp - 0x560], eax
mov esi, str.RoamCache_
lea edi, [ebp - 0x34]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
call fcn.2a88802a
xor ecx, ecx
cmp eax, 0xe
setge cl
test cx, cx
je 0x2a87fb7d
push 3
pop edi
lea eax, [ebp - 0x238]
push edi
push eax
call fcn.2a885359
pop ecx
mov esi, eax
pop ecx
mov dword [ebp - 0x550], esi
mov dword [ebp - 4], edi
lea eax, [ebp - 0x550]
mov edi, dword [ebp - 0x55c]
add edi, 4
cmp eax, edi
je 0x2a87f8a1
push eax
mov ecx, edi
call fcn.2a885359
or dword [ebp - 4], 0xffffffff
test esi, esi
je 0x2a87f8b0
push esi
call fcn.2a885359
pop ecx
lea eax, [ebp - 0x554]
push eax
push dword [edi]
call fcn.2a885359
lea eax, [ebp - 0x28]
push eax
push dword [edi]
call fcn.2a885359
lea eax, [ebp - 0x34]
push eax
push dword [edi]
call fcn.2a885359
mov ecx, dword [ebp - 0x55c]
add esp, 0x18
push dword [ebp - 0x560]
push edi
call fcn.2a87f588
test ax, ax
jne 0x2a87fc07
push edi
call fcn.2a885359
lea eax, [ebp - 0x238]
push 3
push eax
call fcn.2a885359
mov esi, eax
add esp, 0xc
mov dword [ebp - 0x550], esi
mov dword [ebp - 4], 4
jmp 0x2a87fbac
call fcn.2a8883d7
test ax, ax
jne 0x2a87f846
call fcn.2a88812f
test ax, ax
jne 0x2a87f846
mov esi, dword [sym.imp.kernel32.dll_GetProcAddress]
push str.MAPIInitialize
push ebx
call esi
push str.MAPIUninitialize
push ebx
mov edi, eax
call esi
mov esi, eax
mov dword [ebp - 0x550], esi
test edi, edi
je 0x2a87fc07
test esi, esi
je 0x2a87fc07
mov eax, dword [0x2a9b606c]
and dword [ebp - 4], 0
push 0x2a860ffd
push 0
call dword [eax + 8]
pop ecx
pop ecx
xor eax, eax
inc eax
push 0
mov byte [ebp - 4], al
call edi
test eax, eax
jns 0x2a87f9af
mov eax, dword [0x2a9b606c]
push 0xffffffffffffffff
call dword [eax + 4]
and dword [ebp - 0x580], 0
lea eax, [ebp - 0x580]
pop ecx
push 0x2a9a23b4
push eax
call sub.MSVCR120.dll__CxxThrowException
xor ecx, ecx
lea eax, [ebp - 0x56c]
push eax
push ecx
mov dword [ebp - 0x568], ecx
mov dword [ebp - 0x56c], ecx
call sub.MAPI32.dll_Ordinal_19
test eax, eax
js 0x2a87fb3e
mov ecx, dword [ebp - 0x56c]
test ecx, ecx
je 0x2a87fb3e
xor edi, edi
lea edx, [ebp - 0x558]
push edx
mov dword [ebp - 0x558], edi
mov eax, dword [ecx]
push edi
push ecx
call dword [eax + 0x10]
test eax, eax
js 0x2a87fb1d
mov ecx, dword [ebp - 0x558]
test ecx, ecx
je 0x2a87fb1d
xor edx, edx
mov eax, 0x3d04000b
inc edx
mov dword [ebp - 0x598], eax
push 4
mov word [ebp - 0x590], dx
pop edx
mov dword [ebp - 0x544], eax
lea eax, [ebp - 0x598]
mov dword [ebp - 0x54c], edx
mov dword [ebp - 0x548], edx
lea edx, [ebp - 0x54c]
push 2
mov dword [ebp - 0x540], eax
mov eax, dword [ecx]
push edx
push ecx
call dword [eax + 0x38]
test eax, eax
jns 0x2a87fa76
mov eax, dword [0x2a9b606c]
push 0xffffffffffffffff
call dword [eax + 4]
pop ecx
mov dword [ebp - 0x588], edi
lea eax, [ebp - 0x588]
push 0x2a9a23b4
jmp 0x2a87f9a9
mov eax, dword [ebp - 0x558]
lea edx, [ebp - 0x54c]
push 0
push 0
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x34]
test eax, eax
jns 0x2a87fab2
mov eax, dword [0x2a9b606c]
push 0xffffffffffffffff
call dword [eax + 4]
and dword [ebp - 0x578], edi
lea eax, [ebp - 0x578]
pop ecx
push 0x2a9a23b4
jmp 0x2a87f9a9
mov eax, dword [ebp - 0x558]
lea edx, [ebp - 0x568]
push edx
xor edx, edx
push 0
mov ecx, dword [eax]
inc edx
push edx
push eax
call dword [ecx + 0x4c]
test eax, eax
js 0x2a87fafc
mov eax, dword [ebp - 0x568]
cmp dword [eax], edi
jbe 0x2a87fafc
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 8]
mov dword [ebp - 0x560], eax
call esi
mov eax, dword [0x2a9b606c]
mov byte [ebp - 4], 0
call dword [eax + 0xc]
or dword [ebp - 4], 0xffffffff
jmp 0x2a87f846
mov eax, dword [0x2a9b606c]
push 0xffffffffffffffff
call dword [eax + 4]
and dword [ebp - 0x570], edi
lea eax, [ebp - 0x570]
pop ecx
push 0x2a9a23b4
jmp 0x2a87f9a9
mov eax, dword [0x2a9b606c]
push 0xffffffffffffffff
call dword [eax + 4]
and dword [ebp - 0x574], edi
lea eax, [ebp - 0x574]
pop ecx
push 0x2a9a23b4
jmp 0x2a87f9a9
mov eax, dword [0x2a9b606c]
push 0xffffffffffffffff
call dword [eax + 4]
and dword [ebp - 0x57c], 0
lea eax, [ebp - 0x57c]
pop ecx
push 0x2a9a23b4
jmp 0x2a87f9a9
mov edi, dword [ebp - 0x55c]
add edi, 4
push edi
call fcn.2a885359
lea eax, [ebp - 0x33c]
push 3
push eax
call fcn.2a885359
mov esi, eax
add esp, 0xc
mov dword [ebp - 0x550], esi
mov dword [ebp - 4], 5
lea eax, [ebp - 0x550]
cmp eax, edi
je 0x2a87fbbe
push eax
mov ecx, edi
call fcn.2a885359
or dword [ebp - 4], 0xffffffff
test esi, esi
je 0x2a87fbcd
push esi
call fcn.2a885359
pop ecx
lea eax, [ebp - 0x554]
push eax
push dword [edi]
call fcn.2a885359
lea eax, [ebp - 0x28]
push eax
push dword [edi]
call fcn.2a885359
mov ecx, dword [ebp - 0x55c]
add esp, 0x10
push dword [ebp - 0x560]
push edi
call fcn.2a87f588
test ax, ax
jne 0x2a87fc07
push edi
call fcn.2a885359
pop ecx
push ebx
call fcn.2a84d410
pop ecx
call fcn.2a8b881d
ret