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

Disassembly:
push r15
push r14
push rsi
push rdi
push rbp
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 0x1400029d2
lea rcx, [rsp + 0x40]
call qword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x140002a2d
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 0x140002c50
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_remove_file_spec_when_attempting_to_modify_service_description.____lu_
jmp 0x140002a04
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 0x140002c91
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.140009d30
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.140018440
nop
add rsp, 0x258
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
ret
lea rdx, str.updater.ini
lea rcx, [rsp + 0x40]
call int.140025c90
test eax, eax
je 0x140002a89
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x140002ac0
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 0x140002cd2
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.updater.ini_file_does_not_exist__will_not_modify_service_description.____lu_
jmp 0x140002a04
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 0x140002d13
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_append_updater.ini_filename_when_attempting_to_modify_service_description.____lu_
jmp 0x140002a04
lea rsi, [rsp + 0x38]
mov qword [rsi], 0
lea rcx, [rsp + 0x40]
mov rdx, rsi
call fcn.140025870
mov rsi, qword [rsi]
test eax, eax
je 0x140002b1f
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 0x140002d54
lea rdx, str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.140009d30
test rsi, rsi
jne 0x140002c43
jmp 0x140002a0c
cmp byte [rsi], 0
je 0x140002ae0
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
mov ebp, eax
mov eax, eax
add rax, rax
test ebp, ebp
mov r14, 0xffffffffffffffff
cmovns r14, rax
mov rcx, r14
call fcn.14000a484
mov rdi, rax
mov rcx, rax
xor edx, edx
mov r8, r14
call fcn.14000baa0
mov dword [rsp + 0x28], ebp
mov qword [rsp + 0x20], rdi
mov ecx, 0xfde9
xor edx, edx
mov r8, rsi
mov r9d, 0xffffffff
call r15
test eax, eax
je 0x140002bea
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 0x140002c1e
cmp ecx, edx
jg 0x140002d95
lea rdx, str.The_service_description_was_updated_successfully.
call fcn.140009c20
jmp 0x140002c3b
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 0x140002dd6
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_convert_description_to_wide_string_format.____lu_
jmp 0x140002c33
cmp ecx, edx
jg 0x140002e17
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_change_service_config.____lu_
mov r8d, eax
call fcn.140009d30
mov rcx, rdi
call fcn.14000a48c
mov rcx, rsi
call fcn.14000a48c
jmp 0x140002a0c
lea rcx, [0x140038330]
call fcn.14000a740
cmp dword [0x140038330], 0xffffffff
jne 0x1400029c3
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a8d8
lea rcx, [0x140038330]
call fcn.14000a7a8
jmp 0x1400029c3
lea rcx, [0x140038330]
call fcn.14000a740
cmp dword [0x140038330], 0xffffffff
jne 0x1400029f7
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a8d8
lea rcx, [0x140038330]
call fcn.14000a7a8
jmp 0x1400029f7
lea rcx, [0x140038330]
call fcn.14000a740
cmp dword [0x140038330], 0xffffffff
jne 0x140002a77
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a8d8
lea rcx, [0x140038330]
call fcn.14000a7a8
jmp 0x140002a77
lea rcx, [0x140038330]
call fcn.14000a740
cmp dword [0x140038330], 0xffffffff
jne 0x140002aae
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a8d8
lea rcx, [0x140038330]
call fcn.14000a7a8
jmp 0x140002aae
lea rcx, [0x140038330]
call fcn.14000a740
cmp dword [0x140038330], 0xffffffff
jne 0x140002b05
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a8d8
lea rcx, [0x140038330]
call fcn.14000a7a8
jmp 0x140002b05
lea rcx, [0x140038330]
call fcn.14000a740
cmp dword [0x140038330], 0xffffffff
jne 0x140002bdc
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a8d8
lea rcx, [0x140038330]
call fcn.14000a7a8
jmp 0x140002bdc
lea rcx, [0x140038330]
call fcn.14000a740
cmp dword [0x140038330], 0xffffffff
jne 0x140002c0f
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a8d8
lea rcx, [0x140038330]
call fcn.14000a7a8
jmp 0x140002c0f
lea rcx, [0x140038330]
call fcn.14000a740
cmp dword [0x140038330], 0xffffffff
jne 0x140002c26
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000a8d8
lea rcx, [0x140038330]
call fcn.14000a7a8
jmp 0x140002c26