Function at 0x1400028e0
Capabilities:
Check if file exists
Get file attributes
Modify service

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x258
mov rbx, rcx
mov rax, qword [0x140036030]
xor rax, rsp
mov qword [rsp + 0x250], rax
lea rdx, [rsp + 0x40]
xor ecx, ecx
mov r8d, 0x105
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x140002963
lea rcx, [rsp + 0x40]
call qword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x1400029bf
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002be4
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_remove_file_spec_when_attempting_to_modify_service_description.____lu_
jmp 0x140002995
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002c25
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_obtain_module_filename_when_attempting_to_modify_service_description.____lu_
mov r8d, eax
call fcn.140008ed0
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.1400183f0
nop
add rsp, 0x258
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
lea rdx, str.updater.ini
lea rcx, [rsp + 0x40]
call fcn.140025890
test eax, eax
je 0x140002a1b
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x140002a52
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002c66
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.updater.ini_file_does_not_exist__will_not_modify_service_description.____lu_
jmp 0x140002995
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002ca7
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_append_updater.ini_filename_when_attempting_to_modify_service_description.____lu_
jmp 0x140002995
lea rsi, [rsp + 0x38]
mov qword [rsi], 0
lea rcx, [rsp + 0x40]
mov rdx, rsi
call fcn.140025a60
mov rsi, qword [rsi]
test eax, eax
je 0x140002ab1
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002ce8
lea rdx, str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.140008ed0
test rsi, rsi
jne 0x140002bd7
jmp 0x14000299d
cmp byte [rsi], 0
je 0x140002a72
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov r15, qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ecx, 0xfde9
xor edx, edx
mov r8, rsi
mov r9d, 0xffffffff
call r15
movsxd r12, eax
lea rax, [r12 + r12]
test r12d, r12d
mov r14, 0xffffffffffffffff
cmovns r14, rax
mov rcx, r14
call fcn.14000a428
mov rdi, rax
mov rcx, rax
xor edx, edx
mov r8, r14
call fcn.14000ba50
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], rdi
mov ecx, 0xfde9
xor edx, edx
mov r8, rsi
mov r9d, 0xffffffff
call r15
test eax, eax
je 0x140002b7e
lea r8, [rsp + 0x38]
mov qword [r8], rdi
mov rcx, rbx
mov edx, 1
call qword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2W]
mov ecx, dword [0x140038330]
mov edx, dword [0x140036d60]
mov r8, qword gs:[0x58]
mov rdx, qword [r8 + rdx*8]
mov edx, dword [rdx + 4]
test eax, eax
je 0x140002bb2
cmp ecx, edx
jg 0x140002d29
lea rdx, str.The_service_description_was_updated_successfully.
call fcn.140008dc0
jmp 0x140002bcf
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002d6a
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_convert_description_to_wide_string_format.____lu_
jmp 0x140002bc7
cmp ecx, edx
jg 0x140002dab
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_change_service_config.____lu_
mov r8d, eax
call fcn.140008ed0
mov rcx, rdi
call fcn.14000a430
mov rcx, rsi
call fcn.14000a430
jmp 0x14000299d
lea rcx, [0x140038330]
call fcn.14000a6f0
cmp dword [0x140038330], 0xffffffff
jne 0x140002954
mov qword [0x140038120], 0
lea rcx, [fcn.140001ef0]
call fcn.14000a888
lea rcx, [0x140038330]
call fcn.14000a758
jmp 0x140002954
lea rcx, [0x140038330]
call fcn.14000a6f0
cmp dword [0x140038330], 0xffffffff
jne 0x140002988
mov qword [0x140038120], 0
lea rcx, [fcn.140001ef0]
call fcn.14000a888
lea rcx, [0x140038330]
call fcn.14000a758
jmp 0x140002988
lea rcx, [0x140038330]
call fcn.14000a6f0
cmp dword [0x140038330], 0xffffffff
jne 0x140002a09
mov qword [0x140038120], 0
lea rcx, [fcn.140001ef0]
call fcn.14000a888
lea rcx, [0x140038330]
call fcn.14000a758
jmp 0x140002a09
lea rcx, [0x140038330]
call fcn.14000a6f0
cmp dword [0x140038330], 0xffffffff
jne 0x140002a40
mov qword [0x140038120], 0
lea rcx, [fcn.140001ef0]
call fcn.14000a888
lea rcx, [0x140038330]
call fcn.14000a758
jmp 0x140002a40
lea rcx, [0x140038330]
call fcn.14000a6f0
cmp dword [0x140038330], 0xffffffff
jne 0x140002a97
mov qword [0x140038120], 0
lea rcx, [fcn.140001ef0]
call fcn.14000a888
lea rcx, [0x140038330]
call fcn.14000a758
jmp 0x140002a97
lea rcx, [0x140038330]
call fcn.14000a6f0
cmp dword [0x140038330], 0xffffffff
jne 0x140002b70
mov qword [0x140038120], 0
lea rcx, [fcn.140001ef0]
call fcn.14000a888
lea rcx, [0x140038330]
call fcn.14000a758
jmp 0x140002b70
lea rcx, [0x140038330]
call fcn.14000a6f0
cmp dword [0x140038330], 0xffffffff
jne 0x140002ba3
mov qword [0x140038120], 0
lea rcx, [fcn.140001ef0]
call fcn.14000a888
lea rcx, [0x140038330]
call fcn.14000a758
jmp 0x140002ba3
lea rcx, [0x140038330]
call fcn.14000a6f0
cmp dword [0x140038330], 0xffffffff
jne 0x140002bba
mov qword [0x140038120], 0
lea rcx, [fcn.140001ef0]
call fcn.14000a888
lea rcx, [0x140038330]
call fcn.14000a758
jmp 0x140002bba