Function at 0x4080f0
Capabilities:
Create thread
Read .ini file

Disassembly:
sub esp, 0x46c
push esi
mov esi, dword [esp + 0x478]
test esi, esi
je 0x408411
push ebx
push ebp
push edi
push 0x442c1c
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push 0x1f4
lea eax, [esp + 0x90]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
cmp eax, 4
lea ecx, [esp + eax + 0x8c]
mov byte [ecx], 0
jbe 0x40818c
cmp byte [ecx - 4], 0x2e
jne 0x40818c
mov edi, dword [sym.imp.MSVCR71.dll_sprintf]
lea ecx, [esp + 0x8c]
push ecx
push str.__s_
push 0x442e38
call edi
lea edx, [esp + 0x98]
push 0x5c
push edx
call dword [sym.imp.MSVCR71.dll_strrchr]
add esp, 0x14
test eax, eax
je 0x408173
mov byte [eax + 1], 0
lea eax, [esp + 0x8c]
push eax
push str._sCommon.ini
push 0x442c38
call edi
add esp, 0xc
jmp 0x4081b5
mov ecx, dword [esi]
mov edi, dword [sym.imp.MSVCR71.dll_sprintf]
push ecx
push 0x42f800
push 0x442e38
call edi
push str.XYNTService.ini
push 0x42f800
push 0x442c38
call edi
add esp, 0x18
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x442c38
push 0x1f4
push 0x442a08
push str.XYNTService
push 0x42f7d8
push str.Settings
call edi
push 0x442c38
push 0x1f4
lea edx, [esp + 0x28c]
push edx
push 0x42e658
push str.ProcCount
push str.Settings
call edi
mov edi, dword [sym.imp.MSVCR71.dll_atoi]
lea eax, [esp + 0x284]
push eax
call edi
add esp, 4
test eax, eax
mov dword [0x443030], eax
jle 0x40822b
shl eax, 4
push eax
call fcn.0042ad1c
add esp, 4
mov dword [0x443034], eax
mov ebx, dword [esp + 0x480]
cmp ebx, 2
jne 0x4082c4
mov ecx, dword [esi + 4]
mov edi, dword [sym.imp.MSVCR71.dll__stricmp]
push ecx
push 0x42f7c8
call edi
add esp, 8
test eax, eax
jne 0x408265
push 0x442a08
call fcn.00407e20
add esp, 4
jmp 0x4083f5
mov edx, dword [esi + 4]
push edx
push 0x42f7c4
call edi
add esp, 8
test eax, eax
jne 0x40828e
push 0x442a08
push 0x442e38
call fcn.00407ee0
add esp, 8
jmp 0x4083f5
mov eax, dword [esi + 4]
push eax
push 0x42f7c0
call edi
add esp, 8
test eax, eax
jne 0x4083ba
push 0x442a08
call fcn.00407a40
push 0
push 0
push 0x442a08
call fcn.00407bb0
add esp, 0x10
jmp 0x4083f5
cmp ebx, 3
mov ebp, dword [sym.imp.MSVCR71.dll__stricmp]
jne 0x408361
mov ecx, dword [esi + 4]
push ecx
push 0x42f7c0
call ebp
add esp, 8
test eax, eax
jne 0x40831e
mov edx, dword [esi + 8]
push edx
call edi
mov esi, eax
push esi
push 0x442a08
call fcn.00407930
add esp, 0xc
test eax, eax
push esi
je 0x40830f
push str.Bounced_process__d._n
lea eax, [esp + 0x18]
push eax
jmp 0x4083ec
push str.Failed_to_bounce_process__d._n
lea ecx, [esp + 0x18]
push ecx
jmp 0x4083ec
mov edx, dword [esi + 4]
push edx
push 0x42f784
call ebp
add esp, 8
test eax, eax
jne 0x408363
mov eax, dword [esi + 8]
push eax
call fcn.00407a40
add esp, 4
test eax, eax
je 0x40834e
mov ecx, dword [esi + 8]
push ecx
push str.Killed_service__s._n
jmp 0x4083e7
mov eax, dword [esi + 8]
push eax
push str.Failed_to_kill_service__s._n
lea ecx, [esp + 0x18]
push ecx
jmp 0x4083ec
jl 0x4083ba
mov edx, dword [esi + 4]
push edx
push 0x42f750
call ebp
add esp, 8
test eax, eax
jne 0x4083ba
cmp ebx, 3
jle 0x40837f
lea ecx, [esi + 0xc]
jmp 0x408381
xor ecx, ecx
cmp ebx, 3
jle 0x40838b
lea eax, [ebx - 3]
jmp 0x40838d
xor eax, eax
push ecx
push eax
mov eax, dword [esi + 8]
push eax
call fcn.00407bb0
add esp, 0xc
test eax, eax
je 0x4083aa
mov ecx, dword [esi + 8]
push ecx
push str.Ran_service__s._n
jmp 0x4083e7
mov eax, dword [esi + 8]
push eax
push str.Failed_to_run_service__s._n
lea ecx, [esp + 0x18]
push ecx
jmp 0x4083ec
push 0
push 0
push 0x407f90
call dword [sym.imp.MSVCR71.dll__beginthread]
add esp, 0xc
push 0x43e12c
call dword [sym.imp.ADVAPI32.dll_StartServiceCtrlDispatcherA]
test eax, eax
jne 0x4083f5
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.StartServiceCtrlDispatcher_failed__error_code___d_n
lea edx, [esp + 0x18]
push edx
call dword [sym.imp.MSVCR71.dll_sprintf]
add esp, 0xc
mov eax, dword [0x443034]
push eax
call sub.MSVCR71.dll_void___cdecl_operator_delete___void__
add esp, 4
push 0x442c1c
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
pop edi
pop ebp
pop ebx
xor eax, eax
pop esi
add esp, 0x46c
ret