Function at 0x401a4d
Capabilities:
Copy file
Delete file

Disassembly:
mov eax, 0x405d21
call fcn.00405870
sub esp, 0x18
push esi
and dword [ebp - 4], 0
lea ecx, [ebp - 0x14]
call sub.MFC42.DLL_CString::CString_1
lea eax, [ebp - 0x14]
push 6
push eax
mov byte [ebp - 4], 1
call dword [sym.imp.BasicCtrlDll.dll_class_CString____cdecl_GetQQStorePath_class_CString___enum__emQQPath_]
pop ecx
pop ecx
lea ecx, [ebp - 0x1c]
call sub.MFC42.DLL_CString::CString_1
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call sub.MFC42.DLL_CString::CString_1
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 3
call sub.MFC42.DLL_CString::CString_1
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 4
call sub.MFC42.DLL_CString::CString_1
push dword [ebp - 0x14]
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 5
push str._sSearchBannerppw.dat
push eax
call sub.MFC42.DLL_CString::Format
add esp, 0xc
lea eax, [ebp - 0x24]
push dword [ebp - 0x14]
push str._sSearchBannerppwindex.dat
push eax
call sub.MFC42.DLL_CString::Format
add esp, 0xc
lea eax, [ebp - 0x18]
push dword [ebp - 0x14]
push str._sSearchBanner_ssw.dat
push eax
call sub.MFC42.DLL_CString::Format
add esp, 0xc
lea eax, [ebp - 0x20]
push dword [ebp - 0x14]
push str._sSearchBanner_sswindex.dat
push eax
call sub.MFC42.DLL_CString::Format
mov esi, dword [sym.imp.BasicCtrlDll.dll_int___cdecl_IsPathValid_class_CString__]
lea eax, [ebp - 0x24]
push eax
call esi
add esp, 0x10
test eax, eax
je 0x401b12
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [ebp - 0x20]
push eax
call esi
test eax, eax
pop ecx
je 0x401b26
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x401b32
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push eax
push dword [ebp - 0x14]
call dword [sym.imp.MSVCRT.dll__mbsicmp]
pop ecx
test eax, eax
pop ecx
je 0x401c0a
lea eax, [ebp - 0x1c]
push eax
call esi
test eax, eax
pop ecx
je 0x401b5a
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x401b66
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push ebx
push edi
push eax
lea ecx, [ebp - 0x10]
call sub.MFC42.DLL_CString::CString_2
push str.SearchBannerppw.dat
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 6
call sub.MFC42.DLL_CString::operator
lea eax, [ebp - 0x10]
push eax
call esi
mov edi, dword [sym.imp.BasicCtrlDll.dll_int___cdecl_CreateAllDir_class_CString_const__]
mov ebx, dword [sym.imp.KERNEL32.dll_CopyFileA]
test eax, eax
pop ecx
je 0x401baa
lea eax, [ebp - 0x1c]
push eax
call edi
pop ecx
push 1
push dword [ebp - 0x1c]
push dword [ebp - 0x10]
call ebx
lea eax, [ebp - 0x18]
push eax
call esi
test eax, eax
pop ecx
je 0x401bbe
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x401bca
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push eax
lea ecx, [ebp - 0x10]
call fcn.004056cc
push str.SearchBanner_ssw.dat
lea ecx, [ebp - 0x10]
call sub.MFC42.DLL_CString::operator
lea eax, [ebp - 0x10]
push eax
call esi
test eax, eax
pop ecx
je 0x401bfc
lea eax, [ebp - 0x18]
push eax
call edi
pop ecx
push 1
push dword [ebp - 0x18]
push dword [ebp - 0x10]
call ebx
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 5
call sub.MFC42.DLL_CString::CString
pop edi
pop ebx
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 4
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
and byte [ebp - 4], 0
lea ecx, [ebp - 0x14]
call sub.MFC42.DLL_CString::CString
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp + 8]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [ebp - 0xc]
pop esi
mov dword fs:[0], ecx
leave
ret