Function at 0x1400026f0
Capabilities:
Check if file exists
Get file attributes
Modify service
Read file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x268
mov rdi, rcx
mov rax, qword [0x14003c040]
xor rax, rsp
mov qword [rsp + 0x260], rax
lea rdx, [rsp + 0x50]
xor ecx, ecx
mov r8d, 0x105
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x140002776
lea rcx, [rsp + 0x50]
call qword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x1400027d5
mov eax, dword [0x14003e370]
mov ecx, dword [0x14003cda0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002cba
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_remove_file_spec_when_attempting_to_modify_service_description.____lu_
jmp 0x1400027a8
mov eax, dword [0x14003e370]
mov ecx, dword [0x14003cda0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002cfb
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.140008f40
mov rcx, qword [rsp + 0x260]
xor rcx, rsp
call fcn.14001af60
nop
add rsp, 0x268
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rdx, str.updater.ini
lea rcx, [rsp + 0x50]
call fcn.14002c160
test eax, eax
je 0x140002ab7
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140002aee
lea rdx, [0x140035aec]
lea rcx, [rsp + 0x50]
call fcn.140014e28
test rax, rax
je 0x140002b25
mov rbx, rax
xor esi, esi
mov rcx, rax
xor edx, edx
mov r8d, 2
call fcn.140015a28
test eax, eax
jne 0x140002b2b
mov rcx, rbx
call fcn.140015d34
test eax, eax
jle 0x140002b29
mov r15d, eax
lea rcx, [r15 + 1]
call fcn.14000a710
mov r13, rax
xor esi, esi
mov rcx, rbx
xor edx, edx
xor r8d, r8d
call fcn.140015a28
test eax, eax
jne 0x140002b2b
mov edx, 1
mov rcx, r13
mov r8, r15
mov r9, rbx
call fcn.140015794
cmp rax, r15
jne 0x140002b29
mov byte [r13 + r15], 0
lea r15, str.Strings
xor esi, esi
xor r8d, r8d
xor ebp, ebp
mov r14, r13
lea rdx, [r14 + 2]
mov r12, r14
movzx eax, byte [r12]
cmp eax, 0xa
je 0x1400028b8
cmp eax, 0xd
jne 0x1400028c0
inc r12
inc rdx
jmp 0x1400028a9
mov ecx, eax
mov r14, r12
test eax, eax
je 0x140002b7a
cmp cl, 0xa
je 0x1400028ea
movzx ecx, cl
cmp ecx, 0xd
je 0x1400028ea
mov cl, byte [r14 + 1]
inc r14
test cl, cl
jne 0x1400028cd
xor r14d, r14d
jmp 0x1400028f5
mov byte [r14], 0
inc r14
mov al, byte [r12]
cmp al, 0x23
je 0x140002a55
movzx ecx, al
cmp ecx, 0x3b
je 0x140002a55
jmp 0x14000291b
cmp ecx, 0x20
jne 0x140002932
mov al, byte [r12 + 1]
inc r12
inc rdx
movzx ecx, al
cmp ecx, 0x1f
jg 0x14000290b
cmp ecx, 9
je 0x140002910
test ecx, ecx
je 0x140002a55
jmp 0x140002976
cmp ecx, 0x5b
jne 0x140002976
lea rcx, [r12 + 1]
mov rax, rdx
movzx r8d, byte [r12 + 1]
inc r12
inc rdx
cmp r8d, 0x5d
je 0x14000293c
test r8d, r8d
jne 0x14000295e
xor r8d, r8d
jmp 0x140002a55
cmp r8b, 0x5d
je 0x1400029ba
mov r8b, byte [r12 + 1]
inc r12
inc rax
test r8b, r8b
jne 0x14000295e
jmp 0x1400029d5
mov dword [rsp + 0x3c], ebp
mov qword [rsp + 0x40], r13
mov dword [rsp + 0x38], r8d
test r8b, 1
je 0x140002a40
mov r13, r12
cmp al, 0x3d
jne 0x14000299e
mov al, byte [r13 + 1]
inc r13
jmp 0x140002991
test al, al
je 0x140002a40
cmp al, 0x3d
je 0x140002a01
mov al, byte [r13 + 1]
inc r13
test al, al
jne 0x1400029a6
xor r13d, r13d
jmp 0x140002a09
mov byte [r12], 0
movzx edx, byte [rax]
cmp edx, 9
je 0x1400029cc
cmp edx, 0x20
jne 0x1400029d1
inc rax
jmp 0x1400029bf
test edx, edx
jne 0x1400029e5
mov rdx, r15
call fcn.140016730
test eax, eax
sete r8b
jmp 0x140002a55
cmp dl, 9
je 0x140002a63
movzx ecx, dl
cmp ecx, 0x20
je 0x140002a63
mov dl, byte [rax + 1]
inc rax
test dl, dl
jne 0x1400029e5
jmp 0x140002956
mov byte [r13], 0
inc r13
xor r15d, r15d
lea rbp, str.MozillaMaintenanceDescription
mov rcx, r12
mov rdx, rbp
call fcn.140016730
test eax, eax
je 0x140002a3b
mov rcx, rbp
call fcn.140016d40
add rbp, rax
inc rbp
inc r15d
cmp byte [rbp], 0
jne 0x140002a13
jmp 0x140002a40
test r15d, r15d
je 0x140002a6b
mov r13, qword [rsp + 0x40]
mov ebp, dword [rsp + 0x3c]
lea r15, str.Strings
mov r8d, dword [rsp + 0x38]
test r14, r14
jne 0x1400028a2
jmp 0x140002b7a
mov byte [rax], 0
jmp 0x140002956
mov rcx, r13
call fcn.140016d40
lea rbp, [rax + 1]
mov rcx, rbp
call fcn.14000a710
mov r12, rax
mov rcx, rax
xor edx, edx
mov r8, rbp
call fcn.14002b6c0
test rsi, rsi
je 0x140002a9c
mov rcx, rsi
call fcn.14000a718
mov rcx, r12
mov rdx, r13
call fcn.140016850
mov ebp, dword [rsp + 0x3c]
inc ebp
mov rsi, r12
mov r13, qword [rsp + 0x40]
jmp 0x140002a49
mov eax, dword [0x14003e370]
mov ecx, dword [0x14003cda0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002d7d
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_append_updater.ini_filename_when_attempting_to_modify_service_description.____lu_
jmp 0x1400027a8
mov eax, dword [0x14003e370]
mov ecx, dword [0x14003cda0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002dbe
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.updater.ini_file_does_not_exist__will_not_modify_service_description.____lu_
jmp 0x1400027a8
xor esi, esi
jmp 0x140002b33
xor esi, esi
mov rcx, rbx
call fcn.140014f28
mov eax, dword [0x14003e370]
mov ecx, dword [0x14003cda0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002d3c
lea rdx, str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.140008f40
test rsi, rsi
je 0x1400027b0
mov rcx, rsi
call fcn.14000a718
jmp 0x1400027b0
mov rcx, r13
call fcn.14000a718
cmp ebp, 1
jne 0x140002b2b
mov rcx, rbx
call fcn.140014f28
cmp byte [rsi], 0
je 0x140002b33
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.14000a710
mov rbx, rax
mov rcx, rax
xor edx, edx
mov r8, r14
call fcn.14002b6c0
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], rbx
mov ecx, 0xfde9
xor edx, edx
mov r8, rsi
mov r9d, 0xffffffff
call r15
test eax, eax
je 0x140002c5c
lea r8, [rsp + 0x48]
mov qword [r8], rbx
mov rcx, rdi
mov edx, 1
call qword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2W]
mov ecx, dword [0x14003e370]
mov edx, dword [0x14003cda0]
mov r8, qword gs:[0x58]
mov rdx, qword [r8 + rdx*8]
mov edx, dword [rdx + 4]
test eax, eax
je 0x140002c90
cmp ecx, edx
jg 0x140002dff
lea rdx, str.The_service_description_was_updated_successfully.
call fcn.140008e20
jmp 0x140002cad
mov eax, dword [0x14003e370]
mov ecx, dword [0x14003cda0]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140002e40
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_convert_description_to_wide_string_format.____lu_
jmp 0x140002ca5
cmp ecx, edx
jg 0x140002e81
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_change_service_config.____lu_
mov r8d, eax
call fcn.140008f40
mov rcx, rbx
call fcn.14000a718
jmp 0x140002b6d
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002767
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002767
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x14000279b
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x14000279b
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002b58
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002b58
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002adc
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002adc
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002b13
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002b13
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002c4e
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002c4e
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002c81
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002c81
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002c98
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002c98