Function at 0x10000bce4
Capabilities:
Check for time delay via gettickcount
Query service status
Start service

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r14
sub rsp, 0x60
xor edx, edx
xor ecx, ecx
mov r8d, 0xf003f
xor ebx, ebx
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov r12, rax
test rax, rax
jne 0x10000bd45
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, [0x100004500]
lea rcx, [0x1000053f0]
movzx ebx, ax
or ebx, 0x80070000
test eax, eax
cmovle ebx, eax
mov r8d, ebx
call fcn.10000ec98
jmp 0x10000c060
lea rdx, [0x100004500]
mov r8d, 0xf01ff
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov rdi, rax
test rax, rax
jne 0x10000bd92
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, [0x100004500]
lea rcx, [0x100005430]
movzx ebx, ax
or ebx, 0x80070000
test eax, eax
cmovle ebx, eax
mov r8d, ebx
call fcn.10000ec98
jmp 0x10000c049
lea rax, [rsp + 0x88]
lea r8, [rsp + 0x30]
mov r9d, 0x24
xor edx, edx
mov rcx, rdi
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
jne 0x10000bddb
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x1000054a0]
movzx ebx, ax
or ebx, 0x80070000
test eax, eax
cmovle ebx, eax
mov edx, ebx
jmp 0x10000c044
cmp dword [rsp + 0x34], 1
je 0x10000bdfa
cmp dword [rsp + 0x34], 3
je 0x10000bdfa
lea rcx, [0x100005520]
call fcn.10000ec98
jmp 0x10000c049
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, dword [rsp + 0x44]
mov r14d, 0x2710
mov ebp, eax
jmp 0x10000be81
mov eax, 0xcccccccd
mul dword [rsp + 0x48]
shr edx, 3
cmp edx, 0x3e8
jae 0x10000be29
mov edx, 0x3e8
jmp 0x10000be30
cmp edx, r14d
cmova edx, r14d
mov ecx, edx
call qword [sym.imp.KERNEL32.dll_Sleep]
lea r11, [rsp + 0x88]
lea r8, [rsp + 0x30]
mov r9d, 0x24
xor edx, edx
mov rcx, rdi
mov qword [rsp + 0x20], r11
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x10000becd
cmp dword [rsp + 0x44], esi
jbe 0x10000be73
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, dword [rsp + 0x44]
mov ebp, eax
jmp 0x10000be81
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, ebp
cmp eax, dword [rsp + 0x48]
ja 0x10000bebc
cmp dword [rsp + 0x34], 3
je 0x10000be0e
xor r8d, r8d
xor edx, edx
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
jne 0x10000beef
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x100005630]
movzx ebx, ax
or ebx, 0x80070000
test eax, eax
cmovle ebx, eax
mov edx, ebx
jmp 0x10000c044
mov ebx, 0x800705b4
lea rcx, [0x1000055e0]
jmp 0x10000bdf0
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x100005590]
movzx ebx, ax
or ebx, 0x80070000
test eax, eax
cmovle ebx, eax
mov edx, ebx
jmp 0x10000c044
lea rcx, [0x100005668]
call fcn.10000ec98
lea r11, [rsp + 0x88]
lea r8, [rsp + 0x30]
mov r9d, 0x24
xor edx, edx
mov rcx, rdi
mov qword [rsp + 0x20], r11
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x10000becd
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, dword [rsp + 0x44]
mov ebp, eax
jmp 0x10000bfaf
mov eax, 0xcccccccd
mul dword [rsp + 0x48]
shr edx, 3
cmp edx, 0x3e8
jae 0x10000bf4b
mov edx, 0x3e8
jmp 0x10000bf52
cmp edx, r14d
cmova edx, r14d
mov ecx, edx
call qword [sym.imp.KERNEL32.dll_Sleep]
lea r11, [rsp + 0x88]
lea r8, [rsp + 0x30]
mov r9d, 0x24
xor edx, edx
mov rcx, rdi
mov qword [rsp + 0x20], r11
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x10000bfbc
cmp dword [rsp + 0x44], esi
jbe 0x10000bfa1
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, dword [rsp + 0x44]
lea rcx, [0x100004f9c]
mov ebp, eax
call fcn.10000ec98
jmp 0x10000bfaf
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, ebp
cmp eax, dword [rsp + 0x48]
ja 0x10000bfde
cmp dword [rsp + 0x34], 2
je 0x10000bf30
jmp 0x10000bfde
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x1000056a0]
movzx ebx, ax
or ebx, 0x80070000
test eax, eax
cmovle ebx, eax
mov edx, ebx
call fcn.10000ec98
lea rcx, [0x1000056ec]
call fcn.10000ec98
cmp dword [rsp + 0x34], 4
jne 0x10000bffd
lea rcx, [0x1000056f0]
jmp 0x10000bdf0
lea rcx, [0x100005730]
call fcn.10000ec98
mov edx, dword [rsp + 0x34]
lea rcx, [0x100005760]
call fcn.10000ec98
mov edx, dword [rsp + 0x3c]
lea rcx, [0x100005790]
call fcn.10000ec98
mov edx, dword [rsp + 0x44]
lea rcx, [0x1000057b8]
call fcn.10000ec98
mov edx, dword [rsp + 0x48]
lea rcx, [0x1000057e0]
call fcn.10000ec98
test rdi, rdi
je 0x10000c057
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, r12
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
lea r11, [rsp + 0x60]
mov eax, ebx
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rsp, r11
pop r14
pop r12
pop rdi
ret