Function at 0x140003160
Capabilities:
Copy file
Create service
Delete file
Enumerate processes
Get installed programs
Modify service
Move file
Query service status
Set registry value
Stop service

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x518
mov ebp, ecx
mov rax, qword [0x140036030]
xor rax, rsp
mov qword [rsp + 0x510], rax
xor ecx, ecx
xor edx, edx
mov r8d, 0xf003f
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
test rax, rax
je 0x14000322b
mov rsi, rax
lea rdi, [rsp + 0xc0]
xor ecx, ecx
mov rdx, rdi
mov r8d, 0x105
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x14000326c
lea rdx, str.MozillaMaintenance
mov rcx, rsi
mov r8d, 0xf01ff
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov rbx, rax
call qword [sym.imp.KERNEL32.dll_GetLastError]
test rbx, rbx
jne 0x1400032ad
cmp eax, 0x424
je 0x1400032ad
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004293
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_open_service.____lu_
jmp 0x14000329e
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004211
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_open_service_manager.____lu_
mov r8d, eax
call fcn.14000a020
xor ebp, ebp
jmp 0x140003992
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004252
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_obtain_module_filename_when_attempting_to_install_service.____lu_
mov r8d, eax
call fcn.14000a020
xor ebp, ebp
jmp 0x140003989
test rbx, rbx
je 0x140003631
lea r14, [rsp + 0x2d0]
mov qword [r14], 0
mov rcx, rbx
mov rdx, r14
call fcn.140004ab0
mov edi, eax
mov rcx, qword [r14]
test rcx, rcx
je 0x1400032e0
call qword [sym.imp.KERNEL32.dll_LocalFree]
test edi, edi
je 0x14000331e
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400042d4
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_reset_security_ACE_on_service_handle._It_might_not_be_possible_to_start_the_service._This_error_should_never_happen.____lu_
mov r8d, eax
call fcn.14000a020
lea r9, [rsp + 0x9c]
mov rcx, rbx
xor edx, edx
xor r8d, r8d
call qword [sym.imp.ADVAPI32.dll_QueryServiceConfigW]
test eax, eax
jne 0x140003347
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x1400038d0
lea r14, [rsp + 0x9c]
mov r15d, dword [r14]
mov rcx, r15
call fcn.14000a774
mov rdi, rax
mov rcx, rbx
mov rdx, rax
mov r8d, r15d
mov r9, r14
call qword [sym.imp.ADVAPI32.dll_QueryServiceConfigW]
test eax, eax
je 0x140003718
cmp byte [0x140038114], 0
je 0x14000375f
mov rcx, qword [rdi + 0x10]
call qword [sym.imp.SHLWAPI.dll_PathUnquoteSpacesW]
mov rcx, qword [rdi + 0x10]
lea rax, [rsp + 0x8c]
mov qword [rsp + 0x20], rax
lea rdx, [rsp + 0x98]
lea r8, [rsp + 0x94]
lea r9, [rsp + 0x90]
call fcn.140005330
mov r14d, eax
lea rax, [rsp + 0x7c]
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0xc0]
lea rdx, [rsp + 0x88]
lea r8, [rsp + 0x84]
lea r9, [rsp + 0x80]
call fcn.140005330
test eax, eax
je 0x140003945
cmp ebp, 2
je 0x140003414
test r14d, r14d
je 0x140003414
mov eax, dword [rsp + 0x88]
cmp dword [rsp + 0x98], eax
jae 0x1400039f7
mov rcx, rbx
call fcn.140002950
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor ecx, ecx
xor edx, edx
mov r8d, 0xf003f
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
test rax, rax
je 0x1400039b8
mov r14, rax
lea rdx, str.MozillaMaintenance
mov rcx, rax
mov r8d, 0xf01ff
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov r15, rax
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
mov ecx, dword [rcx + 4]
test r15, r15
je 0x140003a51
cmp eax, ecx
jg 0x140004524
lea rdx, str.Sending_stop_request...
call fcn.140009f10
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetLastError]
lea r8, [rsp + 0xa0]
mov rcx, r15
mov edx, 1
call qword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
jne 0x1400034ff
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x426
je 0x1400034ff
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14000472c
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Error_sending_stop_request.____lu_
mov r8d, eax
call fcn.14000a020
mov rbx, qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, r14
call rbx
mov rcx, r15
call rbx
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004565
lea rdx, str.Waiting_for_service_stop...
call fcn.140009f10
xor ecx, ecx
xor edx, edx
mov r8d, 5
call qword [sym.imp.ADVAPI32.dll_OpenSCManagerA]
test rax, rax
mov qword [rsp + 0x70], rdi
je 0x140003a7e
mov r15, rax
lea rdx, str.MozillaMaintenance
mov rcx, rax
mov r8d, 4
call qword [sym.imp.ADVAPI32.dll_OpenServiceW]
test rax, rax
je 0x140003b8d
mov r12, rax
lea r14, [rsp + 0x2d0]
mov dword [r14 + 4], 0xcf
mov edi, 0xffffffce
lea r13, [rsp + 0xbc]
mov rbp, qword [sym.imp.ADVAPI32.dll_QueryServiceStatusEx]
mov rbx, qword [sym.imp.KERNEL32.dll_Sleep]
mov qword [rsp + 0x20], r13
mov rcx, r12
xor edx, edx
mov r8, r14
mov r9d, 0x24
call rbp
test eax, eax
je 0x1400035d7
cmp dword [rsp + 0x2d4], 1
jne 0x140003608
jmp 0x140003c39
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x424
jle 0x1400035f4
lea ecx, [rax - 0x425]
cmp ecx, 2
jb 0x140003608
jmp 0x140003ca2
cmp eax, 0x79
jle 0x140003c15
cmp eax, 0x41c
jne 0x140003c7c
mov ecx, 0x32
call rbx
add edi, 0x32
cmp edi, 0x74fe
jb 0x1400035af
mov eax, dword [rsp + 0x2d4]
mov dword [rsp + 0x6c], eax
mov rdi, qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jmp 0x140003cd5
test ebp, ebp
je 0x1400038c6
mov rcx, rdi
call qword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
xorps xmm0, xmm0
movups xmmword [rsp + 0x50], xmm0
movups xmmword [rsp + 0x40], xmm0
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x60], 0
mov dword [rsp + 0x30], 1
mov dword [rsp + 0x28], 3
mov dword [rsp + 0x20], 0x10
lea rdx, str.MozillaMaintenance
lea r8, str.Mozilla_Maintenance_Service
mov rcx, rsi
mov r9d, 0xf01ff
call qword [sym.imp.ADVAPI32.dll_CreateServiceW]
test rax, rax
je 0x14000390e
mov rbx, rax
lea r14, [rsp + 0x2d0]
mov qword [r14], 0
mov rcx, rax
mov rdx, r14
call fcn.140004ab0
mov edi, eax
mov rcx, qword [r14]
test rcx, rcx
je 0x1400036c8
call qword [sym.imp.KERNEL32.dll_LocalFree]
test edi, edi
je 0x140003706
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004461
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_set_security_ACE_on_service_handle__the_service_will_not_be_able_to_be_started_from_unelevated_processes._This_error_should_never_happen.____lu_
mov r8d, eax
call fcn.14000a020
mov rcx, rbx
call fcn.140002950
mov ebp, 1
jmp 0x140003980
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004315
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_open_service_but_could_not_query_service_config.____lu_
mov r8d, eax
call fcn.14000a020
mov rcx, rdi
call fcn.14000a77c
jmp 0x14000390a
mov r14, qword [rdi + 0x10]
mov rcx, r14
call fcn.14000a834
cmp rax, 3
jb 0x1400037ce
mov r15, rax
lea rdx, str.maintenanceservice_tmp.exe
mov rcx, r14
call fcn.14000c04c
test rax, rax
jne 0x1400037ce
cmp word [r14], 0x22
jne 0x1400037ce
cmp word [r14 + r15*2 - 2], 0x22
jne 0x1400037ce
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004669
lea rdx, str.The_MozillaMaintenance_service_path_is_correct.
call fcn.140009f10
jmp 0x140003384
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004356
lea rdx, str.The_MozillaMaintenance_path_is_NOT_correct._It_was:__ls
mov r8, r14
call fcn.140009f10
lea r15, [rsp + 0x2d0]
mov r8d, 0x20a
mov rcx, r15
xor edx, edx
call fcn.14000bd90
mov r8d, 0x104
mov rcx, r15
mov rdx, r14
call fcn.14000a784
mov rcx, r15
call qword [sym.imp.SHLWAPI.dll_PathUnquoteSpacesW]
mov rcx, r15
call qword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x140003aa8
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400043d8
lea r14, str.Couldnt_remove_file_spec.____lu_
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov rdx, r14
mov r8d, eax
call fcn.14000a020
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004397
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_fix_service_path._This_should_never_happen.____lu_
mov r8d, eax
call fcn.14000a020
mov ebp, 1
jmp 0x140003978
mov ebp, 1
jmp 0x140003989
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004420
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_determine_buffer_size_for_query_service_config.____lu_
mov r8d, eax
call fcn.14000a020
xor ebp, ebp
jmp 0x140003980
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400044a2
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_create_Windows_service._This_error_should_never_happen_since_a_service_install_should_only_be_called_when_elevated.____lu_
jmp 0x14000329e
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400044e3
lea rdx, str.Could_not_obtain_version_number_from_new_path
call fcn.14000a020
xor ebp, ebp
mov rcx, rdi
call fcn.14000a77c
mov rcx, rbx
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov rcx, qword [rsp + 0x510]
xor rcx, rsp
call fcn.140018730
mov eax, ebp
add rsp, 0x518
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400045e7
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_open_service_manager.____lu_
mov r8d, eax
call fcn.14000a020
jmp 0x140003a77
jne 0x140003a36
mov eax, dword [rsp + 0x84]
cmp dword [rsp + 0x94], eax
jb 0x140003414
jne 0x140003a36
mov eax, dword [rsp + 0x80]
cmp dword [rsp + 0x90], eax
jb 0x140003414
jne 0x140003a36
mov eax, dword [rsp + 0x8c]
cmp eax, dword [rsp + 0x7c]
jb 0x140003414
lea rcx, [rsp + 0xc0]
xor edx, edx
mov r8d, 4
call qword [sym.imp.KERNEL32.dll_MoveFileExW]
jmp 0x1400038bc
cmp eax, ecx
jg 0x140004628
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_open_service.____lu_
mov r8d, eax
call fcn.14000a020
mov rcx, r14
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor ebp, ebp
jmp 0x140004204
call qword [sym.imp.KERNEL32.dll_GetLastError]
xor ecx, ecx
cmp eax, 0x429
sete cl
xor ecx, 0xff
cmp eax, 5
mov eax, 0xfd
cmovne eax, ecx
mov dword [rsp + 0x6c], eax
jmp 0x140003cdf
lea rdx, [0x14002f8b2]
lea r14, [rsp + 0x2d0]
mov rcx, r14
call fcn.140025c40
test eax, eax
je 0x140003be4
mov rcx, r14
call qword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
xorps xmm0, xmm0
movups xmmword [rsp + 0x48], xmm0
movups xmmword [rsp + 0x38], xmm0
movups xmmword [rsp + 0x28], xmm0
mov qword [rsp + 0x20], r14
mov rcx, rbx
mov edx, 0xffffffff
mov r8d, 0xffffffff
mov r9d, 0xffffffff
call qword [sym.imp.ADVAPI32.dll_ChangeServiceConfigW]
mov ecx, dword [0x140038330]
mov edx, dword [0x140036d60]
mov r8, qword gs:[0x58]
mov rdx, qword [r8 + rdx*8]
mov edx, dword [rdx + 4]
test eax, eax
je 0x140003c4a
cmp ecx, edx
jg 0x140004871
lea rdx, str.Fixed_service_path_to:__ls.
lea r8, [rsp + 0x2d0]
call fcn.140009f10
mov byte [0x140038114], 1
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400048b2
lea rdx, str.Restarting_install_action:__d
mov r8d, ebp
call fcn.140009f10
mov ecx, ebp
call fcn.140003160
mov ebp, eax
jmp 0x140003978
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov rcx, r15
call qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
cmp ebx, 0x7a
jg 0x140003bc2
cmp ebx, 5
je 0x140003c5e
cmp ebx, 6
jne 0x140003c72
mov dword [rsp + 0x6c], 0xec
jmp 0x140003cdf
cmp ebx, 0x7b
je 0x140003c68
cmp ebx, 0x424
jne 0x140003c72
mov dword [rsp + 0x6c], 0xee
jmp 0x140003cdf
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400048f3
lea r14, str.Couldnt_append_file_spec.____lu_
jmp 0x140003871
cmp eax, 5
je 0x140003c94
cmp eax, 6
mov rdi, qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
je 0x140003c9b
cmp eax, 0x57
jne 0x140003cb7
mov eax, 0xdc
jmp 0x140003cca
mov eax, 1
mov rdi, qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jmp 0x140003cd1
cmp ecx, edx
jg 0x14000490b
lea r14, str.Could_not_fix_service_path.____lu_
jmp 0x140003871
mov dword [rsp + 0x6c], 0xeb
jmp 0x140003cdf
mov dword [rsp + 0x6c], 0xed
jmp 0x140003cdf
mov dword [rsp + 0x6c], 0xef
jmp 0x140003cdf
cmp eax, 0x7a
je 0x140003cbe
cmp eax, 0x7c
mov rdi, qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jne 0x140003cb7
mov eax, 0xdd
jmp 0x140003cca
mov eax, 0xda
jmp 0x140003cc3
mov eax, 0xd9
jmp 0x140003cca
cmp eax, 0x45b
mov rdi, qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
jne 0x140003cb7
mov eax, 0xde
jmp 0x140003cca
mov eax, 0xdf
jmp 0x140003cca
mov eax, 0xdb
mov rdi, qword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [rsp + 0x2d4], eax
mov dword [rsp + 0x6c], eax
mov rcx, r12
call rdi
mov rcx, r15
call rdi
xor r14d, r14d
lea r15, [rsp + 0x2fc]
mov rdi, qword [sym.imp.KERNEL32.dll_Sleep]
lea r12, [rsp + 0x2d0]
lea r13, [0x14002f8b2]
mov ecx, 2
xor edx, edx
call sub.KERNEL32.dll_CreateToolhelp32Snapshot
cmp rax, 0xffffffffffffffff
je 0x140003d54
mov rbp, rax
mov dword [rsp + 0x2d0], 0x238
mov rcx, rax
mov rdx, r12
call sub.KERNEL32.dll_Process32FirstW
test eax, eax
je 0x140003d5e
mov rcx, r13
mov rdx, r15
call fcn.140011e60
test eax, eax
je 0x140003d68
mov rcx, rbp
mov rdx, r12
call sub.KERNEL32.dll_Process32NextW
test eax, eax
jne 0x140003d2f
mov ebx, 0x490
jmp 0x140003d6a
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
jmp 0x140003d73
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
jmp 0x140003d6a
xor ebx, ebx
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_CloseHandle]
cmp ebx, 0x490
je 0x140003d8f
mov ecx, 0x3e8
call rdi
inc r14d
cmp r14d, 0x1e
jne 0x140003d00
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400045a6
lea rdx, str.Done_waiting_for_service_stop__last_service_state:__lu
mov edi, dword [rsp + 0x6c]
mov r8d, edi
call fcn.140009f10
xor ebp, ebp
cmp edi, 1
mov rdi, qword [rsp + 0x70]
jne 0x140004204
mov rdx, qword [rdi + 0x10]
lea rcx, [rsp + 0xc0]
call fcn.140013f08
test eax, eax
je 0x140003f41
mov rdx, qword [rdi + 0x10]
lea rcx, [rsp + 0xc0]
xor r8d, r8d
call qword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x140003f84
lea r14, [rsp + 0x2d0]
mov r8d, 0x100
mov rcx, r14
xor edx, edx
call fcn.14000bd90
mov eax, dword [rsp + 0x7c]
mov ecx, dword [rsp + 0x80]
mov edx, dword [rsp + 0x84]
mov r9d, dword [rsp + 0x88]
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], edx
lea r8, str._d._d._d._d
mov edx, 0x80
mov rcx, r14
call fcn.140001090
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x20], rax
lea rdx, str.SoftwareMicrosoftWindowsCurrentVersionUninstallMozillaMaintenanceService
mov rcx, 0xffffffff80000002
xor r8d, r8d
mov r9d, 0x20206
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x140003ed5
mov rcx, r14
call fcn.14000a834
add eax, eax
add eax, 2
mov rcx, qword [rsp + 0xa0]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], r14
lea rdx, str.DisplayVersion
xor r8d, r8d
mov r9d, 1
call qword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov ebx, eax
mov rcx, qword [rsp + 0xa0]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
je 0x140003f06
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400047ae
lea rdx, str.The_uninstaller_version_string_could_not_be_updated.
call fcn.140009f10
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400046aa
lea rdx, str.The_new_service_binary_was_copied_in.
call fcn.140009f10
mov ebp, 1
jmp 0x140004191
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14000476d
lea rdx, str.File_is_already_in_the_correct_location__no_action_needed_for_upgrade.__The_path_is:___ls_
lea r8, [rsp + 0xc0]
call fcn.140009f10
mov ebp, 1
jmp 0x140004204
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400047ef
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, str.Could_not_overwrite_old_service_binary_file._This_should_never_happen__but_if_it_does_the_next_upgrade_will_fix_it__the_service_is_not_a_critical_component_that_needs_to_be_installed_for_upgrades_to_work.____lu_
mov r8d, eax
call fcn.14000a020
mov r14, qword [rdi + 0x10]
mov rcx, r14
call fcn.14000a834
cmp rax, 4
jb 0x14000409c
mov r15, rax
inc rax
lea r12, [r15 + r15 + 2]
mov rcx, 0xffffffffffffffff
cmovns rcx, r12
call fcn.14000a774
mov rbx, rax
mov rcx, rax
xor edx, edx
mov r8, r12
call fcn.14000bd90
mov rcx, rbx
mov rdx, r14
mov r8, r15
call fcn.14000a784
lea rcx, [rbx + r15*2]
add rcx, 0xfffffffffffffffa
lea rdx, [0x14002fa54]
mov r8d, 3
call fcn.14000a784
mov rcx, qword [rdi + 0x10]
mov rdx, rbx
mov r8d, 9
call qword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x1400040d4
mov rdx, qword [rdi + 0x10]
lea rcx, [rsp + 0xc0]
xor r8d, r8d
call qword [sym.imp.KERNEL32.dll_CopyFileW]
mov ecx, dword [0x140038330]
mov edx, dword [0x140036d60]
mov r8, qword gs:[0x58]
mov rdx, qword [r8 + rdx*8]
mov edx, dword [rdx + 4]
test eax, eax
je 0x14000411a
cmp ecx, edx
jg 0x140004964
lea rdx, str.The_new_service_binary_was_copied_in_by_first_moving_the_old_one_out_of_the_way.
call fcn.140009f10
mov ebp, 1
jmp 0x140004130
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x140004923
lea rdx, str.Service_binary_path_was_less_than_3__service_will_not_be_updated.__This_should_never_happen.
call fcn.14000a020
xor ebp, ebp
jmp 0x140004191
mov eax, dword [0x140038330]
mov ecx, dword [0x140036d60]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x1400049e6
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8, qword [rdi + 0x10]
mov dword [rsp + 0x20], eax
lea rdx, str.Could_not_move_old_service_file_out_of_the_way_from:___ls__to___ls_._Service_will_not_be_upgraded.____lu_
mov r9, rbx
call fcn.14000a020
xor ebp, ebp
jmp 0x140004189
cmp ecx, edx
jg 0x140004a27
lea rdx, str.The_new_service_binary_could_not_be_copied_in._The_service_will_not_be_upgraded.
call fcn.14000a020
xor ebp, ebp
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_DeleteFileW]
mov ecx, dword [0x140038330]
mov edx, dword [0x140036d60]
mov r8, qword gs:[0x58]
mov rdx, qword [r8 + rdx*8]
mov edx, dword [rdx + 4]
test eax, eax
je 0x140004175
cmp ecx, edx
jg 0x1400049a5
lea rdx, str.The_old_temp_service_path_was_deleted:__ls.
mov r8, rbx
call fcn.140009f10
jmp 0x140004189
cmp ecx, edx
jg 0x140004a68
lea rdx, str.The_old_temp_service_path_was_not_deleted.
call fcn.14000a020
mov rcx, rbx
call fcn.14000a77c
lea rcx, [rsp + 0xc0]
xor edx, edx
mov r8d, 4
call qword [sym.imp.KERNEL32.dll_MoveFileExW]
mov ecx, dword [0x140038330]
mov edx, dword [0x140036d60]
mov r8, qword gs:[0x58]
mov rdx, qword [r8 + rdx*8]
mov edx, dword [rdx + 4]
test eax, eax
je 0x1400041e8
cmp ecx, edx
jg 0x1400046eb
lea rdx, str.Deleting_the_old_file_path_on_the_next_reboot:__ls.
lea r8, [rsp + 0xc0]
call fcn.140009f10
jmp 0x140004204
cmp ecx, edx
jg 0x140004830
lea rdx, str.Call_to_delete_the_old_file_path_failed:__ls.
lea r8, [rsp + 0xc0]
call fcn.14000a020
mov rcx, rdi
call fcn.14000a77c
jmp 0x140003989
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003250
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003250
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003291
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003291
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x14000321c
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x14000321c
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003309
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003309
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x14000373d
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x14000373d
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400037f3
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400037f3
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400038a7
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400038a7
lea rcx, [0x140038330]
call fcn.14000aa30
lea r14, str.Couldnt_remove_file_spec.____lu_
cmp dword [0x140038330], 0xffffffff
jne 0x140003871
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003871
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400038f5
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400038f5
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400036f1
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400036f1
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003933
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003933
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x14000396a
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x14000396a
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x14000348a
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x14000348a
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003535
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003535
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003db4
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003db4
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400039dd
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400039dd
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003a59
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003a59
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400037bd
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400037bd
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003f2b
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003f2b
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400041d2
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400041d2
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400034ea
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400034ea
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003f66
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003f66
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003efa
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003efa
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003fa9
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003fa9
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400041f0
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400041f0
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003b30
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003b30
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140003b70
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140003b70
lea rcx, [0x140038330]
call fcn.14000aa30
lea r14, str.Couldnt_append_file_spec.____lu_
jmp 0x1400043eb
lea rcx, [0x140038330]
call fcn.14000aa30
lea r14, str.Could_not_fix_service_path.____lu_
jmp 0x1400043eb
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400040c1
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400040c1
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140004086
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140004086
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140004164
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140004164
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x1400040f9
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x1400040f9
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x140004122
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x140004122
lea rcx, [0x140038330]
call fcn.14000aa30
cmp dword [0x140038330], 0xffffffff
jne 0x14000417d
mov qword [0x140038120], 0
lea rcx, [fcn.140001f60]
call fcn.14000abc8
lea rcx, [0x140038330]
call fcn.14000aa98
jmp 0x14000417d