Function at 0x4024ca
Capabilities:
Check if file exists
Create directory
Delete directory
Delete file
Get common file path
Get file attributes
Query environment variable
Set current directory

Disassembly:
push 0x4f4
mov eax, 0x448bdc
call fcn.0041902e
mov esi, dword [ebp + 0x10]
lea eax, [ebp - 0x478]
and dword [ebp - 0x4a4], 0
mov edi, 0x104
push edi
push eax
push str._TEMP_
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
je 0x40251d
push ecx
lea edx, [ebp - 0x478]
lea ecx, [ebp - 0x4c0]
call fcn.0040a21f
pop ecx
lea ecx, [ebp - 0x4c0]
call fcn.0040506c
push esi
lea ecx, [ebp - 0x490]
call fcn.00402f0a
lea ecx, [ebp - 0x490]
call fcn.00401bf3
lea ecx, [ebp - 0x490]
mov bl, al
call fcn.00404c58
test bl, bl
je 0x40254c
xor eax, eax
jmp 0x402a1c
push ecx
push str._noprefetch
push esi
lea ecx, [ebp - 0x4c0]
call fcn.00402f0a
mov ecx, eax
call fcn.00402e7a
lea ecx, [ebp - 0x4c0]
mov esi, eax
call fcn.00404c58
cmp esi, 0xffffffff
jne 0x4025ea
lea ecx, [ebp - 0x49c]
call fcn.0040179b
cmp eax, 0x468714
je 0x402594
mov ecx, dword [eax]
and dword [eax], 0
push ecx
call fcn.00402b73
cmp dword [0x468714], 0
lea ecx, [ebp - 0x49c]
setne bl
call fcn.004018e2
test bl, bl
je 0x4025ea
push 8
call fcn.0041877c
mov esi, eax
xor ebx, ebx
pop ecx
mov dword [esi], ebx
mov dword [esi + 4], ebx
call fcn.004033c5
mov dword [esi], eax
mov eax, dword [0x46871c]
mov dword [0x46871c], esi
test eax, eax
je 0x4025da
push eax
call fcn.00402fbd
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov ecx, eax
call fcn.00402150
jmp 0x4025ec
xor ebx, ebx
call fcn.00402339
lea eax, [ebp - 0x270]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
or dword [ebp - 0x49c], 0xffffffff
lea edi, [ebp - 0x270]
lea edi, [edi + eax*2]
lea eax, [ebp - 0x270]
mov dword [ebp - 0x498], edi
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40266c
push ebx
lea eax, [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x40266c
lea ecx, [ebp - 0x498]
call fcn.004055e3
push ebx
push 0x4000000
push 1
push ebx
push ebx
push 0x80000000
lea eax, [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, dword [ebp - 0x498]
mov dword [ebp - 0x49c], eax
lea eax, [ebp - 0x270]
mov byte [ebp - 0x491], 0
cmp edi, eax
je 0x40295a
lea ecx, [ebp - 0x498]
call fcn.004055e3
push 0
lea eax, [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov edi, dword [ebp - 0x498]
test eax, eax
je 0x40295a
push str._setup.dll
push 0xb
push edi
call fcn.0043459c
add esp, 0xc
push 0x465610
push 0xc
call fcn.00418d78
mov ebx, eax
mov dword [ebp - 0x498], eax
pop ecx
pop ecx
test ebx, ebx
je 0x4026e3
mov dword [ebx], 0x45a4f4
and dword [ebx + 4], 0
and dword [ebx + 8], 0
jmp 0x4026eb
xor ebx, ebx
mov dword [ebp - 0x498], ebx
or dword [ebp - 4], 0xffffffff
test ebx, ebx
je 0x4027cb
and dword [ebp - 0x4ac], 0
xor eax, eax
and dword [ebp - 0x480], 0
mov word [ebp - 0x490], ax
lea eax, [ebp - 0x270]
mov dword [ebp - 0x47c], 7
cmp eax, edi
je 0x40273d
lea ecx, [ebp - 0x270]
mov eax, edi
sub eax, ecx
sar eax, 1
push eax
mov eax, ecx
lea ecx, [ebp - 0x490]
push eax
call fcn.00404c09
lea eax, [ebp - 0x490]
push eax
lea ecx, [ebp - 0x500]
call fcn.004048ac
mov esi, dword [ebx]
lea eax, [ebp - 0x4d0]
push eax
lea eax, [ebp - 0x500]
push eax
mov ecx, dword [esi + 8]
push str.setup.dll.z
push str.SZIP
push 0
call dword [0x44b230]
mov ecx, ebx
call dword [esi + 8]
lea ecx, [ebp - 0x500]
mov ebx, eax
call fcn.00404c58
lea ecx, [ebp - 0x490]
call fcn.00404c58
mov dword [ebp - 4], 1
mov eax, dword [ebp - 0x4ac]
test eax, eax
je 0x4027c5
mov esi, dword [eax]
lea ecx, [ebp - 0x4d0]
cmp eax, ecx
setne al
mov ecx, dword [esi + 0x10]
movzx eax, al
push eax
call dword [0x44b230]
mov ecx, dword [ebp - 0x4ac]
call dword [esi + 0x10]
or dword [ebp - 4], 0xffffffff
jmp 0x4027ce
push 0xe
pop ebx
test ebx, ebx
jne 0x40292e
call fcn.00405294
test al, al
je 0x4027f9
mov edx, dword [sym.imp.KERNEL32.dll_GetSystemWow64DirectoryW]
lea ecx, [ebp - 0x4c0]
inc ebx
call fcn.004080e3
lea eax, [ebp - 0x4c0]
jmp 0x402813
mov edx, dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea ecx, [ebp - 0x500]
push 2
pop ebx
call fcn.004080e3
lea eax, [ebp - 0x500]
push eax
lea ecx, [ebp - 0x490]
call fcn.00402b40
test bl, 2
je 0x402832
lea ecx, [ebp - 0x500]
and ebx, 0xfffffffd
call fcn.00403044
test bl, 1
je 0x402842
lea ecx, [ebp - 0x4c0]
call fcn.00403044
cmp dword [ebp - 0x480], 0
je 0x40286b
cmp dword [ebp - 0x47c], 8
lea eax, [ebp - 0x490]
jb 0x402860
mov eax, dword [ebp - 0x490]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test eax, eax
jne 0x40287b
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
test ebx, ebx
jne 0x402923
push 8
push 0
lea eax, [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov esi, eax
test esi, esi
je 0x40291b
push str.LogMessage
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.RunInstance
push esi
mov dword [0x4664a8], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebx, eax
push 4
mov dword [ebp - 0x4a4], ebx
call fcn.0041877c
mov dword [ebp - 0x4a0], eax
pop ecx
mov dword [eax], vtable.Starter.0
test ebx, ebx
je 0x4028e0
push eax
mov ecx, ebx
call dword [0x44b230]
call ebx
jmp 0x4028e6
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp dword [ebp - 0x4a4], 0
mov ebx, eax
push esi
setne byte [ebp - 0x491]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ecx, dword [ebp - 0x4a0]
push 1
mov eax, dword [ecx]
mov esi, dword [eax]
mov ecx, esi
call dword [0x44b230]
mov ecx, dword [ebp - 0x4a0]
call esi
jmp 0x402923
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea ecx, [ebp - 0x490]
call fcn.00403044
mov eax, dword [ebp - 0x498]
test eax, eax
je 0x40295a
mov dword [ebp - 4], 2
mov eax, dword [eax]
push 1
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x44b230]
mov ecx, dword [ebp - 0x498]
call esi
or dword [ebp - 4], 0xffffffff
cmp dword [0x468714], 0
je 0x402980
push 0
call fcn.00402b73
mov eax, dword [0x46871c]
and dword [0x46871c], 0
test eax, eax
je 0x402980
push eax
call fcn.00402fbd
cmp byte [ebp - 0x491], 0
jne 0x4029bd
test ebx, ebx
jne 0x402995
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov ecx, ebx
call fcn.0040229a
lea eax, [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor eax, eax
mov word [edi], ax
lea eax, [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
jmp 0x402a08
and dword [ebp - 0x4d8], 0
xor eax, eax
mov word [ebp - 0x4e8], ax
lea eax, [ebp - 0x270]
mov dword [ebp - 0x4d4], 7
cmp eax, edi
je 0x4029f2
sub edi, eax
lea ecx, [ebp - 0x4e8]
sar edi, 1
push edi
push eax
call fcn.00404c09
lea ecx, [ebp - 0x4e8]
call fcn.00401dcc
lea ecx, [ebp - 0x4e8]
call fcn.00404c58
mov eax, dword [ebp - 0x49c]
cmp eax, 0xffffffff
je 0x402a1a
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, ebx
call fcn.00418fd8
ret 0x10