Function at 0x404be0
Capabilities:
Check if file exists
Delete file
Get common file path
Get file attributes
Set file attributes

Disassembly:
push 0xffffffffffffffff
push 0x405dd9
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x70
push esi
push edi
lea ecx, [esp + 0x14]
mov dword [0x4082ac], 1
call fcn.00405704
lea ecx, [esp + 8]
mov dword [esp + 0x80], 0
call fcn.00405704
push 0x104
lea ecx, [esp + 0x18]
mov byte [esp + 0x84], 1
call sub.MFC42.DLL_CString::GetBuffer
mov esi, eax
push esi
push 0x102
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
cmp byte [eax + esi - 1], 0x5c
jne 0x404c51
mov byte [eax + esi - 1], 0
push 0xffffffffffffffff
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::ReleaseBuffer
lea eax, [esp + 0x14]
lea ecx, [esp + 8]
push eax
call fcn.00405758
push str.dginfo.txt
lea ecx, [esp + 0xc]
call fcn.0040572e
lea ecx, [esp + 0x10]
call fcn.00405704
push str.dongleupdate
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 2
call sub.MFC42.DLL_CString::operator
push str.__g
lea ecx, [esp + 0x14]
call fcn.0040572e
lea ecx, [esp + 8]
lea edx, [esp + 0x18]
push ecx
push 0x408144
push edx
call sub.MFC42.DLL_operator_1
push 0x408144
push eax
lea eax, [esp + 0x14]
mov byte [esp + 0x88], 3
push eax
call sub.MFC42.DLL_operator
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x84], 4
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0xc]
mov byte [esp + 0x80], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov byte [esp + 0x80], 2
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 8]
push 0x80
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov edx, dword [esp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push 0
push 0x104
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::GetBuffer
push eax
push 0
call fcn.00404fb0
add esp, 0xc
lea ecx, [esp + 0x10]
mov esi, eax
push 0xffffffffffffffff
call sub.MFC42.DLL_CString::ReleaseBuffer
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
test esi, esi
jne 0x404d89
push str.Can_not_find_or_run_the_command_
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_1
mov eax, dword [esp + 0xc]
push 0
push 0
push eax
mov byte [esp + 0x8c], 5
call sub.MFC42.DLL_AfxMessageBox
lea ecx, [esp + 0xc]
mov byte [esp + 0x80], 2
call sub.MFC42.DLL_CString::CString
jmp 0x404dbe
push 0x3a980
push esi
call dword [sym.imp.USER32.dll_WaitForInputIdle]
test eax, eax
jne 0x404db2
push str.Security_Error
push eax
call dword [sym.imp.USER32.dll_FindWindowA]
test eax, eax
je 0x404db2
push 0
push 0
push 0x10
push eax
call edi
push 0x3a980
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [esp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x404f0c
mov edx, dword [sym.imp.MSVCIRT.dll_int_const_filebuf::openprot]
mov ecx, dword [esp + 8]
push 1
mov eax, dword [edx]
push eax
push 1
push ecx
lea ecx, [esp + 0x2c]
call dword [sym.imp.MSVCIRT.dll_public:_void___thiscall_ifstream::constructor_char_const___int__int_]
lea ecx, [esp + 0xc]
mov byte [esp + 0x80], 6
call fcn.00405704
push 0x104
lea ecx, [esp + 0x10]
mov byte [esp + 0x84], 7
call sub.MFC42.DLL_CString::GetBuffer
mov edx, dword [esp + 0x1c]
mov esi, eax
mov eax, dword [edx + 4]
mov ecx, dword [esp + eax + 0x50]
lea eax, [esp + eax + 0x1c]
test ecx, ecx
jge 0x404e37
add eax, 0x38
push eax
call dword [sym.imp.MSVCIRT.dll__mtlock]
add esp, 4
mov edx, dword [esp + 0x20]
push 0xa
inc edx
push 0x104
push esi
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], edx
call dword [sym.imp.MSVCIRT.dll_protected:_class_istream____thiscall_istream::get_char___int__int_]
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + edx + 0x50]
test ecx, ecx
lea eax, [esp + edx + 0x1c]
jge 0x404e72
add eax, 0x38
push eax
call dword [sym.imp.MSVCIRT.dll__mtunlock]
add esp, 4
push 0xffffffffffffffff
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::ReleaseBuffer
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 4]
mov eax, dword [esp + ecx + 0x24]
test eax, eax
jne 0x404edf
push 0x40810c
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::Find
lea edx, [esp + 0x18]
push eax
push edx
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::Left
push eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x84], 8
call fcn.00405758
lea ecx, [esp + 0x18]
mov byte [esp + 0x80], 7
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0xc]
push eax
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov dword [0x4082ac], eax
lea ecx, [esp + 0xc]
mov byte [esp + 0x80], 6
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x28]
mov byte [esp + 0x80], 2
call dword [sym.imp.MSVCIRT.dll_public_virtual:_void___thiscall_ifstream::destructor_void_]
lea ecx, [esp + 0x28]
call dword [sym.imp.MSVCIRT.dll_public_virtual:_void___thiscall_ios::destructor_void_]
mov eax, dword [esp + 0x88]
test eax, eax
je 0x404f20
push 0
push 0
push 0x10
push eax
call edi
lea ecx, [esp + 0x10]
mov byte [esp + 0x80], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 8]
mov byte [esp + 0x80], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov dword [esp + 0x80], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x78]
pop edi
xor eax, eax
mov dword fs:[0], ecx
pop esi
add esp, 0x7c
ret