Function at 0x401840
Capabilities:
Check if file exists
Copy file
Create directory
Delete file
Get common file path
Get file attributes
Move file
Print debug messages

Disassembly:
push 0xffffffffffffffff
push 0x407170
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x38
push esi
push edi
mov edi, ecx
lea ecx, [esp + 8]
mov dword [esp + 0x48], 1
call sub.MFC42.DLL_CString::CString_1
push 0x104
push 0x104
lea ecx, [esp + 0x10]
mov byte [esp + 0x50], 2
call sub.MFC42.DLL_CString::GetBufferSetLength
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push 0xffffffffffffffff
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::ReleaseBuffer
push str.ChinaSoftcis7
lea ecx, [esp + 0xc]
call fcn.00406c6c
mov eax, dword [esp + 8]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
push eax
call esi
cmp eax, 0xffffffff
je 0x4018bb
test al, 0x10
jne 0x40192f
xor edx, edx
xor ecx, ecx
mov dword [esp + 0x2d], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x31], edx
lea eax, [esp + 0x2c]
mov dword [esp + 0x35], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x39], edx
mov byte [esp + 0x2c], cl
mov word [esp + 0x3d], dx
push eax
mov ecx, edi
mov dword [esp + 0x24], 0
mov byte [esp + 0x43], dl
call fcn.00405780
test eax, eax
je 0x401920
mov eax, dword [esp + 8]
lea edx, [esp + 0x20]
lea ecx, [esp + 0x2c]
push edx
mov dword [esp + 0x24], 0xc
mov dword [esp + 0x2c], 1
mov dword [esp + 0x28], ecx
push eax
jmp 0x401927
mov ecx, dword [esp + 8]
push 0
push ecx
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExA]
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::CString_1
mov byte [esp + 0x48], 3
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
lea edx, [esp + 0x10]
push str.._08X
push edx
call sub.MFC42.DLL_CString::Format
add esp, 0xc
lea eax, [esp + 0xc]
lea ecx, [esp + 0x54]
lea edx, [esp + 0x10]
push eax
push ecx
push edx
call sub.MFC42.DLL_operator_1
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x4c], 4
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x10]
mov byte [esp + 0x48], 3
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x54]
push eax
call esi
cmp eax, 0xffffffff
je 0x4019a3
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x54]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_MoveFileA]
mov eax, dword [esp + 0xc]
push 4
push 0
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push 0
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
mov esi, eax
mov edi, 0x40a0b0
test esi, esi
jne 0x4019d4
mov edi, 0x40a0a8
push 0x40a094
lea ecx, [esp + 0x20]
call fcn.00406c4e
push edi
push eax
lea eax, [esp + 0x20]
mov byte [esp + 0x50], 5
push eax
call sub.MFC42.DLL_operator
lea ecx, [esp + 0x54]
lea edx, [esp + 0x14]
push ecx
push eax
push edx
mov byte [esp + 0x54], 6
call sub.MFC42.DLL_operator_1
push 0x40a090
push eax
lea eax, [esp + 0x18]
mov byte [esp + 0x50], 7
push eax
call sub.MFC42.DLL_operator
mov eax, dword [eax]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0x48], 6
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov byte [esp + 0x48], 5
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x1c]
mov byte [esp + 0x48], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0xc]
mov byte [esp + 0x48], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 8]
mov byte [esp + 0x48], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x50]
mov byte [esp + 0x48], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x54]
mov dword [esp + 0x48], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x40]
mov eax, esi
pop edi
pop esi
mov dword fs:[0], ecx
add esp, 0x44
ret 8