Function at 0x10001f10
Capabilities:
Check if file exists
Copy file
Delete file
Get common file path
Get file attributes

Disassembly:
push 0xffffffffffffffff
push 0x1000c79c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3e0
mov eax, dword [0x10011098]
mov ecx, dword [esp + 0x3f0]
push ebx
push esi
mov dword [esp + 0x3e4], eax
mov eax, dword [esp + 0x3fc]
xor esi, esi
push esi
push eax
push ecx
call fcn.10006ad0
mov ebx, eax
add esp, 0xc
cmp ebx, esi
je 0x10001fff
lea ecx, [esp + 0x9c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_void_]
mov al, byte [esp + 0x408]
test al, al
mov dword [esp + 0x3f0], esi
je 0x10002006
lea edx, [esp + 0x1e4]
push edx
push 0x200
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
cmp eax, esi
je 0x10001fe7
lea eax, [esp + 0x1e4]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10001fa2
sub eax, edx
cmp byte [esp + eax + 0x1e3], 0x5c
jne 0x10001fd0
lea eax, [esp + 0x1e4]
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10001fc0
sub eax, edx
mov byte [esp + eax + 0x1e3], cl
lea eax, [esp + 0x1e4]
push eax
lea ecx, [esp + 0xa0]
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_char_const__]
jmp 0x1000201b
lea ecx, [esp + 0x9c]
mov dword [esp + 0x3f0], 0xffffffff
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
xor al, al
jmp 0x100023be
mov ecx, dword [esp + 0x400]
push ecx
lea ecx, [esp + 0xa0]
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
push ebp
push edi
lea edx, [esp + 0xc0]
push edx
push 0xffffffffffffffff
push ebx
mov byte [esp + 0x1f], 1
call fcn.10004b40
mov eax, dword [esp + 0xcc]
add esp, 0xc
cmp eax, esi
mov dword [esp + 0x14], eax
jle 0x1000222d
jmp 0x10002050
lea eax, [esp + 0xc0]
push eax
push esi
push ebx
call fcn.10004b40
push 0x1000d180
lea ecx, [esp + 0xb4]
push ecx
lea edx, [esp + 0x64]
push edx
call fcn.10001280
lea ecx, [esp + 0xdc]
push ecx
push eax
lea edx, [esp + 0xa8]
push edx
mov byte [esp + 0x41c], 1
call fcn.10001280
add esp, 0x24
lea ecx, [esp + 0x50]
mov byte [esp + 0x3f8], 3
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [esp + 0xa0]
mov edi, 0x10
cmp eax, edi
mov eax, dword [esp + 0x8c]
jae 0x100020c7
lea eax, [esp + 0x8c]
push eax
push esi
push ebx
call fcn.10006af0
add esp, 0xc
test eax, eax
jne 0x100021f5
mov al, byte [esp + 0x410]
test al, al
je 0x10002198
mov eax, dword [esp + 0x408]
push 0x1000d180
push eax
lea ecx, [esp + 0x3c]
push ecx
call fcn.10001280
lea edx, [esp + 0xd0]
push edx
push eax
lea eax, [esp + 0x80]
push eax
mov byte [esp + 0x410], 4
call fcn.10001280
add esp, 0x18
cmp dword [eax + 0x18], edi
mov byte [esp + 0x3f8], 5
jb 0x10002133
mov ebp, dword [eax + 4]
jmp 0x10002136
lea ebp, [eax + 4]
cmp dword [esp + 0xa0], edi
mov edi, dword [esp + 0x8c]
jae 0x1000214d
lea edi, [esp + 0x8c]
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test al, 0x10
je 0x10002163
push ebp
call fcn.100079b0
add esp, 4
jmp 0x10002174
push 0
push ebp
push edi
call dword [sym.imp.KERNEL32.dll_CopyFileA]
push edi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea ecx, [esp + 0x6c]
mov byte [esp + 0x3f8], 4
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x34]
mov byte [esp + 0x3f8], 3
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xc4]
push ecx
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov ecx, dword [esp + 0x40c]
push eax
mov byte [esp + 0x3fc], 6
call fcn.100019f0
lea ecx, [esp + 0x18]
mov byte [esp + 0x3f8], 3
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x88]
mov byte [esp + 0x3f8], 0
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [esp + 0x14]
inc esi
cmp esi, eax
jl 0x10002050
jmp 0x1000222d
cmp dword [esp + 0xa0], edi
mov eax, dword [esp + 0x8c]
jae 0x1000220c
lea eax, [esp + 0x8c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea ecx, [esp + 0x88]
mov byte [esp + 0x13], 0
mov byte [esp + 0x3f8], 0
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
push ebx
call fcn.10004b90
add esp, 4
test al, al
push ebx
je 0x10002242
call fcn.10006e00
jmp 0x10002247
call fcn.1000bf90
mov al, byte [esp + 0x17]
add esp, 4
test al, al
je 0x100023a0
mov al, byte [esp + 0x410]
test al, al
je 0x100023a0
lea ecx, [esp + 0x88]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_void_]
xor ebp, ebp
mov byte [esp + 0x3f8], 7
xor esi, esi
mov bl, 8
mov edi, dword [esp + 0x40c]
mov eax, dword [edi + 4]
test eax, eax
je 0x1000238b
mov ecx, dword [edi + 8]
sub ecx, eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebp, eax
jae 0x1000238b
push 0x1000d180
lea edx, [esp + 0xa8]
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.10001280
mov ecx, dword [edi + 4]
add ecx, esi
push ecx
push eax
lea ecx, [esp + 0x2c]
push ecx
mov byte [esp + 0x410], bl
call fcn.10001200
add esp, 0x18
push eax
lea ecx, [esp + 0x8c]
mov byte [esp + 0x3fc], 9
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea ecx, [esp + 0x18]
mov byte [esp + 0x3f8], bl
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x34]
mov byte [esp + 0x3f8], 7
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [esp + 0xa0]
mov edi, 0x10
cmp eax, edi
mov eax, dword [esp + 0x8c]
jae 0x1000233b
lea eax, [esp + 0x8c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x10002382
test al, 0x10
je 0x10002364
lea edx, [esp + 0x88]
push edx
call fcn.10007a30
add esp, 4
inc ebp
add esi, 0x1c
jmp 0x10002280
cmp dword [esp + 0xa0], edi
mov eax, dword [esp + 0x8c]
jae 0x1000237b
lea eax, [esp + 0x8c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
inc ebp
add esi, 0x1c
jmp 0x10002280
lea ecx, [esp + 0x88]
mov byte [esp + 0x3f8], 0
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xa4]
mov dword [esp + 0x3f8], 0xffffffff
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov al, byte [esp + 0x13]
pop edi
pop ebp
mov ecx, dword [esp + 0x3e8]
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x3e0]
pop ebx
call fcn.1000c09f
add esp, 0x3ec
ret