Function at 0x401510
Capabilities:
Check if file exists
Create process on windows
Get file attributes
Resume thread
Terminate process

Disassembly:
push edi
lea edi, [esp + 8]
and esp, 0xfffffff0
push dword [edi - 4]
push ebp
mov ebp, esp
push edi
push esi
mov esi, edi
push ebx
sub esp, 0xdc
mov eax, dword [edi]
mov dword [ebp - 0xa0], eax
mov eax, dword [edi + 4]
mov dword [ebp - 0xa4], eax
mov eax, dword [edi + 8]
mov dword [ebp - 0xa8], eax
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x9c], eax
call fcn.00402a20
pushfd
pushfd
pop eax
mov edx, eax
xor eax, 0x200000
push eax
popfd
pushfd
pop eax
popfd
xor eax, edx
test eax, 0x200000
je 0x4018b0
mov eax, 0x80000000
cpuid
cmp eax, 0x80000006
jbe 0x4018b0
mov eax, 0x80000007
cpuid
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x88], ebx
mov dword [ebp - 0x84], ecx
and dh, 1
je 0x4018b0
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 8], 0x104
mov dword [esp + 4], eax
mov edi, eax
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
sub esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
je 0x401948
mov dword [esp], edi
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
sub esp, 4
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 4], edi
mov esi, dword [sym.imp.SHLWAPI.dll_PathCombineW]
mov ebx, eax
mov dword [esp + 8], str.WoW.exe
mov dword [esp], eax
call esi
pxor xmm0, xmm0
lea eax, [ebp - 0x7c]
sub esp, 0xc
movups xmmword [ebp - 0x7c], xmm0
mov dword [ebp - 0x74], ebx
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll___wargv]
mov eax, dword [eax]
mov dword [esp + 4], eax
mov eax, dword [sym.imp.msvcrt.dll___argc]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.00401b10
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0xac], eax
test eax, eax
jne 0x401900
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [ebp - 0xa0], eax
mov dword [esp + 8], str.VfPatcher.dll
mov dword [esp + 4], edi
mov dword [esp], eax
call esi
sub esp, 0xc
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [ebp - 0xa4], eax
mov dword [esp + 8], str.dlls.txt
mov dword [esp + 4], edi
mov dword [esp], eax
call esi
sub esp, 0xc
mov dword [esp], ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
call ebx
sub esp, 4
cmp eax, 0xffffffff
je 0x401958
mov eax, dword [ebp - 0xa0]
mov dword [esp], eax
call ebx
sub esp, 4
cmp eax, 0xffffffff
je 0x4019e0
mov dword [ebp - 0x98], 0
lea ebx, [ebp - 0x98]
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0
mov dword [esp + 8], ebx
mov eax, dword [ebp - 0xa4]
mov dword [esp], edi
mov dword [esp + 4], eax
call fcn.00402280
mov esi, dword [ebp - 0x94]
test esi, esi
je 0x401717
mov ecx, dword [ebp - 0x90]
test ecx, ecx
jne 0x401a40
movzx eax, word [ebp - 0x9c]
pxor xmm0, xmm0
mov dword [ebp - 0x5c], 0x44
movups xmmword [ebp - 0x38], xmm0
mov word [ebp - 0x2c], ax
lea eax, [ebp - 0x7c]
movups xmmword [ebp - 0x58], xmm0
movups xmmword [ebp - 0x48], xmm0
movups xmmword [ebp - 0x28], xmm0
movups xmmword [ebp - 0x6c], xmm0
mov dword [ebp - 0x30], 1
mov dword [esp], eax
call fcn.00401c30
lea edx, [ebp - 0x6c]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x24], edx
lea edx, [ebp - 0x5c]
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x404
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
sub esp, 0x28
test eax, eax
je 0x4019b0
mov eax, dword [ebp - 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xa0]
mov dword [esp], eax
call fcn.00402720
mov esi, eax
mov eax, dword [ebp - 0x94]
test eax, eax
je 0x401820
test esi, esi
je 0x401a08
mov esi, 1
test eax, eax
jle 0x401ae8
mov eax, esi
mov esi, dword [ebp - 0xac]
test eax, eax
jne 0x401ae8
mov eax, dword [ebp - 0x6c]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x98]
mov eax, dword [eax + esi*4]
mov dword [esp], eax
call fcn.00402720
test eax, eax
setne al
add esi, 1
movzx eax, al
cmp dword [ebp - 0x94], esi
jg 0x4017eb
mov esi, eax
test esi, esi
jne 0x401aed
mov eax, dword [ebp - 0x68]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov edx, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x6c]
sub esp, 4
mov dword [esp], eax
mov dword [ebp - 0x9c], edx
call edx
mov eax, dword [ebp - 0x68]
sub esp, 4
mov dword [esp], eax
mov edx, dword [ebp - 0x9c]
call edx
sub esp, 4
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0xa4]
mov dword [esp], eax
call fcn.00402560
mov dword [esp], edi
call fcn.00401d50
mov dword [esp], eax
mov ebx, eax
call fcn.004021a0
lea edx, [ebx - 0x1000]
cmp edx, 2
jbe 0x401931
test ebx, ebx
je 0x401931
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.DXVK_self_test_failed___ls_._The_game_will_now_crash._r_n_r_nThis_is_likely_caused_by_missing_Vulkan_1.3_support._The_DXVK_log_file__VanillaFixes_d3d9.log__may_have_more_information._r_n_r_nIf_you_have_an_older_GPU__R9_200_300__GTX_700___remove__d3d9.dll__to_use_VanillaFixes_without_DXVK._Otherwise__try_updating_your_drivers_to_the_latest_version.
jmp 0x4019c1
mov dword [esp + 8], str.Your_processor_does_not_support_the__Invariant_TSC__feature._r_n_r_nVanillaFixes_can_only_work_reliably_on_modern__2007__Intel_and_AMD_processors.
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f040
call fcn.004014e0
mov dword [esi + 0xc], 0x10
mov dword [esi + 8], 0x40b164
mov dword [esi + 4], 0x40f040
mov dword [esi], 0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
jmp dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, dword [ebp - 0x9c]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xa8]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xa4]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0xa0]
mov dword [esp], eax
call fcn.00402020
sub esp, 0x10
mov esi, eax
lea esp, [ebp - 0xc]
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret 0x10
mov dword [esp + 8], 0x40b180
jmp 0x4018b8
mov dword [esp + 8], str.WoW.exe_not_found._Extract_VanillaFixes_into_the_same_directory_as_the_game.
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f040
call fcn.004014e0
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], 0x40b164
mov dword [esp + 4], 0x40f040
mov dword [esp], 0
call dword [sym.imp.USER32.dll_MessageBoxW]
mov esi, eax
sub esp, 0x10
lea esp, [ebp - 0xc]
pop ebx
mov eax, esi
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret 0x10
call fcn.004029c0
mov dword [esp + 8], str.Error_creating_process:__ls_r_nThis_issue_can_occur_if_you_have_enabled_compatibility_mode_on_the_WoW_executable.
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f040
call fcn.004014e0
jmp 0x401974
mov dword [esp + 8], str.VfPatcher.dll_not_found._Extract_all_files_into_the_game_directory.
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f040
call fcn.004014e0
jmp 0x401974
mov eax, dword [ebp - 0x6c]
mov dword [esp], 0x80000000
mov dword [esp + 4], eax
call fcn.00402900
mov edx, dword [ebp - 0x94]
test eax, eax
setne al
movzx eax, al
mov esi, eax
test edx, edx
jg 0x4017e5
jmp 0x401820
mov dword [esp + 4], ebx
mov dword [esp], edi
call fcn.00402600
mov dword [esp], str.VanillaFixes_will_load_additional_DLLs_listed_in_dlls.txt:_r_n_ls_r_n_r_nIf_you_dont_agree__press_Cancel._This_reminder_will_be_shown_when_the_list_of_files_has_changed.
mov esi, eax
call sub.msvcrt.dll_wcslen
mov dword [ebp - 0xa8], eax
mov dword [esp], esi
call sub.msvcrt.dll_wcslen
mov edx, dword [ebp - 0xa8]
lea ecx, [edx + eax + 1]
lea eax, [ecx + ecx]
mov dword [ebp - 0xa8], ecx
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [esp + 0xc], esi
mov dword [esp + 8], str.VanillaFixes_will_load_additional_DLLs_listed_in_dlls.txt:_r_n_ls_r_n_r_nIf_you_dont_agree__press_Cancel._This_reminder_will_be_shown_when_the_list_of_files_has_changed.
mov ecx, dword [ebp - 0xa8]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [ebp - 0xa8], eax
call fcn.004014e0
mov dword [esp + 0xc], 0x31
mov dword [esp + 8], 0x40b164
mov edx, dword [ebp - 0xa8]
mov dword [esp], 0
mov dword [esp + 4], edx
call dword [sym.imp.USER32.dll_MessageBoxW]
sub esp, 0x10
mov esi, eax
cmp eax, 1
jne 0x401931
jmp 0x401717
mov esi, 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
sub esp, 8
jmp 0x401931