Function at 0x101c7330
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x101e6802
mov eax, dword fs:[0]
push eax
sub esp, 0x438
mov eax, dword [0x10293044]
xor eax, esp
mov dword [esp + 0x430], eax
push ebx
push esi
push edi
mov eax, dword [0x10293044]
xor eax, esp
push eax
lea eax, [esp + 0x448]
mov dword fs:[0], eax
mov eax, dword [ebp + 0xc]
mov ebx, 1
test byte [0x102ab844], bl
mov dword [esp + 0x10], eax
jne 0x101c73c3
or dword [0x102ab844], ebx
mov dword [esp + 0x450], 0
push 0x18
call sub.MSVCR80.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
push eax
mov dword [0x102ab840], eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push 0x1022d400
call fcn.101d1b9e
add esp, 4
mov dword [esp + 0x450], 0xffffffff
mov eax, dword [0x102ab840]
test eax, eax
mov dword [esp + 0x18], 0x102ab840
je 0x101c73db
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [esp + 0x450], ebx
mov eax, 2
test byte [0x102ab844], al
jne 0x101c7415
or dword [0x102ab844], eax
mov byte [esp + 0x450], al
call fcn.101c9540
push 0x1022d3c0
call fcn.101d1b9e
add esp, 4
mov byte [esp + 0x450], bl
mov esi, dword [0x102aa1d0]
lea edi, [ebp + 8]
lea ebx, [esp + 0x1c]
call fcn.101c96d0
mov edi, eax
mov eax, dword [edi]
xor ebx, ebx
cmp eax, ebx
je 0x101c7438
cmp eax, 0x102aa1cc
je 0x101c743e
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp dword [edi + 4], esi
je 0x101c747c
lea ecx, [ebp + 8]
push ecx
call fcn.101c95b0
mov ecx, dword [esp + 0x10]
push 0xffffffffffffffff
push ebx
call fcn.10007880
mov dword [esp + 0x450], 0xffffffff
mov eax, dword [0x102ab840]
cmp eax, ebx
je 0x101c7473
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov dword [esp + 0x18], ebx
jmp 0x101c758a
mov eax, dword [0x102ab840]
cmp eax, ebx
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
je 0x101c748e
push eax
call edi
push 0x410
lea edx, [esp + 0x2a]
push ebx
push edx
mov dword [esp + 0x24], ebx
mov word [esp + 0x30], bx
call sub.MSVCR80.dll_memset
mov ecx, dword [ebp + 8]
add esp, 0xc
lea eax, [esp + 0x14]
push eax
push ecx
push ebx
mov dword [esp + 0x20], ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x101c74e5
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x24]
push edx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
test eax, eax
jne 0x101c74f7
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x101c74e5
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov dword [esp + 0x450], 0xffffffff
xor al, al
jmp 0x101c758c
lea eax, [esp + 0x24]
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x101c7500
mov esi, dword [esp + 0x10]
sub eax, edx
sar eax, 1
push eax
lea ecx, [esp + 0x28]
push ecx
call fcn.10007a00
mov eax, dword [esp + 0x14]
test eax, eax
je 0x101c752d
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov eax, dword [0x102ab840]
test eax, eax
mov dword [esp + 0x10], 0x102ab840
je 0x101c7545
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov byte [esp + 0x450], 3
lea edx, [ebp + 8]
push edx
call fcn.101c95b0
push 0xffffffffffffffff
mov ecx, eax
push 0
mov eax, esi
call fcn.10007880
mov byte [esp + 0x450], 1
mov eax, dword [0x102ab840]
test eax, eax
je 0x101c7577
push eax
call edi
mov dword [esp + 0x10], 0
mov dword [esp + 0x450], 0xffffffff
mov al, 1
mov ecx, dword [esp + 0x448]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x430]
xor ecx, esp
call fcn.101d19cc
mov esp, ebp
pop ebp
ret