Function at 0x140069350
Capabilities:
Query service status
Start service

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x80
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rsp + 0xc0], rbx
movaps xmmword [rsp + 0x70], xmm6
mov rbx, rdx
mov r15, rcx
mov ebp, 1
mov dword [rsp + 0xd0], ebp
call fcn.140075480
test eax, eax
je 0x1400693af
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea rcx, str.CSpoolerInfomation::kStartSpoolerService___return_TRUE__1__LastError_u_detect_9x_OS._n
call fcn.140062f80
mov eax, ebp
jmp 0x140069850
mov qword [r15 + 0x88], rbx
xor edx, edx
xor ecx, ecx
mov r8d, 0xf003f
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
mov rsi, rax
mov qword [rsp + 0xd8], rax
test rax, rax
jne 0x140069410
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea rcx, str.CSpoolerInfomation::kStartSpoolerService___return_FALSE__2__LastError_u_OpenSCManager_fail._n
call fcn.140062f80
mov r11, qword [r15 + 0x88]
test r11, r11
je 0x140069409
xor r9d, r9d
xor r8d, r8d
lea rdx, [0x14013fbf1]
lea ecx, [rsi + 5]
call r11
xor eax, eax
jmp 0x140069850
mov rdi, qword [r15 + 0x58]
mov rbx, qword [r15 + 0x20]
test rbx, rbx
je 0x140069845
or r14d, 0xffffffff
movsd xmm6, qword [0x140128378]
nop dword [rax]
mov ecx, 0x64
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, rdi
test rdi, rdi
je 0x14006983f
mov rdi, qword [rdi]
mov qword [rsp + 0x38], rdi
mov rcx, qword [rcx + 0x10]
sub rcx, 0x18
call fcn.140001a90
lea rdi, [rax + 0x18]
mov qword [rsp + 0x20], rdi
mov rax, qword [r15 + 0x88]
test rax, rax
je 0x140069480
xor r9d, r9d
xor r8d, r8d
mov rdx, rdi
lea ecx, [r9 + 6]
call rax
mov rcx, rbx
test rbx, rbx
je 0x140069839
mov rbx, qword [rbx]
mov qword [rsp + 0x30], rbx
mov rcx, qword [rcx + 0x10]
sub rcx, 0x18
call fcn.140001a90
lea rbx, [rax + 0x18]
mov qword [rsp + 0x28], rbx
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x10
or eax, ecx
jge 0x1400694d0
mov edx, 0x10
lea rcx, [rsp + 0x28]
call fcn.1400015a0
mov rbx, qword [rsp + 0x28]
mov r8d, 0xf01ff
mov rdx, rbx
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_OpenServiceA]
mov rbp, rax
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call fcn.1400c6574
test eax, eax
js 0x14006982e
cmp eax, dword [rbx - 0xc]
jg 0x14006982e
mov dword [rbx - 0x10], eax
cdqe
mov byte [rax + rbx], 0
test rbp, rbp
je 0x1400697b1
xor r13d, r13d
xor r12d, r12d
nop word [rax + rax]
xor r8d, r8d
xor edx, edx
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_StartServiceA]
test eax, eax
je 0x140069628
lea rdx, [rsp + 0x48]
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
mov r11d, dword [rsp + 0x60]
pxor xmm0, xmm0
cvtsi2sd xmm0, r11
mulsd xmm0, xmm6
cvttsd2si eax, xmm0
mov esi, 0x64
sub esi, eax
test esi, esi
jle 0x1400695c2
cmp dword [rsp + 0x4c], 4
je 0x1400695af
mov eax, dword [rsp + 0x54]
test eax, eax
jne 0x140069599
mov ecx, 0x1f4
call qword [sym.imp.KERNEL32.dll_Sleep]
sub esi, 0x1f4
lea rdx, [rsp + 0x48]
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test esi, esi
jg 0x140069565
jmp 0x1400695c2
cmp eax, 0xc
jne 0x1400696e0
mov ecx, 0xbb8
call qword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x1400695c2
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor ebp, ebp
lea r12d, [rbp + 0x14]
lea r13d, [rbp + 1]
cmp dword [rsp + 0x4c], 4
jne 0x1400695e3
test r13d, r13d
jne 0x1400695e3
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor ebp, ebp
mov r12d, 0x14
lea r13d, [rbp + 1]
inc r12d
cmp r12d, 0x14
jl 0x140069520
test rbp, rbp
je 0x1400695fe
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test r13d, r13d
jne 0x140069659
xor ebp, ebp
mov dword [rsp + 0xd0], ebp
mov rax, qword [r15 + 0x88]
test rax, rax
je 0x140069684
xor r9d, r9d
xor r8d, r8d
mov rdx, rdi
lea ecx, [rbp + 5]
call rax
jmp 0x140069684
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8, rbx
mov edx, eax
lea rcx, str.CSpoolerInfomation::kStartSpoolerService___return_FALSE__3__LastError_u_StartService_fail.___s__n
call fcn.140062f80
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x420
jne 0x14006975f
mov rax, qword [r15 + 0x88]
test rax, rax
je 0x14006967d
xor r9d, r9d
xor r8d, r8d
mov rdx, rdi
lea ecx, [r9 + 7]
call rax
mov ebp, dword [rsp + 0xd0]
jmp 0x140069684
mov ebp, dword [rsp + 0xd0]
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400696a0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x1400696c0
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x30]
test rbx, rbx
je 0x140069752
mov rdi, qword [rsp + 0x38]
mov rsi, qword [rsp + 0xd8]
jmp 0x140069430
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8, rbx
mov edx, eax
lea rcx, str.CSpoolerInfomation::kStartSpoolerService___return_FALSE__4__LastError_u_QueryServiceStatus_fail.___s__n
call fcn.140062f80
mov rcx, rbp
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, qword [rsp + 0xd8]
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14006972b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r14d
dec r14d
test r14d, r14d
jg 0x14006974b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140069850
mov rsi, qword [rsp + 0xd8]
jmp 0x140069845
mov rcx, qword [rsp + 0xd8]
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14006978a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r14d
dec r14d
test r14d, r14d
jg 0x1400697aa
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140069850
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8, rbx
mov edx, eax
lea rcx, str.CSpoolerInfomation::kStartSpoolerService___return_FALSE__2__LastError_u_OpenService_fail.___s__n
call fcn.140062f80
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov r11, qword [r15 + 0x88]
test r11, r11
je 0x1400697ee
xor r9d, r9d
xor r8d, r8d
mov rdx, rdi
lea ecx, [r9 + 5]
call r11
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
dec eax
test eax, eax
jg 0x14006980a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r14d
dec r14d
test r14d, r14d
jg 0x14006982a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
jmp 0x140069850
mov ecx, 0x80070057
call fcn.140001a00
nop
call fcn.140096e58
nop
call fcn.140096e58
int3
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov eax, ebp
mov rbx, qword [rsp + 0xc0]
movaps xmm6, xmmword [rsp + 0x70]
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret