Function at 0x140002700
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 0x140002786
lea rcx, [rsp + 0x50]
call qword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x1400027e5
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 0x140002ce3
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_remove_file_spec_when_attempting_to_modify_service_description.____lu_
jmp 0x1400027b8
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 0x140002d24
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.140008f00
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 0x140002894
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x1400028cb
lea rdx, [0x140035aec]
lea rcx, [rsp + 0x50]
call fcn.140014e28
test rax, rax
je 0x14000284b
mov rbx, rax
mov rcx, rax
xor edx, edx
mov r8d, 2
call fcn.140015a28
test eax, eax
je 0x140002902
mov rcx, rbx
call fcn.140014f28
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 0x140002da6
lea rdx, str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.140008f00
test rsi, rsi
je 0x1400027c0
mov rcx, rsi
call fcn.14000a718
jmp 0x1400027c0
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 0x140002d65
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_append_updater.ini_filename_when_attempting_to_modify_service_description.____lu_
jmp 0x1400027b8
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 0x140002de7
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.updater.ini_file_does_not_exist__will_not_modify_service_description.____lu_
jmp 0x1400027b8
mov rcx, rbx
call fcn.140015d34
test eax, eax
jle 0x140002843
mov r15d, eax
lea rcx, [r15 + 1]
call fcn.14000a700
mov r13, rax
xor esi, esi
mov rcx, rbx
xor edx, edx
xor r8d, r8d
call fcn.140015a28
test eax, eax
je 0x14000293c
xor r14d, r14d
jmp 0x140002b9b
mov edx, 1
mov rcx, r13
mov r8, r15
mov r9, rbx
call fcn.140015794
xor r14d, r14d
cmp rax, r15
jne 0x140002b8f
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 0x140002989
cmp eax, 0xd
jne 0x140002991
inc r12
inc rdx
jmp 0x14000297a
mov ecx, eax
mov r14, r12
test eax, eax
je 0x140002b93
cmp cl, 0xa
je 0x1400029bb
movzx ecx, cl
cmp ecx, 0xd
je 0x1400029bb
mov cl, byte [r14 + 1]
inc r14
test cl, cl
jne 0x14000299e
xor r14d, r14d
jmp 0x1400029c6
mov byte [r14], 0
inc r14
mov al, byte [r12]
cmp al, 0x23
je 0x140002b2e
movzx ecx, al
cmp ecx, 0x3b
je 0x140002b2e
jmp 0x1400029ec
cmp ecx, 0x20
jne 0x140002a03
mov al, byte [r12 + 1]
inc r12
inc rdx
movzx ecx, al
cmp ecx, 0x1f
jg 0x1400029dc
cmp ecx, 9
je 0x1400029e1
test ecx, ecx
je 0x140002b2e
jmp 0x140002a4a
cmp ecx, 0x5b
jne 0x140002a4a
mov ebp, r8d
lea rcx, [r12 + 1]
mov rax, rdx
movzx r8d, byte [r12 + 1]
inc r12
inc rdx
cmp r8d, 0x5d
je 0x140002a10
test r8d, r8d
jne 0x140002a32
xor r9d, r9d
jmp 0x140002ab8
cmp r8b, 0x5d
je 0x140002a8f
mov r8b, byte [r12 + 1]
inc r12
inc rax
test r8b, r8b
jne 0x140002a32
jmp 0x140002aaa
mov dword [rsp + 0x3c], r8d
mov qword [rsp + 0x40], r13
mov dword [rsp + 0x38], r9d
test r9b, 1
je 0x140002b18
mov r13, r12
cmp al, 0x3d
jne 0x140002a73
mov al, byte [r13 + 1]
inc r13
jmp 0x140002a66
test al, al
je 0x140002b18
cmp al, 0x3d
je 0x140002ad9
mov al, byte [r13 + 1]
inc r13
test al, al
jne 0x140002a7b
xor r13d, r13d
jmp 0x140002ae1
mov byte [r12], 0
movzx edx, byte [rax]
cmp edx, 9
je 0x140002aa1
cmp edx, 0x20
jne 0x140002aa6
inc rax
jmp 0x140002a94
test edx, edx
jne 0x140002abd
mov rdx, r15
call fcn.140016730
test eax, eax
sete r9b
mov r8d, ebp
jmp 0x140002b2e
cmp dl, 9
je 0x140002b39
movzx ecx, dl
cmp ecx, 0x20
je 0x140002b39
mov dl, byte [rax + 1]
inc rax
test dl, dl
jne 0x140002abd
jmp 0x140002a2a
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 0x140002b13
mov rcx, rbp
call fcn.140016d40
add rbp, rax
inc rbp
inc r15d
cmp byte [rbp], 0
jne 0x140002aeb
jmp 0x140002b18
test r15d, r15d
je 0x140002b41
mov r13, qword [rsp + 0x40]
mov r8d, dword [rsp + 0x3c]
lea r15, str.Strings
mov r9d, dword [rsp + 0x38]
test r14, r14
jne 0x140002973
jmp 0x140002b93
mov byte [rax], 0
jmp 0x140002a2a
mov rcx, r13
call fcn.140016d40
lea rbp, [rax + 1]
mov rcx, rbp
call fcn.14000a700
mov r12, rax
mov rcx, rax
xor edx, edx
mov r8, rbp
call fcn.14002b6c0
test rsi, rsi
je 0x140002b72
mov rcx, rsi
call fcn.14000a718
mov rcx, r12
mov rdx, r13
call fcn.140016850
mov r8d, dword [rsp + 0x3c]
inc r8d
mov rsi, r12
mov r13, qword [rsp + 0x40]
jmp 0x140002b22
xor esi, esi
jmp 0x140002b9b
cmp r8d, 1
sete r14b
mov rcx, r13
call fcn.14000a718
mov rcx, rbx
call fcn.140014f28
test r14b, r14b
je 0x14000284d
cmp byte [rsi], 0
je 0x14000284d
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.14000a700
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 0x140002c85
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 0x140002cb9
cmp ecx, edx
jg 0x140002e28
lea rdx, str.The_service_description_was_updated_successfully.
call fcn.140008de0
jmp 0x140002cd6
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 0x140002e69
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_convert_description_to_wide_string_format.____lu_
jmp 0x140002cce
cmp ecx, edx
jg 0x140002eaa
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_change_service_config.____lu_
mov r8d, eax
call fcn.140008f00
mov rcx, rbx
call fcn.14000a718
jmp 0x140002887
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002777
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d10]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002777
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x1400027ab
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d10]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x1400027ab
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x1400028b9
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d10]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x1400028b9
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002872
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d10]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002872
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x1400028f0
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d10]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x1400028f0
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002c77
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d10]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002c77
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002caa
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d10]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002caa
lea rcx, [0x14003e370]
call fcn.14000a75c
cmp dword [0x14003e370], 0xffffffff
jne 0x140002cc1
mov qword [0x14003e160], 0
lea rcx, [fcn.140001d10]
call fcn.14000a840
lea rcx, [0x14003e370]
call fcn.14000a7d4
jmp 0x140002cc1