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

Disassembly:
push 0xffffffffffffffff
push 0x1000c71c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x3e0
mov eax, dword [0x10011098]
push ebx
mov dword [esp + 0x3e0], eax
mov eax, dword [esp + 0x3f4]
mov ecx, dword [eax + 0x18]
push esi
push edi
mov edi, 0x10
cmp ecx, edi
jb 0x10001ac2
mov eax, dword [eax + 4]
jmp 0x10001ac5
add eax, 4
xor esi, esi
push esi
push eax
call fcn.10006ab0
mov ebx, eax
add esp, 8
cmp ebx, esi
je 0x10001b6e
lea ecx, [esp + 0x68]
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 + 0x3f4], esi
je 0x10001b75
lea eax, [esp + 0x1e8]
push eax
push 0x200
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
cmp eax, esi
je 0x10001b59
lea eax, [esp + 0x1e8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10001b18
sub eax, edx
cmp byte [esp + eax + 0x1e7], 0x5c
jne 0x10001b45
lea eax, [esp + 0x1e8]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10001b35
sub eax, edx
mov byte [esp + eax + 0x1e7], cl
lea ecx, [esp + 0x1e8]
push ecx
lea ecx, [esp + 0x6c]
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 0x10001b87
lea ecx, [esp + 0x68]
mov dword [esp + 0x3f4], 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 0x10001ee2
mov edx, dword [esp + 0x400]
push edx
lea ecx, [esp + 0x6c]
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
lea eax, [esp + 0xc0]
push eax
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 0x10001d70
lea ecx, [esp + 0xc0]
push ecx
push esi
push ebx
call fcn.10004b40
push 0x1000d180
lea edx, [esp + 0x7c]
push edx
lea eax, [esp + 0x48]
push eax
call fcn.10001280
lea ecx, [esp + 0xdc]
push ecx
push eax
lea edx, [esp + 0x70]
push edx
mov byte [esp + 0x41c], 1
call fcn.10001280
add esp, 0x24
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_]
cmp dword [esp + 0x68], edi
mov eax, dword [esp + 0x54]
jae 0x10001c14
lea eax, [esp + 0x54]
push eax
push esi
push ebx
call fcn.10006af0
add esp, 0xc
test eax, eax
jne 0x10001d44
mov al, byte [esp + 0x40c]
test al, al
je 0x10001cea
mov eax, dword [esp + 0x404]
push 0x1000d180
push eax
lea ecx, [esp + 0x90]
push ecx
call fcn.10001280
lea edx, [esp + 0xd0]
push edx
push eax
lea eax, [esp + 0xb8]
push eax
mov byte [esp + 0x410], 4
call fcn.10001280
add esp, 0x18
cmp dword [eax + 0x18], edi
mov byte [esp + 0x3f8], 5
jb 0x10001c83
mov ebp, dword [eax + 4]
jmp 0x10001c86
lea ebp, [eax + 4]
cmp dword [esp + 0x68], edi
mov edi, dword [esp + 0x54]
jae 0x10001c94
lea edi, [esp + 0x54]
push edi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test al, 0x10
je 0x10001caa
push ebp
call fcn.100079b0
add esp, 4
jmp 0x10001cbb
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 + 0xa4]
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 + 0x88]
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 edi, 0x10
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 + 0x408]
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 + 0x50]
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 0x10001bb3
jmp 0x10001d70
cmp dword [esp + 0x68], edi
mov eax, dword [esp + 0x54]
jae 0x10001d52
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea ecx, [esp + 0x50]
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 0x10001d85
call fcn.10006e00
jmp 0x10001d8a
call fcn.1000bf90
mov al, byte [esp + 0x17]
add esp, 4
test al, al
je 0x10001ec8
mov al, byte [esp + 0x40c]
test al, al
je 0x10001ec8
lea ecx, [esp + 0x50]
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 edi, edi
mov byte [esp + 0x3f8], 7
xor esi, esi
mov bl, 8
mov ebp, dword [esp + 0x408]
mov eax, dword [ebp + 4]
test eax, eax
je 0x10001eb6
mov ecx, dword [ebp + 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 edi, eax
jae 0x10001eb6
push 0x1000d180
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0x90]
push eax
call fcn.10001280
mov ecx, dword [ebp + 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 + 0x54]
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 + 0x88]
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 + 0x68]
mov ebp, 0x10
cmp eax, ebp
mov eax, dword [esp + 0x54]
jae 0x10001e72
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x10001ead
test al, 0x10
je 0x10001e98
lea edx, [esp + 0x50]
push edx
call fcn.10007a30
add esp, 4
inc edi
add esi, 0x1c
jmp 0x10001dc0
cmp dword [esp + 0x68], ebp
mov eax, dword [esp + 0x54]
jae 0x10001ea6
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
inc edi
add esi, 0x1c
jmp 0x10001dc0
lea ecx, [esp + 0x50]
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 + 0x6c]
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 ebp
mov ecx, dword [esp + 0x3ec]
pop edi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x3e0]
pop ebx
call fcn.1000c09f
add esp, 0x3ec
ret