Function at 0x4028e0
Capabilities:
Check if file exists
Create process on windows
Get common file path
Hide graphical window
Set current directory

Disassembly:
push 0xffffffffffffffff
push 0x47ce3b
mov eax, dword fs:[0]
push eax
mov eax, 0x14a4
call fcn.00465060
mov eax, dword [0x536400]
xor eax, esp
mov dword [esp + 0x14a0], eax
push esi
push edi
mov eax, dword [0x536400]
xor eax, esp
push eax
lea eax, [esp + 0x14b0]
mov dword fs:[0], eax
push 0x20a
lea eax, [esp + 0x90]
mov esi, ecx
push 0
push eax
mov dword [esp + 0x1c], esi
call fcn.00463870
add esp, 0xc
push 0x104
lea ecx, [esp + 0x90]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x40296c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4c3de4
call fcn.004629da
add esp, 8
jmp 0x402be5
push 0x800
lea edx, [esp + 0x4b0]
push 0
push edx
call fcn.00463870
add esp, 0xc
push 0x44
lea eax, [esp + 0x28]
push 0
push eax
call fcn.00463870
add esp, 0xc
xor eax, eax
lea ecx, [esp + 0x29c]
push ecx
push 0x105
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], 0x44
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov ecx, esi
call fcn.004066d0
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push 0
push 0x4c3c90
lea esi, [esp + 0x78]
mov dword [esp + 0x90], 7
mov dword [esp + 0x8c], 0
mov word [esp + 0x7c], 0
call fcn.004046f0
mov dword [esp + 0x14b8], 0
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push 0x4c3730
call esi
test eax, eax
je 0x402a37
mov eax, 0x4c3730
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x402a20
sub eax, edx
sar eax, 1
push eax
push 0x4c3730
jmp 0x402a65
push 0x4c3940
call esi
test eax, eax
je 0x402bc1
mov eax, 0x4c3940
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x402a50
sub eax, edx
sar eax, 1
push eax
push 0x4c3940
lea esi, [esp + 0x78]
call fcn.004046f0
cmp dword [esp + 0x88], 8
mov eax, dword [esp + 0x74]
jae 0x402a80
lea eax, [esp + 0x74]
lea edx, [esp + 0x8c]
push edx
push eax
push str._s___s_
mov eax, 0x800
lea edi, [esp + 0x4b8]
call fcn.00401200
add esp, 0xc
push str.Launching_Viewer_n
call fcn.004629da
mov edi, dword [esp + 0x14]
add esp, 4
mov ecx, edi
call fcn.004066d0
push eax
push str.Launch_location:__s_n
call fcn.004629da
mov eax, dword [esp + 0x7c]
add esp, 8
cmp dword [esp + 0x88], 8
jae 0x402ada
lea eax, [esp + 0x74]
push eax
push str.Application_Filename:__s_n
call fcn.004629da
lea eax, [esp + 0x4b4]
push eax
push str.Command_line:__s_n
call fcn.004629da
add esp, 0x10
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x28]
push edx
push 0
push 0
push 0
push 0
push 0
push 0
lea eax, [esp + 0x4cc]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x402b96
push str.Running...
call fcn.004629da
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 4
push 0x3e8
call esi
push 0x4c3c98
call fcn.004629da
add esp, 4
push 0x3e8
call esi
push 0x4c3c98
call fcn.004629da
add esp, 4
push 0x3e8
call esi
push 0x4c4578
call fcn.004629da
add esp, 4
push 0
call dword [sym.imp.KERNEL32.dll_GetConsoleWindow]
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, dword [esp + 0x14]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0xbb8
call esi
mov ecx, edi
call fcn.004066d0
push eax
call fcn.00401640
add esp, 4
cmp dword [esp + 0x88], 8
jb 0x402bbd
mov edx, dword [esp + 0x74]
push edx
call fcn.00462679
add esp, 4
mov al, 1
jmp 0x402be7
push str.ERROR:_The_viewer_is_not_inside_the_video_wrap..._n
call fcn.004629da
add esp, 4
cmp dword [esp + 0x88], 8
jb 0x402be5
mov eax, dword [esp + 0x74]
push eax
call fcn.00462679
add esp, 4
xor al, al
mov ecx, dword [esp + 0x14b0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [esp + 0x14a0]
xor ecx, esp
call fcn.0046255c
add esp, 0x14b0
ret