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

Disassembly:
push r15
mov eax, 0x14b8
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.14000e3e0
sub rsp, rax
mov r12d, dword [rsp + 0x1520]
mov ebp, dword [rsp + 0x1528]
mov rsi, rcx
mov ecx, 0x1b
mov edi, r8d
mov ebx, r9d
lea rax, [rsp + 0x80]
mov dword [rsp + 0x1508], edx
mov qword [rsp + 0x58], rax
mov qword [rsp + 0x70], rax
call sym.operator_new_unsigned_long_long_
movabs rdx, 0x6867666564636261
movabs rcx, 0x706f6e6d6c6b6a69
mov qword [rsp + 0x80], 0x1a
mov qword [rax + 8], rcx
movabs rcx, 0x7a79787776757473
mov qword [rax], rdx
movabs rdx, 0x7271706f6e6d6c6b
mov qword [rax + 0x12], rcx
mov ecx, 0x1b
mov qword [rax + 0xa], rdx
mov byte [rax + 0x1a], 0
mov qword [rsp + 0x70], rax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x78], 0x1a
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x90], rax
call sym.operator_new_unsigned_long_long_
movabs rdx, 0x4847464544434241
mov qword [rsp + 0x90], rax
movabs rcx, 0x504f4e4d4c4b4a49
mov qword [rax + 8], rcx
movabs rcx, 0x5a59585756555453
mov qword [rax], rdx
movabs rdx, 0x5251504f4e4d4c4b
mov qword [rax + 0xa], rdx
mov edx, 0x3938
mov qword [rax + 0x12], rcx
mov ecx, 0x1c
mov byte [rax + 0x1a], 0
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0xb0], rax
movabs rax, 0x3736353433323130
mov qword [rsp + 0xc0], rax
lea rax, [rsp + 0xe0]
mov qword [rsp + 0xa0], 0x1a
mov qword [rsp + 0x98], 0x1a
mov word [rsp + 0xc8], dx
mov qword [rsp + 0xb8], 0xa
mov byte [rsp + 0xca], 0
mov qword [rsp + 0x50], rax
mov qword [rsp + 0xd0], rax
call sym.operator_new_unsigned_long_long_
movabs rdx, 0x2a265e2524234021
mov qword [rsp + 0xd0], rax
movabs rcx, 0x5d5b2b3d5f2d2928
mov qword [rax + 8], rcx
movabs rcx, 0x2f3f3e3c2e2c3a3b
mov qword [rax], rdx
movabs rdx, 0x7c7d7b5d5b2b3d5f
mov qword [rax + 0xb], rdx
mov qword [rax + 0x13], rcx
mov byte [rax + 0x1b], 0
lea rax, [rsp + 0x100]
mov qword [rsp + 0xe0], 0x1b
mov qword [rsp + 0xd8], 0x1b
mov qword [rsp + 0x30], rax
mov qword [rsp + 0xf0], rax
mov qword [rsp + 0xf8], 0
mov byte [rsp + 0x100], 0
test dil, dil
jne 0x140002a8b
test bl, bl
jne 0x140002acb
test r12b, r12b
jne 0x140002b61
test bpl, bpl
jne 0x1400029eb
lea rax, [rsp + 0x110]
lea rbx, [rsp + 0xae0]
mov dword [rsp + 0xaf0], 0x61666564
lea rdi, [rsp + 0xaf0]
mov rdx, rbx
mov rcx, rax
mov dword [rsp + 0xaf3], 0x746c7561
mov qword [rsp + 0xae0], rdi
mov qword [rsp + 0xae8], 7
mov byte [rsp + 0xaf7], 0
mov qword [rsp + 0x48], rax
call method.std::random_device._M_init_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov rcx, qword [rsp + 0xae0]
cmp rcx, rdi
je 0x1400025f9
mov rax, qword [rsp + 0xaf0]
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov rcx, qword [rsp + 0x48]
call method.std::random_device._M_getval__
mov dword [rsp + 0xae0], eax
mov edx, eax
mov ecx, 1
nop dword [rax]
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul eax, eax, 0x6c078965
lea edx, [rax + rcx]
mov dword [rbx + rcx*4], edx
add rcx, 1
cmp rcx, 0x270
jne 0x140002618
lea rax, [rsi + 0x10]
mov rbp, qword [rsp + 0xf8]
mov byte [rsi + 0x10], 0
mov qword [rsp + 0x20], rax
mov qword [rsi], rax
mov eax, dword [rsp + 0x1508]
mov r14d, ebp
mov qword [rsp + 0x14a0], 0x270
mov qword [rsi + 8], 0
test eax, eax
jle 0x1400028f3
mov eax, r14d
xor r13d, r13d
mov ebp, ebp
neg eax
mov dword [rsp + 0x44], eax
test r14d, r14d
je 0x1400027cd
nop dword [rax]
cmp rcx, 0x26f
ja 0x140002898
lea r8, [rcx + 1]
mov ecx, dword [rsp + rcx*4 + 0xae0]
mov qword [rsp + 0x14a0], r8
mov eax, ecx
shr eax, 0xb
xor ecx, eax
mov eax, ecx
shl eax, 7
and eax, 0x9d2c5680
xor ecx, eax
mov eax, ecx
shl eax, 0xf
and eax, 0xefc60000
xor ecx, eax
mov eax, ecx
shr eax, 0x12
xor ecx, eax
imul rcx, rbp
cmp ecx, r14d
jae 0x140002763
mov eax, dword [rsp + 0x44]
xor edx, edx
div r14d
mov r9d, edx
cmp ecx, edx
jb 0x14000273c
jmp 0x140002763
lea r8, [rax + 1]
mov eax, dword [rsp + rax*4 + 0xae0]
mov qword [rsp + 0x14a0], r8
mov edx, eax
shr edx, 0xb
xor eax, edx
mov edx, eax
shl edx, 7
and edx, 0x9d2c5680
xor eax, edx
mov edx, eax
shl edx, 0xf
and edx, 0xefc60000
xor eax, edx
mov edx, eax
shr edx, 0x12
xor eax, edx
imul rax, rbp
cmp eax, r9d
jae 0x140002760
mov rax, r8
cmp r8, 0x26f
jbe 0x1400026f8
mov rcx, rbx
call sym._ZNSt23mersenne_twister_engineIjLy32ELy624ELy397ELy31ELj2567483615ELy11ELj4294967295ELy7ELj2636928640ELy15ELj4022730752ELy18EL
mov rax, qword [rsp + 0x14a0]
jmp 0x1400026f8
mov rcx, rax
shr rcx, 0x20
mov rax, qword [rsp + 0xf0]
mov rdi, qword [rsi + 8]
movsxd rcx, ecx
mov r9, qword [rsi]
movzx r15d, byte [rax + rcx]
lea r12, [rdi + 1]
cmp qword [rsp + 0x20], r9
je 0x1400028b0
mov rax, qword [rsi + 0x10]
cmp rax, r12
jb 0x140002820
mov byte [r9 + rdi], r15b
mov rax, qword [rsi]
add r13d, 1
mov qword [rsi + 8], r12
mov byte [rax + rdi + 1], 0
cmp dword [rsp + 0x1508], r13d
je 0x1400028f3
mov rcx, qword [rsp + 0x14a0]
test r14d, r14d
jne 0x140002690
cmp rcx, 0x26f
ja 0x1400029c0
lea rax, [rcx + 1]
mov ecx, dword [rsp + rcx*4 + 0xae0]
mov qword [rsp + 0x14a0], rax
mov eax, ecx
shr eax, 0xb
xor ecx, eax
mov eax, ecx
shl eax, 7
and eax, 0x9d2c5680
xor ecx, eax
mov eax, ecx
shl eax, 0xf
and eax, 0xefc60000
xor ecx, eax
mov eax, ecx
shr eax, 0x12
xor ecx, eax
jmp 0x140002767
test r12, r12
js 0x14000308b
add rax, rax
mov qword [rsp + 0x28], rax
cmp r12, rax
jb 0x140002a7d
mov rcx, rdi
add rcx, 2
js 0x140002a86
mov qword [rsp + 0x28], r12
call sym.operator_new_unsigned_long_long_
mov r10, qword [rsi]
mov r9, rax
test rdi, rdi
jne 0x1400029d5
cmp qword [rsp + 0x20], r10
je 0x140002881
mov rax, qword [rsi + 0x10]
mov rcx, r10
mov qword [rsp + 0x38], r9
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov r9, qword [rsp + 0x38]
mov rax, qword [rsp + 0x28]
mov qword [rsi], r9
mov qword [rsi + 0x10], rax
jmp 0x14000279a
mov rcx, rbx
call sym._ZNSt23mersenne_twister_engineIjLy32ELy624ELy397ELy31ELj2567483615ELy11ELj4294967295ELy7ELj2636928640ELy15ELj4022730752ELy18EL
mov rcx, qword [rsp + 0x14a0]
jmp 0x14000269d
cmp r12, 0x10
jne 0x14000279a
mov ecx, 0x1f
call sym.operator_new_unsigned_long_long_
mov qword [rsp + 0x28], 0x1e
mov r10, qword [rsi]
mov r9, rax
mov rdx, r10
mov rcx, r9
mov r8, rdi
mov qword [rsp + 0x38], r10
call sym.memcpy
mov r10, qword [rsp + 0x38]
mov r9, rax
jmp 0x140002860
mov rcx, qword [rsp + 0x48]
call method.std::random_device._M_fini__
mov rcx, qword [rsp + 0xf0]
mov rax, qword [rsp + 0x30]
cmp rcx, rax
je 0x140002920
mov rax, qword [rsp + 0x100]
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov rcx, qword [rsp + 0xd0]
mov rax, qword [rsp + 0x50]
cmp rcx, rax
je 0x140002943
mov rax, qword [rsp + 0xe0]
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov rcx, qword [rsp + 0xb0]
mov rax, qword [rsp + 0x68]
cmp rcx, rax
je 0x140002966
mov rax, qword [rsp + 0xc0]
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov rcx, qword [rsp + 0x90]
mov rax, qword [rsp + 0x60]
cmp rcx, rax
je 0x140002989
mov rax, qword [rsp + 0xa0]
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov rcx, qword [rsp + 0x70]
mov rax, qword [rsp + 0x58]
cmp rcx, rax
je 0x1400029a9
mov rax, qword [rsp + 0x80]
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov rax, rsi
add rsp, 0x14b8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rbx
call sym._ZNSt23mersenne_twister_engineIjLy32ELy624ELy397ELy31ELj2567483615ELy11ELj4294967295ELy7ELj2636928640ELy15ELj4022730752ELy18EL
mov rcx, qword [rsp + 0x14a0]
jmp 0x1400027da
cmp rdi, 1
jne 0x1400028d3
movzx eax, byte [r10]
mov byte [r9], al
jmp 0x140002860
mov rdi, qword [rsp + 0xf8]
mov rbp, qword [rsp + 0xd8]
movabs rax, 0x7fffffffffffffff
mov r13, qword [rsp + 0xd0]
sub rax, rdi
cmp rax, rbp
jb 0x140003067
mov r14, qword [rsp + 0xf0]
mov rax, qword [rsp + 0x30]
lea rbx, [rbp + rdi]
cmp r14, rax
je 0x140002eb7
mov r12, qword [rsp + 0x100]
cmp r12, rbx
jb 0x140002de5
test rbp, rbp
je 0x140002a6b
lea rcx, [r14 + rdi]
cmp rbp, 1
je 0x140002fb0
mov r8, rbp
mov rdx, r13
call sym.memcpy
mov r14, qword [rsp + 0xf0]
mov qword [rsp + 0xf8], rbx
mov byte [r14 + rbx], 0
jmp 0x140002581
test rax, rax
jns 0x140003007
call method.std.__throw_bad_alloc__
mov rdi, qword [rsp + 0x78]
mov r13, qword [rsp + 0x70]
test rdi, rdi
js 0x140003037
cmp rdi, 0xf
ja 0x140002bf2
test rdi, rdi
jne 0x140002e9a
mov r15, qword [rsp + 0x30]
mov qword [rsp + 0xf8], rdi
mov byte [r15 + rdi], 0
test bl, bl
je 0x14000256f
mov rdi, qword [rsp + 0xf8]
mov r13, qword [rsp + 0x98]
movabs rax, 0x7fffffffffffffff
mov r14, qword [rsp + 0x90]
sub rax, rdi
cmp rax, r13
jb 0x140003073
mov r9, qword [rsp + 0xf0]
mov rax, qword [rsp + 0x30]
lea rbx, [r13 + rdi]
cmp r9, rax
je 0x140002f11
mov rax, qword [rsp + 0x100]
cmp rax, rbx
jb 0x140002c55
test r13, r13
je 0x140002b4b
lea rcx, [r9 + rdi]
cmp r13, 1
je 0x140002fc4
mov r8, r13
mov rdx, r14
call sym.memcpy
mov r9, qword [rsp + 0xf0]
mov qword [rsp + 0xf8], rbx
mov byte [r9 + rbx], 0
test r12b, r12b
je 0x140002578
mov rdi, qword [rsp + 0xf8]
mov r12, qword [rsp + 0xb8]
movabs rax, 0x7fffffffffffffff
mov r14, qword [rsp + 0xb0]
sub rax, rdi
cmp rax, r12
jb 0x14000307f
mov r15, qword [rsp + 0xf0]
mov rax, qword [rsp + 0x30]
lea rbx, [r12 + rdi]
cmp r15, rax
je 0x140002ee4
mov r13, qword [rsp + 0x100]
cmp r13, rbx
jb 0x140002d29
test r12, r12
je 0x140002be0
lea rcx, [r15 + rdi]
cmp r12, 1
je 0x140002fe8
mov r8, r12
mov rdx, r14
call sym.memcpy
mov r15, qword [rsp + 0xf0]
mov qword [rsp + 0xf8], rbx
mov byte [r15 + rbx], 0
jmp 0x140002578
cmp rdi, 0x1d
jbe 0x140002f3e
mov rcx, rdi
mov r14, rdi
add rcx, 1
js 0x140003032
call sym.operator_new_unsigned_long_long_
mov r15, rax
test r13, r13
jne 0x140002f4e
mov rcx, qword [rsp + 0xf0]
mov rax, qword [rsp + 0x30]
cmp rcx, rax
je 0x140002c40
mov rax, qword [rsp + 0x100]
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov qword [rsp + 0xf0], r15
mov qword [rsp + 0x100], r14
jmp 0x140002ab6
test rbx, rbx
js 0x14000304f
lea r15, [rax + rax]
cmp rbx, r15
jb 0x140002f9e
mov rcx, rbx
mov r15, rbx
add rcx, 1
js 0x140002fab
call sym.operator_new_unsigned_long_long_
mov r10, qword [rsp + 0xf0]
mov r9, rax
test rdi, rdi
je 0x140002cb5
cmp rdi, 1
je 0x140002ffb
mov rdx, r10
mov r8, rdi
mov rcx, rax
mov qword [rsp + 0x20], r10
call sym.memcpy
mov r10, qword [rsp + 0x20]
mov r9, rax
test r14, r14
je 0x140002cec
test r13, r13
je 0x140002cec
lea rcx, [r9 + rdi]
cmp r13, 1
je 0x140003027
mov r8, r13
mov rdx, r14
mov qword [rsp + 0x28], r9
mov qword [rsp + 0x20], r10
call sym.memcpy
mov r9, qword [rsp + 0x28]
mov r10, qword [rsp + 0x20]
mov rax, qword [rsp + 0x30]
cmp r10, rax
je 0x140002d14
mov rax, qword [rsp + 0x100]
mov rcx, r10
mov qword [rsp + 0x20], r9
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov r9, qword [rsp + 0x20]
mov qword [rsp + 0xf0], r9
mov qword [rsp + 0x100], r15
jmp 0x140002b4b
test rbx, rbx
js 0x140003043
add r13, r13
cmp rbx, r13
jb 0x140002f8c
mov rcx, rbx
mov r13, rbx
add rcx, 1
js 0x140002f99
call sym.operator_new_unsigned_long_long_
mov r9, qword [rsp + 0xf0]
mov r15, rax
test rdi, rdi
je 0x140002d85
cmp rdi, 1
je 0x14000301b
mov rdx, r9
mov r8, rdi
mov rcx, rax
mov qword [rsp + 0x20], r9
call sym.memcpy
mov r9, qword [rsp + 0x20]
test r14, r14
je 0x140002db2
test r12, r12
je 0x140002db2
lea rcx, [r15 + rdi]
cmp r12, 1
je 0x140003010
mov r8, r12
mov rdx, r14
mov qword [rsp + 0x20], r9
call sym.memcpy
mov r9, qword [rsp + 0x20]
mov rax, qword [rsp + 0x30]
cmp r9, rax
je 0x140002dd0
mov rax, qword [rsp + 0x100]
mov rcx, r9
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov qword [rsp + 0xf0], r15
mov qword [rsp + 0x100], r13
jmp 0x140002be0
test rbx, rbx
js 0x14000305b
add r12, r12
cmp rbx, r12
jb 0x140002f61
mov rcx, rbx
mov r12, rbx
add rcx, 1
js 0x140002f6f
call sym.operator_new_unsigned_long_long_
mov r15, qword [rsp + 0xf0]
mov r14, rax
test rdi, rdi
je 0x140002e37
cmp rdi, 1
je 0x140002f80
mov r8, rdi
mov rdx, r15
mov rcx, rax
call sym.memcpy
test r13, r13
je 0x140002e5a
test rbp, rbp
je 0x140002e5a
lea rcx, [r14 + rdi]
cmp rbp, 1
je 0x140002f74
mov r8, rbp
mov rdx, r13
call sym.memcpy
mov rax, qword [rsp + 0x30]
cmp r15, rax
je 0x140002e78
mov rax, qword [rsp + 0x100]
mov rcx, r15
lea rdx, [rax + 1]
call sym.operator_delete_void__unsigned_long_long_
mov qword [rsp + 0xf0], r14
mov qword [rsp + 0x100], r12
mov qword [rsp + 0xf8], rbx
mov byte [r14 + rbx], 0
jmp 0x140002581
cmp rdi, 1
je 0x140002fd7
mov rcx, rax
mov r8, rdi
mov rdx, r13
call sym.memcpy
jmp 0x140002ab1
cmp rbx, 0xf
jbe 0x140002a45
test rbx, rbx
js 0x14000305b
cmp rbx, 0x1d
ja 0x140002dfa
mov ecx, 0x1f
mov r12d, 0x1e
jmp 0x140002e0a
cmp rbx, 0xf
jbe 0x140002bba
test rbx, rbx
js 0x140003043
cmp rbx, 0x1d
ja 0x140002d3e
mov ecx, 0x1f
mov r13d, 0x1e
jmp 0x140002d4e
cmp rbx, 0xf
jbe 0x140002b25
test rbx, rbx
js 0x14000304f
cmp rbx, 0x1d
ja 0x140002c6b
mov ecx, 0x1f
mov r15d, 0x1e
jmp 0x140002c7b
mov r14d, 0x1e
mov ecx, 0x1f
jmp 0x140002c0c
mov r8, rdi
mov rdx, r13
mov rcx, rax
call sym.memcpy
jmp 0x140002c1d
lea rcx, [r12 + 1]
test r12, r12
jns 0x140002e0a
call method.std.__throw_bad_alloc__
movzx eax, byte [r13]
mov byte [rcx], al
jmp 0x140002e5a
movzx eax, byte [r15]
mov byte [r14], al
jmp 0x140002e37
lea rcx, [r13 + 1]
test r13, r13
jns 0x140002d4e
call method.std.__throw_bad_alloc__
lea rcx, [r15 + 1]
test r15, r15
jns 0x140002c7b
call method.std.__throw_bad_alloc__
movzx eax, byte [r13]
mov byte [rcx], al
mov r14, qword [rsp + 0xf0]
jmp 0x140002a6b
movzx eax, byte [r14]
mov byte [rcx], al
mov r9, qword [rsp + 0xf0]
jmp 0x140002b4b
movzx eax, byte [r13]
mov byte [rsp + 0x100], al
jmp 0x140002ab1
movzx eax, byte [r14]
mov byte [rcx], al
mov r15, qword [rsp + 0xf0]
jmp 0x140002be0
movzx eax, byte [r10]
mov byte [r9], al
jmp 0x140002cb5
lea rcx, [rax + 1]
jmp 0x14000284c
movzx eax, byte [r14]
mov byte [rcx], al
jmp 0x140002db2
movzx eax, byte [r9]
mov byte [r15], al
jmp 0x140002d85
movzx eax, byte [r14]
mov byte [rcx], al
jmp 0x140002cec
call method.std.__throw_bad_alloc__
lea rcx, section..rdata
call method.std.__throw_length_error_char_const_
lea rcx, [0x1400c0015]
call method.std.__throw_length_error_char_const_
lea rcx, [0x1400c0015]
call method.std.__throw_length_error_char_const_
lea rcx, [0x1400c0015]
call method.std.__throw_length_error_char_const_
lea rcx, section..rdata
call method.std.__throw_length_error_char_const_
lea rcx, section..rdata
call method.std.__throw_length_error_char_const_
lea rcx, section..rdata
call method.std.__throw_length_error_char_const_
lea rcx, [0x1400c0015]
call method.std.__throw_length_error_char_const_
mov rbx, rax
mov rcx, qword [rsp + 0x48]
call method.std::random_device._M_fini__
lea rcx, [rsp + 0xf0]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea rcx, [rsp + 0xd0]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea rcx, [rsp + 0xb0]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea rcx, [rsp + 0x90]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
lea rcx, [rsp + 0x70]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
mov rcx, rbx
call sym._Unwind_Resume
mov rsi, rax
mov rcx, rbx
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_dispose__
mov rbx, rsi
jmp 0x1400030a4