Function at 0x140167a70
Capabilities:
Start service

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
push r14
push r15
sub rsp, 0xa0
mov rax, qword [0x1402a76c0]
xor rax, rsp
mov qword [rsp + 0x90], rax
mov r14d, edx
lea rdx, str.CBaseOSSpecTypeWin2K::DIASServiceControl
lea rcx, [rsp + 0x40]
call fcn.14001abe0
nop
lea r12, [0x1402a8360]
lea rsi, [0x1402bbdb0]
mov rcx, qword [0x1402a8360]
cmp rcx, r12
je 0x140167b3f
test byte [rcx + 0x1c], 1
je 0x140167b07
mov r9, rsi
cmp qword [0x1402bbdc8], 8
cmovae r9, qword [0x1402bbdb0]
mov edx, 0xdf
lea r8, [0x140265800]
mov rcx, qword [rcx + 0x10]
call fcn.140001ad0
mov rcx, qword [0x1402a8360]
cmp rcx, r12
je 0x140167b3f
test byte [rcx + 0x1c], 1
je 0x140167b3f
mov r9, rsi
cmp qword [0x1402bbdc8], 8
cmovae r9, qword [0x1402bbdb0]
mov edx, 0xe0
mov dword [rsp + 0x20], r14d
lea r8, [0x140265800]
mov rcx, qword [rcx + 0x10]
call fcn.140001b40
xor edx, edx
xor ecx, ecx
mov r8d, 0x20000000
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov rbp, rax
xor edi, edi
test rax, rax
jne 0x140167be2
mov rax, qword [0x1402a8360]
cmp rax, r12
je 0x140167bb7
test byte [rax + 0x1c], 2
je 0x140167bb7
mov rbx, rsi
cmp qword [0x1402bbdc8], 8
cmovae rbx, qword [0x1402bbdb0]
lea rcx, [rsp + 0x40]
call fcn.14001b0b0
mov edx, 0xe1
mov qword [rsp + 0x20], rax
mov r9, rbx
lea r8, [0x140265800]
mov rcx, qword [0x1402a8360]
mov rcx, qword [rcx + 0x10]
call fcn.140006c90
mov rax, qword [0x1402a8360]
test r14d, r14d
jne 0x140167dcb
mov byte [rsp + 0x48], 1
cmp rax, r12
je 0x140167ea4
test byte [rax + 0x1c], 1
je 0x140167ea4
mov edx, 0xe2
jmp 0x140167e76
mov r8d, 0xf01ff
lea rdx, str.Canon_Driver_Information_Assist_Service
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov r15, rax
test rax, rax
jne 0x140167c92
mov rax, qword [0x1402a8360]
cmp rax, r12
je 0x140167c57
test byte [rax + 0x1c], 2
je 0x140167c57
mov rbx, rsi
cmp qword [0x1402bbdc8], 8
cmovae rbx, qword [0x1402bbdb0]
lea rcx, [rsp + 0x40]
call fcn.14001b0b0
mov edx, 0xe3
mov qword [rsp + 0x20], rax
mov r9, rbx
lea r8, [0x140265800]
mov rcx, qword [0x1402a8360]
mov rcx, qword [rcx + 0x10]
call fcn.140006c90
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test r14d, r14d
jne 0x140167dcb
mov byte [rsp + 0x48], 1
mov rax, qword [0x1402a8360]
cmp rax, r12
je 0x140167ea4
test byte [rax + 0x1c], 1
je 0x140167ea4
mov edx, 0xe4
jmp 0x140167e76
mov rcx, r15
test r14d, r14d
je 0x140167e4b
xor r8d, r8d
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
jne 0x140167d60
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rcx, qword [0x1402a8360]
cmp rcx, r12
je 0x140167d14
test byte [rcx + 0x1c], 2
je 0x140167d14
mov rbx, rsi
cmp qword [0x1402bbdc8], 8
cmovae rbx, qword [0x1402bbdb0]
lea rcx, [rsp + 0x40]
call fcn.14001b0b0
mov edx, 0xe5
mov qword [rsp + 0x20], rax
mov r9, rbx
lea r8, [0x140265800]
mov rcx, qword [0x1402a8360]
mov rcx, qword [rcx + 0x10]
call fcn.140006c90
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
cmp edi, 0x420
jne 0x140167dcb
mov byte [rsp + 0x48], 1
mov edi, 1
mov rax, qword [0x1402a8360]
cmp rax, r12
je 0x140167ea4
test byte [rax + 0x1c], dil
je 0x140167ea4
mov edx, 0xe6
jmp 0x140167e76
lea rcx, [rsp + 0x30]
call fcn.140099a10
nop
xor ecx, ecx
call fcn.1401fe7b0
mov rbx, rax
xor ecx, ecx
call fcn.1401fe7b0
mov rdi, rax
sub rbx, rax
cmp rbx, 0x1e
jge 0x140167dc1
nop dword [rax + rax]
lea rdx, str.Canon_Driver_Information_Assist_Service
lea rcx, [rsp + 0x30]
call fcn.14009df10
cmp eax, 4
je 0x140167e0c
mov ecx, 0x3e8
call qword [sym.imp.KERNEL32.dll_Sleep]
xor ecx, ecx
call fcn.1401fe7b0
sub rax, rdi
cmp rax, 0x1e
jl 0x140167d90
lea rcx, [rsp + 0x30]
call fcn.140099b80
mov rcx, qword [0x1402bbf68]
mov rax, qword [rcx]
mov edx, 0xb9
mov rax, qword [rax + 0x18]
call qword [case.0x1400136d6.0]
mov byte [rsp + 0x48], 1
xor edi, edi
mov rax, qword [0x1402a8360]
cmp rax, r12
je 0x140167ea4
test byte [rax + 0x1c], 1
je 0x140167ea4
mov edx, 0xe9
jmp 0x140167e76
mov edi, 1
lea rcx, [rsp + 0x30]
call fcn.140099b80
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov byte [rsp + 0x48], dil
mov rax, qword [0x1402a8360]
cmp rax, r12
je 0x140167ea4
test byte [rax + 0x1c], dil
je 0x140167ea4
mov edx, 0xe8
jmp 0x140167e76
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov byte [rsp + 0x48], 1
mov rax, qword [0x1402a8360]
cmp rax, r12
je 0x140167ea4
test byte [rax + 0x1c], 1
je 0x140167ea4
mov edx, 0xe7
mov r9, rsi
cmp qword [0x1402bbdc8], 8
mov dword [rsp + 0x20], edi
cmovae r9, qword [0x1402bbdb0]
lea r8, [0x140265800]
mov rcx, qword [rax + 0x10]
call fcn.140001b40
mov rax, qword [0x1402a8360]
lea rcx, vtable.WppTrace.0
mov qword [rsp + 0x40], rcx
cmp byte [rsp + 0x48], 0
jne 0x140167f00
cmp rax, r12
je 0x140167f00
test byte [rax + 0x1c], 1
je 0x140167f00
lea rcx, [rsp + 0x50]
cmp qword [rsp + 0x68], 8
cmovae rcx, qword [rsp + 0x50]
cmp qword [0x1402bbdc8], 8
cmovae rsi, qword [0x1402bbdb0]
mov edx, 0xa
mov qword [rsp + 0x20], rcx
mov r9, rsi
lea r8, [0x140252818]
mov rcx, qword [rax + 0x10]
call fcn.140006c90
lea rcx, [rsp + 0x70]
call fcn.1400048a0
lea rcx, [rsp + 0x50]
call fcn.1400048a0
mov eax, edi
mov rcx, qword [rsp + 0x90]
xor rcx, rsp
call fcn.1401e2900
lea r11, [rsp + 0xa0]
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop r12
ret