Function at 0x408010
Capabilities:
Create process on windows
Get common file path
Read .ini file
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x438b91
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x4c
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x1c], edi
lea ecx, [esp + 0x10]
mov dword [esp + 0x64], 0
call fcn.0042363d
lea ecx, [esp + 0x14]
mov byte [esp + 0x64], 1
call fcn.0042363d
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 2
call fcn.0041e59d
lea ecx, [esp + 0x34]
mov byte [esp + 0x64], 3
call fcn.0041e59d
lea ecx, [esp + 0x18]
mov byte [esp + 0x64], 4
call fcn.0042363d
push 0x400
mov byte [esp + 0x68], 5
call fcn.0041f236
add esp, 4
mov ebp, eax
lea eax, [esp + 0x6c]
lea ecx, [esp + 0x20]
push eax
push 0x448aa8
push ecx
call fcn.00423a53
push eax
lea ecx, [edi + 0x138]
mov byte [esp + 0x68], 6
call fcn.00423881
lea ecx, [esp + 0x20]
mov byte [esp + 0x64], 5
call fcn.00423788
push 2
push ecx
lea eax, [esp + 0x74]
mov edx, esp
mov dword [esp + 0x30], esp
push eax
push 0x448a90
push edx
call fcn.00423a53
mov ecx, edi
call fcn.00407250
push 0
mov ecx, edi
call fcn.00421c10
mov ecx, dword [esp + 0x50]
push 0x448a84
push ecx
lea ecx, [esp + 0x50]
call fcn.0041e789
push 0x400
push ebp
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
mov edx, dword [esp + 0x3c]
push ebp
push edx
lea ecx, [esp + 0x3c]
call fcn.0041e789
mov eax, dword [esp + 0x50]
push 0x448a74
push eax
lea ecx, [esp + 0x50]
call fcn.0041e789
push 0x400
push ebp
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov ecx, dword [esp + 0x3c]
push ebp
push ecx
lea ecx, [esp + 0x3c]
call fcn.0041e789
mov edx, dword [esp + 0x6c]
push edx
push 0x400
push ebp
push 0x44d0d0
push 0
push 0x448a68
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ebx, eax
mov esi, ebp
test ebx, ebx
jbe 0x40825b
cmp ebx, 0x3fe
je 0x40825b
cmp byte [esi], 0
je 0x40825b
push 1
push 0x25
lea ecx, [esp + 0x30]
call fcn.0041d800
push esi
push eax
lea eax, [esp + 0x2c]
mov byte [esp + 0x6c], 7
push eax
call fcn.004239df
push 0x25
lea ecx, [esp + 0x24]
push eax
push ecx
mov byte [esp + 0x70], 8
call fcn.0041d838
mov edx, dword [eax]
mov eax, dword [esp + 0x50]
push edx
push eax
lea ecx, [esp + 0x50]
mov byte [esp + 0x6c], 9
call fcn.0041e789
lea ecx, [esp + 0x20]
mov byte [esp + 0x64], 8
call fcn.00423788
lea ecx, [esp + 0x24]
mov byte [esp + 0x64], 7
call fcn.00423788
lea ecx, [esp + 0x28]
mov byte [esp + 0x64], 5
call fcn.00423788
mov ecx, dword [esp + 0x6c]
push ecx
push 0x100
push 0x100
lea ecx, [esp + 0x1c]
call fcn.00423b7a
push eax
push 0x44d0d0
push esi
push 0x448a68
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0xffffffffffffffff
lea ecx, [esp + 0x14]
mov ebx, eax
call fcn.00423bc9
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
push edx
push eax
lea ecx, [esp + 0x3c]
call fcn.0041e789
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov edi, dword [esp + 0x1c]
not ecx
dec ecx
test ebx, ebx
lea esi, [esi + ecx + 1]
ja 0x408170
mov ebx, dword [esp + 0x70]
xor esi, esi
mov eax, dword [ebx + 8]
test eax, eax
jle 0x4082d4
lea ecx, [esp + 0x70]
push esi
push ecx
mov ecx, ebx
call fcn.00408870
mov edx, dword [eax]
mov eax, dword [esp + 0x50]
push edx
push eax
lea ecx, [esp + 0x50]
mov byte [esp + 0x6c], 0xa
call fcn.0041e789
lea ecx, [esp + 0x70]
mov byte [esp + 0x64], 5
call fcn.00423788
lea ecx, [esp + 0x28]
push esi
push ecx
mov ecx, dword [esp + 0x7c]
call fcn.00408870
mov edx, dword [eax]
mov eax, dword [esp + 0x3c]
push edx
push eax
lea ecx, [esp + 0x3c]
mov byte [esp + 0x6c], 0xb
call fcn.0041e789
lea ecx, [esp + 0x28]
mov byte [esp + 0x64], 5
call fcn.00423788
mov eax, dword [ebx + 8]
inc esi
cmp esi, eax
jl 0x408268
mov eax, dword [edi + 0x140]
test eax, eax
jne 0x408473
mov ecx, dword [esp + 0x6c]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push ecx
push 0x400
push ebp
push 0x44d0d0
push 0x448a60
push 0x448a5c
call esi
test eax, eax
je 0x408473
lea edx, [esp + 0x34]
lea eax, [esp + 0x48]
push edx
push eax
push ebp
mov ecx, edi
call fcn.00408b70
push ebp
lea ecx, [esp + 0x18]
call fcn.004238d0
mov ecx, dword [esp + 0x6c]
push ecx
push 0x400
push ebp
push 0x44d0d0
push 0x448a54
push 0x448a5c
call esi
push ecx
lea edx, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x74], esp
push edx
mov esi, eax
call fcn.0042364d
lea ecx, [edi + 0x144]
call fcn.004065e0
test esi, esi
je 0x408416
mov al, byte [ebp]
push 0x58
cmp al, 0x31
jne 0x4083c6
call fcn.0041f236
add esp, 4
mov dword [esp + 0x70], eax
test eax, eax
mov byte [esp + 0x64], 0xc
je 0x4083a1
mov ecx, dword [0x441950]
mov edx, dword [esp + 0x14]
push 1
push ecx
push 2
push edx
mov ecx, eax
call fcn.00418d00
jmp 0x4083a3
xor eax, eax
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
push 0x448a38
mov byte [esp + 0x70], 5
mov dword [edi + 0x140], eax
call fcn.004237f6
jmp 0x40846c
call fcn.0041f236
add esp, 4
mov dword [esp + 0x70], eax
test eax, eax
mov byte [esp + 0x64], 0xd
je 0x4083f4
mov ecx, dword [0x441950]
mov edx, dword [esp + 0x14]
push 1
push ecx
push 8
push edx
mov ecx, eax
call fcn.00418d00
jmp 0x4083f6
xor eax, eax
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x78], esp
push 0x448a1c
mov byte [esp + 0x70], 5
mov dword [edi + 0x140], eax
call fcn.004237f6
jmp 0x40846c
push 0x58
call fcn.0041f236
add esp, 4
mov dword [esp + 0x70], eax
test eax, eax
mov byte [esp + 0x64], 0xe
je 0x408446
mov ecx, dword [0x441950]
mov edx, dword [esp + 0x14]
push 1
push ecx
push 0xa
push edx
mov ecx, eax
call fcn.00418d00
jmp 0x408448
xor eax, eax
push 3
push ecx
mov dword [edi + 0x140], eax
lea ecx, [esp + 0x74]
mov eax, esp
mov dword [esp + 0x78], esp
push ecx
push 0x4489ec
push eax
mov byte [esp + 0x78], 5
call fcn.00423a53
mov ecx, edi
call fcn.00407250
mov eax, dword [esp + 0x6c]
mov edx, dword [edi + 0xa0]
push eax
push 0
push 0x4489e4
push 0x448a5c
mov dword [esp + 0x80], edx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
test eax, eax
je 0x4084a1
mov dword [edi + 0xa0], eax
push 0x4489dc
lea ecx, [esp + 0x2c]
xor ebx, ebx
call fcn.004237f6
mov esi, eax
lea ecx, [esp + 0x2c]
push 0xa
push ecx
push ebx
mov byte [esp + 0x70], 0xf
call fcn.0040de30
add esp, 0xc
lea edx, [esp + 0x74]
push eax
push esi
push edx
call fcn.004239df
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x68], 0x10
call fcn.00423881
lea ecx, [esp + 0x74]
mov byte [esp + 0x64], 0xf
call fcn.00423788
lea ecx, [esp + 0x28]
mov byte [esp + 0x64], 5
call fcn.00423788
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x10]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push eax
push 0x400
push ebp
push 0x44d0d0
push ecx
push 0x4489d4
call esi
test eax, eax
je 0x408687
mov eax, dword [edi + 0x9c]
test eax, eax
jne 0x408849
cmp byte [ebp], 0x2f
je 0x408594
push 4
push 0x2e
push ebp
call fcn.0040e6c0
add esp, 8
push eax
push 0x4489cc
call fcn.0041d5a0
add esp, 0xc
test eax, eax
jne 0x40858e
lea edx, [esp + 0x34]
lea eax, [esp + 0x48]
push edx
push eax
push ebp
mov ecx, edi
call fcn.00408b70
lea ecx, [esp + 0x34]
lea edx, [esp + 0x48]
push ecx
push edx
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push ebp
call fcn.004237f6
mov ecx, edi
call fcn.00408010
jmp 0x4085fc
cmp byte [ebp], 0x2f
jne 0x4085c3
lea eax, [esp + 0x34]
lea ecx, [esp + 0x48]
push eax
push ecx
push ebp
mov ecx, edi
call fcn.00408b70
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push ebp
call fcn.004237f6
mov ecx, edi
call fcn.00407940
mov ecx, edi
call fcn.00407c80
jmp 0x4085fc
push 1
push ebp
lea ecx, [esp + 0x7c]
call fcn.004237f6
push ecx
mov byte [esp + 0x6c], 0x11
mov edx, esp
mov dword [esp + 0x28], esp
push 0x4489a8
push eax
push edx
call fcn.004239df
mov ecx, edi
call fcn.00407250
lea ecx, [esp + 0x74]
mov byte [esp + 0x64], 5
call fcn.00423788
push 0x4489dc
lea ecx, [esp + 0x28]
inc ebx
call fcn.004237f6
mov esi, eax
lea eax, [esp + 0x2c]
push 0xa
push eax
push ebx
mov byte [esp + 0x70], 0x12
call fcn.0040de30
add esp, 0xc
lea ecx, [esp + 0x28]
push eax
push esi
push ecx
call fcn.004239df
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x68], 0x13
call fcn.00423881
lea ecx, [esp + 0x28]
mov byte [esp + 0x64], 0x12
call fcn.00423788
lea ecx, [esp + 0x24]
mov byte [esp + 0x64], 5
call fcn.00423788
mov edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x10]
push edx
push 0x400
push ebp
push 0x44d0d0
push eax
push 0x4489d4
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
jne 0x408529
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov edx, dword [esp + 0x6c]
push edx
push 0x400
push ebp
push 0x44d0d0
push 0x4489a0
push 0x44899c
call esi
test eax, eax
je 0x4087c5
lea eax, [esp + 0x34]
lea ecx, [esp + 0x48]
push eax
push ecx
push ebp
mov ecx, edi
call fcn.00408b70
push ebp
lea ecx, [esp + 0x1c]
call fcn.004238d0
mov edx, dword [esp + 0x6c]
push edx
push 0x400
push ebp
push 0x44d0d0
push 0x448994
push 0x44899c
call esi
lea eax, [esp + 0x34]
lea ecx, [esp + 0x48]
push eax
push ecx
push ebp
mov ecx, edi
call fcn.00408b70
lea edx, [esp + 0x18]
push 0x20
lea eax, [esp + 0x2c]
push edx
push eax
call fcn.0041d838
push ebp
lea ecx, [esp + 0x78]
mov bl, 0x14
push eax
push ecx
mov byte [esp + 0x70], bl
call fcn.004239df
mov edx, dword [eax]
push 5
push edx
mov byte [esp + 0x6c], 0x15
call dword [sym.imp.KERNEL32.dll_WinExec]
lea ecx, [esp + 0x74]
mov byte [esp + 0x64], bl
call fcn.00423788
lea ecx, [esp + 0x28]
mov byte [esp + 0x64], 5
call fcn.00423788
push 2
push 0x448988
lea ecx, [esp + 0x2c]
call fcn.004237f6
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x2c]
push ecx
push eax
push edx
mov byte [esp + 0x74], 0x16
call fcn.00423979
push 0x44897c
push eax
lea eax, [esp + 0x80]
mov bl, 0x17
push eax
mov byte [esp + 0x74], bl
call fcn.004239df
push ecx
mov byte [esp + 0x6c], 0x18
mov ecx, esp
mov dword [esp + 0x28], esp
push ebp
push eax
push ecx
call fcn.004239df
mov ecx, edi
call fcn.00407250
lea ecx, [esp + 0x74]
mov byte [esp + 0x64], bl
call fcn.00423788
lea ecx, [esp + 0x28]
mov byte [esp + 0x64], 0x16
call fcn.00423788
lea ecx, [esp + 0x24]
mov byte [esp + 0x64], 5
call fcn.00423788
push ebp
call fcn.0041f272
mov edx, dword [esp + 0x74]
add esp, 4
mov dword [edi + 0xa0], edx
lea ecx, [esp + 0x18]
mov byte [esp + 0x64], 4
call fcn.00423788
lea ecx, [esp + 0x34]
mov byte [esp + 0x64], 3
call fcn.0041e5d0
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 2
call fcn.0041e5d0
lea ecx, [esp + 0x14]
mov byte [esp + 0x64], 1
call fcn.00423788
lea ecx, [esp + 0x10]
mov byte [esp + 0x64], 0
call fcn.00423788
lea ecx, [esp + 0x6c]
mov dword [esp + 0x64], 0xffffffff
call fcn.00423788
mov ecx, dword [esp + 0x5c]
pop edi
pop esi
pop ebp
mov eax, 1
mov dword fs:[0], ecx
pop ebx
add esp, 0x58
ret 0xc
push ebp
call fcn.0041f272
mov ecx, dword [esp + 0x74]
add esp, 4
mov dword [edi + 0xa0], ecx
jmp 0x4087d8