Function at 0x455990
Capabilities:
Check for time delay via gettickcount
Link many functions at runtime

Disassembly:
sub esp, 0x28
push ebx
push 0x4ca410
mov byte [esp + 0xb], 0
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
test ebx, ebx
je 0x455c7c
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.OpenSCManagerW
push ebx
call esi
push str.OpenServiceW
push ebx
mov dword [0x4ed198], eax
call esi
push str.StartServiceW
push ebx
mov dword [0x4ed18c], eax
call esi
push str.QueryServiceStatus
push ebx
mov dword [0x4ed188], eax
call esi
push str.CloseServiceHandle
push ebx
mov dword [0x4ed184], eax
call esi
mov ecx, dword [0x4ed198]
test ecx, ecx
mov dword [0x4ed190], eax
je 0x455c6b
cmp dword [0x4ed18c], 0
je 0x455c6b
cmp dword [0x4ed188], 0
je 0x455c6b
cmp dword [0x4ed184], 0
je 0x455c6b
test eax, eax
je 0x455c6b
push edi
push 0xf003f
push 0
push 0
call ecx
mov edi, eax
test edi, edi
mov dword [esp + 0x14], edi
je 0x455c50
mov eax, dword [esp + 0x38]
push 0xf01ff
push eax
push edi
call dword [0x4ed18c]
mov esi, eax
test esi, esi
mov dword [esp + 0x10], esi
je 0x455c1d
push 0
push 0
push esi
call dword [0x4ed188]
test eax, eax
je 0x455c0f
push ebp
lea ecx, [esp + 0x1c]
push ecx
push esi
call dword [0x4ed184]
test eax, eax
je 0x455b16
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call edi
cmp dword [esp + 0x20], 2
mov ebp, dword [esp + 0x30]
mov esi, eax
jne 0x455b30
lea ecx, [ecx]
mov eax, 0xcccccccd
mul dword [esp + 0x34]
shr edx, 3
cmp edx, 0x3e8
jae 0x455acb
mov edx, 0x3e8
jmp 0x455ad8
cmp edx, 0x2710
jbe 0x455ad8
mov edx, 0x2710
push edx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x1c]
push edx
push eax
call dword [0x4ed184]
test eax, eax
je 0x455b16
cmp dword [esp + 0x30], ebp
jbe 0x455b03
call edi
mov ebp, dword [esp + 0x30]
mov esi, eax
jmp 0x455b0d
call edi
sub eax, esi
cmp eax, dword [esp + 0x34]
ja 0x455b30
cmp dword [esp + 0x20], 2
je 0x455ab0
jmp 0x455b30
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._ERROR_QueryServiceStatus_failed:_0x_x_n
call fcn.0044f300
push eax
call fcn.0044fb20
add esp, 0xc
cmp dword [esp + 0x20], 4
pop ebp
jne 0x455b57
mov ecx, dword [esp + 0x38]
push ecx
push str._INFO_Service__s_is_started_n
call fcn.0044f300
push eax
call fcn.0044fb20
mov byte [esp + 0x1b], 1
jmp 0x455be4
mov edx, dword [esp + 0x38]
push edx
push str._ERROR_Service__s_start_failed_n
call fcn.0044f300
push eax
call fcn.0044fb20
mov eax, dword [esp + 0x28]
add esp, 0xc
push eax
push str._Current_State:__d_n
call fcn.0044f300
push eax
call fcn.0044fb20
mov ecx, dword [esp + 0x30]
add esp, 0xc
push ecx
push str._Exit_Code:__d_n
call fcn.0044f300
push eax
call fcn.0044fb20
mov edx, dword [esp + 0x34]
add esp, 0xc
push edx
push str._Service_Specific_Exit_Code:__d_n
call fcn.0044f300
push eax
call fcn.0044fb20
mov eax, dword [esp + 0x38]
add esp, 0xc
push eax
push str._Check_Point:__d_n
call fcn.0044f300
push eax
call fcn.0044fb20
mov ecx, dword [esp + 0x3c]
add esp, 0xc
push ecx
push str._Wait_Hint:__d_n
call fcn.0044f300
push eax
call fcn.0044fb20
mov edx, dword [esp + 0x1c]
add esp, 0xc
push edx
call dword [0x4ed190]
mov edi, dword [esp + 0x14]
push edi
call dword [0x4ed190]
pop edi
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov al, byte [esp + 0xb]
pop esi
pop ebx
add esp, 0x28
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._ERROR_StartService_failed:_0x_x_n
jmp 0x455c29
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._ERROR_OpenService_failed:_0x_x_n
call fcn.0044f300
push eax
call fcn.0044fb20
add esp, 0xc
push edi
call dword [0x4ed190]
pop edi
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov al, byte [esp + 0xb]
pop esi
pop ebx
add esp, 0x28
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._ERROR_OpenSCManager_failed:_0x_x_n
call fcn.0044f300
push eax
call fcn.0044fb20
add esp, 0xc
pop edi
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov al, byte [esp + 0xb]
pop esi
pop ebx
add esp, 0x28
ret
push str._ERROR_Failed_to_load_ADVAPI32IDLL_n
call fcn.0044f300
push eax
call fcn.0044fb20
add esp, 8
xor al, al
pop ebx
add esp, 0x28
ret