Function at 0x140061df0
Capabilities:
Check for time delay via gettickcount
Enumerate services
Query service status
Stop service

Disassembly:
mov rax, rsp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xc0
mov qword [rsp + 0x80], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
xor ebp, ebp
mov rax, qword [0x1401370f0]
test rax, rax
jne 0x140061e5c
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x108], rax
test rax, rax
je 0x140061e52
mov rcx, rax
call fcn.140050830
jmp 0x140061e55
mov rax, rbp
mov qword [0x1401370f0], rax
lea r8, str.Spooler
lea rdx, str.StopAService__s_
mov rcx, rax
call fcn.140050c00
xor edx, edx
xor ecx, ecx
lea r8d, [rdx + 1]
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov r15, rax
test rax, rax
jne 0x140061ee1
mov rbx, qword [0x1401370f0]
test rbx, rbx
jne 0x140061ec2
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x108], rax
test rax, rax
je 0x140061eb8
mov rcx, rax
call fcn.140050830
mov rbx, rax
jmp 0x140061ebb
mov rbx, rbp
mov qword [0x1401370f0], rbx
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
lea rdx, str.OpenSCManager_failed__gle_d_
mov rcx, rbx
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
mov r8d, 0x2c
lea rdx, str.Spooler
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov r13, rax
test rax, rax
jne 0x140061f58
mov rbx, qword [0x1401370f0]
test rbx, rbx
jne 0x140061f39
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x108], rax
test rax, rax
je 0x140061f2f
mov rcx, rax
call fcn.140050830
mov rbx, rax
jmp 0x140061f32
mov rbx, rbp
mov qword [0x1401370f0], rbx
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
lea rdx, str.OpenService_failed__gle_d_
mov rcx, rbx
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
lea rax, [rsp + 0x34]
mov qword [rsp + 0x20], rax
mov r9d, 0x24
lea r8, [rsp + 0x38]
xor edx, edx
mov rcx, r13
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
jne 0x140061fd5
mov rbx, qword [0x1401370f0]
test rbx, rbx
jne 0x140061fb6
mov ecx, 0x310
call fcn.140084d88
mov qword [rsp + 0x108], rax
test rax, rax
je 0x140061fac
mov rcx, rax
call fcn.140050830
mov rbx, rax
jmp 0x140061faf
mov rbx, rbp
mov qword [0x1401370f0], rbx
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
lea rdx, str.QueryServiceStatusEx_failed__gle_d_
mov rcx, rbx
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
mov eax, dword [rsp + 0x3c]
cmp eax, 1
je 0x1400623d1
cmp eax, 3
jne 0x140062084
nop
nop
mov ecx, dword [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_Sleep]
lea r11, [rsp + 0x34]
mov qword [rsp + 0x20], r11
mov r9d, 0x24
lea r8, [rsp + 0x38]
xor edx, edx
mov rcx, r13
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x14006205e
cmp dword [rsp + 0x3c], 1
je 0x1400623d1
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, edi
cmp eax, 0xbb8
ja 0x140062043
mov eax, dword [rsp + 0x3c]
cmp eax, 3
je 0x140061ff0
jmp 0x140062084
call fcn.1400507c0
mov rcx, rax
lea rdx, str.Stopping_service_timed_out
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
call fcn.1400507c0
mov rcx, rax
mov r8d, ebx
lea rdx, str.QueryServiceStatusEx_failed__gle_d_
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
cmp eax, 1
je 0x1400623d1
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x108]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 1]
mov rcx, r13
call qword [sym.imp.ADVAPI32.dll_EnumDependentServicesW]
test eax, eax
jne 0x140062304
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xea
je 0x1400620d3
xor eax, eax
jmp 0x1400623e5
mov ecx, dword [rsp + 0x108]
call fcn.140084dd4
mov r14, rax
test rax, rax
jne 0x14006210d
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
call fcn.1400507c0
mov rcx, rax
mov r8d, ebx
lea rdx, str.memory_allocation_failed__gle_d_
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x108]
mov qword [rsp + 0x20], rax
mov r9d, dword [rsp + 0x108]
mov r8, r14
mov edx, 1
mov rcx, r13
call qword [sym.imp.ADVAPI32.dll_EnumDependentServicesW]
test eax, eax
jne 0x140062167
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
call fcn.1400507c0
mov rcx, rax
mov r8d, ebx
lea rdx, str.EnumDependentServices_failed__gle_d_
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
cmp dword [rsp + 0x30], 0
jbe 0x1400622fc
mov r12, r14
nop
nop
nop
lea rcx, [rsp + 0x88]
mov rax, qword [r12]
mov qword [rcx], rax
mov rax, qword [r12 + 8]
mov qword [rcx + 8], rax
mov rax, qword [r12 + 0x10]
mov qword [rcx + 0x10], rax
mov rax, qword [r12 + 0x18]
mov qword [rcx + 0x18], rax
mov rax, qword [r12 + 0x20]
mov qword [rcx + 0x20], rax
mov rax, qword [r12 + 0x28]
mov qword [rcx + 0x28], rax
mov r8d, 0x24
mov rdx, qword [rsp + 0x88]
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov rsi, rax
test rax, rax
je 0x1400622d6
lea r8, [rsp + 0x60]
mov edx, 1
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
je 0x1400622b0
mov ebx, dword [rsp + 0x78]
cmp dword [rsp + 0x64], 1
je 0x140062250
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_Sleep]
lea r11, [rsp + 0x108]
mov qword [rsp + 0x20], r11
mov r9d, 0x24
lea r8, [rsp + 0x38]
xor edx, edx
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x14006228a
mov ebx, dword [rsp + 0x50]
cmp dword [rsp + 0x3c], 1
je 0x140062250
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, edi
cmp eax, 0xbb8
ja 0x14006226f
jmp 0x140062205
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
add ebp, 1
add r12, 0x30
cmp ebp, dword [rsp + 0x30]
jae 0x1400622fc
jmp 0x140062180
call fcn.1400507c0
mov rcx, rax
lea rdx, str.Stopping_dependent_service_timed_out
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
call fcn.1400507c0
mov rcx, rax
mov r8d, ebx
lea rdx, str.QueryServiceStatusEx_dependent_failed__gle_d_
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
call fcn.1400507c0
mov rcx, rax
mov r8d, ebx
lea rdx, str.ControlService_dependent_failed__gle_d_
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
call fcn.1400507c0
mov rcx, rax
mov r8d, ebx
lea rdx, str.OpenService_dependent_failed__gle_d_
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
mov rcx, r14
call fcn.140084dcc
lea r8, [rsp + 0x60]
mov edx, 1
mov rcx, r13
call qword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
jne 0x140062341
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
call fcn.1400507c0
mov rcx, rax
mov r8d, ebx
lea rdx, str.ControlService_failed__gle_d_
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
mov ebx, dword [rsp + 0x78]
cmp dword [rsp + 0x64], 1
je 0x1400623d1
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_Sleep]
lea r11, [rsp + 0x34]
mov qword [rsp + 0x20], r11
mov r9d, 0x24
lea r8, [rsp + 0x38]
xor edx, edx
mov rcx, r13
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x1400623ae
mov ebx, dword [rsp + 0x50]
cmp dword [rsp + 0x3c], 1
je 0x1400623d1
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, edi
cmp eax, 0xbb8
jbe 0x140062350
call fcn.1400507c0
mov rcx, rax
lea rdx, str.Stopping_service_timed_out
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
call fcn.1400507c0
mov rcx, rax
mov r8d, ebx
lea rdx, str.QueryServiceStatusEx_failed__gle_d_
call fcn.140050c00
xor eax, eax
jmp 0x1400623e5
mov rcx, r13
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor eax, eax
lea r11, [rsp + 0xc0]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret