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

Disassembly:
jmp 0x140004470
push rbx
sub rsp, 0x60
lea rbx, [0x140011840]
lea r8, str.WbioSrvc
mov edx, 0x50
mov rcx, rbx
sub r8, rbx
nop
lea rax, [rdx + 0x7fffffae]
test rax, rax
je 0x1400044b3
movzx eax, byte [r8 + rcx]
test al, al
je 0x1400044b3
mov byte [rcx], al
add rcx, 1
sub rdx, 1
jne 0x140004490
jmp 0x1400044b8
test rdx, rdx
jne 0x1400044bc
sub rcx, 1
mov byte [rcx], 0
xor edx, edx
mov r8d, 0xf003f
xor ecx, ecx
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
test rax, rax
mov qword [0x140011808], rax
je 0x140004700
mov r8d, 0xf01ff
mov rdx, rbx
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_OpenServiceA]
test rax, rax
mov qword [0x1400117c0], rax
je 0x14000452e
lea rcx, [rsp + 0x70]
lea r8, [rsp + 0x30]
mov r9d, 0x24
mov qword [rsp + 0x20], rcx
mov rcx, rax
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
jne 0x140004541
mov rcx, qword [0x1400117c0]
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, qword [0x140011808]
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
add rsp, 0x60
pop rbx
ret
mov eax, dword [rsp + 0x34]
cmp eax, 1
je 0x14000454f
cmp eax, 3
jne 0x140004521
mov qword [rsp + 0x78], rsi
mov qword [rsp + 0x80], rdi
call qword [sym.imp.KERNEL32.dll_GetTickCount]
cmp dword [rsp + 0x34], 3
mov ebx, dword [rsp + 0x44]
mov esi, 0x2710
mov edi, eax
jne 0x140004605
nop
nop
mov eax, 0xcccccccd
mul dword [rsp + 0x48]
shr edx, 3
cmp edx, 0x3e8
jae 0x14000459b
mov edx, 0x3e8
jmp 0x1400045a0
cmp edx, esi
cmova edx, esi
mov ecx, edx
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, qword [0x1400117c0]
lea r11, [rsp + 0x70]
lea r8, [rsp + 0x30]
mov r9d, 0x24
xor edx, edx
mov qword [rsp + 0x20], r11
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x1400046d9
cmp dword [rsp + 0x44], ebx
jbe 0x1400045e8
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, dword [rsp + 0x44]
mov edi, eax
jmp 0x1400045fa
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, edi
cmp eax, dword [rsp + 0x48]
ja 0x1400046d9
cmp dword [rsp + 0x34], 3
je 0x140004580
mov rcx, qword [0x1400117c0]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_StartServiceA]
test eax, eax
je 0x1400046d9
mov rcx, qword [0x1400117c0]
lea rax, [rsp + 0x70]
lea r8, [rsp + 0x30]
mov r9d, 0x24
xor edx, edx
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x1400046d9
call qword [sym.imp.KERNEL32.dll_GetTickCount]
cmp dword [rsp + 0x34], 2
mov ebx, dword [rsp + 0x44]
mov edi, eax
jne 0x1400046d9
nop
mov eax, 0xcccccccd
mul dword [rsp + 0x48]
shr edx, 3
cmp edx, 0x3e8
jae 0x14000467b
mov edx, 0x3e8
jmp 0x140004680
cmp edx, esi
cmova edx, esi
mov ecx, edx
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, qword [0x1400117c0]
lea r11, [rsp + 0x70]
lea r8, [rsp + 0x30]
mov r9d, 0x24
xor edx, edx
mov qword [rsp + 0x20], r11
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
test eax, eax
je 0x1400046d9
cmp dword [rsp + 0x44], ebx
jbe 0x1400046c4
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov ebx, dword [rsp + 0x44]
mov edi, eax
jmp 0x1400046d2
call qword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, edi
cmp eax, dword [rsp + 0x48]
ja 0x1400046d9
cmp dword [rsp + 0x34], 2
je 0x140004660
mov rcx, qword [0x1400117c0]
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, qword [0x140011808]
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rsi, qword [rsp + 0x78]
mov rdi, qword [rsp + 0x80]
add rsp, 0x60
pop rbx
ret