Function at 0x408220
Capabilities:
Copy file
Delete file
Get common file path
Link many functions at runtime
Move file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x73c
mov eax, dword [0x6102d4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x200
lea eax, [ebp - 0x408]
mov edi, ecx
push 0
push eax
call fcn.0056f980
add esp, 0xc
lea eax, [ebp - 0x208]
push 0x200
push 0
push eax
call fcn.0056f980
add esp, 0xc
lea eax, [ebp - 0x608]
push 0x200
push 0
push eax
call fcn.0056f980
mov ebx, dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
add esp, 0xc
mov dword [ebp - 0x734], 0
push str.Wow64DisableWow64FsRedirection
push str.Kernel32.dll
call ebx
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call esi
push str.Wow64RevertWow64FsRedirection
push str.Kernel32.dll
mov dword [ebp - 0x738], eax
call ebx
push eax
call esi
push 0x100
mov dword [ebp - 0x73c], eax
lea eax, [ebp - 0x71c]
push 0
push eax
mov dword [ebp - 0x730], 0x11c
mov dword [ebp - 0x72c], 0
mov dword [ebp - 0x728], 0
mov dword [ebp - 0x724], 0
mov dword [ebp - 0x720], 0
call fcn.0056f980
mov esi, dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
add esp, 0xc
xor eax, eax
mov word [ebp - 0x61c], ax
mov dword [ebp - 0x61a], eax
push 3
push 0x20
push 3
push 1
push 3
push 2
push eax
push eax
mov word [ebp - 0x616], ax
call esi
push edx
push eax
call esi
push edx
push eax
call esi
push edx
push eax
push 0x23
lea eax, [ebp - 0x730]
mov dword [ebp - 0x72c], 6
xor ecx, ecx
mov dword [ebp - 0x728], 0
push eax
mov word [ebp - 0x61c], cx
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
test eax, eax
jne 0x40836f
push str.GameFnrt.fad
jmp 0x4083b7
push str.IsWow64Process
push str.kernel32
call ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov dword [ebp - 0x60c], 0
test esi, esi
je 0x4083b2
lea eax, [ebp - 0x60c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
cmp dword [ebp - 0x60c], 0
je 0x4083b2
push str.GamePjkt.fds
jmp 0x4083b7
push str.GamePrtfr.fds
mov esi, dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [ebp - 0x408]
push edi
push str._s_s
push eax
call esi
add esp, 0x10
lea eax, [ebp - 0x208]
push 0x100
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
push str.driversZHGameHallDrv.sys.bak
lea eax, [ebp - 0x208]
push eax
lea eax, [ebp - 0x608]
push str._s_s
push eax
call esi
push str.driversZHGameHallDrv.sys
lea eax, [ebp - 0x208]
push eax
push str._s_s
push eax
call esi
add esp, 0x20
push str.IsWow64Process
push str.kernel32
call ebx
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
mov esi, eax
mov dword [ebp - 0x60c], 0
test esi, esi
je 0x40845d
lea eax, [ebp - 0x60c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
cmp dword [ebp - 0x60c], 0
je 0x40845d
lea eax, [ebp - 0x734]
push eax
call dword [ebp - 0x738]
push 0
lea eax, [ebp - 0x208]
push eax
lea eax, [ebp - 0x408]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x4084b2
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileExW]
lea eax, [ebp - 0x608]
push 1
push eax
lea eax, [ebp - 0x208]
push eax
call esi
push 4
push 0
lea eax, [ebp - 0x608]
push eax
call esi
push 0
lea eax, [ebp - 0x208]
push eax
lea eax, [ebp - 0x408]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push str.IsWow64Process
push str.kernel32
call ebx
push eax
call edi
mov esi, eax
mov dword [ebp - 0x60c], 0
test esi, esi
je 0x4084f6
lea eax, [ebp - 0x60c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
cmp dword [ebp - 0x60c], 0
je 0x4084f6
push dword [ebp - 0x734]
call dword [ebp - 0x73c]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0045ef18
mov esp, ebp
pop ebp
ret