Function at 0x40baf0
Capabilities:
Check if file exists
Create directory
Create process on windows
Delete file
Get common file path
Get file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x88c
mov eax, dword [0x413018]
xor eax, ebp
mov dword [ebp - 0x10], eax
xor eax, eax
mov word [ebp - 0x218], ax
push 0x206
push 0
lea ecx, [ebp - 0x216]
push ecx
call sub.MSVCR90.dll_memset
add esp, 0xc
xor edx, edx
mov word [ebp - 0x420], dx
push 0x206
push 0
lea eax, [ebp - 0x41e]
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
xor ecx, ecx
mov word [ebp - 0x848], cx
push 0x206
push 0
lea edx, [ebp - 0x846]
push edx
call sub.MSVCR90.dll_memset
add esp, 0xc
xor eax, eax
mov word [ebp - 0x640], ax
push 0x206
push 0
lea ecx, [ebp - 0x63e]
push ecx
call sub.MSVCR90.dll_memset
add esp, 0xc
lea edx, [ebp - 0x218]
push edx
push 0
push 0
push 0x2b
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40bbc3
push 0
mov eax, dword [ebp - 0x84c]
push eax
push 0x4104cc
push str.SHGetFolderPath_failed
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
lea ecx, [ebp - 0x218]
push ecx
push 0x104
lea edx, [ebp - 0x848]
push edx
call fcn.00406370
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40bc0a
push 0
mov eax, dword [ebp - 0x84c]
push eax
push 0x410500
push 0x410504
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
push str.AdobeARM1.0AdobeARM.exe
push 0x104
lea ecx, [ebp - 0x848]
push ecx
call fcn.004063c0
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40bc4f
push 0
mov edx, dword [ebp - 0x84c]
push edx
push 0x410564
push 0x410568
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
lea eax, [ebp - 0x848]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40bc7e
push 0
push 2
lea ecx, [ebp - 0x848]
push ecx
push str.Unable_to_find
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
lea edx, [ebp - 0x420]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x40bcb4
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x4105b0
push str.GetTempPath_failed
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
lea eax, [ebp - 0x420]
push eax
push 0x104
lea ecx, [ebp - 0x640]
push ecx
call fcn.00406370
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40bcfb
push 0
mov edx, dword [ebp - 0x84c]
push edx
push 0x4105dc
push str.StringCbCopy_failed
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
lea eax, [ebp - 0x640]
push eax
call fcn.0040b8f0
add esp, 4
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40bd39
push 0
mov ecx, dword [ebp - 0x84c]
push ecx
push 0x410608
push str.AddRandomFileName_failed
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
mov dword [ebp - 0x430], 0xc
mov dword [ebp - 0x428], 0
mov dword [ebp - 0xc], str.D:P_A_OICI_GA___BA__A_OICI_GA___SY_
push 0
lea edx, [ebp - 0x42c]
push edx
push 1
mov eax, dword [ebp - 0xc]
push eax
call sub.ADVAPI32.dll_ConvertStringSecurityDescriptorToSecurityDescriptorW
test eax, eax
jne 0x40bd8c
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x410688
push str.ConvertStringSecurityDescriptorToSecurityDescriptor_failed
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
lea ecx, [ebp - 0x430]
push ecx
lea edx, [ebp - 0x640]
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x40bdc6
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x848]
push eax
push str.CreateDirectory_failed:
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
push str.AdobeARM.exe
push 0x104
lea ecx, [ebp - 0x640]
push ecx
call fcn.004063c0
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40be0b
push 0
mov edx, dword [ebp - 0x84c]
push edx
push 0x410758
push str.StringCchCat_failed
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
push 0
push 0x80
push 3
push 0
push 1
push SysReAllocString
lea eax, [ebp - 0x848]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0xffffffff
jne 0x40be55
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x848]
push ecx
push str.Unable_to_open
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
push 1
lea edx, [ebp - 0x640]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.0040a580
add esp, 0xc
mov dword [ebp - 0x850], eax
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x850], 0
je 0x40bea5
push 0
mov edx, dword [ebp - 0x850]
push edx
lea eax, [ebp - 0x640]
push eax
push str.Unable_to_copy
call fcn.0040b510
add esp, 0x10
jmp 0x40c030
push 0
push 0x80
push 3
push 0
push 1
push SysReAllocString
lea ecx, [ebp - 0x640]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 4], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x434], eax
mov edx, dword [ebp - 4]
sub edx, 0xffffffff
neg edx
sbb edx, edx
and edx, dword [ebp - 4]
push edx
lea ecx, [ebp - 0x424]
call fcn.00401270
cmp dword [ebp - 0x424], 0
je 0x40c008
push 0
mov eax, dword [ebp - 4]
push eax
lea ecx, [ebp - 0x640]
push ecx
call fcn.0040af60
add esp, 0xc
test eax, eax
jne 0x40bf55
lea ecx, [ebp - 0x424]
call fcn.00401760
lea edx, [ebp - 0x640]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0
push 0x357
lea eax, [ebp - 0x640]
push eax
push str.file_not_valid:
call fcn.0040b510
add esp, 0x10
lea ecx, [ebp - 0x424]
call fcn.00401740
jmp 0x40c030
mov dword [ebp - 0x88c], 0
push 0x38
push 0
lea ecx, [ebp - 0x888]
push ecx
call sub.MSVCR90.dll_memset
add esp, 0xc
mov dword [ebp - 0x88c], 0x3c
mov dword [ebp - 0x888], 0x540
mov dword [ebp - 0x870], 5
mov dword [ebp - 0x878], str._UninstallARM
lea edx, [ebp - 0x640]
mov dword [ebp - 0x87c], edx
lea eax, [ebp - 0x88c]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x40bfd1
push 0
push 0
lea ecx, [ebp - 0x640]
push ecx
push str.ShellExecuteEx_succeeded
call fcn.0040b510
add esp, 0x10
jmp 0x40c006
lea ecx, [ebp - 0x424]
call fcn.00401760
lea edx, [ebp - 0x640]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x640]
push eax
push str.ShellExecuteEx_failed
call fcn.0040b510
add esp, 0x10
jmp 0x40c025
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x640]
push ecx
push str.failed_to_lock
call fcn.0040b510
add esp, 0x10
lea ecx, [ebp - 0x424]
call fcn.00401740
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00407f30
mov esp, ebp
pop ebp
ret