Function at 0x1000c060
Capabilities:
Get common file path
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x10030dc7
mov eax, dword fs:[0]
push eax
sub esp, 0x2a8
mov eax, dword [0x10047410]
xor eax, esp
mov dword [esp + 0x2a0], eax
push ebx
push esi
push edi
mov eax, dword [0x10047410]
xor eax, esp
push eax
lea eax, [esp + 0x2b8]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
mov esi, dword [ebp + 0x14]
mov edi, edx
push 0x10058838
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], 0x10058838
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [esp + 0x2c0], 0
cmp dword [0x10058ca0], 0
je 0x1000c10a
cmp dword [0x10058cac], 0
je 0x1000c10a
mov edx, dword [esp + 0x20]
mov eax, dword [ebp + 0xc]
push esi
mov esi, dword [0x1005895c]
push edx
push eax
push ebx
push edi
push str.SteamOpenFileEx__s___s___u___u___u__n
call fcn.10006df0
add esp, 0x18
mov eax, edi
mov dword [esp + 0x78], 0xf
mov dword [esp + 0x74], 0
mov byte [esp + 0x64], 0
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x1000c124
sub eax, ecx
mov esi, eax
mov eax, edi
lea ecx, [esp + 0x64]
call fcn.10016150
mov byte [esp + 0x2c0], 1
lea ecx, [esp + 0x18]
push ecx
lea edi, [esp + 0x68]
mov byte [esp + 0x1c], 0x5c
call fcn.10015de0
lea edx, [esp + 0x2c]
lea ebx, [eax + 1]
push edx
mov eax, edi
push eax
or ecx, 0xffffffff
call fcn.100159c0
mov byte [esp + 0x2c0], 2
lea ecx, [esp + 0x48]
push ecx
mov edx, edi
mov ecx, ebx
push edx
xor ebx, ebx
call fcn.100159c0
mov byte [esp + 0x2c0], 3
mov esi, dword [0x1005779c]
mov ebx, dword [0x10057788]
mov edi, 0x10
mov ecx, ebx
cmp esi, edi
jae 0x1000c1a5
mov ecx, 0x10057788
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x40], edi
jae 0x1000c1b3
lea eax, [esp + 0x2c]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1000c1d3
test dl, dl
je 0x1000c1cf
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1000c1d3
add eax, 2
add ecx, 2
test dl, dl
jne 0x1000c1b3
xor eax, eax
jmp 0x1000c1d8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x1000c295
cmp byte [0x10058c74], 0
jne 0x1000c243
cmp dword [0x10058ca0], 0
je 0x1000c24a
cmp byte [0x10058cc4], 0
je 0x1000c24a
mov edx, dword [0x100577a4]
cmp dword [0x100577b8], edi
jae 0x1000c20e
mov edx, 0x100577a4
mov ecx, ebx
cmp esi, edi
jae 0x1000c219
mov ecx, 0x10057788
mov eax, dword [0x100577c0]
cmp dword [0x100577d4], edi
jae 0x1000c22b
mov eax, 0x100577c0
mov esi, dword [0x10058724]
push edx
push ecx
push eax
push str._FAIL___s___s_____s__n
call fcn.10006df0
add esp, 0x10
jmp 0x1000c24a
mov byte [0x10058c74], 0
lea eax, [esp + 0x2c]
push eax
or ecx, 0xffffffff
xor ebx, ebx
mov edi, 0x10057788
call fcn.100160b0
lea ecx, [esp + 0x48]
push ecx
or ecx, 0xffffffff
mov edi, 0x100577a4
call fcn.100160b0
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x1000c277
sub eax, edx
mov esi, eax
mov eax, dword [esp + 0x14]
mov ecx, 0x100577c0
call fcn.10016150
mov edi, 0x10
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x9c]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x1000c2a2
mov esi, dword [esp + 0x24]
xor ebx, ebx
cmp esi, ebx
je 0x1000c2c1
mov dword [esi], ebx
mov dword [esi + 4], ebx
mov dword [esi + 8], ebx
mov byte [esi + 0xc], bl
lea edx, [esp + 0x9c]
push 0x1003e80c
push edx
call fcn.100227c0
add esp, 8
test eax, eax
je 0x1000c3ad
xor ebx, ebx
mov dword [esi], 9
cmp dword [0x10058ca0], ebx
je 0x1000c313
cmp dword [0x10058cac], ebx
je 0x1000c313
mov eax, dword [esp + 0x1c]
mov esi, dword [0x1005895c]
push eax
push str._tFile_not_found___s__n
call fcn.10006df0
add esp, 8
mov edi, 0x10
mov byte [esp + 0x2c0], 2
cmp dword [esp + 0x5c], edi
jb 0x1000c32e
mov ecx, dword [esp + 0x48]
push ecx
call fcn.1001f865
add esp, 4
mov esi, 0xf
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], ebx
mov byte [esp + 0x48], 0
mov byte [esp + 0x2c0], 1
cmp dword [esp + 0x40], edi
jb 0x1000c35b
mov edx, dword [esp + 0x2c]
push edx
call fcn.1001f865
add esp, 4
mov dword [esp + 0x40], esi
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2c], 0
mov byte [esp + 0x2c0], 0
cmp dword [esp + 0x78], edi
jb 0x1000c383
mov eax, dword [esp + 0x64]
push eax
call fcn.1001f865
add esp, 4
mov dword [esp + 0x78], esi
mov dword [esp + 0x74], ebx
mov byte [esp + 0x64], 0
mov dword [esp + 0x2c0], 0xffffffff
push 0x10058838
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor eax, eax
jmp 0x1000c7d8
lea eax, [esp + 0x9c]
mov byte [esp + 0x1a4], bl
mov dword [esp + 0x94], 0xf
mov dword [esp + 0x90], ebx
mov byte [esp + 0x80], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x1000c3d7
sub eax, edx
mov esi, eax
lea eax, [esp + 0x9c]
lea ecx, [esp + 0x80]
call fcn.10016150
mov byte [esp + 0x2c0], 4
cmp dword [esp + 0x94], 0x10
mov eax, dword [esp + 0x80]
jae 0x1000c415
lea eax, [esp + 0x80]
lea edx, [esp + 0x9c]
sub edx, eax
mov edi, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x1000c420
cmp byte [esp + 0x9c], 0x2e
jne 0x1000c44f
cmp byte [esp + 0x9d], 0x5c
jne 0x1000c44f
lea eax, [esp + 0x9e]
mov cl, byte [eax]
mov byte [eax - 2], cl
inc eax
test cl, cl
jne 0x1000c445
cmp byte [esp + 0x9d], 0x3a
je 0x1000c492
cmp byte [esp + 0x9e], 0x5c
je 0x1000c492
lea ecx, [esp + 0x1a4]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea edi, [esp + 0x1a4]
dec edi
mov edi, edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x1000c480
mov dx, word [0x1003e774]
mov word [edi], dx
lea eax, [esp + 0x9c]
mov edx, eax
jmp 0x1000c4a0
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x1000c4a0
lea edi, [esp + 0x1a4]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x1000c4b1
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
cmp byte [0x10058c76], 1
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x20]
jne 0x1000c4e8
mov eax, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x20]
mov ebx, edi
call fcn.1000a660
mov ebx, eax
mov ecx, dword [esp + 0x14]
push ecx
lea edx, [esp + 0x1a8]
push edx
call fcn.1001fdd8
mov esi, eax
add esp, 8
test esi, esi
je 0x1000c52c
test edi, edi
je 0x1000c52c
push 2
push 0
push esi
call fcn.10022741
add esp, 0xc
push esi
call fcn.10022033
add esp, 4
push 0
push 0
push esi
mov dword [edi], eax
call fcn.10022741
add esp, 0xc
test ebx, ebx
jne 0x1000c577
test esi, esi
jne 0x1000c638
mov eax, dword [esp + 0x24]
mov dword [eax], 9
cmp dword [0x10058ca0], esi
je 0x1000c6ed
cmp dword [0x10058cac], esi
je 0x1000c6ed
mov ecx, dword [esp + 0x1c]
mov esi, dword [0x1005895c]
push ecx
push str._tFile_not_found___s__n
call fcn.10006df0
add esp, 8
jmp 0x1000c6ed
test esi, esi
je 0x1000c6bd
mov edx, dword [ebx + 4]
cmp byte [edx + 0x36], 0
jne 0x1000c5c0
push esi
call fcn.1001fea3
add esp, 4
cmp dword [0x10058ca0], 0
je 0x1000c6ed
cmp dword [0x10058cac], 0
je 0x1000c6ed
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
push eax
push ecx
push ebx
push str._tPreferred_0x_08X_from_Cache__s___s_n
jmp 0x1000c6df
mov edi, 0x10
push edi
call fcn.1001f870
add esp, 4
test eax, eax
je 0x1000c5e3
xor ecx, ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov ebx, eax
jmp 0x1000c5e5
xor ebx, ebx
xor eax, eax
mov dword [ebx], eax
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], eax
mov byte [ebx], 1
mov dword [ebx + 4], esi
cmp dword [0x10058ca0], eax
je 0x1000c6b4
cmp dword [0x10058cac], eax
je 0x1000c6b4
mov ecx, dword [esp + 0x48]
cmp dword [esp + 0x5c], edi
jae 0x1000c61b
lea ecx, [esp + 0x48]
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x40], edi
jae 0x1000c629
lea eax, [esp + 0x2c]
mov edx, dword [esp + 0x14]
push ecx
push eax
push edx
push ebx
push str._tPreferred_0x_08X_from_Local__s___s_____s_n
jmp 0x1000c6a6
mov edi, 0x10
push edi
call fcn.1001f870
add esp, 4
test eax, eax
je 0x1000c65b
xor ecx, ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov ebx, eax
jmp 0x1000c65d
xor ebx, ebx
xor eax, eax
mov dword [ebx], eax
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], eax
mov byte [ebx], 1
mov dword [ebx + 4], esi
cmp dword [0x10058ca0], eax
je 0x1000c6b4
cmp dword [0x10058cac], eax
je 0x1000c6b4
mov ecx, dword [esp + 0x48]
cmp dword [esp + 0x5c], edi
jae 0x1000c68b
lea ecx, [esp + 0x48]
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x40], edi
jae 0x1000c699
lea eax, [esp + 0x2c]
push ecx
push eax
mov eax, dword [esp + 0x1c]
push eax
push ebx
push str._tOpened_0x_08X_from_Local__s___s_____s_n
mov esi, dword [0x1005895c]
call fcn.10006df0
add esp, 0x14
mov byte [0x10058c74], 1
jmp 0x1000c6ed
cmp dword [0x10058ca0], 0
je 0x1000c6ed
cmp dword [0x10058cac], 0
je 0x1000c6ed
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
push ecx
push edx
push ebx
push str._tOpened_0x_08X_from_Cache__s___s_n
mov esi, dword [0x1005895c]
call fcn.10006df0
add esp, 0x10
mov byte [esp + 0x2c0], 3
cmp dword [esp + 0x94], 0x10
jb 0x1000c70f
mov eax, dword [esp + 0x80]
push eax
call fcn.1001f865
add esp, 4
mov dword [esp + 0x94], 0xf
mov dword [esp + 0x90], 0
mov byte [esp + 0x80], 0
mov byte [esp + 0x2c0], 2
cmp dword [esp + 0x5c], 0x10
jb 0x1000c749
mov ecx, dword [esp + 0x48]
push ecx
call fcn.1001f865
add esp, 4
mov dword [esp + 0x5c], 0xf
mov dword [esp + 0x58], 0
mov byte [esp + 0x48], 0
mov byte [esp + 0x2c0], 1
cmp dword [esp + 0x40], 0x10
jb 0x1000c77a
mov edx, dword [esp + 0x2c]
push edx
call fcn.1001f865
add esp, 4
mov dword [esp + 0x40], 0xf
mov dword [esp + 0x3c], 0
mov byte [esp + 0x2c], 0
mov byte [esp + 0x2c0], 0
cmp dword [esp + 0x78], 0x10
jb 0x1000c7ab
mov eax, dword [esp + 0x64]
push eax
call fcn.1001f865
add esp, 4
mov dword [esp + 0x78], 0xf
mov dword [esp + 0x74], 0
mov byte [esp + 0x64], 0
mov dword [esp + 0x2c0], 0xffffffff
push 0x10058838
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, ebx
mov ecx, dword [esp + 0x2b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2a0]
xor ecx, esp
call fcn.1001f521
mov esp, ebp
pop ebp
ret