Function at 0x100c663e
Capabilities:
Get common file path

Disassembly:
push 0x87c
mov eax, 0x1011e0aa
call fcn.1006051e
mov edi, ecx
mov dword [ebp - 0x85c], edi
call fcn.100029f0
push eax
lea ecx, [ebp - 0x864]
call fcn.1000281b
xor ebx, ebx
lea ecx, [ebp - 0x864]
push 0x111
mov dword [ebp - 4], ebx
call fcn.10002410
call fcn.100029f0
push eax
lea ecx, [ebp - 0x848]
call fcn.1000281b
push 0x410
lea eax, [ebp - 0x834]
mov byte [ebp - 4], 1
push ebx
push eax
call fcn.1003e610
mov eax, dword [edi + 0x30]
add esp, 0xc
mov dword [ebp - 0x888], eax
lea eax, [ebp - 0x834]
mov dword [ebp - 0x880], eax
mov eax, dword [ebp - 0x864]
mov dword [ebp - 0x87c], eax
lea eax, [ebp - 0x888]
push eax
mov dword [ebp - 0x884], ebx
mov dword [ebp - 0x878], 0x241
mov dword [ebp - 0x874], ebx
mov dword [ebp - 0x870], ebx
mov dword [ebp - 0x86c], ebx
call dword [sym.imp.SHELL32.dll_SHBrowseForFolderW]
mov dword [ebp - 0x858], eax
test eax, eax
je 0x100c6738
lea ecx, [ebp - 0x834]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea ecx, [ebp - 0x834]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, bx
jne 0x100c6716
sub ecx, edx
lea eax, [ebp - 0x834]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x848]
call fcn.1000262a
call fcn.100029f0
push eax
lea ecx, [ebp - 0x860]
call fcn.1000281b
mov byte [ebp - 4], 2
lea edx, [ebp - 0x860]
mov esi, dword [ebp - 0x848]
mov ecx, esi
call fcn.1006e920
test eax, eax
je 0x100c677c
lea eax, [ebp - 0x860]
push eax
lea ecx, [ebp - 0x848]
call fcn.100052b3
mov esi, dword [ebp - 0x848]
push ebx
lea edx, [ebp - 0x860]
mov ecx, esi
call fcn.1006ea4e
pop ecx
test eax, eax
je 0x100c67a7
lea eax, [ebp - 0x860]
push eax
lea ecx, [ebp - 0x848]
call fcn.100052b3
mov esi, dword [ebp - 0x848]
call fcn.10090275
cmp dword [eax + 4], 0
je 0x100c69d4
mov dword [ebp - 0x850], ebx
push 0x208
lea eax, [ebp - 0x424]
push ebx
push eax
call fcn.1003e610
add esp, 0xc
lea eax, [ebp - 0x424]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x100c68be
mov eax, dword [ebp - 0x850]
push dword [eax*4 + 0x10155ad0]
lea eax, [ebp - 0x424]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x424]
push eax
lea ecx, [ebp - 0x84c]
call fcn.100026e3
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x84c]
mov eax, dword [eax - 0xc]
test eax, eax
je 0x100c689a
dec eax
lea ecx, [ebp - 0x84c]
push eax
call fcn.10008889
push 0x5c
pop ecx
cmp ax, cx
je 0x100c685b
mov eax, dword [ebp - 0x84c]
lea ecx, [ebp - 0x84c]
mov eax, dword [eax - 0xc]
dec eax
push eax
call fcn.10008889
push 0x2f
pop ecx
cmp ax, cx
jne 0x100c689a
mov eax, dword [ebp - 0x84c]
lea ecx, [ebp - 0x84c]
mov eax, dword [eax - 0xc]
dec eax
push eax
lea eax, [ebp - 0x854]
push eax
call fcn.10004d45
push eax
lea ecx, [ebp - 0x84c]
mov byte [ebp - 4], 4
call fcn.100052b3
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x854]
lea ecx, [ecx - 0x10]
call fcn.10002a86
push dword [ebp - 0x84c]
push esi
call fcn.10043f14
pop ecx
pop ecx
test eax, eax
je 0x100c68d9
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x84c]
lea ecx, [ecx - 0x10]
call fcn.10002a86
mov eax, dword [ebp - 0x850]
inc eax
mov dword [ebp - 0x850], eax
cmp eax, 2
jl 0x100c67bc
jmp 0x100c69d4
push 0x208
lea eax, [ebp - 0x21c]
push ebx
push eax
call fcn.1003e610
add esp, 0xc
lea eax, [ebp - 0x21c]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x100c69c2
mov eax, dword [ebp - 0x850]
push dword [eax*4 + 0x10155ac8]
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea ecx, [ebp - 0x21c]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, bx
jne 0x100c692b
sub ecx, edx
lea eax, [ebp - 0x21c]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x848]
call fcn.1000262a
mov esi, dword [ebp - 0x848]
mov eax, dword [esi - 0xc]
test eax, eax
je 0x100c69c2
dec eax
lea ecx, [ebp - 0x848]
push eax
call fcn.10008889
push 0x5c
pop ecx
cmp ax, cx
je 0x100c6987
mov eax, dword [esi - 0xc]
lea ecx, [ebp - 0x848]
dec eax
push eax
call fcn.10008889
push 0x2f
pop ecx
cmp ax, cx
jne 0x100c69c2
mov eax, dword [esi - 0xc]
lea ecx, [ebp - 0x848]
dec eax
push eax
lea eax, [ebp - 0x854]
push eax
call fcn.10004d45
push eax
lea ecx, [ebp - 0x848]
mov byte [ebp - 4], 5
call fcn.100052b3
mov ecx, dword [ebp - 0x854]
lea ecx, [ecx - 0x10]
call fcn.10002a86
mov esi, dword [ebp - 0x848]
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x84c]
lea ecx, [ecx - 0x10]
call fcn.10002a86
lea ecx, [ebp - 0x864]
call fcn.10002488
mov dword [ebp - 0x868], ebx
mov ebx, dword [ebp - 0x858]
test ebx, ebx
je 0x100c6a1d
lea eax, [ebp - 0x868]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
js 0x100c6a1d
mov ecx, dword [ebp - 0x868]
test ecx, ecx
je 0x100c6a1d
mov eax, dword [ecx]
push ebx
push ecx
call dword [eax + 0x14]
mov eax, dword [ebp - 0x868]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
cmp dword [esi - 0xc], 0
je 0x100c6c3b
push esi
mov ecx, edi
call fcn.100c38be
test eax, eax
je 0x100c6c3b
call fcn.100029f0
push eax
lea ecx, [ebp - 0x850]
call fcn.1000281b
push 0xc351
lea ecx, [ebp - 0x858]
mov byte [ebp - 4], 6
call fcn.100026e3
push esi
mov byte [ebp - 4], 7
push dword [eax]
lea eax, [ebp - 0x850]
push eax
call fcn.10008c51
mov byte [ebp - 4], 6
add esp, 0xc
mov ecx, dword [ebp - 0x858]
lea ecx, [ecx - 0x10]
call fcn.10002a86
or dword [ebp - 0x844], 0xffffffff
lea ecx, [ebp - 0x858]
or dword [ebp - 0x840], 0xffffffff
push 0x4f
mov dword [ebp - 0x83c], 0x20d
mov dword [ebp - 0x838], 0xf5
call fcn.100026e3
sub esp, 0xc
mov byte [ebp - 4], 8
mov edi, dword [ebp - 0x850]
lea ecx, [ebp - 0x844]
mov edx, edi
push ecx
mov ecx, dword [ebp - 0x85c]
push 0x24
push dword [eax]
mov ecx, dword [ecx + 0x30]
call fcn.100ce817
mov byte [ebp - 4], 6
add esp, 0x18
mov ecx, dword [ebp - 0x858]
mov ebx, eax
add ecx, 0xfffffff0
call fcn.10002a86
cmp ebx, 6
jne 0x100c6c10
mov ecx, dword [ebp - 0x85c]
lea eax, [ebp - 0x848]
push eax
call fcn.100c37be
cmp eax, 1
jne 0x100c6bac
call fcn.100029f0
push eax
lea ecx, [ebp - 0x854]
call fcn.1000281b
push esi
lea eax, [ebp - 0x854]
mov byte [ebp - 4], 9
push 0x115
push eax
call fcn.1000602e
add esp, 0xc
call fcn.100029f0
push eax
lea ecx, [ebp - 0x84c]
call fcn.1000281b
push 0x4f
lea ecx, [ebp - 0x84c]
mov byte [ebp - 4], 0xa
call fcn.10002410
mov eax, dword [ebp - 0x85c]
sub esp, 0xc
mov esi, dword [ebp - 0x84c]
xor ebx, ebx
mov edi, dword [ebp - 0x854]
mov edx, edi
mov ecx, dword [eax + 0x30]
push ebx
push 0x10
push esi
call fcn.100ce817
add esp, 0x18
lea ecx, [esi - 0x10]
call fcn.10002a86
lea ecx, [edi - 0x10]
mov byte [ebp - 4], 6
call fcn.10002a86
mov esi, dword [ebp - 0x848]
mov edi, dword [ebp - 0x850]
jmp 0x100c6c21
cmp eax, 4
jne 0x100c6c1f
push 0x4f
lea ecx, [ebp - 0x854]
call fcn.100026e3
mov ebx, eax
push 0x112
lea ecx, [ebp - 0x858]
mov byte [ebp - 4], 0xb
call fcn.100026e3
sub esp, 0xc
mov byte [ebp - 4], 0xc
mov edx, dword [eax]
mov eax, dword [ebp - 0x85c]
push 0
push 0x10
push dword [ebx]
mov ecx, dword [eax + 0x30]
call fcn.100ce817
mov ecx, dword [ebp - 0x858]
add esp, 0x18
lea ecx, [ecx - 0x10]
call fcn.10002a86
mov ecx, dword [ebp - 0x854]
lea ecx, [ecx - 0x10]
call fcn.10002a86
mov ebx, 0x80004005
lea ecx, [edi - 0x10]
call fcn.10002a86
jmp 0x100c6c40
xor ebx, ebx
mov ecx, dword [ebp - 0x85c]
push 1
call fcn.100c34ad
mov ecx, dword [ebp - 0x85c]
call fcn.100c344a
jmp 0x100c6c15
mov ebx, 0x80004005
mov ecx, dword [ebp - 0x860]
lea ecx, [ecx - 0x10]
call fcn.10002a86
lea ecx, [esi - 0x10]
call fcn.10002a86
mov ecx, dword [ebp - 0x864]
add ecx, 0xfffffff0
call fcn.10002a86
mov eax, ebx
call fcn.100604c8
ret 0x10