Function at 0x1400248c0
Capabilities:
Start service

Disassembly:
mov rax, rsp
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rax - 0x108]
sub rsp, 0x1e0
mov qword [rbp - 0x60], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov rax, qword [0x140232230]
xor rax, rsp
mov qword [rbp + 0xd0], rax
mov r15, rcx
lea rax, [rbp - 0x58]
mov qword [rsp + 0x68], rax
mov qword [rbp - 0x40], 7
xor r12d, r12d
mov qword [rbp - 0x48], r12
mov word [rbp - 0x58], r12w
lea r8d, [r12 + 0x25]
lea rdx, str._driver___start_____Entering_routine.
lea rcx, [rbp - 0x58]
call fcn.14000dc20
nop
lea r8d, [r12 + 6]
lea rdx, [rbp - 0x58]
call fcn.140078560
lea rax, [rbp - 0x58]
mov qword [rbp - 0x40], 7
mov qword [rbp - 0x48], r12
mov word [rbp - 0x58], r12w
lea rcx, [rbp - 0x58]
mov qword [rsp + 0x68], rax
cmp byte [r15 + 0x71], r12b
je 0x140024982
lea r8d, [r12 + 0x2a]
lea rdx, str._driver___start_____driver_already_started
call fcn.14000dc20
nop
lea r8d, [r12 + 5]
lea rdx, [rbp - 0x58]
jmp 0x1400250a2
mov r8d, 0x23
lea rdx, str._driver___start_____starting_driver
call fcn.14000dc20
nop
mov r8d, 5
lea rdx, [rbp - 0x58]
call fcn.140078560
xor edx, edx
xor ecx, ecx
mov r8d, 0xf003f
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov r14, rax
test rax, rax
jne 0x140024a7f
lea rax, [rbp - 0x58]
mov qword [rsp + 0x68], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov qword [rbp - 0x40], 7
mov qword [rbp - 0x48], r12
mov word [rbp - 0x58], r12w
lea r8d, [r14 + 0x14]
lea rdx, str.ERROR:_OpenSCManager
lea rcx, [rbp - 0x58]
call fcn.14000dc20
nop
mov qword [rsp + 0x58], 7
mov qword [rsp + 0x50], r12
mov word [rsp + 0x40], r12w
lea r8d, [r14 + 0x10]
lea rdx, str._driver___start_
lea rcx, [rsp + 0x40]
call fcn.14000dc20
nop
mov r9d, ebx
lea r8, [rbp - 0x58]
lea rdx, [rsp + 0x40]
call fcn.140078b90
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rcx, [rsp + 0x70]
call fcn.1401670f4
nop
lea rax, vtable.win32_error.0
mov qword [rsp + 0x70], rax
lea rax, str.OpenSCManager
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x70], r12
mov dword [rbp - 0x68], ebx
lea rdx, [0x14022dc38]
lea rcx, [rsp + 0x70]
call fcn.140170da8
int3
lea rdx, [r15 + 0x10]
cmp qword [rdx + 0x18], 8
jb 0x140024a8d
mov rdx, qword [rdx]
mov r8d, 0xf01ff
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov rsi, rax
test rax, rax
jne 0x140024b68
mov rcx, r14
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
lea rax, [rbp - 0x58]
mov qword [rsp + 0x68], rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov qword [rsp + 0x58], 7
mov qword [rsp + 0x50], r12
mov word [rsp + 0x40], r12w
lea r8d, [rsi + 0x12]
lea rdx, str.ERROR:_OpenService
lea rcx, [rsp + 0x40]
call fcn.14000dc20
nop
mov qword [rbp - 0x40], 7
mov qword [rbp - 0x48], r12
mov word [rbp - 0x58], r12w
lea r8d, [rsi + 0x10]
lea rdx, str._driver___start_
lea rcx, [rbp - 0x58]
call fcn.14000dc20
nop
mov r9d, ebx
lea r8, [rsp + 0x40]
lea rdx, [rbp - 0x58]
call fcn.140078b90
lea rcx, [rsp + 0x70]
call fcn.1401670f4
nop
lea rax, vtable.win32_error.0
mov qword [rsp + 0x70], rax
lea rax, str.OpenService
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x70], r12
mov dword [rbp - 0x68], ebx
lea rdx, [0x14022dc38]
lea rcx, [rsp + 0x70]
call fcn.140170da8
int3
xor r8d, r8d
xor edx, edx
mov rcx, rax
call qword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
jne 0x140024dd2
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
cmp eax, 0x420
je 0x140024dd2
cmp eax, 0x41f
jne 0x140024d0d
mov edi, r12d
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
nop dword [rax]
mov qword [rsp + 0x58], 7
mov qword [rsp + 0x50], r12
mov word [rsp + 0x40], r12w
mov r8d, WSAGetLastError
lea rdx, str._driver___start_____experiencing_ERROR_SERVICE_DATABASE_LOCKED_condition__waiting_10_seconds_and_trying_again
lea rcx, [rsp + 0x40]
call fcn.14000dc20
nop
mov r8d, 3
lea rdx, [rsp + 0x40]
call fcn.140078560
mov ecx, 0x2710
call qword [sym.imp.KERNEL32.dll_Sleep]
mov ebx, r12d
xor r8d, r8d
xor edx, edx
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
jne 0x140024c2b
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
cmp eax, 0x420
je 0x140024c2b
inc edi
cmp eax, 0x41f
jne 0x140024c2b
cmp edi, 6
jl 0x140024bb0
jmp 0x140024c8f
cmp edi, 6
jge 0x140024c87
test ebx, ebx
je 0x140024c3c
cmp ebx, 0x420
jne 0x140024c87
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x58], 7
mov qword [rsp + 0x50], r12
mov word [rsp + 0x40], r12w
mov r8d, 0x57
lea rdx, str._driver___start_____successfully_recovered_from_ERROR_SERVICE_DATABASE_LOCKED_condition
lea rcx, [rsp + 0x40]
call fcn.14000dc20
nop
mov r8d, 4
lea rdx, [rsp + 0x40]
call fcn.140078560
jmp 0x140024dd2
cmp ebx, 0x41f
jne 0x140024cc7
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x58], 7
mov qword [rsp + 0x50], r12
mov word [rsp + 0x40], r12w
mov r8d, 0x5a
lea rdx, str._driver___start_____cannot_recover_from_ERROR_SERVICE_DATABASE_LOCKED_condition__giving_up
lea rcx, [rsp + 0x40]
call fcn.14000dc20
nop
jmp 0x140024cfd
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x58], 7
mov qword [rsp + 0x50], r12
mov word [rsp + 0x40], r12w
mov r8d, WSACleanup
lea rdx, str._driver___start_____cannot_recover_from_ERROR_SERVICE_DATABASE_LOCKED_condition__another_error_surfaced__giving_up
lea rcx, [rsp + 0x40]
call fcn.14000dc20
nop
mov r8d, 2
lea rdx, [rsp + 0x40]
call fcn.140078560
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, r14
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
lea rax, [rbp - 0x58]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x58], 7
mov qword [rsp + 0x50], r12
mov word [rsp + 0x40], r12w
mov r8d, reloc.WS2_32.dll_send
lea rdx, str.ERROR:_StartService
lea rcx, [rsp + 0x40]
call fcn.14000dc20
nop
mov qword [rbp - 0x40], 7
mov qword [rbp - 0x48], r12
mov word [rbp - 0x58], r12w
mov r8d, reloc.WS2_32.dll_recv
lea rdx, str._driver___start_
lea rcx, [rbp - 0x58]
call fcn.14000dc20
nop
mov r9d, ebx
lea r8, [rsp + 0x40]
lea rdx, [rbp - 0x58]
call fcn.140078b90
lea rcx, [rsp + 0x70]
call fcn.1401670f4
nop
lea rax, vtable.win32_error.0
mov qword [rsp + 0x70], rax
lea rax, str.StartService
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x70], r12
mov dword [rbp - 0x68], ebx
lea rdx, [0x14022dc38]
lea rcx, [rsp + 0x70]
call fcn.140170da8
int3
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, r14
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
lea rdi, [r15 + 0x50]
cmp qword [rdi + 0x18], 8
jb 0x140024df4
mov rax, qword [rdi]
jmp 0x140024df7
mov rax, rdi
mov qword [rsp + 0x68], rax
lea rdx, str._driver___start_____getting_handle_to_driver___devfile:___1__
lea rcx, [rbp - 0x30]
call fcn.140021a10
mov rbx, rax
cmp byte [rax + 0x44], 0
je 0x140024e1d
mov rcx, rax
call fcn.140009270
lea rdx, [rsp + 0x68]
mov rcx, rbx
call fcn.14001a440
inc dword [rbx + 0x3c]
mov edx, dword [rbx + 0x3c]
cmp qword [rbx + 0x30], 0
je 0x140024e92
mov r10d, dword [rbx + 0x40]
cmp edx, r10d
jge 0x140024e92
mov r9, qword [rbx + 0x18]
movsxd rcx, edx
test edx, edx
jns 0x140024e6e
mov rax, rcx
neg rax
je 0x140024e6e
or rax, 0xffffffffffffffff
sub rax, rcx
shr rax, 5
lea rax, [rax*4 + 4]
mov r8, r9
sub r8, rax
jmp 0x140024e79
mov rax, rcx
shr rax, 5
lea r8, [r9 + rax*4]
and ecx, 0x1f
mov eax, 1
shl eax, cl
test dword [r8], eax
je 0x140024e92
inc edx
mov dword [rbx + 0x3c], edx
cmp edx, r10d
jl 0x140024e44
mov rdx, rbx
lea rcx, [rbp - 0x58]
call fcn.14000dbe0
nop
lea rcx, [rbp - 0x30]
call fcn.1400090e0
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x58], 7
mov qword [rsp + 0x50], r12
mov word [rsp + 0x40], r12w
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rdx, [rbp - 0x58]
lea rcx, [rsp + 0x40]
call fcn.14000e0c0
nop
mov r8d, 5
lea rdx, [rsp + 0x40]
call fcn.140078560
cmp qword [rdi + 0x18], 8
jb 0x140024ef6
mov rdi, qword [rdi]
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], 0x40000080
mov dword [rsp + 0x20], 3
xor r9d, r9d
xor r8d, r8d
mov edx, 0xc0000000
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov qword [r15 + 8], rax
cmp rax, 0xffffffffffffffff
jne 0x140024ff4
lea rax, [rsp + 0x40]
mov qword [rsp + 0x60], rax
lea rax, [rsp + 0x70]
mov qword [rsp + 0x68], rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov qword [rsp + 0x58], 7
mov qword [rsp + 0x50], r12
mov word [rsp + 0x40], r12w
mov r8d, select
lea rdx, str.ERROR:_CreateFile
lea rcx, [rsp + 0x40]
call fcn.14000dc20
nop
mov qword [rbp - 0x78], 7
mov qword [rbp - 0x80], r12
mov word [rsp + 0x70], r12w
mov r8d, reloc.WS2_32.dll_recv
lea rdx, str._driver___start_
lea rcx, [rsp + 0x70]
call fcn.14000dc20
nop
mov r9d, ebx
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0x70]
call fcn.140078b90
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rcx, [rsp + 0x70]
call fcn.1401670f4
nop
lea rax, vtable.win32_error.0
mov qword [rsp + 0x70], rax
lea rax, str.CreateFile
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x70], r12
mov dword [rbp - 0x68], ebx
lea rdx, [0x14022dc38]
lea rcx, [rsp + 0x70]
call fcn.140170da8
int3
mov byte [r15 + 0x72], 1
cmp qword [rbp - 0x40], 8
jb 0x140025009
mov rcx, qword [rbp - 0x58]
call fcn.1401669a0
mov qword [rbp - 0x40], 7
mov qword [rbp - 0x48], r12
mov word [rbp - 0x58], r12w
lea rax, [rsp + 0x70]
mov qword [rsp + 0x60], rax
mov qword [rbp - 0x78], 7
mov qword [rbp - 0x80], r12
mov word [rsp + 0x70], r12w
mov r8d, 0x22
lea rdx, str._driInitialization_failed
lea rcx, [rsp + 0x70]
call fcn.14000dc20
nop
mov r8d, 5
lea rdx, [rsp + 0x70]
call fcn.140078560
mov byte [r15 + 0x71], 1
lea rax, [rsp + 0x70]
mov qword [rsp + 0x60], rax
mov qword [rbp - 0x78], 7
mov qword [rbp - 0x80], r12
mov word [rsp + 0x70], r12w
mov r8d, 0x24
lea rdx, str._driver___start_____Leaving_routine.
lea rcx, [rsp + 0x70]
call fcn.14000dc20
nop
mov r8d, 6
lea rdx, [rsp + 0x70]
call fcn.140078560
mov rcx, qword [rbp + 0xd0]
xor rcx, rsp
call fcn.140166980
lea r11, [rsp + 0x1e0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret