Function at 0x4466a4
Capabilities:
Modify service

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x24], ebx
mov esi, ecx
mov dword [ebp - 4], edx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrAddRef_qqrpv
xor eax, eax
push ebp
push 0x44694b
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov dword [ebp - 0x20], eax
mov byte [ebp - 0x1c], 0x11
mov eax, esi
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x24]
call sub.rtl160.bpl__System_Sysutils_IntToStr_qqrj
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x14], 0x11
lea eax, [ebp - 0x20]
push eax
push 1
mov eax, dword [ebp - 8]
call sub.rtl160.bpl__System_TObject_ClassType_qqrv
push eax
mov eax, dword [0x461c8c]
mov eax, dword [eax]
mov ecx, 0x446968
mov dl, 3
call fcn.00405f38
xor eax, eax
push ebp
push 0x446926
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
call sub.rtl160.bpl__System_TObject_ClassType_qqrv
push eax
mov eax, dword [0x461c8c]
mov eax, dword [eax]
mov ecx, 0x4469a4
mov dl, 3
call fcn.00405c78
push 0xf003f
push 0
push 0
call sub.advapi32.dll_OpenSCManagerW
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x446764
call sub.kernel32.dll_GetLastError_1
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0044617c
xor eax, eax
push ebp
push 0x4468f2
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
call sub.rtl160.bpl__System_TObject_ClassType_qqrv
push eax
mov eax, dword [0x461c8c]
mov eax, dword [eax]
mov ecx, 0x4469c8
mov dl, 3
call fcn.00405c78
push 0x77
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.advapi32.dll_OpenServiceW
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x4467ba
call sub.kernel32.dll_GetLastError_1
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0044617c
xor eax, eax
push ebp
push 0x4468d4
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
call fcn.00449280
cmp esi, eax
je 0x4468bd
mov eax, dword [ebp - 8]
call sub.rtl160.bpl__System_TObject_ClassType_qqrv
push eax
mov eax, dword [0x461c8c]
mov eax, dword [eax]
mov ecx, 0x4469f4
mov dl, 3
call fcn.00405c78
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push esi
push 0xffffffffffffffff
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_ChangeServiceConfigW
test eax, eax
jne 0x446826
call sub.kernel32.dll_GetLastError_1
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0044617c
mov eax, dword [ebp - 8]
call sub.rtl160.bpl__System_TObject_ClassType_qqrv
push eax
mov eax, dword [0x461c8c]
mov eax, dword [eax]
mov ecx, 0x446a34
mov dl, 3
call fcn.00405c78
call sub.kernel32.dll_GetTickCount
mov edi, eax
xor ebx, ebx
jmp 0x44685d
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
call fcn.00449280
cmp esi, eax
sete bl
call sub.kernel32.dll_GetTickCount
lea edx, [edi + 0xea60]
cmp eax, edx
ja 0x446870
test bl, bl
je 0x44684d
test bl, bl
jne 0x446883
call sub.kernel32.dll_GetLastError_1
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0044617c
mov eax, dword [ebp - 8]
call sub.rtl160.bpl__System_TObject_ClassType_qqrv
push eax
mov eax, dword [0x461c8c]
mov eax, dword [eax]
mov ecx, 0x446a80
mov dl, 3
call fcn.00405c78
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 8]
call fcn.004496ec
test al, al
jne 0x4468bd
call sub.kernel32.dll_GetLastError_1
mov edx, eax
mov eax, dword [ebp - 4]
call fcn.0044617c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4468db
mov eax, dword [ebp - 0x10]
push eax
call sub.advapi32.dll_CloseServiceHandle
ret