Function at 0x45b2d0
Capabilities:
Start service

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4a5d55
mov eax, dword fs:[0]
push eax
sub esp, 0x278
mov eax, dword [0x4da064]
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 - 0x26c], ecx
mov ecx, dword [ecx + 0x94]
mov eax, dword [ebp + 8]
shr ecx, 7
and cl, 1
mov dword [ebp - 0x264], eax
mov dword [ebp - 0x258], ecx
je 0x45bb0e
call fcn.004262e0
or esi, 0xffffffff
cmp byte [eax + 0x1c], 0
je 0x45b415
call fcn.004262e0
test byte [eax + 0x20], 8
je 0x45b415
call fcn.004262e0
mov edi, eax
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov dword [ebp - 4], 2
lea ecx, [ebp - 0x24c]
push 0x20
push str.Installing_using_helper_service.
call fcn.00402030
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x250]
push 0
push 0x4bb6d8
call fcn.00402030
push ecx
lea eax, [ebp - 0x24c]
push eax
push ecx
lea eax, [ebp - 0x250]
mov ecx, edi
push eax
call fcn.00426590
mov byte [ebp - 4], 2
mov eax, esi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b3f1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov eax, esi
mov edx, dword [ebp - 0x24c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b415
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x26c]
lea ecx, [ebp - 0x268]
mov eax, dword [eax + 0x168]
add eax, 0x44
push eax
call fcn.00402250
mov dword [ebp - 4], 0xa
mov eax, dword [ebp - 0x268]
cmp dword [eax - 0xc], 0
je 0x45bb2d
call fcn.004262e0
cmp byte [eax + 0x1c], 0
je 0x45b52f
call fcn.004262e0
test byte [eax + 0x20], 8
je 0x45b52f
call fcn.004262e0
mov edi, eax
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0x250]
push 0x11
push str.Service_detected.
call fcn.00402030
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x24c]
push 0
push 0x4bb6d8
call fcn.00402030
push ecx
lea eax, [ebp - 0x250]
push eax
push ecx
lea eax, [ebp - 0x24c]
mov ecx, edi
push eax
call fcn.00426590
mov byte [ebp - 4], 0xd
mov eax, esi
mov edx, dword [ebp - 0x24c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b50e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, esi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b52f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x268]
mov dword [ebp - 0x280], 0x4bc014
mov dword [ebp - fcn.00418330], 0x4bc008
mov dword [ebp - 0x278], eax
mov dword [ebp - 0x248], 0x4bc8f8
mov dword [ebp - 0x244], 0
mov byte [ebp - 4], 0x15
lea eax, [ebp - 0x280]
mov dword [ebp - 0x220], eax
xorps xmm0, xmm0
lea eax, [ebp - 0x27c]
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 [0x4dc2e4], eax
mov byte [ebp - 4], 0x16
lea ecx, [ebp - 0x260]
call fcn.0046dca0
mov byte [ebp - 4], 0x17
lea eax, [ebp - 0x248]
push eax
lea eax, [ebp - 0x270]
push eax
call fcn.0045bcc0
mov byte [ebp - 4], 0x18
lea ecx, [ebp - 0x248]
mov eax, dword [ebp - 0x260]
mov dword [ebp - 0x274], eax
lea eax, [ebp - 0x24c]
push eax
push 4
push SysReAllocString
mov dword [ebp - 0x24c], 0
call fcn.0041d670
mov edi, eax
mov dword [ebp - 0x254], 0x4bc8f8
mov dword [ebp - 0x250], edi
mov byte [ebp - 4], 0x19
test edi, edi
jne 0x45b633
mov byte [ebp - 4], 0x18
mov dword [ebp - 0x254], 0x4bc8f8
jmp 0x45b65a
push 1
push edi
call fcn.0041d8e0
mov byte [ebp - 4], 0x18
push edi
mov dword [ebp - 0x254], 0x4bc8f8
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x250], 0
lea eax, [ebp - 0x24c]
mov dword [ebp - 0x24c], 0
push eax
push 0x14
push SysReAllocString
lea ecx, [ebp - 0x248]
call fcn.0041d670
mov edi, eax
mov dword [ebp - 0x254], 0x4bc8f8
mov dword [ebp - 0x250], edi
mov byte [ebp - 4], 0x1a
test edi, edi
je 0x45b6d4
lea eax, [ebp - 0x274]
push eax
push 1
push edi
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
je 0x45b6cc
mov byte [ebp - 4], 0x18
push edi
mov dword [ebp - 0x254], 0x4bc8f8
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x250], 0
jmp 0x45b711
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x45b6da
mov eax, dword [ebp - 0x24c]
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x18
mov dword [ebp - 0x254], 0x4bc8f8
test edi, edi
je 0x45b703
push edi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x250], 0
mov edi, dword [ebp - 0x24c]
test edi, edi
jne 0x45b92e
call fcn.004262e0
cmp byte [eax + 0x1c], 0
je 0x45b7f9
call fcn.004262e0
test byte [eax + 0x20], 8
je 0x45b7f9
call fcn.004262e0
mov edi, eax
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x1d
lea ecx, [ebp - 0x250]
push 0x10
push str.Service_started.
call fcn.00402030
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x20
lea ecx, [ebp - 0x24c]
push 0
push 0x4bb6d8
call fcn.00402030
push ecx
lea eax, [ebp - 0x250]
push eax
push ecx
lea eax, [ebp - 0x24c]
mov ecx, edi
push eax
call fcn.00426590
mov byte [ebp - 4], 0x1d
mov eax, esi
mov edx, dword [ebp - 0x24c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b7d8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x18
mov eax, esi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b7f9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x270]
mov edi, dword [ebp - 0x264]
mov ecx, edi
cmp dword [eax - 0xc], 0
cmove eax, dword [ebp - 0x260]
push eax
call fcn.0044f3a0
test al, al
je 0x45ba6d
mov ecx, edi
call fcn.0044f5d0
test al, al
je 0x45ba6d
mov ecx, edi
call fcn.0044e550
test al, al
je 0x45ba6d
mov ecx, edi
call fcn.0044ef10
test al, al
je 0x45ba6d
push 0x104
lea eax, [ebp - 0x218]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov ecx, dword [ebp - 0x258]
neg eax
sbb al, al
and cl, al
mov dword [ebp - 0x258], ecx
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x25
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x250]
call fcn.00406f20
test al, al
jne 0x45b8d7
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45b8b5
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x250]
call fcn.00407090
mov byte [ebp - 4], 0x26
lea ecx, [ebp - 0x250]
mov edx, dword [ebp - 0x26c]
lea edx, [edx + 0x160]
call fcn.0046da00
test eax, eax
setne byte [ebp - 0x259]
mov byte [ebp - 4], 0x18
mov eax, esi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45b91c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x259], 0
je 0x45ba75
jmp 0x45ba6d
call fcn.004262e0
cmp byte [eax + 0x1c], 0
je 0x45ba6d
call fcn.004262e0
test byte [eax + 0x20], 1
je 0x45ba6d
call fcn.004262e0
mov dword [ebp - 0x26c], eax
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x258], eax
mov byte [ebp - 4], 0x2a
lea ecx, [ebp - 0x258]
push 0x19
push str.Unable_to_start_service:
call fcn.00402030
mov eax, dword [ebp - 0x268]
test eax, eax
je 0x45b9c1
mov edx, eax
lea ecx, [edx + 2]
mov dword [ebp - 0x264], ecx
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x45b9a1
sub edx, dword [ebp - 0x264]
lea ecx, [ebp - 0x258]
sar edx, 1
push edx
push eax
call fcn.00402030
push 0xc
push str._LastError:
lea ecx, [ebp - 0x258]
call fcn.00402030
push edi
lea ecx, [ebp - 0x258]
call fcn.004260d0
mov edi, eax
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
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 0x4bb6d8
call fcn.00402030
push ecx
push edi
push ecx
mov ecx, dword [ebp - 0x26c]
lea eax, [ebp - 0x24c]
push eax
call fcn.00426590
mov byte [ebp - 4], 0x2a
mov eax, esi
mov edx, dword [ebp - 0x24c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45ba4c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x18
mov eax, esi
mov edx, dword [ebp - 0x258]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45ba6d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor cl, cl
mov dword [ebp - 0x258], ecx
mov byte [ebp - 4], 0x17
mov eax, esi
mov edx, dword [ebp - 0x270]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45ba96
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x16
mov eax, esi
mov edx, dword [ebp - 0x260]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bab7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x244]
mov dword [ebp - 0x248], 0x4bc8f8
test eax, eax
je 0x45bae0
push eax
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x244], 0
mov ecx, dword [ebp - 0x258]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], esi
dec esi
test esi, esi
jg 0x45bb0e
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [ebp - 0x258]
mov al, cl
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.0047615e
mov esp, ebp
pop ebp
ret 4
call fcn.004262e0
cmp byte [eax + 0x1c], 0
je 0x45bc3c
call fcn.004262e0
test byte [eax + 0x20], 1
je 0x45bc3c
call fcn.004262e0
mov edi, eax
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x37
lea ecx, [ebp - 0x250]
push 0x2e
push str.Support_service_not_configured_in_updates.ini.
call fcn.00402030
push 0xc
push str._LastError:
lea ecx, [ebp - 0x250]
call fcn.00402030
push 0xe000000b
lea ecx, [ebp - 0x250]
call fcn.00426010
mov dword [ebp - 0x264], eax
call fcn.004039e0
mov ecx, eax
test ecx, ecx
je 0x45bc49
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 0x4bb6d8
call fcn.00402030
push ecx
push dword [ebp - 0x264]
lea eax, [ebp - 0x260]
push ecx
push eax
mov ecx, edi
call fcn.00426590
mov byte [ebp - 4], 0x37
mov eax, esi
mov edx, dword [ebp - 0x260]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bc1b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
mov eax, esi
mov edx, dword [ebp - 0x250]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x45bc3c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor cl, cl
mov dword [ebp - 0x258], ecx
jmp 0x45bae6
push 0x80004005
call fcn.00402150
int3