Function at 0x40b010
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 [0x412018]
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 0x40b0e3
push 0
mov eax, dword [ebp - 0x84c]
push eax
push 0x40f484
push str.SHGetFolderPath_failed
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
lea ecx, [ebp - 0x218]
push ecx
push 0x104
lea edx, [ebp - 0x848]
push edx
call fcn.004063a0
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40b12a
push 0
mov eax, dword [ebp - 0x84c]
push eax
push 0x40f4b8
push 0x40f4bc
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
push str.AdobeARM1.0AdobeARM.exe
push 0x104
lea ecx, [ebp - 0x848]
push ecx
call fcn.004063f0
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40b16f
push 0
mov edx, dword [ebp - 0x84c]
push edx
push 0x40f51c
push 0x40f520
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
lea eax, [ebp - 0x848]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40b19e
push 0
push 2
lea ecx, [ebp - 0x848]
push ecx
push str.Unable_to_find
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
lea edx, [ebp - 0x420]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x40b1d4
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x40f568
push str.GetTempPath_failed
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
lea eax, [ebp - 0x420]
push eax
push 0x104
lea ecx, [ebp - 0x640]
push ecx
call fcn.004063a0
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40b21b
push 0
mov edx, dword [ebp - 0x84c]
push edx
push 0x40f594
push str.StringCbCopy_failed
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
lea eax, [ebp - 0x640]
push eax
call fcn.0040ae10
add esp, 4
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40b259
push 0
mov ecx, dword [ebp - 0x84c]
push ecx
push 0x40f5c0
push str.AddRandomFileName_failed
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
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 0x40b2ac
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x40f640
push str.ConvertStringSecurityDescriptorToSecurityDescriptor_failed
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
lea ecx, [ebp - 0x430]
push ecx
lea edx, [ebp - 0x640]
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x40b2e6
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x848]
push eax
push str.CreateDirectory_failed:
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
push str.AdobeARM.exe
push 0x104
lea ecx, [ebp - 0x640]
push ecx
call fcn.004063f0
mov dword [ebp - 0x84c], eax
cmp dword [ebp - 0x84c], 0
jge 0x40b32b
push 0
mov edx, dword [ebp - 0x84c]
push edx
push 0x40f710
push str.StringCchCat_failed
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
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 0x40b375
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x848]
push ecx
push str.Unable_to_open
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
push 1
lea edx, [ebp - 0x640]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.00409b10
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 0x40b3c5
push 0
mov edx, dword [ebp - 0x850]
push edx
lea eax, [ebp - 0x640]
push eax
push str.Unable_to_copy
call fcn.0040aa30
add esp, 0x10
jmp 0x40b550
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.00401730
cmp dword [ebp - 0x424], 0
je 0x40b528
push 0
mov eax, dword [ebp - 4]
push eax
lea ecx, [ebp - 0x640]
push ecx
call fcn.0040a4b0
add esp, 0xc
test eax, eax
jne 0x40b475
lea ecx, [ebp - 0x424]
call fcn.00401770
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.0040aa30
add esp, 0x10
lea ecx, [ebp - 0x424]
call fcn.00401750
jmp 0x40b550
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 0x40b4f1
push 0
push 0
lea ecx, [ebp - 0x640]
push ecx
push str.ShellExecuteEx_succeeded
call fcn.0040aa30
add esp, 0x10
jmp 0x40b526
lea ecx, [ebp - 0x424]
call fcn.00401770
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.0040aa30
add esp, 0x10
jmp 0x40b545
push 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x640]
push ecx
push str.failed_to_lock
call fcn.0040aa30
add esp, 0x10
lea ecx, [ebp - 0x424]
call fcn.00401750
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004076b8
mov esp, ebp
pop ebp
ret