Function at 0x452bb0
Capabilities:
Start service

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x492f10
mov eax, dword fs:[0]
push eax
sub esp, 0x280
mov eax, dword [0x4c0074]
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 - 0x278], 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 - 0x250], eax
je 0x453416
call fcn.0041e1d0
or edi, 0xffffffff
mov al, byte [eax + 0x1c]
test al, al
je 0x452cf5
call fcn.0041e1d0
test byte [eax + 0x20], 8
je 0x452cf5
call fcn.0041e1d0
mov esi, eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x45354d
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x254], eax
mov dword [ebp - 4], 2
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x453557
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x254]
push 0x20
push str.Installing_using_helper_service.
call fcn.00402280
push 0
push 0x4a4fb8
lea ecx, [ebp - 0x24c]
call fcn.00402280
push ecx
lea eax, [ebp - 0x254]
push eax
push ecx
lea eax, [ebp - 0x24c]
mov ecx, esi
push eax
call fcn.0041e320
mov byte [ebp - 4], 2
mov eax, edi
mov edx, dword [ebp - 0x24c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x452cd1
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 - 0x254]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x452cf5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x278]
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 0x452d2b
cmp ecx, dword [esi]
jne 0x452d2b
lock inc dword [eax]
jmp 0x452d68
mov eax, dword [ecx]
lea edx, [esi + 4]
push 2
push dword [edx]
mov dword [ebp - 0x270], edx
mov eax, dword [eax]
call eax
mov esi, eax
test esi, esi
je 0x453561
mov ecx, dword [ebp - 0x270]
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.004023d0
add esp, 8
add esi, 0x10
mov dword [ebp - 0x28c], esi
mov dword [ebp - 4], 0xb
cmp dword [esi - 0xc], 0
je 0x453433
call fcn.0041e1d0
mov al, byte [eax + 0x1c]
test al, al
je 0x452e73
call fcn.0041e1d0
test byte [eax + 0x20], 8
je 0x452e73
call fcn.0041e1d0
mov dword [ebp - 0x268], eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x453566
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0xe
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x453570
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x254], eax
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x24c]
push 0x11
push str.Service_detected.
call fcn.00402280
push 0
push 0x4a4fb8
lea ecx, [ebp - 0x254]
call fcn.00402280
push ecx
lea eax, [ebp - 0x24c]
push eax
push ecx
mov ecx, dword [ebp - 0x268]
lea eax, [ebp - 0x254]
push eax
call fcn.0041e320
mov byte [ebp - 4], 0xe
mov eax, edi
mov edx, dword [ebp - 0x254]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x452e52
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 - 0x24c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x452e73
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x284], 0x4a5638
mov dword [ebp - fcn.00416e50], 0x4a562c
mov dword [ebp - 0x27c], esi
mov dword [ebp - 0x248], 0x4a5ec0
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 [0x4c1f74], eax
mov byte [ebp - 4], 0x17
lea ecx, [ebp - 0x260]
call fcn.004637b0
mov byte [ebp - 4], 0x18
lea eax, [ebp - 0x248]
push eax
lea eax, [ebp - 0x270]
push eax
call fcn.00453620
mov byte [ebp - 4], 0x19
lea ecx, [ebp - 0x248]
mov eax, dword [ebp - 0x260]
mov dword [ebp - 0x274], eax
lea eax, [ebp - 0x268]
push eax
push 4
push SysReAllocString
mov dword [ebp - 0x268], 0
call fcn.0041c680
mov dword [ebp - 0x268], eax
mov dword [ebp - 0x258], 0x4a5ec0
mov dword [ebp - 0x254], eax
mov byte [ebp - 4], 0x1a
test eax, eax
jne 0x452f75
mov byte [ebp - 4], 0x19
mov dword [ebp - 0x258], 0x4a5ec0
jmp 0x452fa1
push 1
push eax
call fcn.0041c910
mov byte [ebp - 4], 0x19
push dword [ebp - 0x268]
mov dword [ebp - 0x258], 0x4a5ec0
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x254], 0
lea eax, [ebp - 0x254]
mov dword [ebp - 0x254], 0
push eax
push 0x14
push SysReAllocString
lea ecx, [ebp - 0x248]
call fcn.0041c680
mov dword [ebp - 0x24c], eax
mov dword [ebp - 0x26c], 0x4a5ec0
mov dword [ebp - 0x268], eax
mov byte [ebp - 4], 0x1b
test eax, eax
je 0x453030
lea ecx, [ebp - 0x274]
push ecx
push 1
push eax
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
je 0x45301c
mov byte [ebp - 4], 0x19
push dword [ebp - 0x24c]
mov dword [ebp - 0x26c], 0x4a5ec0
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x268], 0
jmp 0x45306c
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x254], eax
mov eax, dword [ebp - 0x24c]
jmp 0x45303c
mov ecx, dword [ebp - 0x254]
mov dword [ebp - 0x254], ecx
mov byte [ebp - 4], 0x19
mov dword [ebp - 0x26c], 0x4a5ec0
test eax, eax
je 0x45305f
push eax
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x268], 0
cmp dword [ebp - 0x254], 0
jne 0x45324a
call fcn.0041e1d0
mov al, byte [eax + 0x1c]
test al, al
je 0x45315d
call fcn.0041e1d0
test byte [eax + 0x20], 8
je 0x45315d
call fcn.0041e1d0
mov dword [ebp - 0x268], eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x45357a
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x1e
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x453584
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x254], eax
mov byte [ebp - 4], 0x21
lea ecx, [ebp - 0x24c]
push 0x10
push str.Service_started.
call fcn.00402280
push 0
push 0x4a4fb8
lea ecx, [ebp - 0x254]
call fcn.00402280
push ecx
lea eax, [ebp - 0x24c]
push eax
push ecx
mov ecx, dword [ebp - 0x268]
lea eax, [ebp - 0x254]
push eax
call fcn.0041e320
mov byte [ebp - 4], 0x1e
mov eax, edi
mov edx, dword [ebp - 0x254]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45313c
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 0x45315d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x270]
mov ecx, dword [ebp - 0x25c]
cmp dword [eax - 0xc], 0
cmove eax, dword [ebp - 0x260]
push eax
call fcn.00444cf0
test al, al
je 0x45337b
mov ecx, dword [ebp - 0x25c]
call fcn.00444f30
test al, al
je 0x45337b
mov ecx, dword [ebp - 0x25c]
call fcn.00443e00
test al, al
je 0x45337b
mov ecx, dword [ebp - 0x25c]
call fcn.00444850
test al, al
je 0x45337b
push 0x104
lea eax, [ebp - 0x218]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov ecx, dword [ebp - 0x250]
neg eax
sbb al, al
and cl, al
lea eax, [ebp - 0x218]
mov dword [ebp - 0x250], ecx
lea ecx, [ebp - 0x254]
push eax
call fcn.00403990
mov byte [ebp - 4], 0x26
lea ecx, [ebp - 0x254]
mov edx, dword [ebp - 0x278]
lea edx, [edx + 0x158]
call fcn.004634f0
test eax, eax
setne byte [ebp - 0x261]
mov byte [ebp - 4], 0x19
mov eax, edi
mov edx, dword [ebp - 0x254]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x453238
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x261], 0
je 0x453383
jmp 0x45337b
call fcn.0041e1d0
mov al, byte [eax + 0x1c]
test al, al
je 0x45337b
call fcn.0041e1d0
test byte [eax + 0x20], 1
je 0x45337b
call fcn.0041e1d0
mov dword [ebp - 0x268], eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x45358e
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x2a
lea ecx, [ebp - 0x250]
push 0x19
push str.Unable_to_start_service:
call fcn.00402280
mov ecx, esi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4532b0
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x250]
call fcn.00402280
push 0xc
push str._LastError:
lea ecx, [ebp - 0x250]
call fcn.00402280
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x453598
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x2d
lea ecx, [ebp - 0x24c]
push 0
push 0x4a4fb8
call fcn.00402280
push ecx
push dword [ebp - 0x254]
lea ecx, [ebp - 0x250]
call fcn.0041df70
push eax
push ecx
mov ecx, dword [ebp - 0x268]
lea eax, [ebp - 0x24c]
push eax
call fcn.0041e320
mov byte [ebp - 4], 0x2a
mov eax, edi
mov edx, dword [ebp - 0x24c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45335a
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 - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45337b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor cl, cl
mov dword [ebp - 0x250], ecx
mov byte [ebp - 4], 0x18
mov eax, edi
mov edx, dword [ebp - 0x270]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4533a4
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 0x4533c5
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], 0x4a5ec0
test eax, eax
je 0x4533ee
push eax
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x244], 0
mov eax, dword [ebp - 0x250]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], edi
dec edi
test edi, edi
jg 0x453416
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x250]
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.0046c8db
mov esp, ebp
pop ebp
ret 4
call fcn.0041e1d0
mov al, byte [eax + 0x1c]
test al, al
je 0x453540
call fcn.0041e1d0
test byte [eax + 0x20], 1
je 0x453540
call fcn.0041e1d0
mov dword [ebp - 0x274], eax
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x4535a2
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.00402280
push 0xc
push str._LastError:
lea ecx, [ebp - 0x25c]
call fcn.00402280
call fcn.00403f70
mov ecx, eax
test ecx, ecx
je 0x4535ac
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 0x4a4fb8
call fcn.00402280
push ecx
push 0xe000000b
lea ecx, [ebp - 0x25c]
call fcn.0041deb0
push eax
push ecx
mov ecx, dword [ebp - 0x274]
lea eax, [ebp - 0x260]
push eax
call fcn.0041e320
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 0x45351f
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 0x453540
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor al, al
mov dword [ebp - 0x250], eax
jmp 0x4533f4
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
call fcn.004023c0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
push 0x80004005
call fcn.004023a0
int3