Function at 0x409b40
Capabilities:
Check if file exists
Delete file
Get file attributes
Move file
Set file attributes
Timestomp file

Disassembly:
push 0xffffffffffffffff
push 0x448601
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xc4
mov eax, dword [0x468a18]
push ebx
push ebp
push esi
mov dword [esp + 0x34], ecx
push edi
lea ecx, [esp + 0x84]
mov dword [esp + 0xcc], eax
call fcn.0042a220
lea ecx, [esp + 0xa8]
mov dword [esp + 0xdc], 0
call fcn.0042a220
mov esi, dword [esp + 0xe4]
push esi
mov byte [esp + 0xe0], 1
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov ebx, eax
or ebp, 0xffffffff
cmp ebx, ebp
mov edi, ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x28], edi
je 0x409c84
test bl, 1
je 0x409c84
and edi, 0xfffffffe
push edi
push esi
mov dword [esp + 0x30], edi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
jne 0x409c84
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x409c56
cmp eax, 0x1f
jbe 0x409c25
cmp eax, 0x21
ja 0x409c25
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], ebp
call section..text
mov eax, 0xfffffff9
jmp 0x40a4b3
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], ebp
call section..text
mov eax, 0xfffffffe
jmp 0x40a4b3
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], ebp
call section..text
mov eax, ebp
jmp 0x40a4b3
push 0
push 0x80
push 3
push 0
push 0
push 0xc0000000
push esi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x24], ebp
jne 0x409d6a
cmp edi, ebx
je 0x409cb8
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x409d37
cmp eax, 0x1f
jbe 0x409d02
cmp eax, 0x21
ja 0x409d02
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], 0xffffffff
call section..text
mov eax, 0xfffffff9
jmp 0x40a4b3
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], 0xffffffff
call section..text
mov eax, 0xfffffffe
jmp 0x40a4b3
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], 0xffffffff
call section..text
or eax, 0xffffffff
jmp 0x40a4b3
push 0x208
call sub.MFC71U.DLL_SerializeElements
add esp, 4
mov edi, eax
push 0x104
push edi
push esi
mov word [edi], 0
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
test eax, eax
lea ecx, [esp + 0x48]
jne 0x409dba
push esi
call fcn.0042a100
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0xb4]
mov byte [esp + 0xe0], 2
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__]
lea ecx, [esp + 0x4c]
push ecx
jmp 0x409ddf
push edi
call fcn.0042a100
lea edx, [esp + 0x50]
push edx
lea ecx, [esp + 0xb4]
mov byte [esp + 0xe0], 3
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__]
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0xb0]
call fcn.00411910
lea ecx, [esp + 0x48]
mov byte [esp + 0xdc], 1
call section..text
push edi
call sub.MFC71U.DLL_operator_new
add esp, 4
mov dword [esp + 0x44], ebp
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0x78]
push edx
lea eax, [esp + 0x84]
push eax
push ebp
mov byte [esp + 0xec], 4
call dword [sym.imp.KERNEL32.dll_GetFileTime]
push esi
lea ecx, [esp + 0x4c]
push ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x48], eax
call fcn.004084f0
mov edi, eax
test edi, edi
mov byte [esp + 0xdc], 5
je 0x409e50
lea eax, [edi + 8]
jmp 0x409e52
xor eax, eax
push eax
lea ecx, [esp + 0x90]
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__]
add edi, 4
push edi
lea ecx, [esp + 0x8c]
call fcn.00411910
lea ecx, [esp + 0x48]
mov byte [esp + 0xdc], 4
call section..text
cmp dword [esp + 0xa4], 8
mov eax, dword [esp + 0x90]
jae 0x409e99
lea eax, [esp + 0x90]
push 0
push 0x80
push 3
push 0
push 1
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
cmp eax, 0xffffffff
mov dword [esp + 0x20], eax
jne 0x409f13
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
cmp dword [esp + 0x28], ebx
je 0x409ed1
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
call edi
test ebp, ebp
je 0x409ede
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], 0xffffffff
call section..text
mov eax, 0xfffffffd
jmp 0x40a4b3
mov dword [esp + 0x2c], eax
push 0x14
mov byte [esp + 0xe0], 6
call sub.MFC71U.DLL_SerializeElements
mov ecx, dword [esp + 0x3c]
add esp, 4
push eax
mov dword [esp + 0x38], eax
call fcn.004081b0
push 0xc
call sub.MFC71U.DLL_CWordArray::CWordArray
mov esi, eax
add esp, 4
mov dword [esp + 0x3c], esi
test esi, esi
mov byte [esp + 0xdc], 7
je 0x409f68
mov ecx, esi
call fcn.00408b90
mov dword [esi + 4], eax
mov dword [esi + 8], 0
mov ebp, esi
jmp 0x409f6a
xor ebp, ebp
mov edx, dword [esp + 0xe8]
mov eax, dword [edx + 4]
mov ebx, dword [eax]
cmp ebx, eax
mov byte [esp + 0xdc], 6
je 0x409fe9
push 0x28
lea esi, [ebx + 8]
call sub.MFC71U.DLL_CWordArray::CWordArray
add esp, 4
test eax, eax
je 0x409fa5
mov byte [eax + 0x24], 0x11
mov byte [eax + 0x25], 0xff
mov byte [eax + 0x26], 0
mov byte [eax + 0x27], 0xd0
jmp 0x409fa7
xor eax, eax
mov edi, eax
mov ecx, 0xa
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp + 4]
mov ecx, dword [esi + 4]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x3c]
push eax
push ecx
push esi
mov ecx, ebp
call fcn.00406ce0
push 1
mov ecx, ebp
mov edi, eax
call fcn.00408bb0
mov edx, dword [esp + 0xe8]
mov dword [esi + 4], edi
mov eax, dword [edi + 4]
mov dword [eax], edi
mov ebx, dword [ebx]
cmp ebx, dword [edx + 4]
jne 0x409f82
mov esi, dword [esp + 0xfc]
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
push esi
push ebx
push ebp
mov ecx, edi
call fcn.00408c50
mov eax, dword [esp + 0xf8]
mov ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0xf0]
push esi
push eax
mov eax, dword [esp + 0xf4]
push ecx
mov ecx, dword [esp + 0x2c]
push edx
mov edx, dword [esp + 0x34]
push eax
push ebx
push ebp
push ecx
push edx
mov ecx, edi
call fcn.00409180
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 4]
mov esi, dword [eax]
cmp esi, eax
je 0x40a06c
mov edi, 6
jmp 0x40a050
mov eax, dword [esi + 8]
push eax
call sub.MFC71U.DLL_CNoTrackObject::operator_new
mov esi, dword [esi]
mov eax, dword [ebp + 4]
add esp, 4
cmp esi, eax
mov dword [esp + 0xdc], edi
jne 0x40a050
mov ecx, dword [ebp + 4]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [ebp + 4]
mov dword [ecx + 4], ecx
mov ecx, dword [ebp + 4]
xor edi, edi
cmp eax, ecx
mov dword [ebp + 8], edi
je 0x40a099
mov esi, dword [eax]
push eax
call sub.MFC71U.DLL_CNoTrackObject::operator_new
mov ecx, dword [ebp + 4]
add esp, 4
cmp esi, ecx
mov eax, esi
jne 0x40a085
push ebx
call sub.MFC71U.DLL_CNoTrackObject::operator_new
mov ecx, dword [ebp + 4]
mov eax, dword [ecx]
mov dword [ecx], ecx
mov ecx, dword [ebp + 4]
mov dword [ecx + 4], ecx
mov ecx, dword [ebp + 4]
add esp, 4
cmp eax, ecx
mov dword [ebp + 8], edi
je 0x40a0d4
lea esp, [esp]
mov esi, dword [eax]
push eax
call sub.MFC71U.DLL_CNoTrackObject::operator_new
mov ecx, dword [ebp + 4]
add esp, 4
cmp esi, ecx
mov eax, esi
jne 0x40a0c0
mov eax, dword [ebp + 4]
push eax
call sub.MFC71U.DLL_CNoTrackObject::operator_new
push ebp
mov dword [ebp + 4], edi
call sub.MFC71U.DLL_CNoTrackObject::operator_new
mov eax, dword [esp + 0x3c]
add esp, 8
cmp eax, edi
jne 0x40a130
cmp dword [esp + 0x40], edi
je 0x40a114
lea eax, [esp + 0x6c]
push eax
mov eax, dword [esp + 0x24]
lea ecx, [esp + 0x78]
push ecx
lea edx, [esp + 0x84]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_SetFileTime]
mov eax, dword [esp + 0x24]
cmp eax, edi
mov ebp, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x40a390
push eax
call ebp
xor ebx, ebx
jmp 0x40a394
cmp eax, 1
jne 0x40a203
mov eax, dword [esp + 0x30]
cmp dword [esp + 0x28], eax
je 0x40a152
mov ecx, dword [esp + 0xe4]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov eax, dword [esp + 0x20]
cmp eax, edi
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x40a167
push eax
call ebx
xor esi, esi
jmp 0x40a16b
mov esi, dword [esp + 0x2c]
cmp dword [esp + 0xa4], 8
mov eax, dword [esp + 0x90]
jae 0x40a183
lea eax, [esp + 0x90]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
cmp esi, edi
je 0x40a196
cmp esi, 0xffffffff
je 0x40a196
push esi
call ebx
mov eax, dword [esp + 0x24]
cmp eax, edi
je 0x40a1a1
push eax
call ebx
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0xa
call fcn.00428820
lea ecx, [esp + 0xb0]
mov byte [esp + 0xdc], 0
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], 0xb
call fcn.00428820
lea ecx, [esp + 0x8c]
mov dword [esp + 0xdc], 0xffffffff
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov eax, 1
jmp 0x40a4b3
cmp eax, 0xffffffff
jne 0x40a2e0
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebp
mov eax, dword [esp + 0x30]
cmp dword [esp + 0x28], eax
je 0x40a22d
mov edx, dword [esp + 0xe4]
push eax
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov eax, dword [esp + 0x20]
cmp eax, edi
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x40a242
push eax
call ebx
xor esi, esi
jmp 0x40a246
mov esi, dword [esp + 0x2c]
cmp dword [esp + 0xa4], 8
mov eax, dword [esp + 0x90]
jae 0x40a25e
lea eax, [esp + 0x90]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
call ebp
cmp esi, edi
je 0x40a273
cmp esi, 0xffffffff
je 0x40a273
push esi
call ebx
mov eax, dword [esp + 0x24]
cmp eax, edi
je 0x40a27e
push eax
call ebx
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0xc
call fcn.00428820
lea ecx, [esp + 0xb0]
mov byte [esp + 0xdc], 0
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], 0xd
call fcn.00428820
lea ecx, [esp + 0x8c]
mov dword [esp + 0xdc], 0xffffffff
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov eax, 0xfffffffc
jmp 0x40a4b3
cmp eax, 0xfffffffe
jne 0x40a114
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebp
mov eax, dword [esp + 0x30]
cmp dword [esp + 0x28], eax
je 0x40a30a
push eax
mov eax, dword [esp + 0xe8]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov eax, dword [esp + 0x20]
cmp eax, edi
mov ebx, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x40a31f
push eax
call ebx
xor esi, esi
jmp 0x40a323
mov esi, dword [esp + 0x2c]
cmp dword [esp + 0xa4], 8
mov eax, dword [esp + 0x90]
jae 0x40a33b
lea eax, [esp + 0x90]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
call ebp
cmp esi, edi
je 0x40a350
cmp esi, 0xffffffff
je 0x40a350
push esi
call ebx
mov eax, dword [esp + 0x24]
cmp eax, edi
je 0x40a35b
push eax
call ebx
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], 0xffffffff
call section..text
mov eax, 0xfffffffb
jmp 0x40a4b3
mov ebx, dword [esp + 0x44]
mov ecx, dword [esp + 0xe4]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov eax, dword [esp + 0x20]
cmp eax, edi
je 0x40a3b1
push eax
call ebp
xor esi, esi
jmp 0x40a3b5
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0xc8]
mov ecx, dword [esp + 0xb4]
mov edi, 8
cmp eax, edi
jae 0x40a3d3
lea ecx, [esp + 0xb4]
cmp dword [esp + 0xa4], edi
mov eax, dword [esp + 0x90]
jae 0x40a3ea
lea eax, [esp + 0x90]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileW]
test eax, eax
jne 0x40a446
call dword [sym.imp.KERNEL32.dll_GetLastError]
test esi, esi
je 0x40a408
cmp esi, 0xffffffff
je 0x40a408
push esi
call ebp
test ebx, ebx
je 0x40a414
cmp ebx, 0xffffffff
je 0x40a414
push ebx
call ebp
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], 0xffffffff
call section..text
mov eax, 0xfffffffa
jmp 0x40a4b3
mov ecx, dword [esp + 0x30]
cmp ecx, 0xffffffff
je 0x40a46e
cmp dword [esp + 0xc8], edi
mov eax, dword [esp + 0xb4]
jae 0x40a466
lea eax, [esp + 0xb4]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test esi, esi
je 0x40a47a
cmp esi, 0xffffffff
je 0x40a47a
push esi
call ebp
test ebx, ebx
je 0x40a486
cmp ebx, 0xffffffff
je 0x40a486
push ebx
call ebp
lea ecx, [esp + 0xa8]
mov byte [esp + 0xdc], 0
call section..text
lea ecx, [esp + 0x84]
mov dword [esp + 0xdc], 0xffffffff
call section..text
xor eax, eax
mov ecx, dword [esp + 0xd4]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
mov ecx, dword [esp + 0xc0]
pop ebx
call fcn.0043cfa9
add esp, 0xd0
ret 0x1c