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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xc8
mov rsi, rcx
mov ecx, 0xb60
call sym.operator_new_unsigned_long_long_
mov r8d, 0xb60
xor edx, edx
mov rcx, rax
mov rbx, rax
call sym.memset
movdqa xmm0, xmmword [0x00522270]
movabs rax, 0x403f800000
mov qword [rbx + 0x20], 0x3f4ccccd
mov qword [rbx + 0x28], rax
mov ecx, 6
movabs rax, 0x3dcccccd40a00000
movups xmmword [rbx], xmm0
movaps xmm0, xmmword [str.33s_]
mov qword [rbx + 0x30], 0x3f800000
movlps qword [rbx + 0x10], xmm0
movhps qword [rbx + 0x18], xmm0
mov qword [rbx + 0x40], rax
mov dword [rbx + 0x4c], 0xffffffff
call sym.operator_new_unsigned_long_long_
lea rdi, [rbx + 0x78]
mov ecx, 0x746d
mov r8d, 0x746d
movss xmm0, dword [0x00522290]
lea rdx, [rax + 6]
mov qword [rsp + 0x30], rdi
mov r9d, 1
mov qword [rbx + 0x68], rdi
lea rdi, [rbx + 0x98]
mov qword [rbx + 0x60], rdx
lea r15, [rbx + 0xe0]
mov qword [rbx + 0x58], rdx
mov edx, 0x1571
mov qword [rsp + 0x38], rdi
mov qword [rbx + 0x88], rdi
lea rdi, [rbx + 0x120]
mov word [rsp + 0x4e], cx
mov ecx, edx
mov qword [rbx + 0x50], rax
mov dword [rsp + 0x4a], 0x7079666b
mov dword [rax], 0x7079666b
mov word [rax + 4], r8w
mov qword [rbx + 0x70], 0
mov byte [rbx + 0x78], 0
mov qword [rbx + 0x90], 0
mov byte [rbx + 0x98], 0
movss dword [rbx + 0xa8], xmm0
mov qword [rbx + 0xb0], r15
mov qword [rbx + 0xb8], 1
mov qword [rbx + 0xc0], 0
mov qword [rbx + 0xc8], 0
movss dword [rbx + 0xd0], xmm0
mov qword [rbx + 0xd8], 0
mov qword [rbx + 0xe0], 0
mov qword [rbx + 0xe8], 0
mov qword [rbx + 0xf0], 0
mov qword [rbx + 0xf8], 0
mov byte [rbx + 0x100], 0
mov dword [rbx + 0x120], 0
mov qword [rbx + 0x128], 0
mov qword [rbx + 0x130], rdi
mov qword [rbx + 0x138], rdi
mov qword [rbx + 0x140], 0
mov qword [rbx + 0x148], 0
mov qword [rbx + 0x150], 0
mov qword [rbx + 0x158], 0
mov qword [rbx + 0x160], 0
mov qword [rbx + 0x168], 0
mov qword [rbx + 0x170], 0
mov qword [rbx + 0x178], 0
mov qword [rbx + 0x180], 0
mov qword [rbx + 0x188], 0
mov dword [rbx + 0x198], 0x1571
nop
mov edx, ecx
shr edx, 0x1e
xor edx, ecx
imul edx, edx, 0x6c078965
lea ecx, [rdx + r9]
mov dword [rbx + r9*4 + 0x198], ecx
add r9, 1
cmp r9, 0x270
jne 0x4366d0
mov rcx, qword [rsi + 0x20]
pxor xmm0, xmm0
movlps xmm0, qword [rsi + 0x10]
cmp rbx, rsi
movzx edx, byte [rsi + 0x48]
movhps xmm0, qword [rsi + 0x18]
mov qword [rbx + 0xb58], 0x270
movdqu xmm1, xmmword [rsi]
movlps qword [rbx + 0x10], xmm0
movhps qword [rbx + 0x18], xmm0
mov qword [rbx + 0x20], rcx
mov rcx, qword [rsi + 0x28]
mov byte [rbx + 0x48], dl
mov edx, dword [rsi + 0x4c]
movups xmmword [rbx], xmm1
mov qword [rbx + 0x28], rcx
mov rcx, qword [rsi + 0x30]
mov dword [rbx + 0x4c], edx
mov qword [rbx + 0x30], rcx
mov rcx, qword [rsi + 0x38]
mov qword [rbx + 0x38], rcx
mov rcx, qword [rsi + 0x40]
mov qword [rbx + 0x40], rcx
je 0x43677c
mov r13, qword [rsi + 0x50]
mov rbp, qword [rsi + 0x58]
sub rbp, r13
cmp rbp, 6
ja 0x436cc0
lea r12, [rax + rbp]
test rbp, rbp
jne 0x436ee0
mov qword [rbx + 0x58], r12
lea rdx, [rsi + 0x68]
lea rcx, [rbx + 0x68]
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_assign_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
lea rdx, [rsi + 0x88]
lea rcx, [rbx + 0x88]
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_assign_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
movss xmm0, dword [rsi + 0xa8]
lea rdx, [rsi + 0xb0]
lea rcx, [rbx + 0xb0]
movss dword [rbx + 0xa8], xmm0
call fcn.004a1780
lea rdx, [rsi + 0xe8]
lea rcx, [rbx + 0xe8]
call method.std::vector_int__std::allocator_int___.operator_std::vector_int__std::allocator_int____const_
movzx eax, byte [rsi + 0x100]
mov qword [rbx + 0x110], 0
cmp qword [rsi + 0x70], 0
mov byte [rbx + 0x100], al
je 0x436c1c
mov rdx, qword [rsi + 0x68]
lea rbp, [rsp + 0x70]
mov rcx, rbp
call method.grammar_parser.parse_char_const_
mov r13, qword [rbx + 0x128]
lea rax, [rbx + 0x118]
mov qword [rsp + 0x28], rax
test r13, r13
je 0x436861
mov rcx, qword [rsp + 0x28]
mov rdx, qword [r13 + 0x18]
call sym._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE8_M_er
mov rcx, qword [r13 + 0x20]
lea rax, [r13 + 0x30]
mov r12, qword [r13 + 0x10]
cmp rcx, rax
je 0x436854
call sym.operator_delete_void_
mov rcx, r13
call sym.operator_delete_void_
test r12, r12
je 0x436861
mov r13, r12
jmp 0x43681e
mov rcx, r13
call sym.operator_delete_void_
test r12, r12
jne 0x43684f
mov rax, qword [rsp + 0x80]
mov qword [rbx + 0x130], rdi
mov qword [rbx + 0x128], 0
mov qword [rbx + 0x138], rdi
mov qword [rbx + 0x140], 0
test rax, rax
je 0x436900
mov edx, dword [rsp + 0x78]
mov qword [rbx + 0x128], rax
mov dword [rbx + 0x120], edx
mov rdx, qword [rsp + 0x88]
mov qword [rbx + 0x130], rdx
mov rdx, qword [rsp + 0x90]
mov qword [rbx + 0x138], rdx
mov qword [rax + 8], rdi
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0x80], 0
mov qword [rsp + 0x98], 0
mov qword [rbx + 0x140], rax
lea rax, [rbp + 8]
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x90], rax
mov rax, qword [rsp + 0xa0]
pxor xmm0, xmm0
mov r14, qword [rbx + 0x148]
mov r13, qword [rbx + 0x150]
mov qword [rbx + 0x148], rax
mov rax, qword [rsp + 0xa8]
mov r12, r14
movaps xmmword [rsp + 0xa0], xmm0
cmp r14, r13
mov qword [rbx + 0x150], rax
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0xb0], 0
mov qword [rbx + 0x158], rax
je 0x43697b
nop dword [rax + rax]
mov rcx, qword [r12]
test rcx, rcx
je 0x436c80
call sym.operator_delete_void_
add r12, 0x18
cmp r13, r12
jne 0x436960
test r14, r14
je 0x436988
mov rcx, r14
call sym.operator_delete_void_
mov r13, qword [rsp + 0xa8]
mov r12, qword [rsp + 0xa0]
cmp r13, r12
je 0x4369c3
nop dword [rax]
mov rcx, qword [r12]
test rcx, rcx
je 0x436ca0
call sym.operator_delete_void_
add r12, 0x18
cmp r13, r12
jne 0x4369a0
mov r12, qword [rsp + 0xa0]
test r12, r12
je 0x4369d0
mov rcx, r12
call sym.operator_delete_void_
mov r13, qword [rsp + 0x80]
test r13, r13
je 0x436a1e
mov rdx, qword [r13 + 0x18]
mov rcx, rbp
call sym._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE8_M_er
mov rcx, qword [r13 + 0x20]
lea rax, [r13 + 0x30]
mov r12, qword [r13 + 0x10]
cmp rcx, rax
je 0x436a11
call sym.operator_delete_void_
mov rcx, r13
call sym.operator_delete_void_
test r12, r12
je 0x436a1e
mov r13, r12
jmp 0x4369dd
mov rcx, r13
call sym.operator_delete_void_
test r12, r12
jne 0x436a0c
mov rax, qword [rbx + 0x150]
cmp qword [rbx + 0x148], rax
je 0x436f61
mov r13, qword [rbx + 0x128]
lea rax, [rbp + 0x10]
mov dword [rsp + 0x80], 0x746f6f72
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], 4
mov byte [rsp + 0x84], 0
test r13, r13
je 0x436d60
mov r12, rdi
mov qword [rsp + 0x20], rax
jmp 0x436a7a
mov r13, qword [r13 + 0x18]
test r13, r13
je 0x436aac
mov r14, qword [r13 + 0x28]
mov rcx, qword [r13 + 0x20]
cmp r14, 4
ja 0x436d00
test r14, r14
mov rax, 0xfffffffffffffffc
jne 0x436d40
test eax, eax
js 0x436a71
mov r12, r13
mov r13, qword [r13 + 0x10]
test r13, r13
jne 0x436a7a
cmp rdi, r12
je 0x436d60
mov r9, qword [r12 + 0x28]
mov rdx, qword [r12 + 0x20]
cmp r9, 3
jbe 0x436f20
lea rcx, [rbp + 0x10]
mov r8d, 4
mov qword [rsp + 0x20], r9
call sym.memcmp
mov r9, qword [rsp + 0x20]
test eax, eax
jne 0x436b08
mov r12d, 4
sub r12, r9
cmp r12, 0x7fffffff
jg 0x436b10
cmp r12, 0xffffffff80000000
jl 0x436d60
mov eax, r12d
test eax, eax
js 0x436d60
mov rdx, qword [rsp + 0x28]
lea rcx, [rsp + 0x50]
lea r13, [rbp + 0x10]
call method.grammar_parser::parse_state.c_rules__
mov r12, qword [rbx + 0x128]
mov qword [rsp + 0x70], r13
mov dword [rsp + 0x80], 0x746f6f72
mov qword [rsp + 0x78], 4
mov byte [rsp + 0x84], 0
test r12, r12
je 0x436f55
mov r14, rdi
jmp 0x436b6a
mov r12, qword [r12 + 0x18]
test r12, r12
je 0x436b9f
mov r15, qword [r12 + 0x28]
mov rcx, qword [r12 + 0x20]
cmp r15, 4
ja 0x436e40
test r15, r15
mov rax, 0xfffffffffffffffc
jne 0x436e80
test eax, eax
js 0x436b60
mov r14, r12
mov r12, qword [r12 + 0x10]
test r12, r12
jne 0x436b6a
cmp rdi, r14
je 0x436f55
mov rdi, qword [r14 + 0x28]
mov rdx, qword [r14 + 0x20]
cmp rdi, 3
jbe 0x436ef3
lea rcx, [rbp + 0x10]
mov r8d, 4
call sym.memcmp
test eax, eax
je 0x436eb4
test eax, eax
js 0x436f55
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x58]
mov r8d, dword [r14 + 0x40]
sub rdx, rcx
sar rdx, 3
call sym.llama_grammar_init
mov rcx, qword [rsp + 0x70]
add rbp, 0x10
mov qword [rbx + 0x110], rax
cmp rcx, rbp
je 0x436c0d
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x436c1c
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x168]
mov r8, qword [rbx + 0x160]
movsxd rdx, dword [rsi]
mov rax, rcx
sub rax, r8
sar rax, 2
cmp rdx, rax
ja 0x436ea0
jae 0x436c52
lea rax, [r8 + rdx*4]
cmp rcx, rax
je 0x436c52
mov qword [rbx + 0x168], rax
mov edx, dword [rsi + 0x4c]
mov rcx, rbx
mov qword [rbx + 0x190], 0
call sym.llama_sampling_set_rng_seed_llama_sampling_context__unsigned_int_
mov rax, rbx
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
add r12, 0x18
cmp r13, r12
jne 0x436960
test r14, r14
jne 0x436980
jmp 0x436988
add r12, 0x18
cmp r13, r12
jne 0x4369a0
mov r12, qword [rsp + 0xa0]
jmp 0x4369c3
mov rcx, rbp
call sym.operator_new_unsigned_long_long_
mov r8, rbp
mov rdx, r13
mov rcx, rax
mov r12, rax
call sym.memcpy
mov rcx, qword [rbx + 0x50]
test rcx, rcx
je 0x436ce7
call sym.operator_delete_void_
mov qword [rbx + 0x50], r12
add r12, rbp
mov qword [rbx + 0x60], r12
mov qword [rbx + 0x58], r12
jmp 0x43677c
mov rdx, qword [rsp + 0x20]
mov r8d, 4
call sym.memcmp
test eax, eax
jne 0x436a9c
lea rax, [r14 - 4]
cmp rax, 0x7fffffff
jg 0x436aa0
cmp rax, 0xffffffff80000000
jl 0x436a71
jmp 0x436a9c
mov rdx, qword [rsp + 0x20]
mov r8, r14
call sym.memcmp
test eax, eax
jne 0x436a9c
lea rax, [r14 - 4]
jmp 0x436a9c
mov ecx, 2
call qword [sym.__acrt_iob_func]
lea r8, str.llama_sampling_init
lea rdx, str._s:_grammar_does_not_contain_a_root_symbol_n
mov rcx, rax
call sym.fprintf__iobuf__char_const__::_
mov rcx, qword [rbx + 0x178]
test rcx, rcx
je 0x436d92
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x160]
test rcx, rcx
je 0x436da3
call sym.operator_delete_void_
mov rdi, qword [rbx + 0x150]
mov rsi, qword [rbx + 0x148]
cmp rdi, rsi
je 0x436de1
nop word cs:[rax + rax]
mov rcx, qword [rsi]
test rcx, rcx
je 0x437040
call sym.operator_delete_void_
add rsi, 0x18
cmp rdi, rsi
jne 0x436dc0
mov rsi, qword [rbx + 0x148]
test rsi, rsi
je 0x436dee
mov rcx, rsi
call sym.operator_delete_void_
mov rsi, qword [rbx + 0x128]
mov rbp, qword [rsp + 0x28]
test rsi, rsi
je 0x437121
mov rdx, qword [rsi + 0x18]
mov rcx, rbp
call sym._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE8_M_er
mov rcx, qword [rsi + 0x20]
lea rax, [rsi + 0x30]
mov rdi, qword [rsi + 0x10]
cmp rcx, rax
je 0x437110
call sym.operator_delete_void_
mov rcx, rsi
call sym.operator_delete_void_
test rdi, rdi
je 0x437121
mov rsi, rdi
jmp 0x436e03
mov r8d, 4
mov rdx, r13
call sym.memcmp
test eax, eax
jne 0x436b8e
lea rax, [r15 - 4]
cmp rax, 0x7fffffff
jg 0x436b92
cmp rax, 0xffffffff80000000
jl 0x436b60
jmp 0x436b8e
mov r8, r15
mov rdx, r13
call sym.memcmp
test eax, eax
jne 0x436b8e
lea rax, [r15 - 4]
jmp 0x436b8e
lea rcx, [rbx + 0x160]
sub rdx, rax
call method.std::vector_int__std::allocator_int___._M_default_append_unsigned_long_long_
jmp 0x436c52
mov r12d, 4
sub r12, rdi
cmp r12, 0x7fffffff
jg 0x436bd9
cmp r12, 0xffffffff80000000
jl 0x436f55
mov eax, r12d
jmp 0x436bd1
mov r8, rbp
mov rdx, r13
mov rcx, rax
call sym.memmove
jmp 0x436778
test rdi, rdi
mov r12d, 4
je 0x436ed7
lea rcx, [rbp + 0x10]
mov r8, rdi
sub r12, rdi
call sym.memcmp
test eax, eax
je 0x436ed7
jmp 0x436bd1
test r9, r9
mov r12d, 4
je 0x436b05
lea rcx, [rbp + 0x10]
mov r8, r9
mov qword [rsp + 0x20], r9
call sym.memcmp
mov r9, qword [rsp + 0x20]
test eax, eax
jne 0x436b08
sub r12, r9
jmp 0x436b05
lea rcx, [0x00521e60]
call sym.std::__throw_out_of_range_char_const_
mov ecx, 2
call qword [sym.__acrt_iob_func]
lea r8, str.llama_sampling_init
lea rdx, str._s:_failed_to_parse_grammar_n
mov rcx, rax
call sym.fprintf__iobuf__char_const__::_
mov rcx, qword [rbx + 0x178]
test rcx, rcx
je 0x436f93
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x160]
test rcx, rcx
je 0x436fa4
call sym.operator_delete_void_
mov rdi, qword [rbx + 0x150]
mov rsi, qword [rbx + 0x148]
cmp rdi, rsi
je 0x436fdd
nop word [rax + rax]
mov rcx, qword [rsi]
test rcx, rcx
je 0x437030
call sym.operator_delete_void_
add rsi, 0x18
cmp rdi, rsi
jne 0x436fc0
mov rsi, qword [rbx + 0x148]
test rsi, rsi
je 0x436fea
mov rcx, rsi
call sym.operator_delete_void_
mov rsi, qword [rbx + 0x128]
mov rbp, qword [rsp + 0x28]
test rsi, rsi
je 0x43705f
mov rdx, qword [rsi + 0x18]
mov rcx, rbp
call sym._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE8_M_er
mov rcx, qword [rsi + 0x20]
lea rax, [rsi + 0x30]
mov rdi, qword [rsi + 0x10]
cmp rcx, rax
je 0x437052
call sym.operator_delete_void_
mov rcx, rsi
call sym.operator_delete_void_
test rdi, rdi
je 0x43705f
mov rsi, rdi
jmp 0x436ffb
add rsi, 0x18
cmp rdi, rsi
jne 0x436fc0
jmp 0x436fd6
add rsi, 0x18
cmp rdi, rsi
jne 0x436dc0
jmp 0x436dda
mov rcx, rsi
call sym.operator_delete_void_
test rdi, rdi
jne 0x43702a
mov rcx, qword [rbx + 0xe8]
test rcx, rcx
je 0x437070
call sym.operator_delete_void_
mov rcx, qword [rbx + 0xc0]
test rcx, rcx
je 0x437090
nop dword [rax]
mov rsi, qword [rcx]
call sym.operator_delete_void_
test rsi, rsi
mov rcx, rsi
jne 0x437080
mov r8, qword [rbx + 0xb8]
xor edx, edx
mov rcx, qword [rbx + 0xb0]
shl r8, 3
call sym.memset
mov rcx, qword [rbx + 0xb0]
mov qword [rbx + 0xc8], 0
mov qword [rbx + 0xc0], 0
cmp r15, rcx
je 0x4370d0
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x88]
cmp qword [rsp + 0x38], rcx
je 0x4370e3
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x68]
cmp qword [rsp + 0x30], rcx
je 0x4370f3
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x50]
test rcx, rcx
je 0x437101
call sym.operator_delete_void_
mov rcx, rbx
xor ebx, ebx
call sym.operator_delete_void_
jmp 0x436c68
mov rcx, rsi
call sym.operator_delete_void_
test rdi, rdi
jne 0x436e3a
mov rcx, qword [rbx + 0xe8]
test rcx, rcx
je 0x437132
call sym.operator_delete_void_
mov rcx, qword [rbx + 0xc0]
test rcx, rcx
je 0x437090
mov rsi, qword [rcx]
call sym.operator_delete_void_
test rsi, rsi
mov rcx, rsi
jne 0x437142
jmp 0x437090