Function at 0x40afe1
Capabilities:
Check if file exists
Copy file
Delete directory
Delete file
Get common file path
Get file attributes

Disassembly:
push 0x458
mov eax, 0x43a0ba
call fcn.0041ef30
mov esi, dword [ebp + 8]
lea ecx, [ebp - 0x424]
mov dword [ebp - 0x460], esi
call fcn.00401369
and dword [ebp - 4], 0
xor ebx, ebx
call fcn.00410229
push eax
lea ecx, [ebp - 0x450]
call fcn.00401330
mov byte [ebp - 4], 1
call fcn.00410229
push eax
lea ecx, [ebp - 0x44c]
call fcn.00401330
mov byte [ebp - 4], 2
call fcn.00410229
push eax
lea ecx, [ebp - 0x448]
call fcn.00401330
mov byte [ebp - 4], 3
call fcn.00410229
push eax
lea ecx, [ebp - 0x444]
call fcn.00401330
lea ecx, [ebp - 0x45c]
mov byte [ebp - 4], 4
call fcn.0040c385
push esi
lea ecx, [ebp - 0x458]
mov byte [ebp - 4], 5
call fcn.00402209
lea eax, [ebp - 0x44c]
push eax
lea ecx, [ebp - 0x45c]
call fcn.0040c49a
lea eax, [ebp - 0x450]
push eax
lea ecx, [ebp - 0x45c]
call fcn.0040c3e2
mov eax, dword [ebp - 0x450]
cmp dword [eax - 0xc], ebx
jne 0x40b0cb
push 0x371
push str.Self_Update_7z_Result
push 0x43bfd8
push str.empty_arm_update_folder
call fcn.00408d2a
add esp, 0x10
mov ebx, eax
jmp 0x40ba31
push 0x43d1fc
push dword [ebp - 0x44c]
call fcn.004240ce
pop ecx
pop ecx
test eax, eax
jne 0x40b990
push 0x43c0e8
lea eax, [ebp - 0x450]
push eax
lea eax, [ebp - 0x428]
push eax
call fcn.004022ae
push 0x451858
push eax
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 6
push eax
call fcn.00402259
add esp, 0x18
mov ecx, dword [ebp - 0x428]
mov byte [ebp - 4], 8
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov eax, dword [ebp - 0x43c]
add eax, 0xfffffff0
push eax
call fcn.00402458
lea edi, [eax + 0x10]
mov dword [ebp - 0x464], edi
lea ecx, [ebp - 0x438]
mov byte [ebp - 4], 9
mov dword [esp], str.self_update_type_is_msi:
call fcn.004020ed
push 0
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 0xa
push eax
lea eax, [ebp - 0x438]
push eax
push 2
call fcn.00402aff
mov ecx, dword [ebp - 0x438]
add esp, 0x10
mov byte [ebp - 4], 9
lea ecx, [ecx - 0x10]
call fcn.00401a64
push dword [ebp - 0x43c]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40b8fe
xor ebx, ebx
call fcn.00410229
push eax
lea ecx, [ebp - 0x440]
call fcn.00401330
push ebx
push 0x80
push 3
push ebx
push 1
push 0x80000000
push dword [ebp - 0x43c]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - method.AutoHandle.virtual_0], vtable.AutoHandle.0
mov dword [ebp - 0x428], eax
mov byte [ebp - 4], 0xc
test eax, eax
je 0x40b8b3
cmp eax, 0xffffffff
je 0x40b8b3
push str.2_16_17_18_19_52_53_54_63_68_81_82_83_84_85_86_87_88_89_90_91_92_93_97
push eax
push dword [ebp - 0x43c]
call fcn.0040f26f
add esp, 0xc
test eax, eax
je 0x40b89c
and dword [ebp - 0x434], ebx
lea eax, [ebp - 0x434]
push eax
push ebx
push dword [ebp - 0x43c]
mov byte [ebp - 4], 0xd
call sub.msi.dll_MsiOpenProductW
test eax, eax
jne 0x40b867
push str.ProductCode
lea ecx, [ebp - 0x438]
call fcn.004020ed
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0xe
push eax
lea eax, [ebp - 0x438]
push eax
push dword [ebp - 0x434]
call fcn.004067ed
mov ecx, dword [ebp - 0x438]
add esp, 0xc
add ecx, 0xfffffff0
mov esi, eax
call fcn.00401a64
push dword [ebp - 0x434]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x434], ebx
je 0x40b28e
push dword [ebp - 0x434]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea ecx, [ebp - 0x42c]
mov byte [ebp - 4], 0xb
call fcn.00403fa5
test esi, esi
jne 0x40b37c
mov eax, dword [ebp - 0x440]
cmp dword [eax - 0xc], esi
je 0x40b37c
call fcn.00410229
push eax
lea ecx, [ebp - 0x434]
call fcn.00401330
mov byte [ebp - 4], 0xf
test ebx, ebx
jne 0x40b374
push 0x104
lea ecx, [ebp - 0x434]
call fcn.00403325
push eax
push esi
push ebx
push str.A6EADE66_0804_0000_1959_000000000000
call sub.msi.dll_MsiSourceListClearAllW
push 0xffffffffffffffff
lea ecx, [ebp - 0x434]
mov dword [ebp - 0x438], eax
call fcn.004033a7
mov eax, dword [ebp - 0x438]
test eax, eax
jne 0x40b36b
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x434]
push eax
call fcn.00404041
pop ecx
pop ecx
test al, al
je 0x40b365
push str.found_already_installed_Product:
lea ecx, [ebp - 0x428]
inc ebx
call fcn.004020ed
push 0
lea eax, [ebp - 0x434]
mov byte [ebp - 4], 0x10
push eax
lea eax, [ebp - 0x428]
push eax
push 1
call fcn.00402aff
mov ecx, dword [ebp - 0x428]
add esp, 0x10
mov byte [ebp - 4], 0xf
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov eax, dword [ebp - 0x438]
inc esi
test eax, eax
je 0x40b2c9
mov ecx, dword [ebp - 0x434]
jmp 0x40b3a9
push str.failed_to_get_ProductCode
lea ecx, [ebp - 0x428]
call fcn.004020ed
push 0
lea eax, [ebp - 0x428]
mov byte [ebp - 4], 0x11
push eax
push 2
call fcn.00403241
mov ecx, dword [ebp - 0x428]
add esp, 0xc
lea ecx, [ecx - 0x10]
mov byte [ebp - 4], 0xb
call fcn.00401a64
push 0
push 2
call sub.msi.dll_MsiSetPropertyW
test ebx, ebx
je 0x40b48c
push 4
push dword [ebp - 0x440]
call sub.msi.dll_MsiSetComponentStateW
mov ebx, eax
test ebx, ebx
je 0x40b551
cmp ebx, 0xbc2
je 0x40b551
push str.failed_to_reinstall__will_uninstall_Product:
lea ecx, [ebp - 0x428]
call fcn.004020ed
push ebx
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0x13
push eax
lea eax, [ebp - 0x428]
push eax
push 1
call fcn.00402aff
mov ecx, dword [ebp - 0x428]
add esp, 0x10
mov byte [ebp - 4], 0xb
lea ecx, [ecx - 0x10]
call fcn.00401a64
push 2
push 1
push dword [ebp - 0x440]
call sub.msi.dll_MsiDatabaseCommit
mov esi, eax
test esi, esi
je 0x40b526
cmp esi, 0xbc2
je 0x40b526
push str.failed_to_uninstall_Product:
lea ecx, [ebp - 0x428]
call fcn.004020ed
push esi
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0x15
push eax
lea eax, [ebp - 0x428]
push eax
push 1
call fcn.00402aff
mov ecx, dword [ebp - 0x428]
add esp, 0x10
mov byte [ebp - 4], 0xb
lea ecx, [ecx - 0x10]
call fcn.00401a64
lea eax, [ebp - 0x43c]
push eax
lea eax, [ebp - 0x440]
push eax
call fcn.00404ad4
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x40b8dd
lea eax, [ebp - 0x448]
push eax
call fcn.00405ed4
pop ecx
test eax, eax
je 0x40b4e0
lea eax, [ebp - 0x444]
push eax
lea eax, [ebp - 0x448]
push eax
call fcn.004042a9
pop ecx
pop ecx
test eax, eax
je 0x40b4e0
lea ecx, [ebp - 0x444]
call fcn.004025b7
push 0x43bfd8
push dword [ebp - 0x43c]
call sub.msi.dll_MsiOpenDatabaseW
mov ebx, eax
test ebx, ebx
je 0x40b5d8
cmp ebx, 0xbc2
jne 0x40b581
push str.msi_self_update_returned_REBOOT
lea ecx, [ebp - 0x428]
call fcn.004020ed
push 0
lea eax, [ebp - 0x428]
mov byte [ebp - 4], 0x16
push eax
push 1
jmp 0x40b5f7
push str.successfully_uninstalled_Product:
lea ecx, [ebp - 0x428]
call fcn.004020ed
push 0
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0x14
push eax
lea eax, [ebp - 0x428]
push eax
push 2
jmp 0x40b472
push str.successfully_reinstalled_Product:
lea ecx, [ebp - 0x428]
call fcn.004020ed
push 0
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0x12
push eax
lea eax, [ebp - 0x428]
push eax
push 2
call fcn.00402aff
add esp, 0x10
jmp 0x40b5ff
push 0x43bfd8
lea ecx, [ebp - 0x438]
call fcn.004020ed
push str.msi_self_update_failed
lea ecx, [ebp - 0x428]
mov byte [ebp - 4], 0x17
call fcn.004020ed
push ebx
lea eax, [ebp - 0x438]
mov byte [ebp - 4], 0x18
push eax
lea eax, [ebp - 0x428]
push eax
push 1
call fcn.00402aff
mov ecx, dword [ebp - 0x428]
add esp, 0x10
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x438]
jmp 0x40b605
push str.msi_self_update_succeeded
lea ecx, [ebp - 0x428]
call fcn.004020ed
push 0
lea eax, [ebp - 0x428]
mov byte [ebp - 4], 0x19
push eax
push 2
call fcn.00403241
add esp, 0xc
mov ecx, dword [ebp - 0x428]
lea ecx, [ecx - 0x10]
mov byte [ebp - 4], 0xb
call fcn.00401a64
lea eax, [ebp - 0x42d]
mov byte [ebp - 0x42d], 0
push eax
push ebx
push str.Self_Update_MSI_Result
lea ecx, [ebp - 0x424]
call fcn.00401bdc
push dword [ebp - 0x444]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40b715
mov esi, dword [ebp - 0x448]
cmp dword [esi - 0xc], 0
je 0x40b6ca
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40b6ca
push str.AdobeARM.exe_is_missing_after_install__will_use_backup
lea ecx, [ebp - 0x428]
call fcn.004020ed
push 0
lea eax, [ebp - 0x428]
mov byte [ebp - 4], 0x1a
push eax
push 1
call fcn.00403241
mov ecx, dword [ebp - 0x428]
add esp, 0xc
mov byte [ebp - 4], 0xb
lea ecx, [ecx - 0x10]
call fcn.00401a64
lea eax, [ebp - 0x42d]
mov byte [ebp - 0x42d], 0
push eax
push 0
push 0x43d09c
push str.Self_Update_MSI_Missing_ARM
lea ecx, [ebp - 0x424]
call fcn.00401a8a
push 0
push esi
push dword [ebp - 0x444]
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push dword [ebp - 0x444]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0
push str.AdobeARM.exe
lea ecx, [ebp - 0x444]
call fcn.004025f8
cmp eax, 0xffffffff
je 0x40b715
push eax
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x444]
call fcn.00402a4e
mov esi, dword [ebp - 0x428]
push esi
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
lea ecx, [esi - 0x10]
call fcn.00401a64
call fcn.004046c2
test ebx, ebx
je 0x40b72a
cmp ebx, 0xbc2
jne 0x40b84e
push 0x104
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.00420450
add esp, 0xc
lea eax, [ebp - 0x218]
push eax
xor eax, eax
push eax
push eax
push 0x23
push eax
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x40b84e
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x434]
call fcn.004020ed
mov esi, str.AdobeARMS
mov byte [ebp - 4], 0x1b
push esi
call fcn.0042410e
pop ecx
push eax
push esi
lea ecx, [ebp - 0x434]
call fcn.00402376
call fcn.00408683
test eax, eax
je 0x40b81c
call fcn.004085e0
test eax, eax
je 0x40b81c
push 1
push dword [ebp - 0x434]
push str.tFolders
push dword [0x451878]
push 0x80000002
call fcn.0040aadb
add esp, 0x14
lea ecx, [ebp - 0x438]
push str._ArmCleanup
call fcn.004020ed
push 0x43bfd8
lea ecx, [ebp - 0x428]
mov byte [ebp - 4], 0x1c
call fcn.004020ed
lea eax, [ebp - 0x438]
mov byte [ebp - 4], 0x1d
push eax
lea eax, [ebp - 0x428]
push eax
call fcn.00408a13
pop ecx
pop ecx
mov ecx, dword [ebp - 0x428]
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x438]
lea ecx, [ecx - 0x10]
call fcn.00401a64
jmp 0x40b840
push ecx
mov esi, esp
mov dword [ebp - 0x428], esi
mov eax, dword [ebp - 0x434]
add eax, 0xfffffff0
push eax
call fcn.00402458
add eax, 0x10
pop ecx
mov dword [esi], eax
call fcn.00408888
pop ecx
mov ecx, dword [ebp - 0x434]
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x440]
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov esi, dword [ebp - 0x460]
jmp 0x40b980
push 0x3ee
push str.Self_Update_Init_Error
push dword [ebp - 0x43c]
push str.failed_to_open_db:
call fcn.00408d2a
add esp, 0x10
mov ebx, eax
cmp dword [ebp - 0x434], 0
je 0x40b8d2
push dword [ebp - 0x434]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
jmp 0x40b8d2
push 0x3ee
push str.Self_Update_Init_Error
push dword [ebp - 0x43c]
push str.file_not_valid:
jmp 0x40b8c8
push 0x3ee
push str.Self_Update_Init_Error
push dword [ebp - 0x43c]
push str.failed_to_lock_for_validation:
call fcn.00408d2a
mov ebx, eax
add esp, 0x10
lea ecx, [ebp - 0x42c]
call fcn.00403fa5
mov ecx, dword [ebp - 0x440]
lea ecx, [ecx - 0x10]
call fcn.00401a64
lea ecx, [edi - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x43c]
jmp 0x40ba29
push 0x43bfd8
lea ecx, [ebp - 0x438]
call fcn.004020ed
push str.msi_self_update_file_not_found
lea ecx, [ebp - 0x428]
mov byte [ebp - 4], 0x1e
call fcn.004020ed
push 2
lea eax, [ebp - 0x438]
mov byte [ebp - 4], 0x1f
push eax
lea eax, [ebp - 0x428]
push eax
push 1
call fcn.00402aff
mov ecx, dword [ebp - 0x428]
add esp, 0x10
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x438]
mov byte [ebp - 4], 9
lea ecx, [ecx - 0x10]
call fcn.00401a64
lea eax, [ebp - 0x42d]
mov byte [ebp - 0x42d], 0
push eax
push 2
push str.Self_Update_MSI_Result
lea ecx, [ebp - 0x424]
call fcn.00401bdc
lea ecx, [edi - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x43c]
jmp 0x40b9c4
push str.unknown_or_not_supported_self_update_type:
lea ecx, [ebp - 0x428]
call fcn.004020ed
push 0
lea eax, [ebp - 0x44c]
mov byte [ebp - 4], 0x20
push eax
lea eax, [ebp - 0x428]
push eax
push 1
call fcn.00402aff
mov ecx, dword [ebp - 0x428]
add esp, 0x10
lea ecx, [ecx - 0x10]
mov byte [ebp - 4], 5
call fcn.00401a64
call fcn.00410229
push eax
lea ecx, [ebp - 0x454]
call fcn.00401330
lea eax, [ebp - 0x454]
mov byte [ebp - 4], 0x21
push eax
lea ecx, [ebp - 0x45c]
call fcn.0040c6a0
lea eax, [ebp - 0x454]
push 0x45185c
push eax
call fcn.00404041
pop ecx
pop ecx
test al, al
je 0x40ba23
mov edi, str._BackFromArmUpdate
push edi
call fcn.0042410e
pop ecx
push eax
push edi
mov ecx, esi
call fcn.004035fe
mov ecx, dword [ebp - 0x454]
lea ecx, [ecx - 0x10]
call fcn.00401a64
lea ecx, [ebp - 0x45c]
call fcn.0040c3a8
mov ecx, dword [ebp - 0x444]
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x448]
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x44c]
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x450]
lea ecx, [ecx - 0x10]
call fcn.00401a64
lea ecx, [ebp - 0x424]
call fcn.004014c0
mov eax, ebx
call fcn.0041eeda
ret