Function at 0x4013e6
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xcc
mov dword [ebp - 0x90], 0xf7f
mov word [ebp - 0xa4], 0xc5
push 0
call dword [sym.imp.GDI32.dll_GetBkMode]
push 0
call dword [sym.imp.GDI32.dll_EndPath]
and dword [ebp - 0x20], 0
mov dword [ebp - 0x30], 0x1a7
and dword [ebp - 0x30], 0
mov eax, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x1c], 0xbe
mov dword [ebp - 0x1c], 0x98
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
add eax, 0xbf
mov dword [ebp - 0x1c], eax
push 0
call dword [sym.imp.USER32.dll_SetActiveWindow]
push 0x401134
call fcn.00404d6f
pop ecx
push eax
push 1
push 0
call dword [sym.imp.KERNEL32.DLL_CreateMutexA]
mov dword [ebp - 0x48], eax
mov word [ebp - 0x7c], 0x88
mov byte [ebp - 0x89], 0x14
mov byte [ebp - 0x89], 0xcc
movsx eax, byte [ebp - 0x89]
dec eax
mov byte [ebp - 0x89], al
movsx eax, byte [ebp - 0x89]
add eax, 0x49
mov byte [ebp - 0x89], al
call dword [sym.imp.GDI32.dll_GdiGetBatchLimit]
call dword [sym.imp.KERNEL32.DLL_GetLastError]
mov dword [ebp - 0x88], eax
mov dword [ebp - 0xa0], 0xa53
mov byte [ebp - 0x53], 0
movzx eax, byte [ebp - 0x53]
test eax, eax
je 0x4014cf
movzx eax, byte [ebp - 0x53]
neg eax
sbb eax, eax
inc eax
mov byte [ebp - 0x53], al
movzx eax, byte [ebp - 0x53]
test eax, eax
je 0x4014db
mov byte [ebp - 0x53], 0
movzx eax, byte [ebp - 0x53]
test eax, eax
jne 0x4014e7
mov byte [ebp - 0x53], 0
call dword [sym.imp.USER32.dll_GetCaretBlinkTime]
cmp dword [ebp - 0x88], 0xb7
je 0x401506
cmp dword [ebp - 0x88], 5
jne 0x401626
call fcn.004033ea
mov byte [ebp - 0xb6], 0x2f
mov byte [ebp - 0xb6], 0x97
movsx eax, byte [ebp - 0xb6]
dec eax
mov byte [ebp - 0xb6], al
movsx eax, byte [ebp - 0xb6]
add eax, 0x44
mov byte [ebp - 0xb6], al
mov dword [ebp - 0xb4], 0xeb3
call dword [sym.imp.KERNEL32.DLL_GetCurrentThreadId]
cmp dword [ebp - 0x20], 0
jne 0x401554
push 1
call fcn.00401396
mov dword [ebp - 0xb0], 0x160
mov dword [ebp - 0xb0], 0x8b
mov eax, dword [ebp - 0xb0]
dec eax
mov dword [ebp - 0xb0], eax
mov eax, dword [ebp - 0xb0]
add eax, 0x50
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xac], 0x15a
mov dword [ebp - 0xac], 0xb1
mov eax, dword [ebp - 0xac]
dec eax
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0xac]
add eax, 0xd7
mov dword [ebp - 0xac], eax
call dword [sym.imp.USER32.dll_GetCursor]
xor eax, eax
inc eax
jmp 0x401af9
push 0x105
call fcn.004013bb
pop ecx
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xbc]
mov dword [0x406024], eax
mov byte [ebp - 0x42], 0
movzx eax, byte [ebp - 0x42]
test eax, eax
je 0x40165a
movzx eax, byte [ebp - 0x42]
neg eax
sbb eax, eax
inc eax
mov byte [ebp - 0x42], al
movzx eax, byte [ebp - 0x42]
test eax, eax
je 0x401666
mov byte [ebp - 0x42], 0
movzx eax, byte [ebp - 0x42]
test eax, eax
jne 0x401672
mov byte [ebp - 0x42], 0
mov dword [ebp - 0x64], 0x213
mov dword [ebp - 0x64], 0x4e
mov eax, dword [ebp - 0x64]
dec eax
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x64]
add eax, 0x24
mov dword [ebp - 0x64], eax
push 0
call dword [sym.imp.GDI32.dll_GetColorSpace]
push 0x105
call fcn.004013bb
pop ecx
mov dword [ebp - 0xc0], eax
mov eax, dword [ebp - 0xc0]
mov dword [0x406020], eax
mov byte [ebp - 0x52], 0
mov byte [ebp - 0x52], 0xf0
movsx eax, byte [ebp - 0x52]
dec eax
mov byte [ebp - 0x52], al
movsx eax, byte [ebp - 0x52]
add eax, 0x59
mov byte [ebp - 0x52], al
mov byte [ebp - 0x15], 0x2e
mov byte [ebp - 0x15], 0xd1
movsx eax, byte [ebp - 0x15]
dec eax
mov byte [ebp - 0x15], al
movsx eax, byte [ebp - 0x15]
add eax, 8
mov byte [ebp - 0x15], al
push 0
call dword [sym.imp.GDI32.dll_WidenPath]
push 0x105
call fcn.004013bb
pop ecx
mov dword [ebp - 0xc4], eax
mov eax, dword [ebp - 0xc4]
mov dword [0x40601c], eax
mov byte [ebp - 0x51], 0
movzx eax, byte [ebp - 0x51]
test eax, eax
je 0x401724
movzx eax, byte [ebp - 0x51]
neg eax
sbb eax, eax
inc eax
mov byte [ebp - 0x51], al
movzx eax, byte [ebp - 0x51]
test eax, eax
je 0x401730
mov byte [ebp - 0x51], 0
movzx eax, byte [ebp - 0x51]
test eax, eax
jne 0x40173c
mov byte [ebp - 0x51], 0
mov byte [ebp - 0x29], 0
movzx eax, byte [ebp - 0x29]
test eax, eax
je 0x401754
movzx eax, byte [ebp - 0x29]
neg eax
sbb eax, eax
inc eax
mov byte [ebp - 0x29], al
movzx eax, byte [ebp - 0x29]
test eax, eax
je 0x401760
mov byte [ebp - 0x29], 0
movzx eax, byte [ebp - 0x29]
test eax, eax
jne 0x40176c
mov byte [ebp - 0x29], 0
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
push 0x105
call fcn.004013bb
pop ecx
mov dword [ebp - 0xc8], eax
mov eax, dword [ebp - 0xc8]
mov dword [0x406010], eax
mov dword [ebp - 0x98], 0x974
mov byte [ebp - 0x65], 0x18
mov byte [ebp - 0x65], 0x98
movsx eax, byte [ebp - 0x65]
dec eax
mov byte [ebp - 0x65], al
movsx eax, byte [ebp - 0x65]
add eax, 0x6f
mov byte [ebp - 0x65], al
push 0
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push 0
call dword [sym.imp.GDI32.dll_FillPath]
push 0x105
call fcn.004013bb
pop ecx
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0xcc]
mov dword [0x406014], eax
mov byte [ebp - 0x92], 5
mov byte [ebp - 0x92], 0x41
movsx eax, byte [ebp - 0x92]
inc eax
mov byte [ebp - 0x92], al
mov dword [ebp - 0x40], 0x9d6
push 0
call dword [sym.imp.USER32.dll_ClipCursor]
push dword [0x40601c]
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetTempPathA]
mov word [ebp - 0x50], 0x30
mov dword [ebp - 0x78], 0x4aa
push 0
push 0
call dword [sym.imp.GDI32.dll_GetBrushOrgEx]
push 0x40115c
push 0
call dword [sym.imp.KERNEL32.DLL_GetProcAddress]
push 0
call dword [sym.imp.USER32.dll_GetTopWindow]
push 0x104
push dword [0x406020]
push 0
call dword [sym.imp.KERNEL32.DLL_GetModuleFileNameA]
mov word [ebp - 0x70], 0x21
mov byte [ebp - 0x99], 0x16
mov byte [ebp - 0x99], 0x3e
movsx eax, byte [ebp - 0x99]
dec eax
mov byte [ebp - 0x99], al
movsx eax, byte [ebp - 0x99]
add eax, 0x21
mov byte [ebp - 0x99], al
push 0
call dword [sym.imp.GDI32.dll_StartPage]
push 0x104
push dword [0x406020]
push dword [0x406020]
call dword [sym.imp.KERNEL32.DLL_GetShortPathNameA]
mov word [ebp - 0x60], 0x2f
mov dword [ebp - 0x84], 0x1f0
mov dword [ebp - 0x84], 0xf0
mov eax, dword [ebp - 0x84]
dec eax
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x84]
add eax, 0x3e
mov dword [ebp - 0x84], eax
push 0
call dword [sym.imp.GDI32.dll_PathToRegion]
push 0x104
push dword [0x406010]
call dword [sym.imp.KERNEL32.DLL_GetSystemDirectoryA]
mov word [ebp - 0x28], 0xfd
mov byte [ebp - 0x91], 0x2f
mov byte [ebp - 0x91], 6
movsx eax, byte [ebp - 0x91]
dec eax
mov byte [ebp - 0x91], al
movsx eax, byte [ebp - 0x91]
add eax, 0xb8
mov byte [ebp - 0x91], al
push 0
call dword [sym.imp.GDI32.dll_CloseFigure]
push dword [0x406010]
push 0x401164
call fcn.00404d6f
pop ecx
push eax
push dword [0x406014]
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov dword [ebp - 0x3c], 0xe52
mov byte [ebp - 0x71], 0x11
mov byte [ebp - 0x71], 0xea
movsx eax, byte [ebp - 0x71]
dec eax
mov byte [ebp - 0x71], al
movsx eax, byte [ebp - 0x71]
add eax, 0x45
mov byte [ebp - 0x71], al
push 0
call dword [sym.imp.GDI32.dll_WidenPath]
mov dword [ebp - 0x14], 0x12d0
mov byte [ebp - 0x4a], 0
movzx eax, byte [ebp - 0x4a]
test eax, eax
je 0x40199e
movzx eax, byte [ebp - 0x4a]
neg eax
sbb eax, eax
inc eax
mov byte [ebp - 0x4a], al
movzx eax, byte [ebp - 0x4a]
test eax, eax
je 0x4019aa
mov byte [ebp - 0x4a], 0
movzx eax, byte [ebp - 0x4a]
test eax, eax
jne 0x4019b6
mov byte [ebp - 0x4a], 0
call dword [sym.imp.USER32.dll_DestroyCaret]
mov byte [ebp - 0xd], 0x29
mov byte [ebp - 0xd], 0xec
movsx eax, byte [ebp - 0xd]
dec eax
mov byte [ebp - 0xd], al
movsx eax, byte [ebp - 0xd]
add eax, 0xa0
mov byte [ebp - 0xd], al
mov byte [ebp - 0xe], 9
mov byte [ebp - 0xe], 0x25
movsx eax, byte [ebp - 0xe]
dec eax
mov byte [ebp - 0xe], al
movsx eax, byte [ebp - 0xe]
add eax, 0x78
mov byte [ebp - 0xe], al
push 0
call dword [sym.imp.USER32.dll_GetTopWindow]
mov word [ebp - 0xc], 0x5e
mov byte [ebp - 0x49], 0
movzx eax, byte [ebp - 0x49]
test eax, eax
je 0x401a18
movzx eax, byte [ebp - 0x49]
neg eax
sbb eax, eax
inc eax
mov byte [ebp - 0x49], al
movzx eax, byte [ebp - 0x49]
test eax, eax
je 0x401a24
mov byte [ebp - 0x49], 0
movzx eax, byte [ebp - 0x49]
test eax, eax
jne 0x401a30
mov byte [ebp - 0x49], 0
call dword [sym.imp.KERNEL32.DLL_GetCurrentProcess]
mov dword [ebp - 8], 0xa3d
mov dword [ebp - 0x38], 0x630
push 0
call dword [sym.imp.USER32.dll_ClipCursor]
mov byte [ebp - 0x21], 0x30
mov byte [ebp - 0x21], 0x45
movsx eax, byte [ebp - 0x21]
dec eax
mov byte [ebp - 0x21], al
movsx eax, byte [ebp - 0x21]
add eax, 4
mov byte [ebp - 0x21], al
mov dword [ebp - 0x5c], 0xa12
call dword [sym.imp.USER32.dll_DestroyCaret]
call fcn.00401afd
mov dword [ebp - 0x58], 0x988
mov byte [ebp - 0x41], 0x1d
mov byte [ebp - 0x41], 0x98
movsx eax, byte [ebp - 0x41]
dec eax
mov byte [ebp - 0x41], al
movsx eax, byte [ebp - 0x41]
add eax, 0xde
mov byte [ebp - 0x41], al
push 0
call dword [sym.imp.GDI32.dll_CloseFigure]
cmp dword [ebp - 0x20], 0
jne 0x401ab0
push 1
call fcn.00401396
mov dword [ebp - 0x80], 0x120
mov dword [ebp - 0x80], 0xe5
mov eax, dword [ebp - 0x80]
dec eax
mov dword [ebp - 0x80], eax
mov eax, dword [ebp - 0x80]
add eax, 0xdd
mov dword [ebp - 0x80], eax
mov word [ebp - 4], 0xf6
push 0
call dword [sym.imp.USER32.dll_GetClipCursor]
xor eax, eax
inc eax
jmp 0x401af9
leave
ret 0x10