Function at 0x404ccb
Capabilities:
Check if file exists
Copy file
Create directory
Create process on windows
Get common file path
Get file attributes
Move file
Resolve function by parsing pe exports
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xed4
mov eax, dword [0x432008]
xor eax, esp
mov dword [esp + 0xed0], eax
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x20], edi
cmp edi, 4
jge 0x404d14
push str.Usage:_updater_patch_dir_install_dir_apply_to_dir__wait_pid__callback_working_dir_callback_path_args...___n
push 2
call fcn.00410d6d
pop ecx
push eax
call fcn.004020fa
pop ecx
pop ecx
xor eax, eax
inc eax
jmp 0x405e29
mov ecx, dword [ebx + 4]
call fcn.00408d39
mov ecx, dword [ebx + 4]
test al, al
jne 0x404d3c
push ecx
push str.The_patch_directory_path_is_not_valid_for_this_application___S__n
push 2
call fcn.00410d6d
pop ecx
push eax
call fcn.004020fa
add esp, 0xc
jmp 0x404d0c
mov esi, 0x104
push esi
push ecx
push 0x434810
call fcn.0041073f
mov ecx, dword [ebx + 8]
add esp, 0xc
call fcn.00408d39
test al, al
jne 0x404d6e
push 0x4b
pop ecx
call fcn.00404536
push dword [ebx + 8]
push str.The_install_directory_path_is_not_valid_for_this_application___S__n
jmp 0x404d29
push esi
push dword [ebx + 8]
mov esi, 0x434c30
push esi
call fcn.0041073f
add esp, 0xc
xor eax, eax
mov word [0x434e36], ax
push 0x5c
pop eax
push eax
push esi
mov dword [esp + 0x54], eax
call fcn.0040c7fb
pop ecx
pop ecx
xor ecx, ecx
mov dword [esp + 0x28], ecx
test eax, eax
je 0x404dab
cmp word [eax + 2], cx
jne 0x404dab
mov word [eax], cx
call fcn.0040458a
mov esi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
xor ecx, ecx
push ecx
mov dword [esp + 0x14], eax
lea eax, [esp + 0x1c]
push eax
push ecx
push 2
push ecx
push ecx
push ecx
push str.SoftwareClassesApplications
push 0x80000001
mov dword [esp + 0x3c], ecx
call esi
push dword [esp + 0x18]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor ecx, ecx
lea eax, [esp + 0x18]
push ecx
push eax
push ecx
push 2
xor eax, eax
inc eax
push eax
push ecx
push ecx
push str.SoftwareClassesApplicationsupdater.exe
push 0x80000001
call esi
test eax, eax
jne 0x404e44
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push eax
push eax
push eax
push eax
push str.IsHostApp
push dword [esp + 0x2c]
call esi
xor eax, eax
push eax
push eax
push eax
push eax
push str.NoOpenWith
push dword [esp + 0x2c]
call esi
xor eax, eax
push eax
push eax
push eax
push eax
push str.NoStartPage
push dword [esp + 0x2c]
call esi
push dword [esp + 0x18]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xorps xmm0, xmm0
movlpd qword [esp + 0x38], xmm0
cmp edi, 4
jle 0x404ea0
push dword [ebx + 0x10]
call fcn.00414a93
mov esi, eax
mov eax, edx
pop ecx
mov ecx, esi
mov dword [esp + 0x24], esi
and ecx, eax
mov dword [esp + 0x30], eax
cmp ecx, 0xffffffff
jne 0x404e7a
xor eax, eax
inc eax
mov byte [0x433b14], al
jmp 0x404eb0
push str._replace
push dword [ebx + 0x10]
call fcn.0040c89d
pop ecx
pop ecx
movzx ecx, byte [0x433b15]
test eax, eax
push 1
pop eax
cmovne ecx, eax
mov byte [0x433b15], cl
jmp 0x404eb0
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x24], eax
mov ecx, dword [ebx + 0xc]
call fcn.00408d39
test al, al
jne 0x404ed1
push 0x4c
pop ecx
call fcn.00404536
push dword [ebx + 0xc]
push str.The_working_directory_path_is_not_valid_for_this_application___S__n
jmp 0x404d29
push 0x104
push dword [ebx + 0xc]
mov esi, 0x434400
push esi
call fcn.0041073f
add esp, 0xc
xor eax, eax
mov word [0x434606], ax
push 0x5c
pop eax
push eax
push esi
call fcn.0040c7fb
pop ecx
pop ecx
test eax, eax
je 0x404f0a
xor ecx, ecx
cmp word [eax + 2], cx
jne 0x404f0a
mov word [eax], cx
cmp edi, 6
jle 0x404fce
mov ecx, dword [ebx + 0x18]
call fcn.00408d39
test al, al
jne 0x404f34
push 0x4d
pop ecx
call fcn.00404536
push dword [ebx + 0x18]
push str.The_callback_file_path_is_not_valid_for_this_application___S__n
jmp 0x404d29
mov edi, 0x434c30
xor edx, edx
mov esi, edi
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
cmp ax, dx
jne 0x404f40
sub esi, ecx
lea eax, [esp + 0x2a0]
mov ecx, 0x208
sar esi, 1
push ecx
push edx
push eax
call fcn.0040d680
add esp, 0xc
lea eax, [esp + 0x2a0]
push esi
push dword [ebx + 0x18]
push eax
call fcn.0041073f
add esp, 0xc
lea ecx, [esp + 0x2a0]
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x404fa9
test dx, dx
je 0x404fa5
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x404fa9
add eax, 4
add ecx, 4
test dx, dx
jne 0x404f83
xor eax, eax
jmp 0x404fae
sbb eax, eax
or eax, 1
test eax, eax
je 0x404fc7
push 0x4e
pop ecx
call fcn.00404536
push dword [ebx + 0x18]
push str.The_callback_file_must_be_located_in_the_installation_directory___S__n
jmp 0x404d29
mov esi, 0x434400
jmp 0x404fd3
mov edi, 0x434c30
push ecx
push ecx
call fcn.00402191
mov ecx, eax
call fcn.00408c11
mov ecx, str.applying
call fcn.00404436
test al, al
jne 0x405004
push str.failed_setting_status_to_applying
call fcn.00402191
push eax
call fcn.00408cbb
jmp 0x404d0a
cmp byte [0x433b14], 0
je 0x405014
push str.Performing_a_staged_update
jmp 0x405022
cmp byte [0x433b15], 0
je 0x40502f
push str.Performing_a_replace_request
call fcn.00402191
push eax
call fcn.00408cbb
pop ecx
pop ecx
push 0x434810
push str.PATCH_DIRECTORY__S
call fcn.00402191
push eax
call fcn.00408cbb
add esp, 0xc
push edi
push str.INSTALLATION_DIRECTORY__S
call fcn.00402191
push eax
call fcn.00408cbb
add esp, 0xc
push esi
push str.WORKING_DIRECTORY__S
call fcn.00402191
push eax
call fcn.00408cbb
add esp, 0xc
mov edi, 0x104
push edi
push 0x434c30
push esi
call fcn.00414ca8
add esp, 0xc
test eax, eax
je 0x405141
cmp byte [0x433b14], 0
jne 0x4050c8
cmp byte [0x433b15], 0
jne 0x4050c8
push 0x4a
pop ecx
call fcn.00404536
push str.Installation_directory_and_working_directory_must_be_the_same_for_non_staged_updates._Exiting.
call fcn.00402191
push eax
call fcn.00408cbb
pop ecx
pop ecx
call fcn.00402191
mov ecx, eax
call fcn.00408c7c
jmp 0x404d0c
push esi
push 0x42df90
lea eax, [esp + 0x2a8]
push edi
push eax
call fcn.0040214f
add esp, 0x10
lea eax, [esp + 0x2a0]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
test eax, eax
jne 0x405115
push 0x47
pop ecx
call fcn.00404536
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_calling_PathRemoveFileSpecW:__d
call fcn.00402191
push eax
call fcn.00408cbb
add esp, 0xc
jmp 0x4050b7
push edi
lea eax, [esp + 0x2a4]
push 0x434c30
push eax
call fcn.00414ca8
add esp, 0xc
test eax, eax
je 0x405141
push 0x48
pop ecx
call fcn.00404536
push str.The_apply_to_directory_must_be_the_same_as_or_a_child_of_the_installation_directory__Exiting.
jmp 0x4050aa
mov esi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
xor ecx, ecx
cmp dword [esp + 0x30], ecx
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x30], esi
mov dword [esp + 0x18], edi
jl 0x4051a9
mov eax, dword [esp + 0x24]
jg 0x405167
cmp eax, ecx
jbe 0x4051a9
push eax
push ecx
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov edi, eax
test edi, edi
je 0x4051a3
push 0x7530
push edi
call esi
push edi
mov edi, dword [esp + 0x1c]
mov esi, eax
call edi
test esi, esi
je 0x4051a7
push str.The_parent_process_didnt_exit__Continuing_with_update.
call fcn.00402191
push eax
call fcn.00408cbb
pop ecx
pop ecx
jmp 0x4051a7
mov edi, dword [esp + 0x18]
xor ecx, ecx
cmp byte [0x433b15], 0
jne 0x4051bb
cmp byte [0x433b14], 0
je 0x4051f6
push 0x20a
push ecx
lea eax, [esp + 0x4b0]
push eax
call fcn.0040d680
add esp, 0xc
lea eax, [esp + 0x4a8]
push 0x105
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
je 0x4051f6
lea eax, [esp + 0x4a8]
push eax
call fcn.00414fc8
pop ecx
push 0x42e058
call fcn.004151b5
pop ecx
test eax, eax
je 0x40520f
cmp byte [eax], 0
je 0x40520f
xor eax, eax
inc eax
jmp 0x405211
xor eax, eax
push str.MOZ_USING_SERVICE
mov byte [0x433b29], al
call fcn.004110d6
xor eax, eax
mov dword [esp], 0x208
push eax
lea eax, [esp + 0xa0]
or esi, 0xffffffff
push eax
mov dword [esp + 0x30], esi
call fcn.0040d680
mov eax, dword [sym.imp.KERNEL32.dll_CreateFileW]
add esp, 0xc
cmp byte [0x433b29], 0
mov dword [esp + 0x14], eax
jne 0x405697
cmp dword [esp + 0x20], 6
mov al, byte [0x433b14]
mov cl, byte [0x433b15]
jg 0x405275
test al, al
jne 0x405279
test cl, cl
je 0x4056b9
test al, al
je 0x405285
push 0x434c30
push str._s_updated.update_in_progress.lock
jmp 0x4052e6
test cl, cl
je 0x4052de
xor eax, eax
mov ecx, eax
movzx eax, word [ecx + 0x434c30]
lea ecx, [ecx + 2]
mov word [esp + ecx + 0x29e], ax
test ax, ax
jne 0x40528d
push 0x5c
pop eax
push eax
lea eax, [esp + 0x2a4]
push eax
call fcn.0040c7fb
xor ecx, ecx
mov word [eax], cx
lea eax, [esp + 0x2a8]
push eax
push str._smoz_update_in_progress.lock
lea eax, [esp + 0x6c8]
push 0x104
push eax
call fcn.0040214f
add esp, 0x18
jmp 0x4052fb
push dword [ebx + 0x18]
push str._s.update_in_progress.lock
lea eax, [esp + 0x6c0]
push 0x104
push eax
call fcn.0040214f
add esp, 0x10
xor eax, eax
push eax
lea eax, [esp + 0x6bc]
push eax
call fcn.00410782
pop ecx
pop ecx
test eax, eax
jne 0x405349
lea eax, [esp + 0x6b8]
push eax
call fcn.00410df1
pop ecx
test eax, eax
je 0x405349
cmp byte [0x433b14], 0
jne 0x405335
cmp byte [0x433b15], 0
je 0x40533f
mov ecx, str.pending
call fcn.00404436
push str.Update_already_in_progress__Exiting
jmp 0x404ff4
xor eax, eax
push eax
push 0x4000000
push 4
push eax
push eax
push 0xc0000000
lea eax, [esp + 0x6d0]
push eax
call dword [esp + 0x30]
push 0x434810
mov esi, eax
lea eax, [esp + 0x9c]
push str._s_update_elevated.lock
push 0x104
push eax
mov dword [esp + 0x34], esi
call fcn.0040214f
add esp, 0x10
lea eax, [esp + 0x98]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4053a5
push ecx
call fcn.00408af1
pop ecx
cmp esi, 0xffffffff
jne 0x405697
xor eax, eax
push eax
lea eax, [esp + 0x9c]
push eax
call fcn.00410782
pop ecx
pop ecx
test eax, eax
jne 0x4053e0
lea eax, [esp + 0x98]
push eax
call fcn.00410df1
pop ecx
test eax, eax
je 0x4053e0
push str.Unable_to_create_elevated_lock_file__Exiting_n
jmp 0x404cfc
xor eax, eax
push eax
push 0x4000000
push 4
push eax
push eax
push 0xc0000000
lea eax, [esp + 0xb0]
push eax
call dword [esp + 0x30]
mov esi, eax
mov dword [esp + 0x2c], esi
cmp esi, 0xffffffff
jne 0x405412
push str.Unable_to_create_elevated_lock_file__Exiting
jmp 0x404ff4
mov ecx, dword [esp + 0x20]
lea edx, [ebx + 4]
lea ecx, [ecx - 1]
call fcn.00403e62
mov dword [esp + 0x28], eax
test eax, eax
jne 0x405431
push esi
call edi
jmp 0x404d0c
mov ecx, dword [esp + 0x10]
test cl, cl
je 0x40558c
mov ecx, dword [ebx]
lea edx, [esp + 0x14]
xor eax, eax
mov dword [esp + 0x14], eax
call fcn.004093df
test eax, eax
je 0x405584
cmp dword [esp + 0x14], 0
je 0x405584
xor eax, eax
lea ecx, [esp + 0x14]
inc eax
mov dword [esp + 0x10], eax
call fcn.0040947a
test eax, eax
je 0x40548a
mov eax, dword [esp + 0x14]
test eax, eax
sete cl
mov dword [esp + 0x10], ecx
test eax, eax
jne 0x40558c
lea edx, [esp + 0x4a8]
call fcn.00408405
test eax, eax
je 0x405577
lea eax, [esp + 0x14]
xor ecx, ecx
push eax
push 0x20119
push ecx
lea eax, [esp + 0x4b4]
mov dword [esp + 0x20], ecx
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4054d0
push dword [esp + 0x14]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x10]
test cl, cl
je 0x40558c
mov ecx, dword [esp + 0x20]
mov edx, ebx
call fcn.00409179
test eax, eax
sete cl
mov dword [esp + 0x10], ecx
test eax, eax
jne 0x40556c
mov byte [esp + 0x14], al
cmp byte [0x433b14], al
jne 0x40550f
call fcn.00401e5a
neg eax
sbb al, al
inc al
mov dword [esp + 0x14], eax
push 5
pop edx
call fcn.00409239
cmp eax, 1
je 0x40554f
push ecx
push 0x404a0c
lea ecx, [esp + 0x40]
call fcn.004021e0
test eax, eax
jne 0x40553f
cmp byte [esp + 0x14], al
je 0x40553f
xor dl, dl
lea ecx, [eax + 1]
call fcn.00401ef4
push 0xffffffffffffffff
push dword [esp + 0x3c]
call dword [esp + 0x38]
push dword [esp + 0x38]
call edi
xor eax, eax
lea edx, [eax + 1]
call fcn.00409239
mov ecx, dword [esp + 0x10]
xor edx, edx
cmp eax, 1
movzx ecx, cl
cmovne ecx, edx
mov dword [esp + 0x10], ecx
test cl, cl
je 0x40558c
mov al, byte [0x433b14]
jmp 0x4055aa
xor eax, eax
mov cl, al
mov dword [esp + 0x10], ecx
jmp 0x4054d4
xor eax, eax
mov cl, al
mov dword [esp + 0x10], ecx
mov al, byte [0x433b14]
test al, al
je 0x4055a6
mov ecx, str.pending
call fcn.00404436
xor eax, eax
jmp 0x405e29
test cl, cl
je 0x4055f2
test al, al
jne 0x4055ea
xor eax, eax
lea ecx, [esp + 0x1f]
mov byte [esp + 0x1f], al
call fcn.0040465e
test al, al
je 0x4055e6
cmp byte [esp + 0x1f], 0
je 0x4055e6
call fcn.00403faf
test al, al
jne 0x4055e6
push str.The_post_update_process_which_runs_as_the_user_for_service_update_could_not_be_launched.
push 2
call fcn.00410d6d
pop ecx
push eax
call fcn.004020fa
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
test cl, cl
jne 0x405674
push 0x3c
pop esi
xor eax, eax
push esi
push eax
lea eax, [esp + 0x64]
push eax
call fcn.0040d680
xor eax, eax
mov dword [esp + 0x68], esi
mov dword [esp + 0x70], eax
add esp, 0xc
mov eax, dword [ebx]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x70], eax
xor eax, eax
inc eax
mov dword [esp + 0x60], 0x540
mov dword [esp + 0x78], eax
lea eax, [esp + 0x5c]
push eax
mov dword [esp + 0x6c], str.runas
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
push dword [esp + 0x28]
mov esi, eax
call fcn.0040faba
pop ecx
test esi, esi
je 0x405668
push 0xffffffffffffffff
push dword [esp + 0x98]
call dword [esp + 0x38]
push dword [esp + 0x94]
call edi
jmp 0x405670
push 9
pop ecx
call fcn.00404536
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
cmp ecx, 6
jle 0x40568f
push ecx
lea eax, [ebx + 0x18]
lea edx, [ecx - 6]
mov ecx, dword [ebx + 0x14]
push eax
call fcn.004043d5
pop ecx
pop ecx
push esi
call edi
jmp 0x40559f
cmp byte [0x433b14], 0
je 0x4056ac
xor dl, dl
mov ecx, 0x434400
call fcn.0040259c
cmp byte [0x433b15], 0
jne 0x405782
mov edi, 0x434400
push edi
call fcn.0041085a
pop ecx
test eax, eax
je 0x4056d7
call fcn.00414c68
cmp dword [eax], 0x11
jne 0x404d0c
cmp byte [0x433b15], 0
jne 0x405787
mov ecx, edi
xor edi, edi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, di
jne 0x4056eb
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 4]
push eax
call fcn.0040fb11
mov edi, eax
pop ecx
test edi, edi
je 0x404d0c
mov eax, 0x434400
mov edx, edi
mov ecx, eax
sub edx, eax
movzx eax, word [ecx]
mov word [edx + ecx], ax
lea ecx, [ecx + 2]
test ax, ax
jne 0x40571d
mov ecx, 0x434400
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [esp + 0x28]
jne 0x405734
sub ecx, edx
sar ecx, 1
push 0x2f
movzx eax, word [ecx*2 + 0x4343fe]
lea edx, [edi + ecx*2]
pop edi
mov ecx, eax
cmp ax, di
je 0x40577d
push 0x5c
pop eax
cmp cx, ax
je 0x40577d
lea edi, [edx - 2]
xor ecx, ecx
mov ax, word [edi + 2]
lea edi, [edi + 2]
cmp ax, cx
jne 0x405767
mov eax, dword [0x42cb98]
add edx, 2
mov dword [edi], eax
xor eax, eax
mov word [edx], ax
mov edi, 0x434400
push 0x104
lea eax, [esp + 0x8c4]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
test eax, eax
jne 0x405825
push edi
push str.NS_main:_unable_to_find_apply_to_dir:__S
call fcn.00402191
push eax
call fcn.00408cbb
add esp, 0xc
call fcn.00402191
mov ecx, eax
call fcn.00408c7c
push 0x41
pop ecx
call fcn.00404536
cmp esi, 0xffffffff
je 0x4057d7
push esi
mov esi, dword [esp + 0x1c]
call esi
xor eax, eax
push eax
lea eax, [esp + 0x9c]
push eax
call fcn.00410782
pop ecx
pop ecx
test eax, eax
jne 0x405803
lea eax, [esp + 0x98]
push eax
call fcn.00410df1
pop ecx
test eax, eax
jne 0x4050b7
mov ecx, dword [esp + 0x20]
cmp ecx, 6
jle 0x404d0c
push ecx
lea eax, [ebx + 0x18]
push eax
lea edx, [ecx - 6]
mov ecx, dword [ebx + 0x14]
call fcn.004043d5
jmp 0x404d0a
or edi, 0xffffffff
cmp dword [esp + 0x20], 6
mov dword [esp + 0x34], edi
jle 0x405c5f
xor eax, eax
push 0x208
push eax
lea eax, [esp + 0x2a8]
push eax
call fcn.0040d680
add esp, 0xc
lea edi, [ebx + 0x18]
mov eax, dword [edi]
mov dword [esp + 0x10], eax
xor eax, eax
push 0x410
push eax
lea eax, [esp + 0xad0]
push eax
call fcn.0040d680
add esp, 0xc
cmp byte [0x433b15], 0
je 0x40596f
xor eax, eax
push eax
push 0x434c30
push dword [esp + 0x18]
call dword [sym.imp.SHLWAPI.dll_PathCommonPrefixW]
push eax
push dword [edi]
mov dword [esp + 0x34], eax
lea eax, [esp + 0xad0]
push eax
call fcn.0041073f
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0xad4]
add esp, 0xc
mov edx, 0x208
sub edx, eax
mov dword [esp + 0x10], edx
lea ecx, [ecx + eax*2]
push edx
lea eax, [eax*2 + 0x434c30]
mov dword [esp + 0x3c], ecx
push eax
push ecx
call fcn.0041073f
mov eax, dword [esp + 0x38]
add esp, 0xc
lea ecx, [eax*2 + 0x434c30]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [esp + 0x28]
jne 0x4058e3
mov eax, dword [esp + 0x38]
sub ecx, edx
sar ecx, 1
push 0x5c
lea edx, [eax + ecx*2]
pop eax
mov word [edx], ax
or eax, 0xffffffff
sub eax, ecx
add edx, 2
add dword [esp + 0x10], eax
xor eax, eax
mov dword [esp + 0x38], edx
mov word [edx], ax
xor edx, edx
mov ecx, edx
movzx eax, word [ecx + 0x434c30]
lea ecx, [ecx + 2]
mov word [esp + ecx + 0x4a6], ax
test ax, ax
jne 0x40591a
push edx
lea eax, [esp + 0x4ac]
push eax
push dword [edi]
call dword [sym.imp.SHLWAPI.dll_PathCommonPrefixW]
cmp eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x10]
cmovb eax, dword [esp + 0x2c]
push ecx
mov ecx, dword [edi]
lea eax, [ecx + eax*2]
push eax
push dword [esp + 0x40]
call fcn.0041073f
lea eax, [esp + 0xad4]
add esp, 0xc
mov dword [esp + 0x10], eax
jmp 0x405973
mov eax, dword [esp + 0x10]
push 0x104
lea ecx, [esp + 0x2a4]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
test eax, eax
jne 0x4059fc
push dword [esp + 0x10]
push str.NS_main:_unable_to_find_callback_file:__S
call fcn.00402191
push eax
call fcn.00408cbb
add esp, 0xc
call fcn.00402191
mov ecx, eax
call fcn.00408c7c
push 0x42
pop ecx
call fcn.00404536
cmp esi, 0xffffffff
je 0x4059c2
push esi
mov esi, dword [esp + 0x1c]
call esi
xor eax, eax
push eax
lea eax, [esp + 0x9c]
push eax
call fcn.00410782
pop ecx
pop ecx
test eax, eax
jne 0x4059ee
lea eax, [esp + 0x98]
push eax
call fcn.00410df1
pop ecx
test eax, eax
jne 0x4050b7
push ecx
push edi
mov edx, dword [esp + 0x28]
lea edx, [edx - 6]
jmp 0x405818
cmp byte [0x433b15], 0
jne 0x405c5b
lea ecx, [esp + 0x8c0]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [esp + 0x28]
jne 0x405a13
sub ecx, edx
lea eax, [esp + 0x2a0]
sar ecx, 1
mov edx, 0x434a20
push 0x5c
lea eax, [eax + ecx*2]
mov dword [esp + 0x3c], eax
movzx eax, word [eax]
mov esi, eax
mov dword [esp + 0x2c], esi
pop esi
cmp ax, si
mov esi, dword [esp + 0x24]
jne 0x405a5b
lea eax, [esp + 0x2a2]
lea eax, [eax + ecx*2]
movzx ecx, word [eax]
jmp 0x405a63
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x28]
push 0x2f
movzx ecx, cx
sub eax, edx
pop edi
cmp cx, word [esp + 0x4c]
jne 0x405a76
mov ecx, edi
jmp 0x405a79
movzx ecx, cx
mov word [edx], cx
add edx, 2
movzx ecx, word [eax + edx]
test cx, cx
jne 0x405a6b
xor eax, eax
lea edi, [ebx + 0x18]
mov word [edx], ax
push dword [edi]
push str._s.moz_callback
push 0x104
push 0x4341f8
call fcn.0040214f
add esp, 0x10
cmp eax, 0x103
ja 0x405d7a
push 0x4341f8
call fcn.00410df1
pop ecx
xor eax, eax
inc eax
push eax
push 0x4341f8
push dword [edi]
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x405b63
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0x4341f8
push dword [edi]
mov esi, eax
push str.NS_main:_failed_to_copy_callback_file__S_into_place_at__S
call fcn.00402191
push eax
call fcn.00408cbb
add esp, 0x10
call fcn.00402191
mov ecx, eax
call fcn.00408c7c
push 0x25
pop ecx
push 0x23
pop eax
cmp esi, 5
cmove ecx, eax
call fcn.00404536
mov eax, dword [esp + 0x24]
cmp eax, 0xffffffff
je 0x405b27
mov esi, dword [esp + 0x18]
push eax
call esi
xor eax, eax
push eax
lea eax, [esp + 0x9c]
push eax
call fcn.00410782
pop ecx
pop ecx
test eax, eax
jne 0x405b53
lea eax, [esp + 0x98]
push eax
call fcn.00410df1
pop ecx
test eax, eax
jne 0x4050b7
mov edx, dword [esp + 0x20]
push ecx
mov ecx, dword [edi]
push edi
lea edx, [edx - 6]
jmp 0x40581b
xor eax, eax
lea edi, [eax + 1]
xor eax, eax
push eax
push eax
push 3
push eax
push 6
push 0x40010000
push dword [esp + 0x28]
call dword [esp + 0x30]
mov dword [esp + 0x34], eax
cmp eax, 0xffffffff
jne 0x405c5b
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push dword [esp + 0x14]
mov dword [esp + 0x54], eax
push edi
push str.NS_main:_callback_app_file_open_attempt__d_failed._File:__S._Last_error:__d
call fcn.00402191
push eax
call fcn.00408cbb
add esp, 0x14
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
inc edi
cmp edi, 0xa
jle 0x405b68
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x14], eax
call fcn.00402191
mov edi, dword [esp + 0x4c]
push dword [esp + 0x14]
cmp edi, 0x20
je 0x405c4d
push str.NS_main:_callback_app_file_in_use__failed_to_exclusively_open_executable_file:__S
push eax
call fcn.00408cbb
add esp, 0xc
call fcn.00402191
mov ecx, eax
call fcn.00408c7c
push 0x23
pop ecx
push 0x25
pop eax
cmp edi, 5
cmovne ecx, eax
call fcn.00404536
push 0x4341f8
call fcn.00410df1
pop ecx
cmp esi, 0xffffffff
je 0x405c17
push esi
mov esi, dword [esp + 0x1c]
call esi
xor eax, eax
push eax
lea eax, [esp + 0x9c]
push eax
call fcn.00410782
pop ecx
pop ecx
test eax, eax
jne 0x405c43
lea eax, [esp + 0x98]
push eax
call fcn.00410df1
pop ecx
test eax, eax
jne 0x4050b7
push ecx
lea eax, [ebx + 0x18]
push eax
jmp 0x4059f0
push str.NS_main:_callback_app_file_in_use__continuing_without_exclusive_access_for_executable_file:__S
push eax
call fcn.00408cbb
add esp, 0xc
mov edi, dword [esp + 0x34]
cmp byte [0x433b14], 0
mov esi, 0x434608
jne 0x405ca9
cmp byte [0x433b15], 0
jne 0x405ca9
push str.tobedeleted
push 0x434400
push 0x42cd04
push 0x104
push esi
call fcn.0040214f
add esp, 0x14
xor eax, eax
push eax
push esi
call fcn.00410782
pop ecx
pop ecx
test eax, eax
je 0x405ca9
push esi
call fcn.0041085a
pop ecx
push ecx
push 0x404a21
lea ecx, [esp + 0x58]
call fcn.004021e0
test eax, eax
jne 0x405cd6
cmp byte [0x433b14], al
jne 0x405cd6
cmp byte [0x433b15], al
jne 0x405cd6
lea edx, [eax + 1]
xor cl, cl
call fcn.00401ef4
push 0xffffffffffffffff
push dword [esp + 0x54]
call dword [esp + 0x38]
push dword [esp + 0x50]
mov esi, dword [esp + 0x1c]
call esi
cmp dword [esp + 0x20], 6
jle 0x405d0d
cmp byte [0x433b15], 0
jne 0x405d0d
cmp edi, 0xffffffff
je 0x405d02
push edi
call esi
push 0x4341f8
call fcn.00410df1
pop ecx
cmp byte [0x433b14], 0
jne 0x405def
cmp byte [0x433b15], 0
jne 0x405def
mov esi, 0x434608
push esi
call fcn.00410e19
pop ecx
test eax, eax
je 0x405def
call fcn.00414c68
mov edi, str.tobedeleted
push dword [eax]
push edi
push str.NS_main:_unable_to_remove_directory:__S__err:__d
call fcn.00402191
push eax
call fcn.00408cbb
add esp, 0x10
xor eax, eax
push 4
push eax
push esi
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
mov esi, eax
call fcn.00402191
push edi
test esi, esi
je 0x405de1
push str.NS_main:_directory_will_be_removed_on_OS_reboot:__S
jmp 0x405de6
push str.NS_main:_callback_backup_path_truncated
call fcn.00402191
push eax
call fcn.00408cbb
pop ecx
pop ecx
call fcn.00402191
mov ecx, eax
call fcn.00408c7c
push 3
pop ecx
call fcn.00404536
cmp esi, 0xffffffff
je 0x405dac
push esi
mov esi, dword [esp + 0x1c]
call esi
xor eax, eax
push eax
lea eax, [esp + 0x9c]
push eax
call fcn.00410782
pop ecx
pop ecx
test eax, eax
jne 0x404d0c
lea eax, [esp + 0x98]
push eax
call fcn.00410df1
pop ecx
test eax, eax
je 0x404d0c
jmp 0x4050b7
push str.NS_main:_failed_to_schedule_OS_reboot_removal_of_directory:__S
push eax
call fcn.00408cbb
add esp, 0xc
call fcn.00402191
mov ecx, eax
call fcn.00408c7c
mov eax, dword [esp + 0x24]
mov edx, ebx
push eax
lea eax, [esp + 0x9c]
push eax
push ecx
mov ecx, dword [esp + 0x2c]
call fcn.00404c30
xor ecx, ecx
add esp, 0xc
cmp byte [0x433b28], cl
sete cl
test eax, eax
cmovne ecx, eax
mov eax, ecx
mov ecx, dword [esp + 0xedc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040b844
mov esp, ebp
pop ebp
ret