Function at 0x4022db
Capabilities:
Check if file exists
Create process on windows
Get common file path
Set environment variable

Disassembly:
push 0xe8
mov eax, 0x423489
call fcn.00408cfd
mov edi, dword [ebp + 0xc]
xor ebx, ebx
inc ebx
push ecx
cmp dword [ebp + 8], ebx
jne 0x402328
mov edx, str.Usage:
mov ecx, 0x433f80
call fcn.0040513d
mov edx, dword [edi]
mov ecx, eax
call fcn.0040513d
mov edx, str._image.cdr
mov ecx, eax
call fcn.0040513d
mov ecx, eax
call fcn.00402a96
xor eax, eax
jmp 0x4026e1
lea ecx, [ebp - 0x28]
call fcn.004026e7
push ecx
call fcn.00402738
and dword [ebp - 4], 0
lea ecx, [ebp - 0x28]
push 0x104
call fcn.004026f3
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x70]
push eax
lea ecx, [ebp - 0x28]
call fcn.00402701
mov edx, eax
lea ecx, [ebp - 0x28]
lea eax, [ebp - 0x74]
push eax
call fcn.0040271a
push ecx
push dword [edx]
lea ecx, [ebp - 0xac]
push dword [eax]
call fcn.0040560d
push ecx
push 0x43009c
lea ecx, [ebp - 0xac]
mov byte [ebp - 4], bl
call fcn.004027cc
push ebx
lea ecx, [ebp - 0x78]
push ecx
push eax
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp - 0x50]
push eax
lea ecx, [ebp - 0xac]
call fcn.00402850
mov ecx, eax
call fcn.00402792
mov ecx, eax
call fcn.00402792
mov esi, eax
lea ecx, [ebp - 0xac]
lea eax, [ebp - 0x54]
push eax
call fcn.00402850
push ecx
push dword [esi]
lea ecx, [ebp - 0x94]
push dword [eax]
call fcn.00405650
push ecx
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 2
call fcn.004026e7
push ecx
call fcn.00402738
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 3
call fcn.004026f3
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push ecx
lea ecx, [ebp - 0x1c]
call fcn.004026e7
push ecx
call fcn.00402738
lea ecx, [ebp - 0x1c]
call fcn.004026f3
push eax
push 0
push 0x4300a0
lea ecx, [ebp - 0x34]
call fcn.004026f3
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
lea ecx, [ebp - 0x4c]
call fcn.0040294e
lea eax, [ebp - 0x54]
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp - 0x1c]
call fcn.00402701
mov edx, eax
lea ecx, [ebp - 0x1c]
lea eax, [ebp - 0x50]
push eax
call fcn.0040271a
push dword [edx]
lea ecx, [ebp - 0x4c]
push dword [eax]
call fcn.00405693
push ecx
push 0x4300a4
lea ecx, [ebp - 0x4c]
call fcn.004027cc
push ecx
lea ecx, [ebp - 0x4c]
mov esi, eax
call fcn.00402809
sub eax, esi
lea ecx, [ebp - 0x4c]
push eax
push esi
call fcn.00402883
lea ecx, [ebp - 0x6c]
call fcn.0040294e
push 0x4300b0
lea ecx, [ebp - 0x6c]
mov byte [ebp - 4], 6
call fcn.004028ab
lea eax, [ebp - 0x54]
push eax
lea ecx, [ebp - 0x94]
call fcn.00402816
mov esi, eax
lea ecx, [ebp - 0x94]
lea eax, [ebp - 0x50]
push eax
call fcn.00402850
push dword [esi]
lea ecx, [ebp - 0x6c]
push dword [eax]
call fcn.004056ca
push str.pyVM.exe___c__from_uniconvertor_import_uniconv_run__uniconv_run______
lea ecx, [ebp - 0x6c]
call fcn.004028ab
push dword [edi + 4]
lea ecx, [ebp - 0x6c]
call fcn.004028ab
push 0x430100
lea ecx, [ebp - 0x6c]
call fcn.004028ab
lea eax, [ebp - 0x4c]
push eax
lea ecx, [ebp - 0x6c]
call fcn.004028ca
push 0x4300b0
lea ecx, [ebp - 0x6c]
call fcn.004028ab
lea eax, [ebp - 0x54]
push eax
lea ecx, [ebp - 0x6c]
call fcn.00402816
mov esi, eax
lea ecx, [ebp - 0x6c]
lea eax, [ebp - 0x50]
push eax
call fcn.00402850
push ecx
push dword [esi]
push dword [eax]
lea ecx, [ebp - 0xf4]
call fcn.00405650
push str.PATH
lea ecx, [ebp - 0xdc]
mov byte [ebp - 4], 7
call fcn.00402927
lea eax, [ebp - 0x54]
mov byte [ebp - 4], 8
push eax
lea ecx, [ebp - 0x94]
call fcn.00402816
mov esi, eax
lea ecx, [ebp - 0x94]
lea eax, [ebp - 0x50]
push eax
call fcn.00402850
push ecx
push dword [esi]
lea ecx, [ebp - 0xc4]
push dword [eax]
call fcn.00405650
push str.DLLs
lea ecx, [ebp - 0xc4]
mov byte [ebp - 4], 9
call fcn.004028ab
lea ecx, [ebp - 0xc4]
call fcn.00402811
push eax
lea ecx, [ebp - 0xdc]
call fcn.00402811
push eax
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
xor edi, edi
lea ecx, [ebp - 0xf4]
push edi
call fcn.00402811
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
test eax, eax
je 0x40264e
mov esi, edi
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ebp - 0x4c]
call fcn.00402811
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x4025f0
inc esi
cmp esi, 0xa
jl 0x4025cc
push 5
push edi
push edi
lea ecx, [ebp - 0x4c]
call fcn.00402811
push eax
push str.open
push edi
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
cmp eax, 0x20
jge 0x402680
push ecx
push eax
lea ecx, [ebp - 0x4c]
call fcn.00402811
mov edx, str.Open
mov ecx, 0x433f80
mov esi, eax
call fcn.004053d7
mov edx, esi
mov ecx, eax
call fcn.0040513d
mov edx, str._Error_Code:
mov ecx, eax
call fcn.004053d7
mov ecx, eax
call fcn.004029ac
mov ecx, eax
call fcn.00402a96
jmp 0x402680
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ecx
lea ecx, [ebp - 0x6c]
call fcn.00402811
mov edx, str.Error_Run
mov ecx, 0x433f80
mov esi, eax
call fcn.004053d7
mov edx, esi
mov ecx, eax
call fcn.0040513d
mov ecx, eax
call fcn.00402a96
mov ebx, edi
lea ecx, [ebp - 0xc4]
call fcn.004028dd
lea ecx, [ebp - 0xdc]
call fcn.004028dd
lea ecx, [ebp - 0xf4]
call fcn.004028dd
lea ecx, [ebp - 0x6c]
call fcn.004028dd
lea ecx, [ebp - 0x4c]
call fcn.004028dd
lea ecx, [ebp - 0x1c]
call fcn.00402733
lea ecx, [ebp - 0x34]
call fcn.00402733
lea ecx, [ebp - 0x94]
call fcn.004028dd
lea ecx, [ebp - 0xac]
call fcn.004028dd
lea ecx, [ebp - 0x28]
call fcn.00402733
mov eax, ebx
call fcn.00408ca7
ret