Function at 0x4399f0
Capabilities:
Write file on windows

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xe8
mov rax, qword [r8 + 8]
cmp qword [r8], rax
mov r13, rcx
mov r12d, edx
mov r14, r8
mov r15, r9
je 0x43a3ac
mov eax, dword [rax - 8]
test eax, eax
jne 0x43a3ac
lea rax, [r9 + 8]
mov rdx, rax
mov qword [rsp + 0x38], rax
mov rax, qword [r9 + 0x10]
test rax, rax
jne 0x439a4d
jmp 0x43a090
mov rdx, rax
mov rax, qword [rax + 0x10]
test rax, rax
je 0x439a5c
cmp dword [rax + 0x20], r12d
jae 0x439a41
mov rax, qword [rax + 0x18]
test rax, rax
jne 0x439a4d
cmp qword [rsp + 0x38], rdx
je 0x43a090
cmp dword [rdx + 0x20], r12d
ja 0x43a090
mov r8, qword [rdx + 0x28]
lea rdx, str._s_::
mov rcx, r13
call sym.fprintf
mov rdx, qword [r14]
mov rsi, qword [r14 + 8]
sub rsi, rdx
sar rsi, 3
sub rsi, 1
mov qword [rsp + 0x30], rsi
je 0x43a170
lea rbp, [0x00526264]
xor ebx, ebx
lea rsi, [rbx*8]
lea rax, [rdx + rsi]
cmp dword [rax], 7
mov edi, dword [rax + 4]
ja 0x439af7
mov eax, dword [rax]
movsxd rax, dword [rbp + rax*4]
add rax, rbp
jmp rax
add rbx, 1
cmp qword [rsp + 0x30], rbx
jbe 0x43a170
mov rdx, qword [r14]
jmp 0x439aaa
mov rcx, qword [rsp + 0xc0]
add rsi, 0x10
cmp rcx, rsi
je 0x439d2b
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x80]
add rbx, 0x10
cmp rcx, rbx
je 0x439d41
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x60]
add r12, 0x10
cmp rcx, r12
je 0x439d54
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x40]
add r13, 0x10
cmp rcx, r13
je 0x439d67
call sym.operator_delete_void_
mov rcx, qword [rsp + 0xa0]
add rdi, 0x10
cmp rcx, rdi
je 0x439d7d
call sym.operator_delete_void_
lea r8, [sym.std::runtime_error::runtime_error__]
mov rcx, rbp
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
test rbx, rbx
jne 0x43a4a3
lea rdi, [rsp + 0xa0]
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov qword [rsp + 0x20], rbx
lea rbx, [sym.vsnprintf]
mov rcx, rdi
lea r9, [0x005261b6]
mov r8d, 0x20
mov rdx, rbx
mov rbp, rax
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char______gnu_cxx::__to_xstring_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____char__int____char__unsigned_long_long__char_const__char___unsigned_long_long__char_const__::___clone_constprop249_
lea r13, [rsp + 0x40]
mov dword [rsp + 0x20], r12d
mov r8d, 0x10
mov rdx, rbx
lea r9, [0x00526169]
mov rcx, r13
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char______gnu_cxx::__to_xstring_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____char__int____char__unsigned_long_long__char_const__char___unsigned_long_long__char_const__::___clone_constprop249_
mov qword [rsp + 0x20], 0x35
lea r9, str.LLAMA_GRETYPE_CHAR_RNG_UPPER_without_preceding_char:
xor r8d, r8d
xor edx, edx
mov rcx, r13
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_replace_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
lea r12, [rsp + 0x60]
lea rdx, [r12 + 0x10]
mov qword [rsp + 0x60], rdx
mov rcx, qword [rax]
lea rdx, [rax + 0x10]
cmp rcx, rdx
je 0x43a0c4
mov qword [rsp + 0x60], rcx
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0x70], rcx
mov rcx, qword [rax + 8]
mov qword [rsp + 0x68], rcx
mov qword [rax], rdx
mov qword [rax + 8], 0
mov byte [rax + 0x10], 0
movabs rax, 0x7fffffffffffffff
cmp qword [rsp + 0x68], rax
je 0x43a47f
lea rdx, [0x005261e9]
mov r8d, 1
mov rcx, r12
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_append_char_const__unsigned_long_long_
lea rbx, [rsp + 0x80]
lea rdx, [rbx + 0x10]
mov qword [rsp + 0x80], rdx
mov rcx, qword [rax]
lea rdx, [rax + 0x10]
cmp rcx, rdx
je 0x43a0b2
mov qword [rsp + 0x80], rcx
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0x90], rcx
mov rcx, qword [rax + 8]
mov qword [rsp + 0x88], rcx
mov qword [rax], rdx
lea rdx, [rbx + 0x10]
mov qword [rax + 8], 0
mov byte [rax + 0x10], 0
mov r9, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x88]
mov r8, qword [rsp + 0xa8]
cmp r9, rdx
lea rax, [rcx + r8]
je 0x43a150
mov r10, qword [rsp + 0x90]
cmp rax, r10
mov rdx, qword [rsp + 0xa0]
jbe 0x439f32
lea r10, [rdi + 0x10]
cmp rdx, r10
je 0x43a1a0
mov r10, qword [rsp + 0xb0]
cmp rax, r10
jbe 0x43a110
mov rcx, rbx
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_append_char_const__unsigned_long_long_
lea rsi, [rsp + 0xc0]
lea rdx, [rsi + 0x10]
mov qword [rsp + 0xc0], rdx
mov rcx, qword [rax]
lea rdx, [rax + 0x10]
cmp rcx, rdx
je 0x43a0a0
mov qword [rsp + 0xc0], rcx
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0xd0], rcx
mov rcx, qword [rax + 8]
mov qword [rsp + 0xc8], rcx
mov rcx, rbp
mov qword [rax], rdx
mov rdx, rsi
mov qword [rax + 8], 0
mov byte [rax + 0x10], 0
call sym.std::runtime_error::runtime_error_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
jmp 0x439d15
mov rax, qword [r14]
add rbx, 1
mov eax, dword [rax + rsi + 8]
sub eax, 5
cmp eax, 2
jbe 0x439afb
mov r9, r13
mov r8d, 2
mov edx, 1
lea rcx, [0x00526260]
call sym.fwrite
jmp 0x439afb
lea rcx, str.map::at
call sym.std::__throw_out_of_range_char_const_
nop dword [rax]
movdqu xmm2, xmmword [rax + 0x10]
movaps xmmword [rsp + 0xd0], xmm2
jmp 0x439f72
movdqu xmm1, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x90], xmm1
jmp 0x439ebb
movdqu xmm0, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x70], xmm0
jmp 0x439e41
mov qword [rsp + 0x20], rcx
xor r8d, r8d
xor edx, edx
mov rcx, rdi
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::_M_replace_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
jmp 0x439f3a
mov r10d, 0xf
jmp 0x439f07
mov rdx, r13
mov ecx, 0xa
call sym.fputc
nop
add rsp, 0xe8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r10d, 0xf
jmp 0x439f29
lea rdi, [rsp + 0xa0]
mov ecx, 0x10
call sym.__cxa_allocate_exception
mov dword [rsp + 0x20], r12d
mov rcx, rdi
mov r8d, 0x10
lea r9, [0x00526169]
mov rbp, rax
lea rdx, [sym.vsnprintf]
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char______gnu_cxx::__to_xstring_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char_____char__int____char__unsigned_long_long__char_const__char___unsigned_long_long__char_const__::___clone_constprop249_
lea rsi, [rsp + 0xc0]
mov r8, rdi
lea rdx, str.malformed_rule__does_not_end_with_LLAMA_GRETYPE_END:
mov rcx, rsi
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____std::operator_char__std::char_traits_char___std.allocator_char____char_const__std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____
mov rdx, rsi
mov rcx, rbp
call sym.std::runtime_error::runtime_error_std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char____const_
mov rcx, qword [rsp + 0xc0]
add rsi, 0x10
cmp rcx, rsi
jne 0x439d62
jmp 0x439d67
lea rcx, [0x005261d4]
call sym.std::__throw_length_error_char_const_
lea rcx, [0x005261d4]
call sym.std::__throw_length_error_char_const_
lea rcx, [0x005261d4]
call sym.std::__throw_length_error_char_const_
mov eax, dword [rdx + rsi - 8]
sub eax, 3
cmp eax, 4
ja 0x439d9c
mov rdx, r13
mov ecx, 0x2d
call sym.fputc
mov edx, edi
mov rcx, r13
call method.grammar_parser.print_grammar_char__iobuf__unsigned_int_
jmp 0x439fcc