Function at 0x404d10
Capabilities:
Check if file exists
Start service

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x413060
mov eax, dword fs:[0]
push eax
sub esp, 0x24
push ebx
push esi
push edi
mov eax, dword [0x41d034]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 4], 1
lea eax, [ebp + 8]
cmp dword [ebp + 0x1c], 8
cmovae eax, dword [ebp + 8]
push eax
push str.EnsureServiceRunning:_s....
push 1
push 0x158
push 0x416aa0
push 0x416ae8
call fcn.004068e0
add esp, 0x18
lea eax, [ebp + 8]
cmp dword [ebp + 0x1c], 8
cmovae eax, dword [ebp + 8]
push 0xf01ff
push eax
push dword [esi]
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esi + 4], eax
test eax, eax
jne 0x404ee9
call edi
cmp eax, 0x424
jne 0x404ece
push str.Check_Service_Not_Install_so_install_it...
push 1
push 0x15e
push 0x416b58
push 0x416b7c
call fcn.00406550
add esp, 0x14
mov dword [ebp - 0x14], 7
xor eax, eax
mov dword [ebp - 0x18], 0
mov word [ebp - 0x28], ax
lea ecx, [ebp - 0x28]
push 0xffffffffffffffff
push eax
lea eax, [ebp + 0x20]
push eax
call fcn.004014d0
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 2
call fcn.00402240
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
mov byte [ebp - 4], 1
setne bl
cmp dword [ebp - 0x14], 8
jb 0x404e1c
push dword [ebp - 0x28]
call dword [sym.imp.MSVCR120.dll_void___cdecl_operator_delete_void__]
add esp, 4
test bl, bl
jne 0x404e4a
cmp dword [ebp + 0x34], 8
lea eax, [ebp + 0x20]
cmovae eax, dword [ebp + 0x20]
push eax
push str.servicePath:_s__not_exist_
push 1
push 0x162
push 0x416bd8
push 0x416c20
call fcn.004068e0
add esp, 0x18
sub esp, 0x18
xor eax, eax
mov ecx, esp
mov dword [ebp - 0x30], esp
push 0xffffffffffffffff
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], ax
lea eax, [ebp + 0x20]
push eax
call fcn.004014d0
sub esp, 0x18
mov byte [ebp - 4], 3
mov ecx, esp
xor eax, eax
push 0xffffffffffffffff
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], ax
lea eax, [ebp + 8]
push eax
call fcn.004014d0
mov ecx, esi
mov byte [ebp - 4], 1
call fcn.00404610
mov dword [esi + 4], eax
test eax, eax
jne 0x404ee9
push str.ERR:Install_service_fail_
push 1
push 0x167
push 0x416c80
push 0x416ca4
call fcn.00406550
add esp, 0x14
jmp 0x404f6b
call edi
push eax
push str.ERR:Fail_to_DoInstall_because_OpenService_return_an_unknown_error_0x_x
push 1
push 0x16d
push 0x416d10
push 0x416d34
jmp 0x404f63
push dword [esi + 4]
call fcn.00404830
test al, al
je 0x404ef9
mov bl, 1
jmp 0x404f6d
push str.Check_Service_not_running_run_it...
push 1
push 0x178
push 0x416d7c
push 0x416da0
call fcn.00406550
add esp, 0x14
push 0
push 0
push dword [esi + 4]
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
je 0x404f4a
push str.StartService_SUCCESS_
push 1
push 0x17c
push 0x416ddc
push 0x416e00
call fcn.00406550
add esp, 0x14
mov bl, 1
jmp 0x404f6d
call edi
push eax
push str.StartService_FAIL__0x_x
push 1
push 0x181
push str..._srcServiceUtilServiceUtil.cpp
push str.CServiceObj::EnsureServiceRunning
call fcn.00406550
add esp, 0x18
xor bl, bl
cmp dword [ebp + 0x1c], 8
mov esi, dword [sym.imp.MSVCR120.dll_void___cdecl_operator_delete_void__]
jb 0x404f81
push dword [ebp + 8]
call esi
add esp, 4
xor eax, eax
mov dword [ebp + 0x1c], 7
cmp dword [ebp + 0x34], 8
mov dword [ebp + 0x18], 0
mov word [ebp + 8], ax
jb 0x404fa3
push dword [ebp + 0x20]
call esi
add esp, 4
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x30