Function at 0x422ad0
Capabilities:
Enumerate services
Start service

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5251e6
mov eax, dword fs:[0]
push eax
sub esp, 0x388
push ebx
push esi
push edi
push ecx
lea edi, [ebp - 0x394]
mov ecx, 0xe2
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
pop ecx
mov eax, dword [0x57a2c4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x24], 1
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp esi, esp
call fcn.0049a060
mov dword [ebp - 0x30], eax
mov esi, esp
push 0xf003f
push 0
mov ecx, dword [ebp - 0x18]
add ecx, 4
call fcn.00401127
push eax
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
cmp esi, esp
call fcn.0049a060
push eax
lea ecx, [ebp - 0x3c]
call fcn.0040151e
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x3c]
call fcn.00401686
test eax, eax
je 0x422b78
mov dword [ebp - 0x394], 1
jmp 0x422b82
mov dword [ebp - 0x394], 0
mov eax, dword [ebp - 0x394]
mov dword [ebp - 0x48], eax
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0049a060
push eax
call fcn.004014d8
add esp, 4
mov dword [ebp - 0x54], eax
cmp dword [ebp - 0x48], 0
je 0x422bc1
mov eax, str.hSCM
test eax, eax
je 0x422bc1
mov dword [ebp - 0x394], 1
jmp 0x422bcb
mov dword [ebp - 0x394], 0
mov ecx, dword [ebp - 0x394]
mov dword [ebp - 0x60], ecx
cmp dword [ebp - 0x60], 0
jne 0x422c02
mov eax, dword [ebp - 0x54]
push eax
lea ecx, [ebp - 0x380]
call fcn.00401cb7
mov ecx, dword [eax]
mov dword [ebp - 0x38c], ecx
push 0x56a314
lea edx, [ebp - 0x38c]
push edx
call fcn.0049a0a0
xor eax, eax
jne 0x422ba6
xor eax, eax
jne 0x422b60
mov eax, dword [ebp + 0x14]
or eax, 4
mov dword [ebp + 0x14], eax
cmp dword [ebp + 0x18], 1
jne 0x422c26
mov eax, dword [ebp + 0x14]
or eax, 8
mov dword [ebp + 0x14], eax
mov esi, esp
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp - 0x18]
call fcn.00401127
push eax
lea ecx, [ebp - 0x3c]
call fcn.00401686
push eax
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
cmp esi, esp
call fcn.0049a060
push eax
lea ecx, [ebp - 0x6c]
call fcn.0040151e
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x6c]
call fcn.00401686
test eax, eax
je 0x422c70
mov dword [ebp - 0x394], 1
jmp 0x422c7a
mov dword [ebp - 0x394], 0
mov eax, dword [ebp - 0x394]
mov dword [ebp - 0x78], eax
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0049a060
push eax
call fcn.004014d8
add esp, 4
mov dword [ebp - 0x84], eax
cmp dword [ebp - 0x78], 0
je 0x422cbc
mov eax, str.hService
test eax, eax
je 0x422cbc
mov dword [ebp - 0x394], 1
jmp 0x422cc6
mov dword [ebp - 0x394], 0
mov ecx, dword [ebp - 0x394]
mov dword [ebp - 0x90], ecx
cmp dword [ebp - 0x90], 0
jne 0x422d06
mov eax, dword [ebp - 0x84]
push eax
lea ecx, [ebp - 0x368]
call fcn.00401cb7
mov ecx, dword [eax]
mov dword [ebp - 0x374], ecx
push 0x56a314
lea edx, [ebp - 0x374]
push edx
call fcn.0049a0a0
xor eax, eax
jne 0x422ca1
xor eax, eax
jne 0x422c58
mov dword [ebp - 0xb4], 0
xor eax, eax
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xac], eax
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0xa4], eax
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x9c], eax
lea ecx, [ebp - 0xc0]
call fcn.0040205e
mov byte [ebp - 4], 2
cmp dword [ebp + 0x18], 1
jne 0x4231e2
mov esi, esp
lea eax, [ebp - 0xd8]
push eax
lea ecx, [ebp - 0xcc]
push ecx
push 0
lea ecx, [ebp - 0xc0]
call fcn.00401c44
push eax
push 1
lea ecx, [ebp - 0x6c]
call fcn.00401686
push eax
call dword [sym.imp.ADVAPI32.dll_EnumDependentServicesW]
cmp esi, esp
call fcn.0049a060
test eax, eax
jne 0x4231e2
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0049a060
cmp eax, 0xea
jne 0x422dbb
mov dword [ebp - 0x394], 1
jmp 0x422dc5
mov dword [ebp - 0x394], 0
mov eax, dword [ebp - 0x394]
mov dword [ebp - 0xe4], eax
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0049a060
push eax
call fcn.004014d8
add esp, 4
mov dword [ebp - 0xf0], eax
cmp dword [ebp - 0xe4], 0
je 0x422e0d
mov eax, str.GetLastError____234L
test eax, eax
je 0x422e0d
mov dword [ebp - 0x394], 1
jmp 0x422e17
mov dword [ebp - 0x394], 0
mov ecx, dword [ebp - 0x394]
mov dword [ebp - 0xfc], ecx
cmp dword [ebp - 0xfc], 0
jne 0x422e57
mov eax, dword [ebp - 0xf0]
push eax
lea ecx, [ebp - 0x350]
call fcn.00401cb7
mov ecx, dword [eax]
mov dword [ebp - 0x35c], ecx
push 0x56a314
lea edx, [ebp - 0x35c]
push edx
call fcn.0049a0a0
xor eax, eax
jne 0x422def
xor eax, eax
jne 0x422d99
mov eax, dword [ebp - 0xcc]
push eax
call fcn.0045c620
add esp, 4
mov dword [ebp - 0x344], eax
mov ecx, dword [ebp - 0x344]
push ecx
lea ecx, [ebp - 0xc0]
call fcn.00401924
mov esi, esp
lea eax, [ebp - 0xd8]
push eax
lea ecx, [ebp - 0xcc]
push ecx
mov edx, dword [ebp - 0xcc]
push edx
lea ecx, [ebp - 0xc0]
call fcn.00401c44
push eax
push 1
lea ecx, [ebp - 0x6c]
call fcn.00401686
push eax
call dword [sym.imp.ADVAPI32.dll_EnumDependentServicesW]
cmp esi, esp
call fcn.0049a060
test eax, eax
je 0x422ed5
mov dword [ebp - 0x394], 1
jmp 0x422edf
mov dword [ebp - 0x394], 0
mov eax, dword [ebp - 0x394]
mov dword [ebp - 0x108], eax
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0049a060
push eax
call fcn.004014d8
add esp, 4
mov dword [ebp - 0x114], eax
cmp dword [ebp - 0x108], 0
je 0x422f27
mov eax, str.::EnumDependentServicesW_hService__0x00000001__pDependencies__dwBytesNeeded__dwBytesNeeded__dwCount_
test eax, eax
je 0x422f27
mov dword [ebp - 0x394], 1
jmp 0x422f31
mov dword [ebp - 0x394], 0
mov ecx, dword [ebp - 0x394]
mov dword [ebp - 0x120], ecx
cmp dword [ebp - 0x120], 0
jne 0x422f71
mov eax, dword [ebp - 0x114]
push eax
lea ecx, [ebp - 0x32c]
call fcn.00401cb7
mov ecx, dword [eax]
mov dword [ebp - 0x338], ecx
push 0x56a314
lea edx, [ebp - 0x338]
push edx
call fcn.0049a0a0
xor eax, eax
jne 0x422f09
xor eax, eax
jne 0x422e8a
mov dword [ebp - 0x12c], 0
jmp 0x422f98
mov eax, dword [ebp - 0x12c]
add eax, 1
mov dword [ebp - 0x12c], eax
mov eax, dword [ebp - 0x12c]
cmp eax, dword [ebp - 0xd8]
jae 0x4231e2
lea ecx, [ebp - 0xc0]
call fcn.00401c44
imul ecx, dword [ebp - 0x12c], 0x24
add eax, ecx
mov ecx, 9
mov esi, eax
lea edi, [ebp - 0x158]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 0x14]
and eax, 0xfffffff7
mov esi, esp
push eax
mov ecx, dword [ebp - 0x158]
push ecx
lea ecx, [ebp - 0x3c]
call fcn.00401686
push eax
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
cmp esi, esp
call fcn.0049a060
push eax
lea ecx, [ebp - 0x164]
call fcn.0040151e
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x164]
call fcn.00401686
test eax, eax
je 0x42301e
mov dword [ebp - 0x394], 1
jmp 0x423028
mov dword [ebp - 0x394], 0
mov eax, dword [ebp - 0x394]
mov dword [ebp - 0x170], eax
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0049a060
push eax
call fcn.004014d8
add esp, 4
mov dword [ebp - 0x17c], eax
cmp dword [ebp - 0x170], 0
je 0x423070
mov eax, str.hDepService
test eax, eax
je 0x423070
mov dword [ebp - 0x394], 1
jmp 0x42307a
mov dword [ebp - 0x394], 0
mov ecx, dword [ebp - 0x394]
mov dword [ebp - 0x188], ecx
cmp dword [ebp - 0x188], 0
jne 0x4230ba
mov eax, dword [ebp - 0x17c]
push eax
lea ecx, [ebp - 0x314]
call fcn.00401cb7
mov ecx, dword [eax]
mov dword [ebp - 0x320], ecx
push 0x56a314
lea edx, [ebp - 0x320]
push edx
call fcn.0049a0a0
xor eax, eax
jne 0x423052
xor eax, eax
jne 0x423003
mov esi, esp
lea eax, [ebp - 0xb4]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
lea ecx, [ebp - 0x164]
call fcn.00401686
push eax
call dword [sym.imp.ADVAPI32.dll_ControlService]
cmp esi, esp
call fcn.0049a060
test eax, eax
je 0x4230fc
mov dword [ebp - 0x394], 1
jmp 0x423106
mov dword [ebp - 0x394], 0
mov edx, dword [ebp - 0x394]
mov dword [ebp - 0x194], edx
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0049a060
push eax
call fcn.004014d8
add esp, 4
mov dword [ebp - 0x1a0], eax
cmp dword [ebp - 0x194], 0
je 0x42314e
mov eax, str.::ControlService_hDepService__dwControl__status_
test eax, eax
je 0x42314e
mov dword [ebp - 0x394], 1
jmp 0x423158
mov dword [ebp - 0x394], 0
mov ecx, dword [ebp - 0x394]
mov dword [ebp - 0x1ac], ecx
cmp dword [ebp - 0x1ac], 0
jne 0x423198
mov eax, dword [ebp - 0x1a0]
push eax
lea ecx, [ebp - 0x2fc]
call fcn.00401cb7
mov ecx, dword [eax]
mov dword [ebp - 0x308], ecx
push 0x56a314
lea edx, [ebp - 0x308]
push edx
call fcn.0049a0a0
xor eax, eax
jne 0x423130
xor eax, eax
jne 0x4230c6
lea eax, [ebp - 0xb4]
push eax
mov ecx, dword [ebp + 8]
push ecx
mov edx, dword [ebp - 0x30]
push edx
mov eax, dword [ebp + 0x18]
push eax
lea ecx, [ebp - 0x164]
call fcn.00401686
push eax
mov ecx, dword [ebp - 0x18]
call fcn.00401abe
mov dword [ebp - 0x24], eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x164]
call fcn.00401bcc
jmp 0x422f89
cmp dword [ebp + 0xc], 0
je 0x4232e9
mov esi, esp
mov eax, dword [ebp + 0x20]
push eax
mov ecx, dword [ebp + 0x1c]
push ecx
lea ecx, [ebp - 0x6c]
call fcn.00401686
push eax
call dword [sym.imp.ADVAPI32.dll_StartServiceW]
cmp esi, esp
call fcn.0049a060
test eax, eax
je 0x42321c
mov dword [ebp - 0x394], 1
jmp 0x423226
mov dword [ebp - 0x394], 0
mov edx, dword [ebp - 0x394]
mov dword [ebp - 0x1b8], edx
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0049a060
push eax
call fcn.004014d8
add esp, 4
mov dword [ebp - 0x1c4], eax
cmp dword [ebp - 0x1b8], 0
je 0x42326e
mov eax, str.::StartServiceW_hService__dwArgc__lpszArgv_
test eax, eax
je 0x42326e
mov dword [ebp - 0x394], 1
jmp 0x423278
mov dword [ebp - 0x394], 0
mov ecx, dword [ebp - 0x394]
mov dword [ebp - 0x1d0], ecx
cmp dword [ebp - 0x1d0], 0
jne 0x4232b8
mov eax, dword [ebp - 0x1c4]
push eax
lea ecx, [ebp - 0x2e4]
call fcn.00401cb7
mov ecx, dword [eax]
mov dword [ebp - 0x2f0], ecx
push 0x56a314
lea edx, [ebp - 0x2f0]
push edx
call fcn.0049a0a0
xor eax, eax
jne 0x423250
xor eax, eax
jne 0x4231ec
mov dword [ebp - 0xb0], 2
mov dword [ebp - 0xa0], 0
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x9c], eax
jmp 0x4233c4
mov esi, esp
lea eax, [ebp - 0xb4]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
lea ecx, [ebp - 0x6c]
call fcn.00401686
push eax
call dword [sym.imp.ADVAPI32.dll_ControlService]
cmp esi, esp
call fcn.0049a060
test eax, eax
je 0x42331c
mov dword [ebp - 0x394], 1
jmp 0x423326
mov dword [ebp - 0x394], 0
mov edx, dword [ebp - 0x394]
mov dword [ebp - 0x1dc], edx
mov esi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, esp
call fcn.0049a060
push eax
call fcn.004014d8
add esp, 4
mov dword [ebp - 0x1e8], eax
cmp dword [ebp - 0x1dc], 0
je 0x42336e
mov eax, str.::ControlService_hService__dwControl__status_
test eax, eax
je 0x42336e
mov dword [ebp - 0x394], 1
jmp 0x423378
mov dword [ebp - 0x394], 0
mov ecx, dword [ebp - 0x394]
mov dword [ebp - 0x1f4], ecx
cmp dword [ebp - 0x1f4], 0
jne 0x4233b8
mov eax, dword [ebp - 0x1e8]
push eax
lea ecx, [ebp - 0x2cc]
call fcn.00401cb7
mov ecx, dword [eax]
mov dword [ebp - 0x2d8], ecx
push 0x56a314
lea edx, [ebp - 0x2d8]
push edx
call fcn.0049a0a0
xor eax, eax
jne 0x423350
xor eax, eax
jne 0x4232e9
lea eax, [ebp - 0xb4]
push eax
mov ecx, dword [ebp + 8]
push ecx
mov edx, dword [ebp - 0x30]
push edx
mov eax, dword [ebp + 0x18]
push eax
lea ecx, [ebp - 0x6c]
call fcn.00401686
push eax
mov ecx, dword [ebp - 0x18]
call fcn.00401abe
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x2c0], eax
mov byte [ebp - 4], 1
lea ecx, [ebp - 0xc0]
call fcn.004019b0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x6c]
call fcn.00401bcc
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x3c]
call fcn.00401bcc
mov eax, dword [ebp - 0x2c0]
push edx
mov ecx, ebp
push eax
lea edx, [0x423460]
call fcn.0049a000
pop eax
pop edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0049a090
add esp, 0x394
cmp ebp, esp
call fcn.0049a060
mov esp, ebp
pop ebp
ret 0x1c