Function at 0x41bcae8
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffee0
push ebx
xor eax, eax
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], eax
xor eax, eax
push ebp
push 0x41bcd6a
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x41bc20c]
call fcn.041bc27c
mov dword [0x4203b98], eax
cmp byte [0x420165c], 0
je 0x41bccfa
lea eax, [ebp - 0xc]
push eax
call sub.kernel32.dll_GetCurrentProcessId
mov dword [ebp - 0x120], eax
mov byte [ebp - 0x11c], 0
lea edx, [ebp - 0x120]
xor ecx, ecx
mov eax, 0x41bcd80
call fcn.041aaa68
lea eax, [ebp - 8]
push eax
call sub.kernel32.dll_GetCurrentProcessId
mov dword [ebp - 0x120], eax
mov byte [ebp - 0x11c], 0
lea edx, [ebp - 0x120]
xor ecx, ecx
mov eax, 0x41bcda0
call fcn.041aaa68
mov eax, dword [ebp - 0xc]
call fcn.04194bd8
push eax
push 0
push 0
call fcn.04196c18
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
setne al
call fcn.041bce84
xor eax, eax
push ebp
push 0x41bccf3
push dword fs:[eax]
mov dword fs:[eax], esp
push 0x20
push 0
call sub.kernel32.dll_GetProcessHeap
push eax
call sub.kernel32.dll_HeapAlloc
mov ebx, eax
mov eax, dword [0x4203b8c]
mov dword [eax + 0x28], ebx
test ebx, ebx
setne al
mov edx, 0x41bcdc0
call fcn.041bce90
mov eax, dword [0x4203b8c]
mov eax, dword [eax + 0x28]
mov dword [eax], 0
mov dword [eax + 4], 0x80000000
mov eax, dword [0x4203b8c]
mov eax, dword [eax + 0x28]
add eax, 8
push eax
call sub.kernel32.dll_InitializeCriticalSection_1
mov eax, dword [ebp - 8]
call fcn.04194bd8
push eax
mov eax, dword [0x4203b8c]
mov ebx, dword [eax + 0x28]
mov eax, ebx
inc eax
push eax
push ebx
push 0
call sub.kernel32.dll_CreateSemaphoreA
mov ebx, eax
test ebx, ebx
setne al
mov edx, 0x41bcdec
call fcn.041bce90
call sub.kernel32.dll_GetLastError_1
cmp eax, 0xb7
jne 0x41bccdc
mov eax, dword [0x4203b8c]
mov eax, dword [eax + 0x28]
add eax, 8
push eax
call sub.kernel32.dll_DeleteCriticalSection_1
mov eax, dword [0x4203b8c]
mov eax, dword [eax + 0x28]
push eax
push 0
call sub.kernel32.dll_GetProcessHeap
push eax
call sub.kernel32.dll_HeapFree
push 0xffffffffffffffff
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_WaitForSingleObject
test eax, eax
sete al
mov edx, 0x41bce10
call fcn.041bce90
xor eax, eax
push ebp
push 0x41bccca
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 4]
push eax
push 1
push ebx
call sub.kernel32.dll_ReleaseSemaphore
cmp eax, 1
sbb eax, eax
inc eax
mov edx, 0x41bce30
call fcn.041bce90
push 0xffffffffffffffff
push ebx
call sub.kernel32.dll_WaitForSingleObject
test eax, eax
sete al
mov edx, 0x41bce54
call fcn.041bce90
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41bccd1
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_ReleaseMutex
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41bcd29
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_CloseHandle
ret
mov eax, dword [0x4203b8c]
add eax, 8
mov edx, dword [0x4203b8c]
mov dword [edx + 0x28], eax
mov dword [eax], 0
mov dword [eax + 4], 0
mov eax, dword [0x4203b8c]
mov eax, dword [eax + 0x28]
add eax, 8
push eax
call sub.kernel32.dll_InitializeCriticalSection_1
push 0x105
lea eax, [ebp - 0x115]
push eax
call sub.kernel32.dll_GetSystemDirectoryA
mov eax, 0x4203b90
lea edx, [ebp - 0x115]
mov ecx, 0x105
call fcn.041949ac
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41bcd71
lea eax, [ebp - 0xc]
mov edx, 2
call fcn.04194760
ret