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 0x140002cd3
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 0x140002d14
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.140008f50
mov rcx, qword [rsp + 0x260]
xor rcx, rsp
call fcn.14001af70
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.14002c170
test eax, eax
je 0x140002884
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x1400028bb
lea rdx, [0x140035aec]
lea rcx, [rsp + 0x50]
call fcn.140014e38
test rax, rax
je 0x14000283b
mov rbx, rax
mov rcx, rax
xor edx, edx
mov r8d, 2
call fcn.140015a38
test eax, eax
je 0x1400028f2
mov rcx, rbx
call fcn.140014f38
xor esi, esi
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 0x140002d96
lea rdx, str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.140008f50
test rsi, rsi
je 0x1400027b0
mov rcx, rsi
call fcn.14000a728
jmp 0x1400027b0
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 0x140002d55
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 0x140002dd7
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.updater.ini_file_does_not_exist__will_not_modify_service_description.____lu_
jmp 0x1400027a8
mov rcx, rbx
call fcn.140015d44
test eax, eax
jle 0x140002833
mov r15d, eax
lea rcx, [r15 + 1]
call fcn.14000a718
mov r13, rax
xor esi, esi
mov rcx, rbx
xor edx, edx
xor r8d, r8d
call fcn.140015a38
test eax, eax
je 0x14000292c
xor r14d, r14d
jmp 0x140002b8b
mov edx, 1
mov rcx, r13
mov r8, r15
mov r9, rbx
call fcn.1400157a4
xor r14d, r14d
cmp rax, r15
jne 0x140002b7f
mov byte [r13 + r15], 0
lea r15, str.Strings
xor esi, esi
xor r9d, r9d
xor r8d, r8d
mov r14, r13
lea rdx, [r14 + 2]
mov r12, r14
movzx eax, byte [r12]
cmp eax, 0xa
je 0x140002979
cmp eax, 0xd
jne 0x140002981
inc r12
inc rdx
jmp 0x14000296a
mov ecx, eax
mov r14, r12
test eax, eax
je 0x140002b83
cmp cl, 0xa
je 0x1400029ab
movzx ecx, cl
cmp ecx, 0xd
je 0x1400029ab
mov cl, byte [r14 + 1]
inc r14
test cl, cl
jne 0x14000298e
xor r14d, r14d
jmp 0x1400029b6
mov byte [r14], 0
inc r14
mov al, byte [r12]
cmp al, 0x23
je 0x140002b1e
movzx ecx, al
cmp ecx, 0x3b
je 0x140002b1e
jmp 0x1400029dc
cmp ecx, 0x20
jne 0x1400029f3
mov al, byte [r12 + 1]
inc r12
inc rdx
movzx ecx, al
cmp ecx, 0x1f
jg 0x1400029cc
cmp ecx, 9
je 0x1400029d1
test ecx, ecx
je 0x140002b1e
jmp 0x140002a3a
cmp ecx, 0x5b
jne 0x140002a3a
mov ebp, r8d
lea rcx, [r12 + 1]
mov rax, rdx
movzx r8d, byte [r12 + 1]
inc r12
inc rdx
cmp r8d, 0x5d
je 0x140002a00
test r8d, r8d
jne 0x140002a22
xor r9d, r9d
jmp 0x140002aa8
cmp r8b, 0x5d
je 0x140002a7f
mov r8b, byte [r12 + 1]
inc r12
inc rax
test r8b, r8b
jne 0x140002a22
jmp 0x140002a9a
mov dword [rsp + 0x3c], r8d
mov qword [rsp + 0x40], r13
mov dword [rsp + 0x38], r9d
test r9b, 1
je 0x140002b08
mov r13, r12
cmp al, 0x3d
jne 0x140002a63
mov al, byte [r13 + 1]
inc r13
jmp 0x140002a56
test al, al
je 0x140002b08
cmp al, 0x3d
je 0x140002ac9
mov al, byte [r13 + 1]
inc r13
test al, al
jne 0x140002a6b
xor r13d, r13d
jmp 0x140002ad1
mov byte [r12], 0
movzx edx, byte [rax]
cmp edx, 9
je 0x140002a91
cmp edx, 0x20
jne 0x140002a96
inc rax
jmp 0x140002a84
test edx, edx
jne 0x140002aad
mov rdx, r15
call fcn.140016740
test eax, eax
sete r9b
mov r8d, ebp
jmp 0x140002b1e
cmp dl, 9
je 0x140002b29
movzx ecx, dl
cmp ecx, 0x20
je 0x140002b29
mov dl, byte [rax + 1]
inc rax
test dl, dl
jne 0x140002aad
jmp 0x140002a1a
mov byte [r13], 0
inc r13
xor r15d, r15d
lea rbp, str.MozillaMaintenanceDescription
mov rcx, r12
mov rdx, rbp
call fcn.140016740
test eax, eax
je 0x140002b03
mov rcx, rbp
call fcn.140016d50
add rbp, rax
inc rbp
inc r15d
cmp byte [rbp], 0
jne 0x140002adb
jmp 0x140002b08
test r15d, r15d
je 0x140002b31
mov r13, qword [rsp + 0x40]
mov r8d, dword [rsp + 0x3c]
lea r15, str.Strings
mov r9d, dword [rsp + 0x38]
test r14, r14
jne 0x140002963
jmp 0x140002b83
mov byte [rax], 0
jmp 0x140002a1a
mov rcx, r13
call fcn.140016d50
lea rbp, [rax + 1]
mov rcx, rbp
call fcn.14000a718
mov r12, rax
mov rcx, rax
xor edx, edx
mov r8, rbp
call fcn.14002b6d0
test rsi, rsi
je 0x140002b62
mov rcx, rsi
call fcn.14000a728
mov rcx, r12
mov rdx, r13
call fcn.140016860
mov r8d, dword [rsp + 0x3c]
inc r8d
mov rsi, r12
mov r13, qword [rsp + 0x40]
jmp 0x140002b12
xor esi, esi
jmp 0x140002b8b
cmp r8d, 1
sete r14b
mov rcx, r13
call fcn.14000a728
mov rcx, rbx
call fcn.140014f38
test r14b, r14b
je 0x14000283d
cmp byte [rsi], 0
je 0x14000283d
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.14000a718
mov rbx, rax
mov rcx, rax
xor edx, edx
mov r8, r14
call fcn.14002b6d0
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 0x140002c75
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 0x140002ca9
cmp ecx, edx
jg 0x140002e18
lea rdx, str.The_service_description_was_updated_successfully.
call fcn.140008e30
jmp 0x140002cc6
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 0x140002e59
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_convert_description_to_wide_string_format.____lu_
jmp 0x140002cbe
cmp ecx, edx
jg 0x140002e9a
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_change_service_config.____lu_
mov r8d, eax
call fcn.140008f50
mov rcx, rbx
call fcn.14000a728
jmp 0x140002877
lea rcx, [0x14003e370]
call fcn.14000a76c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002767
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a850
lea rcx, [0x14003e370]
call fcn.14000a7e4
jmp 0x140002767
lea rcx, [0x14003e370]
call fcn.14000a76c
cmp dword [0x14003e370], 0xffffffff
jne 0x14000279b
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a850
lea rcx, [0x14003e370]
call fcn.14000a7e4
jmp 0x14000279b
lea rcx, [0x14003e370]
call fcn.14000a76c
cmp dword [0x14003e370], 0xffffffff
jne 0x1400028a9
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a850
lea rcx, [0x14003e370]
call fcn.14000a7e4
jmp 0x1400028a9
lea rcx, [0x14003e370]
call fcn.14000a76c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002862
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a850
lea rcx, [0x14003e370]
call fcn.14000a7e4
jmp 0x140002862
lea rcx, [0x14003e370]
call fcn.14000a76c
cmp dword [0x14003e370], 0xffffffff
jne 0x1400028e0
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a850
lea rcx, [0x14003e370]
call fcn.14000a7e4
jmp 0x1400028e0
lea rcx, [0x14003e370]
call fcn.14000a76c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002c67
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a850
lea rcx, [0x14003e370]
call fcn.14000a7e4
jmp 0x140002c67
lea rcx, [0x14003e370]
call fcn.14000a76c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002c9a
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a850
lea rcx, [0x14003e370]
call fcn.14000a7e4
jmp 0x140002c9a
lea rcx, [0x14003e370]
call fcn.14000a76c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002cb1
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d00]
call fcn.14000a850
lea rcx, [0x14003e370]
call fcn.14000a7e4
jmp 0x140002cb1