Function at 0x1400029e0
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 [0x140038010]
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 0x140002a69
lea rcx, [rsp + 0x40]
call qword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x140002acb
mov eax, dword [0x14003a328]
mov ecx, dword [0x140038d6c]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002d38
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x14003a118]
lea rdx, str.Could_not_remove_file_spec_when_attempting_to_modify_service_description.____lu_
jmp 0x140002aa2
mov eax, dword [0x14003a328]
mov ecx, dword [0x140038d6c]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002d79
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x14003a118]
lea rdx, str.Could_not_obtain_module_filename_when_attempting_to_modify_service_description.____lu_
mov r8d, eax
call fcn.140009010
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.140016cf0
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 fcn.1400280b0
test eax, eax
je 0x140002b72
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140002bb0
xor eax, eax
lea rsi, [rsp + 0x38]
mov qword [rsi], rax
mov qword [rsp + 0x20], rax
lea rdx, str.MozillaMaintenanceDescription
lea rcx, [rsp + 0x40]
mov r8d, 1
mov r9, rsi
call fcn.1400080a0
mov rsi, qword [rsi]
test eax, eax
je 0x140002bee
mov eax, dword [0x14003a328]
mov ecx, dword [0x140038d6c]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002dfb
lea rcx, [0x14003a118]
lea rdx, str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.140009010
test rsi, rsi
jne 0x140002d2b
jmp 0x140002aaa
mov eax, dword [0x14003a328]
mov ecx, dword [0x140038d6c]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002dba
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x14003a118]
lea rdx, str.Could_not_append_updater.ini_filename_when_attempting_to_modify_service_description.____lu_
jmp 0x140002aa2
mov eax, dword [0x14003a328]
mov ecx, dword [0x140038d6c]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002e3c
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x14003a118]
lea rdx, str.updater.ini_file_does_not_exist__will_not_modify_service_description.____lu_
jmp 0x140002aa2
cmp byte [rsi], 0
je 0x140002b2c
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.14000af24
mov rdi, rax
mov rcx, rax
xor edx, edx
mov r8, r14
call fcn.14000cde0
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 0x140002cc4
lea r8, [rsp + 0x38]
mov qword [r8], rdi
mov rcx, rbx
mov edx, 1
call qword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2W]
mov ecx, dword [0x14003a328]
mov edx, dword [0x140038d6c]
mov r8, qword gs:[0x58]
mov rdx, qword [r8 + rdx*8]
mov edx, dword [rdx + 4]
test eax, eax
je 0x140002cff
cmp ecx, edx
jg 0x140002e7d
lea rcx, [0x14003a118]
lea rdx, str.The_service_description_was_updated_successfully.
call fcn.140008f00
jmp 0x140002d23
mov eax, dword [0x14003a328]
mov ecx, dword [0x140038d6c]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002ebe
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x14003a118]
lea rdx, str.Could_not_convert_description_to_wide_string_format.____lu_
jmp 0x140002d1b
cmp ecx, edx
jg 0x140002eff
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x14003a118]
lea rdx, str.Could_not_change_service_config.____lu_
mov r8d, eax
call fcn.140009010
mov rcx, rdi
call fcn.14000b144
mov rcx, rsi
call fcn.14000b144
jmp 0x140002aaa
lea rcx, [0x14003a328]
call fcn.14000b370
cmp dword [0x14003a328], 0xffffffff
jne 0x140002a53
mov qword [0x14003a118], 0
lea rcx, [0x140002720]
call fcn.14000b528
lea rcx, [0x14003a328]
call fcn.14000b3d8
jmp 0x140002a53
lea rcx, [0x14003a328]
call fcn.14000b370
cmp dword [0x14003a328], 0xffffffff
jne 0x140002a8e
mov qword [0x14003a118], 0
lea rcx, [0x140002720]
call fcn.14000b528
lea rcx, [0x14003a328]
call fcn.14000b3d8
jmp 0x140002a8e
lea rcx, [0x14003a328]
call fcn.14000b370
cmp dword [0x14003a328], 0xffffffff
jne 0x140002b97
mov qword [0x14003a118], 0
lea rcx, [0x140002720]
call fcn.14000b528
lea rcx, [0x14003a328]
call fcn.14000b3d8
jmp 0x140002b97
lea rcx, [0x14003a328]
call fcn.14000b370
cmp dword [0x14003a328], 0xffffffff
jne 0x140002b51
mov qword [0x14003a118], 0
lea rcx, [0x140002720]
call fcn.14000b528
lea rcx, [0x14003a328]
call fcn.14000b3d8
jmp 0x140002b51
lea rcx, [0x14003a328]
call fcn.14000b370
cmp dword [0x14003a328], 0xffffffff
jne 0x140002bd5
mov qword [0x14003a118], 0
lea rcx, [0x140002720]
call fcn.14000b528
lea rcx, [0x14003a328]
call fcn.14000b3d8
jmp 0x140002bd5
lea rcx, [0x14003a328]
call fcn.14000b370
cmp dword [0x14003a328], 0xffffffff
jne 0x140002caf
mov qword [0x14003a118], 0
lea rcx, [0x140002720]
call fcn.14000b528
lea rcx, [0x14003a328]
call fcn.14000b3d8
jmp 0x140002caf
lea rcx, [0x14003a328]
call fcn.14000b370
cmp dword [0x14003a328], 0xffffffff
jne 0x140002ce9
mov qword [0x14003a118], 0
lea rcx, [0x140002720]
call fcn.14000b528
lea rcx, [0x14003a328]
call fcn.14000b3d8
jmp 0x140002ce9
lea rcx, [0x14003a328]
call fcn.14000b370
cmp dword [0x14003a328], 0xffffffff
jne 0x140002d07
mov qword [0x14003a118], 0
lea rcx, [0x140002720]
call fcn.14000b528
lea rcx, [0x14003a328]
call fcn.14000b3d8
jmp 0x140002d07