Function at 0x140002950
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 0x1400029d3
lea rcx, [rsp + 0x40]
call qword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x140002a2f
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 0x140002c54
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_remove_file_spec_when_attempting_to_modify_service_description.____lu_
jmp 0x140002a05
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 0x140002c95
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.140008e90
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.1400183b0
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.1400257e0
test eax, eax
je 0x140002a8b
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x140002ac2
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 0x140002cd6
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.updater.ini_file_does_not_exist__will_not_modify_service_description.____lu_
jmp 0x140002a05
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 0x140002d17
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_append_updater.ini_filename_when_attempting_to_modify_service_description.____lu_
jmp 0x140002a05
lea rsi, [rsp + 0x38]
mov qword [rsi], 0
lea rcx, [rsp + 0x40]
mov rdx, rsi
call fcn.1400259b0
mov rsi, qword [rsi]
test eax, eax
je 0x140002b21
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 0x140002d58
lea rdx, str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.140008e90
test rsi, rsi
jne 0x140002c47
jmp 0x140002a0d
cmp byte [rsi], 0
je 0x140002ae2
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.14000a3e8
mov rdi, rax
mov rcx, rax
xor edx, edx
mov r8, r14
call fcn.14000ba10
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 0x140002bee
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 0x140002c22
cmp ecx, edx
jg 0x140002d99
lea rdx, str.The_service_description_was_updated_successfully.
call fcn.140008d80
jmp 0x140002c3f
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 0x140002dda
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_convert_description_to_wide_string_format.____lu_
jmp 0x140002c37
cmp ecx, edx
jg 0x140002e1b
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_change_service_config.____lu_
mov r8d, eax
call fcn.140008e90
mov rcx, rdi
call fcn.14000a3f0
mov rcx, rsi
call fcn.14000a3f0
jmp 0x140002a0d
lea rcx, [0x140038330]
call fcn.14000a6b0
cmp dword [0x140038330], 0xffffffff
jne 0x1400029c4
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a848
lea rcx, [0x140038330]
call fcn.14000a718
jmp 0x1400029c4
lea rcx, [0x140038330]
call fcn.14000a6b0
cmp dword [0x140038330], 0xffffffff
jne 0x1400029f8
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a848
lea rcx, [0x140038330]
call fcn.14000a718
jmp 0x1400029f8
lea rcx, [0x140038330]
call fcn.14000a6b0
cmp dword [0x140038330], 0xffffffff
jne 0x140002a79
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a848
lea rcx, [0x140038330]
call fcn.14000a718
jmp 0x140002a79
lea rcx, [0x140038330]
call fcn.14000a6b0
cmp dword [0x140038330], 0xffffffff
jne 0x140002ab0
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a848
lea rcx, [0x140038330]
call fcn.14000a718
jmp 0x140002ab0
lea rcx, [0x140038330]
call fcn.14000a6b0
cmp dword [0x140038330], 0xffffffff
jne 0x140002b07
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a848
lea rcx, [0x140038330]
call fcn.14000a718
jmp 0x140002b07
lea rcx, [0x140038330]
call fcn.14000a6b0
cmp dword [0x140038330], 0xffffffff
jne 0x140002be0
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a848
lea rcx, [0x140038330]
call fcn.14000a718
jmp 0x140002be0
lea rcx, [0x140038330]
call fcn.14000a6b0
cmp dword [0x140038330], 0xffffffff
jne 0x140002c13
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a848
lea rcx, [0x140038330]
call fcn.14000a718
jmp 0x140002c13
lea rcx, [0x140038330]
call fcn.14000a6b0
cmp dword [0x140038330], 0xffffffff
jne 0x140002c2a
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a848
lea rcx, [0x140038330]
call fcn.14000a718
jmp 0x140002c2a