Function at 0x140001290
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1c0]
sub rsp, 0x2c0
mov rax, qword [0x140008040]
xor rax, rsp
mov qword [rbp + 0x1b0], rax
mov r13, rdx
xor r12d, r12d
mov dword [rsp + 0x24], r12d
cmp ecx, 3
jge 0x140001305
lea rdx, str.Usage:__input.exe___output.crypt___key_
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140002c80
mov rcx, rax
lea rdx, [0x140002e50]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
lea rax, [r12 - 1]
jmp 0x140001931
xor edx, edx
mov r8d, 0x110
lea rcx, [rbp - 0x70]
call sub.VCRUNTIME140.dll_memset
mov rbx, qword [r13 + 8]
lea rax, [0x140000000]
lea rax, [rax + 0x5640]
mov qword [rbp - 0x70], rax
lea rcx, [rbp + 0x40]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::constructor_void____ptr64]
nop
mov dword [rsp + 0x24], 1
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbp - 0x60]
lea rcx, [rbp - 0x70]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_istream_char__struct_std::char_traits_char__::constructor_class_std::basic_streambuf_char__struct_std::char_traits_char______ptr64__bool____ptr64]
nop
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx - 0x70], rax
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rbp + rcx - 0x74], edx
lea rcx, [rbp - 0x60]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::constructor_void____ptr64]
lea rax, vtable.std::basic_filebuf_char__struct_std::char_traits_char__.0
mov qword [rbp - 0x60], rax
mov byte [rbp + 0x1c], 0
mov byte [rbp + 0x11], 0
lea rcx, [rbp - 0x60]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::_Init_void____ptr64]
mov qword [rbp + 0x20], r12
mov rax, qword [0x1400089f0]
mov qword [rbp + 0x14], rax
mov qword [rbp + 8], r12
mov r8d, 0x21
mov rdx, rbx
lea rcx, [rbp - 0x60]
call fcn.140002b10
test rax, rax
jne 0x1400013e8
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea rax, [rbp - 0x70]
add rcx, rax
xor r8d, r8d
lea edx, [r8 + 2]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool____ptr64]
nop
cmp qword [rbp + 0x20], 0
jne 0x14000141e
lea rdx, str.Error_opening_input_file
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.140002c80
mov rcx, rax
lea rdx, [0x140002e50]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
mov rbx, 0xffffffffffffffff
jmp 0x140001926
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rsp + 0x58], xmm0
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x40], r12
mov word [rsp + 0x48], 1
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
mov rax, qword [rbp + rcx - 0x28]
mov qword [rsp + 0x30], rax
test rax, rax
sete byte [rsp + 0x38]
mov byte [rsp + 0x39], 0
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x68], r12
lea rcx, [rsp + 0x58]
mov qword [rsp + 0x50], rcx
movaps xmm0, xmmword [rsp + 0x40]
movdqa xmmword [rsp + 0x40], xmm0
movaps xmm1, xmmword [rsp + 0x30]
movdqa xmmword [rsp + 0x30], xmm1
movzx esi, byte [rsp + 0x39]
mov rbx, qword [rsp + 0x30]
movzx r15d, byte [rsp + 0x48]
mov rdi, qword [rsp + 0x40]
test rax, rax
jne 0x1400014a9
movzx r14d, byte [rsp + 0x38]
jmp 0x1400014c7
test rbx, rbx
je 0x1400014c1
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_int___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::sgetc_void____ptr64]
cmp eax, 0xffffffff
je 0x1400014c1
movzx esi, al
jmp 0x1400014c4
mov rbx, r12
mov r14b, 1
test r15b, r15b
jne 0x1400014e5
test rdi, rdi
je 0x1400014df
mov rcx, rdi
call qword [sym.imp.MSVCP140.dll_public:_int___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::sgetc_void____ptr64]
cmp eax, 0xffffffff
jne 0x1400014e2
mov rdi, r12
mov r15b, 1
test rbx, rbx
jne 0x14000159a
test rdi, rdi
jne 0x1400015a3
lea rcx, [rbp - 0x60]
call fcn.140002a50
test rax, rax
jne 0x140001521
mov rax, qword [rbp - 0x70]
movsxd rcx, dword [rax + 4]
lea rax, [rbp - 0x70]
add rcx, rax
xor r8d, r8d
lea edx, [r8 + 2]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool____ptr64]
mov r14, qword [r13 + 0x18]
xorps xmm0, xmm0
movups xmmword [rsp + 0x70], xmm0
mov qword [rbp - 0x80], r12
mov qword [rbp - 0x78], r12
mov rbx, 0xffffffffffffffff
nop dword [rax]
inc rbx
cmp byte [r14 + rbx], 0
jne 0x140001540
movabs rdi, 0x7fffffffffffffff
cmp rbx, rdi
ja 0x140001961
mov qword [rbp - 0x78], 0xf
cmp rbx, 0xf
ja 0x140001617
mov qword [rbp - 0x80], rbx
mov r8, rbx
mov rdx, r14
lea rcx, [rsp + 0x70]
call sub.VCRUNTIME140.dll_memcpy
mov byte [rsp + rbx + 0x70], 0
mov rdi, qword [rbp - 0x78]
mov rbx, qword [rbp - 0x80]
mov rsi, qword [rsp + 0x70]
jmp 0x1400016ac
test rdi, rdi
jne 0x1400014f7
test r14b, r14b
jne 0x1400015c3
test rbx, rbx
je 0x1400015c0
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_int___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::sgetc_void____ptr64]
cmp eax, 0xffffffff
je 0x1400015c0
movzx esi, al
jmp 0x1400015c3
mov rbx, r12
mov byte [rsp + 0x20], sil
mov rax, qword [rsp + 0x60]
cmp rax, qword [rsp + 0x68]
je 0x1400015de
mov byte [rax], sil
inc qword [rsp + 0x60]
jmp 0x1400015f2
lea r8, [rsp + 0x20]
mov rdx, qword [rsp + 0x60]
lea rcx, [rsp + 0x58]
call fcn.140003180
test rbx, rbx
je 0x1400014c1
mov rcx, rbx
call qword [sym.imp.MSVCP140.dll_public:_int___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::sbumpc_void____ptr64]
cmp eax, 0xffffffff
je 0x1400014c1
mov byte [rsp + 0x38], 0
jmp 0x1400014a9
mov rax, rbx
or rax, 0xf
cmp rax, rdi
jbe 0x140001650
movabs rax, 0x8000000000000000
add rax, 0x27
mov rcx, rax
call fcn.1400033a0
test rax, rax
je 0x1400018c8
lea rsi, [rax + 0x27]
and rsi, 0xffffffffffffffe0
mov qword [rsi - 8], rax
jmp 0x14000168d
mov rdi, rax
mov ecx, 0x16
cmp rax, rcx
cmovb rdi, rcx
lea rcx, [rdi + 1]
cmp rcx, 0x1000
jb 0x14000167b
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x140001967
jmp 0x140001631
test rcx, rcx
je 0x14000168a
call fcn.1400033a0
mov rsi, rax
jmp 0x14000168d
mov rsi, r12
mov qword [rsp + 0x70], rsi
mov qword [rbp - 0x80], rbx
mov qword [rbp - 0x78], rdi
mov r8, rbx
mov rdx, r14
mov rcx, rsi
call sub.VCRUNTIME140.dll_memcpy
mov byte [rsi + rbx], 0
mov r8, r12
mov r9, qword [rsp + 0x58]
cmp qword [rsp + 0x60], r9
je 0x1400016f2
nop dword [rax + rax]
lea rcx, [rsp + 0x70]
cmp rdi, 0xf
cmova rcx, rsi
xor edx, edx
mov rax, r8
div rbx
movzx eax, byte [rdx + rcx]
xor byte [r9 + r8], al
inc r8
mov rax, qword [rsp + 0x60]
mov r9, qword [rsp + 0x58]
sub rax, r9
cmp r8, rax
jb 0x1400016c0
xor edx, edx
mov r8d, 0x108
lea rcx, [rbp + 0xa0]
call sub.VCRUNTIME140.dll_memset
mov rbx, qword [r13 + 0x10]
lea rax, [0x140000000]
lea rax, [rax + 0x5638]
mov qword [rbp + 0xa0], rax
lea rcx, [rbp + 0x148]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::constructor_void____ptr64]
nop
mov dword [rsp + 0x24], 3
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbp + 0xa8]
lea rcx, [rbp + 0xa0]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::constructor_class_std::basic_streambuf_char__struct_std::char_traits_char______ptr64__bool____ptr64]
nop
mov rax, qword [rbp + 0xa0]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ofstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0xa0], rax
mov rax, qword [rbp + 0xa0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xa8]
mov dword [rbp + rcx + 0x9c], edx
lea rcx, [rbp + 0xa8]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::constructor_void____ptr64]
lea rax, vtable.std::basic_filebuf_char__struct_std::char_traits_char__.0
mov qword [rbp + 0xa8], rax
mov byte [rbp + 0x124], 0
mov byte [rbp + 0x119], 0
lea rcx, [rbp + 0xa8]
call qword [sym.imp.MSVCP140.dll_protected:_void___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::_Init_void____ptr64]
mov qword [rbp + 0x128], r12
mov rax, qword [0x1400089f0]
mov qword [rbp + 0x11c], rax
mov qword [rbp + 0x110], r12
mov r8d, 0x22
mov rdx, rbx
lea rcx, [rbp + 0xa8]
call fcn.140002b10
test rax, rax
jne 0x140001811
mov rax, qword [rbp + 0xa0]
movsxd rcx, dword [rax + 4]
lea rax, [rbp + 0xa0]
add rcx, rax
xor r8d, r8d
lea edx, [r8 + 2]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool____ptr64]
nop
mov r8, qword [rsp + 0x60]
mov rdx, qword [rsp + 0x58]
sub r8, rdx
lea rcx, [rbp + 0xa0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::write_char_const____ptr64__long_long___int64_____ptr64]
lea rcx, [rbp + 0xa8]
call fcn.140002a50
test rax, rax
jne 0x14000185e
mov rax, qword [rbp + 0xa0]
movsxd rcx, dword [rax + 4]
lea rax, [rbp + 0xa0]
add rcx, rax
xor r8d, r8d
lea edx, [r8 + 2]
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool____ptr64]
lea rdx, str.File_encrypted_and_saved_to
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cout]
call fcn.140002c80
mov rcx, rax
mov rdx, qword [r13 + 0x10]
call fcn.140002c80
mov rcx, rax
lea rdx, [0x140002e50]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
mov ebx, r12d
lea rcx, [rbp + 0xa0]
call fcn.140001a30
nop
cmp rdi, 0xf
jbe 0x1400018d8
lea rdx, [rdi + 1]
mov rax, rsi
cmp rdx, 0x1000
jb 0x1400018cf
add rdx, 0x27
mov rsi, qword [rsi - 8]
sub rax, rsi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x1400018cf
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
mov rcx, rsi
call fcn.1400033dc
nop
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x140001926
mov rdx, qword [rsp + 0x68]
sub rdx, rcx
mov rax, rcx
cmp rdx, 0x1000
jb 0x140001912
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140001912
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.1400033dc
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x68], r12
lea rcx, [rbp - 0x70]
call fcn.140001970
mov eax, ebx
mov rcx, qword [rbp + 0x1b0]
xor rcx, rsp
call fcn.140003380
lea r11, [rsp + 0x2c0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.1400011b0
nop
call fcn.140001110
int3