Function at 0x405860
Capabilities:
Copy file
Create directory
Create process on windows
Read file on windows
Resolve function by parsing pe exports
Terminate process

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xf10
mov eax, dword [0x43000c]
mov ebx, dword [ebp + 8]
xor eax, ebp
cmp ebx, 2
mov dword [esp + 0xf08], eax
jg 0x4058bf
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 0x405937
push str.Not_enough_command_line_arguments_to_execute_a_service_command
push 0x431588
call fcn.0040b8d0
add esp, 8
xor esi, esi
jmp 0x405bf5
mov edi, dword [ebp + 0xc]
lea esi, [esp + 0xab4]
push esi
call dword [sym.imp.ole32.dll_CoCreateGuid]
test eax, eax
js 0x4059e6
mov ebx, edi
lea edi, [esp + 0xcfc]
mov dword [esp + 0xcfc], 0x42c014
push edi
push esi
call dword [sym.imp.RPCRT4.dll_UuidToStringW]
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 0x40597b
test esi, esi
je 0x4059be
mov edi, ebx
push dword [ebx + 8]
push str.Executing_service_command__ls
push 0x431588
call fcn.0040b850
add esp, 0xc
jmp 0x4059e3
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4058a6
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4058a6
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405913
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
test esi, esi
jne 0x40591b
push dword [esp + 0xcfc]
push dword [ebx + 8]
push str.Executing_service_command__ls__ID:__ls
push 0x431588
call fcn.0040b850
add esp, 0x10
push edi
mov edi, ebx
call dword [sym.imp.RPCRT4.dll_RpcStringFreeW]
mov ebx, dword [ebp + 8]
push str.software_update
push dword [edi + 8]
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x405a4b
push str.fix_update_directory_perms
push dword [edi + 8]
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x405ade
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 0x406aa8
push dword [edi + 8]
push str.Service_command_not_recognized:__ls.
push 0x431588
call fcn.0040b8d0
add esp, 0xc
xor ebx, ebx
jmp 0x405bad
cmp ebx, 4
mov dword [esp + 0x18], 0
jl 0x405aa4
push dword [edi + 0x10]
call fcn.0040bb60
add esp, 4
test al, al
je 0x405aa4
mov esi, dword [edi + 0x10]
push esi
call fcn.004157a2
add esp, 4
cmp eax, 9
ja 0x405c0d
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 0x406bb8
push str.The_patch_directory_path_length_is_not_valid_for_this_application.
jmp 0x405aca
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 0x406aec
push str.The_patch_directory_path_is_not_valid_for_this_application.
push 0x431588
call fcn.0040b8d0
add esp, 8
xor esi, esi
jmp 0x405bf5
cmp ebx, 3
mov dword [esp + 0xcfc], 0
jg 0x405b25
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 0x406b30
push str.Didnt_get_an_install_dir_for_fix_update_directory_perms
push 0x431588
call fcn.0040b8d0
add esp, 8
xor ecx, ecx
jmp 0x405b28
mov ecx, dword [edi + 0xc]
lea eax, [esp + 0xcfc]
xor edx, edx
push eax
push 2
push 0
push 0
call fcn.00409480
add esp, 0x10
test eax, eax
js 0x405b54
mov ebx, edi
mov edi, dword [esp + 0xcfc]
mov esi, 1
jmp 0x405b96
mov esi, eax
mov eax, dword [0x43199c]
mov ecx, dword [0x430a44]
mov edx, dword fs:[0x2c]
mov ebx, edi
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x406b74
mov edi, dword [esp + 0xcfc]
push esi
push edi
push str.Unable_to_set_the_permissions_on_the_update_directory___S_:__d
push 0x431588
call fcn.0040b8d0
add esp, 0x10
xor esi, esi
test edi, edi
mov dword [esp + 0xcfc], 0
jne 0x405c90
mov edi, ebx
mov ebx, esi
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 0x4069f1
test ebx, ebx
mov eax, str.Failure
mov ecx, str.Success
cmove ecx, eax
push ecx
push dword [edi + 4]
push str.service_command__ls_complete_with_result:__ls.
push 0x431588
call fcn.0040b850
add esp, 0x10
mov esi, ebx
mov ecx, dword [esp + 0xf08]
xor ecx, ebp
call fcn.0040ce4a
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [esi + eax*2 - 0x14]
push 0xa
push 0x42bfd8
push eax
call fcn.00413dae
add esp, 0xc
test eax, eax
je 0x405c50
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 0x406bfc
push str.The_patch_directory_path_subdirectory_is_not_valid_for_this_application.
jmp 0x405aca
cmp ebx, 5
jl 0x405c9e
push dword [edi + 0x14]
call fcn.0040bb60
add esp, 4
test al, al
je 0x405c9e
lea eax, [ebx - 3]
cmp eax, 4
mov dword [esp], eax
jne 0x405d16
push 0x42bfd2
push dword [edi + 0x18]
call fcn.00415740
add esp, 8
test eax, eax
jne 0x405d1b
jmp 0x405f05
push edi
call fcn.0040c66a
add esp, 4
jmp 0x405ba9
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 0x406c40
push str.The_install_directory_path_is_not_valid_for_this_application.
push 0x431588
call fcn.0040b8d0
add esp, 8
lea eax, [esp + 0x18]
push eax
push 0x37
push dword [edi + 0x10]
call fcn.0040c240
add esp, 0xc
test eax, eax
jne 0x405ad7
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 0x406c84
push str.Could_not_write_update.status_for_previous_failure.
jmp 0x405aca
cmp ebx, 7
jl 0x405d56
lea esi, [edi + 0x18]
push str._replace
push dword [esi]
call fcn.0040ee93
add esp, 8
test eax, eax
jne 0x405f05
mov esi, dword [esi]
movzx eax, word [esi]
test ax, ax
je 0x405f05
add esi, 2
movzx eax, ax
push eax
call fcn.004153dc
add esp, 4
test eax, eax
jne 0x405d37
cmp ebx, 6
jl 0x405dc9
push dword [edi + 0x18]
call fcn.0040bb60
add esp, 4
test al, al
je 0x405dc9
push 0x104
push dword [edi + 0x14]
push dword [edi + 0x18]
call fcn.00413dae
add esp, 0xc
test eax, eax
je 0x405f05
cmp ebx, 7
jge 0x405e08
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 0x406ff8
push str.Installation_directory_and_working_directory_must_be_the_same_for_non_staged_updates._Exiting.
push 0x431588
call fcn.0040b8d0
add esp, 8
lea eax, [esp + 0x18]
push eax
push 0x36
jmp 0x405cd8
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 0x406cc8
push str.The_working_directory_path_is_not_valid_for_this_application.
push 0x431588
call fcn.0040b8d0
add esp, 8
lea eax, [esp + 0x18]
push eax
push 0x38
jmp 0x405cd8
push 0x42bfd2
push dword [edi + 0x1c]
call fcn.00415740
add esp, 8
test eax, eax
je 0x405e34
push str._replace
push dword [edi + 0x1c]
call fcn.0040ee93
add esp, 8
test eax, eax
je 0x405d8a
mov eax, dword [edi + 0x18]
sub esp, 0x10
lea esi, [esp + 0xd0c]
mov dword [esp + 0xc], eax
mov dword [esp], esi
call fcn.00407bb0
add esp, 0x10
push esi
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
je 0x405eb3
push 0x104
mov eax, dword [ebp + 0xc]
push dword [eax + 0x14]
push esi
call fcn.00413dae
add esp, 0xc
test eax, eax
je 0x405eff
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 0x407080
push str.The_apply_to_directory_must_be_the_same_as_or_a_child_of_the_installation_directory__Exiting.
push 0x431588
call fcn.0040b8d0
add esp, 8
lea eax, [esp + 0x18]
push eax
push 0x34
jmp 0x405ef4
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 0x4070c4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Couldnt_remove_file_spec_when_attempting_to_verify_the_working_directory_path.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
lea eax, [esp + 0x18]
push eax
push 0x47
mov eax, dword [ebp + 0xc]
push dword [eax + 0x10]
jmp 0x405cdb
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
lea esi, [edi + 0xc]
lea eax, [esp + 0x8aa]
push 0x20a
push 0
push eax
call fcn.0040ebd0
add esp, 0xc
mov ecx, dword [esp]
lea eax, [esp + 0x8aa]
mov dword [esp + 4], esi
mov edx, esi
push eax
call fcn.00404ce0
add esp, 4
test eax, eax
je 0x406080
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0
lea ecx, [esp + 0x8aa]
xor edx, edx
push eax
push 2
push 0
push 0
call fcn.00409480
add esp, 0x10
test eax, eax
jns 0x405fa2
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 0x406e1c
push esi
push dword [esp + 0x18]
push str.Unable_to_set_the_permissions_on_the_update_directory___S_:__d
push 0x431588
call fcn.0040b8d0
add esp, 0x10
lea esi, [esp + 0xcfc]
push esi
push 0x20119
push 0
push str.SOFTWAREMozillaMaintenanceService3932ecacee736d366d6436db0f55bce4
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x4060bf
push esi
lea eax, [esp + 0x8ae]
push eax
call fcn.0040a8e0
add esp, 8
test eax, eax
je 0x4060c8
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 0x406dd8
push esi
push str.Checking_for_Maintenance_Service_registry._key:__ls
push 0x431588
call fcn.0040b850
add esp, 0xc
lea eax, [esp + 0xac4]
mov dword [esp + 0xac4], 0
push eax
push 0x20119
push 0
push esi
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x406124
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 0x406ea4
push str.The_maintenance_service_registry_key_does_not_exist.
push 0x431588
call fcn.0040b8d0
add esp, 8
lea eax, [esp + 0x18]
push eax
push 0x39
jmp 0x4060cf
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 0x406d0c
push str.Could_not_get_the_installation_directory
push 0x431588
call fcn.0040b8d0
add esp, 8
lea eax, [esp + 0x18]
push eax
push 0x21
jmp 0x405cd8
push dword [esp + 0xcfc]
jmp 0x40612b
lea eax, [esp + 0x18]
push eax
push 0x35
push dword [edi + 0x10]
call fcn.0040c240
add esp, 0xc
test eax, eax
jne 0x406111
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 0x406f2c
push str.Could_not_write_update.status_for_previous_failure.
push 0x431588
call fcn.0040b8d0
add esp, 8
mov ebx, edi
mov dword [esp], 0
mov edi, 1
jmp 0x4065ab
push dword [esp + 0xac4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea esi, [esp + 0x6a0]
push 0x20a
push 0
push esi
call fcn.0040ebd0
add esp, 0xc
push 0x104
lea eax, [esp + 0x8ae]
push eax
push esi
call fcn.00415c1b
add esp, 0xc
push esi
call fcn.004157a2
add esp, 4
add eax, 0xb
cmp eax, 0x103
ja 0x406181
push str.updater.exe
push esi
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
test eax, eax
jne 0x4061b4
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 0x406e60
push str.Install_directory_updater_could_not_be_determined.
push 0x431588
call fcn.0040b8d0
add esp, 8
lea eax, [esp + 0x18]
lea ecx, [esp + 0x6a0]
lea edx, [esp + 0x8aa]
push eax
push dword [edi + 0x10]
call fcn.00404e20
add esp, 8
lea esi, [esp + 0x496]
mov byte [esp + 0xc], al
push 0x20a
push 0
push esi
call fcn.0040ebd0
add esp, 0xc
cmp byte [esp + 0xc], 0
je 0x4064e9
push 0x104
push esi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x406441
push esi
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
je 0x4064af
push esi
call fcn.004157a2
add esp, 4
add eax, 6
cmp eax, 0x103
ja 0x406470
push 0x42bd50
push esi
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
test eax, eax
je 0x406470
push 0
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push esi
call fcn.004157a2
add esp, 4
add eax, 0xb
cmp eax, 0x103
ja 0x406470
push str.updater.exe
push esi
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
test eax, eax
je 0x406470
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 0x407108
push esi
lea eax, [esp + 0x6a4]
mov edi, eax
push eax
mov eax, dword [esp + 0xc]
push dword [eax]
push str.Passed_in_path:__ls__ignored___Install_dir_has:__ls__Using_this_path_for_updating:__ls.
push 0x431588
call fcn.0040b850
add esp, 0x14
mov ecx, esi
call fcn.004056d0
push 0
push esi
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov edi, dword [ebp + 0xc]
test eax, eax
je 0x4064e9
mov eax, dword [esp + 4]
mov dword [eax], esi
lea eax, [esp + 0x28c]
push 0x20a
push 0
push eax
call fcn.0040ebd0
add esp, 0xc
lea edi, [esp + 0x82]
push 0x20a
push 0
push edi
call fcn.0040ebd0
add esp, 0xc
push str.updater.ini
push esi
mov esi, edi
push edi
call fcn.0040bc40
add esp, 0xc
test eax, eax
je 0x40639e
push str.updater.ini
lea eax, [esp + 0x6a4]
push eax
lea eax, [esp + 0x294]
push eax
call fcn.0040bc40
add esp, 0xc
test eax, eax
je 0x40639e
push 0
push esi
lea eax, [esp + 0x294]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x40639e
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 0x4072e4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
lea eax, [esp + 0x294]
push eax
push str.Could_not_copy_updater.ini_from:__ls_to__ls.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0x14
cmp dword [esp], 2
ja 0x4065da
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 0x40714c
push str.Not_enough_command_line_parameters_specified._Updating_update.status.
push 0x431588
call fcn.0040b8d0
add esp, 8
cmp dword [esp], 2
jne 0x406400
lea eax, [esp + 0x18]
push eax
push 0x19
mov eax, dword [ebp + 0xc]
push dword [eax + 0x10]
call fcn.0040c240
add esp, 0xc
xor esi, esi
test eax, eax
jne 0x40787a
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 0x407190
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_write_update.status_service_update_failure.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
xor esi, esi
jmp 0x40787a
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 0x406f70
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_obtain_module_filename_when_attempting_to_use_a_secure_updater_path.____d_
jmp 0x4064dc
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 0x406fb4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Couldnt_append_file_spec_when_attempting_to_use_a_secure_updater_path.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
mov edi, dword [ebp + 0xc]
jmp 0x4064e9
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 0x40703c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Couldnt_remove_file_spec_when_attempting_to_use_a_secure_updater_path.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
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 0x406d94
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_copy_path_to_secure_location.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
lea eax, [esp + 0x18]
push eax
push 0x31
push dword [edi + 0x10]
call fcn.0040c240
add esp, 0xc
xor esi, esi
test eax, eax
jne 0x40656e
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 0x406ee8
push str.Could_not_write_update.status_could_not_copy_updater_error
push 0x431588
call fcn.0040b8d0
add esp, 8
mov dword [esp], esi
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 0x406d50
mov ebx, edi
push dword [edi + 8]
push str.Service_command__ls_complete.
push 0x431588
call fcn.0040b850
add esp, 0xc
xor edi, edi
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], 0
test eax, eax
jne 0x4065cf
xor esi, esi
test edi, edi
mov edi, ebx
mov ebx, dword [esp]
jne 0x405bf5
jmp 0x405bad
push eax
call fcn.0040c66a
add esp, 4
jmp 0x4065bb
lea esi, [esp + 0xac4]
push 0x20a
push 0
push esi
call fcn.0040ebd0
add esp, 0xc
mov ecx, dword [esp]
mov edx, dword [esp + 4]
push esi
call fcn.00404ce0
add esp, 4
test eax, eax
je 0x406749
mov eax, dword [ebp + 0xc]
lea edx, [esp + 0xac4]
lea esi, [esp + 0x18]
mov ecx, dword [eax + 0xc]
push esi
push dword [eax + 0x10]
call fcn.00404e20
add esp, 8
mov ecx, dword [0x43199c]
mov edx, dword [0x430a44]
mov esi, dword fs:[0x2c]
test al, al
mov edx, dword [esi + edx*4]
mov edx, dword [edx + 4]
je 0x4067d3
cmp ecx, edx
jg 0x407218
push str.Starting_update_process_as_the_service_in_session_0.
push 0x431588
call fcn.0040b850
add esp, 8
xorps xmm0, xmm0
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x34], 0x48
mov dword [esp + 0x3c], str.winsta0Default
lea eax, [esp + 0x1c]
movaps xmmword [esp + 0x20], xmm0
push dword [esp + 4]
mov esi, dword [esp + 4]
push esi
push eax
call fcn.00402210
add esp, 0xc
cmp esi, 4
jne 0x406852
push 0x42bfd2
mov eax, dword [ebp + 0xc]
push dword [eax + 0x18]
call fcn.00415740
add esp, 8
test eax, eax
jne 0x40685c
mov esi, 2
cmp esi, dword [esp]
jle 0x4068a1
jmp 0x4068b5
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 0x4071d4
push str.Could_not_get_the_installation_directory
push 0x431588
call fcn.0040b8d0
add esp, 8
lea eax, [esp + 0x18]
push eax
push 0x21
mov eax, dword [ebp + 0xc]
push dword [eax + 0x10]
call fcn.0040c240
add esp, 0xc
xor esi, esi
test eax, eax
jne 0x40787a
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 0x40736c
push str.Could_not_write_update.status_for_GetInstallationDir_failure.
push 0x431588
call fcn.0040b8d0
add esp, 8
jmp 0x40787a
cmp ecx, edx
jg 0x40725c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_start_process_due_to_certificate_check_error_on_updater.exe._Updating_update.status.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
lea eax, [esp + 0x18]
push eax
push 0x1a
mov eax, dword [ebp + 0xc]
push dword [eax + 0x10]
call fcn.0040c240
add esp, 0xc
xor esi, esi
test eax, eax
jne 0x40787a
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 0x4073b0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_write_pending_state_to_update.status.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
jmp 0x40787a
mov esi, 3
cmp ebx, 7
jl 0x40689c
mov eax, dword [ebp + 0xc]
lea edi, [eax + 0x18]
push str._replace
push dword [edi]
call fcn.0040ee93
add esp, 8
mov esi, 2
test eax, eax
jne 0x40689c
mov edi, dword [edi]
movzx eax, word [edi]
test ax, ax
je 0x40689c
add edi, 2
movzx eax, ax
push eax
call fcn.004153dc
add esp, 4
test eax, eax
jne 0x40687c
mov esi, 3
cmp esi, dword [esp]
jg 0x4068b5
mov dword [esp + 0x3c], 0x42c014
or byte [esp + 0x60], 1
mov word [esp + 0x64], 0
push str.MOZ_USING_SERVICE1
call fcn.0041338e
add esp, 4
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 0x4072a0
push dword [esp + 0x1c]
push str.Starting_service_with_cmdline:__ls
push 0x431588
call fcn.0040b850
add esp, 0xc
lea eax, [esp + 0x20]
lea ecx, [esp + 0x34]
push eax
push ecx
push 0
push 0
push 0x4080000
push 1
push 0
push 0
push dword [esp + 0x3c]
mov eax, dword [esp + 0x28]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
mov dword [esp + 0xc], eax
je 0x40699f
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 0x407328
push str.Process_was_started..._waiting_on_result.
push 0x431588
call fcn.0040b850
add esp, 8
push 0xdbba0
push dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x406a35
push 1
push dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [esp + 4], 0
mov dword [esp + 0x10], 1
mov dword [esp], 0
jmp 0x4074a8
call dword [sym.imp.KERNEL32.dll_GetLastError]
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 0x4073f4
push esi
push dword [esp + 0x20]
mov eax, dword [esp + 0xc]
push dword [eax]
push str.Could_not_create_process_as_current_user__updaterPath:__ls__cmdLine:__ls.____d_
push 0x431588
call fcn.0040b8d0
add esp, 0x14
mov dword [esp], 0
jmp 0x4075c0
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405bce
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405bce
lea eax, [esp + 0xcfc]
push eax
push dword [esp + 0x24]
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
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 0x407438
test esi, esi
je 0x40747f
push dword [esp + 0xcfc]
push str.Process_finished_with_return_code__d.
push 0x431588
call fcn.0040b850
add esp, 0xc
xor eax, eax
cmp dword [esp + 0xcfc], 0
mov dword [esp + 4], 0
sete al
mov dword [esp], eax
jmp 0x4074a0
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405a2f
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405a2f
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405ac5
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405ac5
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405b0f
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405b0f
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405b79
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405b79
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405a9d
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405a9d
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405c46
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405c46
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405cbf
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405cbf
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405d0c
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405d0c
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405dea
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405dea
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4060a1
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4060a1
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x406592
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x406592
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40650a
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x40650a
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x406003
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x406003
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405f8b
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405f8b
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4061a2
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4061a2
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x406065
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x406065
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40655c
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x40655c
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4060ff
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4060ff
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x406462
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x406462
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x406491
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x406491
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405dab
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405dab
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4064d0
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4064d0
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405e98
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405e98
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x405ed4
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x405ed4
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40629d
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x40629d
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4063c9
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4063c9
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x406421
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x406421
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40676a
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x40676a
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x406652
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x406652
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4067db
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4067db
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4068e3
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4068e3
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40637c
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x40637c
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40694b
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x40694b
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4067bc
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4067bc
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x406834
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x406834
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4069c8
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4069c8
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x406a6a
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
test esi, esi
jne 0x406a72
push str.Process_finished_but_could_not_obtain_return_code.
push 0x431588
call fcn.0040b8d0
add esp, 8
mov dword [esp], 0
mov dword [esp + 4], 1
mov dword [esp + 0x10], 0
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [esp + 0x20]
call esi
push dword [esp + 0x24]
call esi
mov eax, dword [ebp + 0xc]
mov esi, dword [eax + 0x10]
push 0x20a
push 0
lea eax, [esp + 0xd04]
mov edi, eax
push eax
call fcn.0040ebd0
add esp, 0xc
push 0x104
push esi
push edi
call fcn.00415c1b
add esp, 0xc
mov esi, edi
push edi
call fcn.004157a2
add esp, 4
add eax, 0xd
cmp eax, 0x103
ja 0x40758d
push str.update.status
push esi
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
test eax, eax
je 0x40758d
push 0
push 0
push 3
push 0
push 7
push 0x80000000
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
cmp eax, 0xffffffff
mov dword [esp + 8], eax
je 0x4076a6
xorps xmm0, xmm0
lea edi, [esp + 0xcd0]
lea eax, [esp + 0x7c]
movaps xmmword [esp + 0xce0], xmm0
movaps xmmword [esp + 0xcd0], xmm0
push 0
push eax
push 0x20
push edi
push dword [esp + 0x18]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4076dc
push 8
push 0x4293f0
push edi
call fcn.00415560
add esp, 0xc
xor ecx, ecx
test eax, eax
mov edi, 1
sete cl
mov esi, ecx
jmp 0x407713
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 0x407904
push str.Could_not_append_path_for_update.status_file
push 0x431588
call fcn.0040b8d0
add esp, 8
push str.MOZ_USING_SERVICE
call fcn.0041338e
add esp, 4
push str.MOZ_USER_TOKEN
call fcn.0041338e
add esp, 4
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], 0
test eax, eax
jne 0x4076ce
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 0x4077c3
cmp dword [esp], 0
je 0x40780c
push str.updater.exe_was_launched_and_run_successfully_
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 0x4078c0
mov eax, dword [0x431588]
test eax, eax
je 0x40765e
push eax
call fcn.0041410e
add esp, 4
cmp ebx, 8
je 0x407675
cmp ebx, 7
jne 0x40768c
push 0x42bfd2
mov eax, dword [ebp + 0xc]
push dword [eax + 0x18]
jmp 0x407680
push 0x42bfd2
mov eax, dword [ebp + 0xc]
push dword [eax + 0x1c]
call fcn.00415740
add esp, 8
test eax, eax
je 0x40769c
lea eax, [esp + 0xac4]
push eax
call fcn.0040bcd0
add esp, 4
mov esi, 1
jmp 0x40787a
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 0x407a5c
push str.Could_not_open_update.status_file
jmp 0x407702
push eax
call fcn.0040c66a
add esp, 4
jmp 0x4075ee
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 0x407ae4
push str.Could_not_read_from_update.status_file
push 0x431588
call fcn.0040b8d0
add esp, 8
xor esi, esi
xor edi, edi
mov eax, dword [esp + 8]
inc eax
cmp eax, 2
jb 0x407727
push dword [esp + 8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test esi, esi
je 0x4075c0
test edi, edi
je 0x4075c0
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 0x40798c
cmp dword [esp], 0
je 0x4079d5
push str.update.status_is_still_applying_even_though_update_was_successful.
push 0x431588
call fcn.0040b850
add esp, 8
lea eax, [esp + 0x18]
push eax
push 0x1d
mov eax, dword [ebp + 0xc]
push dword [eax + 0x10]
call fcn.0040c240
add esp, 0xc
test eax, eax
mov dword [esp], 0
jne 0x4075c0
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 0x407b28
push str.Could_not_write_update.status_still_applying_on_success_error.
jmp 0x4075b3
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40760f
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
cmp dword [esp], 0
jne 0x407619
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_running_update_process._Updating_update.status____d_
push 0x431588
call fcn.0040b8d0
add esp, 0xc
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 0x407948
mov eax, dword [0x431588]
test eax, eax
je 0x407858
push eax
call fcn.0041410e
add esp, 4
xor esi, esi
cmp dword [esp + 0xc], 0
jne 0x40787a
lea eax, [esp + 0x18]
push eax
push 0x18
mov eax, dword [ebp + 0xc]
push dword [eax + 0x10]
call fcn.0040c240
add esp, 0xc
test eax, eax
je 0x40788e
lea ecx, [esp + 0x496]
call fcn.004056d0
mov edi, dword [ebp + 0xc]
jmp 0x40656e
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 0x407aa0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_write_update.status_service_update_failure.____d_
jmp 0x406840
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x40764c
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x40764c
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4075ae
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4075ae
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x407846
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x407846
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x407758
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
cmp dword [esp], 0
jne 0x407762
sub esp, 8
mov dword [esp + 4], str.update.status_is_still_applying_and_update_was_not_successful.
mov dword [esp], 0x431588
call fcn.0040b8d0
add esp, 8
cmp dword [esp + 0x10], 0
mov eax, 0x1e
mov ecx, 0x32
cmove ecx, eax
cmp dword [esp + 4], 0
mov eax, 0x33
cmove eax, ecx
lea ecx, [esp + 0x18]
push ecx
push eax
mov eax, dword [ebp + 0xc]
push dword [eax + 0x10]
call fcn.0040c240
add esp, 0xc
test eax, eax
mov dword [esp], 0
jne 0x4075c0
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 0x407b6c
push str.Could_not_write_update.status_still_applying_on_failure_error.
jmp 0x4075b3
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4076c7
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4076c7
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4078af
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4078af
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4076fd
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4076fd
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x4077b9
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x4077b9
push 0x43199c
call fcn.0040c696
add esp, 4
mov eax, dword [0x43199c]
cmp eax, 0xffffffff
jne 0x407a52
mov dword [0x431588], 0
push 0x4021a0
call fcn.0040c8fc
add esp, 4
push 0x43199c
call fcn.0040c6e8
add esp, 4
jmp 0x407a52