Function at 0x40426a
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 ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4dc
mov eax, dword [0x4510e8]
xor eax, esp
mov dword [esp + 0x4d8], eax
push ebx
push esi
mov esi, dword [ebp + 0x10]
lea eax, [esp + 0x2d4]
push edi
push 0x104
push eax
xor ebx, ebx
push str._TEMP_
mov dword [esp + 0x7c], ebx
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
je 0x4042c7
push ecx
lea edx, [esp + 0x2dc]
lea ecx, [esp + 0x14]
call fcn.0040dbd8
pop ecx
lea ecx, [esp + 0x10]
call fcn.004086ef
push 7
pop edi
push esi
lea ecx, [esp + 0x5c]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], edi
call fcn.00404f78
lea ecx, [esp + 0x58]
call fcn.00401cc3
mov ecx, dword [esp + 0x6c]
mov bl, al
cmp ecx, 8
jb 0x404331
mov eax, dword [esp + 0x58]
lea ecx, [ecx*2 + 2]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], eax
cmp ecx, 0x1000
jb 0x404328
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x58]
push eax
call fcn.004012fb
mov eax, dword [esp + 0x5c]
pop ecx
pop ecx
mov ecx, dword [esp + 0x50]
push ecx
push eax
call fcn.00421c79
pop ecx
pop ecx
test bl, bl
jne 0x4043ae
xor ebx, ebx
mov dword [esp + 0x6c], edi
push esi
lea ecx, [esp + 0x5c]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x6c], ebx
call fcn.00404f78
push ecx
push str._restoreAccessToTempLocations
lea ecx, [esp + 0x60]
call fcn.00404d40
mov ecx, dword [esp + 0x6c]
mov edi, eax
cmp ecx, 8
jb 0x4043a4
mov eax, dword [esp + 0x58]
lea ecx, [ecx*2 + 2]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x50], eax
cmp ecx, 0x1000
jb 0x40439b
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.004012fb
mov eax, dword [esp + 0x58]
pop ecx
pop ecx
mov ecx, dword [esp + 0x54]
push ecx
push eax
call fcn.00421c79
pop ecx
pop ecx
cmp edi, 0xffffffff
je 0x4043c7
call fcn.00402e17
xor eax, eax
mov ecx, dword [esp + 0x4e4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00421c3b
mov esp, ebp
pop ebp
ret 0x10
push 7
pop edi
push esi
lea ecx, [esp + 0x5c]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], edi
call fcn.00404f78
lea ecx, [esp + 0x58]
call fcn.0040314f
mov eax, dword [esp + 0x6c]
cmp eax, 8
jb 0x40442e
mov ecx, dword [esp + 0x58]
lea eax, [eax*2 + 2]
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], ecx
cmp eax, 0x1000
jb 0x404425
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.004012fb
mov eax, dword [esp + 0x5c]
pop ecx
pop ecx
mov ecx, dword [esp + 0x50]
push eax
push ecx
call fcn.00421c79
pop ecx
pop ecx
push esi
lea ecx, [esp + 0x5c]
mov byte [esp + 0x13], bl
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], edi
call fcn.00404f78
lea edx, [esp + 0xf]
lea ecx, [esp + 0x58]
call fcn.00403199
mov ecx, dword [esp + 0x6c]
mov edi, eax
cmp ecx, 8
jb 0x40449d
mov eax, dword [esp + 0x58]
lea ecx, [ecx*2 + 2]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x50], eax
cmp ecx, 0x1000
jb 0x404494
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.004012fb
mov eax, dword [esp + 0x58]
pop ecx
pop ecx
mov ecx, dword [esp + 0x54]
push ecx
push eax
call fcn.00421c79
pop ecx
pop ecx
test edi, edi
je 0x4043ae
cmp edi, 0x4de
je 0x4044ba
cmp byte [esp + 0xf], bl
je 0x4044ba
mov eax, edi
jmp 0x4043b0
push esi
lea ecx, [esp + 0x5c]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], 7
call fcn.00404f78
push ecx
push str._noprefetch
lea ecx, [esp + 0x60]
call fcn.00404d40
mov ecx, dword [esp + 0x6c]
mov esi, eax
cmp ecx, 8
jb 0x40452b
mov eax, dword [esp + 0x58]
lea ecx, [ecx*2 + 2]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x50], eax
cmp ecx, 0x1000
jb 0x404522
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.004012fb
mov eax, dword [esp + 0x58]
pop ecx
pop ecx
mov ecx, dword [esp + 0x54]
push ecx
push eax
call fcn.00421c79
pop ecx
pop ecx
xor ebx, ebx
inc ebx
cmp esi, 0xffffffff
jne 0x4045ab
lea ecx, [esp + 0x54]
call fcn.004017ac
cmp eax, 0x455c88
je 0x40454e
mov ecx, dword [eax]
and dword [eax], 0
push ecx
call fcn.00404a3c
cmp dword [0x455c88], 0
lea ecx, [esp + 0x54]
setne bl
call fcn.0040190f
test bl, bl
je 0x4045a8
push 8
call fcn.00421c49
mov esi, eax
pop ecx
push 0x28
and dword [esi], 0
and dword [esi + 4], 0
call fcn.00421c49
xor ebx, ebx
pop ecx
inc ebx
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [eax + 8], eax
mov byte [eax + 0xc], bl
mov byte [eax + 0xd], bl
push esi
mov dword [esi], eax
call fcn.004049f6
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov ecx, eax
call fcn.00403dd4
jmp 0x4045ab
xor ebx, ebx
inc ebx
call fcn.0040401f
lea eax, [esp + 0x78]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea edi, [esp + 0x78]
lea edi, [edi + eax*2]
or eax, 0xffffffff
mov dword [esp + 0x54], eax
lea eax, [esp + 0x78]
push eax
mov dword [esp + 0x54], edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x404622
push 0
lea eax, [esp + 0x7c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x404622
lea ecx, [esp + 0x50]
call fcn.00408e56
xor eax, eax
push eax
push 0x4000000
push ebx
push eax
push eax
push 0x80000000
lea eax, [esp + 0x90]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, dword [esp + 0x50]
mov dword [esp + 0x54], eax
lea eax, [esp + 0x78]
mov byte [esp + 0xf], 0
xor esi, esi
cmp edi, eax
je 0x40482d
lea ecx, [esp + 0x50]
call fcn.00408e56
push esi
lea eax, [esp + 0x7c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov edi, dword [esp + 0x50]
test eax, eax
je 0x40482d
push 0x44ac60
push 0xb
push edi
call fcn.00426f03
add esp, 0xc
push 0x43f688
push 0xc
call fcn.00422528
mov esi, eax
pop ecx
pop ecx
test esi, esi
je 0x40468a
mov dword [esi], 0x44a690
and dword [esi + 4], 0
and dword [esi + 8], 0
jmp 0x40468c
xor esi, esi
mov dword [esp + 0x70], esi
test esi, esi
je 0x404896
mov eax, dword [esi]
and dword [esp + 0x4c], 0
push ecx
push dword [esp + 0x54]
mov edi, dword [eax + 8]
lea ecx, [esp + 0x18]
lea eax, [esp + 0x80]
push eax
call fcn.00406086
push eax
lea ecx, [esp + 0x5c]
call fcn.00404a9f
lea eax, [esp + 0x28]
mov ecx, edi
push eax
lea eax, [esp + 0x5c]
push eax
push str.setup.dll.z
push str.SZIP
push 0
call dword [0x43e230]
mov ecx, esi
call edi
lea ecx, [esp + 0x58]
mov esi, eax
call fcn.0040818b
lea ecx, [esp + 0x10]
call fcn.0040818b
lea ecx, [esp + 0x28]
call fcn.00404a6c
test esi, esi
jne 0x404820
call fcn.00408aaa
test al, al
je 0x404727
mov edx, dword [sym.imp.KERNEL32.dll_GetSystemWow64DirectoryW]
lea ecx, [esp + 0x10]
call fcn.0040b9f6
lea eax, [esp + 0x10]
jmp 0x40473d
mov edx, dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea ecx, [esp + 0x28]
push 2
pop ebx
call fcn.0040b9f6
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x5c]
call fcn.00404a9f
test bl, 2
je 0x404755
lea ecx, [esp + 0x28]
call fcn.00404ea7
test bl, 1
je 0x404763
lea ecx, [esp + 0x10]
call fcn.00404ea7
cmp dword [esp + 0x68], 0
je 0x404784
cmp dword [esp + 0x6c], 8
lea eax, [esp + 0x58]
jb 0x404779
mov eax, dword [esp + 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test eax, eax
jne 0x404794
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jne 0x404817
push 8
push 0
lea eax, [esp + 0x80]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov edi, eax
test edi, edi
je 0x40480f
push str.LogMessage
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.RunInstance
push edi
mov dword [0x453340], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 4
mov ebx, eax
call fcn.00421c49
mov dword [esp + 0x78], eax
pop ecx
mov dword [eax], 0x44a540
test ebx, ebx
je 0x4047ee
push eax
mov ecx, ebx
call dword [0x43e230]
call ebx
jmp 0x4047f4
call dword [sym.imp.KERNEL32.dll_GetLastError]
test ebx, ebx
mov esi, eax
push edi
setne byte [esp + 0x13]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea ecx, [esp + 0x74]
call fcn.004048d5
jmp 0x404817
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
lea ecx, [esp + 0x58]
call fcn.00404ea7
mov edi, dword [esp + 0x50]
lea ecx, [esp + 0x70]
call fcn.004048f2
cmp dword [0x455c88], 0
je 0x40485f
push 0
call fcn.00404a3c
mov ebx, dword [0x455c8c]
and dword [0x455c8c], 0
test ebx, ebx
je 0x40485f
mov ecx, ebx
call fcn.00404e38
push 8
push ebx
call fcn.00421c79
pop ecx
pop ecx
cmp byte [esp + 0xf], 0
jne 0x40489b
test esi, esi
jne 0x404872
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov ecx, esi
call fcn.00403f55
lea eax, [esp + 0x78]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
xor eax, eax
mov word [edi], ax
lea eax, [esp + 0x78]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
jmp 0x4048be
push 0xe
pop esi
jmp 0x404824
push ecx
push edi
lea eax, [esp + 0x80]
push eax
lea ecx, [esp + 0x1c]
call fcn.00406086
mov ecx, eax
call fcn.00403b2c
lea ecx, [esp + 0x10]
call fcn.0040818b
mov eax, dword [esp + 0x54]
cmp eax, 0xffffffff
je 0x4048ce
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, esi
jmp 0x4043b0