Function at 0x140001800
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1550]
mov eax, 0x1650
call fcn.140007b20
sub rsp, rax
mov rax, qword [section..data]
xor rax, rsp
mov qword [rbp + 0x1540], rax
mov rdi, rdx
mov qword [rsp + 0x40], rdx
mov rbx, rcx
xor edx, edx
mov r8d, 0x110
lea rcx, [rsp + 0x50]
call sub.VCRUNTIME140.dll_memset
mov rdx, rbx
lea rcx, [rsp + 0x50]
call fcn.140004ad0
nop
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, [rsp + 0x50]
add rcx, rax
call qword [sym.imp.MSVCP140.dll_public:_bool___cdecl_std::ios_base::operator__void_const___ptr64]
test al, al
je 0x1400018bd
lea rdx, str.Error:_Unable_to_open_input_file:
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.140005880
mov r8, qword [rbx + 0x10]
cmp qword [rbx + 0x18], 0xf
jbe 0x14000189d
mov rbx, qword [rbx]
mov rdx, rbx
mov rcx, rax
call fcn.140006250
lea rdx, [0x140005a60]
mov rcx, rax
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]
jmp 0x140001e28
xorps xmm0, xmm0
xor eax, eax
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x170], xmm1
mov qword [rbp + 0x180], rax
movups xmmword [rbp + 0x188], xmm0
movdqa xmm1, xmmword [0x140009c90]
movdqu xmmword [rbp + 0x198], xmm1
mov byte [rbp + 0x188], al
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, [rsp + 0x50]
add rcx, rax
mov dl, 0xa
call qword [sym.imp.MSVCP140.dll_public:_char___cdecl_std::basic_ios_char__struct_std::char_traits_char__::widen_char_const___ptr64]
movzx r8d, al
lea rdx, [rbp + 0x188]
lea rcx, [rsp + 0x50]
call fcn.140006410
mov rcx, qword [rax]
movsxd rcx, dword [rcx + 4]
add rcx, rax
call qword [sym.imp.MSVCP140.dll_public:_bool___cdecl_std::ios_base::operator_bool_void_const___ptr64]
test al, al
je 0x1400019c5
nop word [rax + rax]
mov rax, qword [rbp + 0x178]
cmp rax, qword [rbp + 0x180]
je 0x140001969
lea rdx, [rbp + 0x188]
mov rcx, rax
call fcn.140004de0
add qword [rbp + 0x178], 0x20
jmp 0x14000197f
lea r8, [rbp + 0x188]
mov rdx, rax
lea rcx, [rbp + 0x170]
call fcn.1400065b0
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, [rsp + 0x50]
add rcx, rax
mov dl, 0xa
call qword [sym.imp.MSVCP140.dll_public:_char___cdecl_std::basic_ios_char__struct_std::char_traits_char__::widen_char_const___ptr64]
movzx r8d, al
lea rdx, [rbp + 0x188]
lea rcx, [rsp + 0x50]
call fcn.140006410
mov rcx, qword [rax]
movsxd rcx, dword [rcx + 4]
add rcx, rax
call qword [sym.imp.MSVCP140.dll_public:_bool___cdecl_std::ios_base::operator_bool_void_const___ptr64]
test al, al
jne 0x140001940
lea rcx, [rsp + 0x60]
call fcn.140005280
test rax, rax
jne 0x1400019f3
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, [rsp + 0x50]
add rcx, rax
xor r8d, r8d
mov edx, 2
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool____ptr64]
mov rax, qword [rbp + 0x178]
sub rax, qword [rbp + 0x170]
sar rax, 5
cmp rax, 0x186a0
ja 0x140001b1b
xor edx, edx
mov r8d, 0x108
lea rcx, [rbp + 0x1b0]
call sub.VCRUNTIME140.dll_memset
mov rdx, rdi
lea rcx, [rbp + 0x1b0]
call fcn.140003cd0
nop
mov rax, qword [rbp + 0x1b0]
movsxd rcx, dword [rax + 4]
lea rax, [rbp + 0x1b0]
add rcx, rax
call qword [sym.imp.MSVCP140.dll_public:_bool___cdecl_std::ios_base::operator__void_const___ptr64]
test al, al
je 0x140001a92
lea rdx, str.Error:_Unable_to_open_output_file:
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.140005880
mov r8, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0xf
jbe 0x140001a75
mov rdi, qword [rdi]
mov rdx, rdi
mov rcx, rax
call fcn.140006250
lea rdx, [0x140005a60]
mov rcx, rax
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]
jmp 0x140001b0f
mov rdi, qword [rbp + 0x178]
mov rbx, qword [rbp + 0x170]
cmp rbx, rdi
je 0x140001ada
mov rdx, rbx
cmp qword [rbx + 0x18], 0xf
jbe 0x140001ab2
mov rdx, qword [rbx]
mov r8, qword [rbx + 0x10]
lea rcx, [rbp + 0x1b0]
call fcn.140006250
lea rdx, [0x140009740]
mov rcx, rax
call fcn.140005880
add rbx, 0x20
cmp rbx, rdi
jne 0x140001aa5
lea rcx, [rbp + 0x1b8]
call fcn.140005280
test rax, rax
jne 0x140001b0f
mov rax, qword [rbp + 0x1b0]
movsxd rcx, dword [rax + 4]
lea rax, [rbp + 0x1b0]
add rcx, rax
xor r8d, r8d
mov edx, 2
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool____ptr64]
nop
lea rcx, [rbp + 0x1b0]
jmp 0x140001d6d
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov r8d, 0xffffffff
mov dword [rbp + 0x1534], r8d
mov dword [rbp + 0x1b4], eax
mov r15d, 1
mov edx, r15d
nop dword [rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4 + 0x1b4], eax
inc rdx
cmp rdx, 0x270
jb 0x140001b40
mov dword [rbp + 0x1b0], 0x270
mov rsi, 0xffffffffffffffff
mov r14d, 0x40
nop dword [rax]
lea r14, [r14 - 1]
shr rsi, 1
cmp rsi, r8
ja 0x140001b80
mov rcx, qword [rbp + 0x170]
mov qword [rsp + 0x30], rcx
mov rax, qword [rbp + 0x178]
mov qword [rsp + 0x38], rax
cmp rcx, rax
je 0x140001c81
lea r13, [rcx + 0x20]
cmp r13, rax
je 0x140001c81
nop word [rax + rax]
lea r12, [r15 + 1]
xor ebx, ebx
xor edi, edi
test r15, r15
je 0x140001c08
nop dword [rax]
lea rcx, [r14 - 1]
shl rbx, cl
add rbx, rbx
nop word [rax + rax]
lea rcx, [rbp + 0x1b0]
call fcn.140006970
mov eax, eax
cmp rax, rsi
ja 0x140001be0
or rbx, rax
lea rcx, [r14 - 1]
shl rdi, cl
add rdi, rdi
or rdi, rsi
cmp rdi, r15
jb 0x140001bd0
xor edx, edx
mov rax, rdi
div r12
mov rcx, rax
xor edx, edx
mov rax, rbx
div r12
cmp rax, rcx
jb 0x140001c2d
xor edx, edx
mov rax, rdi
div r12
cmp rdx, r15
jne 0x140001bc4
xor edx, edx
mov rax, rbx
div r12
cmp rdx, r15
je 0x140001c6a
shl rdx, 5
add rdx, qword [rsp + 0x30]
cmp r13, rdx
je 0x140001c6a
movups xmm2, xmmword [r13]
movups xmm3, xmmword [r13 + 0x10]
movups xmm0, xmmword [rdx]
movups xmmword [r13], xmm0
movups xmm1, xmmword [rdx + 0x10]
movups xmmword [r13 + 0x10], xmm1
movups xmmword [rdx], xmm2
movups xmmword [rdx + 0x10], xmm3
mov r15, r12
add r13, 0x20
cmp r13, qword [rsp + 0x38]
jne 0x140001bc0
mov rdi, qword [rsp + 0x40]
xor edx, edx
mov r8d, 0x108
lea rcx, [rbp + 0x60]
call sub.VCRUNTIME140.dll_memset
mov rdx, rdi
lea rcx, [rbp + 0x60]
call fcn.140003cd0
nop
mov rax, qword [rbp + 0x60]
movsxd rcx, dword [rax + 4]
lea rax, [rbp + 0x60]
add rcx, rax
call qword [sym.imp.MSVCP140.dll_public:_bool___cdecl_std::ios_base::operator__void_const___ptr64]
test al, al
je 0x140001cf6
lea rdx, str.Error:_Unable_to_open_output_file:
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.140005880
mov r8, qword [rdi + 0x10]
cmp qword [rdi + 0x18], 0xf
jbe 0x140001cd9
mov rdi, qword [rdi]
mov rdx, rdi
mov rcx, rax
call fcn.140006250
lea rdx, [0x140005a60]
mov rcx, rax
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]
jmp 0x140001d69
xor ebx, ebx
nop dword [rax + rax]
mov rdx, qword [rbp + 0x170]
add rdx, rbx
mov r8, qword [rdx + 0x10]
cmp qword [rdx + 0x18], 0xf
jbe 0x140001d18
mov rdx, qword [rdx]
lea rcx, [rbp + 0x60]
call fcn.140006250
lea rdx, [0x140009740]
mov rcx, rax
call fcn.140005880
add rbx, 0x20
cmp rbx, 0x30d400
jl 0x140001d00
lea rcx, [rbp + 0x68]
call fcn.140005280
test rax, rax
jne 0x140001d69
mov rax, qword [rbp + 0x60]
movsxd rcx, dword [rax + 4]
lea rax, [rbp + 0x60]
add rcx, rax
xor r8d, r8d
mov edx, 2
call qword [sym.imp.MSVCP140.dll_public:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::setstate_int__bool____ptr64]
nop
lea rcx, [rbp + 0x60]
call fcn.140001ef0
nop
mov rdx, qword [rbp + 0x1a0]
cmp rdx, 0xf
jbe 0x140001db8
inc rdx
mov rcx, qword [rbp + 0x188]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140001db2
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140001db2
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140006c0c
nop
mov rcx, qword [rbp + 0x170]
test rcx, rcx
je 0x140001e28
mov rdx, qword [rbp + 0x178]
call fcn.140005cb0
mov rdx, qword [rbp + 0x180]
mov rcx, qword [rbp + 0x170]
sub rdx, rcx
and rdx, 0xffffffffffffffe0
mov rax, rcx
cmp rdx, 0x1000
jb 0x140001e0d
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140001e0d
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140006c0c
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x170], xmm0
mov qword [rbp + 0x180], 0
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x50], rax
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rsp + rcx + 0x4c], edx
lea rax, vtable.std::basic_filebuf_char__struct_std::char_traits_char__.0
mov qword [rsp + 0x60], rax
cmp qword [rbp - 0x20], 0
je 0x140001e8b
lea rcx, [rbp - 0x30]
mov rax, qword [rsp + 0x78]
cmp qword [rax], rcx
jne 0x140001e8b
mov rdx, qword [rbp - 0x10]
mov rcx, qword [rbp - 0x18]
mov qword [rax], rcx
mov rax, qword [rbp - 0x68]
mov qword [rax], rcx
sub edx, ecx
mov rax, qword [rbp - 0x50]
mov dword [rax], edx
cmp byte [rbp - 0x24], 0
je 0x140001e9b
lea rcx, [rsp + 0x60]
call fcn.140005280
lea rcx, [rsp + 0x60]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_streambuf_char__struct_std::char_traits_char__::destructor_void____ptr64]
nop
lea rcx, [rsp + 0x68]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_istream_char__struct_std::char_traits_char__::destructor_void____ptr64]
lea rcx, [rbp]
call qword [sym.imp.MSVCP140.dll_public_virtual:_void___cdecl_std::basic_ios_char__struct_std::char_traits_char__::destructor_void____ptr64]
mov rcx, qword [rbp + 0x1540]
xor rcx, rsp
call fcn.140006bb0
mov rbx, qword [rsp + 0x16a0]
add rsp, 0x1650
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret