Function at 0x437080
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 [0x00526110]
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 [0x00526130]
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 0x4372b0
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 0x43735c
mov r13, qword [rsi + 0x50]
mov rbp, qword [rsi + 0x58]
sub rbp, r13
cmp rbp, 6
ja 0x4378b0
lea r12, [rax + rbp]
test rbp, rbp
jne 0x437ad0
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.004a1670
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 0x437808
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 0x437441
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 0x437434
call sym.operator_delete_void_
mov rcx, r13
call sym.operator_delete_void_
test r12, r12
je 0x437441
mov r13, r12
jmp 0x4373fe
mov rcx, r13
call sym.operator_delete_void_
test r12, r12
jne 0x43742f
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 0x4374e0
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 0x43755b
nop dword [rax + rax]
mov rcx, qword [r12]
test rcx, rcx
je 0x437870
call sym.operator_delete_void_
add r12, 0x18
cmp r13, r12
jne 0x437540
test r14, r14
je 0x437568
mov rcx, r14
call sym.operator_delete_void_
mov r13, qword [rsp + 0xa8]
mov r12, qword [rsp + 0xa0]
cmp r13, r12
je 0x4375a3
nop dword [rax]
mov rcx, qword [r12]
test rcx, rcx
je 0x437890
call sym.operator_delete_void_
add r12, 0x18
cmp r13, r12
jne 0x437580
mov r12, qword [rsp + 0xa0]
test r12, r12
je 0x4375b0
mov rcx, r12
call sym.operator_delete_void_
mov r13, qword [rsp + 0x80]
test r13, r13
je 0x4375fe
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 0x4375f1
call sym.operator_delete_void_
mov rcx, r13
call sym.operator_delete_void_
test r12, r12
je 0x4375fe
mov r13, r12
jmp 0x4375bd
mov rcx, r13
call sym.operator_delete_void_
test r12, r12
jne 0x4375ec
mov rax, qword [rbx + 0x150]
cmp qword [rbx + 0x148], rax
je 0x437b51
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 0x437950
mov r12, rdi
mov qword [rsp + 0x20], rax
jmp 0x43765a
mov r13, qword [r13 + 0x18]
test r13, r13
je 0x43768c
mov r14, qword [r13 + 0x28]
mov rcx, qword [r13 + 0x20]
cmp r14, 4
ja 0x4378f0
test r14, r14
mov rax, 0xfffffffffffffffc
jne 0x437930
test eax, eax
js 0x437651
mov r12, r13
mov r13, qword [r13 + 0x10]
test r13, r13
jne 0x43765a
cmp rdi, r12
je 0x437950
mov r9, qword [r12 + 0x28]
mov rdx, qword [r12 + 0x20]
cmp r9, 3
jbe 0x437b10
lea rcx, [rbp + 0x10]
mov r8d, 4
mov qword [rsp + 0x20], r9
call sym.memcmp
mov r9, qword [rsp + 0x20]
test eax, eax
jne 0x4376e8
mov r12d, 4
sub r12, r9
cmp r12, 0x7fffffff
jg 0x4376f0
cmp r12, 0xffffffff80000000
jl 0x437950
mov eax, r12d
test eax, eax
js 0x437950
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 0x437b45
mov r14, rdi
jmp 0x43774a
mov r12, qword [r12 + 0x18]
test r12, r12
je 0x43777f
mov r15, qword [r12 + 0x28]
mov rcx, qword [r12 + 0x20]
cmp r15, 4
ja 0x437a30
test r15, r15
mov rax, 0xfffffffffffffffc
jne 0x437a70
test eax, eax
js 0x437740
mov r14, r12
mov r12, qword [r12 + 0x10]
test r12, r12
jne 0x43774a
cmp rdi, r14
je 0x437b45
mov rdi, qword [r14 + 0x28]
mov rdx, qword [r14 + 0x20]
cmp rdi, 3
jbe 0x437ae3
lea rcx, [rbp + 0x10]
mov r8d, 4
call sym.memcmp
test eax, eax
je 0x437aa4
test eax, eax
js 0x437b45
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 rdi, rax
cmp rcx, rbp
je 0x4377e9
call sym.operator_delete_void_
test rdi, rdi
je 0x437d55
mov rcx, qword [rsp + 0x50]
mov qword [rbx + 0x110], rdi
test rcx, rcx
je 0x437808
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 0x437a90
jae 0x43783e
lea rax, [r8 + rdx*4]
cmp rcx, rax
je 0x43783e
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 0x437540
test r14, r14
jne 0x437560
jmp 0x437568
add r12, 0x18
cmp r13, r12
jne 0x437580
mov r12, qword [rsp + 0xa0]
jmp 0x4375a3
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 0x4378d7
call sym.operator_delete_void_
mov qword [rbx + 0x50], r12
add r12, rbp
mov qword [rbx + 0x60], r12
mov qword [rbx + 0x58], r12
jmp 0x43735c
mov rdx, qword [rsp + 0x20]
mov r8d, 4
call sym.memcmp
test eax, eax
jne 0x43767c
lea rax, [r14 - 4]
cmp rax, 0x7fffffff
jg 0x437680
cmp rax, 0xffffffff80000000
jl 0x437651
jmp 0x43767c
mov rdx, qword [rsp + 0x20]
mov r8, r14
call sym.memcmp
test eax, eax
jne 0x43767c
lea rax, [r14 - 4]
jmp 0x43767c
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
mov rcx, qword [rbx + 0x178]
test rcx, rcx
je 0x437982
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x160]
test rcx, rcx
je 0x437993
call sym.operator_delete_void_
mov rdi, qword [rbx + 0x150]
mov rsi, qword [rbx + 0x148]
cmp rdi, rsi
je 0x4379d1
nop word cs:[rax + rax]
mov rcx, qword [rsi]
test rcx, rcx
je 0x437c30
call sym.operator_delete_void_
add rsi, 0x18
cmp rdi, rsi
jne 0x4379b0
mov rsi, qword [rbx + 0x148]
test rsi, rsi
je 0x4379de
mov rcx, rsi
call sym.operator_delete_void_
mov rsi, qword [rbx + 0x128]
mov rbp, qword [rsp + 0x28]
test rsi, rsi
je 0x437d16
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 0x437d05
call sym.operator_delete_void_
mov rcx, rsi
call sym.operator_delete_void_
test rdi, rdi
je 0x437d16
mov rsi, rdi
jmp 0x4379f3
mov r8d, 4
mov rdx, r13
call sym.memcmp
test eax, eax
jne 0x43776e
lea rax, [r15 - 4]
cmp rax, 0x7fffffff
jg 0x437772
cmp rax, 0xffffffff80000000
jl 0x437740
jmp 0x43776e
mov r8, r15
mov rdx, r13
call sym.memcmp
test eax, eax
jne 0x43776e
lea rax, [r15 - 4]
jmp 0x43776e
lea rcx, [rbx + 0x160]
sub rdx, rax
call method.std::vector_int__std::allocator_int___._M_default_append_unsigned_long_long_
jmp 0x43783e
mov r12d, 4
sub r12, rdi
cmp r12, 0x7fffffff
jg 0x4377b9
cmp r12, 0xffffffff80000000
jl 0x437b45
mov eax, r12d
jmp 0x4377b1
mov r8, rbp
mov rdx, r13
mov rcx, rax
call sym.memmove
jmp 0x437358
test rdi, rdi
mov r12d, 4
je 0x437ac7
lea rcx, [rbp + 0x10]
mov r8, rdi
sub r12, rdi
call sym.memcmp
test eax, eax
je 0x437ac7
jmp 0x4377b1
test r9, r9
mov r12d, 4
je 0x4376e5
lea rcx, [rbp + 0x10]
mov r8, r9
mov qword [rsp + 0x20], r9
call sym.memcmp
mov r9, qword [rsp + 0x20]
test eax, eax
jne 0x4376e8
sub r12, r9
jmp 0x4376e5
lea rcx, [0x00525ce0]
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
mov rcx, qword [rbx + 0x178]
test rcx, rcx
je 0x437b83
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x160]
test rcx, rcx
je 0x437b94
call sym.operator_delete_void_
mov rdi, qword [rbx + 0x150]
mov rsi, qword [rbx + 0x148]
cmp rdi, rsi
je 0x437bcd
nop word [rax + rax]
mov rcx, qword [rsi]
test rcx, rcx
je 0x437c20
call sym.operator_delete_void_
add rsi, 0x18
cmp rdi, rsi
jne 0x437bb0
mov rsi, qword [rbx + 0x148]
test rsi, rsi
je 0x437bda
mov rcx, rsi
call sym.operator_delete_void_
mov rsi, qword [rbx + 0x128]
mov rbp, qword [rsp + 0x28]
test rsi, rsi
je 0x437c4f
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 0x437c42
call sym.operator_delete_void_
mov rcx, rsi
call sym.operator_delete_void_
test rdi, rdi
je 0x437c4f
mov rsi, rdi
jmp 0x437beb
add rsi, 0x18
cmp rdi, rsi
jne 0x437bb0
jmp 0x437bc6
add rsi, 0x18
cmp rdi, rsi
jne 0x4379b0
jmp 0x4379ca
mov rcx, rsi
call sym.operator_delete_void_
test rdi, rdi
jne 0x437c1a
mov rcx, qword [rbx + 0xe8]
test rcx, rcx
je 0x437c60
call sym.operator_delete_void_
mov rcx, qword [rbx + 0xc0]
test rcx, rcx
je 0x437c80
nop dword [rax]
mov rsi, qword [rcx]
call sym.operator_delete_void_
test rsi, rsi
mov rcx, rsi
jne 0x437c70
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 0x437cc0
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x88]
cmp qword [rsp + 0x38], rcx
je 0x437cd3
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x68]
cmp qword [rsp + 0x30], rcx
je 0x437ce3
call sym.operator_delete_void_
mov rcx, qword [rbx + 0x50]
test rcx, rcx
je 0x437cf1
call sym.operator_delete_void_
mov rcx, rbx
mov edx, 0xb60
xor ebx, ebx
call sym.operator_delete_void__unsigned_long_long_
jmp 0x437854
mov rcx, rsi
call sym.operator_delete_void_
test rdi, rdi
jne 0x437a2a
mov rcx, qword [rbx + 0xe8]
test rcx, rcx
je 0x437d27
call sym.operator_delete_void_
mov rcx, qword [rbx + 0xc0]
test rcx, rcx
je 0x437c80
nop word [rax + rax]
mov rsi, qword [rcx]
call sym.operator_delete_void_
test rsi, rsi
mov rcx, rsi
jne 0x437d40
jmp 0x437c80
mov ecx, 0x10
call sym.__cxa_allocate_exception
lea rdx, str.Failed_to_initialize_llama_grammar
mov rcx, rax
mov rsi, rax
call sym.std::runtime_error::runtime_error_char_const_
lea r8, [sym.std::runtime_error::runtime_error__]
mov rcx, rsi
lea rdx, sym.imp.libstdc_6.dll_vtable_for_std::__cxx11::basic_stringbuf_char__std::char_traits_char___std::allocator_char___
call sym.__cxa_throw
mov rcx, qword [rbx + 0x50]
mov rsi, rax
test rcx, rcx
je 0x437d98
call sym.operator_delete_void_
mov rcx, rsi
call sym._Unwind_Resume
mov rcx, qword [rsp + 0x70]
add rbp, 0x10
mov rbx, rax
cmp rcx, rbp
je 0x437dc8
call sym.operator_delete_void_
jmp 0x437dc8
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x437dd7
call sym.operator_delete_void_
mov rcx, rbx
call sym._Unwind_Resume
nop