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

Disassembly:
push ebp
mov eax, 0x1b7c
lea ebp, [esp - 0x1afc]
call fcn.004055f0
mov eax, dword [0x42197c]
push ebx
push esi
push edi
mov edi, str.FA531CC1_0497_11d3_A180_10105A276C3D
push edi
xor ebx, ebx
push ebx
xor eax, ebp
push 0x1f0001
mov dword [ebp + 0x1af8], eax
mov esi, ecx
call dword [sym.imp.KERNEL32.dll_OpenMutexA]
test eax, eax
je 0x40312e
push ebx
jmp 0x4036ca
push edi
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
push 0x41abd4
call fcn.004030d9
mov ecx, eax
call fcn.0041486c
lea ecx, [esi + 0xc4]
push 0x41abcc
mov dword [ebp - 0x7c], ecx
call fcn.0041486c
lea ecx, [esi + 0x74]
call fcn.00401922
push 0x14
lea eax, [ebp + 0x1ae4]
push ebx
push eax
call fcn.004058a0
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
add esp, 0xc
push str.._name.ini
push 0x14
lea eax, [ebp + 0x1ae4]
push eax
mov ebx, 0x41a74c
push ebx
push str.default
push str.lang
call edi
lea eax, [ebp + 0x1ae4]
push eax
push ebx
call fcn.00405750
test eax, eax
pop ecx
pop ecx
jne 0x4031eb
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
push 0x41aba0
push eax
mov ebx, 0x180
push ebx
push dword [esi + 0x90]
call edi
push str.Fatal_error_name.ini_invalid
push 0
push ebx
push dword [esi + 0x90]
call edi
mov ecx, dword [ebp - 0x7c]
push str.Fatal_error
call fcn.0041486c
jmp 0x4036d0
push str.._name.ini
push 0x64
lea eax, [ebp + 0x16fc]
push eax
push ebx
push str.complete
lea eax, [ebp + 0x1ae4]
push eax
call edi
push str.._name.ini
push 0xc8
lea eax, [ebp + 0x1440]
push eax
push ebx
push str.error
lea eax, [ebp + 0x1ae4]
push eax
call edi
push str.._set.ini
push 3
lea eax, [ebp - 0x74]
push eax
push ebx
push str.debug
push 0x41a710
call edi
push str.._name.ini
push 0x64
lea eax, [ebp + 0x1698]
push eax
push ebx
push str.failed
lea eax, [ebp + 0x1ae4]
push eax
call edi
push str.._name.ini
push 0x64
lea eax, [ebp + 0x17c4]
push eax
push ebx
push str.changecdkey
lea eax, [ebp + 0x1ae4]
push eax
call edi
push str.._name.ini
push 0x64
lea eax, [ebp + 0x1760]
push eax
push ebx
push str.changeres
lea eax, [ebp + 0x1ae4]
push eax
call edi
push 0x190
lea eax, [ebp + 0x18f0]
push 0
push eax
call fcn.004058a0
add esp, 0xc
lea eax, [ebp + 0x1ae4]
push eax
lea eax, [ebp - 0x6c]
push eax
mov ecx, esi
call fcn.004024d3
and dword [ebp - 0x70], 0
lea eax, [ebp + 0x1ae4]
push eax
lea eax, [ebp - 0x6c]
push eax
mov ecx, esi
call fcn.0040194c
test ax, ax
mov dword [ebp - 0x80], eax
je 0x403369
push 0x31
pop ecx
xor eax, eax
mov byte [ebp + 0x15d0], 0
lea edi, [ebp + 0x15d1]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp + 0x15d0]
push eax
push 0xc8
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [ebp + 0x15d0]
push eax
push dword [ebp - 0x70]
lea eax, [ebp + 0x1ae4]
push eax
lea eax, [ebp - 0x6c]
push eax
mov ecx, esi
call fcn.00402075
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 0x74]
push eax
push 0x41a734
call fcn.00405750
test eax, eax
pop ecx
pop ecx
jne 0x403353
push eax
push eax
push str.debug
mov ecx, esi
call fcn.004120af
inc dword [ebp - 0x70]
cmp word [ebp - 0x70], 2
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
jb 0x4032c3
jmp 0x40339a
mov ecx, dword [ebp - 0x7c]
lea eax, [ebp + 0x16fc]
push eax
call fcn.0041486c
lea eax, [ebp - 0x74]
push eax
push 0x41a734
call fcn.00405750
test eax, eax
pop ecx
pop ecx
jne 0x40339a
push eax
push eax
push str.debug
mov ecx, esi
call fcn.004120af
lea ecx, [esi + 0x168]
push 0x50
mov word [esi + 0x164], 0x50
call fcn.00401935
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_UpdateWindow]
cmp word [ebp - 0x80], 0
je 0x4034e7
push 0x190
lea eax, [ebp + 0x1508]
push 0
push eax
call fcn.004058a0
push 0x190
lea eax, [ebp + 0x18f0]
push 0
push eax
call fcn.004058a0
lea eax, [ebp - 0x6c]
add esp, 0x18
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x78], 0xf
mov eax, dword [ebp - 0x70]
cmp word [eax + 0x66], 1
jne 0x403433
push eax
lea eax, [ebp + 0x1508]
push eax
lea eax, [ebp + 0x18f0]
push str._s_s_r_n
push eax
call fcn.004057d8
lea eax, [ebp + 0x18f0]
push eax
lea eax, [ebp + 0x1508]
push eax
call fcn.00405900
add esp, 0x18
add dword [ebp - 0x70], 0x146
dec dword [ebp - 0x78]
jne 0x4033fa
push str.._name.ini
push 0x64
lea eax, [ebp + 0x188c]
push eax
push ebx
push str.seehelp
lea eax, [ebp + 0x1ae4]
push eax
call edi
lea eax, [ebp + 0x188c]
push eax
lea eax, [ebp + 0x1508]
push eax
lea eax, [ebp + 0x1698]
push eax
lea eax, [ebp + 0x1440]
push eax
lea eax, [ebp + 0x18f0]
push str._s_r_n_s_r_n_s_r_n_s
push eax
call fcn.004057d8
add esp, 0x18
push 4
push 0
lea eax, [ebp + 0x18f0]
push eax
mov ecx, esi
call fcn.004120af
cmp ax, 6
jne 0x4034e7
push 0x190
lea eax, [ebp + 0x18f0]
push 0
push eax
call fcn.004058a0
lea eax, [ebp + 0x1ae4]
push eax
lea eax, [ebp + 0x18f0]
push str._s.htm
push eax
call fcn.004057d8
add esp, 0x18
push 5
xor eax, eax
push eax
push eax
lea ecx, [ebp + 0x18f0]
push ecx
push eax
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push 0x55
lea ecx, [esi + 0x168]
mov word [esi + 0x164], 0x55
call fcn.00401935
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_UpdateWindow]
lea eax, [ebp - 0x74]
push eax
push 0x41a734
call fcn.00405750
test eax, eax
pop ecx
pop ecx
jne 0x403528
push eax
push eax
push str.debug
mov ecx, esi
call fcn.004120af
push str..key.ini
push 0
push 0x41a75c
push str.keys
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
test eax, eax
je 0x4035a0
lea eax, [ebp + 0x1828]
push eax
mov ecx, esi
call fcn.00401509
push 0x190
lea eax, [ebp + 0x12b0]
push 0
push eax
call fcn.004058a0
lea eax, [ebp + 0x1828]
push eax
lea eax, [ebp + 0x17c4]
push eax
lea eax, [ebp + 0x12b0]
push str._s_t_s
push eax
call fcn.004057d8
add esp, 0x1c
lea eax, [ebp + 0x12b0]
push eax
push 0
push 0x180
push dword [esi + 0x90]
call dword [sym.imp.USER32.dll_SendMessageA]
push str..display.ini
push 0xff
push str.Color
push 0x41a710
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp eax, 0xff
je 0x4035cf
lea eax, [ebp + 0x1760]
push eax
mov ecx, esi
call fcn.004016ca
lea eax, [ebp + 0x1ae4]
push eax
mov ecx, esi
call fcn.00402a82
push 0x5f
lea ecx, [esi + 0x168]
mov dword [ebp - 0x78], eax
mov word [esi + 0x164], 0x5f
call fcn.00401935
push dword [esi + 0x1c]
call dword [sym.imp.USER32.dll_UpdateWindow]
lea eax, [ebp - 0x74]
push eax
push 0x41a734
call fcn.00405750
test eax, eax
pop ecx
pop ecx
jne 0x403621
push eax
push eax
push str.debug
mov ecx, esi
call fcn.004120af
cmp dword [ebp - 0x78], 0
jne 0x403697
push str.._name.ini
push 0x64
lea eax, [ebp + 0x1a80]
push eax
push ebx
push str.startfail
lea eax, [ebp + 0x1ae4]
push eax
call edi
xor edi, edi
push edi
push edi
lea eax, [ebp + 0x1a80]
push eax
mov ecx, esi
call fcn.004120af
mov ecx, dword [ebp - 0x7c]
lea eax, [ebp + 0x1a80]
push eax
call fcn.0041486c
cmp word [ebp - 0x80], di
jne 0x4036d0
lea eax, [ebp + 0x1ae4]
push eax
lea eax, [ebp + 0x18f0]
push str._s.htm
push eax
call fcn.004057d8
add esp, 0xc
push 5
lea eax, [ebp + 0x18f0]
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
jmp 0x4036d0
push 0x64
lea ecx, [esi + 0x168]
mov word [esi + 0x164], 0x64
call fcn.00401935
push dword [esi + 0x1c]
mov edi, dword [sym.imp.USER32.dll_UpdateWindow]
call edi
push dword [esi + 0x1c]
call edi
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
mov ecx, dword [ebp + 0x1af8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040526e
add ebp, 0x1afc
leave
ret