Function at 0x454110
Capabilities:
Start service

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4950d0
mov eax, dword fs:[0]
push eax
sub esp, 0x280
mov eax, dword [0x4c4074]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x270], ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x25c], eax
mov eax, dword [ecx + 0x90]
shr eax, 7
and al, 1
mov dword [ebp - 0x24c], eax
je 0x454981
call fcn.00420c00
or edi, 0xffffffff
mov al, byte [eax + 0x1c]
test al, al
je 0x454255
call fcn.00420c00
test byte [eax + 0x20], 8
je 0x454255
call fcn.00420c00
mov esi, eax
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454ac3
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov dword [ebp - 4], 2
lea ecx, [ebp - 0x250]
push 0x20
push str.Installing_using_helper_service.
call fcn.004023a0
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454acd
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x258], eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x258]
push 0
push 0x4a85e8
call fcn.004023a0
push ecx
lea eax, [ebp - 0x250]
push eax
push ecx
lea eax, [ebp - 0x258]
mov ecx, esi
push eax
call fcn.00420d60
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x258]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x454231
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov eax, edi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x454255
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x270]
mov eax, dword [eax + 0x160]
mov eax, dword [eax + 0x44]
mov ecx, dword [eax - 0x10]
lea esi, [eax - 0x10]
mov dword [ebp - 0x260], eax
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
cmp dword [esi + 0xc], 0
mov ecx, eax
lea eax, [esi + 0xc]
jl 0x45428b
cmp ecx, dword [esi]
jne 0x45428b
lock inc dword [eax]
jmp 0x4542c8
mov eax, dword [ecx]
lea edx, [esi + 4]
push 2
push dword [edx]
mov dword [ebp - 0x274], edx
mov eax, dword [eax]
call eax
mov esi, eax
test esi, esi
je 0x454ad7
mov ecx, dword [ebp - 0x274]
mov eax, dword [ecx]
mov dword [esi + 4], eax
mov edx, dword [ecx]
lea ecx, [esi + 0x10]
inc edx
push edx
push dword [ebp - 0x260]
call fcn.004024f0
add esp, 8
add esi, 0x10
mov dword [ebp - 0x28c], esi
mov dword [ebp - 4], 0xb
cmp dword [esi - 0xc], 0
je 0x45499e
call fcn.00420c00
mov al, byte [eax + 0x1c]
test al, al
je 0x4543d3
call fcn.00420c00
test byte [eax + 0x20], 8
je 0x4543d3
call fcn.00420c00
mov dword [ebp - 0x264], eax
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454adc
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x258], eax
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x258]
push 0x11
push str.Service_detected.
call fcn.004023a0
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454ae6
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x250]
push 0
push 0x4a85e8
call fcn.004023a0
push ecx
lea eax, [ebp - 0x258]
push eax
push ecx
mov ecx, dword [ebp - 0x264]
lea eax, [ebp - 0x250]
push eax
call fcn.00420d60
mov byte [ebp - 4], 0xe
mov eax, edi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4543b2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xb
mov eax, edi
mov edx, dword [ebp - 0x258]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4543d3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x284], 0x4a9308
mov dword [ebp - fcn.00418eb0], 0x4a92fc
mov dword [ebp - 0x27c], esi
mov dword [ebp - 0x248], 0x4a9bc0
mov dword [ebp - 0x244], 0
mov byte [ebp - 4], 0x16
lea eax, [ebp - 0x284]
mov dword [ebp - 0x220], eax
xorps xmm0, xmm0
lea eax, [ebp - 0x280]
movq qword [ebp - 0x230], xmm0
mov dword [ebp - 0x21c], eax
lea eax, [ebp - 0x248]
movups xmmword [ebp - 0x240], xmm0
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x224], 0
mov dword [0x4c5fb8], eax
mov byte [ebp - 4], 0x17
lea ecx, [ebp - 0x260]
call fcn.00465360
mov byte [ebp - 4], 0x18
lea eax, [ebp - 0x248]
push eax
lea eax, [ebp - 0x274]
push eax
call fcn.00454b90
mov byte [ebp - 4], 0x19
lea ecx, [ebp - 0x248]
mov eax, dword [ebp - 0x260]
mov dword [ebp - 0x278], eax
lea eax, [ebp - 0x264]
push eax
push 4
push SysReAllocString
mov dword [ebp - 0x264], 0
call fcn.0041e7e0
mov dword [ebp - 0x264], eax
mov dword [ebp - 0x254], 0x4a9bc0
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x1a
test eax, eax
jne 0x4544d5
mov byte [ebp - 4], 0x19
mov dword [ebp - 0x254], 0x4a9bc0
jmp 0x454501
push 1
push eax
call fcn.0041ea70
mov byte [ebp - 4], 0x19
push dword [ebp - 0x264]
mov dword [ebp - 0x254], 0x4a9bc0
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x250], 0
lea eax, [ebp - 0x250]
mov dword [ebp - 0x250], 0
push eax
push 0x14
push SysReAllocString
lea ecx, [ebp - 0x248]
call fcn.0041e7e0
mov dword [ebp - 0x258], eax
mov dword [ebp - 0x268], 0x4a9bc0
mov dword [ebp - 0x264], eax
mov byte [ebp - 4], 0x1b
test eax, eax
je 0x454590
lea ecx, [ebp - 0x278]
push ecx
push 1
push eax
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
je 0x45457c
mov byte [ebp - 4], 0x19
push dword [ebp - 0x258]
mov dword [ebp - 0x268], 0x4a9bc0
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x264], 0
jmp 0x4545cc
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x250], eax
mov eax, dword [ebp - 0x258]
jmp 0x45459c
mov ecx, dword [ebp - 0x250]
mov dword [ebp - 0x250], ecx
mov byte [ebp - 4], 0x19
mov dword [ebp - 0x268], 0x4a9bc0
test eax, eax
je 0x4545bf
push eax
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x264], 0
cmp dword [ebp - 0x250], 0
jne 0x4547aa
call fcn.00420c00
mov al, byte [eax + 0x1c]
test al, al
je 0x4546bd
call fcn.00420c00
test byte [eax + 0x20], 8
je 0x4546bd
call fcn.00420c00
mov dword [ebp - 0x264], eax
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454af0
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x258], eax
mov byte [ebp - 4], 0x1e
lea ecx, [ebp - 0x258]
push 0x10
push str.Service_started.
call fcn.004023a0
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454afa
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x21
lea ecx, [ebp - 0x250]
push 0
push 0x4a85e8
call fcn.004023a0
push ecx
lea eax, [ebp - 0x258]
push eax
push ecx
mov ecx, dword [ebp - 0x264]
lea eax, [ebp - 0x250]
push eax
call fcn.00420d60
mov byte [ebp - 4], 0x1e
mov eax, edi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45469c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x19
mov eax, edi
mov edx, dword [ebp - 0x258]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4546bd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x274]
mov ecx, dword [ebp - 0x25c]
cmp dword [eax - 0xc], 0
cmove eax, dword [ebp - 0x260]
push eax
call fcn.00446270
test al, al
je 0x4548e6
mov ecx, dword [ebp - 0x25c]
call fcn.004464b0
test al, al
je 0x4548e6
mov ecx, dword [ebp - 0x25c]
call fcn.00445350
test al, al
je 0x4548e6
mov ecx, dword [ebp - 0x25c]
call fcn.00445dc0
test al, al
je 0x4548e6
push 0x104
lea eax, [ebp - 0x218]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov ecx, dword [ebp - 0x24c]
neg eax
sbb al, al
and cl, al
lea eax, [ebp - 0x218]
mov dword [ebp - 0x24c], ecx
lea ecx, [ebp - 0x250]
push eax
call fcn.00407430
mov byte [ebp - 4], 0x26
lea ecx, [ebp - 0x250]
mov edx, dword [ebp - 0x270]
lea edx, [edx + 0x158]
call fcn.004650a0
test eax, eax
setne byte [ebp - 0x269]
mov byte [ebp - 4], 0x19
mov eax, edi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x454798
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x269], 0
je 0x4548ee
jmp 0x4548e6
call fcn.00420c00
mov al, byte [eax + 0x1c]
test al, al
je 0x4548e6
call fcn.00420c00
test byte [eax + 0x20], 1
je 0x4548e6
call fcn.00420c00
mov dword [ebp - 0x270], eax
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454b04
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x2a
lea ecx, [ebp - 0x24c]
push 0x19
push str.Unable_to_start_service:
call fcn.004023a0
mov ecx, esi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x454810
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x24c]
call fcn.004023a0
push 0xc
push str._LastError:
lea ecx, [ebp - 0x24c]
call fcn.004023a0
push dword [ebp - 0x250]
lea ecx, [ebp - 0x24c]
call fcn.00420960
mov dword [ebp - 0x264], eax
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454b0e
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x2d
lea ecx, [ebp - 0x250]
push 0
push 0x4a85e8
call fcn.004023a0
push ecx
push dword [ebp - 0x264]
lea eax, [ebp - 0x250]
push ecx
mov ecx, dword [ebp - 0x270]
push eax
call fcn.00420d60
mov byte [ebp - 4], 0x2a
mov eax, edi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4548c5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x19
mov eax, edi
mov edx, dword [ebp - 0x24c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4548e6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor cl, cl
mov dword [ebp - 0x24c], ecx
mov byte [ebp - 4], 0x18
mov eax, edi
mov edx, dword [ebp - 0x274]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45490f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x17
mov eax, edi
mov edx, dword [ebp - 0x260]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x454930
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0x244]
mov dword [ebp - 0x248], 0x4a9bc0
test eax, eax
je 0x454959
push eax
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x244], 0
mov eax, dword [ebp - 0x24c]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], edi
dec edi
test edi, edi
jg 0x454981
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x24c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0046e38e
mov esp, ebp
pop ebp
ret 4
call fcn.00420c00
mov al, byte [eax + 0x1c]
test al, al
je 0x454ab6
call fcn.00420c00
test byte [eax + 0x20], 1
je 0x454ab6
call fcn.00420c00
mov dword [ebp - 0x264], eax
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454b18
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x25c], eax
mov byte [ebp - 4], 0x37
lea ecx, [ebp - 0x25c]
push 0x2e
push str.Support_service_not_configured_in_updates.ini.
call fcn.004023a0
push 0xc
push str._LastError:
lea ecx, [ebp - 0x25c]
call fcn.004023a0
push 0xe000000b
lea ecx, [ebp - 0x25c]
call fcn.004208a0
mov dword [ebp - 0x278], eax
call fcn.00403d50
mov ecx, eax
test ecx, ecx
je 0x454b22
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x260], eax
mov byte [ebp - 4], 0x3a
lea ecx, [ebp - 0x260]
push 0
push 0x4a85e8
call fcn.004023a0
push ecx
push dword [ebp - 0x278]
lea eax, [ebp - 0x260]
push ecx
mov ecx, dword [ebp - 0x264]
push eax
call fcn.00420d60
mov byte [ebp - 4], 0x37
mov eax, edi
mov edx, dword [ebp - 0x260]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x454a95
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xb
mov eax, edi
mov edx, dword [ebp - 0x25c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x454ab6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor al, al
mov dword [ebp - 0x24c], eax
jmp 0x45495f
push 0x80004005
call fcn.004024c0
push 0x80004005
call fcn.004024c0
call fcn.004024e0
push 0x80004005
call fcn.004024c0
push 0x80004005
call fcn.004024c0
push 0x80004005
call fcn.004024c0
push 0x80004005
call fcn.004024c0
push 0x80004005
call fcn.004024c0
push 0x80004005
call fcn.004024c0
push 0x80004005
call fcn.004024c0
push 0x80004005
call fcn.004024c0
int3