Function at 0x405160
Capabilities:
Accept command line arguments
Create process on windows
Read .ini file
Terminate process

Disassembly:
push 0xffffffffffffffff
push 0x43cb11
mov eax, dword fs:[0]
push eax
sub esp, 0x4a0
mov eax, dword [0x4516a0]
xor eax, esp
mov dword [esp + 0x49c], eax
push ebx
push esi
push edi
mov eax, dword [0x4516a0]
xor eax, esp
push eax
lea eax, [esp + 0x4b0]
mov dword fs:[0], eax
mov esi, ecx
xor ebx, ebx
mov dword [esp + 0x4b8], ebx
mov eax, dword [esp + 0x4c8]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x14], esp
mov edi, esp
push eax
call fcn.00401cb0
add eax, 0x10
mov dword [edi], eax
mov eax, dword [esp + 0x4cc]
add esp, 4
push eax
lea edi, [esp + 0x1c]
call fcn.004023a0
add esp, 8
mov ecx, dword [esp + 0x4d4]
push ecx
push esi
sub esp, 0x14
mov byte [esp + 0x4d4], 1
mov edx, esp
mov dword [esp + 0x2c], esp
push edx
lea ecx, [esp + 0x4e0]
call fcn.00401580
mov byte [esp + 0x4d4], 2
mov eax, dword [esp + 0x30]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x44], esp
mov esi, esp
push eax
call fcn.00401cb0
add eax, 0x10
mov dword [esi], eax
add esp, 4
mov byte [esp + 0x4d8], 1
call fcn.00404670
push str.loader.exe
lea ecx, [esp + 0x24]
call fcn.00401bb0
push str.config.ini
mov eax, edi
push eax
lea ecx, [esp + 0x20]
push ecx
mov byte [esp + 0x4c4], 3
call fcn.00401730
add esp, 0xc
push 0x103
lea edx, [esp + 0x91]
push ebx
mov byte [esp + 0x4c0], 4
push edx
mov byte [esp + 0x98], bl
call fcn.00429e90
mov eax, dword [esp + 0x24]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
add esp, 0xc
push eax
push 0x104
lea ecx, [esp + 0x94]
push ecx
push 0x443e0b
push 0x4440c8
push str.CommonSet
call esi
lea eax, [esp + 0x8c]
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4052b3
sub eax, edi
je 0x4052e3
lea eax, [esp + 0x8c]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4052c8
sub eax, edx
push eax
lea edx, [esp + 0x90]
push edx
lea ecx, [esp + 0x28]
call fcn.00401f80
push 0x103
lea eax, [esp + 0x2a1]
push ebx
push eax
mov byte [esp + 0x2a8], bl
call fcn.00429e90
mov ecx, dword [esp + 0x24]
add esp, 0xc
push ecx
push 0x104
lea edx, [esp + 0x2a4]
push edx
push 0x443e0b
push str.isReg
push str.CommonSet
call esi
lea eax, [esp + 0x29c]
push eax
lea ecx, [esp + 0x2c]
call fcn.00401bb0
mov byte [esp + 0x4b8], 5
mov ecx, dword [esp + 0x28]
push 0x444088
push ecx
call fcn.00428188
add esp, 8
cmp eax, ebx
sete al
cmp al, bl
je 0x405361
call fcn.004026d0
call fcn.00402f10
push 0x103
lea edx, [esp + 0x199]
push ebx
push edx
mov byte [esp + 0x1a0], bl
call fcn.00429e90
mov eax, dword [esp + 0x24]
add esp, 0xc
push eax
push 0x104
lea ecx, [esp + 0x19c]
push ecx
push 0x443e0b
push str.shotCutName
push str.CommonSet
call esi
lea edx, [esp + 0x194]
push edx
lea ecx, [esp + 0x40]
call fcn.00401bb0
push 0x103
lea eax, [esp + 0x3a9]
push ebx
mov byte [esp + 0x4c0], 6
push eax
mov byte [esp + 0x3b0], bl
call fcn.00429e90
mov ecx, dword [esp + 0x24]
add esp, 0xc
push ecx
push 0x104
lea edx, [esp + 0x3ac]
push edx
push 0x443e0b
push str.SupportP2P
push str.CommonSet
call esi
lea eax, [esp + 0x3a4]
push eax
lea ecx, [esp + 0x44]
call fcn.00401bb0
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x24]
push eax
mov byte [esp + 0x4c4], 7
call fcn.00405830
add esp, 0xc
mov byte [esp + 0x4b8], 8
mov ecx, dword [esp + 0x4c8]
push 0x443e30
push ecx
call fcn.00428188
add esp, 8
cmp eax, ebx
sete al
cmp al, bl
je 0x405471
push str.Client.exe
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x18]
push eax
call fcn.00401730
add esp, 0xc
mov byte [esp + 0x4b8], 9
jmp 0x4054ed
mov ecx, dword [esp + 0x4c8]
push 0x443e4c
push ecx
call fcn.00428188
add esp, 8
cmp eax, ebx
sete al
cmp al, bl
je 0x4054b0
push str.loadpc.exe
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x18]
push eax
call fcn.00401730
add esp, 0xc
mov byte [esp + 0x4b8], 0xa
jmp 0x4054ed
mov ecx, dword [esp + 0x4c8]
push 0x443e70
push ecx
call fcn.00428188
add esp, 8
cmp eax, ebx
sete al
cmp al, bl
je 0x40551f
push str.loadxy.exe
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x18]
push eax
call fcn.00401730
add esp, 0xc
mov byte [esp + 0x4b8], 0xb
push eax
lea ecx, [esp + 0x20]
call fcn.004065b0
mov byte [esp + 0x4b8], 8
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40551f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x44
lea ecx, [esp + 0x48]
push ebx
push ecx
call fcn.00429e90
xor eax, eax
add esp, 0xc
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x44], 0x44
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
lea edx, [esp + 0x2c]
push edx
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x48]
push ecx
push edx
push ebx
push ebx
push ebx
push ebx
push ebx
push eax
mov eax, dword [esp + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
push ebx
call dword [sym.imp.KERNEL32.dll_ExitProcess]