Function at 0x402b50
Capabilities:
Copy file
Create service
Delete file
Get installed programs
Modify service
Move file
Set registry value
Stop service

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x470
mov eax, dword [0x43000c]
xor ecx, ecx
xor edx, edx
xor eax, ebp
mov dword [esp + 0x468], eax
lea eax, [esp + 0x3c]
mov dword [esp + 0x3c], 0
push eax
push 2
push 0
push 0
call fcn.00409480
add esp, 0x10
test eax, eax
jns 0x402bca
mov esi, eax
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x40366c
push esi
push dword [esp + 0x40]
push str.Unable_to_set_the_permissions_on_the_update_directory___S_:__d
push 0x431588
call fcn.0040b8d0
add esp, 0x10
push 0xf003f
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
test eax, eax
je 0x402c78
mov esi, eax
lea edi, [esp + 0x46]
push 0x105
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x402cb9
push 0xf01ff
push str.MozillaMaintenance
push esi
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, ebx
test ebx, ebx
jne 0x402cfa
cmp eax, 0x424
je 0x402cfa
mov eax, dword [0x43199c]
mov edi, ecx
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403738
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_open_service.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
xor ebx, ebx
mov ecx, edi
test ecx, ecx
jne 0x403a50
jmp 0x403a57
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4036b0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_open_service_manager.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
xor ebx, ebx
jmp 0x403a5e
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4036f4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_obtain_module_filename_when_attempting_to_install_service.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
xor ebx, ebx
jmp 0x403a57
test ecx, ecx
je 0x402e13
lea edx, [esp + 0x250]
mov dword [esp + 0x250], 0
mov dword [esp + 0xc], ecx
call fcn.00404520
mov ebx, eax
mov eax, dword [esp + 0x250]
test eax, eax
je 0x402d31
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
test ebx, ebx
je 0x402d6f
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x40377c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_reset_security_ACE_on_service_handle._It_might_not_be_possible_to_start_the_service._This_error_should_never_happen.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
lea edi, [esp + 0x38]
push edi
push 0
push 0
push dword [esp + 0x18]
call dword [sym.imp.ADVAPI32.dll_QueryServiceConfigW]
test eax, eax
jne 0x402d95
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x403316
mov ebx, dword [esp + 0x38]
push ebx
call fcn.0040c661
add esp, 4
push edi
mov edi, eax
push ebx
push eax
push dword [esp + 0x18]
call dword [sym.imp.ADVAPI32.dll_QueryServiceConfigW]
test eax, eax
je 0x402ed7
cmp byte [0x4319a8], 0
mov dword [esp + 0x10], edi
jne 0x402f59
mov edi, dword [edi + 0xc]
push edi
call fcn.004157a2
add esp, 4
cmp eax, 3
jb 0x402f18
mov ebx, eax
push str.maintenanceservice_tmp.exe
push edi
call fcn.0040ee93
add esp, 8
test eax, eax
jne 0x402f18
movzx eax, word [edi]
cmp eax, 0x22
jne 0x402f18
movzx eax, word [edi + ebx*2 - 2]
cmp eax, 0x22
sete bl
jmp 0x402f1a
cmp dword [ebp + 8], 0
mov ebx, 1
je 0x403a4c
push edi
call dword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
push 0
push 0
push 0
push 0
push 0
push edi
push 1
push 3
push 0x10
push 0xf01ff
push str.Mozilla_Maintenance_Service
push str.MozillaMaintenance
push esi
call dword [sym.imp.ADVAPI32.dll_CreateServiceW]
test eax, eax
je 0x40339b
lea edx, [esp + 0x250]
mov ecx, eax
mov dword [esp + 0x250], 0
mov dword [esp + 0xc], eax
call fcn.00404520
mov edi, eax
mov eax, dword [esp + 0x250]
test eax, eax
je 0x402e89
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
test edi, edi
je 0x402ec7
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403ad5
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 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.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
mov edi, dword [esp + 0xc]
mov ecx, edi
call fcn.004026b0
jmp 0x402c69
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4037c0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_open_service_but_could_not_query_service_config.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
xor ebx, ebx
jmp 0x403a3f
xor ebx, ebx
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403804
test bl, bl
je 0x40384b
push str.The_MozillaMaintenance_service_path_is_correct.
push 0x431588
call fcn.0040b850
add esp, 8
mov edi, dword [esp + 0x10]
push dword [edi + 0xc]
call dword [sym.imp.SHLWAPI.dll_PathUnquoteSpacesW]
mov ecx, dword [edi + 0xc]
lea eax, [esp + 0x28]
lea edi, [esp + 0x2c]
lea ebx, [esp + 0x30]
lea edx, [esp + 0x34]
push eax
push edi
push ebx
call fcn.004041b0
add esp, 0xc
mov dword [esp + 8], eax
lea eax, [esp + 0x18]
lea edi, [esp + 0x1c]
lea ebx, [esp + 0x20]
lea ecx, [esp + 0x46]
lea edx, [esp + 0x24]
push eax
push edi
push ebx
call fcn.004041b0
add esp, 0xc
test eax, eax
je 0x403363
cmp dword [ebp + 8], 2
je 0x402fc6
cmp dword [esp + 8], 0
je 0x402fc6
mov eax, dword [esp + 0x24]
cmp dword [esp + 0x34], eax
jae 0x40341c
mov edi, dword [esp + 0xc]
mov ecx, edi
call fcn.004026b0
push edi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push 0xf003f
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
test eax, eax
je 0x4033cf
push 0xf01ff
push str.MozillaMaintenance
mov dword [esp + 0x14], eax
push eax
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov edi, eax
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403ba1
test edi, edi
lea ebx, [esp + 0x250]
je 0x403462
push str.Sending_stop_request...
push 0x431588
call fcn.0040b850
add esp, 8
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
push ebx
push 1
mov dword [esp + 0x10], edi
push edi
call dword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
jne 0x4030a9
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x426
je 0x4030a9
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403e5d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_sending_stop_request.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
mov ebx, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push dword [esp + 0xc]
call ebx
push dword [esp + 8]
call ebx
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403c29
push str.Waiting_for_service_stop...
push 0x431588
call fcn.0040b850
add esp, 8
xor edi, edi
push 0x1e
push str.MozillaMaintenance
call fcn.0040bf60
add esp, 8
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [esp + 8], eax
push 0x42bd10
call fcn.0040c400
add esp, 4
cmp eax, 0x490
je 0x40312a
push 0x3e8
call ebx
inc edi
cmp edi, 0x1e
jb 0x403109
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403c6d
mov edi, dword [esp + 8]
push edi
push str.Done_waiting_for_service_stop__last_service_state:__d
push 0x431588
call fcn.0040b850
add esp, 0xc
cmp edi, 1
mov edi, dword [esp + 0x10]
lea ebx, [esp + 0x46]
mov dword [esp + 0xc], 0
jne 0x403498
push dword [edi + 0xc]
push ebx
call fcn.00415740
add esp, 8
test eax, eax
je 0x40349f
push 0
push dword [edi + 0xc]
push ebx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x4034d5
xorps xmm0, xmm0
movaps xmmword [esp + 0x340], xmm0
movaps xmmword [esp + 0x330], xmm0
movaps xmmword [esp + 0x320], xmm0
movaps xmmword [esp + 0x310], xmm0
movaps xmmword [esp + 0x300], xmm0
movaps xmmword [esp + 0x2f0], xmm0
movaps xmmword [esp + 0x2e0], xmm0
movaps xmmword [esp + 0x2d0], xmm0
movaps xmmword [esp + 0x2c0], xmm0
movaps xmmword [esp + 0x2b0], xmm0
movaps xmmword [esp + 0x2a0], xmm0
movaps xmmword [esp + 0x290], xmm0
movaps xmmword [esp + 0x280], xmm0
movaps xmmword [esp + 0x270], xmm0
movaps xmmword [esp + 0x260], xmm0
movaps xmmword [esp + 0x250], xmm0
push dword [esp + 0x18]
push dword [esp + 0x20]
push dword [esp + 0x28]
push dword [esp + 0x30]
push str._d._d._d._d
push 0x80
lea ebx, [esp + 0x268]
push ebx
call fcn.00401f80
add esp, 0x1c
lea eax, [esp + 0x40]
push eax
push 0x20206
push 0
push str.SoftwareMicrosoftWindowsCurrentVersionUninstallMozillaMaintenanceService
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4032a6
push ebx
call fcn.004157a2
add esp, 4
lea eax, [eax + eax + 2]
push eax
push ebx
push 1
push 0
push str.DisplayVersion
push dword [esp + 0x54]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edi, eax
push dword [esp + 0x40]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
mov edi, dword [esp + 0x10]
je 0x4032d9
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403ee5
push str.The_uninstaller_version_string_could_not_be_updated.
push 0x431588
call fcn.0040b850
add esp, 8
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403e19
push str.The_new_service_binary_was_copied_in.
push 0x431588
call fcn.0040b850
add esp, 8
mov ebx, 1
jmp 0x4040bb
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403a91
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_determine_buffer_size_for_query_service_config.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
mov ecx, dword [esp + 0xc]
xor ebx, ebx
test ecx, ecx
jne 0x403a50
jmp 0x403a57
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403b19
push str.Could_not_obtain_version_number_from_new_path
push 0x431588
call fcn.0040b8d0
add esp, 8
jmp 0x40348d
mov edi, eax
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403b5d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_create_Windows_service._This_error_should_never_happen_since_a_service_install_should_only_be_called_when_elevated.____d_
jmp 0x402c5a
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov edi, dword [esp + 0x10]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403cb1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_open_service_manager.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
mov dword [esp + 0xc], 0
xor ebx, ebx
jmp 0x403a3f
jne 0x40344c
mov eax, dword [esp + 0x20]
cmp dword [esp + 0x30], eax
jb 0x402fc6
jne 0x40344c
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x2c], eax
jb 0x402fc6
jne 0x40344c
mov eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x18]
jb 0x402fc6
push 4
push 0
lea eax, [esp + 0x4e]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
mov ebx, 1
jmp 0x40348f
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_open_service.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
push dword [esp + 0xc]
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [esp + 0xc], 0
xor ebx, ebx
mov edi, dword [esp + 0x10]
jmp 0x403a3f
xor ebx, ebx
jmp 0x403a3f
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403ea1
push ebx
push str.File_is_already_in_the_correct_location__no_action_needed_for_upgrade.__The_path_is:___ls_
push 0x431588
call fcn.0040b850
jmp 0x403a37
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403f29
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 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.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
mov eax, dword [edi + 0xc]
mov dword [esp + 8], eax
push eax
call fcn.004157a2
add esp, 4
cmp eax, 4
jb 0x4035e7
mov ebx, eax
inc eax
mov ecx, 0xffffffff
add eax, eax
cmovae ecx, eax
push ecx
call fcn.0040c661
add esp, 4
mov edi, eax
lea eax, [ebx + ebx + 2]
push eax
push 0
push edi
call fcn.0040ebd0
add esp, 0xc
push ebx
push dword [esp + 0xc]
push edi
call fcn.00415c1b
add esp, 0xc
lea eax, [edi + ebx*2 - 6]
mov ebx, edi
push 3
push 0x42beb2
push eax
call fcn.00415c1b
add esp, 0xc
push 9
push edi
mov edi, dword [esp + 0x18]
push dword [edi + 0xc]
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x403625
mov dword [esp + 8], ebx
push 0
push dword [edi + 0xc]
lea eax, [esp + 0x4e]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov ebx, eax
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403fb1
test ebx, ebx
je 0x403ff8
push str.The_new_service_binary_was_copied_in_by_first_moving_the_old_one_out_of_the_way.
push 0x431588
call fcn.0040b850
add esp, 8
mov ebx, 1
jmp 0x40400c
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403f6d
push str.Service_binary_path_was_less_than_3__service_will_not_be_updated.__This_should_never_happen.
push 0x431588
call fcn.0040b8d0
add esp, 8
mov edi, dword [esp + 0x10]
xor ebx, ebx
jmp 0x4040bb
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x40416c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ebx
push dword [edi + 0xc]
push str.Could_not_move_old_service_file_out_of_the_way_from:___ls__to___ls_._Service_will_not_be_upgraded.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0x14
mov eax, ebx
xor ebx, ebx
jmp 0x4040b2
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x402bb3
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x402bb3
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x402c99
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x402c99
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x402cda
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x402cda
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x402c4e
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x402c4e
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x402d56
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x402d56
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x402ef8
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x402ef8
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x402f3b
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
test bl, bl
jne 0x402f43
push edi
push str.The_MozillaMaintenance_path_is_NOT_correct._It_was:__ls
push 0x431588
call fcn.0040b850
add esp, 0xc
push 0x20a
push 0
lea ebx, [esp + 0x258]
push ebx
call fcn.0040ebd0
add esp, 0xc
push 0x104
push edi
push ebx
call fcn.00415c1b
add esp, 0xc
push ebx
call dword [sym.imp.SHLWAPI.dll_PathUnquoteSpacesW]
push ebx
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
je 0x4039c2
push ebx
call fcn.004157a2
add esp, 4
add eax, 0x16
cmp eax, 0x103
ja 0x403982
push 0x42bd10
push ebx
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
test eax, eax
je 0x403982
push ebx
call dword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
push 0
push 0
push 0
push 0
push 0
push 0
push ebx
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push dword [esp + 0x34]
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfigW]
mov ebx, eax
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov edi, dword [esp + 0x10]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403d7d
test ebx, ebx
je 0x403dc4
lea eax, [esp + 0x250]
push eax
push str.Fixed_service_path_to:__ls.
push 0x431588
call fcn.0040b850
add esp, 0xc
mov byte [0x4319a8], 1
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403dd5
mov eax, dword [ebp + 8]
mov ebx, eax
push eax
push str.Restarting_install_action:__d
push 0x431588
call fcn.0040b850
add esp, 0xc
push ebx
call fcn.00402b50
add esp, 4
mov ebx, eax
jmp 0x403a3f
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov edi, dword [esp + 0x10]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403cf5
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Couldnt_append_file_spec.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
jmp 0x403a00
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403d39
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Couldnt_remove_file_spec.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
mov edi, dword [esp + 0x10]
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403be5
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_fix_service_path._This_should_never_happen.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
mov ebx, 1
push edi
call fcn.0040c66a
add esp, 4
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x403a57
push ecx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x3c], 0
test eax, eax
jne 0x403a86
mov ecx, dword [esp + 0x468]
xor ecx, ebp
call fcn.0040ce4a
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push eax
call fcn.0040c66a
add esp, 4
jmp 0x403a6e
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x403337
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x403337
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x402eae
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x402eae
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x403384
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x403384
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4033be
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4033be
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x403027
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x403027
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x403a21
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x403a21
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4030dc
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4030dc
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40314b
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x40314b
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4033f4
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4033f4
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4039a7
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4039a7
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4039e3
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4039e3
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x403910
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
test ebx, ebx
jne 0x403918
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_fix_service_path.____d_
jmp 0x4039b3
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40395a
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x40395a
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4032fa
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4032fa
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x403090
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x403090
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4034c0
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4034c0
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4032c7
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4032c7
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4034f6
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4034f6
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x403608
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x403608
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4035c3
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
test ebx, ebx
jne 0x4035cb
push str.The_new_service_binary_could_not_be_copied_in._The_service_will_not_be_upgraded.
push 0x431588
call fcn.0040b8d0
add esp, 8
xor ebx, ebx
push dword [esp + 8]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov dword [esp + 0x14], eax
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x40405a
cmp dword [esp + 0x14], 0
je 0x40409c
push dword [esp + 8]
push str.The_old_temp_service_path_was_deleted:__ls.
push 0x431588
call fcn.0040b850
mov eax, dword [esp + 0x14]
add esp, 0xc
jmp 0x4040b2
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x404037
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
cmp dword [esp + 0x14], 0
jne 0x40403e
push str.The_old_temp_service_path_was_not_deleted.
push 0x431588
call fcn.0040b8d0
add esp, 8
mov eax, dword [esp + 8]
push eax
call fcn.0040c66a
add esp, 4
push 4
push 0
lea eax, [esp + 0x4e]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
mov dword [esp + 8], eax
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x40410e
cmp dword [esp + 8], 0
je 0x404150
lea eax, [esp + 0x46]
push eax
push str.Deleting_the_old_file_path_on_the_next_reboot:__ls.
push 0x431588
call fcn.0040b850
add esp, 0xc
jmp 0x403a3f
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4040eb
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
cmp dword [esp + 8], 0
jne 0x4040f2
lea eax, [esp + 0x46]
push eax
push str.Call_to_delete_the_old_file_path_failed:__ls.
push 0x431588
call fcn.0040b8d0
add esp, 0xc
jmp 0x403a3f
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x403646
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x403646