Function at 0x678c60
Capabilities:
Check for time delay via gettickcount
Enumerate processes
Query service status
Start service
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x254
mov eax, dword [0x906648]
xor eax, ebp
mov dword [ebp - 4], eax
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x244], 0
test edi, edi
jne 0x678c99
mov eax, 0x3ea
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0063c972
mov esp, ebp
pop ebp
ret
push ebx
push esi
push bind
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov esi, eax
mov dword [ebp - 0x250], esi
test esi, esi
jne 0x678d0e
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004f1a60
add esp, 4
mov dword [ebp - 0x238], eax
test byte [0x9538a8], 1
mov ebx, eax
je 0x678cf8
push ebx
push str.Open_SC_manager_failed._err___d
push 0x1e
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.utl_open_sc_manager
push dword [0x90a2e8]
push 1
call fcn.004f21c0
add esp, 0x1c
test ebx, ebx
jne 0x6792ab
mov esi, dword [ebp - 0x254]
mov dword [ebp - 0x250], esi
jmp 0x678d16
xor ebx, ebx
mov dword [ebp - 0x238], ebx
push 0xf01ff
push edi
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov dword [ebp - 0x23c], eax
test eax, eax
jne 0x678d74
mov ecx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ecx
push eax
call fcn.004f1a60
add esp, 4
mov ebx, eax
test byte [0x9538a8], 1
je 0x679291
push ebx
push str.Open_service_failed._err___d
push 0x7c
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.utl_start_service
push dword [0x90a2e8]
push 1
call fcn.004f21c0
add esp, 0x1c
jmp 0x679291
push 0x53747551
push 0x24
call fcn.004f3590
mov edi, eax
add esp, 8
mov dword [ebp - 0x234], edi
test edi, edi
jne 0x678dc6
test byte [0x9538a8], 1
je 0x678dbc
push str.Memory_allcation_failure.
push 0x84
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.utl_start_service
push dword [0x90a2e8]
push 1
call fcn.004f21c0
add esp, 0x18
mov ebx, 0xc
jmp 0x679291
lea eax, [ebp - 0x244]
push eax
push 0x24
push edi
push 0
push dword [ebp - 0x23c]
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
jne 0x678e2e
mov ecx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ecx
push eax
call fcn.004f1a60
add esp, 4
mov ebx, eax
test byte [0x9538a8], 1
je 0x678e23
push ebx
push str.QueryServiceStatusEx_failed._err___d
push 0x93
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.utl_start_service
push dword [0x90a2e8]
push 1
call fcn.004f21c0
add esp, 0x1c
mov ecx, dword [ebp - 0x234]
jmp 0x679288
mov eax, dword [edi + 4]
cmp eax, 1
je 0x678e73
cmp eax, 3
je 0x678e73
test byte [0x9538a8], 8
je 0x678e23
push str._service_is_already_running
push 0x9d
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.utl_start_service
push dword [0x90a2e8]
push 8
call fcn.004f21c0
mov ecx, dword [ebp - 0x234]
add esp, 0x18
jmp 0x679288
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
call ebx
cmp dword [edi + 4], 3
mov ecx, 0x2710
mov dword [ebp - 0x24c], eax
mov eax, dword [edi + 0x14]
mov dword [ebp - 0x248], eax
jne 0x6790d9
nop dword [eax]
mov eax, 0xcccccccd
mul dword [edi + 0x18]
shr edx, 3
cmp edx, 0x3e8
jae 0x678eba
mov edx, 0x3e8
jmp 0x678ec3
cmp edx, 0x2710
cmova edx, ecx
push 0
push edx
call fcn.004f49d0
add esp, 8
lea eax, [ebp - 0x244]
push eax
push 0x24
push edi
push 0
push dword [ebp - 0x23c]
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x67911b
mov eax, dword [ebp - 0x248]
cmp dword [edi + 4], eax
jbe 0x678f0f
call ebx
mov ecx, dword [edi + 0x14]
mov dword [ebp - 0x24c], eax
mov dword [ebp - 0x248], ecx
jmp 0x6790ca
call ebx
sub eax, dword [ebp - 0x24c]
cmp eax, dword [edi + 0x18]
jbe 0x6790ca
test byte [0x9538a8], 1
je 0x678f4d
push str.Timeout_waiting_for_service_to_stop
push 0xcc
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.utl_start_service
push dword [0x90a2e8]
push 1
call fcn.004f21c0
add esp, 0x18
xor ebx, ebx
push ebx
push 2
mov dword [ebp - 0x238], ebx
call sub.KERNEL32.dll_CreateToolhelp32Snapshot
test byte [0x9538a8], 1
mov dword [ebp - 0x240], eax
je 0x678f93
push str.ENTERING_kill_on_stop_timeout__
push 0x3a
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.kill_on_stop_timeout
push dword [0x90a2e8]
push 1
call fcn.004f21c0
mov eax, dword [ebp - 0x240]
add esp, 0x18
test eax, eax
je 0x6790bc
lea ecx, [ebp - 0x230]
mov dword [ebp - 0x230], 0x22c
push ecx
push eax
call sub.KERNEL32.dll_Process32FirstW
cmp eax, 1
jne 0x6790b0
lea eax, [ebp - 0x230]
push eax
push dword [ebp - 0x240]
call sub.KERNEL32.dll_Process32NextW
cmp eax, 1
jne 0x6790b0
mov esi, dword [ebp - 0x240]
nop dword [eax]
lea eax, [ebp - 0x20c]
push 0x78e3a0
push eax
call fcn.004f37c0
add esp, 8
test eax, eax
jne 0x679088
push dword [ebp - 0x228]
push eax
push 0x1fffff
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov edi, eax
test edi, edi
je 0x679088
push 1
push edi
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
test eax, eax
je 0x67904d
test byte [0x9538a8], 1
je 0x679081
push str.SCSRVC_terminated_successfully
push 0x4a
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.kill_on_stop_timeout
push dword [0x90a2e8]
push 1
call fcn.004f21c0
add esp, 0x18
jmp 0x679081
or ebx, 0xffffffff
test byte [0x9538a8], 1
je 0x679081
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.TerminateProcess_failed._Last_error:_0x_x_n
push 0x4f
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.kill_on_stop_timeout
push dword [0x90a2e8]
push 1
call fcn.004f21c0
add esp, 0x1c
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x230]
push eax
push esi
call sub.KERNEL32.dll_Process32NextW
cmp eax, 1
je 0x678fe0
mov esi, dword [ebp - 0x250]
mov edi, dword [ebp - 0x234]
mov dword [ebp - 0x238], ebx
push dword [ebp - 0x240]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
jne 0x678e23
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp dword [edi + 4], 3
mov ecx, 0x2710
je 0x678ea0
push 0
push 0
push dword [ebp - 0x23c]
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
jne 0x679149
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004f1a60
add esp, 4
mov ebx, eax
test byte [0x9538a8], 1
je 0x678e23
push ebx
push str.StartService_failed._err___d
push 0xd9
jmp 0x678e09
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004f1a60
add esp, 4
mov ebx, eax
test byte [0x9538a8], 1
je 0x678e23
push ebx
push str.QueryServiceStatusEx_failed._err___d
push 0xbd
jmp 0x678e09
lea eax, [ebp - 0x244]
push eax
push 0x24
push edi
push 0
push dword [ebp - 0x23c]
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
jne 0x679193
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004f1a60
add esp, 4
mov ebx, eax
test byte [0x9538a8], 1
je 0x678e23
push ebx
push str.QueryServiceStatusEx_failed._err___d
push 0xe6
jmp 0x678e09
call ebx
mov ecx, dword [ebp - 0x234]
mov ebx, eax
mov edi, dword [edi + 0x14]
cmp dword [ecx + 4], 2
jne 0x679249
nop word [eax + eax]
mov eax, 0xcccccccd
mul dword [ecx + 0x18]
shr edx, 3
cmp edx, 0x3e8
jae 0x6791ca
mov edx, 0x3e8
jmp 0x6791d8
cmp edx, 0x2710
mov eax, 0x2710
cmova edx, eax
push 0
push edx
call fcn.004f49d0
add esp, 8
lea eax, [ebp - 0x244]
push eax
push 0x24
push dword [ebp - 0x234]
push 0
push dword [ebp - 0x23c]
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x6792be
mov eax, dword [ebp - 0x234]
cmp dword [eax + 0x14], edi
jbe 0x67922c
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, dword [ebp - 0x234]
mov ebx, eax
mov ecx, dword [ebp - 0x234]
mov edi, dword [edi + 0x14]
jmp 0x67923f
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebp - 0x234]
sub eax, ebx
cmp eax, dword [ecx + 0x18]
ja 0x679249
cmp dword [ecx + 4], 2
je 0x6791b0
cmp dword [ecx + 4], 4
jne 0x679282
test byte [0x9538a8], 8
je 0x679282
push str.Service_started_successfully.
push 0x120
push str.E:_workspace_AC_CC_Windows_TACC_MASTER_master_src_solidifier_utl_utl_winnt_scm.c
push str.utl_start_service
push dword [0x90a2e8]
push 8
call fcn.004f21c0
mov ecx, dword [ebp - 0x234]
add esp, 0x18
mov ebx, dword [ebp - 0x238]
push ecx
call fcn.004f3570
add esp, 4
mov edi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test esi, esi
je 0x67929e
push esi
call edi
mov eax, dword [ebp - 0x23c]
test eax, eax
je 0x6792ab
push eax
call edi
mov ecx, dword [ebp - 4]
mov eax, ebx
pop esi
pop ebx
xor ecx, ebp
pop edi
call fcn.0063c972
mov esp, ebp
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
call fcn.004f1a60
add esp, 4
mov ebx, eax
test byte [0x9538a8], 1
je 0x678e23
push ebx
push str.QueryServiceStatusEx_failed._err___d
push 0x107
jmp 0x678e09