Function at 0x404ac0
Capabilities:
Create thread
Delete service
Initialize winsock library
Modify service
Query service status
Stop service
Terminate process
Terminate thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x40de20
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1b0
push ebx
push esi
push edi
lea eax, [ebp - 0x1bc]
mov dword [ebp - 0x10], esp
push eax
push 0x202
call dword [sym.imp.WS2_32.dll_WSAStartup]
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
push edx
push 0x414c74
mov dword [0x413cc8], ecx
call esi
push 0x30
push 0x4143d8
push str.97c7d2f40b092e35404f758ea795bddee5ff1132
call fcn.00403fb0
add esp, 0xc
push 0x4143d8
push 0x4144dc
call esi
push str.Status
push 0x4144dc
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x30
push 0x4145e0
push str.a1dbf01c3d4574859aa9e3fb2843657f94c0c6df0007355661989be8f918
call fcn.00403fb0
push 0x30
push 0x4146e4
push 0x410e94
call fcn.00403fb0
push 0x30
push 0x4147e8
push str.9abfd7efdc032329425373347a9fbfd6dce9fe
call fcn.00403fb0
push 0x30
push 0x4148ec
push 0x410ee4
call fcn.00403fb0
mov eax, dword [0x413cc8]
add esp, 0x30
push 0xff
push 0x413ccc
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x413ccc
call dword [sym.imp.KERNEL32.dll_lstrlenA]
dec eax
test eax, eax
jle 0x404bdf
mov cl, 0x5c
cmp byte [eax + 0x413ccc], cl
je 0x404bbe
dec eax
test eax, eax
jg 0x404baf
jmp 0x404bdf
mov ecx, eax
mov esi, 0x413ccc
mov edx, ecx
mov edi, str.C:WINDOWSSystem32
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov byte [eax + str.C:WINDOWSSystem32], 0
push str._thread
push 0x414c74
mov dword [ebp - 4], 0
call fcn.00406e60
add esp, 8
test eax, eax
je 0x404c52
push 0
push 0
push 1
push 0
mov byte [eax], 0
call dword [sym.imp.KERNEL32.dll_CreateEventA]
push 0
push 0
push 0
push 0x404f50
push 0
push 0
mov dword [0x414d78], eax
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov esi, eax
mov eax, dword [0x414d78]
push 0x3a98
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x404f2e
push 0
push esi
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push 0
call fcn.004055f1
mov esi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
push 0x410ef0
push 0x414c74
call esi
test eax, eax
jne 0x404c77
mov ecx, 0x414c28
call fcn.00401260
jmp 0x404f2e
mov ecx, 0x414c74
test ecx, ecx
je 0x404f23
cmp byte [0x414c74], 0x2f
jne 0x404f23
push 0x410e1c
push ecx
call esi
test eax, eax
jne 0x404d4a
call fcn.00401250
mov edi, eax
call fcn.00401240
mov dword [ebp + 8], eax
call fcn.00401230
push 2
push 0
push 0
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
mov ebx, eax
test ebx, ebx
jne 0x404ce1
push str.Ins::OpenSCManager_Failed
push 0x413ed4
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 8
jmp 0x404f2e
mov edx, dword [ebp + 8]
push edi
push edx
push esi
push ebx
call fcn.00405530
mov esi, eax
add esp, 0x10
test esi, esi
je 0x404d26
test edi, edi
je 0x404d39
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jle 0x404d39
lea eax, [ebp + 8]
mov dword [ebp + 8], edi
push eax
push 1
push esi
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2A]
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call esi
push ebx
call esi
jmp 0x404f2e
push str.Ins::CreateService_Failed
push 0x413ed4
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 8
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call esi
push ebx
call esi
jmp 0x404f2e
push 0x410de0
push 0x414c74
call esi
test eax, eax
jne 0x404e41
call fcn.00401230
push 1
push 0
push 0
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
mov edi, eax
test edi, edi
jne 0x404d8f
push str.uns::OpenSCManager_Failed
push 0x413ed4
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 8
jmp 0x404f2e
push 0x100a4
push esi
push edi
call dword [sym.imp.ADVAPI32.dll_OpenServiceA]
mov esi, eax
test esi, esi
jne 0x404dc6
push str.uns::OpenService_Failed
push 0x413ed4
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 8
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call esi
push edi
call esi
jmp 0x404f2e
lea ecx, [ebp - 0x2c]
push ecx
push esi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
jne 0x404df9
push str.uns::QueryServiceStatus_Failed
push 0x413ed4
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 8
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call esi
push edi
call esi
jmp 0x404f2e
cmp dword [ebp - 0x28], 1
je 0x404e29
lea edx, [ebp - 0x2c]
push edx
push 1
push esi
call dword [sym.imp.ADVAPI32.dll_ControlService]
push 0x2710
push 1
push esi
mov ebx, eax
call fcn.00405490
add esp, 0xc
test ebx, ebx
jne 0x404e29
push str.uns::ControlService__WaitServiceStatus__SERVICE_CONTROL_STOP__Failed
jmp 0x404dda
push esi
call dword [sym.imp.ADVAPI32.dll_DeleteService]
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call esi
push edi
call esi
jmp 0x404f2e
push str._start
push 0x414c74
call esi
test eax, eax
jne 0x404e69
call fcn.00401230
push eax
push 0xffff
call fcn.00405270
add esp, 8
jmp 0x404f2e
push str._stop
push 0x414c74
call esi
test eax, eax
jne 0x404e8e
call fcn.00401230
push eax
push 1
call fcn.00405270
add esp, 8
jmp 0x404f2e
push str._shutdown
push 0x414c74
call esi
test eax, eax
jne 0x404eb0
call fcn.00401230
push eax
push 5
call fcn.00405270
add esp, 8
jmp 0x404f2e
push str._pause
push 0x414c74
call esi
test eax, eax
jne 0x404ed2
call fcn.00401230
push eax
push 2
call fcn.00405270
add esp, 8
jmp 0x404f2e
push str._continue
push 0x414c74
call esi
test eax, eax
jne 0x404ef4
call fcn.00401230
push eax
push 3
call fcn.00405270
add esp, 8
jmp 0x404f2e
mov al, byte [0x414c75]
test al, al
je 0x404f23
push 0x414c75
call fcn.00405b45
add esp, 4
mov esi, eax
call fcn.00401230
push eax
push esi
call fcn.00405270
add esp, 8
jmp 0x404f2e
push 0x413c50
call dword [sym.imp.ADVAPI32.dll_StartServiceCtrlDispatcherA]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
xor eax, eax
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0x10