Function at 0x40a9f0
Capabilities:
Check if file exists
Create process on windows
Delete file
Get common file path
Get startup folder

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4e2cad
mov eax, dword fs:[0]
push eax
mov eax, 0x11bc
call fcn.004bc030
mov eax, dword [0x530400]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0x11a9]
mov dword [ebp - 0x118], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x11a4], eax
call fcn.004082c0
mov ecx, dword [edi + 0x5c]
test ecx, ecx
je 0x40aa51
mov eax, dword [ecx]
push 0x4e7dc4
call dword [eax + 0x3c]
mov ecx, dword [edi + 0x54]
test ecx, ecx
je 0x40aa62
mov eax, dword [ecx]
push 1
call dword [eax + 0xec]
mov ecx, dword [edi + 0x58]
test ecx, ecx
je 0x40aa80
mov eax, dword [ecx]
push 0x4e7d64
call dword [eax + 0x3c]
mov ecx, dword [edi + 0x58]
push 1
mov eax, dword [ecx]
call dword [eax + 0xec]
cmp byte [ebp + 8], 0
je 0x40b129
call fcn.0040ce80
mov ecx, eax
call fcn.0040eca0
mov dword [ebp - 0x11a8], eax
call fcn.0040ce80
mov ecx, eax
call fcn.0040ecb0
mov ecx, dword [eax + 4]
mov dword [ebp - 0x11b0], ecx
call fcn.0040ce80
mov ecx, eax
call fcn.0040ecb0
mov esi, dword [eax]
mov eax, dword [ebp - 0x11b0]
cmp esi, eax
je 0x40aade
mov ecx, dword [ebp - 0x11a8]
nop
cmp dword [esi], ecx
je 0x40aade
add esi, 0x84
cmp esi, eax
jne 0x40aad0
call fcn.0040ce80
mov ecx, eax
call fcn.0040ecb0
cmp esi, dword [eax + 4]
jne 0x40abda
push 0x568
lea eax, [ebp - 0x6d0]
push 0
push eax
call fcn.004bda10
add esp, 0xc
lea eax, [ebp - 0x118]
lea ecx, [ebp - 0x6d0]
push eax
call fcn.00416cb0
mov esi, dword [method.DuiLib::CListElementUI.1.virtual_0]
lea ecx, [edi - 0x4bc]
push 0
push 0
push 0
push 0
push 0
push 0x100
push 0x10ce0000
push 0x4e7d0c
mov dword [ebp - 4], 0
call esi
push eax
lea ecx, [ebp - 0x6d0]
call dword [0x50b060]
lea ecx, [ebp - 0x6d0]
call dword [0x50b068]
push 0
lea ecx, [ebp - 0x6d0]
call fcn.00418030
push 0x4e7dd0
lea ecx, [ebp - 0x6d0]
call fcn.00418790
push 0x4e7ddc
lea ecx, [ebp - 0x6d0]
call fcn.00418490
lea ecx, [ebp - 0x6d0]
call dword [0x50b064]
push 1
push 0
push 0
push dword [ebp - 0x11a4]
push 0x50aea4
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push 0
push 0xf060
push 0x112
lea ecx, [edi - 0x4bc]
call esi
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
lea ecx, [ebp - 0x6d0]
jmp 0x40b20b
cmp dword [edi + 0x94], 0xf
lea eax, [edi + 0x80]
jbe 0x40abeb
mov eax, dword [eax]
cmp dword [edi + 0xac], 0xf
lea ecx, [edi + 0x98]
jbe 0x40abfc
mov ecx, dword [ecx]
push eax
push 0x4e7d54
push str.complete
push ecx
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
push 0x104
lea eax, [ebp - 0x114]
push 0
push eax
call fcn.004bda10
add esp, 0xc
lea eax, [ebp - 0x114]
push dword [ebp - 0x11a4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
cmp dword [esi + 0x80], 0xf
lea eax, [esi + 0x6c]
jbe 0x40ac45
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
xorps xmm0, xmm0
mov dword [ebp - 0x120], 0
lea ecx, [ebp - 0x114]
mov dword [ebp - 0x11c], 0
movups xmmword [ebp - 0x130], xmm0
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ac80
sub ecx, edx
lea eax, [ebp - 0x114]
push ecx
push eax
lea ecx, [ebp - 0x130]
call fcn.00403b90
cmp dword [ebp - 0x11c], 0xf
lea eax, [ebp - 0x130]
mov dword [ebp - 4], 1
cmova eax, dword [ebp - 0x130]
cmp dword [ebp - 0x120], 0
mov dword [ebp - 0x11a8], eax
je 0x40ad38
push 0x100
lea eax, [ebp - 0x268]
push 0
push eax
call fcn.004bda10
add esp, 0xc
mov ecx, 0x4e7e04
movzx eax, byte [ecx]
inc ecx
mov byte [ebp + eax - 0x268], 1
cmp ecx, 0x4e7e06
jne 0x40ace1
mov eax, dword [ebp - 0x120]
or ecx, 0xffffffff
mov edx, dword [ebp - 0x11a8]
dec eax
cmp eax, ecx
cmovb ecx, eax
movzx eax, byte [ecx + edx]
add ecx, edx
mov al, byte [ebp + eax - 0x268]
test al, al
jne 0x40ad34
nop dword [eax + eax]
cmp ecx, edx
je 0x40ad38
movzx eax, byte [ecx - 1]
dec ecx
mov al, byte [ebp + eax - 0x268]
test al, al
je 0x40ad20
sub ecx, edx
jmp 0x40ad3b
or ecx, 0xffffffff
cmp dword [ebp - 0x120], ecx
lea eax, [ebp - 0x130]
xorps xmm0, xmm0
mov dword [ebp - 0x138], 0
cmovb ecx, dword [ebp - 0x120]
cmp dword [ebp - 0x11c], 0xf
push ecx
cmova eax, dword [ebp - 0x130]
lea ecx, [ebp - 0x148]
push eax
movups xmmword [ebp - 0x148], xmm0
mov dword [ebp - 0x134], 0
call fcn.00403b90
lea ecx, [ebp - 0x130]
call fcn.00403170
movups xmm0, xmmword [ebp - 0x148]
lea ecx, [ebp - 0x148]
mov byte [ebp - 0x148], 0
movups xmmword [ebp - 0x130], xmm0
movq xmm0, qword [ebp - 0x138]
movq qword [ebp - 0x120], xmm0
mov dword [ebp - 0x138], 0
mov dword [ebp - 0x134], 0xf
call fcn.00403170
lea eax, [ebp - 0x114]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x40aede
push 0x568
push eax
lea eax, [ebp - 0x6d0]
push eax
call fcn.004bda10
add esp, 0xc
lea eax, [ebp - 0x118]
lea ecx, [ebp - 0x6d0]
push eax
call fcn.00416cb0
mov esi, dword [method.DuiLib::CListElementUI.1.virtual_0]
lea ecx, [edi - 0x4bc]
push 0
push 0
push 0
push 0
push 0
push 0x100
push 0x10ce0000
push 0x4e7d0c
mov byte [ebp - 4], 2
call esi
push eax
lea ecx, [ebp - 0x6d0]
call dword [0x50b060]
lea ecx, [ebp - 0x6d0]
call dword [0x50b068]
push 0
lea ecx, [ebp - 0x6d0]
call fcn.00418030
push 0x4e7d1c
lea ecx, [ebp - 0x6d0]
call fcn.00418790
push 0x4e7d28
lea ecx, [ebp - 0x6d0]
call fcn.00418490
lea ecx, [ebp - 0x6d0]
call dword [0x50b064]
push 1
push 0
push 0
push dword [ebp - 0x11a4]
push 0x50aea4
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push 0
push 0xf060
push 0x112
lea ecx, [edi - 0x4bc]
call esi
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
lea ecx, [ebp - 0x6d0]
call fcn.00416e10
lea ecx, [ebp - 0x130]
call fcn.00403170
jmp 0x40b210
mov ecx, dword [edi + 0x5c]
test ecx, ecx
je 0x40aeef
mov eax, dword [ecx]
push 0x4e7e08
call dword [eax + 0x3c]
push dword [ebp - 0x118]
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x160]
push eax
call fcn.00401c90
add esp, 8
cmp dword [ebp - 0x14c], 7
lea eax, [ebp - 0x160]
mov byte [ebp - 4], 3
cmova eax, dword [ebp - 0x160]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40b043
lea eax, [esi + 0xc]
push eax
lea ecx, [ebp - 0x148]
call fcn.00402630
push 4
push str..lnk
lea ecx, [ebp - 0x148]
mov byte [ebp - 4], 4
call fcn.004024e0
push 0x208
lea eax, [ebp - 0x370]
push 0
push eax
call fcn.004bda10
add esp, 0xc
lea eax, [ebp - 0x370]
push 0
push 0x10
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
cmp dword [ebp - 0x134], 0xf
lea eax, [ebp - 0x148]
cmova eax, dword [ebp - 0x148]
push eax
lea eax, [ebp - 0x11c8]
push eax
call fcn.00401c90
add esp, 8
cmp dword [eax + 0x14], 7
jbe 0x40afb2
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x370]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea ecx, [ebp - 0x11c8]
call fcn.00403110
cmp dword [ebp - 0x11c], 0xf
lea eax, [ebp - 0x130]
cmova eax, dword [ebp - 0x130]
push eax
lea eax, [ebp - 0x11c8]
push eax
call fcn.00401c90
add esp, 8
mov ecx, eax
cmp dword [ecx + 0x14], 7
mov byte [ebp - 4], 5
jbe 0x40affd
mov ecx, dword [ecx]
cmp dword [ebp - 0x14c], 7
lea eax, [ebp - 0x160]
push ecx
cmova eax, dword [ebp - 0x160]
lea ecx, [ebp - 0x370]
push 0
push ecx
push 0
push eax
lea ecx, [edi - 0x4bc]
call fcn.00409b10
lea ecx, [ebp - 0x11c8]
call fcn.00403110
lea ecx, [ebp - 0x148]
mov byte [ebp - 4], 3
call fcn.00403170
push 0x568
lea eax, [ebp - 0xc38]
push 0
push eax
call fcn.004bda10
add esp, 0xc
lea eax, [ebp - 0x164]
lea ecx, [ebp - 0xc38]
push eax
call fcn.00416cb0
mov esi, dword [method.DuiLib::CListElementUI.1.virtual_0]
lea ecx, [edi - 0x4bc]
push 0
push 0
push 0
push 0
push 0
push 0x108
push 0x10ce0000
push 0x4e7d0c
mov byte [ebp - 4], 6
call esi
push eax
lea ecx, [ebp - 0xc38]
call dword [0x50b060]
lea ecx, [ebp - 0xc38]
call dword [0x50b068]
push 0
lea ecx, [ebp - 0xc38]
call fcn.00418030
push 0x4e7e1c
lea ecx, [ebp - 0xc38]
call fcn.00418790
push 0x4e7e28
lea ecx, [ebp - 0xc38]
call fcn.00418490
lea ecx, [ebp - 0xc38]
call dword [0x50b064]
push 0
push 0xf060
push 0x112
lea ecx, [edi - 0x4bc]
call esi
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
lea ecx, [ebp - 0xc38]
call fcn.00416e10
lea ecx, [ebp - 0x160]
call fcn.00403110
lea ecx, [ebp - 0x130]
call fcn.00403170
jmp 0x40b210
push 0x568
lea eax, [ebp - 0x11a0]
push 0
push eax
call fcn.004bda10
add esp, 0xc
lea eax, [ebp - 0x168]
lea ecx, [ebp - 0x11a0]
push eax
call fcn.00416cb0
mov esi, dword [method.DuiLib::CListElementUI.1.virtual_0]
lea ecx, [edi - 0x4bc]
push 0
push 0
push 0
push 0
push 0
push 0x100
push 0x10ce0000
push 0x4e7d0c
mov dword [ebp - 4], 7
call esi
push eax
lea ecx, [ebp - 0x11a0]
call dword [0x50b060]
lea ecx, [ebp - 0x11a0]
call dword [0x50b068]
push 0
lea ecx, [ebp - 0x11a0]
call fcn.00418030
push 0x4e7d1c
lea ecx, [ebp - 0x11a0]
call fcn.00418790
push 0x4e7d28
lea ecx, [ebp - 0x11a0]
call fcn.00418490
lea ecx, [ebp - 0x11a0]
call dword [0x50b064]
push 1
push 0
push 0
push dword [ebp - 0x11a4]
push 0x50aea4
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
push 0
push 0xf060
push 0x112
lea ecx, [edi - 0x4bc]
call esi
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
lea ecx, [ebp - 0x11a0]
call fcn.00416e10
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004bbaec
mov esp, ebp
pop ebp
ret 0xc