Function at 0x4539e7
Capabilities:
Check os version
Modify service
Query service status
Start service

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4e29bc
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x22d0
call fcn.004b70b0
mov eax, dword [0x666498]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
push 2
pop ebx
lea eax, [ebp - 0x21a0]
mov dword [ebp - 0x21a0], 0x114
push eax
mov esi, ebx
call dword [sym.imp.KERNEL32.DLL_GetVersionExW]
test eax, eax
mov eax, dword [ebp - 0x219c]
je 0x453a48
cmp eax, 6
ja 0x453a56
cmp eax, 6
jne 0x453a59
cmp dword [ebp - 0x2198], 1
jb 0x453a59
push 3
pop esi
mov dword [ebp - 0x2034], ebx
xor ebx, ebx
mov dword [ebp - 0x202c], esi
mov edi, ebx
mov esi, dword [sym.imp.KERNEL32.DLL_GetLastError]
mov dword [ebp - 0x2038], str.IKEEXT
mov dword [ebp - 0x2030], str.PolicyAgent
mov dword [ebp - 0x2028], str.RasMan
mov dword [ebp - 0x2024], 3
mov dword [ebp - 0x2020], str.TapiSrv
mov dword [ebp - 0x201c], 3
mov dword [ebp - 0x21b0], edi
cmp edi, 4
jae 0x4540ea
push ecx
push ecx
lea ecx, [ebp - 0x22e0]
call fcn.00425a86
push SysReAllocString
push ebx
mov dword [ebp - 4], ebx
push ebx
mov dword [ebp - 0x21b4], ebx
mov byte [ebp - 4], 1
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov dword [ebp - 0x21ac], eax
test eax, eax
jne 0x453b4e
mov edx, str.OpenSCManager_failed__
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edi, eax
call esi
push eax
mov ecx, edi
call fcn.00425b47
mov edx, 0x642320
mov ecx, eax
call fcn.0041b6b8
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x22e0]
call fcn.00425a3b
mov byte [ebp - 4], 2
cmp dword [eax + 0x14], 0x10
jb 0x453b31
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x21cc]
call fcn.00410f4b
push 0x6631f8
lea eax, [ebp - 0x21cc]
push eax
call fcn.004b9a9e
mov ecx, dword [ebp + edi*8 - 0x2038]
push 5
push ecx
push eax
mov dword [ebp - 0x21a8], ecx
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
mov dword [ebp - 0x21b4], edi
test edi, edi
jne 0x453bf0
call esi
cmp eax, 0x424
jne 0x453b8e
lea ecx, [ebp - 0x22e0]
call fcn.00424fc4
or dword [ebp - 4], 0xffffffff
jmp 0x4540bb
mov edx, str.OpenService_failed__
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edi, eax
call esi
push eax
mov ecx, edi
call fcn.00425b47
mov edx, 0x642320
mov ecx, eax
call fcn.0041b6b8
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x22e0]
call fcn.00425a3b
mov byte [ebp - 4], 3
cmp dword [eax + 0x14], 0x10
jb 0x453bd4
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x21d8]
call fcn.00410f4b
push 0x6631f8
lea eax, [ebp - 0x21d8]
jmp 0x453b48
lea eax, [ebp - 0x21b8]
mov dword [ebp - 0x21b8], 0x2000
push eax
push 0x2000
lea eax, [ebp - 0x2018]
push eax
push edi
call dword [sym.imp.ADVAPI32.dll_QueryServiceConfigW]
test eax, eax
jne 0x453c7a
mov edx, str.QueryServiceConfig_failed__
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edi, eax
call esi
push eax
mov ecx, edi
call fcn.00425b47
mov edx, 0x642320
mov ecx, eax
call fcn.0041b6b8
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x22e0]
call fcn.00425a3b
mov byte [ebp - 4], 4
cmp dword [eax + 0x14], 0x10
jb 0x453c5e
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x21e4]
call fcn.00410f4b
push 0x6631f8
lea eax, [ebp - 0x21e4]
jmp 0x453b48
lea eax, [ebp - 0x2084]
push eax
push edi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
jne 0x453cee
mov edx, str.QueryServiceStatus_failed__
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edi, eax
call esi
push eax
mov ecx, edi
call fcn.00425b47
mov edx, 0x642320
mov ecx, eax
call fcn.0041b6b8
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x22e0]
call fcn.00425a3b
mov byte [ebp - 4], 5
cmp dword [eax + 0x14], 0x10
jb 0x453cd2
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x21f0]
call fcn.00410f4b
push 0x6631f8
lea eax, [ebp - 0x21f0]
jmp 0x453b48
mov ecx, dword [ebp - 0x2014]
mov eax, dword [ebp - 0x21b0]
cmp ecx, 2
je 0x453d0a
cmp dword [ebp + eax*8 - 0x2034], ecx
mov cl, 1
jne 0x453d0c
mov cl, bl
mov eax, dword [ebp + eax*8 - 0x2034]
mov byte [ebp - 0x21a1], cl
mov dword [ebp - 0x21bc], eax
cmp eax, 2
jne 0x453d2f
cmp dword [ebp - 0x2080], 4
mov al, 1
jne 0x453d31
mov al, bl
mov byte [ebp - 0x21a2], al
test cl, cl
jne 0x453d43
test al, al
je 0x45409b
push dword [ebp - 0x21ac]
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push 0xf003f
push ebx
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov dword [ebp - 0x21ac], eax
test eax, eax
jne 0x453e17
call esi
cmp eax, 5
jne 0x453db5
mov edx, dword [ebp - 0x21a8]
lea ecx, [ebp - 0x2068]
call fcn.00426e0b
mov esi, eax
mov edx, str.insufficient_privileges_to_configure_or_start_service
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edx, esi
mov ecx, eax
call fcn.0041b8bc
push ebx
push 1
lea ecx, [ebp - 0x2068]
mov byte [ebp - 4], 1
call fcn.00418d87
jmp 0x453ddd
mov edx, str.OpenSCManager_failed__
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edi, eax
call esi
push eax
mov ecx, edi
call fcn.00425b47
mov edx, 0x642320
mov ecx, eax
call fcn.0041b6b8
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x22e0]
call fcn.00425a3b
mov byte [ebp - 4], 7
cmp dword [eax + 0x14], 0x10
jb 0x453dfb
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x21fc]
call fcn.00410f4b
push 0x6631f8
lea eax, [ebp - 0x21fc]
jmp 0x453b48
push edi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push 0x16
push dword [ebp - 0x21a8]
push dword [ebp - 0x21ac]
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
mov dword [ebp - 0x21b4], edi
test edi, edi
jne 0x453ea0
mov edx, str.OpenService_failed__
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edi, eax
call esi
push eax
mov ecx, edi
call fcn.00425b47
mov edx, 0x642320
mov ecx, eax
call fcn.0041b6b8
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x22e0]
call fcn.00425a3b
mov byte [ebp - 4], 8
cmp dword [eax + 0x14], 0x10
jb 0x453e84
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x2208]
call fcn.00410f4b
push 0x6631f8
lea eax, [ebp - 0x2208]
jmp 0x453b48
cmp byte [ebp - 0x21a1], 0
je 0x453f27
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
push dword [ebp - 0x21bc]
push 0xffffffffffffffff
push edi
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfigW]
test eax, eax
jne 0x453f27
mov edx, str.ChangeServiceConfig_failed__
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edi, eax
call esi
push eax
mov ecx, edi
call fcn.00425b47
mov edx, 0x642320
mov ecx, eax
call fcn.0041b6b8
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x22e0]
call fcn.00425a3b
mov byte [ebp - 4], 9
cmp dword [eax + 0x14], 0x10
jb 0x453f0b
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x2214]
call fcn.00410f4b
push 0x6631f8
lea eax, [ebp - 0x2214]
jmp 0x453b48
cmp byte [ebp - 0x21a2], 0
je 0x45409b
push ebx
push ebx
push edi
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
jne 0x453fa3
mov edx, str.StartService_failed__
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edi, eax
call esi
push eax
mov ecx, edi
call fcn.00425b47
mov edx, 0x642320
mov ecx, eax
call fcn.0041b6b8
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x22e0]
call fcn.00425a3b
mov byte [ebp - 4], 0xa
cmp dword [eax + 0x14], 0x10
jb 0x453f87
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x2220]
call fcn.00410f4b
push 0x6631f8
lea eax, [ebp - 0x2220]
jmp 0x453b48
mov eax, ebx
mov dword [ebp - 0x21a8], ebx
cmp eax, 0x14
jge 0x45409b
lea eax, [ebp - 0x2084]
push eax
push edi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
test eax, eax
jne 0x4540c7
mov edx, str.QueryServiceStatus_failed__
lea ecx, [ebp - 0x22d0]
call fcn.0041b6b8
mov edi, eax
call esi
push eax
mov ecx, edi
call fcn.00425b47
mov edx, 0x642320
mov ecx, eax
call fcn.0041b6b8
lea eax, [ebp - 0x2050]
push eax
lea ecx, [ebp - 0x22e0]
call fcn.00425a3b
mov byte [ebp - 4], 0xb
cmp dword [eax + 0x14], 0x10
jb 0x454010
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x222c]
call fcn.00410f4b
push 0x6631f8
lea eax, [ebp - 0x222c]
jmp 0x453b48
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
call edi
push dword [ebp - 0x21ac]
call edi
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x22e0]
call fcn.00424fc4
mov edi, dword [ebp - 0x21b0]
inc edi
jmp 0x453aab
cmp dword [ebp - 0x2080], 2
jne 0x45409b
push 0x64
call dword [sym.imp.KERNEL32.DLL_Sleep]
mov eax, dword [ebp - 0x21a8]
inc eax
mov dword [ebp - 0x21a8], eax
jmp 0x453fab
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004b5e2f
mov esp, ebp
pop ebp
ret