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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xba0
mov eax, dword [0x41a0a0]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov dword [ebp - 0xb94], eax
push 0x105
lea eax, [ebp - 0x21c]
push eax
xor ebx, ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
jne 0x401850
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_obtain_module_filename_when_attempting_to_modify_service_description.____d_
call fcn.0040101c
mov esi, eax
call fcn.004040f1
pop ecx
jmp 0x401bc5
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x40186f
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_remove_file_spec_when_attempting_to_modify_service_description.____d_
jmp 0x40183e
lea eax, [ebp - 0x21c]
push str.updater.ini
push eax
call fcn.0040463e
pop ecx
pop ecx
test eax, eax
jne 0x401894
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_append_updater.ini_filename_when_attempting_to_modify_service_description.____d_
jmp 0x40183e
lea eax, [ebp - 0x21c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4018b4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.updater.ini_file_does_not_exist__will_not_modify_service_description.____d_
jmp 0x40183e
lea eax, [ebp - 0x21c]
push 0x4174b4
push eax
call fcn.00407593
mov edi, eax
pop ecx
pop ecx
mov dword [ebp - 0xb84], edi
cmp edi, ebx
jne 0x4018db
push 6
pop esi
jmp 0x401ae7
push 2
push ebx
push edi
call fcn.00407e99
add esp, 0xc
push edi
test eax, eax
je 0x4018f4
call fcn.0040793b
pop ecx
jmp 0x4018d3
call fcn.00407daa
mov esi, eax
pop ecx
cmp esi, ebx
jg 0x401903
push edi
jmp 0x4018ec
lea eax, [esi + 1]
push eax
call fcn.004057d2
mov edi, eax
pop ecx
mov dword [ebp - 0xb90], edi
push ebx
cmp edi, ebx
jne 0x401930
call fcn.0040573a
push dword [ebp - 0xb84]
call fcn.0040793b
pop ecx
pop ecx
push 0xa
jmp 0x4018d5
push ebx
push dword [ebp - 0xb84]
call fcn.00407e99
add esp, 0xc
test eax, eax
je 0x401957
push edi
call fcn.0040573a
push dword [ebp - 0xb84]
call fcn.0040793b
pop ecx
jmp 0x4018f1
push dword [ebp - 0xb84]
push esi
push 1
push edi
call fcn.00407bf9
add esp, 0x10
cmp eax, esi
jne 0x401943
mov byte [edi + esi], bl
mov byte [ebp - 0xb7d], bl
push 0x4174a4
lea ebx, [ebp - 0xb8c]
mov dword [ebp - 0xb8c], edi
xor esi, esi
call fcn.0040414a
pop ecx
test eax, eax
je 0x401ac8
mov cl, byte [eax]
cmp cl, 0x23
je 0x401aa9
cmp cl, 0x3b
je 0x401aa9
mov edi, 0x4174ac
call fcn.00404122
mov cl, byte [eax]
mov dword [ebp - 0xb88], eax
test cl, cl
je 0x401aa9
cmp cl, 0x5b
jne 0x401a21
inc eax
push 0x4174b0
lea ebx, [ebp - 0xb88]
mov dword [ebp - 0xb88], eax
mov edi, eax
call fcn.0040414a
pop ecx
test eax, eax
je 0x401a15
push 0x4174ac
call fcn.0040414a
pop ecx
test eax, eax
jne 0x401a15
push str.Strings
push edi
call fcn.00405980
neg eax
sbb al, al
pop ecx
inc al
pop ecx
mov byte [ebp - 0xb7d], al
jmp 0x401aa9
mov byte [ebp - 0xb7d], 0
jmp 0x401aa9
cmp byte [ebp - 0xb7d], 0
je 0x401aa9
push 0x4174a8
lea ebx, [ebp - 0xb88]
mov dword [ebp - 0xb9c], eax
call fcn.0040414a
pop ecx
test eax, eax
je 0x401aa9
xor edi, edi
mov ebx, str.MozillaMaintenanceDescription
push ebx
push dword [ebp - 0xb9c]
call fcn.00405980
pop ecx
pop ecx
test eax, eax
je 0x401b61
push ebx
call fcn.00405480
lea ebx, [ebx + eax + 1]
inc edi
cmp byte [ebx], 0
pop ecx
jne 0x401a4c
or ebx, 0xffffffff
test ebx, ebx
js 0x401aa9
cmp ebx, 1
jae 0x401aa9
imul ebx, ebx, 0x258
push 0x257
push dword [ebp - 0xb88]
lea eax, [ebp + ebx - 0x474]
push eax
call fcn.00405530
add esp, 0xc
mov byte [ebp + ebx - 0x21d], 0
inc esi
push 0x4174a4
lea ebx, [ebp - 0xb8c]
call fcn.0040414a
pop ecx
test eax, eax
jne 0x401997
mov edi, dword [ebp - 0xb90]
dec esi
neg esi
push edi
sbb esi, esi
call fcn.0040573a
push dword [ebp - 0xb84]
call fcn.0040793b
pop ecx
xor ebx, ebx
and esi, 5
pop ecx
je 0x401aed
mov byte [ebp - 0x474], bl
push 0x257
lea eax, [ebp - 0x474]
push eax
lea eax, [ebp - 0xb7c]
push eax
call fcn.00405530
add esp, 0xc
mov byte [ebp - 0x925], bl
cmp esi, ebx
jne 0x401bb4
lea eax, [ebp - 0xb7c]
push eax
call fcn.00405480
pop ecx
test eax, eax
je 0x401bb4
push 0x258
lea eax, [ebp - 0x924]
push eax
push 0xffffffffffffffff
lea eax, [ebp - 0xb7c]
push eax
push ebx
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
jne 0x401b68
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_convert_description_to_wide_string_format.____d_
jmp 0x40183e
mov ebx, edi
jmp 0x401a76
lea eax, [ebp - 0x924]
mov dword [ebp - 0xb98], eax
lea eax, [ebp - 0xb98]
push eax
push 1
push dword [ebp - 0xb94]
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfig2W]
test eax, eax
jne 0x401b9e
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_change_service_config.____d_
jmp 0x40183e
push str.The_service_description_was_updated_successfully.
call fcn.0040101c
mov esi, eax
call fcn.004040cc
xor eax, eax
inc eax
jmp 0x401bc7
push str.updater.ini_file_does_not_contain_a_maintenance_service_description.
call fcn.0040101c
mov esi, eax
call fcn.004040f1
xor eax, eax
pop ecx
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00404ed1
leave
ret