Function at 0x140025170
Capabilities:
Delete service
Query service status
Stop service

Disassembly:
push rbx
push rdi
push r14
push r15
sub rsp, 0x68
xor r15d, r15d
lea rax, str.CGenericService::DefaultMainHandler.
mov qword [rsp + 0x30], rax
lea rdi, [0x14008a330]
mov r14, rcx
mov qword [rsp + 0x28], rdi
lea r8, [0x1400abd38]
mov qword [rsp + 0x20], r15
lea r9d, [r15 + 2]
lea edx, [r15 + 0x73]
lea rcx, str...SharedGenericService.cpp
call fcn.140005e30
lea ebx, [r15 + 2]
call fcn.14006227c
cmp dword [rax], 1
jle 0x140025285
mov qword [rsp + 0xa0], r12
mov r12d, 1
mov edi, r12d
call fcn.14006227c
cmp dword [rax], r12d
jle 0x140025276
mov qword [rsp + 0x98], rsi
lea esi, [rbx + 6]
mov qword [rsp + 0x60], r13
mov r13d, 0xfffd
mov qword [rsp + 0x90], rbp
call fcn.140062284
mov rcx, qword [rax]
mov rdx, qword [rsi + rcx]
movzx eax, word [rdx]
sub ax, 0x2d
test r13w, ax
jne 0x140025252
lea rbp, [rdx + 2]
mov rcx, rbp
lea rdx, str.Install
call fcn.140053674
test eax, eax
jne 0x14002523d
mov ebx, r15d
jmp 0x140025252
lea rdx, str.Uninstall
mov rcx, rbp
call fcn.140053674
test eax, eax
cmove ebx, r12d
inc edi
add rsi, 8
call fcn.14006227c
cmp edi, dword [rax]
jl 0x140025208
mov r13, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x98]
mov rbp, qword [rsp + 0x90]
mov r12, qword [rsp + 0xa0]
lea rdi, [0x14008a330]
test ebx, ebx
je 0x1400253d5
sub ebx, 1
je 0x14002538e
cmp ebx, 1
jne 0x140025380
lea rax, str.Executing_service.
mov edx, 0xa4
mov qword [rsp + 0x30], rax
lea r9d, [rbx + 1]
mov qword [rsp + 0x28], rdi
lea r8, [0x1400abd38]
lea rcx, str...SharedGenericService.cpp
mov qword [rsp + 0x20], r15
call fcn.140005e30
lea rax, str.CGenericService::Run.
mov qword [rsp + 0x30], rax
lea r9d, [rbx + 1]
mov qword [rsp + 0x28], rdi
lea r8, [0x1400abd38]
lea edx, [rbx + 0x1f]
mov qword [rsp + 0x20], r15
lea rcx, str...SharedGenericService.cpp
call fcn.140005e30
mov rax, qword [r14 + 8]
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x40], rax
lea rax, [0x140024ea0]
mov qword [rsp + 0x48], rax
mov qword [0x1400af7e0], r14
mov qword [rsp + 0x50], r15
mov qword [rsp + 0x58], r15
call qword [sym.imp.ADVAPI32.dll_StartServiceCtrlDispatcherW]
mov ebx, eax
test eax, eax
jne 0x140025494
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [rsp + 0x30], eax
lea r9d, [rbx + 2]
lea rax, str.Failed_to_start_the_service._Error_code___d.
mov edx, 0xa8
mov qword [rsp + 0x28], rax
lea r8, [0x1400abd38]
lea rcx, str...SharedGenericService.cpp
mov qword [rsp + 0x20], r15
call fcn.140005e30
mov eax, ebx
add rsp, 0x68
pop r15
pop r14
pop rdi
pop rbx
ret
mov eax, r15d
add rsp, 0x68
pop r15
pop r14
pop rdi
pop rbx
ret
lea rax, str.Un_installing_service.
mov r9d, 2
mov qword [rsp + 0x30], rax
lea r8, [0x1400abd38]
mov qword [rsp + 0x28], rdi
lea rcx, str...SharedGenericService.cpp
mov edx, 0x9f
mov qword [rsp + 0x20], r15
call fcn.140005e30
mov rdx, qword [r14 + 8]
add rsp, 0x68
pop r15
pop r14
pop rdi
pop rbx
jmp 0x1400260e0
lea rax, str.Installing_service.
mov r9d, 2
mov qword [rsp + 0x30], rax
lea r8, [0x1400abd38]
mov qword [rsp + 0x28], rdi
lea rcx, str...SharedGenericService.cpp
mov edx, 0x93
mov qword [rsp + 0x20], r15
call fcn.140005e30
mov r8, qword [r14 + 0x10]
mov rdx, qword [r14 + 8]
call fcn.140025bf0
lea rax, str.Setting_service_description.
mov r9d, 2
mov qword [rsp + 0x30], rax
lea r8, [0x1400abd38]
mov qword [rsp + 0x28], rdi
lea rcx, str...SharedGenericService.cpp
mov edx, 0x96
mov qword [rsp + 0x20], r15
call fcn.140005e30
mov r8, qword [r14 + 0x18]
mov rdx, qword [r14 + 8]
call fcn.140025f00
lea rax, str.Executing_service.
mov r9d, 2
mov qword [rsp + 0x30], rax
lea r8, [0x1400abd38]
mov qword [rsp + 0x28], rdi
lea rcx, str...SharedGenericService.cpp
mov edx, 0x99
mov qword [rsp + 0x20], r15
call fcn.140005e30
mov rdx, qword [r14 + 8]
call fcn.140025d90
add rsp, 0x68
pop r15
pop r14
pop rdi
pop rbx
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r14
sub rsp, 0x470
mov rax, qword [0x1400aa008]
xor rax, rsp
mov qword [rsp + 0x460], rax
xor eax, eax
xor edi, edi
mov rbp, rdx
mov dword [rsp + 0x40], edi
xor edx, edx
mov qword [rsp + 0x44], rax
xor ecx, ecx
mov qword [rsp + 0x4c], rax
lea r8d, [rdi + 1]
mov qword [rsp + 0x54], rax
mov ebx, edi
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov rsi, rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea r14, [0x14008a330]
test rsi, rsi
jne 0x140026191
mov r9d, eax
lea r8, str.OpenSCManager_failed.
lea rdx, str._s._Error_Code___d.
lea rcx, [rsp + 0x60]
call fcn.1400262a0
lea rax, [rsp + 0x60]
mov qword [rsp + 0x30], rax
lea r9d, [rdi + 1]
mov qword [rsp + 0x28], r14
lea r8, [0x1400abd38]
lea edx, [rdi + 0x31]
mov qword [rsp + 0x20], rdi
lea rcx, str.s:p4clientconsumermainrel3consumerplatform_vista_sharedGenericService.h
call fcn.140005e30
jmp 0x1400261a6
mov r8d, 0x10024
mov rdx, rbp
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov rbx, rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
test rbx, rbx
jne 0x1400261fc
mov r9d, eax
lea r8, str.OpenService_failed.
lea rdx, str._s._Error_Code___d.
lea rcx, [rsp + 0x60]
call fcn.1400262a0
lea rax, [rsp + 0x60]
mov qword [rsp + 0x30], rax
lea r9d, [rbx + 1]
mov qword [rsp + 0x28], r14
lea r8, [0x1400abd38]
lea edx, [rbx + 0x31]
mov qword [rsp + 0x20], rdi
lea rcx, str.s:p4clientconsumermainrel3consumerplatform_vista_sharedGenericService.h
call fcn.140005e30
jmp 0x14002625a
lea r8, [rsp + 0x40]
mov edx, 1
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
je 0x140026246
nop dword [rax]
nop word [rax + rax]
lea rdx, [rsp + 0x40]
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
je 0x140026246
cmp dword [rsp + 0x44], 3
jne 0x140026246
mov ecx, 0x1f4
call qword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x140026220
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_DeleteService]
mov rcx, rbx
mov edi, eax
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test rsi, rsi
je 0x140026268
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov eax, edi
mov rcx, qword [rsp + 0x460]
xor rcx, rsp
call fcn.140030090
lea r11, [rsp + 0x470]
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x30]
mov rsp, r11
pop r14
pop rdi
pop rsi
ret