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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x47de5b
mov eax, dword fs:[0]
push eax
mov eax, 0x149c
call fcn.00465bd0
mov eax, dword [0x51484c]
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
push 0x20a
xor edi, edi
lea eax, [ebp - 0x220]
mov esi, ecx
push edi
push eax
mov dword [ebp - 0x1450], esi
call fcn.00464180
add esp, 0xc
push 0x104
lea ecx, [ebp - 0x220]
push ecx
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x402911
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4c378c
call fcn.00462f0b
add esp, 8
jmp 0x402bc3
lea eax, [ebp - 0x220]
call fcn.00401fe0
push 0x800
lea edx, [ebp - 0x1430]
push edi
push edx
mov ebx, eax
call fcn.00464180
add esp, 0xc
push 0x44
lea eax, [ebp - 0x14a8]
push edi
push eax
call fcn.00464180
add esp, 0xc
xor eax, eax
lea ecx, [ebp - 0x430]
push ecx
push 0x105
mov dword [ebp - 0x1460], eax
mov dword [ebp - 0x145c], eax
mov dword [ebp - 0x1458], eax
mov dword [ebp - 0x1454], eax
mov dword [ebp - 0x14a8], 0x44
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov ecx, esi
call fcn.00405360
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
xor edx, edx
push edi
mov eax, 0x4c363c
lea esi, [ebp - 0x144c]
mov dword [ebp - 0x1438], 7
mov dword [ebp - 0x143c], edi
mov word [ebp - 0x144c], dx
call fcn.00403b80
mov dword [ebp - 4], edi
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push str.VideoViewer.exe
call esi
test eax, eax
je 0x4029e7
mov eax, str.VideoViewer.exe
lea edx, [eax + 2]
nop
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x4029d0
sub eax, edx
sar eax, 1
push eax
mov eax, str.VideoViewer.exe
jmp 0x402a15
push 0x4c31e8
call esi
test eax, eax
je 0x402b9e
mov eax, 0x4c31e8
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x402a00
sub eax, edx
sar eax, 1
push eax
mov eax, 0x4c31e8
lea esi, [ebp - 0x144c]
call fcn.00403b80
lea ecx, [ebp - 0x220]
cmp ebx, edi
jne 0x402a2f
mov ecx, 0x4c363c
mov eax, dword [ebp - 0x144c]
mov edi, 8
cmp dword [ebp - 0x1438], edi
jae 0x402a48
lea eax, [ebp - 0x144c]
push ecx
push eax
push str._s___s_
mov eax, 0x800
lea ebx, [ebp - 0x1430]
call fcn.00401040
add esp, 0xc
push str.Launching_Viewer_n
call fcn.00462f0b
mov ebx, dword [ebp - 0x1450]
add esp, 4
mov ecx, ebx
call fcn.00405360
push eax
push str.Launch_location:__s_n
call fcn.00462f0b
mov eax, dword [ebp - 0x144c]
add esp, 8
cmp dword [ebp - 0x1438], edi
jae 0x402a9e
lea eax, [ebp - 0x144c]
push eax
push str.Application_Filename:__s_n
call fcn.00462f0b
lea eax, [ebp - 0x1430]
push eax
push str.Command_line:__s_n
call fcn.00462f0b
add esp, 0x10
lea ecx, [ebp - 0x1460]
push ecx
lea edx, [ebp - 0x14a8]
push edx
push 0
push 0
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x1430]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x402b5e
push str.Running...
call fcn.00462f0b
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
add esp, 4
push 0x3e8
call esi
push 0x4c3644
call fcn.00462f0b
add esp, 4
push 0x3e8
call esi
push 0x4c3644
call fcn.00462f0b
add esp, 4
push 0x3e8
call esi
push 0x4c3fa8
call fcn.00462f0b
add esp, 4
push 0
call dword [sym.imp.KERNEL32.dll_GetConsoleWindow]
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, dword [ebp - 0x1460]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0xbb8
call esi
mov ecx, ebx
call fcn.00405360
push eax
push str.Output_directory:__s
call fcn.00462f0b
add esp, 8
mov ecx, ebx
call fcn.00405360
push eax
call fcn.00401560
add esp, 4
cmp dword [ebp - 0x1438], edi
jb 0x402b9a
mov edx, dword [ebp - 0x144c]
push edx
call fcn.004629c2
add esp, 4
mov al, 1
jmp 0x402bc5
push str.ERROR:_The_viewer_is_not_inside_the_video_wrap..._n
call fcn.00462f0b
add esp, 4
cmp dword [ebp - 0x1438], 8
jb 0x402bc3
mov eax, dword [ebp - 0x144c]
push eax
call fcn.004629c2
add esp, 4
xor al, al
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.00462878
mov esp, ebp
pop ebp
ret