Function at 0x1004e920
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x158
mov eax, dword [0x106499c8]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, ebx
push edi
mov edi, dword [ebp + 0xc]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x1004e941
lea eax, [ebp - 0x138]
push eax
push 0
push ebx
sub esi, ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExA]
test eax, eax
je 0x1004ebbe
xor eax, eax
inc eax
cmp esi, eax
jb 0x1004ebdb
cmp byte [ebx + 1], 0x3a
jne 0x1004ebdb
mov al, byte [ebx]
cmp al, 0x41
jl 0x103a8f1c
cmp al, 0x5a
jg 0x103a8f1c
movsx eax, al
add eax, 0xffffffbf
mov dword [edi + 0x10], eax
mov dword [edi], eax
mov edx, dword [ebp - 0x138]
xor eax, eax
mov word [edi + 4], ax
mov dword [edi + 0xa], eax
cmp dword [ebp + 0x10], eax
jne 0x1004ebca
test dl, 0x10
mov eax, 0x4049
mov ecx, 0x8000
cmovne ecx, eax
test dl, 1
mov eax, 0x1b6
mov esi, 0x124
cmovne eax, esi
or eax, ecx
mov word [edi + 6], ax
test dl, 0x10
jne 0x1004ea4b
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004e9dc
sub ecx, edx
cmp byte [ebx + ecx - 4], 0x2e
jne 0x1004ea4b
lea esi, [ebx - 3]
mov ebx, dword [sym.imp.MSVCR110.dll__memicmp]
push 3
add esi, ecx
push 0x10547e5c
push esi
call ebx
add esp, 0xc
test eax, eax
je 0x1004ec5e
push 3
push 0x10547e60
push esi
call ebx
add esp, 0xc
test eax, eax
je 0x1004ec5e
push 3
push 0x10547e64
push esi
call ebx
add esp, 0xc
test eax, eax
je 0x1004ec5e
push 3
push 0x10547e68
push esi
call ebx
add esp, 0xc
test eax, eax
je 0x1004ec5e
mov ebx, dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
xor eax, eax
inc eax
mov word [edi + 8], ax
mov eax, dword [ebp - 0x11c]
mov eax, dword [ebp - 0x12c]
mov dword [ebp - 0x154], eax
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x150], eax
lea eax, [ebp - 0x148]
xor ecx, ecx
or ecx, dword [ebp - 0x118]
push eax
lea eax, [ebp - 0x154]
push eax
mov dword [edi + 0x14], ecx
call ebx
mov eax, dword [ebp - 0x150]
xor ecx, ecx
add ecx, dword [ebp - 0x154]
push 0
adc eax, 0
sub ecx, 0xd53e8000
push 0x989680
sbb eax, 0x19db1de
push eax
push ecx
call fcn.10311e30
mov ecx, eax
mov esi, edx
cdq
cmp eax, ecx
jne 0x103a901c
cmp edx, esi
jne 0x103a901c
mov eax, dword [ebp - 0x134]
mov dword [ebp - 0x154], eax
mov eax, dword [ebp - 0x130]
mov dword [ebp - 0x150], eax
lea eax, [ebp - 0x148]
push eax
lea eax, [ebp - 0x154]
push eax
mov dword [edi + 0x18], ecx
call ebx
mov eax, dword [ebp - 0x150]
xor ecx, ecx
add ecx, dword [ebp - 0x154]
push 0
adc eax, 0
sub ecx, 0xd53e8000
push 0x989680
sbb eax, 0x19db1de
push eax
push ecx
call fcn.10311e30
mov ecx, eax
mov esi, edx
cdq
cmp eax, ecx
jne 0x103a9032
cmp edx, esi
jne 0x103a9032
mov eax, dword [ebp - 0x124]
mov dword [ebp - 0x154], eax
mov eax, dword [ebp - 0x120]
mov dword [ebp - 0x150], eax
lea eax, [ebp - 0x148]
push eax
lea eax, [ebp - 0x154]
push eax
mov dword [edi + 0x20], ecx
call ebx
mov eax, dword [ebp - 0x150]
xor ecx, ecx
add ecx, dword [ebp - 0x154]
push 0
adc eax, 0
sub ecx, 0xd53e8000
push 0x989680
sbb eax, 0x19db1de
push eax
push ecx
call fcn.10311e30
mov ecx, eax
mov esi, edx
cdq
cmp eax, ecx
jne 0x103a9048
cmp edx, esi
jne 0x103a9048
mov dword [edi + 0x1c], ecx
xor eax, eax
lea esp, [ebp - 0x164]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.10311bec
leave
ret
push edi
push ebx
call dword [sym.imp.MSVCR110.dll__stat32]
pop ecx
pop ecx
jmp 0x1004eba9
test edx, 0x400
je 0x1004e9ac
jmp 0x103a8f79
cmp esi, 2
jb 0x1004ebf2
mov al, byte [ebx]
cmp al, 0x2f
je 0x103a8f27
cmp al, 0x5c
je 0x103a8f27
lea esi, [ebp - 0x114]
mov eax, esi
push eax
push 0x105
mov dword [ebp - 0x158], esi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
cmp eax, 0x105
jae 0x103a8f42
cmp byte [esi + 1], 0x3a
jne 0x1004ec55
mov al, byte [ebx]
cmp al, 0x41
jge 0x1004ec49
movsx eax, al
add eax, 0xffffff9f
mov dword [edi + 0x10], eax
mov dword [edi], eax
lea eax, [ebp - 0x114]
cmp esi, eax
je 0x1004e994
push esi
call dword [sym.imp.MSVCR110.dll_free]
pop ecx
jmp 0x1004e994
cmp al, 0x5a
jg 0x1004ec23
movsx eax, al
add eax, 0xffffffbf
jmp 0x1004ec29
or dword [edi + 0x10], 0xffffffff
or dword [edi], 0xffffffff
jmp 0x1004ec2e
or word [edi + 6], 0x49
jmp 0x1004ea4b
movsx eax, al
add eax, 0xffffff9f
jmp 0x1004e98f
mov al, byte [ebx + 1]
cmp al, 0x2f
je 0x103a8f36
cmp al, 0x5c
jne 0x1004ebf2
and dword [edi + 0x10], 0
and dword [edi], 0
jmp 0x1004e994
test eax, eax
je 0x103a8f6e
lea esi, [eax + 1]
push esi
call dword [sym.imp.MSVCR110.dll_malloc]
pop ecx
push eax
push esi
mov dword [ebp - 0x158], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
cmp eax, esi
jae 0x103a8f42
mov esi, dword [ebp - 0x158]
jmp 0x1004ec17
mov esi, dword [ebp - 0x158]
jmp 0x1004ec55
and dword [ebp - 0x158], eax
push 0
push 0x2200000
push 3
push 0
push 0
push bind
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x103a8fda
mov eax, 0x4000
call fcn.10312260
mov eax, esp
xor edx, edx
push edx
lea ecx, [ebp - 0x158]
push ecx
push 0x4000
push eax
push edx
push edx
push 0x900a8
push esi
mov dword [ebp - 0x150], eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push esi
test eax, eax
jne 0x103a8fe2
call dword [sym.imp.KERNEL32.dll_CloseHandle]
or eax, 0xffffffff
jmp 0x1004eba9
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x150]
mov edx, dword [ebp - 0x138]
cmp dword [eax], 0xa000000c
jne 0x1004e9d2
test dl, 1
mov eax, 0x1b6
mov ecx, 0x124
mov esi, 0xa000
cmovne eax, ecx
or eax, esi
jmp 0x1004e9ce
xorps xmm0, xmm0
movlpd qword [ebp - 0x154], xmm0
mov ecx, dword [ebp - 0x154]
jmp 0x1004ead0
xorps xmm0, xmm0
movlpd qword [ebp - 0x154], xmm0
mov ecx, dword [ebp - 0x154]
jmp 0x1004eb3a
xorps xmm0, xmm0
movlpd qword [ebp - 0x154], xmm0
mov ecx, dword [ebp - 0x154]
jmp 0x1004eba4