Function at 0x402950
Capabilities:
Copy file
Create service
Delete file
Modify service
Move file
Set registry value
Stop service

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x454
mov eax, dword [0x43200c]
xor eax, ebp
mov dword [ebp - 0x10], eax
xor eax, eax
push 0xf003f
push eax
push eax
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
test eax, eax
je 0x402a0e
mov esi, eax
lea edi, [ebp - 0x426]
push 0x105
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x402a4f
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 0x402a90
cmp eax, 0x424
je 0x402a90
mov edi, ecx
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403734
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_open_service.____d_
push 0x433580
call fcn.0040aea0
add esp, 0xc
xor ebx, ebx
mov ecx, edi
jmp 0x4032b8
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4036ae
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_open_service_manager.____d_
push 0x433580
call fcn.0040aea0
add esp, 0xc
xor ebx, ebx
jmp 0x4032ca
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4036f1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_obtain_module_filename_when_attempting_to_install_service.____d_
push 0x433580
call fcn.0040aea0
add esp, 0xc
xor ebx, ebx
jmp 0x4032c3
test ecx, ecx
je 0x402ba8
lea edi, [ebp - 0x21c]
mov dword [ebp - 0x454], ecx
mov edx, edi
mov dword [edi], 0
call fcn.00404170
mov ebx, eax
mov eax, dword [edi]
test eax, eax
je 0x402ac0
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
test ebx, ebx
je 0x402afe
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403777
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 0x433580
call fcn.0040aea0
add esp, 0xc
lea edi, [ebp - 0x430]
xor eax, eax
push edi
push eax
push eax
push dword [ebp - 0x454]
call dword [sym.imp.ADVAPI32.dll_QueryServiceConfigW]
test eax, eax
jne 0x402b28
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x403056
mov ebx, dword [ebp - 0x430]
push ebx
call fcn.0040d784
add esp, 4
push edi
mov edi, eax
push ebx
push eax
push dword [ebp - 0x454]
call dword [sym.imp.ADVAPI32.dll_QueryServiceConfigW]
test eax, eax
je 0x402c64
cmp byte [0x433798], 0
mov dword [ebp - 0x45c], edi
jne 0x402ce8
mov edi, dword [edi + 0xc]
push edi
call fcn.00416709
add esp, 4
cmp eax, 3
jb 0x402ca5
mov ebx, eax
push str.maintenanceservice_tmp.exe
push edi
call fcn.00410093
add esp, 8
test eax, eax
jne 0x402ca5
cmp word [edi], 0x22
jne 0x402ca5
cmp word [edi + ebx*2 - 2], 0x22
sete bl
jmp 0x402ca7
xor ebx, ebx
inc ebx
cmp dword [ebp + 8], 0
je 0x4032b8
push edi
call dword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
xor eax, eax
push eax
push eax
push eax
push eax
push eax
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 0x4030d5
lea edi, [ebp - 0x21c]
mov ecx, eax
mov dword [ebp - 0x454], eax
mov edx, edi
mov dword [edi], 0
call fcn.00404170
mov ecx, dword [edi]
test ecx, ecx
je 0x402c14
push ecx
mov edi, eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, edi
test eax, eax
je 0x402c52
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403883
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 0x433580
call fcn.0040aea0
add esp, 0xc
mov edi, dword [ebp - 0x454]
mov ecx, edi
call fcn.00402490
jmp 0x402a07
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4037ba
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_open_service_but_could_not_query_service_config.____d_
push 0x433580
call fcn.0040aea0
add esp, 0xc
xor ebx, ebx
jmp 0x4032a9
xor ebx, ebx
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4037fd
test bl, bl
je 0x403109
push str.The_MozillaMaintenance_service_path_is_correct.
push 0x433580
call fcn.0040adf0
add esp, 8
mov edi, dword [ebp - 0x45c]
push dword [edi + 0xc]
call dword [sym.imp.SHLWAPI.dll_PathUnquoteSpacesW]
mov ecx, dword [edi + 0xc]
lea eax, [ebp - 0x440]
lea edi, [ebp - 0x43c]
lea ebx, [ebp - 0x438]
lea edx, [ebp - 0x434]
push eax
push edi
push ebx
call fcn.00403e10
add esp, 0xc
mov dword [ebp - 0x458], eax
lea eax, [ebp - 0x450]
lea edi, [ebp - 0x44c]
lea ebx, [ebp - 0x448]
lea ecx, [ebp - 0x426]
lea edx, [ebp - 0x444]
push eax
push edi
push ebx
call fcn.00403e10
add esp, 0xc
test eax, eax
je 0x40309d
cmp dword [ebp + 8], 2
je 0x402d6f
cmp dword [ebp - 0x458], 0
je 0x402d6f
mov eax, dword [ebp - 0x444]
cmp dword [ebp - 0x434], eax
jae 0x403220
mov edi, dword [ebp - 0x454]
mov ecx, edi
call fcn.00402490
push edi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
xor eax, eax
push 0xf003f
push eax
push eax
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
test eax, eax
je 0x4031d1
push 0xf01ff
push str.MozillaMaintenance
mov dword [ebp - 0x454], eax
push eax
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov edi, eax
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x40398f
test edi, edi
lea ebx, [ebp - 0x21c]
je 0x403272
push str.Sending_stop_request...
push 0x433580
call fcn.0040adf0
add esp, 8
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
push ebx
push 1
mov dword [ebp - 0x458], edi
push edi
call dword [sym.imp.ADVAPI32.dll_ControlService]
test eax, eax
jne 0x402e57
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x426
je 0x402e57
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403b64
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_sending_stop_request.____d_
push 0x433580
call fcn.0040aea0
add esp, 0xc
mov ebx, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push dword [ebp - 0x454]
call ebx
push dword [ebp - 0x458]
call ebx
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403a15
push str.Waiting_for_service_stop...
push 0x433580
call fcn.0040adf0
add esp, 8
mov ebx, 0x1e
push ebx
push str.MozillaMaintenance
call fcn.0040bbe0
add esp, 8
mov edi, eax
push ebx
push 0x42cd68
call fcn.0040bf10
add esp, 8
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
lea ebx, [ebp - 0x426]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403a58
push edi
push str.Done_waiting_for_service_stop__last_service_state:__d
push 0x433580
call fcn.0040adf0
add esp, 0xc
cmp edi, 1
mov edi, dword [ebp - 0x45c]
mov dword [ebp - 0x454], 0
jne 0x402c9e
push dword [edi + 0xc]
push ebx
call fcn.004166a7
add esp, 8
test eax, eax
je 0x4032e1
push 0
push dword [edi + 0xc]
push ebx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x403599
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403b21
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 0x433580
call fcn.0040aea0
add esp, 0xc
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x458], eax
push eax
call fcn.00416709
add esp, 4
cmp eax, 4
jb 0x40331a
xor ecx, ecx
mov ebx, eax
inc eax
dec ecx
add eax, eax
cmovb eax, ecx
push eax
call fcn.0040d784
add esp, 4
mov edi, eax
lea eax, [ebx + ebx + 2]
push eax
push 0
push edi
call fcn.0040fdd0
add esp, 0xc
push ebx
push dword [ebp - 0x458]
push edi
call fcn.00416b82
add esp, 0xc
lea eax, [edi + ebx*2 - 6]
mov ebx, edi
push 3
push 0x42cf0a
push eax
call fcn.00416b82
add esp, 0xc
push 9
push edi
mov edi, dword [ebp - 0x45c]
push dword [edi + 0xc]
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x403424
mov dword [ebp - 0x458], ebx
push 0
push dword [edi + 0xc]
lea eax, [ebp - 0x426]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov ebx, eax
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403c2d
test ebx, ebx
je 0x403487
push str.The_new_service_binary_was_copied_in_by_first_moving_the_old_one_out_of_the_way.
push 0x433580
call fcn.0040adf0
add esp, 8
xor ebx, ebx
inc ebx
jmp 0x40349b
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403840
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_determine_buffer_size_for_query_service_config.____d_
push 0x433580
call fcn.0040aea0
add esp, 0xc
mov ecx, dword [ebp - 0x454]
xor ebx, ebx
jmp 0x4032b8
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4038c6
push str.Could_not_obtain_version_number_from_new_path
push 0x433580
call fcn.0040aea0
add esp, 8
jmp 0x4032a1
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov edi, eax
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403909
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 0x4029f8
push edi
push str.The_MozillaMaintenance_path_is_NOT_correct._It_was:__ls
push 0x433580
call fcn.0040adf0
add esp, 0xc
push 0x20a
push 0
lea ebx, [ebp - 0x21c]
push ebx
call fcn.0040fdd0
add esp, 0xc
push 0x104
push edi
push ebx
call fcn.00416b82
add esp, 0xc
push ebx
call dword [sym.imp.SHLWAPI.dll_PathUnquoteSpacesW]
push ebx
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x40335a
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov edi, str.Couldnt_remove_file_spec.____d_
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4039d2
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push edi
push 0x433580
call fcn.0040aea0
add esp, 0xc
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x40394c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_fix_service_path._This_should_never_happen.____d_
push 0x433580
call fcn.0040aea0
add esp, 0xc
jmp 0x40326d
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov edi, dword [ebp - 0x45c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403a9b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_open_service_manager.____d_
push 0x433580
call fcn.0040aea0
add esp, 0xc
mov dword [ebp - 0x454], 0
jmp 0x402c9e
jne 0x40325c
mov eax, dword [ebp - 0x448]
cmp dword [ebp - 0x438], eax
jb 0x402d6f
jne 0x40325c
mov eax, dword [ebp - 0x44c]
cmp dword [ebp - 0x43c], eax
jb 0x402d6f
jne 0x40325c
mov eax, dword [ebp - 0x440]
cmp eax, dword [ebp - 0x450]
jb 0x402d6f
push 4
push 0
lea eax, [ebp - 0x426]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
xor ebx, ebx
inc ebx
jmp 0x4032a3
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_open_service.____d_
push 0x433580
call fcn.0040aea0
add esp, 0xc
push dword [ebp - 0x454]
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov dword [ebp - 0x454], 0
xor ebx, ebx
mov edi, dword [ebp - 0x45c]
push edi
call fcn.0040d78d
add esp, 4
mov ecx, dword [ebp - 0x454]
test ecx, ecx
je 0x4032c3
push ecx
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push esi
call dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040dec1
mov eax, ebx
add esp, 0x454
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403ba7
push ebx
push str.File_is_already_in_the_correct_location__no_action_needed_for_upgrade.__The_path_is:___ls_
push 0x433580
call fcn.0040adf0
add esp, 0xc
xor ebx, ebx
inc ebx
jmp 0x4032a9
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403bea
push str.Service_binary_path_was_less_than_3__service_will_not_be_updated.__This_should_never_happen.
push 0x433580
call fcn.0040aea0
add esp, 8
mov edi, dword [ebp - 0x45c]
xor ebx, ebx
jmp 0x403518
push 0x42cd68
push ebx
call fcn.0040c1f0
add esp, 8
test eax, eax
je 0x40346b
push ebx
call dword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
xor eax, eax
xor ecx, ecx
dec ecx
push eax
push eax
push eax
push eax
push eax
push eax
push ebx
push ecx
push ecx
push ecx
push dword [ebp - 0x454]
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfigW]
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov edi, eax
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403cb3
test edi, edi
mov edi, dword [ebp - 0x45c]
je 0x40358f
push ebx
push str.Fixed_service_path_to:__ls.
push 0x433580
call fcn.0040adf0
add esp, 0xc
mov byte [0x433798], 1
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403d39
mov ebx, dword [ebp + 8]
push ebx
push str.Restarting_install_action:__d
push 0x433580
call fcn.0040adf0
add esp, 0xc
push ebx
call fcn.00402950
add esp, 4
mov ebx, eax
jmp 0x4032a9
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403cf6
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 0x433580
call fcn.0040aea0
add esp, 0x14
mov eax, ebx
xor ebx, ebx
jmp 0x40350f
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov edi, str.Couldnt_append_file_spec.____d_
jmp 0x40316e
push str.The_new_service_binary_could_not_be_copied_in._The_service_will_not_be_upgraded.
push 0x433580
call fcn.0040aea0
add esp, 8
xor ebx, ebx
push dword [ebp - 0x458]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov dword [ebp - 0x460], eax
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [0x432a44]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403c70
cmp dword [ebp - 0x460], 0
je 0x4034f7
push dword [ebp - 0x458]
push str.The_old_temp_service_path_was_deleted:__ls.
push 0x433580
call fcn.0040adf0
mov eax, dword [ebp - 0x458]
add esp, 0xc
jmp 0x40350f
push str.The_old_temp_service_path_was_not_deleted.
push 0x433580
call fcn.0040aea0
add esp, 8
mov eax, dword [ebp - 0x458]
push eax
call fcn.0040d78d
add esp, 4
push 4
push 0
lea eax, [ebp - 0x426]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
mov dword [ebp - 0x458], eax
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [0x432a44]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403ade
cmp dword [ebp - 0x458], 0
je 0x403571
lea eax, [ebp - 0x426]
push eax
push str.Deleting_the_old_file_path_on_the_next_reboot:__ls.
push 0x433580
call fcn.0040adf0
jmp 0x403587
lea eax, [ebp - 0x426]
push eax
push str.Call_to_delete_the_old_file_path_failed:__ls.
push 0x433580
call fcn.0040aea0
add esp, 0xc
jmp 0x4032a9
mov edi, str.Could_not_fix_service_path.____d_
jmp 0x40317d
xor edi, edi
push 0x100
push edi
lea ebx, [ebp - 0x21c]
push ebx
call fcn.0040fdd0
add esp, 0xc
push dword [ebp - 0x450]
push dword [ebp - 0x44c]
push dword [ebp - 0x448]
push dword [ebp - 0x444]
push str._d._d._d._d
push 0x80
push ebx
call fcn.00401d10
add esp, 0x1c
lea eax, [ebp - 0x42c]
push eax
push 0x20206
push edi
push str.SoftwareMicrosoftWindowsCurrentVersionUninstallMozillaMaintenanceService
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x403604
mov edi, dword [ebp - 0x45c]
jmp 0x403640
push ebx
call fcn.00416709
add esp, 4
lea eax, [eax + eax + 2]
push eax
push ebx
push 1
push 0
push str.DisplayVersion
push dword [ebp - 0x42c]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edi, eax
push dword [ebp - 0x42c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
mov edi, dword [ebp - 0x45c]
je 0x403673
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403dbf
push str.The_uninstaller_version_string_could_not_be_updated.
push 0x433580
call fcn.0040adf0
add esp, 8
mov ecx, dword [0x432a44]
mov edx, dword fs:[0x2c]
mov eax, dword [0x43378c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x403d7c
push str.The_new_service_binary_was_copied_in.
push 0x433580
call fcn.0040adf0
add esp, 8
xor ebx, ebx
inc ebx
jmp 0x403518
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402a2f
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402a2f
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402a70
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402a70
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x4029ec
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x4029ec
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402ae5
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402ae5
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402c85
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402c85
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402cc8
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402cc8
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x403077
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x403077
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402c39
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402c39
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x4030be
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x4030be
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x4030f8
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x4030f8
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x4031b3
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x4031b3
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402dd4
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402dd4
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x40317d
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x40317d
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402e8e
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402e8e
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402eea
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402eea
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x4031f8
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x4031f8
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x403550
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x403550
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402f5f
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402f5f
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x402e3e
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x402e3e
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x403302
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x403302
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x40333b
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x40333b
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x403034
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x403034
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x4034ce
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x4034ce
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x4033b5
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x4033b5
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x403445
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x403445
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x4033fe
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x4033fe
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x403694
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x403694
push 0x43378c
call fcn.0040d7c7
add esp, 4
cmp dword [0x43378c], 0xffffffff
jne 0x403661
mov dword [0x433580], 0
push 0x401f00
call fcn.0040da3c
add esp, 4
push 0x43378c
call fcn.0040d819
add esp, 4
jmp 0x403661