// File: kiven-li[P]xbytes/xbytes.cpp
// Function: xbytes::xbytes::lexical_rule(char)
void xbytes::lexical_rule(char cc)
{
	line[char_index_in_line++] = cc;

	if(cc == '\0') return;

	switch(state)
	{
	case LS_START:
	{
		if(isalpha(cc))
		{
			s.name.push_back(cc);
			state = LS_LEFT_SYMBOL;
		}
		else if(cc == '%')
		{
			state = LS_CODE_DECLARE;
		}
		else if(cc == '#')
		{
			assoc_prec ap;
			ap.associativity = AT_NONE;
			assoc_precs.push_back(ap);
			state = LS_ASSOCIATIVITY_DECLARE;
		}
		else if(cc != ' ' && cc != '\n' && cc != '\r')
		{
			error_on_line(line, "expect char/SPACE", char_index_in_line);
		}	
		break;
	}
	case LS_CODE_DECLARE:
	{
		if(isalpha(cc) || cc == '_')
		{
			declare_code_name.push_back(cc);
		}
		else if(cc == '{')
		{
			++bracket_count;
			state = LS_CODE;
		}
		else if(cc != ' ' && cc != '\r' && cc != '\n')
		{
			error_on_line(line, "expect char OR { OR \\r OR \\n", char_index_in_line);
		}
		break;
	}
	case LS_CODE:
	{
		if(cc == '}')
		{
			--bracket_count;
			if(bracket_count == 0)
			{
				if(declare_code_name == "include")
				{
					include_code = declare_code;
				}
				else if(declare_code_name == "token")
				{
					token_code = declare_code;
				}
				else if(declare_code_name == "syntax_error")
				{
					syntax_error_code = declare_code;
				}

				declare_code.clear();
				declare_code_name.clear();

				state = LS_START;				
			}
			else
			{
				declare_code.push_back(cc);
			}
		}
		else if(cc == '{')
		{
			++bracket_count;
			declare_code.push_back(cc);
		}
		else
		{
			declare_code.push_back(cc);
		}
		break;
	}
	case LS_ASSOCIATIVITY_DECLARE:
	{
		if(isalpha(cc))
		{
			declare_associativity_name.push_back(cc);
		}
		else if(cc == ' ')
		{
			int ass = declare_associativity_name == "left" ? AT_LEFT : AT_RIGHT;
			assoc_precs[assoc_precs.size() - 1].associativity = ass;
			state = LS_ASSOCIATIVITY;
		}
		else 
		{
			error_on_line(line, "expect char OR space", char_index_in_line);
		}
		break;
	}
	case LS_ASSOCIATIVITY:
	{
		if(isalpha(cc))
		{
			associativity_symbol_name.push_back(cc);
		}
		else if(cc == ' ')
		{
			if(associativity_symbol_name.size() != 0)
			{
				assoc_precs[assoc_precs.size() - 1].symbol_names.push_back(associativity_symbol_name);
				associativity_symbol_name.clear();
			}
		}
		else if(cc == '\r' || cc == '\n')
		{
			if(associativity_symbol_name.size() != 0)
			{
				assoc_precs[assoc_precs.size() - 1].symbol_names.push_back(associativity_symbol_name); 
				associativity_symbol_name.clear();
			}
			declare_associativity_name.clear();
			state = LS_START;
		}
		else
		{
			error_on_line(line, "expect char, space, \\r, OR \\n", char_index_in_line);
		}
		break;
	}
	case LS_LEFT_SYMBOL:
	{
		if(isalpha(cc) || cc == '_' || isdigit(cc) || cc == '-')
		{
			s.name.push_back(cc);
		}
		else if(cc == '(')
		{
			state = LS_LEFT_ALIAS;
		}
		else if(cc == '-')
		{
			state = LS_ARROW;
		}
		else if(cc == ' ')
		{
			state = LS_LEFT_WAIT_ARROW;
		}
		else
		{
			error_on_line(line, "expect char/(/-/SPACE", char_index_in_line);
		}

		break;
	}
	case LS_LEFT_ALIAS:
	{
		if(isalpha(cc))
		{
			s.alias.push_back(cc);
		}
		else if(cc == ')')
		{
			state = LS_LEFT_WAIT_ARROW;
		}
		else
		{
			error_on_line(line, "expect char or )", char_index_in_line);
		}

		break;
	}
	case LS_LEFT_WAIT_ARROW:
	{
		if(cc == '-')
		{
			state = LS_ARROW;				
		}
		else if(cc != ' ')
		{
			error_on_line(line, "expect -", char_index_in_line);
		}

		break;
	}
	case LS_ARROW:
	{
		if(cc == '>')
		{
			state = LS_RIGHT_WARIT_SYMBOL;
			make_symbol(r, s);			
		}
		else
		{
			error_on_line(line, "expect >", char_index_in_line);
		}

		break;
	}
	case LS_RIGHT_WARIT_SYMBOL:
	{
		if(cc == '.')
		{
			state = LS_WAIT_RULE_CODE;
		}
		else if(isalpha(cc))
		{
			state = LS_RIGHT_SYMBOL;
			s.name.push_back(cc);
		}
		else if(cc != ' ')
		{
			error_on_line(line, "expect char/./SPACE", char_index_in_line);
		}

		break;
	}
	case LS_RIGHT_SYMBOL:
	{
		if(cc == '.')
		{
			state = LS_WAIT_RULE_CODE;
			make_symbol(r, s);
		}
		else if(isalpha(cc) || cc == '_' || isdigit(cc) || cc == '-')
		{
			s.name.push_back(cc);
		}
		else if(cc == '(')
		{
			state = LS_RIGHT_ALIAS;
		}
		else if(cc == ' ')
		{
			state = LS_RIGHT_WARIT_SYMBOL;
			make_symbol(r, s);
		}
		else
		{
			error_on_line(line, "expect char/./(/SPACE", char_index_in_line);
		}
		break;
	}
	case LS_RIGHT_ALIAS:
	{
		if(isalpha(cc))
		{
			s.alias.push_back(cc);
		}
		else if(cc == ')')
		{
			state = LS_RIGHT_WARIT_SYMBOL;
			make_symbol(r, s);
		}
		else
		{
			error_on_line(line, "expect ) or char", char_index_in_line);
		}
		break;
	}
	case LS_WAIT_RULE_CODE:
	{
		if(cc == '{')
		{
			bracket_count++;
			r.code.push_back(cc);
			state = LS_RULE_CODE;
		}
		else if(isalpha(cc))
		{
			add_rule(r);
			s.name.push_back(cc);
			state = LS_LEFT_SYMBOL;
		}
		else if(cc != ' ' && cc != '\r' && cc != '\n')
		{
			error_on_line(line, "expect \r\n or { or SPACE", char_index_in_line);
		}
		break;
	}
	case LS_RULE_CODE:
	{
		if(cc == '}')
		{
			r.code.push_back(cc);
			
			if(--bracket_count == 0) 
			{
				add_rule(r);
				state = LS_START;
			}
		}
		else
		{
			r.code.push_back(cc);
			if(cc == '{') bracket_count++;
		}
		break;
	}
	}

	if(cc == '\n')
	{
		for(int m = 0; m < MAX_LINE_SIZE; ++m) line[m] = 0;
		if(char_index_in_line) line_count++;
		char_index_in_line = 0;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x320, %rsp            # imm = 0x320
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x228(%rbp)
movb -0x9(%rbp), %dl
movl 0x608(%rax), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, 0x608(%rax)
movslq %ecx, %rcx
movb %dl, 0x208(%rax,%rcx)
movsbl -0x9(%rbp), %eax
cmpl $0x0, %eax
jne 0x477c
jmp 0x5ac0
movq -0x228(%rbp), %rax
movl 0xb0(%rax), %eax
movq %rax, -0x230(%rbp)
subq $0xd, %rax
ja 0x5a43
movq -0x230(%rbp), %rax
leaq 0x148a4(%rip), %rcx     # 0x1904c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
je 0x47f0
movq -0x228(%rbp), %rdi
addq $0xb8, %rdi
addq $0x8, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
movq -0x228(%rbp), %rax
movl $0x1, 0xb0(%rax)
jmp 0x4952
movsbl -0x9(%rbp), %eax
cmpl $0x25, %eax
jne 0x480f
movq -0x228(%rbp), %rax
movl $0xa, 0xb0(%rax)
jmp 0x4950
movsbl -0x9(%rbp), %eax
cmpl $0x23, %eax
jne 0x4884
leaq -0x30(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0xcf70
movq -0x228(%rbp), %rdi
movq -0x238(%rbp), %rsi
movl $0x0, -0x30(%rbp)
addq $0x698, %rdi            # imm = 0x698
callq 0xcf90
jmp 0x484b
movq -0x228(%rbp), %rax
movl $0xc, 0xb0(%rax)
leaq -0x30(%rbp), %rdi
callq 0xd000
jmp 0x494e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0xd000
jmp 0x5ac9
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
je 0x494c
movsbl -0x9(%rbp), %eax
cmpl $0xa, %eax
je 0x494c
movsbl -0x9(%rbp), %eax
cmpl $0xd, %eax
je 0x494c
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x248(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x34f0
movq -0x240(%rbp), %rdx
leaq 0x14aee(%rip), %rsi     # 0x193cb
leaq -0x60(%rbp), %rdi
callq 0x3830
jmp 0x48e8
movq -0x248(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x60(%rbp), %rdx
callq 0x5ae0
jmp 0x4907
leaq -0x60(%rbp), %rdi
callq 0x31b0
leaq -0x61(%rbp), %rdi
callq 0x3340
jmp 0x494c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x493e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x31b0
leaq -0x61(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x494e
jmp 0x4950
jmp 0x4952
jmp 0x5a43
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
jne 0x496e
movsbl -0x9(%rbp), %eax
cmpl $0x5f, %eax
jne 0x498a
movq -0x228(%rbp), %rdi
addq $0x618, %rdi            # imm = 0x618
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x4a99
movsbl -0x9(%rbp), %eax
cmpl $0x7b, %eax
jne 0x49b8
movq -0x228(%rbp), %rax
movl 0x610(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x610(%rax)
movl $0xb, 0xb0(%rax)
jmp 0x4a97
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
je 0x4a95
movsbl -0x9(%rbp), %eax
cmpl $0xd, %eax
je 0x4a95
movsbl -0x9(%rbp), %eax
cmpl $0xa, %eax
je 0x4a95
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x258(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0x34f0
movq -0x250(%rbp), %rdx
leaq 0x149c9(%rip), %rsi     # 0x193dd
leaq -0x88(%rbp), %rdi
callq 0x3830
jmp 0x4a22
movq -0x258(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x88(%rbp), %rdx
callq 0x5ae0
jmp 0x4a44
leaq -0x88(%rbp), %rdi
callq 0x31b0
leaq -0x89(%rbp), %rdi
callq 0x3340
jmp 0x4a95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x4a84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x31b0
leaq -0x89(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x4a97
jmp 0x4a99
jmp 0x5a43
movsbl -0x9(%rbp), %eax
cmpl $0x7d, %eax
jne 0x4bd9
movq -0x228(%rbp), %rax
movl 0x610(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x610(%rax)
cmpl $0x0, 0x610(%rax)
jne 0x4bc0
movq -0x228(%rbp), %rdi
addq $0x618, %rdi            # imm = 0x618
leaq 0x14917(%rip), %rsi     # 0x193fa
callq 0xc700
testb $0x1, %al
jne 0x4aee
jmp 0x4b0a
movq -0x228(%rbp), %rdi
movq %rdi, %rsi
addq $0x638, %rsi            # imm = 0x638
addq $0x50, %rdi
callq 0x3030
jmp 0x4b87
movq -0x228(%rbp), %rdi
addq $0x618, %rdi            # imm = 0x618
leaq 0x148e3(%rip), %rsi     # 0x19402
callq 0xc700
testb $0x1, %al
jne 0x4b2a
jmp 0x4b46
movq -0x228(%rbp), %rdi
movq %rdi, %rsi
addq $0x638, %rsi            # imm = 0x638
addq $0x70, %rdi
callq 0x3030
jmp 0x4b85
movq -0x228(%rbp), %rdi
addq $0x618, %rdi            # imm = 0x618
leaq 0x148ad(%rip), %rsi     # 0x19408
callq 0xc700
testb $0x1, %al
jne 0x4b66
jmp 0x4b83
movq -0x228(%rbp), %rdi
movq %rdi, %rsi
addq $0x638, %rsi            # imm = 0x638
addq $0x90, %rdi
callq 0x3030
jmp 0x4b85
jmp 0x4b87
movq -0x228(%rbp), %rdi
addq $0x638, %rdi            # imm = 0x638
callq 0x33e0
movq -0x228(%rbp), %rdi
addq $0x618, %rdi            # imm = 0x618
callq 0x33e0
movq -0x228(%rbp), %rax
movl $0x0, 0xb0(%rax)
jmp 0x4bd7
movq -0x228(%rbp), %rdi
addq $0x638, %rdi            # imm = 0x638
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x4c23
movsbl -0x9(%rbp), %eax
cmpl $0x7b, %eax
jne 0x4c0a
movq -0x228(%rbp), %rdi
movl 0x610(%rdi), %eax
addl $0x1, %eax
movl %eax, 0x610(%rdi)
addq $0x638, %rdi            # imm = 0x638
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x4c21
movq -0x228(%rbp), %rdi
addq $0x638, %rdi            # imm = 0x638
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x4c23
jmp 0x5a43
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
je 0x4c52
movq -0x228(%rbp), %rdi
addq $0x658, %rdi            # imm = 0x658
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x4dac
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
jne 0x4cf4
movq -0x228(%rbp), %rdi
addq $0x658, %rdi            # imm = 0x658
leaq 0x147a1(%rip), %rsi     # 0x19415
callq 0xc700
movq -0x228(%rbp), %rdi
movb %al, %dl
movl $0x2, %eax
movl $0x1, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
movl %eax, -0x25c(%rbp)
movq %rdi, %rax
addq $0x698, %rax            # imm = 0x698
movq %rax, -0x268(%rbp)
addq $0x698, %rdi            # imm = 0x698
callq 0xd040
movq -0x268(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0xd020
movl -0x25c(%rbp), %edx
movq %rax, %rcx
movq -0x228(%rbp), %rax
movl %edx, (%rcx)
movl $0xd, 0xb0(%rax)
jmp 0x4daa
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x278(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x34f0
movq -0x270(%rbp), %rdx
leaq 0x146f1(%rip), %rsi     # 0x1941a
leaq -0xb0(%rbp), %rdi
callq 0x3830
jmp 0x4d37
movq -0x278(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0xb0(%rbp), %rdx
callq 0x5ae0
jmp 0x4d59
leaq -0xb0(%rbp), %rdi
callq 0x31b0
leaq -0xb1(%rbp), %rdi
callq 0x3340
jmp 0x4daa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x4d99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x31b0
leaq -0xb1(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x4dac
jmp 0x5a43
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
je 0x4ddb
movq -0x228(%rbp), %rdi
addq $0x678, %rdi            # imm = 0x678
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x4fde
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
jne 0x4e69
movq -0x228(%rbp), %rdi
addq $0x678, %rdi            # imm = 0x678
callq 0x3200
cmpq $0x0, %rax
je 0x4e64
movq -0x228(%rbp), %rdi
movq %rdi, %rax
addq $0x698, %rax            # imm = 0x698
movq %rax, -0x280(%rbp)
addq $0x698, %rdi            # imm = 0x698
callq 0xd040
movq -0x280(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0xd020
movq -0x228(%rbp), %rsi
movq %rax, %rdi
addq $0x8, %rdi
addq $0x678, %rsi            # imm = 0x678
callq 0xd060
movq -0x228(%rbp), %rdi
addq $0x678, %rdi            # imm = 0x678
callq 0x33e0
jmp 0x4fdc
movsbl -0x9(%rbp), %eax
cmpl $0xd, %eax
je 0x4e7f
movsbl -0x9(%rbp), %eax
cmpl $0xa, %eax
jne 0x4f24
movq -0x228(%rbp), %rdi
addq $0x678, %rdi            # imm = 0x678
callq 0x3200
cmpq $0x0, %rax
je 0x4efb
movq -0x228(%rbp), %rdi
movq %rdi, %rax
addq $0x698, %rax            # imm = 0x698
movq %rax, -0x288(%rbp)
addq $0x698, %rdi            # imm = 0x698
callq 0xd040
movq -0x288(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0xd020
movq -0x228(%rbp), %rsi
movq %rax, %rdi
addq $0x8, %rdi
addq $0x678, %rsi            # imm = 0x678
callq 0xd060
movq -0x228(%rbp), %rdi
addq $0x678, %rdi            # imm = 0x678
callq 0x33e0
movq -0x228(%rbp), %rdi
addq $0x658, %rdi            # imm = 0x658
callq 0x33e0
movq -0x228(%rbp), %rax
movl $0x0, 0xb0(%rax)
jmp 0x4fda
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x298(%rbp)
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x34f0
movq -0x290(%rbp), %rdx
leaq 0x144d6(%rip), %rsi     # 0x1942f
leaq -0xd8(%rbp), %rdi
callq 0x3830
jmp 0x4f67
movq -0x298(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0xd8(%rbp), %rdx
callq 0x5ae0
jmp 0x4f89
leaq -0xd8(%rbp), %rdi
callq 0x31b0
leaq -0xd9(%rbp), %rdi
callq 0x3340
jmp 0x4fda
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x4fc9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x31b0
leaq -0xd9(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x4fdc
jmp 0x4fde
jmp 0x5a43
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
jne 0x5011
movsbl -0x9(%rbp), %eax
cmpl $0x5f, %eax
je 0x5011
movsbl -0x9(%rbp), %edi
callq 0x32a0
cmpl $0x0, %eax
jne 0x5011
movsbl -0x9(%rbp), %eax
cmpl $0x2d, %eax
jne 0x5031
movq -0x228(%rbp), %rdi
addq $0xb8, %rdi
addq $0x8, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x514a
movsbl -0x9(%rbp), %eax
cmpl $0x28, %eax
jne 0x5050
movq -0x228(%rbp), %rax
movl $0x2, 0xb0(%rax)
jmp 0x5148
movsbl -0x9(%rbp), %eax
cmpl $0x2d, %eax
jne 0x506f
movq -0x228(%rbp), %rax
movl $0x4, 0xb0(%rax)
jmp 0x5146
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
jne 0x508e
movq -0x228(%rbp), %rax
movl $0x3, 0xb0(%rax)
jmp 0x5144
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x2a8(%rbp)
leaq -0x101(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x34f0
movq -0x2a0(%rbp), %rdx
leaq 0x1438a(%rip), %rsi     # 0x1944d
leaq -0x100(%rbp), %rdi
callq 0x3830
jmp 0x50d1
movq -0x2a8(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x100(%rbp), %rdx
callq 0x5ae0
jmp 0x50f3
leaq -0x100(%rbp), %rdi
callq 0x31b0
leaq -0x101(%rbp), %rdi
callq 0x3340
jmp 0x5144
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x5133
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x31b0
leaq -0x101(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x5146
jmp 0x5148
jmp 0x514a
jmp 0x5a43
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
je 0x517d
movq -0x228(%rbp), %rdi
addq $0xb8, %rdi
addq $0x28, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x5254
movsbl -0x9(%rbp), %eax
cmpl $0x29, %eax
jne 0x519c
movq -0x228(%rbp), %rax
movl $0x3, 0xb0(%rax)
jmp 0x5252
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x2b8(%rbp)
leaq -0x129(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x34f0
movq -0x2b0(%rbp), %rdx
leaq 0x14292(%rip), %rsi     # 0x19463
leaq -0x128(%rbp), %rdi
callq 0x3830
jmp 0x51df
movq -0x2b8(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x128(%rbp), %rdx
callq 0x5ae0
jmp 0x5201
leaq -0x128(%rbp), %rdi
callq 0x31b0
leaq -0x129(%rbp), %rdi
callq 0x3340
jmp 0x5252
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x5241
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x31b0
leaq -0x129(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x5254
jmp 0x5a43
movsbl -0x9(%rbp), %eax
cmpl $0x2d, %eax
jne 0x5278
movq -0x228(%rbp), %rax
movl $0x4, 0xb0(%rax)
jmp 0x533d
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
je 0x533b
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x2c8(%rbp)
leaq -0x151(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x34f0
movq -0x2c0(%rbp), %rdx
leaq 0x141ba(%rip), %rsi     # 0x19474
leaq -0x150(%rbp), %rdi
callq 0x3830
jmp 0x52c8
movq -0x2c8(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x150(%rbp), %rdx
callq 0x5ae0
jmp 0x52ea
leaq -0x150(%rbp), %rdi
callq 0x31b0
leaq -0x151(%rbp), %rdi
callq 0x3340
jmp 0x533b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x532a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x31b0
leaq -0x151(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x533d
jmp 0x5a43
movsbl -0x9(%rbp), %eax
cmpl $0x3e, %eax
jne 0x537a
movq -0x228(%rbp), %rdi
movl $0x5, 0xb0(%rdi)
movq %rdi, %rsi
addq $0x160, %rsi            # imm = 0x160
movq %rdi, %rdx
addq $0xb8, %rdx
callq 0x96a0
jmp 0x5430
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x2d8(%rbp)
leaq -0x179(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x34f0
movq -0x2d0(%rbp), %rdx
leaq 0x140ce(%rip), %rsi     # 0x1947d
leaq -0x178(%rbp), %rdi
callq 0x3830
jmp 0x53bd
movq -0x2d8(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x178(%rbp), %rdx
callq 0x5ae0
jmp 0x53df
leaq -0x178(%rbp), %rdi
callq 0x31b0
leaq -0x179(%rbp), %rdi
callq 0x3340
jmp 0x5430
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x541f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x31b0
leaq -0x179(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x5a43
movsbl -0x9(%rbp), %eax
cmpl $0x2e, %eax
jne 0x5454
movq -0x228(%rbp), %rax
movl $0x8, 0xb0(%rax)
jmp 0x5553
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
je 0x548c
movq -0x228(%rbp), %rdi
movl $0x6, 0xb0(%rdi)
addq $0xb8, %rdi
addq $0x8, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x5551
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
je 0x554f
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x2e8(%rbp)
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x34f0
movq -0x2e0(%rbp), %rdx
leaq 0x13fb8(%rip), %rsi     # 0x19486
leaq -0x1a0(%rbp), %rdi
callq 0x3830
jmp 0x54dc
movq -0x2e8(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x1a0(%rbp), %rdx
callq 0x5ae0
jmp 0x54fe
leaq -0x1a0(%rbp), %rdi
callq 0x31b0
leaq -0x1a1(%rbp), %rdi
callq 0x3340
jmp 0x554f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x553e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x31b0
leaq -0x1a1(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x5551
jmp 0x5553
jmp 0x5a43
movsbl -0x9(%rbp), %eax
cmpl $0x2e, %eax
jne 0x5590
movq -0x228(%rbp), %rdi
movl $0x8, 0xb0(%rdi)
movq %rdi, %rsi
addq $0x160, %rsi            # imm = 0x160
movq %rdi, %rdx
addq $0xb8, %rdx
callq 0x96a0
jmp 0x56f1
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
jne 0x55be
movsbl -0x9(%rbp), %eax
cmpl $0x5f, %eax
je 0x55be
movsbl -0x9(%rbp), %edi
callq 0x32a0
cmpl $0x0, %eax
jne 0x55be
movsbl -0x9(%rbp), %eax
cmpl $0x2d, %eax
jne 0x55de
movq -0x228(%rbp), %rdi
addq $0xb8, %rdi
addq $0x8, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x56ef
movsbl -0x9(%rbp), %eax
cmpl $0x28, %eax
jne 0x55fd
movq -0x228(%rbp), %rax
movl $0x7, 0xb0(%rax)
jmp 0x56ed
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
jne 0x5635
movq -0x228(%rbp), %rdi
movl $0x5, 0xb0(%rdi)
movq %rdi, %rsi
addq $0x160, %rsi            # imm = 0x160
movq %rdi, %rdx
addq $0xb8, %rdx
callq 0x96a0
jmp 0x56eb
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x2f8(%rbp)
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x34f0
movq -0x2f0(%rbp), %rdx
leaq 0x13e30(%rip), %rsi     # 0x1949a
leaq -0x1c8(%rbp), %rdi
callq 0x3830
jmp 0x5678
movq -0x2f8(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x1c8(%rbp), %rdx
callq 0x5ae0
jmp 0x569a
leaq -0x1c8(%rbp), %rdi
callq 0x31b0
leaq -0x1c9(%rbp), %rdi
callq 0x3340
jmp 0x56eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x56da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x31b0
leaq -0x1c9(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x56ed
jmp 0x56ef
jmp 0x56f1
jmp 0x5a43
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
je 0x5724
movq -0x228(%rbp), %rdi
addq $0xb8, %rdi
addq $0x28, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
jmp 0x5814
movsbl -0x9(%rbp), %eax
cmpl $0x29, %eax
jne 0x575c
movq -0x228(%rbp), %rdi
movl $0x5, 0xb0(%rdi)
movq %rdi, %rsi
addq $0x160, %rsi            # imm = 0x160
movq %rdi, %rdx
addq $0xb8, %rdx
callq 0x96a0
jmp 0x5812
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x308(%rbp)
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x34f0
movq -0x300(%rbp), %rdx
leaq 0x13d1f(%rip), %rsi     # 0x194b0
leaq -0x1f0(%rbp), %rdi
callq 0x3830
jmp 0x579f
movq -0x308(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x1f0(%rbp), %rdx
callq 0x5ae0
jmp 0x57c1
leaq -0x1f0(%rbp), %rdi
callq 0x31b0
leaq -0x1f1(%rbp), %rdi
callq 0x3340
jmp 0x5812
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x5801
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x31b0
leaq -0x1f1(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x5814
jmp 0x5a43
movsbl -0x9(%rbp), %eax
cmpl $0x7b, %eax
jne 0x5862
movq -0x228(%rbp), %rdi
movl 0x610(%rdi), %eax
addl $0x1, %eax
movl %eax, 0x610(%rdi)
addq $0x160, %rdi            # imm = 0x160
addq $0x60, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
movq -0x228(%rbp), %rax
movl $0x9, 0xb0(%rax)
jmp 0x5998
movsbl -0x9(%rbp), %edi
callq 0x3470
cmpl $0x0, %eax
je 0x58b7
movq -0x228(%rbp), %rdi
movq %rdi, %rsi
addq $0x160, %rsi            # imm = 0x160
callq 0x98a0
movq -0x228(%rbp), %rdi
addq $0xb8, %rdi
addq $0x8, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
movq -0x228(%rbp), %rax
movl $0x1, 0xb0(%rax)
jmp 0x5996
movsbl -0x9(%rbp), %eax
cmpl $0x20, %eax
je 0x5994
movsbl -0x9(%rbp), %eax
cmpl $0xd, %eax
je 0x5994
movsbl -0x9(%rbp), %eax
cmpl $0xa, %eax
je 0x5994
movq -0x228(%rbp), %rax
addq $0x208, %rax            # imm = 0x208
movq %rax, -0x318(%rbp)
leaq -0x219(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x34f0
movq -0x310(%rbp), %rdx
leaq 0x13bae(%rip), %rsi     # 0x194c1
leaq -0x218(%rbp), %rdi
callq 0x3830
jmp 0x5921
movq -0x318(%rbp), %rsi
movq -0x228(%rbp), %rdi
movl 0x608(%rdi), %ecx
leaq -0x218(%rbp), %rdx
callq 0x5ae0
jmp 0x5943
leaq -0x218(%rbp), %rdi
callq 0x31b0
leaq -0x219(%rbp), %rdi
callq 0x3340
jmp 0x5994
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x5983
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x31b0
leaq -0x219(%rbp), %rdi
callq 0x3340
jmp 0x5ac9
jmp 0x5996
jmp 0x5998
jmp 0x5a43
movsbl -0x9(%rbp), %eax
cmpl $0x7d, %eax
jne 0x5a05
movq -0x228(%rbp), %rdi
addq $0x160, %rdi            # imm = 0x160
addq $0x60, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
movq -0x228(%rbp), %rcx
movl 0x610(%rcx), %eax
addl $-0x1, %eax
movl %eax, 0x610(%rcx)
cmpl $0x0, %eax
jne 0x5a03
movq -0x228(%rbp), %rdi
movq %rdi, %rsi
addq $0x160, %rsi            # imm = 0x160
callq 0x98a0
movq -0x228(%rbp), %rax
movl $0x0, 0xb0(%rax)
jmp 0x5a41
movq -0x228(%rbp), %rdi
addq $0x160, %rdi            # imm = 0x160
addq $0x60, %rdi
movsbl -0x9(%rbp), %esi
callq 0x3270
movsbl -0x9(%rbp), %eax
cmpl $0x7b, %eax
jne 0x5a3f
movq -0x228(%rbp), %rax
movl 0x610(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x610(%rax)
jmp 0x5a41
jmp 0x5a43
movsbl -0x9(%rbp), %eax
cmpl $0xa, %eax
jne 0x5ac0
movl $0x0, -0x220(%rbp)
cmpl $0x400, -0x220(%rbp)    # imm = 0x400
jge 0x5a89
movq -0x228(%rbp), %rax
movslq -0x220(%rbp), %rcx
movb $0x0, 0x208(%rax,%rcx)
movl -0x220(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x220(%rbp)
jmp 0x5a56
movq -0x228(%rbp), %rax
cmpl $0x0, 0x608(%rax)
je 0x5aaf
movq -0x228(%rbp), %rax
movl 0x60c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x60c(%rax)
movq -0x228(%rbp), %rax
movl $0x0, 0x608(%rax)
addq $0x320, %rsp            # imm = 0x320
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x34e0
nopw %cs:(%rax,%rax)