// File: Alcaro[P]bridges/arlib/bmlparse.cpp
// Function: bmlparser::next()
bmlparser::event bmlparser::next()
{
	if (m_exit)
	{
		m_exit = false;
		return { exit };
	}
	
	if (m_inlines)
	{
		event ev = { enter };
		bool dummy;
		if (bml_parse_inline_node(m_inlines, ev.name, dummy, ev.value))
		{
			m_exit = true;
			return ev;
		}
		else if (ev.value) return { error, "", ev.value };
		//else fall through
	}
	
	if (!m_thisline && m_data)
	{
		if (!getline(true)) return { error, "", "Mixed tabs and spaces" };
	}
	
	if (m_indent_step.size() > m_indent.length())
	{
	handle_indent:
		if (!m_indent_step.get_or(m_indent.length(), false))
		{
			//this may throw random mix-tab-space errors that weren't present in the original,
			// but only if the document contains mix-tab-space and this error already.
			if (m_indent_step.size() > m_indent.length()) m_indent += m_indent[0];
			else m_indent = m_indent.substr(0, ~1);
			return { error, "", "Invalid indentation depth" };
		}
		
		int lasttrue = m_indent_step.size()-2; // -1 for [size()] being OOB, -1 to skip the true at [size()-1] and discard it
		while (lasttrue>=0 && m_indent_step[lasttrue]==false) lasttrue--;
		
		m_indent_step.resize(lasttrue+1);
		return { exit };
	}
	
	if (!m_thisline)
	{
		if (m_indent_step.size()) goto handle_indent;
		return { finish };
	}
	
	m_inlines = m_thisline;
	m_thisline = "";
	
	cstring node;
	bool hasvalue;
	cstring value;
	if (!bml_parse_inline_node(m_inlines, node, hasvalue, value))
	{
		//m_inlines can't be empty here, we've called getline()
		return { error, "", value };
	}
	
	size_t indentlen = m_indent.length(); // changed by getline
	//multilines
	if (!hasvalue)
	{
		if (!getline(false)) return { error, "", "Mixed tabs and spaces" };
		if (m_thisline && m_thisline[0] == ':')
		{
			size_t inner_indent = m_indent.length();
			m_tmp_value = m_thisline.substr(1, ~0);
			if (!getline(false)) return { error, "", "Mixed tabs and spaces" };
			while (m_thisline && m_thisline[0] == ':')
			{
				if (inner_indent != m_indent.length()) return { error, "", "Multi-line values must have constant indentation" };
				m_tmp_value += "\n" + m_thisline.substr(1, ~0);
				if (!getline(false)) return { error, "", "Mixed tabs and spaces" };
			}
			
			if (m_indent.length() != inner_indent)
			{
				if (m_indent.length() > inner_indent)
				{
					return { error, "", "Can't change indentation after a multi-line value" };
				}
				if (m_indent.length() > indentlen && !m_indent_step.get_or(m_indent.length(), false))
				{
					return { error, "", "Invalid indentation depth" };
				}
			}
			
			value = m_tmp_value;
		}
	}
	
	m_indent_step.set_resize(indentlen, true);
	return { enter, node, value };
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x330, %rsp            # imm = 0x330
movq %rdi, -0x298(%rbp)
movq %rdi, -0x290(%rbp)
movq %rsi, -0x1b0(%rbp)
movq -0x1b0(%rbp), %rax
movq %rax, -0x288(%rbp)
testb $0x1, 0x60(%rax)
je 0x799a
movq -0x298(%rbp), %rdi
movq -0x288(%rbp), %rax
movb $0x0, 0x60(%rax)
movl $0x1, (%rdi)
addq $0x8, %rdi
callq 0x5f70
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
callq 0x5f70
jmp 0x8745
movq -0x288(%rbp), %rdi
addq $0x50, %rdi
callq 0x9a10
testb $0x1, %al
jne 0x79b3
jmp 0x7a91
movl $0x0, -0x1d8(%rbp)
leaq -0x1d8(%rbp), %rdi
addq $0x8, %rdi
callq 0x5f70
leaq -0x1d8(%rbp), %rdi
addq $0x18, %rdi
callq 0x5f70
movq -0x288(%rbp), %rdi
addq $0x50, %rdi
leaq -0x1d8(%rbp), %rsi
addq $0x8, %rsi
leaq -0x1d8(%rbp), %rcx
addq $0x18, %rcx
leaq -0x1d9(%rbp), %rdx
callq 0x8760
testb $0x1, %al
jne 0x7a10
jmp 0x7a38
movq -0x298(%rbp), %rdi
movq -0x288(%rbp), %rax
movb $0x1, 0x60(%rax)
leaq -0x1d8(%rbp), %rsi
movl $0x28, %edx
callq 0x4280
jmp 0x8745
leaq -0x1d8(%rbp), %rdi
addq $0x18, %rdi
callq 0x9a10
testb $0x1, %al
jne 0x7a4e
jmp 0x7a8d
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5e9e3(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rax
movq -0x1c0(%rbp), %rcx
movq %rcx, 0x18(%rax)
movq -0x1b8(%rbp), %rcx
movq %rcx, 0x20(%rax)
jmp 0x8745
jmp 0x7a8f
jmp 0x7a91
movq -0x288(%rbp), %rdi
addq $0x20, %rdi
callq 0x9a10
testb $0x1, %al
jne 0x7b0b
movq -0x288(%rbp), %rdi
addq $0x10, %rdi
callq 0x9a10
testb $0x1, %al
jne 0x7abb
jmp 0x7b0b
movq -0x288(%rbp), %rdi
movl $0x1, %esi
callq 0x9a80
testb $0x1, %al
jne 0x7b09
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5e961(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5b731(%rip), %rsi     # 0x63230
callq 0x58c0
jmp 0x8745
jmp 0x7b0b
movq -0x288(%rbp), %rdi
addq $0x30, %rdi
callq 0x9ee0
movq %rax, %rcx
movq -0x288(%rbp), %rax
movq %rcx, -0x2a8(%rbp)
addq $0x40, %rax
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x7b85
movq -0x2a0(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x110(%rbp)
jmp 0x7b95
movq -0x2a0(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x110(%rbp)
movq -0x2a8(%rbp), %rax
movl -0x110(%rbp), %ecx
cmpq %rcx, %rax
jbe 0x7efe
jmp 0x7bad
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x30, %rcx
movq %rcx, -0x2b8(%rbp)
addq $0x40, %rax
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x7c1b
movq -0x2b0(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x11c(%rbp)
jmp 0x7c2b
movq -0x2b0(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x11c(%rbp)
movq -0x2b8(%rbp), %rdi
movl -0x11c(%rbp), %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x9f00
testb $0x1, %al
jne 0x7e2d
movq -0x288(%rbp), %rdi
addq $0x30, %rdi
callq 0x9ee0
movq %rax, %rcx
movq -0x288(%rbp), %rax
movq %rcx, -0x2c8(%rbp)
addq $0x40, %rax
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rax
movq %rax, -0x2c0(%rbp)
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x7cc3
movq -0x2c0(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x12c(%rbp)
jmp 0x7cd3
movq -0x2c0(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x12c(%rbp)
movq -0x2c8(%rbp), %rax
movl -0x12c(%rbp), %ecx
cmpq %rcx, %rax
jbe 0x7d76
movq -0x288(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x108(%rbp)
movl $0x0, -0x10c(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x7d45
movq -0x2d0(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0x7d53
movq -0x2d0(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x288(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0x10c(%rbp), %rcx
movb (%rax,%rcx), %al
addq $0x40, %rdi
movzbl %al, %esi
callq 0x9f60
jmp 0x7df4
movq -0x288(%rbp), %rdi
addq $0x40, %rdi
xorl %esi, %esi
movl $0xfffffffe, %edx       # imm = 0xFFFFFFFE
callq 0x9f90
movq %rax, %rcx
movq -0x288(%rbp), %rax
movq %rcx, -0x1f0(%rbp)
movq %rdx, -0x1e8(%rbp)
addq $0x40, %rax
movq %rax, -0xc8(%rbp)
leaq -0x1f0(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xc8(%rbp), %rdi
movq -0xd0(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0xe0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0xd8(%rbp)
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
callq 0xa370
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5e63d(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5b423(%rip), %rsi     # 0x63246
callq 0x58c0
jmp 0x8745
movq -0x288(%rbp), %rdi
addq $0x30, %rdi
callq 0x9ee0
subq $0x2, %rax
movl %eax, -0x1f4(%rbp)
xorl %eax, %eax
cmpl $0x0, -0x1f4(%rbp)
movb %al, -0x2d1(%rbp)
jl 0x7e9a
movq -0x288(%rbp), %rdi
addq $0x30, %rdi
movslq -0x1f4(%rbp), %rsi
callq 0xa130
movq %rax, -0x208(%rbp)
movq %rdx, -0x200(%rbp)
leaq -0x208(%rbp), %rdi
callq 0xa160
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
sete %al
movb %al, -0x2d1(%rbp)
movb -0x2d1(%rbp), %al
testb $0x1, %al
jne 0x7ea6
jmp 0x7eb7
movl -0x1f4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1f4(%rbp)
jmp 0x7e47
movq -0x288(%rbp), %rdi
addq $0x30, %rdi
movl -0x1f4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x66f0
movq -0x298(%rbp), %rdi
movl $0x1, (%rdi)
addq $0x8, %rdi
callq 0x5f70
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
callq 0x5f70
jmp 0x8745
movq -0x288(%rbp), %rdi
addq $0x20, %rdi
callq 0x9a10
testb $0x1, %al
jne 0x7f58
movq -0x288(%rbp), %rdi
addq $0x30, %rdi
callq 0x9ee0
cmpq $0x0, %rax
je 0x7f2d
jmp 0x7bad
movq -0x298(%rbp), %rdi
movl $0x3, (%rdi)
addq $0x8, %rdi
callq 0x5f70
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
callq 0x5f70
jmp 0x8745
movq -0x288(%rbp), %rdi
movq 0x20(%rdi), %rax
movq %rax, 0x50(%rdi)
movq 0x28(%rdi), %rax
movq %rax, 0x58(%rdi)
addq $0x20, %rdi
leaq 0x5e4cf(%rip), %rsi     # 0x66449
callq 0xa190
leaq -0x218(%rbp), %rdi
callq 0x5f70
leaq -0x230(%rbp), %rdi
callq 0x5f70
movq -0x288(%rbp), %rdi
addq $0x50, %rdi
leaq -0x218(%rbp), %rsi
leaq -0x219(%rbp), %rdx
leaq -0x230(%rbp), %rcx
callq 0x8760
testb $0x1, %al
jne 0x7fff
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5e471(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rax
movq -0x230(%rbp), %rcx
movq %rcx, 0x18(%rax)
movq -0x228(%rbp), %rcx
movq %rcx, 0x20(%rax)
jmp 0x8745
movq -0x288(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rax
movq %rax, -0x2e0(%rbp)
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x805f
movq -0x2e0(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x13c(%rbp)
jmp 0x806f
movq -0x2e0(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x13c(%rbp)
movl -0x13c(%rbp), %eax
movq %rax, -0x238(%rbp)
testb $0x1, -0x219(%rbp)
jne 0x86f0
movq -0x288(%rbp), %rdi
xorl %esi, %esi
callq 0x9a80
testb $0x1, %al
jne 0x80d4
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5e396(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5b166(%rip), %rsi     # 0x63230
callq 0x58c0
jmp 0x8745
movq -0x288(%rbp), %rdi
addq $0x20, %rdi
callq 0x9a10
testb $0x1, %al
jne 0x80ed
jmp 0x86ee
movq -0x288(%rbp), %rdi
addq $0x20, %rdi
xorl %esi, %esi
callq 0xa1c0
movsbl %al, %eax
cmpl $0x3a, %eax
jne 0x86ee
movq -0x288(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x816b
movq -0x2e8(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x14c(%rbp)
jmp 0x817b
movq -0x2e8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x14c(%rbp)
movq -0x288(%rbp), %rdi
movl -0x14c(%rbp), %eax
movq %rax, -0x240(%rbp)
addq $0x20, %rdi
movl $0x1, %esi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x9f90
movq %rax, %rcx
movq -0x288(%rbp), %rax
movq %rcx, -0x250(%rbp)
movq %rdx, -0x248(%rbp)
addq $0x68, %rax
movq %rax, -0xe8(%rbp)
leaq -0x250(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xe8(%rbp), %rdi
movq -0xf0(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x100(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0xf8(%rbp)
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
callq 0xa370
movq -0x288(%rbp), %rdi
xorl %esi, %esi
callq 0x9a80
testb $0x1, %al
jne 0x8254
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5e216(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5afe6(%rip), %rsi     # 0x63230
callq 0x58c0
jmp 0x8745
jmp 0x8256
movq -0x288(%rbp), %rdi
addq $0x20, %rdi
callq 0x9a10
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x2e9(%rbp)
jne 0x8277
jmp 0x8298
movq -0x288(%rbp), %rdi
addq $0x20, %rdi
xorl %esi, %esi
callq 0xa1c0
movsbl %al, %eax
cmpl $0x3a, %eax
sete %al
movb %al, -0x2e9(%rbp)
movb -0x2e9(%rbp), %al
testb $0x1, %al
jne 0x82a7
jmp 0x844f
movq -0x288(%rbp), %rax
movq -0x240(%rbp), %rcx
movq %rcx, -0x300(%rbp)
addq $0x40, %rax
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x8315
movq -0x2f8(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x15c(%rbp)
jmp 0x8325
movq -0x2f8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x15c(%rbp)
movq -0x300(%rbp), %rax
movl -0x15c(%rbp), %ecx
cmpq %rcx, %rax
je 0x8370
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5e0fa(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5aefa(%rip), %rsi     # 0x63260
callq 0x58c0
jmp 0x8745
movq -0x288(%rbp), %rdi
addq $0x20, %rdi
movl $0x1, %esi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x9f90
movq %rax, -0x280(%rbp)
movq %rdx, -0x278(%rbp)
movq -0x280(%rbp), %rdx
movq -0x278(%rbp), %rcx
leaq -0x270(%rbp), %rdi
leaq 0x5b534(%rip), %rsi     # 0x638e8
callq 0x57e0
movq -0x288(%rbp), %rdi
movq -0x270(%rbp), %rax
movq %rax, -0x260(%rbp)
movq -0x268(%rbp), %rax
movq %rax, -0x258(%rbp)
addq $0x68, %rdi
movq -0x260(%rbp), %rsi
movq -0x258(%rbp), %rdx
callq 0x5e00
leaq -0x270(%rbp), %rdi
callq 0x5870
movq -0x288(%rbp), %rdi
xorl %esi, %esi
callq 0x9a80
testb $0x1, %al
jne 0x844a
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5e020(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5adf0(%rip), %rsi     # 0x63230
callq 0x58c0
jmp 0x8745
jmp 0x8256
movq -0x288(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x178(%rbp)
movq -0x178(%rbp), %rax
movq %rax, -0x308(%rbp)
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x84af
movq -0x308(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x16c(%rbp)
jmp 0x84bf
movq -0x308(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x16c(%rbp)
movl -0x16c(%rbp), %eax
cmpq -0x240(%rbp), %rax
je 0x86d1
movq -0x288(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0x310(%rbp)
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x8532
movq -0x310(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x17c(%rbp)
jmp 0x8542
movq -0x310(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x17c(%rbp)
movl -0x17c(%rbp), %eax
cmpq -0x240(%rbp), %rax
jbe 0x858a
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5dee0(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5ad11(%rip), %rsi     # 0x63291
callq 0x58c0
jmp 0x8745
movq -0x288(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x198(%rbp)
movq -0x198(%rbp), %rax
movq %rax, -0x318(%rbp)
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x85e4
movq -0x318(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x18c(%rbp)
jmp 0x85f4
movq -0x318(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x18c(%rbp)
movl -0x18c(%rbp), %eax
cmpq -0x238(%rbp), %rax
jbe 0x86cf
movq -0x288(%rbp), %rax
movq %rax, %rcx
addq $0x30, %rcx
movq %rcx, -0x328(%rbp)
addq $0x40, %rax
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rax
movq %rax, -0x320(%rbp)
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
cmpl $0x0, %eax
jl 0x866f
movq -0x320(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x5cc0
movsbl %al, %eax
xorl $0xf, %eax
movzbl %al, %eax
movl %eax, -0x19c(%rbp)
jmp 0x867f
movq -0x320(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x19c(%rbp)
movq -0x328(%rbp), %rdi
movl -0x19c(%rbp), %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x9f00
testb $0x1, %al
jne 0x86cf
movq -0x298(%rbp), %rdi
movl $0x2, (%rdi)
addq $0x8, %rdi
leaq 0x5dd98(%rip), %rsi     # 0x66449
callq 0x58c0
movq -0x298(%rbp), %rdi
addq $0x18, %rdi
leaq 0x5ab7e(%rip), %rsi     # 0x63246
callq 0x58c0
jmp 0x8745
jmp 0x86d1
movq -0x288(%rbp), %rax
movq 0x68(%rax), %rcx
movq %rcx, -0x230(%rbp)
movq 0x70(%rax), %rax
movq %rax, -0x228(%rbp)
jmp 0x86f0
movq -0x288(%rbp), %rdi
addq $0x30, %rdi
movq -0x238(%rbp), %rsi
movl $0x1, %edx
callq 0xa220
movq -0x298(%rbp), %rax
movl $0x0, (%rax)
movq -0x218(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x210(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x230(%rbp), %rcx
movq %rcx, 0x18(%rax)
movq -0x228(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq -0x290(%rbp), %rax
addq $0x330, %rsp            # imm = 0x330
popq %rbp
retq
nopw %cs:(%rax,%rax)