Function at 0x401a10
Capabilities:
Check if file exists
Create process on windows
Delete file
Get file attributes
Print debug messages
Resolve function by parsing pe exports
Resume thread
Terminate process
Write and execute a file
Write file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x13c
mov eax, dword [esp + 0x15c]
mov dword [esp + 0x50], eax
mov eax, dword [0x40f440]
test eax, eax
je 0x402000
mov dword [esp + 8], str.VanillaFixes:_Using_SetProcessDpiAwarenessContext_to_set_DPI_scaling_mode
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f040
call fcn.00401510
mov ebp, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov dword [esp], 0x40f040
call ebp
sub esp, 4
mov dword [esp], 0xfffffffc
call dword [0x40f440]
sub esp, 4
test eax, eax
je 0x402080
pushfd
pushfd
pop eax
mov edx, eax
xor eax, 0x200000
push eax
popfd
pushfd
pop eax
popfd
xor eax, edx
test eax, 0x200000
je 0x401f90
mov eax, 0x80000000
cpuid
cmp eax, 0x80000006
jbe 0x401f90
mov eax, 0x80000007
cpuid
and dh, 1
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ecx
je 0x401f90
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 8], 0x104
mov dword [esp], 0
mov dword [esp + 0x40], eax
mov dword [esp + 4], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov dword [esp + 0x64], eax
call eax
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
sub esp, 0xc
mov dword [esp + 0x60], eax
call eax
cmp eax, 0x7a
je 0x402580
mov esi, dword [esp + 0x40]
mov eax, dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
mov dword [esp], esi
mov dword [esp + 0x68], eax
call eax
sub esp, 4
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 4], esi
mov dword [esp + 8], str.WoW.exe
mov dword [esp + 0x5c], eax
mov dword [esp], eax
mov edi, eax
mov eax, dword [sym.imp.SHLWAPI.dll_PathCombineW]
mov dword [esp + 0x44], eax
call eax
mov eax, dword [sym.imp.msvcrt.dll___wargv]
sub esp, 0xc
mov esi, dword [eax]
mov eax, dword [sym.imp.msvcrt.dll___argc]
mov eax, dword [eax]
mov dword [esp + 0x30], eax
cmp eax, 1
jle 0x4023d9
mov dword [esp + 0x54], edi
mov dword [esp + 0x38], 0
mov edi, dword [sym.imp.SHLWAPI.dll_StrStrIW]
mov dword [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov ebx, 1
mov dword [esp + 0x58], ebp
jmp 0x401bdd
mov dword [esp + 4], str..exe
mov eax, dword [esi + ebx*4]
mov dword [esp], eax
call edi
sub esp, 8
test eax, eax
je 0x401f20
mov dword [esp + 4], str.VanillaFixes.exe
mov eax, dword [esi + ebx*4]
mov dword [esp], eax
call edi
sub esp, 8
test eax, eax
je 0x401ff0
inc ebx
cmp dword [esp + 0x30], ebx
je 0x401c03
mov ebp, dword [esi + ebx*4]
mov dword [esp + 4], str._selftest
mov dword [esp], ebp
call edi
sub esp, 8
cmp ebp, eax
jne 0x401ba0
mov dword [esp + 0x38], 1
inc ebx
cmp dword [esp + 0x30], ebx
jne 0x401bdd
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0x58]
test eax, eax
jne 0x402420
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 8], str.VfPatcher.dll
mov edi, dword [esp + 0x40]
mov dword [esp + 0x58], eax
mov dword [esp], eax
mov esi, dword [esp + 0x44]
mov dword [esp + 4], edi
call esi
sub esp, 0xc
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 8], str.dlls.txt
mov dword [esp + 4], edi
mov dword [esp + 0x4c], eax
mov dword [esp], eax
call esi
sub esp, 0xc
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [esp + 0x38], eax
call eax
sub esp, 4
cmp eax, 0xffffffff
je 0x40258d
mov eax, dword [esp + 0x58]
mov dword [esp], eax
mov eax, dword [esp + 0x38]
call eax
sub esp, 4
cmp eax, 0xffffffff
je 0x40290a
mov dword [esp + 4], 2
mov dword [esp], 0x104
call sub.msvcrt.dll_calloc
mov dword [esp + 8], str._ls.cache
mov dword [esp + 4], 0x104
mov dword [esp], eax
mov dword [esp + 0x64], eax
mov edi, eax
mov esi, dword [esp + 0x4c]
mov dword [esp + 0xc], esi
call fcn.004014e0
mov dword [esp], esi
mov eax, dword [esp + 0x38]
call eax
sub esp, 4
cmp eax, 0xffffffff
jne 0x4020e0
mov dword [esp], edi
call sub.msvcrt.dll_free
lea eax, [esp + 0xa8]
mov dword [esp + 0x68], eax
mov dword [esp + 0x48], 0
mov dword [esp + 0x30], 0
lea edi, [esp + 0xac]
xor eax, eax
mov ecx, 0x10
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
rep stosd dword es:[edi], eax
movzx eax, word [esp + 0x50]
mov dword [esp + 4], 2
mov dword [esp], 0x104
mov dword [esp + 0xa8], 0x44
mov dword [esp + 0xd4], 1
mov word [esp + 0xd8], ax
call sub.msvcrt.dll_calloc
mov esi, eax
mov eax, dword [esp + 0x54]
mov dword [esp], esi
mov dword [esp + 4], eax
call sub.msvcrt.dll_wcscpy
mov dword [esp], esi
mov eax, dword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
mov dword [esp + 0x54], eax
call eax
sub esp, 4
mov dword [esp], esi
call sub.msvcrt.dll_wcslen
mov ebp, dword [esp + 0x34]
lea edi, [eax + 1]
test ebp, ebp
jle 0x402e44
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x3c]
xor ebx, ebx
lea esi, [esi]
lea esi, [esi]
mov eax, dword [esi + ebx*4]
inc ebx
mov dword [esp], eax
call sub.msvcrt.dll_wcslen
lea edi, [edi + eax + 1]
cmp ebx, ebp
jne 0x401dd0
mov esi, dword [esp + 0x50]
cmp edi, 0x104
jg 0x4028de
mov dword [esp], esi
call sub.msvcrt.dll_wcslen
lea eax, [esi + eax*2]
mov ebp, dword [esp + 0x3c]
xor ebx, ebx
mov dword [esp + 0x3c], esi
lea esi, [esi]
mov edi, dword [ebp + ebx*4]
lea esi, [eax + 2]
mov word [eax], 0x20
inc ebx
mov dword [esp], esi
mov dword [esp + 4], edi
call sub.msvcrt.dll_wcscpy
mov dword [esp], edi
call sub.msvcrt.dll_wcslen
mov ecx, dword [esp + 0x34]
lea eax, [esi + eax*2]
cmp ebx, ecx
jne 0x401e10
mov esi, dword [esp + 0x3c]
mov word [eax], 0
lea eax, [esp + 0x88]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 0x404
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], esi
mov dword [esp], 0
mov eax, dword [esp + 0x68]
mov dword [esp + 0x20], eax
mov eax, dword [sym.imp.KERNEL32.dll_CreateProcessW]
mov dword [esp + 0x50], eax
call eax
sub esp, 0x28
test eax, eax
je 0x40259a
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x58]
call fcn.00401540
mov ebx, dword [esp + 0x30]
mov edi, eax
test ebx, ebx
je 0x402648
test eax, eax
je 0x4029a5
mov eax, dword [esp + 0x30]
mov edi, 1
test eax, eax
jle 0x402980
mov eax, edi
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x48]
xor ebx, ebx
jmp 0x401ef9
inc ebx
cmp ebx, esi
jge 0x402b10
test eax, eax
jne 0x401ef0
mov eax, dword [edi + ebx*4]
mov edx, dword [esp + 0x88]
call fcn.00401540
test eax, eax
setne al
movzx eax, al
jmp 0x401ef0
inc dword [esp + 0x34]
mov ecx, dword [esi + ebx*4]
mov eax, dword [esp + 0x34]
mov dword [esp + 0x4c], ecx
lea edx, [eax*4]
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], edx
mov dword [esp + 0x48], edx
mov dword [esp], eax
call sub.msvcrt.dll_realloc
mov dword [esp], 0x208
mov dword [esp + 0x3c], eax
call sub.msvcrt.dll_malloc
mov ecx, dword [esp + 0x4c]
mov ebp, eax
mov dword [esp], eax
mov dword [esp + 4], ecx
call sub.msvcrt.dll_wcscpy
mov dword [esp], ebp
call dword [sym.imp.SHLWAPI.dll_PathQuoteSpacesW]
sub esp, 4
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x48]
mov dword [eax + edx - 4], ebp
jmp 0x401bd6
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], 0x40fc60
call fcn.00401510
mov dword [esp + 0x15c], 0x10
mov dword [esp + 0x158], str.VanillaFixes
mov dword [esp + 0x154], 0x40fc60
mov dword [esp + 0x150], 0
add esp, 0x13c
pop ebx
pop esi
pop edi
pop ebp
jmp dword [sym.imp.USER32.dll_MessageBoxW]
mov eax, dword [esi + ebx*4]
mov dword [esp + 0x54], eax
jmp 0x401bd6
mov dword [esp], str.user32
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
sub esp, 4
mov dword [esp], str.user32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
sub esp, 4
mov dword [esp + 4], str.SetProcessDpiAwarenessContext
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
sub esp, 8
mov dword [0x40f440], eax
test eax, eax
jne 0x401a32
call dword [sym.imp.USER32.dll_SetProcessDPIAware]
mov dword [esp + 8], str.VanillaFixes:_Using_SetProcessDPIAware_to_set_DPI_scaling_mode
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f040
call fcn.00401510
mov ebp, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov dword [esp], 0x40f040
call ebp
sub esp, 4
jmp 0x401a78
mov dword [esp + 8], str.VanillaFixes:_DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2_not_supported
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f040
call fcn.00401510
mov dword [esp], 0x40f040
call ebp
sub esp, 4
call dword [sym.imp.USER32.dll_SetProcessDPIAware]
mov dword [esp + 8], str.VanillaFixes:_Using_SetProcessDPIAware_to_set_DPI_scaling_mode
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f040
call fcn.00401510
mov dword [esp], 0x40f040
call ebp
sub esp, 4
jmp 0x401a78
lea eax, [esp + 0xa8]
mov ecx, 1
mov dword [esp + 0xa8], 0
mov dword [esp + 0xec], 0
mov edx, eax
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x4c]
call fcn.00401720
lea edx, [esp + 0xec]
xor ecx, ecx
mov ebp, eax
mov eax, dword [esp + 0x64]
call fcn.00401720
mov esi, eax
test ebp, ebp
je 0x402e11
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x5c], eax
test eax, eax
jle 0x402f3c
mov dword [esp + 0x30], 0
mov dword [esp + 0x48], 0
xor edi, edi
mov dword [esp + 0x6c], esi
lea esi, [esi]
nop
mov esi, dword [ebp + edi*4]
mov dword [esp + 4], 2
mov dword [esp], 0x104
call sub.msvcrt.dll_calloc
mov ebx, eax
mov dword [esp], esi
call dword [sym.imp.SHLWAPI.dll_PathIsRelativeW]
sub esp, 4
test eax, eax
je 0x402400
mov eax, dword [esp + 0x40]
mov dword [esp + 8], esi
mov dword [esp], ebx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x44]
call eax
sub esp, 0xc
mov eax, ebx
lea ecx, [ebx + 0x208]
jmp 0x4021c2
cmp dx, 0x2f
jne 0x4021bb
mov word [eax], 0x5c
add eax, 2
cmp eax, ecx
je 0x4021ca
movzx edx, word [eax]
test dx, dx
jne 0x4021b0
mov dword [esp + 4], 2
mov dword [esp], 0x104
call sub.msvcrt.dll_calloc
mov dword [esp + 4], ebx
mov esi, eax
mov dword [esp], eax
call dword [sym.imp.SHLWAPI.dll_PathCanonicalizeW]
sub esp, 8
mov dword [esp], ebx
call sub.msvcrt.dll_free
mov eax, dword [ebp + edi*4]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [esp], esi
mov eax, dword [esp + 0x38]
call eax
sub esp, 4
cmp eax, 0xffffffff
je 0x40221d
test al, 0x10
je 0x402550
mov dword [esp], esi
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x5c]
inc edi
cmp edi, eax
jne 0x402160
mov esi, dword [esp + 0x6c]
mov dword [esp], ebp
call sub.msvcrt.dll_free
test esi, esi
je 0x402ab5
mov ebx, dword [esp + 0xec]
mov eax, dword [esp + 0x30]
cmp ebx, eax
je 0x402e79
mov ebp, 1
test ebx, ebx
jle 0x402281
mov edi, esi
lea ebx, [esi + ebx*4]
lea esi, [esi]
nop
mov eax, dword [edi]
add edi, 4
mov dword [esp], eax
call sub.msvcrt.dll_free
cmp ebx, edi
jne 0x402270
mov dword [esp], esi
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x30]
test eax, eax
je 0x401d0c
test ebp, ebp
je 0x401d0c
mov eax, dword [esp + 0x30]
test eax, eax
jle 0x402d2b
mov edi, dword [esp + 0x48]
xor esi, esi
lea ecx, [eax - 1]
mov ebx, 1
mov ebp, esi
mov dword [esp + 0x5c], ecx
mov esi, eax
lea esi, [esi]
nop
mov eax, dword [edi + ebp*4]
mov dword [esp], eax
call sub.msvcrt.dll_wcslen
xor ecx, ecx
cmp dword [esp + 0x5c], ebp
setg cl
inc ebp
lea eax, [eax + ecx*2]
add ebx, eax
cmp ebp, esi
jne 0x4022d0
mov dword [esp], ebx
mov dword [esp + 4], 2
xor esi, esi
call sub.msvcrt.dll_calloc
mov ebp, dword [esp + 0x5c]
mov edi, dword [sym.imp.SHLWAPI.dll_StrStrIW]
mov dword [esp + 0x64], eax
mov ebx, eax
test ebp, ebp
jle 0x4023a4
lea esi, [esi]
nop
mov eax, dword [esp + 0x48]
mov ebp, dword [eax + esi*4]
mov eax, dword [esp + 0x40]
mov dword [esp], ebp
mov dword [esp + 4], eax
call edi
sub esp, 8
cmp ebp, eax
je 0x402dfc
mov dword [esp], ebx
mov dword [esp + 4], ebp
inc esi
call sub.msvcrt.dll_wcscpy
mov dword [esp], ebp
call sub.msvcrt.dll_wcslen
lea ebx, [ebx + eax*2]
mov dword [ebx], 0xa000d
add ebx, 4
cmp dword [esp + 0x5c], esi
jg 0x402320
cmp dword [esp + 0x30], esi
jg 0x4023a4
jmp 0x402d43
mov dword [esp], ebx
mov dword [esp + 4], ebp
inc esi
call sub.msvcrt.dll_wcscpy
mov dword [esp], ebp
call sub.msvcrt.dll_wcslen
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x30]
cmp esi, eax
jge 0x402d43
mov eax, dword [esp + 0x48]
mov ebp, dword [eax + esi*4]
mov eax, dword [esp + 0x40]
mov dword [esp], ebp
mov dword [esp + 4], eax
call edi
sub esp, 8
cmp eax, ebp
jne 0x402380
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call sub.msvcrt.dll_wcslen
mov edx, dword [esp + 0x5c]
lea ebp, [edx + eax*2 + 2]
jmp 0x402380
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x34], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x54], eax
jmp 0x401c13
mov dword [esp + 4], esi
mov dword [esp], ebx
call sub.msvcrt.dll_wcscpy
jmp 0x4021a6
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 8], 0x104
mov dword [esp], 0
mov dword [esp + 4], eax
mov ebx, eax
mov eax, dword [esp + 0x64]
call eax
sub esp, 0xc
mov eax, dword [esp + 0x60]
call eax
cmp eax, 0x7a
je 0x402dba
mov dword [esp], ebx
mov eax, dword [esp + 0x68]
call eax
sub esp, 4
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 4], ebx
mov dword [esp + 8], str.d3d9.dll
mov esi, eax
mov dword [esp], eax
mov eax, dword [esp + 0x44]
call eax
sub esp, 0xc
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
sub esp, 4
mov ebx, eax
test eax, eax
je 0x402e35
mov dword [esp + 4], str.Direct3DCreate9
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
sub esp, 8
test eax, eax
je 0x402eed
mov dword [esp], 0x20
call eax
sub esp, 4
mov edi, eax
test eax, eax
je 0x402efc
mov eax, dword [eax]
mov dword [esp], edi
call dword [eax + 0x10]
mov esi, eax
mov eax, dword [edi]
sub esp, 4
mov dword [esp], edi
call dword [eax + 8]
sub esp, 4
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, str.Success
mov ecx, str.No_adapters
sub esp, 4
cmp esi, 1
sbb edi, edi
and edi, 0x1006
test esi, esi
cmove eax, ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.VanillaFixes:_Self_test_result:__ls
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f860
call fcn.00401510
mov dword [esp], 0x40f860
call ebp
sub esp, 4
add esp, 0x13c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
inc dword [esp + 0x30]
mov eax, dword [esp + 0x30]
lea ebx, [eax*4]
mov eax, dword [esp + 0x48]
mov dword [esp + 4], ebx
mov dword [esp], eax
call sub.msvcrt.dll_realloc
mov dword [esp + 0x48], eax
mov dword [eax + ebx - 4], esi
jmp 0x402225
mov dword [esp + 8], str.GetLastError____ERROR_INSUFFICIENT_BUFFER
jmp 0x401f98
mov dword [esp + 8], str.WoW.exe_not_found._Extract_VanillaFixes_into_the_same_directory_as_the_game.
jmp 0x401f98
mov eax, dword [esp + 0x60]
mov dword [esp + 0xec], 0
call eax
lea edx, [esp + 0xec]
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], 0x1100
call dword [sym.imp.KERNEL32.dll_FormatMessageW]
mov edx, eax
sub esp, 0x1c
mov eax, 0x40b2f2
test edx, edx
jne 0x402917
mov dword [esp + 0xc], eax
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 + 4], 0x200
mov dword [esp], 0x40fc60
call fcn.00401510
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], str.VanillaFixes
mov dword [esp + 4], 0x40fc60
mov dword [esp], 0
call dword [sym.imp.USER32.dll_MessageBoxW]
sub esp, 0x10
mov edi, eax
jmp 0x40253d
test eax, eax
jne 0x402985
mov eax, dword [esp + 0x8c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov ebp, dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov eax, dword [esp + 0x88]
mov dword [esp], eax
call ebp
sub esp, 4
mov eax, dword [esp + 0x8c]
mov dword [esp], eax
call ebp
sub esp, 4
mov dword [esp + 4], 2
mov dword [esp], 0x104
call sub.msvcrt.dll_calloc
mov dword [esp + 8], str._ls.cache
mov dword [esp + 4], 0x104
mov ebx, eax
mov eax, dword [esp + 0x4c]
mov dword [esp], ebx
mov dword [esp + 0xc], eax
call fcn.004014e0
mov dword [esp], ebx
mov eax, dword [esp + 0x38]
call eax
sub esp, 4
cmp eax, 0xffffffff
je 0x4026da
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
sub esp, 4
mov dword [esp], ebx
call sub.msvcrt.dll_free
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 8], str.d3d9.dll
mov edi, dword [esp + 0x40]
mov ebx, eax
mov dword [esp], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 4], edi
call eax
sub esp, 0xc
mov ecx, dword [esp + 0x38]
mov dword [esp], ebx
call ecx
sub esp, 4
mov esi, eax
mov dword [esp], ebx
call sub.msvcrt.dll_free
cmp esi, 0xffffffff
je case.default.0x4028d7
mov dword [esp], 0x208
call sub.msvcrt.dll_malloc
mov dword [esp + 4], edi
mov dword [esp + 8], str.VanillaFixes.exe
mov ebx, eax
mov dword [esp], eax
mov eax, dword [esp + 0x44]
call eax
sub esp, 0xc
mov eax, dword [esp + 0x54]
mov dword [esp], ebx
call eax
xor eax, eax
sub esp, 4
mov ecx, 0x11
lea edi, [esp + 0xec]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
rep stosd dword es:[edi], eax
mov dword [esp], str._selftest
call sub.msvcrt.dll_wcslen
lea edi, [eax + 0x106]
lea eax, [edi + edi]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [esp + 4], edi
mov dword [esp + 0xc], ebx
mov dword [esp + 8], str._ls__selftest
mov dword [esp], eax
mov esi, eax
call fcn.004014e0
lea eax, [esp + 0x98]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x24], eax
lea eax, [esp + 0xec]
mov dword [esp + 0x14], 0x400
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], esi
mov dword [esp], 0
mov eax, dword [esp + 0x50]
call eax
sub esp, 0x28
mov edi, eax
mov dword [esp], esi
call sub.msvcrt.dll_free
test edi, edi
je 0x402ede
mov eax, dword [esp + 0x98]
mov dword [esp + 4], 0x2710
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
sub esp, 8
lea eax, [esp + 0x74]
mov dword [esp + 0x74], 0
mov dword [esp + 4], eax
mov eax, dword [esp + 0x98]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
sub esp, 8
cmp dword [esp + 0x74], 0x103
je 0x402f14
mov eax, dword [esp + 0x98]
mov dword [esp], eax
call ebp
sub esp, 4
mov eax, dword [esp + 0x9c]
mov dword [esp], eax
call ebp
sub esp, 4
mov dword [esp], ebx
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x74]
test eax, eax
je case.default.0x4028d7
lea edx, [eax - 0x1000]
cmp edx, 6
ja 0x402f7e
sub eax, 0x1003
cmp eax, 3
ja case.default.0x4028d7
jmp dword [eax*4 + 0x40bde8]
add edi, edi
mov dword [esp], esi
mov dword [esp + 4], edi
call sub.msvcrt.dll_realloc
mov dword [esp], eax
mov esi, eax
call sub.msvcrt.dll_wcslen
mov edi, dword [esp + 0x34]
lea eax, [esi + eax*2]
test edi, edi
jg 0x401dff
jmp 0x401e40
mov dword [esp + 8], str.VfPatcher.dll_not_found._Extract_all_files_into_the_game_directory.
jmp 0x401f98
mov eax, dword [esp + 0xec]
jmp 0x4025f9
mov dword [esp + 8], str.Failed_to_write_process_memory__newFlags_
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f460
call fcn.00401510
mov dword [esp + 0xc], 0x10
mov dword [esp + 8], str.VanillaFixes
mov dword [esp + 4], 0x40f460
mov dword [esp], 0
call dword [sym.imp.USER32.dll_MessageBoxW]
xor ecx, ecx
sub esp, 0x10
test eax, eax
setne cl
mov edi, ecx
mov ecx, dword [esp + 0x30]
test ecx, ecx
jg 0x401ee0
test eax, eax
je 0x4029f4
mov edi, 1
mov eax, dword [esp + 0x88]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
sub esp, 8
jmp 0x40253d
lea eax, [esp + 0x70]
mov dword [esp + 0x70], 0x80000000
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 4
mov dword [esp + 8], eax
mov dword [esp + 4], 0x884060
mov eax, dword [esp + 0x88]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
sub esp, 0x14
test eax, eax
je 0x402923
mov edx, dword [esp + 0x30]
test edx, edx
jg 0x401ee0
mov eax, dword [esp + 0x8c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov ebp, dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov eax, dword [esp + 0x88]
mov dword [esp], eax
call ebp
sub esp, 4
mov eax, dword [esp + 0x8c]
mov dword [esp], eax
call ebp
sub esp, 4
mov dword [esp + 4], 2
mov dword [esp], 0x104
call sub.msvcrt.dll_calloc
mov dword [esp + 8], str._ls.cache
mov dword [esp + 4], 0x104
mov ebx, eax
mov eax, dword [esp + 0x4c]
mov dword [esp], ebx
mov dword [esp + 0xc], eax
call fcn.004014e0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
sub esp, 0x1c
mov ecx, eax
cmp eax, 0xffffffff
je 0x4026da
mov dword [esp], ecx
call ebp
sub esp, 4
jmp 0x4026da
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x4022a9
jmp 0x401d0c
mov eax, str.Direct3DCreate9_was_not_found_in_d3d9.dll
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 0x402605
mov eax, str.Direct3DCreate9_failed
jmp 0x402ae5
mov eax, str.No_adapters
jmp 0x402ae5
mov eax, str.d3d9.dll_could_not_be_loaded
jmp 0x402ae5
mov edi, eax
test eax, eax
jne 0x402980
mov eax, dword [esp + 0x8c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov ebp, dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov eax, dword [esp + 0x88]
mov dword [esp], eax
call ebp
sub esp, 4
mov eax, dword [esp + 0x8c]
mov dword [esp], eax
call ebp
sub esp, 4
mov dword [esp + 4], 2
mov dword [esp], 0x104
call sub.msvcrt.dll_calloc
mov dword [esp + 8], str._ls.cache
mov dword [esp + 4], 0x104
mov ebx, eax
mov eax, dword [esp + 0x4c]
mov dword [esp], ebx
mov dword [esp + 0xc], eax
call fcn.004014e0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
sub esp, 0x1c
mov ecx, eax
cmp eax, 0xffffffff
je 0x4026da
mov eax, dword [esp + 0x30]
lea edx, [esp + 0xec]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x4c], edx
dec eax
mov dword [esp + 0x3c], eax
jmp 0x402bfd
mov eax, dword [esp + 0x30]
inc edi
cmp edi, eax
je 0x402ecd
mov eax, dword [esp + 0x48]
mov ebp, dword [eax + edi*4]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 4], 0
mov dword [esp], 0xfde9
mov dword [esp + 8], ebp
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
sub esp, 0x20
lea esi, [eax + 2]
mov dword [esp + 4], 1
mov dword [esp], esi
call sub.msvcrt.dll_calloc
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], esi
mov ebx, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], ebp
mov dword [esp + 4], 0
mov dword [esp], 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
sub esp, 0x20
mov eax, dword [esp + 0x3c]
cmp edi, eax
jge 0x402cb9
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
mov byte [ebx + eax], 0xd
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
mov byte [ebx + eax], 0xa
mov dword [esp], ebx
mov dword [esp + 0xec], 0
call sub.msvcrt.dll_strlen
mov dword [esp + 0x10], 0
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], ecx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
sub esp, 0x14
mov esi, eax
mov dword [esp], ebx
call sub.msvcrt.dll_free
test esi, esi
jne 0x402bf0
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x58]
mov ebp, dword [esp + 0x5c]
mov dword [esp], ecx
call ebp
sub esp, 4
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
sub esp, 4
jmp 0x4026da
mov dword [esp + 4], 2
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov dword [esp + 0x64], eax
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.
call sub.msvcrt.dll_wcslen
mov edi, dword [esp + 0x64]
mov ebx, eax
mov dword [esp], edi
call sub.msvcrt.dll_wcslen
lea esi, [ebx + eax + 1]
lea eax, [esi + esi]
mov dword [esp], eax
call sub.msvcrt.dll_malloc
mov dword [esp + 0xc], edi
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 dword [esp + 4], esi
mov ebx, eax
mov dword [esp], eax
call fcn.004014e0
mov dword [esp + 0xc], 0x31
mov dword [esp + 8], str.VanillaFixes
mov dword [esp + 4], ebx
mov dword [esp], 0
call dword [sym.imp.USER32.dll_MessageBoxW]
sub esp, 0x10
mov edi, eax
cmp eax, 1
jne 0x40253d
jmp 0x401d0c
mov dword [esp + 8], str.GetLastError____ERROR_INSUFFICIENT_BUFFER
mov dword [esp + 4], 0x200
mov dword [esp], 0x40f860
call fcn.00401510
mov dword [esp + 0x15c], 0x10
mov dword [esp + 0x158], str.VanillaFixes
mov dword [esp + 0x154], 0x40f860
jmp 0x401fcd
mov eax, dword [esp + 0x40]
mov dword [esp], eax
call sub.msvcrt.dll_wcslen
lea ebp, [ebp + eax*2 + 2]
jmp 0x40233f
test eax, eax
je 0x402e68
mov ebx, dword [esp + 0xec]
test ebx, ebx
je 0x402e60
mov dword [esp + 0x48], 0
mov dword [esp + 0x30], 0
jmp 0x402259
mov edi, 0x1003
mov eax, str.d3d9.dll_could_not_be_loaded
jmp 0x402511
cmp edi, 0x104
jg 0x4028de
mov dword [esp], esi
call sub.msvcrt.dll_wcslen
lea eax, [esi + eax*2]
jmp 0x401e40
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call sub.msvcrt.dll_free
jmp 0x401cfc
test eax, eax
jle 0x402f61
xor edi, edi
mov ebx, dword [sym.imp.SHLWAPI.dll_StrCmpIW]
mov ebp, edi
mov edi, dword [esp + 0x48]
jmp 0x402ea9
mov ecx, dword [esp + 0x30]
inc ebp
cmp ebp, ecx
je 0x402f0b
mov eax, dword [esi + ebp*4]
mov dword [esp + 4], eax
mov eax, dword [edi + ebp*4]
mov dword [esp], eax
call ebx
sub esp, 8
test eax, eax
je 0x402ea0
mov ebx, dword [esp + 0x30]
mov ebp, 1
jmp 0x402262
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x58]
mov ebp, dword [esp + 0x5c]
jmp 0x402aa8
mov dword [esp], ebx
call sub.msvcrt.dll_free
xor edi, edi
jmp 0x40253d
mov edi, 0x1004
mov eax, str.Direct3DCreate9_was_not_found_in_d3d9.dll
jmp 0x402511
mov edi, 0x1005
mov eax, str.Direct3DCreate9_failed
jmp 0x402511
mov ebp, eax
mov ebx, ecx
jmp 0x402262
mov eax, dword [esp + 0x98]
mov dword [esp + 4], 0x1001
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
sub esp, 8
mov dword [esp + 0x74], 0x1001
jmp 0x402888
mov dword [esp], ebp
call sub.msvcrt.dll_free
test esi, esi
je 0x402e68
mov ebx, dword [esp + 0xec]
test ebx, ebx
jne 0x402e20
xor eax, eax
mov dword [esp + 0x48], eax
mov dword [esp], esi
call sub.msvcrt.dll_free
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [esp + 0x30], ebx
jmp 0x401d0c
mov eax, str.Exception_caught
jmp 0x402ae5