Function at 0x46ce40
Capabilities:
Start service

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4da970
mov eax, dword fs:[0]
push eax
sub esp, 0x27c
mov eax, dword [0x515080]
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 - 0x274], ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x254], eax
mov eax, dword [ecx + 0x94]
shr eax, 7
and al, 1
mov dword [ebp - 0x250], eax
je 0x46d831
call fcn.0042b3e0
or edi, 0xffffffff
cmp byte [eax + 0x1c], 0
je 0x46cfcb
call fcn.0042b3e0
test byte [eax + 0x20], 8
je 0x46cfcb
call fcn.0042b3e0
mov dword [ebp - 0x268], eax
call fcn.004046f0
mov dword [ebp - 0x26c], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x26c]
call esi
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.004025b0
call fcn.004046f0
mov dword [ebp - 0x26c], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x26c]
call esi
add eax, 0x10
mov dword [ebp - 0x25c], eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x25c]
push 0
push 0x4ed694
call fcn.004025b0
push ecx
lea eax, [ebp - 0x24c]
push eax
push ecx
mov ecx, dword [ebp - 0x268]
lea eax, [ebp - 0x25c]
push eax
call fcn.0042b770
mov byte [ebp - 4], 2
mov eax, edi
mov ecx, dword [ebp - 0x25c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46cf9b
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
mov ecx, edi
call esi
or edi, 0xffffffff
mov dword [ebp - 4], 0xffffffff
mov eax, edi
mov ecx, dword [ebp - 0x24c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46cfcb
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
mov ecx, edi
call esi
mov eax, dword [ebp - 0x274]
mov eax, dword [eax + 0x168]
mov ecx, dword [eax + 0x44]
sub ecx, 0x10
call fcn.00402750
lea esi, [eax + 0x10]
mov dword [ebp - 0x288], esi
mov dword [ebp - 4], 0xb
cmp dword [esi - 0xc], 0
je 0x46d84e
call fcn.0042b3e0
cmp byte [eax + 0x1c], 0
je 0x46d13e
call fcn.0042b3e0
test byte [eax + 0x20], 8
je 0x46d13e
call fcn.0042b3e0
mov dword [ebp - 0x258], eax
call fcn.004046f0
mov dword [ebp - 0x24c], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x24c]
call edi
add eax, 0x10
mov dword [ebp - 0x25c], eax
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x25c]
push 0x11
push str.Service_detected.
call fcn.004025b0
call fcn.004046f0
mov dword [ebp - 0x24c], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x24c]
call edi
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x24c]
push 0
push 0x4ed694
call fcn.004025b0
push ecx
lea eax, [ebp - 0x25c]
push eax
push ecx
mov ecx, dword [ebp - 0x258]
lea eax, [ebp - 0x24c]
push eax
call fcn.0042b770
mov byte [ebp - 4], 0xe
or eax, 0xffffffff
mov ecx, dword [ebp - 0x24c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d106
mov eax, dword [ecx]
mov dword [ebp - 0x258], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x258]
call edi
mov byte [ebp - 4], 0xb
or eax, 0xffffffff
mov ecx, dword [ebp - 0x25c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d13e
mov eax, dword [ecx]
mov dword [ebp - 0x258], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x258]
call edi
mov dword [ebp - 0x280], 0x4efb88
mov dword [ebp - fcn.0041ba20], 0x4efb7c
mov dword [ebp - 0x278], esi
mov dword [ebp - 0x248], 0x4f04a8
mov dword [ebp - 0x244], 0
mov byte [ebp - 4], 0x16
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 [0x517c64], eax
mov byte [ebp - 4], 0x17
lea ecx, [ebp - 0x268]
call fcn.00482c30
mov byte [ebp - 4], 0x18
lea eax, [ebp - 0x248]
push eax
lea eax, [ebp - 0x26c]
push eax
call fcn.0046da30
mov byte [ebp - 4], 0x19
lea ecx, [ebp - 0x248]
mov eax, dword [ebp - 0x268]
mov dword [ebp - 0x270], eax
lea eax, [ebp - 0x258]
push eax
push 4
push SysReAllocString
mov dword [ebp - 0x258], 0
call fcn.00421890
mov edi, eax
mov dword [ebp - 0x264], 0x4f04a8
mov dword [ebp - 0x260], edi
mov byte [ebp - 4], 0x1a
test edi, edi
jne 0x46d23c
mov byte [ebp - 4], 0x19
mov dword [ebp - 0x264], 0x4f04a8
jmp 0x46d263
push 1
push edi
call fcn.00421b70
mov byte [ebp - 4], 0x19
push edi
mov dword [ebp - 0x264], 0x4f04a8
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x260], 0
lea eax, [ebp - 0x24c]
mov dword [ebp - 0x24c], 0
push eax
push 0x14
push SysReAllocString
lea ecx, [ebp - 0x248]
call fcn.00421890
mov edi, eax
mov dword [ebp - 0x264], 0x4f04a8
mov dword [ebp - 0x260], edi
mov byte [ebp - 4], 0x1b
test edi, edi
je 0x46d2dd
lea eax, [ebp - 0x270]
push eax
push 1
push edi
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
test eax, eax
je 0x46d2d5
mov byte [ebp - 4], 0x19
push edi
mov dword [ebp - 0x264], 0x4f04a8
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x260], 0
jmp 0x46d319
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x46d2e3
mov eax, dword [ebp - 0x24c]
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x19
mov dword [ebp - 0x264], 0x4f04a8
test edi, edi
je 0x46d30c
push edi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x260], 0
cmp dword [ebp - 0x24c], 0
jne 0x46d5ce
call fcn.0042b3e0
cmp byte [eax + 0x1c], 0
je 0x46d45b
call fcn.0042b3e0
test byte [eax + 0x20], 8
je 0x46d45b
call fcn.0042b3e0
mov dword [ebp - 0x260], eax
call fcn.004046f0
mov dword [ebp - 0x258], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x258]
call edi
add eax, 0x10
mov dword [ebp - 0x25c], eax
mov byte [ebp - 4], 0x1e
lea ecx, [ebp - 0x25c]
push 0x10
push str.Service_started.
call fcn.004025b0
call fcn.004046f0
mov dword [ebp - 0x258], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x258]
call edi
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x21
lea ecx, [ebp - 0x24c]
push 0
push 0x4ed694
call fcn.004025b0
push ecx
lea eax, [ebp - 0x25c]
push eax
push ecx
mov ecx, dword [ebp - 0x260]
lea eax, [ebp - 0x24c]
push eax
call fcn.0042b770
mov byte [ebp - 4], 0x1e
or eax, 0xffffffff
mov ecx, dword [ebp - 0x24c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d423
mov eax, dword [ecx]
mov dword [ebp - 0x260], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x260]
call edi
mov byte [ebp - 4], 0x19
or eax, 0xffffffff
mov ecx, dword [ebp - 0x25c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d45b
mov eax, dword [ecx]
mov dword [ebp - 0x260], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x260]
call edi
mov eax, dword [ebp - 0x26c]
mov edi, dword [ebp - 0x254]
mov ecx, edi
cmp dword [eax - 0xc], 0
cmove eax, dword [ebp - 0x268]
push eax
call fcn.0045e960
test al, al
je 0x46d759
mov ecx, edi
call fcn.0045ebc0
test al, al
je 0x46d759
mov ecx, edi
call fcn.0045dcc0
test al, al
je 0x46d759
mov ecx, edi
call fcn.0045e7b0
test al, al
je 0x46d759
push 0x104
lea eax, [ebp - 0x218]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov ecx, eax
mov eax, dword [ebp - 0x250]
neg ecx
sbb cl, cl
and cl, al
mov dword [ebp - 0x260], ecx
call fcn.004046f0
mov dword [ebp - 0x254], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x26
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x250]
call fcn.00403700
test al, al
jne 0x46d552
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46d530
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x250]
call fcn.00403890
mov byte [ebp - 4], 0x27
lea ecx, [ebp - 0x250]
mov edx, dword [ebp - 0x274]
push 0
lea edx, [edx + 0x160]
call fcn.00482630
add esp, 4
mov dword [ebp - 0x258], eax
mov byte [ebp - 4], 0x19
or ecx, 0xffffffff
mov eax, dword [ebp - 0x250]
lea edx, [eax - 0x10]
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x46d5b0
mov eax, dword [edx]
mov dword [ebp - 0x254], eax
push edx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
cmp dword [ebp - 0x258], 0
mov al, byte [ebp - 0x260]
mov dword [ebp - 0x250], eax
je 0x46d761
jmp 0x46d759
call fcn.0042b3e0
cmp byte [eax + 0x1c], 0
je 0x46d759
call fcn.0042b3e0
test byte [eax + 0x20], 1
je 0x46d759
call fcn.0042b3e0
mov dword [ebp - 0x258], eax
call fcn.004046f0
mov dword [ebp - 0x254], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x2b
lea ecx, [ebp - 0x250]
push 0x19
push str.Unable_to_start_service:
call fcn.004025b0
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46d643
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x250]
call fcn.004025b0
push 0xc
push str._LastError:
lea ecx, [ebp - 0x250]
call fcn.004025b0
push dword [ebp - 0x24c]
lea ecx, [ebp - 0x250]
call fcn.0042b090
mov dword [ebp - 0x260], eax
call fcn.004046f0
mov dword [ebp - 0x254], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 0x2e
lea ecx, [ebp - 0x24c]
push 0
push 0x4ed694
call fcn.004025b0
push ecx
push dword [ebp - 0x260]
lea eax, [ebp - 0x24c]
push ecx
mov ecx, dword [ebp - 0x258]
push eax
call fcn.0042b770
mov byte [ebp - 4], 0x2b
or eax, 0xffffffff
mov ecx, dword [ebp - 0x24c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d721
mov eax, dword [ecx]
mov dword [ebp - 0x254], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
mov byte [ebp - 4], 0x19
or eax, 0xffffffff
mov ecx, dword [ebp - 0x250]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d759
mov eax, dword [ecx]
mov dword [ebp - 0x254], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
xor al, al
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x18
or eax, 0xffffffff
mov ecx, dword [ebp - 0x26c]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d799
mov eax, dword [ecx]
mov dword [ebp - 0x254], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
mov byte [ebp - 4], 0x17
or eax, 0xffffffff
mov ecx, dword [ebp - 0x268]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d7d1
mov eax, dword [ecx]
mov dword [ebp - 0x254], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0x244]
mov dword [ebp - 0x248], 0x4f04a8
test eax, eax
je 0x46d7fa
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
or ecx, 0xffffffff
lock xadd dword [esi + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x46d831
mov edi, dword [esi]
push esi
mov edx, dword [edi]
mov esi, dword [edx + 4]
mov ecx, esi
call dword [0x4e2514]
mov ecx, edi
call esi
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.004a1bc0
mov esp, ebp
pop ebp
ret 4
call fcn.0042b3e0
cmp byte [eax + 0x1c], 0
je 0x46d9b7
call fcn.0042b3e0
test byte [eax + 0x20], 1
je 0x46d9b7
call fcn.0042b3e0
mov dword [ebp - 0x270], eax
call fcn.004046f0
mov dword [ebp - 0x254], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
add eax, 0x10
mov dword [ebp - 0x250], eax
mov byte [ebp - 4], 0x38
lea ecx, [ebp - 0x250]
push 0x2e
push str.Support_service_not_configured_in_updates.ini.
call fcn.004025b0
push 0xc
push str._LastError:
lea ecx, [ebp - 0x250]
call fcn.004025b0
push 0xe000000b
lea ecx, [ebp - 0x250]
call fcn.0042aed0
mov dword [ebp - 0x260], eax
call fcn.004046f0
mov dword [ebp - 0x254], eax
test eax, eax
je 0x46d9c4
mov eax, dword [eax]
mov edi, dword [eax + 0xc]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
add eax, 0x10
mov dword [ebp - 0x268], eax
mov byte [ebp - 4], 0x3b
lea ecx, [ebp - 0x268]
push 0
push 0x4ed694
call fcn.004025b0
push ecx
push dword [ebp - 0x260]
lea eax, [ebp - 0x268]
push ecx
mov ecx, dword [ebp - 0x270]
push eax
call fcn.0042b770
mov byte [ebp - 4], 0x38
or eax, 0xffffffff
mov ecx, dword [ebp - 0x268]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d97f
mov eax, dword [ecx]
mov dword [ebp - 0x254], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
mov byte [ebp - 4], 0xb
or eax, 0xffffffff
mov ecx, dword [ebp - 0x250]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46d9b7
mov eax, dword [ecx]
mov dword [ebp - 0x254], eax
push ecx
mov eax, dword [eax]
mov edi, dword [eax + 4]
mov ecx, edi
call dword [0x4e2514]
mov ecx, dword [ebp - 0x254]
call edi
xor al, al
mov dword [ebp - 0x250], eax
jmp 0x46d800
push 0x80004005
call fcn.00402720
int3