Function at 0x4036b7
Capabilities:
Copy file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa6c
mov eax, dword [0x429010]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov ebx, ecx
mov esi, edx
push edi
cmp ebx, 3
jge 0x4036ef
push str.Not_enough_command_line_arguments_to_execute_a_service_command
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
xor eax, eax
jmp 0x403cbb
lea eax, [ebp - 0xa68]
push eax
call dword [sym.imp.ole32.dll_CoCreateGuid]
test eax, eax
js 0x403763
lea eax, [ebp - 0xa6c]
mov dword [ebp - 0xa6c], 0x424cd8
push eax
lea eax, [ebp - 0xa68]
push eax
call dword [sym.imp.RPCRT4.dll_UuidToStringW]
test eax, eax
jne 0x40374d
push dword [ebp - 0xa6c]
push dword [esi + 8]
push str.Executing_service_command__ls__ID:__ls
call fcn.00401034
push eax
call fcn.004049ad
add esp, 0x10
lea eax, [ebp - 0xa6c]
push eax
call dword [sym.imp.RPCRT4.dll_RpcStringFreeW]
jmp 0x403763
push dword [esi + 8]
push str.Executing_service_command__ls
call fcn.00401034
push eax
call fcn.004049ad
add esp, 0xc
push str.software_update
push dword [esi + 8]
xor eax, eax
mov dword [ebp - 0xa6c], eax
mov edi, eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x403c7c
cmp ebx, 4
jl 0x403c72
mov ecx, dword [esi + 0x10]
call fcn.00404a2b
test al, al
je 0x403c72
mov edx, dword [esi + 0x10]
mov ecx, edx
lea edi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0xa6c]
jne 0x4037a4
sub ecx, edi
sar ecx, 1
cmp ecx, 0xa
jae 0x4037c6
push str.The_patch_directory_path_length_is_not_valid_for_this_application.
jmp 0x4036db
add edx, 0xffffffec
push 0xa
push str.updates0
lea eax, [edx + ecx*2]
push eax
call fcn.0040b1f8
add esp, 0xc
test eax, eax
je 0x4037ea
push str.The_patch_directory_path_subdirectory_is_not_valid_for_this_application.
jmp 0x4036db
cmp ebx, 5
jl 0x403c43
mov ecx, dword [esi + 0x14]
call fcn.00404a2b
test al, al
je 0x403c43
lea edx, [esi + 0xc]
lea ecx, [ebx - 3]
call fcn.00402cc3
test al, al
jne 0x403948
cmp ebx, 6
jl 0x40392f
mov ecx, dword [esi + 0x18]
call fcn.00404a2b
test al, al
je 0x40392f
push 0x104
push dword [esi + 0x14]
push dword [esi + 0x18]
call fcn.0040b1f8
add esp, 0xc
test eax, eax
je 0x403948
mov eax, dword [esi + 0x1c]
mov ecx, 0x424c84
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x403878
test dx, dx
je 0x403874
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x403878
add eax, 4
add ecx, 4
test dx, dx
jne 0x403852
xor eax, eax
jmp 0x40387d
sbb eax, eax
or eax, 1
test eax, eax
je 0x4038ad
push str._replace
push dword [esi + 0x1c]
call fcn.00406195
pop ecx
pop ecx
test eax, eax
jne 0x4038ad
push str.Installation_directory_and_working_directory_must_be_the_same_for_non_staged_updates._Exiting.
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
push 0x36
jmp 0x403c57
push dword [esi + 0x18]
lea eax, [ebp - 0x428]
push 0x425858
push 0x104
push eax
call fcn.00402abc
add esp, 0x10
lea eax, [ebp - 0x428]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x4038fb
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Couldnt_remove_file_spec_when_attempting_to_verify_the_working_directory_path.____d_
call fcn.00401034
push eax
call fcn.004049e5
add esp, 0xc
push 0x47
jmp 0x403c57
push 0x104
push dword [esi + 0x14]
lea eax, [ebp - 0x428]
push eax
call fcn.0040b1f8
add esp, 0xc
test eax, eax
je 0x403948
push str.The_apply_to_directory_must_be_the_same_as_or_a_child_of_the_installation_directory__Exiting.
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
push 0x34
jmp 0x403c57
push str.The_working_directory_path_is_not_valid_for_this_application.
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
push 0x38
jmp 0x403c57
xor eax, eax
push 0x20a
push eax
lea eax, [ebp - 0xa58]
push eax
call fcn.00406960
add esp, 0xc
lea eax, [ebp - 0xa58]
lea edx, [esi + 0xc]
lea ecx, [ebx - 3]
push eax
call fcn.00402d4d
pop ecx
test eax, eax
jne 0x40398f
push str.Could_not_get_the_installation_directory
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
push 0x21
jmp 0x403c57
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
lea eax, [ebp - 0xa6c]
push eax
push 0x20119
xor eax, eax
push eax
push str.SOFTWAREMozillaMaintenanceService3932ecacee736d366d6436db0f55bce4
push 0x80000002
call edi
test eax, eax
je 0x403a27
lea edx, [ebp - 0x848]
lea ecx, [ebp - 0xa58]
call fcn.004041c7
test eax, eax
je 0x403c3f
lea eax, [ebp - 0x848]
push eax
push str.Checking_for_Maintenance_Service_registry._key:__ls
call fcn.00401034
push eax
call fcn.004049ad
add esp, 0xc
lea eax, [ebp - 0xa6c]
xor ecx, ecx
mov dword [ebp - 0xa6c], ecx
push eax
push 0x20119
push ecx
lea eax, [ebp - 0x848]
push eax
push 0x80000002
call edi
test eax, eax
je 0x403a27
push str.The_maintenance_service_registry_key_does_not_exist.
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
push 0x39
jmp 0x403c57
push dword [ebp - 0xa6c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
push 0x20a
push eax
lea eax, [ebp - 0x638]
push eax
call fcn.00406960
add esp, 0xc
lea eax, [ebp - 0xa58]
push 0x104
push eax
lea eax, [ebp - 0x638]
push eax
call fcn.00407e9a
add esp, 0xc
lea ecx, [ebp - 0x638]
mov edx, str.updater.exe
call fcn.00404dfc
test eax, eax
jne 0x403a8b
push str.Install_directory_updater_could_not_be_determined.
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
push dword [esi + 0x10]
lea edx, [ebp - 0xa58]
lea ecx, [ebp - 0x638]
call fcn.00403026
movzx edi, al
xor eax, eax
mov dword [esp], 0x20a
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.00406960
add esp, 0xc
test edi, edi
je 0x403bef
lea ecx, [ebp - 0x218]
call fcn.0040355b
mov edi, eax
test edi, edi
je 0x403bef
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x638]
push eax
push str.Passed_in_path:__ls__Using_this_path_for_updating:__ls.
call fcn.00401034
push eax
call fcn.004049ad
add esp, 0x10
lea ecx, [ebp - 0x218]
call fcn.004035e3
xor eax, eax
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x638]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov edi, eax
test edi, edi
je 0x403bef
lea eax, [ebp - 0x218]
mov dword [esi + 0xc], eax
xor eax, eax
push 0x20a
push eax
lea eax, [ebp - 0x848]
push eax
call fcn.00406960
add esp, 0xc
xor eax, eax
push 0x20a
push eax
lea eax, [ebp - 0x428]
push eax
call fcn.00406960
add esp, 0xc
lea edx, [ebp - 0x218]
lea ecx, [ebp - 0x428]
push str.updater.ini
call fcn.00404b58
pop ecx
test eax, eax
je 0x403bd5
push str.updater.ini
lea edx, [ebp - 0x638]
lea ecx, [ebp - 0x848]
call fcn.00404b58
pop ecx
test eax, eax
je 0x403bd5
xor eax, eax
push eax
lea eax, [ebp - 0x428]
push eax
lea eax, [ebp - 0x848]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x403bd5
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x428]
push eax
lea eax, [ebp - 0x848]
push eax
push str.Could_not_copy_updater.ini_from:__ls_to__ls.____d_
call fcn.00401034
push eax
call fcn.004049e5
add esp, 0x14
lea ecx, [ebx - 3]
lea edx, [esi + 0xc]
call fcn.00403370
lea ecx, [ebp - 0x218]
mov edi, eax
call fcn.004035e3
jmp 0x403c2a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Could_not_copy_path_to_secure_location.____d_
call fcn.00401034
push eax
call fcn.004049e5
mov ecx, dword [esi + 0x10]
add esp, 0xc
push 0x31
pop edx
call fcn.00404e50
test eax, eax
jne 0x403c2a
push str.Could_not_write_update.status_could_not_copy_updater_error
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
push dword [esi + 8]
push str.Service_command__ls_complete.
call fcn.00401034
push eax
call fcn.004049ad
jmp 0x403c8f
push 0x35
jmp 0x403c57
push str.The_install_directory_path_is_not_valid_for_this_application.
call fcn.00401034
push eax
call fcn.004049e5
pop ecx
pop ecx
push 0x37
mov ecx, dword [esi + 0x10]
pop edx
call fcn.00404e50
test eax, eax
jne 0x4036e8
push str.Could_not_write_update.status_for_previous_failure.
jmp 0x4036db
push str.The_patch_directory_path_is_not_valid_for_this_application.
jmp 0x4036db
push dword [esi + 8]
push str.Service_command_not_recognized:__ls.
call fcn.00401034
push eax
call fcn.004049e5
add esp, 0xc
mov edx, str.Failure
test edi, edi
mov ecx, str.Success
cmove ecx, edx
push ecx
push dword [esi + 4]
push str.service_command__ls_complete_with_result:__ls.
call fcn.00401034
push eax
call fcn.004049ad
xor eax, eax
add esp, 0x10
inc eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004053fc
mov esp, ebp
pop ebp
ret