Function at 0x402d30
Capabilities:
Check if file exists
Create process on windows
Delete file
Read .ini file

Disassembly:
sub esp, 0xc78
mov eax, dword [0x456600]
xor eax, esp
mov dword [esp + 0xc74], eax
push ebx
push ebp
push esi
mov esi, ecx
push 0x206
xor ebp, ebp
lea ecx, [esp + 0x876]
xor eax, eax
push ebp
push ecx
mov dword [esp + 0x18], esi
mov word [esp + 0x87c], ax
call fcn.0042e640
add esp, 0xc
lea ebx, [esp + 0x870]
call fcn.004010a0
mov edx, ebx
push edx
push ebp
push str.substFlag
push str.action_first
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
test eax, eax
jle 0x402ff6
push edi
push 0x206
lea ecx, [esp + 0x46a]
xor eax, eax
push ebp
push ecx
mov word [esp + 0x470], ax
call fcn.0042e640
add esp, 0xc
lea edi, [esp + 0x464]
mov ecx, esi
call fcn.00401000
mov edx, edi
push edx
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
push str.subst.exe
mov eax, edi
push eax
call dword [sym.imp.SHLWAPI.dll_StrCatW]
push 0x3c
lea ecx, [esp + 0x1c]
push ebp
push ecx
call fcn.0042e640
mov ebx, dword [sym.imp.SHELL32.dll_ShellExecuteExW]
mov esi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, edi
add esp, 0xc
mov dword [esp + 0x18], 0x3c
mov dword [esp + 0x1c], 0x40
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], ebp
lea edi, [ebp + 0x43]
jmp 0x402e30
push 0x206
lea ecx, [esp + 0x5a]
xor eax, eax
push ebp
push ecx
mov word [esp + 0x60], ax
call fcn.0042e640
push edi
push str._c:__D
lea edx, [esp + 0x68]
call fcn.004044b0
add esp, 0x14
lea eax, [esp + 0x18]
lea edx, [esp + 0x54]
push eax
mov dword [esp + 0x30], edx
call ebx
mov ecx, dword [esp + 0x50]
push 0xffffffffffffffff
push ecx
call esi
inc edi
cmp edi, 0x5a
jle 0x402e30
call fcn.004019d0
mov ebp, eax
mov dword [esp + 0x14], ebp
test ebp, ebp
jle 0x402f0a
xor edx, edx
push 0x206
push edx
lea eax, [esp + 0x5e]
push eax
mov word [esp + 0x60], dx
call fcn.0042e640
mov ecx, dword [esp + 0x1c]
add ecx, 4
push ecx
lea edx, [esp + 0x64]
push 0x104
push edx
call fcn.0042c4ff
xor eax, eax
push 0x206
push eax
lea ecx, [esp + 0x68e]
push ecx
mov word [esp + 0x690], ax
call fcn.0042e640
lea edx, [esp + 0x78]
push edx
push ebp
push str._c:___s_
lea edx, [esp + 0x69c]
call fcn.004044b0
add esp, 0x30
lea ecx, [esp + 0x18]
lea eax, [esp + 0x66c]
push ecx
mov dword [esp + 0x30], eax
call ebx
mov edx, dword [esp + 0x50]
push 0xffffffffffffffff
push edx
call esi
xor eax, eax
push 0x206
push eax
lea ecx, [esp + 0x266]
push ecx
xor edi, edi
mov word [esp + 0x268], ax
call fcn.0042e640
push ebp
push str._c:CheckExist.rungame
lea edx, [esp + 0x270]
call fcn.004044b0
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
add esp, 0x14
lea edx, [esp + 0x25c]
push edx
call esi
test eax, eax
jne 0x402f9b
mov ebx, dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebp, dword [sym.imp.KERNEL32.dll_Sleep]
mov edi, edi
cmp edi, 0x28
jae 0x402f97
push 0
push 0x80
push 2
push 0
push 2
push 0x40000000
lea eax, [esp + 0x274]
push eax
inc edi
call ebx
push 0x1f4
call ebp
lea ecx, [esp + 0x25c]
push ecx
call esi
test eax, eax
je 0x402f60
mov ebp, dword [esp + 0x14]
lea edx, [esp + 0x25c]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor eax, eax
push 0x206
push eax
lea ecx, [esp + 0xa86]
push ecx
mov word [esp + 0xa88], ax
call fcn.0042e640
push ebp
push 0x449304
lea edx, [esp + 0xa90]
call fcn.004044b0
mov eax, dword [esp + 0x24]
lea edx, [esp + 0xa90]
push edx
add eax, 4
push 0x104
push eax
call fcn.0042c4ff
add esp, 0x20
pop edi
mov ecx, dword [esp + 0xc80]
pop esi
pop ebp
pop ebx
xor ecx, esp
mov al, 1
call fcn.0042c4f0
add esp, 0xc78
ret