Function at 0x4056f0
Capabilities:
Create directory
Move file

Disassembly:
push 0xffffffffffffffff
push 0x406806
mov eax, dword fs:[0]
push eax
sub esp, 0x16c
mov eax, dword [0x40a018]
xor eax, esp
mov dword [esp + 0x168], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x40a018]
xor eax, esp
push eax
lea eax, [esp + 0x180]
mov dword fs:[0], eax
push 1
push 3
lea ecx, [esp + 0x3c]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_int_]
push 0x4073e4
mov dword [esp + 0x18c], 0
mov eax, dword [0x40a48c]
push eax
push str.backup_
lea ecx, [esp + 0x48]
push 0x40a50c
push ecx
call dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char______cdecl_std::operator___char__struct_std::char_traits_char___class_std::allocator_char___class_std::basic_ostream_char__struct_std::char_traits_char_____class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
add esp, 8
push eax
call fcn.004030a0
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___int_]
push eax
call fcn.004030a0
add esp, 8
lea edx, [esp + 0x160]
push edx
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::str_void_]
cmp dword [eax + 0x18], 0x10
jb 0x40579e
mov eax, dword [eax + 4]
jmp 0x4057a1
add eax, 4
push eax
call dword [sym.imp.MSVCR90.dll__mkdir]
add esp, 4
lea ecx, [esp + 0x160]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [0x40a4e8]
mov eax, dword [eax]
mov edi, dword [0x40a4d4]
mov ebp, eax
jmp 0x4057d0
mov esi, dword [0x40a4e8]
test edi, edi
je 0x4057e2
cmp edi, dword [0x40a4d4]
je 0x4057ec
mov ebx, dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
call ebx
jmp 0x4057f2
mov ebx, dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
cmp ebp, esi
je 0x405b3c
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::str_void_]
mov esi, eax
mov byte [esp + 0x188], 1
test edi, edi
jne 0x405837
call ebx
xor eax, eax
cmp ebp, dword [eax + 0x14]
jne 0x405822
call ebx
mov eax, dword [ebp + 8]
add eax, 0x20
mov ecx, 0x10
cmp dword [eax + 0x18], ecx
jb 0x40583b
mov eax, dword [eax + 4]
jmp 0x40583e
mov eax, dword [edi]
jmp 0x40581b
add eax, 4
cmp dword [esi + 0x18], ecx
jb 0x405848
mov ecx, dword [esi + 4]
jmp 0x40584b
lea ecx, [esi + 4]
push eax
call fcn.00405600
add esp, 4
lea ecx, [esp + 0x18]
mov byte [esp + 0x188], 0
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea edx, [esp + 0x160]
push edx
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::str_void_]
mov byte [esp + 0x188], 2
test edi, edi
jne 0x4059e0
call ebx
xor eax, eax
cmp ebp, dword [eax + 0x14]
jne 0x405893
call ebx
mov eax, dword [ebp + 8]
add eax, 0x20
push eax
lea ecx, [esp + 0x164]
call dword [0x407058]
push 0x40a49c
lea ecx, [esp + 0x148]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
mov byte [esp + 0x188], 3
test edi, edi
jne 0x4059e7
call ebx
xor eax, eax
cmp ebp, dword [eax + 0x14]
jne 0x4058d4
call ebx
mov ecx, dword [ebp + 8]
add ecx, 0x20
push ecx
lea ecx, [esp + 0x148]
call dword [0x407058]
mov eax, dword [esp + 0x164]
mov esi, 0x10
cmp dword [esp + 0x178], esi
jae 0x405904
lea eax, [esp + 0x164]
push eax
call dword [sym.imp.MSVCR90.dll__unlink]
add esp, 4
push 1
push 3
lea ecx, [esp + 0xc4]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_int_]
mov byte [esp + 0x188], 4
test edi, edi
jne 0x4059ee
call ebx
xor eax, eax
cmp ebp, dword [eax + 0x14]
jne 0x40593a
call ebx
mov edx, dword [ebp + 8]
mov ebx, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char______cdecl_std::operator___char__struct_std::char_traits_char___class_std::allocator_char___class_std::basic_ostream_char__struct_std::char_traits_char_____class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
push str..aut
add edx, 0x20
push edx
lea eax, [esp + 0xcc]
push 0x40a49c
push eax
call ebx
add esp, 8
push eax
call ebx
add esp, 8
push eax
call fcn.004030a0
mov ecx, dword [esp + 0x16c]
add esp, 8
cmp dword [esp + 0x178], esi
jae 0x405984
lea ecx, [esp + 0x164]
mov eax, dword [esp + 0x148]
cmp dword [esp + 0x15c], esi
jae 0x40599b
lea eax, [esp + 0x148]
mov esi, dword [sym.imp.MSVCR90.dll_rename]
push ecx
push eax
call esi
add esp, 8
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0xc0]
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::str_void_]
mov ecx, dword [esp + 0x148]
mov edx, 0x10
cmp dword [esp + 0x15c], edx
jae 0x4059d6
lea ecx, [esp + 0x148]
cmp dword [eax + 0x18], edx
jb 0x4059f5
mov eax, dword [eax + 4]
jmp 0x4059f8
mov eax, dword [edi]
jmp 0x40588c
mov eax, dword [edi]
jmp 0x4058cd
mov eax, dword [edi]
jmp 0x405933
add eax, 4
push ecx
push eax
call esi
add esp, 8
test eax, eax
lea ecx, [esp + 0x18]
setne bl
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
test bl, bl
jne 0x405a73
lea ecx, [esp + 0xbc]
mov byte [esp + 0x188], 3
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::vbase_dtor_void_]
lea ecx, [esp + 0x144]
mov byte [esp + 0x188], 2
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x160]
mov byte [esp + 0x188], bl
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
test edi, edi
jne 0x405a6f
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
cmp ebp, dword [eax + 0x14]
jne 0x405a67
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ebp, dword [ebp]
jmp 0x4057d0
mov eax, dword [edi]
jmp 0x405a5c
mov ecx, dword [esp + 0x148]
mov edi, 0x10
cmp dword [esp + 0x15c], edi
jae 0x405a8f
lea ecx, [esp + 0x148]
mov eax, dword [esp + 0x164]
cmp dword [esp + 0x178], edi
jae 0x405aa6
lea eax, [esp + 0x164]
push ecx
push eax
call esi
add esp, 8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, dword [esp + 0x148]
cmp dword [esp + 0x15c], edi
jae 0x405aca
lea ecx, [esp + 0x148]
push eax
push ecx
push str.cannt_update_file___s__error_d_n
call dword [sym.imp.MSVCR90.dll___iob_func]
add eax, 0x40
push eax
call dword [sym.imp.MSVCR90.dll_fprintf]
add esp, 0x10
lea ecx, [esp + 0xbc]
mov byte [esp + 0x188], 3
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::vbase_dtor_void_]
lea ecx, [esp + 0x144]
mov byte [esp + 0x188], 2
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x160]
mov byte [esp + 0x188], 0
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x34]
mov dword [esp + 0x188], 0xffffffff
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::vbase_dtor_void_]
xor al, al
jmp 0x405b53
lea ecx, [esp + 0x34]
mov dword [esp + 0x188], 0xffffffff
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_stringstream_char__struct_std::char_traits_char___class_std::allocator_char__::vbase_dtor_void_]
mov al, 1
mov ecx, dword [esp + 0x180]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x168]
xor ecx, esp
call fcn.00405b7b
add esp, 0x178
ret