Function at 0x1400026f0
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 0x140002773
lea rcx, [rsp + 0x40]
call qword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x1400027cf
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 0x1400029f4
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_remove_file_spec_when_attempting_to_modify_service_description.____lu_
jmp 0x1400027a5
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 0x140002a35
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.140008c60
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.140018400
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.1400258a0
test eax, eax
je 0x14000282b
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x140002862
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 0x140002a76
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.updater.ini_file_does_not_exist__will_not_modify_service_description.____lu_
jmp 0x1400027a5
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 0x140002ab7
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_append_updater.ini_filename_when_attempting_to_modify_service_description.____lu_
jmp 0x1400027a5
lea rsi, [rsp + 0x38]
mov qword [rsi], 0
lea rcx, [rsp + 0x40]
mov rdx, rsi
call fcn.140025a70
mov rsi, qword [rsi]
test eax, eax
je 0x1400028c1
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 0x140002af8
lea rdx, str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.140008c60
test rsi, rsi
jne 0x1400029e7
jmp 0x1400027ad
cmp byte [rsi], 0
je 0x140002882
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.14000b870
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 0x14000298e
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 0x1400029c2
cmp ecx, edx
jg 0x140002b39
lea rdx, str.The_service_description_was_updated_successfully.
call fcn.140008b50
jmp 0x1400029df
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 0x140002b7a
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_convert_description_to_wide_string_format.____lu_
jmp 0x1400029d7
cmp ecx, edx
jg 0x140002bbb
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_change_service_config.____lu_
mov r8d, eax
call fcn.140008c60
mov rcx, rdi
call fcn.14000a430
mov rcx, rsi
call fcn.14000a430
jmp 0x1400027ad
lea rcx, [0x140038330]
call fcn.14000a550
cmp dword [0x140038330], 0xffffffff
jne 0x140002764
mov qword [0x140038120], 0
lea rcx, [fcn.140001d00]
call fcn.14000a6e8
lea rcx, [0x140038330]
call fcn.14000a5b8
jmp 0x140002764
lea rcx, [0x140038330]
call fcn.14000a550
cmp dword [0x140038330], 0xffffffff
jne 0x140002798
mov qword [0x140038120], 0
lea rcx, [fcn.140001d00]
call fcn.14000a6e8
lea rcx, [0x140038330]
call fcn.14000a5b8
jmp 0x140002798
lea rcx, [0x140038330]
call fcn.14000a550
cmp dword [0x140038330], 0xffffffff
jne 0x140002819
mov qword [0x140038120], 0
lea rcx, [fcn.140001d00]
call fcn.14000a6e8
lea rcx, [0x140038330]
call fcn.14000a5b8
jmp 0x140002819
lea rcx, [0x140038330]
call fcn.14000a550
cmp dword [0x140038330], 0xffffffff
jne 0x140002850
mov qword [0x140038120], 0
lea rcx, [fcn.140001d00]
call fcn.14000a6e8
lea rcx, [0x140038330]
call fcn.14000a5b8
jmp 0x140002850
lea rcx, [0x140038330]
call fcn.14000a550
cmp dword [0x140038330], 0xffffffff
jne 0x1400028a7
mov qword [0x140038120], 0
lea rcx, [fcn.140001d00]
call fcn.14000a6e8
lea rcx, [0x140038330]
call fcn.14000a5b8
jmp 0x1400028a7
lea rcx, [0x140038330]
call fcn.14000a550
cmp dword [0x140038330], 0xffffffff
jne 0x140002980
mov qword [0x140038120], 0
lea rcx, [fcn.140001d00]
call fcn.14000a6e8
lea rcx, [0x140038330]
call fcn.14000a5b8
jmp 0x140002980
lea rcx, [0x140038330]
call fcn.14000a550
cmp dword [0x140038330], 0xffffffff
jne 0x1400029b3
mov qword [0x140038120], 0
lea rcx, [fcn.140001d00]
call fcn.14000a6e8
lea rcx, [0x140038330]
call fcn.14000a5b8
jmp 0x1400029b3
lea rcx, [0x140038330]
call fcn.14000a550
cmp dword [0x140038330], 0xffffffff
jne 0x1400029ca
mov qword [0x140038120], 0
lea rcx, [fcn.140001d00]
call fcn.14000a6e8
lea rcx, [0x140038330]
call fcn.14000a5b8
jmp 0x1400029ca