Function at 0x401c70
Capabilities:
Check if file exists
Create process on windows
Get common file path
Get file attributes
Set file attributes

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4064dc
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x490
mov eax, dword [0x4090d0]
push ebx
push esi
push edi
mov dword [esp + 0x494], eax
xor ebx, ebx
xor eax, eax
mov word [esp + 0x288], bx
mov ecx, 0x81
lea edi, [esp + 0x28a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 0x104
lea eax, [esp + 0x28c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea ecx, [esp + 0x288]
push ecx
mov dword [esp + 0x64], 7
mov dword [esp + 0x60], ebx
mov word [esp + 0x50], bx
call fcn.004028ad
add esp, 4
push eax
lea edx, [esp + 0x28c]
push edx
lea ecx, [esp + 0x50]
call fcn.00401680
push 1
push 0xffffffffffffffff
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x54]
mov dword [esp + 0x4b0], ebx
mov dword [esp + 0x18], 0x5c
call fcn.00401270
push eax
push ebx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x54]
call fcn.004019a0
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x54]
mov byte [esp + 0x4b0], 1
call fcn.00401570
mov eax, dword [esp + 0x28]
mov esi, 8
cmp eax, esi
mov byte [esp + 0x4a4], bl
jb 0x401d6a
mov edx, dword [esp + 0x14]
push edx
call fcn.00402902
add esp, 4
push str._subinacl.exe
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x6c]
push ecx
call fcn.00401bc0
add esp, 0xc
lea edx, [esp + 0x80]
push edx
mov word [esp + 0x84], bx
xor eax, eax
push ebx
mov ecx, 0x81
lea edi, [esp + 0x8a]
rep stosd dword es:[edi], eax
push ebx
push 0x23
push ebx
mov byte [esp + 0x4b8], 2
stosw word es:[edi], ax
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jl 0x401df7
lea eax, [esp + 0x80]
push str.MicrosoftNetworkConnectionsPbk_rasphone.pbk
push eax
call fcn.00402de0
add esp, 8
lea ecx, [esp + 0x80]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x401df7
cmp eax, 0x20
je 0x401df7
push 0x20
lea edx, [esp + 0x84]
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov edi, 7
push str._subdirectories__
mov dword [esp + 0x48], edi
mov dword [esp + 0x44], ebx
mov word [esp + 0x34], bx
call fcn.004028ad
add esp, 4
push eax
push str._subdirectories__
lea ecx, [esp + 0x34]
call fcn.00401680
lea eax, [esp + 0x80]
push eax
mov byte [esp + 0x4a8], 3
call fcn.004028ad
add esp, 4
push eax
lea ecx, [esp + 0x84]
push ecx
lea ecx, [esp + 0x34]
call fcn.00401880
push str.___grants_1_1_0f
call fcn.004028ad
add esp, 4
push eax
push str.___grants_1_1_0f
lea ecx, [esp + 0x34]
call fcn.00401880
cmp dword [esp + 0x44], esi
mov ecx, dword [esp + 0x30]
jae 0x401e79
lea ecx, [esp + 0x30]
cmp dword [esp + 0x7c], esi
mov eax, dword [esp + 0x68]
jae 0x401e87
lea eax, [esp + 0x68]
push ebx
push ebx
push ecx
push eax
push str.open
push ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
cmp dword [esp + 0x44], esi
jb 0x401eaa
mov edx, dword [esp + 0x30]
push edx
call fcn.00402902
add esp, 4
cmp dword [esp + 0x7c], esi
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], ebx
mov word [esp + 0x30], bx
jb 0x401eca
mov eax, dword [esp + 0x68]
push eax
call fcn.00402902
add esp, 4
cmp dword [esp + 0x60], esi
mov dword [esp + 0x7c], edi
mov dword [esp + 0x78], ebx
mov word [esp + 0x68], bx
jb 0x401eea
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.00402902
add esp, 4
mov ecx, dword [esp + 0x49c]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x494]
call fcn.004028f4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret