Function at 0x140002a30
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 [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 0x140002aba
lea rcx, [rsp + 0x40]
call qword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x140002b1d
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 0x140002d8c
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 0x140002af3
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 0x140002dcd
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.140008ff0
mov rcx, qword [rsp + 0x250]
xor rcx, rsp
call fcn.140016cb0
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.140028000
test eax, eax
je 0x140002bc4
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140002c02
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.1400080f0
mov r12, qword [rsi]
test eax, eax
je 0x140002c40
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 0x140002e4f
lea rcx, [0x14003a118]
lea rdx, str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.140008ff0
test r12, r12
jne 0x140002d7f
jmp 0x140002afb
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 0x140002e0e
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 0x140002af3
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 0x140002e90
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 0x140002af3
cmp byte [r12], 0
je 0x140002b7e
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, r12
mov r9d, 0xffffffff
call r15
movsxd rsi, eax
mov rax, rsi
add rax, rsi
mov rdi, 0xffffffffffffffff
cmovae rdi, rax
mov rcx, rdi
call fcn.14000af70
mov r14, rax
mov rcx, rax
xor edx, edx
mov r8, rdi
call fcn.14000ce30
mov dword [rsp + 0x28], esi
mov qword [rsp + 0x20], r14
mov ecx, 0xfde9
xor edx, edx
mov r8, r12
mov r9d, 0xffffffff
call r15
test eax, eax
je 0x140002d18
lea r8, [rsp + 0x38]
mov qword [r8], r14
mov rcx, rbx
mov edx, 1
call qword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2W]
mov ecx, dword [0x14003a328]
mov edx, dword [0x140038d6c]
mov rbx, qword gs:[0x58]
mov rdx, qword [rbx + rdx*8]
mov edx, dword [rdx + 4]
test eax, eax
je 0x140002d53
cmp ecx, edx
jg 0x140002ed1
lea rcx, [0x14003a118]
lea rdx, str.The_service_description_was_updated_successfully.
call fcn.140008ee0
jmp 0x140002d77
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 0x140002f12
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x14003a118]
lea rdx, str.Could_not_convert_description_to_wide_string_format.____lu_
jmp 0x140002d6f
cmp ecx, edx
jg 0x140002f53
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, [0x14003a118]
lea rdx, str.Could_not_change_service_config.____lu_
mov r8d, eax
call fcn.140008ff0
mov rcx, r14
call fcn.14000b190
mov rcx, r12
call fcn.14000b190
jmp 0x140002afb
lea rcx, [0x14003a328]
call fcn.14000b3c0
cmp dword [0x14003a328], 0xffffffff
jne 0x140002aa4
mov qword [0x14003a118], 0
lea rcx, [0x140002780]
call fcn.14000b578
lea rcx, [0x14003a328]
call fcn.14000b428
jmp 0x140002aa4
lea rcx, [0x14003a328]
call fcn.14000b3c0
cmp dword [0x14003a328], 0xffffffff
jne 0x140002adf
mov qword [0x14003a118], 0
lea rcx, [0x140002780]
call fcn.14000b578
lea rcx, [0x14003a328]
call fcn.14000b428
jmp 0x140002adf
lea rcx, [0x14003a328]
call fcn.14000b3c0
cmp dword [0x14003a328], 0xffffffff
jne 0x140002be9
mov qword [0x14003a118], 0
lea rcx, [0x140002780]
call fcn.14000b578
lea rcx, [0x14003a328]
call fcn.14000b428
jmp 0x140002be9
lea rcx, [0x14003a328]
call fcn.14000b3c0
cmp dword [0x14003a328], 0xffffffff
jne 0x140002ba3
mov qword [0x14003a118], 0
lea rcx, [0x140002780]
call fcn.14000b578
lea rcx, [0x14003a328]
call fcn.14000b428
jmp 0x140002ba3
lea rcx, [0x14003a328]
call fcn.14000b3c0
cmp dword [0x14003a328], 0xffffffff
jne 0x140002c27
mov qword [0x14003a118], 0
lea rcx, [0x140002780]
call fcn.14000b578
lea rcx, [0x14003a328]
call fcn.14000b428
jmp 0x140002c27
lea rcx, [0x14003a328]
call fcn.14000b3c0
cmp dword [0x14003a328], 0xffffffff
jne 0x140002d03
mov qword [0x14003a118], 0
lea rcx, [0x140002780]
call fcn.14000b578
lea rcx, [0x14003a328]
call fcn.14000b428
jmp 0x140002d03
lea rcx, [0x14003a328]
call fcn.14000b3c0
cmp dword [0x14003a328], 0xffffffff
jne 0x140002d3d
mov qword [0x14003a118], 0
lea rcx, [0x140002780]
call fcn.14000b578
lea rcx, [0x14003a328]
call fcn.14000b428
jmp 0x140002d3d
lea rcx, [0x14003a328]
call fcn.14000b3c0
cmp dword [0x14003a328], 0xffffffff
jne 0x140002d5b
mov qword [0x14003a118], 0
lea rcx, [0x140002780]
call fcn.14000b578
lea rcx, [0x14003a328]
call fcn.14000b428
jmp 0x140002d5b