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

Disassembly:
push 0x458
mov eax, 0x439ac9
call fcn.0041ea10
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.0040fd19
push eax
lea ecx, [ebp - 0x450]
call main
mov byte [ebp - 4], 1
call fcn.0040fd19
push eax
lea ecx, [ebp - 0x44c]
call main
mov byte [ebp - 4], 2
call fcn.0040fd19
push eax
lea ecx, [ebp - 0x448]
call main
mov byte [ebp - 4], 3
call fcn.0040fd19
push eax
lea ecx, [ebp - 0x444]
call main
lea ecx, [ebp - 0x45c]
mov byte [ebp - 4], 4
call main
push esi
lea ecx, [ebp - 0x458]
mov byte [ebp - 4], 5
call main
lea eax, [ebp - 0x44c]
push eax
lea ecx, [ebp - 0x45c]
call fcn.0040bf8a
lea eax, [ebp - 0x450]
push eax
lea ecx, [ebp - 0x45c]
call fcn.0040bed2
mov eax, dword [ebp - 0x450]
cmp dword [eax - 0xc], ebx
jne 0x40abc1
push 0x371
push str.Self_Update_7z_Result
push 0x43bfd8
push str.empty_arm_update_folder
call fcn.0040884e
add esp, 0x10
mov ebx, eax
jmp 0x40b527
push 0x43d13c
push dword [ebp - 0x44c]
call main
pop ecx
pop ecx
test eax, eax
jne 0x40b486
push 0x43c7b0
lea eax, [ebp - 0x450]
push eax
lea eax, [ebp - 0x428]
push eax
call fcn.004022ae
push 0x45185c
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 main
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.00402ada
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 0x40b3f4
xor ebx, ebx
call fcn.0040fd19
push eax
lea ecx, [ebp - 0x440]
call main
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 0x40b3a9
cmp eax, 0xffffffff
je 0x40b3a9
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 main
add esp, 0xc
test eax, eax
je 0x40b392
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 0x40b35d
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.004063d2
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 0x40ad84
push dword [ebp - 0x434]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
lea ecx, [ebp - 0x42c]
mov byte [ebp - 4], 0xb
call fcn.00403e07
test esi, esi
jne 0x40ae72
mov eax, dword [ebp - 0x440]
cmp dword [eax - 0xc], esi
je 0x40ae72
call fcn.0040fd19
push eax
lea ecx, [ebp - 0x434]
call main
mov byte [ebp - 4], 0xf
test ebx, ebx
jne 0x40ae6a
push 0x104
lea ecx, [ebp - 0x434]
call main
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 main
mov eax, dword [ebp - 0x438]
test eax, eax
jne 0x40ae61
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x434]
push eax
call main
pop ecx
pop ecx
test al, al
je 0x40ae5b
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.00402ada
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 0x40adbf
mov ecx, dword [ebp - 0x434]
jmp 0x40ae9f
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.00403025
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 0x40af82
push 4
push dword [ebp - 0x440]
call sub.msi.dll_MsiSetComponentStateW
mov ebx, eax
test ebx, ebx
je 0x40b047
cmp ebx, 0xbc2
je 0x40b047
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.00402ada
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 0x40b01c
cmp esi, 0xbc2
je 0x40b01c
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.00402ada
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.00404833
mov ebx, eax
pop ecx
pop ecx
test ebx, ebx
jne 0x40b3d3
lea eax, [ebp - 0x448]
push eax
call fcn.00405bd7
pop ecx
test eax, eax
je 0x40afd6
lea eax, [ebp - 0x444]
push eax
lea eax, [ebp - 0x448]
push eax
call fcn.00404109
pop ecx
pop ecx
test eax, eax
je 0x40afd6
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 0x40b0ce
cmp ebx, 0xbc2
jne 0x40b077
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 0x40b0ed
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 0x40af68
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.00402ada
add esp, 0x10
jmp 0x40b0f5
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.00402ada
mov ecx, dword [ebp - 0x428]
add esp, 0x10
lea ecx, [ecx - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x438]
jmp 0x40b0fb
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.00403025
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 main
push dword [ebp - 0x444]
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x40b20b
mov esi, dword [ebp - 0x448]
cmp dword [esi - 0xc], 0
je 0x40b1c0
push esi
call dword [sym.imp.kernel32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40b1c0
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.00403025
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 0x43cfdc
push str.Self_Update_MSI_Missing_ARM
lea ecx, [ebp - 0x424]
call main
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 main
cmp eax, 0xffffffff
je 0x40b20b
push eax
lea eax, [ebp - 0x428]
push eax
lea ecx, [ebp - 0x444]
call main
mov esi, dword [ebp - 0x428]
push esi
call dword [sym.imp.kernel32.dll_RemoveDirectoryW]
lea ecx, [esi - 0x10]
call fcn.00401a64
call fcn.00404421
test ebx, ebx
je 0x40b220
cmp ebx, 0xbc2
jne 0x40b344
push 0x104
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.0041ff30
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 0x40b344
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 main
pop ecx
push eax
push esi
lea ecx, [ebp - 0x434]
call main
call fcn.004081a7
test eax, eax
je 0x40b312
call fcn.00408104
test eax, eax
je 0x40b312
push 1
push dword [ebp - 0x434]
push str.tFolders
push dword [0x451884]
push 0x80000002
call main
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.00408537
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 0x40b336
push ecx
mov esi, esp
mov dword [ebp - 0x428], esi
mov eax, dword [ebp - 0x434]
add eax, 0xfffffff0
push eax
call main
add eax, 0x10
pop ecx
mov dword [esi], eax
call fcn.004083ac
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 0x40b476
push 0x3ee
push str.Self_Update_Init_Error
push dword [ebp - 0x43c]
push str.failed_to_open_db:
call fcn.0040884e
add esp, 0x10
mov ebx, eax
cmp dword [ebp - 0x434], 0
je 0x40b3c8
push dword [ebp - 0x434]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
jmp 0x40b3c8
push 0x3ee
push str.Self_Update_Init_Error
push dword [ebp - 0x43c]
push str.file_not_valid:
jmp 0x40b3be
push 0x3ee
push str.Self_Update_Init_Error
push dword [ebp - 0x43c]
push str.failed_to_lock_for_validation:
call fcn.0040884e
mov ebx, eax
add esp, 0x10
lea ecx, [ebp - 0x42c]
call fcn.00403e07
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 0x40b51f
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.00402ada
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 main
lea ecx, [edi - 0x10]
call fcn.00401a64
mov ecx, dword [ebp - 0x43c]
jmp 0x40b4ba
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.00402ada
mov ecx, dword [ebp - 0x428]
add esp, 0x10
lea ecx, [ecx - 0x10]
mov byte [ebp - 4], 5
call fcn.00401a64
call fcn.0040fd19
push eax
lea ecx, [ebp - 0x454]
call main
lea eax, [ebp - 0x454]
mov byte [ebp - 4], 0x21
push eax
lea ecx, [ebp - 0x45c]
call fcn.0040c190
lea eax, [ebp - 0x454]
push 0x451860
push eax
call main
pop ecx
pop ecx
test al, al
je 0x40b519
mov edi, str._BackFromArmUpdate
push edi
call main
pop ecx
push eax
push edi
mov ecx, esi
call main
mov ecx, dword [ebp - 0x454]
lea ecx, [ecx - 0x10]
call fcn.00401a64
lea ecx, [ebp - 0x45c]
call fcn.0040be91
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.004014c3
mov eax, ebx
call fcn.0041e9ba
ret