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

Disassembly:
push 0x45c
mov eax, 0x4352f4
call fcn.0041ab20
mov esi, dword [ebp + 8]
lea ecx, [ebp - 0x424]
mov dword [ebp - 0x464], esi
call fcn.00401359
xor edi, edi
mov dword [ebp - 4], edi
mov ebx, edi
call fcn.0040be29
push eax
lea ecx, [ebp - 0x454]
call fcn.00401320
mov byte [ebp - 4], 1
call fcn.0040be29
push eax
lea ecx, [ebp - 0x450]
call fcn.00401320
mov byte [ebp - 4], 2
call fcn.0040be29
push eax
lea ecx, [ebp - 0x44c]
call fcn.00401320
mov byte [ebp - 4], 3
call fcn.0040be29
push eax
lea ecx, [ebp - 0x444]
call fcn.00401320
lea ecx, [ebp - 0x460]
mov byte [ebp - 4], 4
call fcn.00409bfe
push esi
lea ecx, [ebp - 0x45c]
mov byte [ebp - 4], 5
call fcn.00402129
lea eax, [ebp - 0x450]
push eax
lea ecx, [ebp - 0x460]
call fcn.00409d1a
lea eax, [ebp - 0x454]
push eax
lea ecx, [ebp - 0x460]
call fcn.00409c62
lea ecx, [ebp - 0x460]
call fcn.00406f85
mov ecx, dword [ebp - 0x454]
mov dword [ebp - 0x448], eax
cmp dword [ecx - 0xc], edi
jne 0x408868
push str.empty_arm_update_folder
lea ecx, [ebp - 0x434]
call fcn.0040200d
push edi
lea eax, [ebp - 0x434]
mov byte [ebp - 4], 6
push eax
push 2
call fcn.004031a3
mov ecx, dword [ebp - 0x434]
add esp, 0xc
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov ebx, 0x371
jmp 0x409266
push 0x4380e0
push dword [ebp - 0x450]
call fcn.0041fc9e
pop ecx
pop ecx
test eax, eax
jne 0x4091c6
push 0x437078
lea eax, [ebp - 0x454]
push eax
lea eax, [ebp - 0x42c]
push eax
call fcn.004021ce
push 0x449820
push eax
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 7
push eax
call fcn.00402179
add esp, 0x18
mov ecx, dword [ebp - 0x42c]
mov byte [ebp - 4], 9
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov eax, dword [ebp - 0x43c]
add eax, 0xfffffff0
push eax
call fcn.00402378
lea edi, [eax + 0x10]
mov dword [ebp - 0x468], edi
lea ecx, [ebp - 0x434]
mov byte [ebp - 4], 0xa
mov dword [esp], str.self_update_type_is_msi:
call fcn.0040200d
push 0
lea eax, [ebp - 0x43c]
mov byte [ebp - 4], 0xb
push eax
lea eax, [ebp - 0x434]
push eax
push 2
call fcn.00402a61
mov ecx, dword [ebp - 0x434]
add esp, 0x10
mov byte [ebp - 4], 0xa
lea ecx, [ecx - 0x10]
call fcn.00401a18
push dword [ebp - 0x43c]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40912c
xor esi, esi
mov ebx, esi
call fcn.0040be29
push eax
lea ecx, [ebp - 0x440]
call fcn.00401320
push esi
push 0x80
push 3
push esi
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 - 0x42c], eax
mov byte [ebp - 4], 0xd
test eax, eax
je 0x4090e1
cmp eax, 0xffffffff
je 0x4090e1
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.0040b01b
add esp, 0xc
test eax, eax
je 0x4090ca
lea eax, [ebp - 0x438]
mov byte [ebp - 4], 0xe
push eax
push esi
push dword [ebp - 0x43c]
mov dword [ebp - 0x438], esi
call sub.msi.dll_MsiOpenProductW
test eax, eax
jne 0x409095
push str.ProductCode
lea ecx, [ebp - 0x434]
call fcn.0040200d
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0xf
push eax
lea eax, [ebp - 0x434]
push eax
push dword [ebp - 0x438]
call fcn.00405a76
mov ecx, dword [ebp - 0x434]
add esp, 0xc
add ecx, 0xfffffff0
mov esi, eax
call fcn.00401a18
push dword [ebp - 0x438]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
cmp dword [ebp - 0x438], ebx
je 0x408a2d
push dword [ebp - 0x438]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea ecx, [ebp - 0x430]
mov byte [ebp - 4], 0xc
call fcn.00403ee5
test esi, esi
jne 0x408b1b
mov eax, dword [ebp - 0x440]
cmp dword [eax - 0xc], esi
je 0x408b1b
call fcn.0040be29
push eax
lea ecx, [ebp - 0x438]
call fcn.00401320
mov byte [ebp - 4], 0x10
test ebx, ebx
jne 0x408b13
push 0x104
lea ecx, [ebp - 0x438]
call fcn.00403263
push eax
push esi
push ebx
push str.A6EADE66_0804_0000_1959_000000000000
call sub.msi.dll_MsiSourceListClearAllW
push 0xffffffffffffffff
lea ecx, [ebp - 0x438]
mov dword [ebp - 0x434], eax
call fcn.004032e5
mov eax, dword [ebp - 0x434]
test eax, eax
jne 0x408b0a
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x438]
push eax
call fcn.00403f81
pop ecx
pop ecx
test al, al
je 0x408b04
push str.found_already_installed_Product:
lea ecx, [ebp - 0x42c]
inc ebx
call fcn.0040200d
push 0
lea eax, [ebp - 0x438]
mov byte [ebp - 4], 0x11
push eax
lea eax, [ebp - 0x42c]
push eax
push 1
call fcn.00402a61
mov ecx, dword [ebp - 0x42c]
add esp, 0x10
mov byte [ebp - 4], 0x10
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov eax, dword [ebp - 0x434]
inc esi
test eax, eax
je 0x408a68
mov ecx, dword [ebp - 0x438]
jmp 0x408b48
push str.failed_to_get_ProductCode
lea ecx, [ebp - 0x42c]
call fcn.0040200d
push 0
lea eax, [ebp - 0x42c]
mov byte [ebp - 4], 0x12
push eax
push 2
call fcn.004031a3
mov ecx, dword [ebp - 0x42c]
add esp, 0xc
lea ecx, [ecx - 0x10]
mov byte [ebp - 4], 0xc
call fcn.00401a18
lea ecx, [ebp - 0x460]
call fcn.00406fed
neg eax
push 0
sbb eax, eax
and eax, 0x21
add eax, 2
push eax
call sub.msi.dll_MsiSetPropertyW
test ebx, ebx
je 0x408c3f
push 4
push dword [ebp - 0x440]
call sub.msi.dll_MsiSetComponentStateW
mov ebx, eax
test ebx, ebx
je 0x408d33
cmp ebx, 0xbc2
je 0x408d33
push str.failed_to_reinstall__will_uninstall_Product:
lea ecx, [ebp - 0x42c]
call fcn.0040200d
push ebx
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0x14
push eax
lea eax, [ebp - 0x42c]
push eax
push 1
call fcn.00402a61
mov ecx, dword [ebp - 0x42c]
add esp, 0x10
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401a18
push 2
push 1
push dword [ebp - 0x440]
call sub.msi.dll_MsiDatabaseCommit
mov esi, eax
test esi, esi
je 0x408d08
cmp esi, 0xbc2
je 0x408d08
push str.failed_to_uninstall_Product:
lea ecx, [ebp - 0x42c]
call fcn.0040200d
push esi
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0x16
push eax
lea eax, [ebp - 0x42c]
push eax
push 1
call fcn.00402a61
mov ecx, dword [ebp - 0x42c]
add esp, 0x10
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401a18
lea eax, [ebp - 0x43c]
push eax
lea eax, [ebp - 0x440]
push eax
call fcn.00404a14
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x40910b
lea eax, [ebp - 0x44c]
push eax
call fcn.004055d3
pop ecx
test eax, eax
je 0x408c93
lea eax, [ebp - 0x444]
push eax
lea eax, [ebp - 0x44c]
push eax
call fcn.004041e9
pop ecx
pop ecx
test eax, eax
je 0x408c93
lea ecx, [ebp - 0x444]
call fcn.004024d7
push 0x436f68
push dword [ebp - 0x43c]
call sub.msi.dll_MsiOpenDatabaseW
mov ebx, eax
test ebx, ebx
je 0x408dec
cmp ebx, 0xbc2
jne 0x408d78
push str.msi_self_update_returned_REBOOT
lea ecx, [ebp - 0x42c]
call fcn.0040200d
push 0
lea eax, [ebp - 0x42c]
mov byte [ebp - 4], 0x17
push eax
push 1
call fcn.004031a3
mov ecx, dword [ebp - 0x42c]
add esp, 0xc
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401a18
lea eax, [ebp - 0x425]
push eax
push 0x437d74
push str.UpdateInstallReboot
jmp 0x408e36
push str.successfully_uninstalled_Product:
lea ecx, [ebp - 0x42c]
call fcn.0040200d
push 0
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0x15
push eax
lea eax, [ebp - 0x42c]
push eax
push 2
jmp 0x408c25
push str.successfully_reinstalled_Product:
lea ecx, [ebp - 0x42c]
call fcn.0040200d
push 0
lea eax, [ebp - 0x440]
mov byte [ebp - 4], 0x13
push eax
lea eax, [ebp - 0x42c]
push eax
push 2
call fcn.00402a61
mov ecx, dword [ebp - 0x42c]
add esp, 0x10
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401a18
jmp 0x408e4d
push 0x436f68
lea ecx, [ebp - 0x434]
call fcn.0040200d
push str.msi_self_update_failed
lea ecx, [ebp - 0x42c]
mov byte [ebp - 4], 0x18
call fcn.0040200d
push ebx
lea eax, [ebp - 0x434]
mov byte [ebp - 4], 0x19
push eax
lea eax, [ebp - 0x42c]
push eax
push 1
call fcn.00402a61
mov ecx, dword [ebp - 0x42c]
add esp, 0x10
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov ecx, dword [ebp - 0x434]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401a18
lea eax, [ebp - 0x425]
push eax
push 0x437d74
push str.UpdateInstallError
jmp 0x408e36
push str.msi_self_update_succeeded
lea ecx, [ebp - 0x42c]
call fcn.0040200d
push 0
lea eax, [ebp - 0x42c]
mov byte [ebp - 4], 0x1a
push eax
push 2
call fcn.004031a3
mov ecx, dword [ebp - 0x42c]
add esp, 0xc
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401a18
lea eax, [ebp - 0x425]
push eax
push 0x437d74
push str.UpdateInstallSuccess
push str.PingFilesListSU
lea ecx, [ebp - 0x424]
mov byte [ebp - 0x425], 1
call fcn.00401a3e
push dword [ebp - 0x444]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x408f35
mov esi, dword [ebp - 0x44c]
cmp dword [esi - 0xc], 0
je 0x408eea
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x408eea
push str.AdobeARM.exe_is_missing_after_install__will_use_backup
lea ecx, [ebp - 0x42c]
call fcn.0040200d
push 0
lea eax, [ebp - 0x42c]
mov byte [ebp - 4], 0x1b
push eax
push 1
call fcn.004031a3
mov ecx, dword [ebp - 0x42c]
add esp, 0xc
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401a18
lea eax, [ebp - 0x425]
mov byte [ebp - 0x425], 1
push eax
push 0x437d74
push str.SelfUpdateMissingARM
push str.PingFilesList
lea ecx, [ebp - 0x424]
call fcn.00401a3e
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.00402518
cmp eax, 0xffffffff
je 0x408f35
push eax
lea eax, [ebp - 0x42c]
push eax
lea ecx, [ebp - 0x444]
call fcn.004029b0
mov esi, dword [ebp - 0x42c]
push esi
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
lea ecx, [esi - 0x10]
call fcn.00401a18
call fcn.00404602
test ebx, ebx
je 0x408f4a
cmp ebx, 0xbc2
jne 0x40907c
push 0x104
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0041c040
add esp, 0xc
lea eax, [ebp - 0x218]
push eax
push 0
push 0
push 0x23
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x40907c
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x438]
call fcn.0040200d
mov esi, str.AdobeARMS
mov byte [ebp - 4], 0x1c
push esi
call fcn.0041fcde
pop ecx
push eax
push esi
lea ecx, [ebp - 0x438]
call fcn.00402296
cmp dword [ebp - 0x448], 0
jne 0x40904a
call fcn.00407489
test eax, eax
je 0x40904a
call fcn.004073e2
test eax, eax
je 0x40904a
push 1
push dword [ebp - 0x438]
push str.tFolders
push dword [0x449840]
push 0x80000002
call fcn.0040864a
add esp, 0x14
lea ecx, [ebp - 0x434]
push str._ArmCleanup
call fcn.0040200d
push 0x436f68
lea ecx, [ebp - 0x42c]
mov byte [ebp - 4], 0x1d
call fcn.0040200d
lea eax, [ebp - 0x434]
mov byte [ebp - 4], 0x1e
push eax
lea eax, [ebp - 0x42c]
push eax
call fcn.004076fd
pop ecx
pop ecx
mov ecx, dword [ebp - 0x42c]
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov ecx, dword [ebp - 0x434]
lea ecx, [ecx - 0x10]
call fcn.00401a18
jmp 0x40906e
mov eax, dword [ebp - 0x438]
push ecx
add eax, 0xfffffff0
mov esi, esp
push eax
mov dword [ebp - 0x448], esi
call fcn.00402378
add eax, 0x10
pop ecx
mov dword [esi], eax
call fcn.00407572
pop ecx
mov ecx, dword [ebp - 0x438]
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov ecx, dword [ebp - 0x440]
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov esi, dword [ebp - 0x464]
jmp 0x4091b6
push 0x3ee
push 0x437d78
push dword [ebp - 0x43c]
push str.failed_to_open_db:
call fcn.00407a47
add esp, 0x10
mov ebx, eax
cmp dword [ebp - 0x438], 0
je 0x409100
push dword [ebp - 0x438]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
jmp 0x409100
push 0x3ee
push 0x437d78
push dword [ebp - 0x43c]
push str.file_not_valid:
jmp 0x4090f6
push 0x3ee
push 0x437d78
push dword [ebp - 0x43c]
push str.failed_to_lock_for_validation:
call fcn.00407a47
mov ebx, eax
add esp, 0x10
lea ecx, [ebp - 0x430]
call fcn.00403ee5
mov ecx, dword [ebp - 0x440]
lea ecx, [ecx - 0x10]
call fcn.00401a18
lea ecx, [edi - 0x10]
call fcn.00401a18
mov ecx, dword [ebp - 0x43c]
jmp 0x40925e
push 0x436f68
lea ecx, [ebp - 0x434]
call fcn.0040200d
push str.msi_self_update_file_not_found
lea ecx, [ebp - 0x42c]
mov byte [ebp - 4], 0x1f
call fcn.0040200d
push 2
lea eax, [ebp - 0x434]
mov byte [ebp - 4], 0x20
push eax
lea eax, [ebp - 0x42c]
push eax
push 1
call fcn.00402a61
mov ecx, dword [ebp - 0x42c]
add esp, 0x10
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov ecx, dword [ebp - 0x434]
mov byte [ebp - 4], 0xa
lea ecx, [ecx - 0x10]
call fcn.00401a18
lea eax, [ebp - 0x425]
mov byte [ebp - 0x425], 1
push eax
push 0x437d74
push str.SelfUpdateMissingARM
push str.PingFilesList
lea ecx, [ebp - 0x424]
call fcn.00401a3e
lea ecx, [edi - 0x10]
call fcn.00401a18
mov ecx, dword [ebp - 0x43c]
jmp 0x4091f9
push str.unknown_or_not_supported_self_update_type:
lea ecx, [ebp - 0x42c]
call fcn.0040200d
push edi
lea eax, [ebp - 0x450]
mov byte [ebp - 4], 0x21
push eax
lea eax, [ebp - 0x42c]
push eax
push 1
call fcn.00402a61
mov ecx, dword [ebp - 0x42c]
add esp, 0x10
lea ecx, [ecx - 0x10]
mov byte [ebp - 4], 5
call fcn.00401a18
call fcn.0040be29
push eax
lea ecx, [ebp - 0x458]
call fcn.00401320
lea eax, [ebp - 0x458]
mov byte [ebp - 4], 0x22
push eax
lea ecx, [ebp - 0x460]
call fcn.00409f20
lea eax, [ebp - 0x458]
push 0x449824
push eax
call fcn.00403f81
pop ecx
pop ecx
test al, al
je 0x409258
mov edi, str._BackFromArmUpdate
push edi
call fcn.0041fcde
pop ecx
push eax
push edi
mov ecx, esi
call fcn.0040353e
mov ecx, dword [ebp - 0x458]
lea ecx, [ecx - 0x10]
call fcn.00401a18
lea ecx, [ebp - 0x460]
call fcn.00409c21
mov ecx, dword [ebp - 0x444]
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov ecx, dword [ebp - 0x44c]
lea ecx, [ecx - 0x10]
call fcn.00401a18
mov ecx, dword [ebp - 0x450]
add ecx, 0xfffffff0
call fcn.00401a18
mov ecx, dword [ebp - 0x454]
add ecx, 0xfffffff0
call fcn.00401a18
lea ecx, [ebp - 0x424]
call fcn.004014b0
mov eax, ebx
call fcn.0041aaca
ret