Function at 0x402a82
Capabilities:
Create process on windows
Get common file path
Read .ini file

Disassembly:
push ebp
lea ebp, [esp - 0x74]
sub esp, 0xefc
mov eax, dword [0x42197c]
xor eax, ebp
push ebx
push esi
push edi
mov dword [ebp + 0x70], eax
mov eax, dword [ebp + 0x7c]
mov dword [ebp - 0xe24], eax
push 0x63
xor eax, eax
mov dword [ebp - 0xe1c], ecx
pop ecx
mov byte [ebp - 0x8f0], 0
lea edi, [ebp - 0x8ef]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x18
xor eax, eax
pop ecx
mov byte [ebp + 0xc], 0
and word [ebp - 0xe48], 0
lea edi, [ebp + 0xd]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x18
pop ecx
xor eax, eax
mov byte [ebp - 0xbc], 0
lea edi, [ebp - 0xbb]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov esi, 0x3e8
push esi
stosb byte es:[edi], al
lea eax, [ebp - 0xcd8]
push 0
push eax
mov dword [ebp - 0xe78], 0x44
mov dword [ebp - 0xe4c], 1
mov byte [ebp - 0xe34], 0
call fcn.004058a0
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
add esp, 0xc
mov ebx, str.._set.ini
push ebx
push esi
lea eax, [ebp - 0xcd8]
push eax
mov esi, 0x41a74c
push esi
push str.afterexec
push 0x41a710
call edi
push ebx
push 2
lea eax, [ebp - 0xe20]
push eax
push esi
push str.subst
push 0x41a710
call edi
push ebx
push 0x64
lea eax, [ebp - 0x58]
push eax
push esi
push str.path
push 0x41a710
call edi
lea eax, [ebp - 0xe20]
push eax
push 0x41a734
call fcn.00405750
test eax, eax
pop ecx
pop ecx
jne 0x402db1
push str.._name.ini
push 0x64
lea eax, [ebp - 0x24c]
push eax
push esi
push str.subst
push dword [ebp - 0xe24]
call edi
lea eax, [ebp - 0x24c]
push eax
mov eax, dword [ebp - 0xe1c]
push 0
push 0x180
push dword [eax + 0x90]
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [ebp - 0xe1c]
push dword [eax + 0x1c]
call dword [sym.imp.USER32.dll_UpdateWindow]
push ebx
push 2
lea eax, [ebp - 0xe20]
push eax
push esi
push str.needsub
push dword [ebp - 0xe24]
call edi
mov dword [ebp - 0xe28], 0x6a
mov al, byte [ebp - 0xe28]
push 0x3e8
mov byte [ebp - 0xe34], al
lea eax, [ebp - 0x760]
push 0
push eax
call fcn.004058a0
movsx eax, byte [ebp - 0xe28]
push eax
mov dword [ebp - 0xe2c], eax
lea eax, [ebp - 0x760]
push str.subst__c:__d
push eax
call fcn.004057d8
add esp, 0x18
push 0
lea eax, [ebp - 0x760]
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
push 0x3e8
lea eax, [ebp - 0x760]
push 0
push eax
call fcn.004058a0
push dword [ebp - 0xe2c]
lea eax, [ebp - 0x760]
push str.subst__c:_.
push eax
call fcn.004057d8
add esp, 0x18
push 0
lea eax, [ebp - 0x760]
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
lea eax, [ebp - 0xcd8]
push eax
lea eax, [ebp - 0x58]
push eax
push dword [ebp - 0xe2c]
lea eax, [ebp - 0x760]
push str._c:_s_s
push eax
call fcn.004057d8
add esp, 0x14
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 0xe18]
push eax
lea eax, [ebp - 0x760]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
jne 0x402d26
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
inc dword [ebp - 0xe28]
cmp word [ebp - 0xe28], 0x7a
jbe 0x402bfb
push str.._name.ini
push 0x64
lea eax, [ebp - 0x2b0]
push eax
push esi
push str.subfail
push dword [ebp - 0xe24]
call edi
mov ecx, dword [ebp - 0xe1c]
lea eax, [ebp - 0x2b0]
push eax
add ecx, 0xc4
call fcn.0041486c
xor eax, eax
jmp 0x4030c5
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0xc8
lea eax, [ebp - 0x184]
push 0
push eax
call fcn.004058a0
push 0x3e8
lea eax, [ebp - 0x760]
push 0
push eax
call fcn.004058a0
movsx eax, byte [ebp - 0xe28]
lea ecx, [ebp - 0x58]
push ecx
push eax
mov dword [ebp - 0xe2c], eax
lea eax, [ebp - 0x184]
push str._c:_s
push eax
call fcn.004057d8
lea eax, [ebp - 0xcd8]
push eax
lea eax, [ebp - 0x58]
push eax
push dword [ebp - 0xe2c]
lea eax, [ebp - 0x760]
push str._c:_s_s
push eax
call fcn.004057d8
push dword [ebp - 0xe2c]
lea eax, [ebp + 0xc]
push 0x41aab4
push eax
call fcn.004057d8
add esp, 0x48
jmp 0x402e22
push 0xc8
lea eax, [ebp - 0x184]
push 0
push eax
call fcn.004058a0
push 0x3e8
lea eax, [ebp - 0x760]
push 0
push eax
call fcn.004058a0
add esp, 0x18
lea eax, [ebp + 0xc]
push eax
push 0x64
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x184]
push 0x41a8fc
push eax
call fcn.004057d8
lea eax, [ebp - 0xcd8]
push eax
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x760]
push str._s_s_s
push eax
call fcn.004057d8
add esp, 0x24
push str..COMP.INI
push 2
lea eax, [ebp - 0xe30]
push eax
push esi
push str.compexe
push 0x41a734
call edi
lea eax, [ebp - 0xe30]
push esi
push eax
call fcn.00405750
test eax, eax
pop ecx
pop ecx
je 0x402e72
push dword [ebp - 0xe24]
mov ecx, dword [ebp - 0xe1c]
lea eax, [ebp + 0xc]
push eax
push dword [ebp - 0xe34]
lea eax, [ebp - 0xe20]
push eax
call fcn.00401e97
push ebx
push 0xc8
lea eax, [ebp - 0x378]
push eax
push esi
push str.preload
push 0x41a710
call edi
lea eax, [ebp - 0x378]
push esi
push eax
call fcn.00405750
test eax, eax
pop ecx
pop ecx
je 0x402f7b
push 0x190
lea eax, [ebp - 0x8f0]
push 0
push eax
call fcn.004058a0
lea eax, [ebp - 0x378]
push eax
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x8f0]
push str._s_s
push eax
call fcn.004057d8
push 0x44
lea eax, [ebp - 0xe78]
push 0
push eax
call fcn.004058a0
add esp, 0x28
lea eax, [ebp - 0xe88]
push eax
lea eax, [ebp - 0xe78]
push eax
lea eax, [ebp + 0xc]
push eax
xor eax, eax
push eax
push 0x10
push eax
push eax
push eax
lea ecx, [ebp - 0x8f0]
push ecx
push eax
mov dword [ebp - 0xe60], 0x44
mov dword [ebp - 0xe4c], 1
mov word [ebp - 0xe48], 5
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
push ebx
push 0
push str.waitpreload
push 0x41a710
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp eax, 1
jne 0x402f50
push 0xffffffffffffffff
push dword [ebp - 0xe88]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0xe1c]
push 0x5a
lea ecx, [eax + 0x168]
mov word [eax + 0x164], 0x5a
call fcn.00401935
mov eax, dword [ebp - 0xe1c]
push dword [eax + 0x1c]
call dword [sym.imp.USER32.dll_UpdateWindow]
push str..gamepath.ini
push 0xff
push str.root
push 0x41a734
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp eax, 0xff
je 0x402fdf
push str.._name.ini
push 0x64
lea eax, [ebp - 0xbc]
push eax
push esi
push str.pathinput
push dword [ebp - 0xe24]
call edi
mov ecx, dword [ebp - 0xe1c]
lea eax, [ebp - 0xbc]
push eax
add ecx, 0xc4
call fcn.0041486c
mov ecx, dword [ebp - 0xe1c]
lea eax, [ebp + 0xc]
push eax
call fcn.0040259e
push str.._regsvr32.ini
push 0xff
push 0x41a734
push 0x41a710
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp eax, 0xff
je 0x40303f
push str.._name.ini
push 0x64
lea eax, [ebp - 0x1e8]
push eax
push esi
push str.needregsvr32
push dword [ebp - 0xe24]
call edi
mov esi, dword [ebp - 0xe1c]
lea eax, [ebp - 0x1e8]
push eax
lea ecx, [esi + 0xc4]
call fcn.0041486c
lea eax, [ebp + 0xc]
push eax
mov ecx, esi
call fcn.0040283e
push ebx
xor esi, esi
push esi
push str.sleep
push 0x41a710
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
imul eax, eax, 0x3e8
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [ebp - 0xe1c]
lea eax, [ebp + 0xc]
push eax
call fcn.0040299d
push 0x44
pop edi
push edi
lea eax, [ebp - 0xe78]
push esi
push eax
call fcn.004058a0
add esp, 0xc
lea eax, [ebp - 0xe88]
push eax
lea eax, [ebp - 0xe78]
push eax
lea eax, [ebp - 0x184]
push eax
push esi
push 0x10
push esi
push esi
push esi
lea eax, [ebp - 0x760]
push eax
push esi
mov dword [ebp - 0xe60], edi
mov dword [ebp - 0xe4c], 1
mov word [ebp - 0xe48], 5
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
mov ecx, dword [ebp + 0x70]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040526e
add ebp, 0x74
leave
ret 4