Function at 0x140031a60
Capabilities:
Create service

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0x7b8
mov qword [rsp + 0xf0], 0xfffffffffffffffe
mov rax, qword [0x14025a030]
xor rax, rsp
mov qword [rsp + 0x7a0], rax
mov r13, r9
mov r12, r8
mov rsi, rdx
mov r14, rcx
mov rdi, qword [rsp + 0x810]
xor ebx, ebx
mov dword [rsp + 0x70], ebx
mov dword [rsp + 0x74], 0x78
lea r9, [rsp + 0x74]
lea r8, [rsp + 0x70]
lea rdx, str._ServiceManager::Install_
lea rcx, [rsp + 0xf8]
call fcn.140001d10
nop
mov qword [rsp + 0x88], rbx
mov rcx, qword [0x140260548]
test rcx, rcx
je 0x140032122
mov rax, qword [rcx]
mov edx, 0x7d0
call qword [rax + 0x10]
test eax, eax
je 0x140031be1
lea edx, [rbx + 2]
lea r8d, [rbx + 1]
lea rcx, [rsp + 0x4d0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_int____ptr64]
nop
call qword [sym.imp.MSVCP90.dll_public:_static_class_std::locale_const____ptr64___cdecl_std::locale::classic_void_]
mov r8, rax
mov rax, qword [rsp + 0x4d0]
movsxd rcx, dword [rax + 4]
lea rcx, [rsp + rcx + 0x4d0]
lea rdx, [rsp + 0xa8]
call qword [sym.imp.MSVCP90.dll_public:_class_std::locale___cdecl_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::imbue_class_std::locale_const____ptr64____ptr64]
lea rcx, [rsp + 0xa8]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::locale::destructor_void____ptr64]
lea rdx, str._ServiceManager::Install_
lea rcx, [rsp + 0x4d0]
call fcn.140002150
lea rdx, str.Binary_path:
mov rcx, rax
call fcn.140002150
mov rdx, rsi
mov rcx, rax
call fcn.140002150
lea rdx, [rsp + 0x750]
lea rcx, [rsp + 0x4d0]
call qword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::str_void____ptr64]
nop
lea r8, [rsp + 0x758]
cmp qword [rsp + 0x770], 8
cmovae r8, qword [rsp + 0x758]
mov rcx, qword [0x140260548]
mov rax, qword [rcx]
mov r9, qword [rsp + 0x768]
mov edx, 0x7d0
call qword [rax + 0x20]
nop
lea rcx, [rsp + 0x750]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void____ptr64]
nop
lea rcx, [rsp + 0x4d0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::vbase_dtor_void____ptr64]
mov rcx, qword [0x140260548]
test rcx, rcx
je 0x140032122
mov rax, qword [rcx]
mov edx, 0x7d0
call qword [rax + 0x10]
test eax, eax
je 0x140031cec
mov edx, 2
lea r8d, [rdx - 1]
lea rcx, [rsp + 0x200]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_int____ptr64]
nop
call qword [sym.imp.MSVCP90.dll_public:_static_class_std::locale_const____ptr64___cdecl_std::locale::classic_void_]
mov r8, rax
mov rax, qword [rsp + 0x200]
movsxd rcx, dword [rax + 4]
lea rcx, [rsp + rcx + 0x200]
lea rdx, [rsp + 0xa0]
call qword [sym.imp.MSVCP90.dll_public:_class_std::locale___cdecl_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::imbue_class_std::locale_const____ptr64____ptr64]
lea rcx, [rsp + 0xa0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::locale::destructor_void____ptr64]
lea rdx, str._ServiceManager::Install_
lea rcx, [rsp + 0x200]
call fcn.140002150
lea rdx, str.Service_name:
mov rcx, rax
call fcn.140002150
mov rdx, r12
mov rcx, rax
call fcn.140002150
lea rdx, [rsp + 0x700]
lea rcx, [rsp + 0x200]
call qword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::str_void____ptr64]
nop
lea r8, [rsp + 0x708]
cmp qword [rsp + 0x720], 8
cmovae r8, qword [rsp + 0x708]
mov rcx, qword [0x140260548]
mov rax, qword [rcx]
mov r9, qword [rsp + 0x718]
mov edx, 0x7d0
call qword [rax + 0x20]
nop
lea rcx, [rsp + 0x700]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void____ptr64]
nop
lea rcx, [rsp + 0x200]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::vbase_dtor_void____ptr64]
mov rcx, qword [0x140260548]
test rcx, rcx
je 0x140032122
mov rax, qword [rcx]
mov edx, 0x7d0
call qword [rax + 0x10]
test eax, eax
je 0x140031df7
mov edx, 2
lea r8d, [rdx - 1]
lea rcx, [rsp + 0x3e0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_int____ptr64]
nop
call qword [sym.imp.MSVCP90.dll_public:_static_class_std::locale_const____ptr64___cdecl_std::locale::classic_void_]
mov r8, rax
mov rax, qword [rsp + 0x3e0]
movsxd rcx, dword [rax + 4]
lea rcx, [rsp + rcx + 0x3e0]
lea rdx, [rsp + 0xc8]
call qword [sym.imp.MSVCP90.dll_public:_class_std::locale___cdecl_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::imbue_class_std::locale_const____ptr64____ptr64]
lea rcx, [rsp + 0xc8]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::locale::destructor_void____ptr64]
lea rdx, str._ServiceManager::Install_
lea rcx, [rsp + 0x3e0]
call fcn.140002150
lea rdx, str.Display_name:
mov rcx, rax
call fcn.140002150
mov rdx, r13
mov rcx, rax
call fcn.140002150
lea rdx, [rsp + 0x728]
lea rcx, [rsp + 0x3e0]
call qword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::str_void____ptr64]
nop
lea r8, [rsp + 0x730]
cmp qword [rsp + 0x748], 8
cmovae r8, qword [rsp + 0x730]
mov rcx, qword [0x140260548]
mov rax, qword [rcx]
mov r9, qword [rsp + 0x740]
mov edx, 0x7d0
call qword [rax + 0x20]
nop
lea rcx, [rsp + 0x728]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void____ptr64]
nop
lea rcx, [rsp + 0x3e0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::vbase_dtor_void____ptr64]
mov rcx, qword [0x140260548]
test rcx, rcx
je 0x140032122
mov rax, qword [rcx]
mov edx, 0x7d0
call qword [rax + 0x10]
test eax, eax
je 0x140031f02
mov edx, 2
lea r8d, [rdx - 1]
lea rcx, [rsp + 0x5c0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_int____ptr64]
nop
call qword [sym.imp.MSVCP90.dll_public:_static_class_std::locale_const____ptr64___cdecl_std::locale::classic_void_]
mov r8, rax
mov rax, qword [rsp + 0x5c0]
movsxd rcx, dword [rax + 4]
lea rcx, [rsp + rcx + 0x5c0]
lea rdx, [rsp + 0xb0]
call qword [sym.imp.MSVCP90.dll_public:_class_std::locale___cdecl_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::imbue_class_std::locale_const____ptr64____ptr64]
lea rcx, [rsp + 0xb0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::locale::destructor_void____ptr64]
lea rdx, str._ServiceManager::Install_
lea rcx, [rsp + 0x5c0]
call fcn.140002150
lea rdx, str.Description:
mov rcx, rax
call fcn.140002150
mov rdx, rdi
mov rcx, rax
call fcn.140002150
lea rdx, [rsp + 0x778]
lea rcx, [rsp + 0x5c0]
call qword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::str_void____ptr64]
nop
lea r8, [rsp + 0x780]
cmp qword [rsp + 0x798], 8
cmovae r8, qword [rsp + 0x780]
mov rcx, qword [0x140260548]
mov rax, qword [rcx]
mov r9, qword [rsp + 0x790]
mov edx, 0x7d0
call qword [rax + 0x20]
nop
lea rcx, [rsp + 0x778]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void____ptr64]
nop
lea rcx, [rsp + 0x5c0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::vbase_dtor_void____ptr64]
mov rcx, qword [0x140260548]
test rcx, rcx
je 0x140032122
mov rax, qword [rcx]
mov edx, 0x7d0
call qword [rax + 0x10]
test eax, eax
je 0x140032012
mov edx, 2
lea r8d, [rdx - 1]
lea rcx, [rsp + 0x2f0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_int____ptr64]
nop
call qword [sym.imp.MSVCP90.dll_public:_static_class_std::locale_const____ptr64___cdecl_std::locale::classic_void_]
mov r8, rax
mov rax, qword [rsp + 0x2f0]
movsxd rcx, dword [rax + 4]
lea rcx, [rsp + rcx + 0x2f0]
lea rdx, [rsp + 0xc0]
call qword [sym.imp.MSVCP90.dll_public:_class_std::locale___cdecl_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::imbue_class_std::locale_const____ptr64____ptr64]
lea rcx, [rsp + 0xc0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::locale::destructor_void____ptr64]
lea rdx, str._ServiceManager::Install_
lea rcx, [rsp + 0x2f0]
call fcn.140002150
lea rdx, str.Service_type:
mov rcx, rax
call fcn.140002150
mov edx, dword [rsp + 0x818]
mov rcx, rax
call qword [sym.imp.MSVCP90.dll_public:_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______ptr64___cdecl_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__::operator___unsigned_long_int____ptr64]
lea rdx, [rsp + 0x6d8]
lea rcx, [rsp + 0x2f0]
call qword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::str_void____ptr64]
nop
lea r8, [rsp + 0x6e0]
cmp qword [rsp + 0x6f8], 8
cmovae r8, qword [rsp + 0x6e0]
mov rcx, qword [0x140260548]
mov rax, qword [rcx]
mov r9, qword [rsp + 0x6f0]
mov edx, 0x7d0
call qword [rax + 0x20]
nop
lea rcx, [rsp + 0x6d8]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void____ptr64]
nop
lea rcx, [rsp + 0x2f0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::vbase_dtor_void____ptr64]
mov rcx, qword [0x140260548]
test rcx, rcx
je 0x140032122
mov rax, qword [rcx]
mov edx, 0x7d0
call qword [rax + 0x10]
test eax, eax
je 0x140032122
mov edx, 2
lea r8d, [rdx - 1]
lea rcx, [rsp + 0x110]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_int____ptr64]
nop
call qword [sym.imp.MSVCP90.dll_public:_static_class_std::locale_const____ptr64___cdecl_std::locale::classic_void_]
mov r8, rax
mov rax, qword [rsp + 0x110]
movsxd rcx, dword [rax + 4]
lea rcx, [rsp + rcx + 0x110]
lea rdx, [rsp + 0x80]
call qword [sym.imp.MSVCP90.dll_public:_class_std::locale___cdecl_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::imbue_class_std::locale_const____ptr64____ptr64]
lea rcx, [rsp + 0x80]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::locale::destructor_void____ptr64]
lea rdx, str._ServiceManager::Install_
lea rcx, [rsp + 0x110]
call fcn.140002150
lea rdx, str.Start_type:
mov rcx, rax
call fcn.140002150
mov edx, dword [rsp + 0x820]
mov rcx, rax
call qword [sym.imp.MSVCP90.dll_public:_class_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t______ptr64___cdecl_std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__::operator___unsigned_long_int____ptr64]
lea rdx, [rsp + 0x6b0]
lea rcx, [rsp + 0x110]
call qword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::str_void____ptr64]
nop
lea r8, [rsp + 0x6b8]
cmp qword [rsp + 0x6d0], 8
cmovae r8, qword [rsp + 0x6b8]
mov rcx, qword [0x140260548]
mov rax, qword [rcx]
mov r9, qword [rsp + 0x6c8]
mov edx, 0x7d0
call qword [rax + 0x20]
nop
lea rcx, [rsp + 0x6b0]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void____ptr64]
nop
lea rcx, [rsp + 0x110]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_ostringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::vbase_dtor_void____ptr64]
mov dword [rsp + 0x7c], ebx
mov dword [rsp + 0x78], ebx
mov qword [rsp + 0x48], rbx
lea rax, [rsp + 0x78]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x7c]
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x820]
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x818]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rdi
mov r9, r13
mov r8, r12
mov rdx, rsi
mov rcx, r14
call fcn.140030b60
test eax, eax
jne 0x1400321b4
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [rsp + 0x90], eax
lea rax, str.ServiceManager::CheckServiceConfig
mov qword [rsp + 0x98], rax
movaps xmm0, xmmword [rsp + 0x90]
movdqa xmmword [rsp + 0xd0], xmm0
lea rdx, [0x140252200]
lea rcx, [rsp + 0xd0]
call sub.MSVCR90.dll__CxxThrowException
mov edi, dword [rsp + 0x7c]
test edi, edi
jne 0x14003221a
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x58], rbx
mov qword [rsp + 0x50], rbx
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], rsi
mov dword [rsp + 0x30], 1
mov eax, dword [rsp + 0x820]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x818]
mov dword [rsp + 0x20], eax
mov r9d, 0xf01ff
mov r8, r13
mov rdx, r12
mov rcx, qword [r14]
call qword [sym.imp.ADVAPI32.dll_CreateServiceW]
mov rbx, rax
mov qword [rsp + 0x88], rax
jmp 0x140032260
cmp dword [rsp + 0x78], 0
jne 0x140032260
mov dword [rsp + 0x90], 0x431
lea rax, str.Check_PreviousInstallation_
mov qword [rsp + 0x98], rax
movaps xmm0, xmmword [rsp + 0x90]
movdqa xmmword [rsp + 0xe0], xmm0
lea rdx, [0x140252200]
lea rcx, [rsp + 0xe0]
call sub.MSVCR90.dll__CxxThrowException
mov dword [rsp + 0x70], 1
neg edi
sbb eax, eax
and eax, 0x431
mov dword [rsp + 0x74], eax
jmp 0x14003227f
test rbx, rbx
je 0x14003228d
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov ebx, dword [rsp + 0x70]
lea rcx, [rsp + 0xf8]
call fcn.140001e50
nop
mov ecx, dword [rsp + 0x74]
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, ebx
mov rcx, qword [rsp + 0x7a0]
xor rcx, rsp
call fcn.140155650
add rsp, 0x7b8
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret