Function at 0x40f5c0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x460b66
mov eax, dword fs:[0]
push eax
sub esp, 0x240
mov eax, dword [0x472008]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, edx
mov dword [ebp - 0x248], esi
mov edi, ecx
mov ebx, dword [ebp + 8]
mov ecx, ebx
push esi
mov dword [ebp - 0x244], ebx
call fcn.0040baa0
mov ecx, esi
call fcn.0040f350
mov dword [ebp - 0x240], eax
test eax, eax
je 0x40f758
add eax, eax
xor edx, edx
mov dword [ebp - 0x248], eax
lea edi, [eax + esi]
movzx eax, word [edi]
test ax, ax
je 0x40f687
lea ecx, [edi - 2]
cmp ax, 0x2e
jne 0x40f67a
test edx, edx
je 0x40f64f
movzx eax, word [ecx]
mov esi, eax
cmp eax, 0x5c
je 0x40f64f
cmp esi, 0x2f
jne 0x40f67a
movzx eax, word [ecx + 4]
test ax, ax
je 0x40f68e
cmp eax, 0x5c
je 0x40f68e
cmp eax, 0x2f
je 0x40f68e
cmp eax, 0x2e
jne 0x40f67a
movzx eax, word [ecx + 6]
test ax, ax
je 0x40f68e
cmp eax, 0x5c
je 0x40f68e
cmp eax, 0x2f
je 0x40f68e
movzx eax, word [ecx + 4]
add ecx, 2
inc edx
test ax, ax
jne 0x40f636
mov al, 1
jmp 0x40f912
xor eax, eax
xor esi, esi
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x224], eax
mov dword [ebp - 0x220], eax
inc esi
cmp word [edi + esi*2], ax
jne 0x40f6a4
xor ecx, ecx
lea eax, [esi + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0045e549
lea ecx, [esi*2 + 2]
mov dword [ebp - 0x228], eax
push ecx
push edi
push eax
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x220], esi
call sub.msvcrt.dll_memcpy
add esp, 0x10
lea ecx, [ebp - 0x228]
mov dword [ebp - 4], 0
call fcn.0040f440
mov edi, dword [ebp - 0x228]
test al, al
je 0x40f74b
mov eax, dword [ebp - 0x240]
cmp eax, dword [ebx + 4]
jae 0x40f720
mov ecx, dword [ebp - 0x248]
xor edx, edx
mov dword [ebx + 4], eax
mov eax, dword [ebx]
mov word [ecx + eax], dx
mov esi, dword [ebp - 0x224]
mov ecx, ebx
push esi
call fcn.0040b990
mov ecx, dword [ebx + 4]
lea eax, [esi*2 + 2]
push eax
mov eax, dword [ebx]
push edi
lea eax, [eax + ecx*2]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add dword [ebx + 4], esi
push edi
call fcn.0045e2f3
mov al, 1
jmp 0x40f90f
push 8
call fcn.0045e549
mov ebx, eax
mov dword [ebp - 0x230], 0
mov esi, 3
mov dword [ebp - 0x234], ebx
xor eax, eax
mov dword [ebp - 0x22c], esi
add esp, 4
mov word [ebx], ax
mov dword [ebp - 4], 1
test edi, edi
je 0x40f7b2
push edi
lea ecx, [ebp - 0x234]
call fcn.0040baa0
mov esi, dword [ebp - 0x22c]
mov edi, dword [ebp - 0x230]
mov ebx, dword [ebp - 0x234]
jmp 0x40f86b
xor eax, eax
mov dword [ebp - 0x230], 0
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21c]
push eax
push 0x105
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
xor edi, edi
mov dword [ebp - 0x23c], eax
cmp word [ebp - 0x21c], di
je 0x40f83b
jmp 0x40f7f0
inc edi
mov eax, edi
mov dword [ebp - 0x240], eax
cmp word [ebp + edi*2 - 0x21c], 0
jne 0x40f7f0
cmp eax, 3
jbe 0x40f83b
xor ecx, ecx
inc eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0045e549
push ebx
mov esi, eax
call fcn.0045e2f3
mov ebx, esi
add esp, 8
mov esi, edi
mov dword [ebp - 0x234], ebx
mov dword [ebp - 0x22c], esi
lea eax, [edi*2 + 2]
mov dword [ebp - 0x230], edi
push eax
lea eax, [ebp - 0x21c]
push eax
push ebx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0x23c]
add esp, 0xc
dec eax
cmp eax, 0x103
ja 0x40f8fc
test edi, edi
je 0x40f8af
movzx eax, word [ebx + edi*2 - 2]
cmp eax, 0x5c
je 0x40f8af
cmp eax, 0x2f
je 0x40f8af
cmp esi, edi
jne 0x40f899
lea ecx, [ebp - 0x234]
call fcn.0040b900
mov edi, dword [ebp - 0x230]
mov ebx, dword [ebp - 0x234]
mov eax, 0x5c
mov word [ebx + edi*2], ax
inc edi
xor eax, eax
mov dword [ebp - 0x230], edi
mov word [ebx + edi*2], ax
movzx eax, word [ebx]
mov ecx, eax
cmp eax, 0x5c
je 0x40f8be
cmp ecx, 0x2f
jne 0x40f92e
movzx eax, word [ebx + 2]
mov edx, eax
cmp eax, 0x5c
je 0x40f8ce
cmp edx, 0x2f
jne 0x40f92e
cmp word [ebx + 4], 0x3f
jne 0x40f92e
movzx eax, word [ebx + 6]
mov edx, eax
cmp eax, 0x5c
je 0x40f8e5
cmp edx, 0x2f
jne 0x40f92e
mov ecx, ebx
call fcn.0040f2d0
mov esi, eax
mov dword [ebp - 0x240], esi
test esi, esi
jne 0x40f995
mov byte [ebp - 0x235], 0
push ebx
call fcn.0045e2f3
mov al, byte [ebp - 0x235]
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0045e090
mov esp, ebp
pop ebp
ret
cmp ecx, 0x61
jb 0x40f938
cmp ecx, 0x7a
jbe 0x40f942
cmp ecx, 0x41
jb 0x40f960
cmp ecx, 0x5a
ja 0x40f960
cmp word [ebx + 2], 0x3a
jne 0x40f960
movzx eax, word [ebx + 4]
mov edx, eax
cmp eax, 0x5c
je 0x40f959
cmp edx, 0x2f
jne 0x40f960
mov esi, 3
jmp 0x40f98f
mov eax, ecx
cmp eax, 0x5c
je 0x40f96c
cmp eax, 0x2f
jne 0x40f8fc
movzx eax, word [ebx + 2]
cmp eax, 0x5c
je 0x40f97a
cmp eax, 0x2f
jne 0x40f8fc
lea ecx, [ebx + 4]
call fcn.0040f260
mov esi, eax
test esi, esi
je 0x40f8fc
add esi, 2
mov dword [ebp - 0x240], esi
push 8
call fcn.0045e549
xor ecx, ecx
mov dword [ebp - 0x228], eax
add esp, 4
mov dword [ebp - 0x224], 0
mov dword [ebp - 0x220], 3
mov word [eax], cx
mov edx, dword [ebp - 0x248]
mov byte [ebp - 4], 2
movzx eax, word [edx]
mov ecx, eax
cmp eax, 0x5c
je 0x40fabb
cmp ecx, 0x2f
je 0x40fabb
lea eax, [esi + esi]
lea ecx, [eax + ebx]
mov dword [ebp - 0x24c], eax
xor eax, eax
mov dword [ebp - 0x23c], eax
cmp word [ecx], ax
je 0x40fa06
inc eax
cmp word [ecx + eax*2], 0
jne 0x40f9f8
mov dword [ebp - 0x23c], eax
push eax
lea ecx, [ebp - 0x228]
call fcn.0040b990
mov eax, dword [ebp - 0x228]
mov esi, dword [ebp - 0x224]
lea ecx, [eax + esi*2]
mov eax, dword [ebp - 0x23c]
lea eax, [eax*2 + 2]
push eax
mov eax, dword [ebp - 0x24c]
add eax, ebx
push eax
push ecx
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebp - 0x248]
xor eax, eax
add esi, dword [ebp - 0x23c]
add esp, 0xc
mov dword [ebp - 0x224], esi
mov dword [ebp - 0x23c], eax
cmp word [ecx], ax
je 0x40fa6e
inc eax
cmp word [ecx + eax*2], 0
jne 0x40fa60
mov dword [ebp - 0x23c], eax
push eax
lea ecx, [ebp - 0x228]
call fcn.0040b990
mov eax, dword [ebp - 0x228]
mov esi, dword [ebp - 0x224]
mov edx, dword [ebp - 0x248]
lea ecx, [eax + esi*2]
mov eax, dword [ebp - 0x23c]
lea eax, [eax*2 + 2]
push eax
push edx
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add esi, dword [ebp - 0x23c]
mov dword [ebp - 0x224], esi
mov esi, dword [ebp - 0x240]
jmp 0x40faca
lea eax, [edx + 2]
push eax
lea ecx, [ebp - 0x228]
call fcn.0040baa0
lea ecx, [ebp - 0x228]
call fcn.0040f440
test al, al
jne 0x40faf2
push dword [ebp - 0x228]
mov byte [ebp - 0x235], al
call fcn.0045e2f3
add esp, 4
jmp 0x40f903
cmp esi, edi
jae 0x40fb04
mov edi, esi
xor eax, eax
mov dword [ebp - 0x230], edi
mov word [ebx + esi*2], ax
mov eax, dword [ebp - 0x244]
lea ecx, [ebp - 0x234]
cmp ecx, eax
je 0x40fb6d
cmp edi, dword [eax + 8]
jbe 0x40fb4f
xor ecx, ecx
lea eax, [edi + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0045e549
mov esi, eax
mov eax, dword [ebp - 0x244]
push dword [eax]
call fcn.0045e2f3
mov eax, dword [ebp - 0x244]
add esp, 8
mov dword [eax], esi
mov dword [eax + 8], edi
mov dword [eax + 4], edi
lea eax, [edi*2 + 2]
mov edi, dword [ebp - 0x244]
push eax
push ebx
push dword [edi]
call sub.msvcrt.dll_memcpy
add esp, 0xc
jmp 0x40fb6f
mov edi, eax
mov esi, dword [ebp - 0x224]
mov ecx, edi
push esi
call fcn.0040b990
mov ecx, dword [edi + 4]
lea eax, [esi*2 + 2]
push eax
mov eax, dword [edi]
push dword [ebp - 0x228]
lea eax, [eax + ecx*2]
push eax
call sub.msvcrt.dll_memcpy
add dword [edi + 4], esi
add esp, 0xc
mov byte [ebp - 0x235], 1
push dword [ebp - 0x228]
call fcn.0045e2f3
add esp, 4
jmp 0x40f903