Function at 0x3001f8f0
Capabilities:
Link many functions at runtime

Disassembly:
sub esp, 0x94
push ebx
push esi
mov esi, ecx
push edi
xor ebx, ebx
push str.kernel32.dll
mov dword [esi], 0x30294800
mov dword [esi + 4], ebx
mov byte [esi + 8], 1
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
mov dword [esi + 4], eax
je 0x3001f921
cmp eax, 0xffffffff
jne 0x3001f924
mov byte [esi + 8], bl
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
xor ecx, ecx
cmp eax, ebx
mov dword [esi], 0x30294800
mov dword [esi + 0xc], ebx
mov dword [esi + 0x10], ebx
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x20], ebx
mov dword [esi + 0x24], ebx
mov dword [esi + 0x28], ebx
mov dword [esi + 0x2c], ebx
mov dword [esi + 0x30], ebx
mov dword [esi + 0x34], ebx
mov dword [esi + 0x38], ebx
mov dword [esi + 0x3c], ebx
mov dword [esi + 0x40], ebx
mov dword [esi + 0x44], ebx
mov dword [esi + 0x48], ebx
mov dword [esi + 0x4c], ebx
mov dword [esi + 0x50], ebx
mov dword [esi + 0x54], ebx
mov dword [esi + 0x58], ebx
mov dword [esi + 0x5c], ebx
mov dword [esi + 0x60], ebx
je 0x3001f987
cmp eax, 0xffffffff
je 0x3001f987
push str.GetUserDefaultUILanguage
push eax
call edi
mov ecx, eax
lea eax, [esp + 0xc]
push eax
mov dword [esi + 0x20], ecx
mov dword [esp + 0x10], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [esp + 0x1c], 2
jb 0x3001fc48
mov ecx, dword [esi + 4]
xor eax, eax
cmp ecx, ebx
je 0x3001f9c2
cmp ecx, 0xffffffff
je 0x3001f9c2
push str.CreateDirectoryW
push ecx
call edi
cmp eax, ebx
jne 0x3001f9c5
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0xc], eax
xor eax, eax
cmp ecx, ebx
je 0x3001f9e2
cmp ecx, 0xffffffff
je 0x3001f9e2
push 0x30294964
push ecx
call edi
cmp eax, ebx
jne 0x3001f9e5
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x10], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fa02
cmp ecx, 0xffffffff
je 0x3001fa02
push str.CreateProcessW
push ecx
call edi
cmp eax, ebx
jne 0x3001fa05
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x14], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fa22
cmp ecx, 0xffffffff
je 0x3001fa22
push str.DeleteFileW
push ecx
call edi
cmp eax, ebx
jne 0x3001fa25
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x18], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fa42
cmp ecx, 0xffffffff
je 0x3001fa42
push str.GetModuleFileNameW
push ecx
call edi
cmp eax, ebx
jne 0x3001fa45
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x1c], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fa62
cmp ecx, 0xffffffff
je 0x3001fa62
push str.MoveFileExA
push ecx
call edi
cmp eax, ebx
jne 0x3001fa65
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x24], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fa82
cmp ecx, 0xffffffff
je 0x3001fa82
push str.MoveFileExW
push ecx
call edi
cmp eax, ebx
jne 0x3001fa85
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x28], eax
xor eax, eax
cmp ecx, ebx
je 0x3001faa2
cmp ecx, 0xffffffff
je 0x3001faa2
push str.RemoveDirectoryW
push ecx
call edi
cmp eax, ebx
jne 0x3001faa5
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x2c], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fac2
cmp ecx, 0xffffffff
je 0x3001fac2
push str.GetSystemDirectoryW
push ecx
call edi
cmp eax, ebx
jne 0x3001fac5
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x30], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fae2
cmp ecx, 0xffffffff
je 0x3001fae2
push 0x302948d8
push ecx
call edi
cmp eax, ebx
jne 0x3001fae5
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x34], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fb02
cmp ecx, 0xffffffff
je 0x3001fb02
push str.FindFirstFileW
push ecx
call edi
cmp eax, ebx
jne 0x3001fb05
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x38], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fb22
cmp ecx, 0xffffffff
je 0x3001fb22
push str.FindNextFileW
push ecx
call edi
cmp eax, ebx
jne 0x3001fb25
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x3c], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fb42
cmp ecx, 0xffffffff
je 0x3001fb42
push 0x302948a4
push ecx
call edi
cmp eax, ebx
jne 0x3001fb45
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x40], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fb62
cmp ecx, 0xffffffff
je 0x3001fb62
push str.SetFileAttributesW
push ecx
call edi
cmp eax, ebx
jne 0x3001fb65
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x44], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fb82
cmp ecx, 0xffffffff
je 0x3001fb82
push str.GetFileAttributesExW
push ecx
call edi
cmp eax, ebx
jne 0x3001fb85
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x48], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fba2
cmp ecx, 0xffffffff
je 0x3001fba2
push str.GetCurrentDirectoryW
push ecx
call edi
cmp eax, ebx
jne 0x3001fba5
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x4c], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fbc2
cmp ecx, 0xffffffff
je 0x3001fbc2
push str.SetCurrentDirectoryW
push ecx
call edi
cmp eax, ebx
jne 0x3001fbc5
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x50], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fbe2
cmp ecx, 0xffffffff
je 0x3001fbe2
push str.GetTempPathW
push ecx
call edi
cmp eax, ebx
jne 0x3001fbe5
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x54], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fc02
cmp ecx, 0xffffffff
je 0x3001fc02
push str.GetTempFileNameW
push ecx
call edi
cmp eax, ebx
jne 0x3001fc05
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x58], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fc22
cmp ecx, 0xffffffff
je 0x3001fc22
push str.CopyFileW
push ecx
call edi
cmp eax, ebx
jne 0x3001fc25
mov byte [esi + 8], bl
mov ecx, dword [esi + 4]
mov dword [esi + 0x5c], eax
xor eax, eax
cmp ecx, ebx
je 0x3001fc42
cmp ecx, 0xffffffff
je 0x3001fc42
push 0x30294804
push ecx
call edi
cmp eax, ebx
jne 0x3001fc45
mov byte [esi + 8], bl
mov dword [esi + 0x60], eax
pop edi
mov eax, esi
pop esi
pop ebx
add esp, 0x94
ret