Function at 0x23a0caf0
Capabilities:
Modify service

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x23bdcf90
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [0x23c68938]
xor eax, esp
push eax
lea eax, [esp + 0x28]
mov dword fs:[0], eax
push 0xf003f
push 0
push 0
mov dword [esp + 0x3c], 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov edi, eax
mov dword [esp + 0x18], edi
test edi, edi
jne 0x23a0cb58
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
push esi
push 0x23c41734
call dword [0x23c41f24]
add esp, 8
test esi, esi
jne 0x23a0cbc9
mov dword [esp + 0x20], edi
mov ebx, dword [ebp + 8]
push 0xf01ff
push ebx
push edi
mov byte [esp + 0x3c], 1
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov esi, eax
mov dword [esp + 0x1c], esi
test esi, esi
jne 0x23a0cbe2
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
push esi
push 0xf01ff
push ebx
push str.OpenService___s___0x_08X__failed_with_0x_08X_error
call dword [0x23c41f28]
add esp, 0x10
test esi, esi
je 0x23a0cbde
mov dword [esp + 0x30], 0xffffffff
test edi, edi
je 0x23a0cbc9
push edi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test eax, eax
jne 0x23a0cbc9
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push edi
push str.CloseServiceHandle_m_hServiceManager__0x_08X__failed_with_0x_08X_error
call dword [0x23c41f24]
add esp, 0xc
mov eax, esi
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [esp + 0x1c]
mov ecx, dword [ebp + 0x18]
mov edx, 0x10
test ecx, ecx
je 0x23a0cbf4
cmp word [ecx], 0
jne 0x23a0cbf9
mov edx, 0x110
mov ebx, dword [ebp + 0x10]
xor eax, eax
cmp byte [ebp + 0x20], al
push ebx
sete al
add eax, 2
push eax
push edx
mov edx, dword [ebp + 0x14]
lea eax, [esp + 0x28]
push eax
mov eax, dword [ebp + 0x1c]
call fcn.23a0c640
mov ebx, eax
lea edx, [esp + 0x1c]
mov dword [esp + 0x10], ebx
call fcn.23a0c7a0
test ebx, ebx
jne 0x23a0cc31
mov dword [esp + 0x10], eax
mov ecx, dword [ebp + 0xc]
lea edx, [esp + 0x14]
push edx
push 1
push esi
mov dword [esp + 0x20], ecx
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2W]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x23a0cc54
xor eax, eax
jmp 0x23a0cc6d
call ebx
mov esi, eax
push esi
push str.ChangeServiceConfig2_SERVICE_CONFIG_DESCRIPTION__failed_with_0x_08X_error
call dword [0x23c41f24]
mov eax, esi
mov esi, dword [esp + 0x24]
add esp, 8
cmp dword [esp + 0x10], 0
jne 0x23a0cc78
mov dword [esp + 0x10], eax
mov byte [esp + 0x30], 0
test esi, esi
je 0x23a0cc9e
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test eax, eax
jne 0x23a0cc9e
call ebx
push eax
push esi
push str.CloseServiceHandle_m_hService__0x_08X__failed_with_0x_08X_error
call dword [0x23c41f24]
add esp, 0xc
mov dword [esp + 0x30], 0xffffffff
test edi, edi
je 0x23a0ccc7
push edi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test eax, eax
jne 0x23a0ccc7
call ebx
push eax
push edi
push str.CloseServiceHandle_m_hServiceManager__0x_08X__failed_with_0x_08X_error
call dword [0x23c41f24]
add esp, 0xc
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret