Function at 0x140015f90
Capabilities:
Query service status
Start service
Stop service

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push r12
sub rsp, 0x150
mov rax, qword [0x1400e71f0]
xor rax, rsp
mov qword [rsp + 0x140], rax
mov ebx, edx
mov r12d, ecx
mov r8d, 0x20000000
xor edx, edx
xor ecx, ecx
xor ebp, ebp
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
test rax, rax
mov rsi, rax
jne 0x140016017
cmp ebx, 1
jne 0x140016010
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.OpenSCManager_ERROR____ld_
lea rcx, [rsp + 0x40]
mov r8d, eax
call qword [sym.imp.USER32.dll_wsprintfW]
lea r8, str.Tool_VDCServiceStopAndStart
lea rdx, [rsp + 0x40]
xor r9d, r9d
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxW]
xor eax, eax
jmp 0x14001610d
lea rdx, str.Canon_NetSpot_Suite_Service
mov r8d, 0xf01ff
mov rcx, rax
mov qword [rsp + 0x160], rdi
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
test rax, rax
mov rdi, rax
jne 0x140016084
cmp ebx, 1
jne 0x140016074
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.OpenService_ERROR____ld_
lea rcx, [rsp + 0x40]
mov r8d, eax
call qword [sym.imp.USER32.dll_wsprintfW]
lea r8, str.Tool_VDCServiceStopAndStart
lea rdx, [rsp + 0x40]
xor r9d, r9d
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxW]
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor eax, eax
jmp 0x140016105
test r12d, r12d
je 0x140016137
xor r8d, r8d
xor edx, edx
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
jne 0x1400160ec
cmp ebx, 1
jne 0x1400160d6
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.StartService_ERROR____ld_
lea rcx, [rsp + 0x40]
mov r8d, eax
call qword [sym.imp.USER32.dll_wsprintfW]
lea r8, str.Tool_VDCServiceStopAndStart
lea rdx, [rsp + 0x40]
xor r9d, r9d
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxW]
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor eax, eax
jmp 0x140016105
mov ebp, 1
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov eax, ebp
mov rdi, qword [rsp + 0x160]
mov rcx, qword [rsp + 0x140]
xor rcx, rsp
call fcn.140081050
lea r11, [rsp + 0x150]
mov rbx, qword [r11 + 0x18]
mov rbp, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rsp, r11
pop r12
ret
lea rdx, [rsp + 0x20]
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
jne 0x140016199
cmp ebx, 1
jne 0x140016180
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.QueryServiceStatus_ERROR____ld_
lea rcx, [rsp + 0x40]
mov r8d, eax
call qword [sym.imp.USER32.dll_wsprintfW]
lea r8, str.Tool_VDCServiceStopAndStart
lea rdx, [rsp + 0x40]
xor r9d, r9d
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxW]
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor eax, eax
jmp 0x140016105
cmp ebx, 1
jne 0x1400161cc
mov r8d, dword [rsp + 0x24]
lea rdx, str.QueryServiceStatus_SERVICE____ld_
lea rcx, [rsp + 0x40]
call qword [sym.imp.USER32.dll_wsprintfW]
lea r8, str.Tool_VDCServiceStopAndStart
lea rdx, [rsp + 0x40]
xor r9d, r9d
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxW]
cmp dword [rsp + 0x24], 1
je 0x1400160f1
mov ebp, 1
lea r8, [rsp + 0x20]
mov rcx, rdi
mov edx, ebp
call qword [sym.imp.ADVAPI32.dll_ControlService]
cmp eax, ebp
je 0x1400160f1
cmp ebx, ebp
jne 0x14001622a
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.ControlService_ERROR____ld_
lea rcx, [rsp + 0x40]
mov r8d, eax
call qword [sym.imp.USER32.dll_wsprintfW]
lea r8, str.Tool_VDCServiceStopAndStart
lea rdx, [rsp + 0x40]
xor r9d, r9d
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxW]
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rdi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor eax, eax
jmp 0x140016105