// File: lishen2[P]Excel_formula_parser_cpp/FormulaParser.cpp
// Function: ExcelFormula::FormulaParser::parserToToken1()
void FormulaParser::parserToToken1()
	{
		if (m_formula.size() < 2 
				|| m_formula[0] != '=') return;

		//! keywords used in parsing excel formual
		const char QUOTE_DOUBLE  = '"';
		const char QUOTE_SINGLE  = '\'';
		const char BRACKET_CLOSE = ']';
		const char BRACKET_OPEN  = '[';
		const char BRACE_OPEN    = '{';
		const char BRACE_CLOSE   = '}';
		const char PAREN_OPEN    = '(';
		const char PAREN_CLOSE   = ')';
		const char SEMICOLON     = ';';
		const char WHITESPACE    = ' ';
		const char COMMA         = ',';
		const char ERROR_START   = '#';

		const string OPERATORS_SN = "+-";
		const string OPERATORS_INFIX = "+-*/^&=><";
		const string OPERATORS_POSTFIX = "%";

		const char* ERRORS[] = {"#NULL!", "#DIV/0!", "#VALUE!", "#REF!", "#NAME?", "#NUM!", "#N/A"};
		const int ERRORS_LEN = 7; 

		const char* COMPARATORS_MULTI[] = {">=", "<=", "<>"};
		const int COMPARATORS_MULTI_LEN = 3;

		bool inString = false;
		bool inPath = false;
		bool inRange = false;
		bool inError = false;

		int index = 1;
		string value = "";      

		while(index < m_formula.size())
		{
			// state-dependent character evaluation (order is important)

			// double-quoted strings
			// embeds are doubled
			// end marks token

			if (inString) {    
				if (m_formula[index] == QUOTE_DOUBLE) {
					if (((index + 2) <= m_formula.size()) && (m_formula[index + 1] == QUOTE_DOUBLE)) {
						value += QUOTE_DOUBLE;
						index++;
					} else {
						inString = false;
						m_tmpAry.add(MakeToken(value.c_str(), Token::Operand, Token::Text));
						value = "";
					}      
				} else {
					value += m_formula[index];
				}
				index++;
				continue;
			}

			// single-quoted strings (links)
			// embeds are double
			// end does not mark a token

			if (inPath) {
				if (m_formula[index] == QUOTE_SINGLE) {
					if (((index + 2) <= m_formula.size()) && (m_formula[index + 1] == QUOTE_SINGLE)) {
						value += QUOTE_SINGLE;
						index++;
					} else {
						inPath = false;
					}
				} else {
					value += m_formula[index];
				}
				index++;
				continue; 
			}    

			// bracked strings (R1C1 range index or linked workbook name)
			// no embeds (changed to "()" by Excel)
			// end does not mark a token

			if (inRange) {
				if (m_formula[index] == BRACKET_CLOSE) {
					inRange = false;
				}
				value += m_formula[index];
				index++;
				continue;
			}

			// error values
			// end marks a token, determined from absolute list of values

			if (inError) {
				value += m_formula[index];
				index++;
				if (StrUtils::indexOf(ERRORS_LEN, ERRORS, value.c_str()) != -1) {
					inError = false;
					m_tmpAry.add(MakeToken(value.c_str(), Token::Operand, Token::Error));
					value = "";
				}
				continue;
			}

			// scientific notation check

			if ((OPERATORS_SN).find_first_of(m_formula[index]) != string::npos) {
				if (value.size() > 1) {
					if (m_regex->PartialMatch(value.c_str())) {
						value+= m_formula[index];
						index++;
						continue;
					}
				}
			}

			// independent character evaluation (order not important)

			// establish state-dependent character evaluations

			if (m_formula[index] == QUOTE_DOUBLE) {  
				if (value.size() > 0) {  // unexpected
					m_tmpAry.add(MakeToken(value.c_str(), Token::Unknown));
					value = "";
				}
				inString = true;
				index++;
				continue;
			}

			if (m_formula[index] == QUOTE_SINGLE) {
				if (value.size() > 0) { // unexpected
					m_tmpAry.add(MakeToken(value.c_str(), Token::Unknown));
					value = "";
				}
				inPath = true;
				index++;
				continue;
			}

			if (m_formula[index] == BRACKET_OPEN) {
				inRange = true;
				value += BRACKET_OPEN;
				index++;
				continue;
			}

			if (m_formula[index] == ERROR_START) {
				if (value.size() > 0) { // unexpected
					m_tmpAry.add(MakeToken(value.c_str(), Token::Unknown));
					value = "";
				}
				inError = true;
				value += ERROR_START;
				index++;
				continue;
			}

			// mark start and end of arrays and array rows

			if (m_formula[index] == BRACE_OPEN) {  
				if (value.size() > 0) { // unexpected
					m_tmpAry.add(MakeToken(value.c_str(), Token::Unknown));
					value = "";
				}
				m_tmpStack.push(m_tmpAry.add(MakeToken("ARRAY", Token::Function, Token::Start)));
				m_tmpStack.push(m_tmpAry.add(MakeToken("ARRAYROW", Token::Function, Token::Start)));
				index++;
				continue;
			}

			if (m_formula[index] == SEMICOLON) {  
				if (value.size() > 0) {
					m_tmpAry.add(MakeToken(value.c_str(), Token::Operand));
					value = "";
				}
				m_tmpAry.add(m_tmpStack.pop());
				m_tmpAry.add(MakeToken(",", Token::Argument));
				m_tmpStack.push(m_tmpAry.add(MakeToken("ARRAYROW", Token::Function, Token::Start)));
				index++;
				continue;
			}

			if (m_formula[index] == BRACE_CLOSE) {  
				if (value.size() > 0) {
					m_tmpAry.add(MakeToken(value.c_str(), Token::Operand));
					value = "";
				}
				m_tmpAry.add(m_tmpStack.pop());
				m_tmpAry.add(m_tmpStack.pop());
				index++;
				continue;
			}

			// trim white-space

			if (m_formula[index] == WHITESPACE) {
				if (value.size() > 0) {
					m_tmpAry.add(MakeToken(value.c_str(), Token::Operand));
					value = "";
				}
				m_tmpAry.add(MakeToken("", Token::Whitespace));
				index++;
				while ((m_formula[index] == WHITESPACE) && (index < m_formula.size())) { 
					index++;
				}
				continue;
			}

			// multi-character comparators

			if ((index + 2) <= m_formula.size()) {
				if (StrUtils::indexOf(COMPARATORS_MULTI_LEN, COMPARATORS_MULTI, m_formula.substr(index, 2).c_str()) != -1) {
					if (value.size() > 0) {
						m_tmpAry.add(MakeToken(value.c_str(), Token::Operand));
						value = "";
					}
					m_tmpAry.add(MakeToken(m_formula.substr(index, 2).c_str(), Token::OperatorInfix, Token::Logical));
					index += 2;
					continue;     
				}
			}

			// standard infix operators

			if ((OPERATORS_INFIX).find_first_of(m_formula[index]) != string::npos) {
				if (value.size() > 0) {
					m_tmpAry.add(MakeToken(value.c_str(), Token::Operand));
					value = "";
				}
				char buf[2] = {0};
				buf[0] = m_formula[index];
				m_tmpAry.add(MakeToken(buf, Token::OperatorInfix));
				index++;
				continue;     
			}

			// standard postfix operators (only one)

			static string operatorsProtfixStr(OPERATORS_POSTFIX);
			if (operatorsProtfixStr.find_first_of(m_formula[index]) != string::npos) {
				if (value.size() > 0) {
					m_tmpAry.add(MakeToken(value.c_str(), Token::Operand));
					value = "";
				}
				char buf[2] = {0};
				buf[0] = m_formula[index];
				m_tmpAry.add(MakeToken(buf, Token::OperatorPostfix));
				index++;
				continue;     
			}

			// start subexpression or function

			if (m_formula[index] == PAREN_OPEN) {
				if (value.size() > 0) {
					m_tmpStack.push(m_tmpAry.add(MakeToken(value.c_str(), Token::Function, Token::Start)));
					value = "";
				} else {
					m_tmpStack.push(m_tmpAry.add(MakeToken("", Token::Subexpression, Token::Start)));
				}
				index++;
				continue;
			}

			// function, subexpression, or array parameters, or operand unions

			if (m_formula[index] == COMMA) {
				if (value.size() > 0) {
					m_tmpAry.add(MakeToken(value.c_str(), Token::Operand));
					value = "";
				}
				if (m_tmpStack.getCurrent()->getType() != Token::Function) {
					m_tmpAry.add(MakeToken(",", Token::OperatorInfix, Token::Union));
				} else {
					m_tmpAry.add(MakeToken(",", Token::Argument));
				}
				index++;
				continue;
			}

			// stop subexpression

			if (m_formula[index] == PAREN_CLOSE) {
				if (value.size() > 0) {
					m_tmpAry.add(MakeToken(value.c_str(), Token::Operand));
					value = "";
				}
				m_tmpAry.add(m_tmpStack.pop());
				index++;
				continue;
			}

			// token accumulation

			value += m_formula[index];
			index++;

		}

		// dump remaining accumulation

		if (value.size() > 0) {
			m_tmpAry.add(MakeToken(value.c_str(), Token::Operand));
		}

		m_tmpAry.toVector(m_tokens);

	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5b0, %rsp            # imm = 0x5B0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x198(%rbp)
callq 0x2160
cmpq $0x2, %rax
jb 0x399d
movq -0x198(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2390
movsbl (%rax), %eax
cmpl $0x3d, %eax
je 0x39a2
jmp 0x52e8
movb $0x22, -0x9(%rbp)
movb $0x27, -0xa(%rbp)
movb $0x5d, -0xb(%rbp)
movb $0x5b, -0xc(%rbp)
movb $0x7b, -0xd(%rbp)
movb $0x7d, -0xe(%rbp)
movb $0x28, -0xf(%rbp)
movb $0x29, -0x10(%rbp)
movb $0x3b, -0x11(%rbp)
movb $0x20, -0x12(%rbp)
movb $0x2c, -0x13(%rbp)
movb $0x23, -0x14(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x2330
movq -0x1a0(%rbp), %rdx
leaq 0x66c6(%rip), %rsi      # 0xa0b6
leaq -0x38(%rbp), %rdi
callq 0x5f10
jmp 0x39fb
leaq -0x39(%rbp), %rdi
callq 0x2260
leaq -0x71(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x2330
movq -0x1a8(%rbp), %rdx
leaq 0x6697(%rip), %rsi      # 0xa0b9
leaq -0x70(%rbp), %rdi
callq 0x5f10
jmp 0x3a2d
leaq -0x71(%rbp), %rdi
callq 0x2260
leaq -0x99(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x2330
movq -0x1b0(%rbp), %rdx
leaq 0x666c(%rip), %rsi      # 0xa0c3
leaq -0x98(%rbp), %rdi
callq 0x5f10
jmp 0x3a65
leaq -0x99(%rbp), %rdi
callq 0x2260
movq 0xa2e8(%rip), %rax      # 0xdd60
movq %rax, -0xb0(%rbp)
movaps 0xa2ca(%rip), %xmm0     # 0xdd50
movaps %xmm0, -0xc0(%rbp)
movaps 0xa2ac(%rip), %xmm0     # 0xdd40
movaps %xmm0, -0xd0(%rbp)
movaps 0xa28e(%rip), %xmm0     # 0xdd30
movaps %xmm0, -0xe0(%rbp)
movl $0x7, -0xe4(%rbp)
movq 0xa2c6(%rip), %rax      # 0xdd80
movq %rax, -0xf0(%rbp)
movaps 0xa2a8(%rip), %xmm0     # 0xdd70
movaps %xmm0, -0x100(%rbp)
movl $0x3, -0x104(%rbp)
movb $0x0, -0x105(%rbp)
movb $0x0, -0x106(%rbp)
movb $0x0, -0x107(%rbp)
movb $0x0, -0x108(%rbp)
movl $0x1, -0x10c(%rbp)
leaq -0x131(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x2330
movq -0x1b8(%rbp), %rdx
leaq 0x6685(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x5f10
jmp 0x3b2e
leaq -0x131(%rbp), %rdi
callq 0x2260
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rax
movq %rax, -0x1c0(%rbp)
callq 0x2160
movq %rax, %rcx
movq -0x1c0(%rbp), %rax
cmpq %rcx, %rax
jae 0x524b
testb $0x1, -0x105(%rbp)
je 0x3d62
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x1c8(%rbp)
jmp 0x3b90
movq -0x1c8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
jne 0x3d18
movq -0x198(%rbp), %rdi
movl -0x10c(%rbp), %eax
addl $0x2, %eax
cltq
movq %rax, -0x1d0(%rbp)
callq 0x2160
movq %rax, %rcx
movq -0x1d0(%rbp), %rax
cmpq %rcx, %rax
ja 0x3cad
movq -0x198(%rbp), %rdi
movl -0x10c(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x2390
movq %rax, -0x1d8(%rbp)
jmp 0x3bf4
movq -0x1d8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
jne 0x3cad
leaq -0x130(%rbp), %rdi
movl $0x22, %esi
callq 0x2110
jmp 0x3c1a
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3d16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x39(%rbp), %rdi
callq 0x2260
jmp 0x531b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x71(%rbp), %rdi
callq 0x2260
jmp 0x5312
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x99(%rbp), %rdi
callq 0x2260
jmp 0x5309
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x131(%rbp), %rdi
callq 0x2260
jmp 0x52fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x52f1
movq -0x198(%rbp), %rax
movb $0x0, -0x105(%rbp)
addq $0x38, %rax
movq %rax, -0x1e8(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
movl $0x3, %edx
callq 0x7390
movq %rax, -0x1e0(%rbp)
jmp 0x3cea
movq -0x1e0(%rbp), %rsi
movq -0x1e8(%rbp), %rdi
callq 0x76d0
jmp 0x3cff
leaq 0x649f(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x3d14
jmp 0x3d16
jmp 0x3d4e
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x1f0(%rbp)
jmp 0x3d34
movq -0x1f0(%rbp), %rax
movsbl (%rax), %esi
leaq -0x130(%rbp), %rdi
callq 0x2110
jmp 0x3d4c
jmp 0x3d4e
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
testb $0x1, -0x106(%rbp)
je 0x3e71
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x1f8(%rbp)
jmp 0x3d8b
movq -0x1f8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x27, %eax
jne 0x3e27
movq -0x198(%rbp), %rdi
movl -0x10c(%rbp), %eax
addl $0x2, %eax
cltq
movq %rax, -0x200(%rbp)
callq 0x2160
movq %rax, %rcx
movq -0x200(%rbp), %rax
cmpq %rcx, %rax
ja 0x3e1e
movq -0x198(%rbp), %rdi
movl -0x10c(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x2390
movq %rax, -0x208(%rbp)
jmp 0x3deb
movq -0x208(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x27, %eax
jne 0x3e1e
leaq -0x130(%rbp), %rdi
movl $0x27, %esi
callq 0x2110
jmp 0x3e0d
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3e25
movb $0x0, -0x106(%rbp)
jmp 0x3e5d
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x210(%rbp)
jmp 0x3e43
movq -0x210(%rbp), %rax
movsbl (%rax), %esi
leaq -0x130(%rbp), %rdi
callq 0x2110
jmp 0x3e5b
jmp 0x3e5d
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
testb $0x1, -0x107(%rbp)
je 0x3ef4
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x218(%rbp)
jmp 0x3e96
movq -0x218(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5d, %eax
jne 0x3eac
movb $0x0, -0x107(%rbp)
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x220(%rbp)
jmp 0x3ec8
movq -0x220(%rbp), %rax
movsbl (%rax), %esi
leaq -0x130(%rbp), %rdi
callq 0x2110
jmp 0x3ee0
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
testb $0x1, -0x108(%rbp)
je 0x3fe4
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x228(%rbp)
jmp 0x3f1d
movq -0x228(%rbp), %rax
movsbl (%rax), %esi
leaq -0x130(%rbp), %rdi
callq 0x2110
jmp 0x3f35
movl -0x10c(%rbp), %eax
incl %eax
movl %eax, -0x10c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdx
movl $0x7, %edi
leaq -0xe0(%rbp), %rsi
callq 0x6d80
movl %eax, -0x22c(%rbp)
jmp 0x3f6b
movl -0x22c(%rbp), %eax
cmpl $-0x1, %eax
je 0x3fdf
movq -0x198(%rbp), %rax
movb $0x0, -0x108(%rbp)
addq $0x38, %rax
movq %rax, -0x240(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
movl $0x6, %edx
callq 0x7390
movq %rax, -0x238(%rbp)
jmp 0x3fb3
movq -0x238(%rbp), %rsi
movq -0x240(%rbp), %rdi
callq 0x76d0
jmp 0x3fc8
leaq 0x61d6(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x3fdd
jmp 0x3fdf
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x248(%rbp)
jmp 0x4000
movq -0x248(%rbp), %rax
leaq -0x38(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
movsbl (%rax), %esi
callq 0x2120
cmpq $-0x1, %rax
je 0x412c
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x1, %rax
jbe 0x412a
movq -0x198(%rbp), %rax
movq 0xa8(%rax), %rax
movq %rax, -0x250(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rsi
leaq -0x148(%rbp), %rdi
callq 0x5fc0
jmp 0x4069
movq -0x250(%rbp), %rdi
movq 0x9f51(%rip), %r9       # 0xdfc8
movq %r9, -0x268(%rbp)
movq %rsp, %rax
movq %rax, -0x260(%rbp)
movq %r9, 0x58(%rax)
movq %r9, 0x50(%rax)
movq %r9, 0x48(%rax)
movq %r9, 0x40(%rax)
movq %r9, 0x38(%rax)
movq %r9, 0x30(%rax)
movq %r9, 0x28(%rax)
movq %r9, 0x20(%rax)
movq %r9, 0x18(%rax)
movq %r9, 0x10(%rax)
movq %r9, 0x8(%rax)
movq %r9, (%rax)
leaq -0x148(%rbp), %rsi
movq %r9, %rdx
movq %r9, %rcx
movq %r9, %r8
callq 0x2090
movb %al, -0x251(%rbp)
jmp 0x40d4
movb -0x251(%rbp), %al
testb $0x1, %al
jne 0x40e0
jmp 0x4128
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x270(%rbp)
jmp 0x40fc
movq -0x270(%rbp), %rax
movsbl (%rax), %esi
leaq -0x130(%rbp), %rdi
callq 0x2110
jmp 0x4114
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
jmp 0x412a
jmp 0x412c
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x278(%rbp)
jmp 0x4148
movq -0x278(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
jne 0x41e8
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x41cd
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x288(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
movl $0x8, %esi
callq 0x7450
movq %rax, -0x280(%rbp)
jmp 0x41a1
movq -0x280(%rbp), %rsi
movq -0x288(%rbp), %rdi
callq 0x76d0
jmp 0x41b6
leaq 0x5fe8(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x41cb
jmp 0x41cd
movb $0x1, -0x105(%rbp)
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x290(%rbp)
jmp 0x4204
movq -0x290(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x27, %eax
jne 0x42a4
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x4289
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x2a0(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
movl $0x8, %esi
callq 0x7450
movq %rax, -0x298(%rbp)
jmp 0x425d
movq -0x298(%rbp), %rsi
movq -0x2a0(%rbp), %rdi
callq 0x76d0
jmp 0x4272
leaq 0x5f2c(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x4287
jmp 0x4289
movb $0x1, -0x106(%rbp)
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x2a8(%rbp)
jmp 0x42c0
movq -0x2a8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5b, %eax
jne 0x42fd
movb $0x1, -0x107(%rbp)
leaq -0x130(%rbp), %rdi
movl $0x5b, %esi
callq 0x2110
jmp 0x42e9
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x2b0(%rbp)
jmp 0x4319
movq -0x2b0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x43cc
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x439e
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x2c0(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
movl $0x8, %esi
callq 0x7450
movq %rax, -0x2b8(%rbp)
jmp 0x4372
movq -0x2b8(%rbp), %rsi
movq -0x2c0(%rbp), %rdi
callq 0x76d0
jmp 0x4387
leaq 0x5e17(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x439c
jmp 0x439e
movb $0x1, -0x108(%rbp)
leaq -0x130(%rbp), %rdi
movl $0x23, %esi
callq 0x2110
jmp 0x43b8
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x2c8(%rbp)
jmp 0x43e8
movq -0x2c8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x7b, %eax
jne 0x455b
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x446d
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x2d8(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
movl $0x8, %esi
callq 0x7450
movq %rax, -0x2d0(%rbp)
jmp 0x4441
movq -0x2d0(%rbp), %rsi
movq -0x2d8(%rbp), %rdi
callq 0x76d0
jmp 0x4456
leaq 0x5d48(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x446b
jmp 0x446d
movq -0x198(%rbp), %rax
movq %rax, %rcx
addq $0x58, %rcx
movq %rcx, -0x2f0(%rbp)
addq $0x38, %rax
movq %rax, -0x2e8(%rbp)
leaq 0x5c66(%rip), %rdi      # 0xa0fa
movl $0x1, %edx
movl %edx, %esi
callq 0x7390
movq %rax, -0x2e0(%rbp)
jmp 0x44a9
movq -0x2e0(%rbp), %rsi
movq -0x2e8(%rbp), %rdi
callq 0x76d0
movq %rax, -0x2f8(%rbp)
jmp 0x44c5
movq -0x2f8(%rbp), %rsi
movq -0x2f0(%rbp), %rdi
callq 0x8530
jmp 0x44da
movq -0x198(%rbp), %rax
movq %rax, %rcx
addq $0x58, %rcx
movq %rcx, -0x310(%rbp)
addq $0x38, %rax
movq %rax, -0x308(%rbp)
leaq 0x5bff(%rip), %rdi      # 0xa100
movl $0x1, %edx
movl %edx, %esi
callq 0x7390
movq %rax, -0x300(%rbp)
jmp 0x4516
movq -0x300(%rbp), %rsi
movq -0x308(%rbp), %rdi
callq 0x76d0
movq %rax, -0x318(%rbp)
jmp 0x4532
movq -0x318(%rbp), %rsi
movq -0x310(%rbp), %rdi
callq 0x8530
jmp 0x4547
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x320(%rbp)
jmp 0x4577
movq -0x320(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3b, %eax
jne 0x46f7
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x45f9
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x330(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
callq 0x7450
movq %rax, -0x328(%rbp)
jmp 0x45cd
movq -0x328(%rbp), %rsi
movq -0x330(%rbp), %rdi
callq 0x76d0
jmp 0x45e2
leaq 0x5bbc(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x45f7
jmp 0x45f9
movq -0x198(%rbp), %rdi
movq %rdi, %rax
addq $0x38, %rax
movq %rax, -0x340(%rbp)
addq $0x58, %rdi
callq 0x8560
movq %rax, -0x338(%rbp)
jmp 0x4620
movq -0x338(%rbp), %rsi
movq -0x340(%rbp), %rdi
callq 0x76d0
jmp 0x4635
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x350(%rbp)
leaq 0x5abb(%rip), %rdi      # 0xa109
movl $0x3, %esi
callq 0x7450
movq %rax, -0x348(%rbp)
jmp 0x4661
movq -0x348(%rbp), %rsi
movq -0x350(%rbp), %rdi
callq 0x76d0
jmp 0x4676
movq -0x198(%rbp), %rax
movq %rax, %rcx
addq $0x58, %rcx
movq %rcx, -0x368(%rbp)
addq $0x38, %rax
movq %rax, -0x360(%rbp)
leaq 0x5a63(%rip), %rdi      # 0xa100
movl $0x1, %edx
movl %edx, %esi
callq 0x7390
movq %rax, -0x358(%rbp)
jmp 0x46b2
movq -0x358(%rbp), %rsi
movq -0x360(%rbp), %rdi
callq 0x76d0
movq %rax, -0x370(%rbp)
jmp 0x46ce
movq -0x370(%rbp), %rsi
movq -0x368(%rbp), %rdi
callq 0x8530
jmp 0x46e3
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x378(%rbp)
jmp 0x4713
movq -0x378(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x7d, %eax
jne 0x4821
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x4795
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x388(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
callq 0x7450
movq %rax, -0x380(%rbp)
jmp 0x4769
movq -0x380(%rbp), %rsi
movq -0x388(%rbp), %rdi
callq 0x76d0
jmp 0x477e
leaq 0x5a20(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x4793
jmp 0x4795
movq -0x198(%rbp), %rdi
movq %rdi, %rax
addq $0x38, %rax
movq %rax, -0x398(%rbp)
addq $0x58, %rdi
callq 0x8560
movq %rax, -0x390(%rbp)
jmp 0x47bc
movq -0x390(%rbp), %rsi
movq -0x398(%rbp), %rdi
callq 0x76d0
jmp 0x47d1
movq -0x198(%rbp), %rdi
movq %rdi, %rax
addq $0x38, %rax
movq %rax, -0x3a8(%rbp)
addq $0x58, %rdi
callq 0x8560
movq %rax, -0x3a0(%rbp)
jmp 0x47f8
movq -0x3a0(%rbp), %rsi
movq -0x3a8(%rbp), %rdi
callq 0x76d0
jmp 0x480d
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x3b0(%rbp)
jmp 0x483d
movq -0x3b0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x4994
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x48bf
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x3c0(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
callq 0x7450
movq %rax, -0x3b8(%rbp)
jmp 0x4893
movq -0x3b8(%rbp), %rsi
movq -0x3c0(%rbp), %rdi
callq 0x76d0
jmp 0x48a8
leaq 0x58f6(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x48bd
jmp 0x48bf
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x3d0(%rbp)
leaq 0x58cd(%rip), %rdi      # 0xa1a5
movl $0x7, %esi
callq 0x7450
movq %rax, -0x3c8(%rbp)
jmp 0x48eb
movq -0x3c8(%rbp), %rsi
movq -0x3d0(%rbp), %rdi
callq 0x76d0
jmp 0x4900
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x3d8(%rbp)
jmp 0x492b
movq -0x3d8(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x20, %ecx
movb %al, -0x3d9(%rbp)
jne 0x4972
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rax
movq %rax, -0x3e8(%rbp)
callq 0x2160
movq %rax, %rcx
movq -0x3e8(%rbp), %rax
cmpq %rcx, %rax
setb %al
movb %al, -0x3d9(%rbp)
movb -0x3d9(%rbp), %al
testb $0x1, %al
jne 0x497e
jmp 0x498f
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x490f
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movl -0x10c(%rbp), %eax
addl $0x2, %eax
cltq
movq %rax, -0x3f0(%rbp)
callq 0x2160
movq %rax, %rcx
movq -0x3f0(%rbp), %rax
cmpq %rcx, %rax
ja 0x4b6a
movq -0x198(%rbp), %rsi
leaq -0x100(%rbp), %rax
movq %rax, -0x3f8(%rbp)
movslq -0x10c(%rbp), %rdx
leaq -0x168(%rbp), %rdi
movl $0x2, %ecx
callq 0x2230
jmp 0x49f4
leaq -0x168(%rbp), %rdi
callq 0x20c0
movq -0x3f8(%rbp), %rsi
movq %rax, %rdx
movl $0x3, %edi
callq 0x6d80
movl %eax, -0x3fc(%rbp)
jmp 0x4a1c
leaq -0x168(%rbp), %rdi
callq 0x23a8
movl -0x3fc(%rbp), %eax
cmpl $-0x1, %eax
je 0x4b68
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x4ac3
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x410(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
callq 0x7450
movq %rax, -0x408(%rbp)
jmp 0x4a7a
movq -0x408(%rbp), %rsi
movq -0x410(%rbp), %rdi
callq 0x76d0
jmp 0x4a8f
leaq 0x570f(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x4aa4
jmp 0x4ac3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x23a8
jmp 0x52f1
movq -0x198(%rbp), %rsi
movq %rsi, %rax
addq $0x38, %rax
movq %rax, -0x418(%rbp)
movslq -0x10c(%rbp), %rdx
leaq -0x188(%rbp), %rdi
movl $0x2, %ecx
callq 0x2230
jmp 0x4af2
leaq -0x188(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
movl $0x5, %edx
movl %edx, %esi
callq 0x7390
movq %rax, -0x420(%rbp)
jmp 0x4b16
movq -0x420(%rbp), %rsi
movq -0x418(%rbp), %rdi
callq 0x76d0
jmp 0x4b2b
leaq -0x188(%rbp), %rdi
callq 0x23a8
movl -0x10c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x23a8
jmp 0x52f1
jmp 0x4b6a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x428(%rbp)
jmp 0x4b86
movq -0x428(%rbp), %rax
leaq -0x70(%rbp), %rdi
xorl %ecx, %ecx
movl %ecx, %edx
movsbl (%rax), %esi
callq 0x2120
cmpq $-0x1, %rax
je 0x4c9f
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x4c16
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x438(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
callq 0x7450
movq %rax, -0x430(%rbp)
jmp 0x4bea
movq -0x430(%rbp), %rsi
movq -0x438(%rbp), %rdi
callq 0x76d0
jmp 0x4bff
leaq 0x559f(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x4c14
jmp 0x4c16
movq -0x198(%rbp), %rdi
movw $0x0, -0x18a(%rbp)
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x440(%rbp)
jmp 0x4c3b
movq -0x198(%rbp), %rax
movq -0x440(%rbp), %rcx
movb (%rcx), %cl
movb %cl, -0x18a(%rbp)
addq $0x38, %rax
movq %rax, -0x450(%rbp)
leaq -0x18a(%rbp), %rdi
movl $0x5, %esi
callq 0x7450
movq %rax, -0x448(%rbp)
jmp 0x4c76
movq -0x448(%rbp), %rsi
movq -0x450(%rbp), %rdi
callq 0x76d0
jmp 0x4c8b
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
cmpb $0x0, 0x956a(%rip)      # 0xe210
jne 0x4cf4
leaq 0x9561(%rip), %rdi      # 0xe210
callq 0x2350
cmpl $0x0, %eax
je 0x4cf4
leaq 0x9530(%rip), %rdi      # 0xe1f0
leaq -0x98(%rbp), %rsi
callq 0x20d0
jmp 0x4cce
movq 0x92e3(%rip), %rdi      # 0xdfb8
leaq 0x9514(%rip), %rsi      # 0xe1f0
leaq 0x94f5(%rip), %rdx      # 0xe1d8
callq 0x21b0
leaq 0x9521(%rip), %rdi      # 0xe210
callq 0x2140
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x458(%rbp)
jmp 0x4d10
movq -0x458(%rbp), %rax
leaq 0x94d2(%rip), %rdi      # 0xe1f0
xorl %ecx, %ecx
movl %ecx, %edx
movsbl (%rax), %esi
callq 0x2120
cmpq $-0x1, %rax
je 0x4e49
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x4dc0
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x468(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
callq 0x7450
movq %rax, -0x460(%rbp)
jmp 0x4d77
movq -0x460(%rbp), %rsi
movq -0x468(%rbp), %rdi
callq 0x76d0
jmp 0x4d8c
leaq 0x5412(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x4da1
jmp 0x4dc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq 0x945a(%rip), %rdi      # 0xe210
callq 0x2130
jmp 0x52f1
movq -0x198(%rbp), %rdi
movw $0x0, -0x18c(%rbp)
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x470(%rbp)
jmp 0x4de5
movq -0x198(%rbp), %rax
movq -0x470(%rbp), %rcx
movb (%rcx), %cl
movb %cl, -0x18c(%rbp)
addq $0x38, %rax
movq %rax, -0x480(%rbp)
leaq -0x18c(%rbp), %rdi
movl $0x6, %esi
callq 0x7450
movq %rax, -0x478(%rbp)
jmp 0x4e20
movq -0x478(%rbp), %rsi
movq -0x480(%rbp), %rdi
callq 0x76d0
jmp 0x4e35
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x488(%rbp)
jmp 0x4e65
movq -0x488(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x28, %eax
jne 0x4fa0
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x4f1a
movq -0x198(%rbp), %rax
movq %rax, %rcx
addq $0x58, %rcx
movq %rcx, -0x4a0(%rbp)
addq $0x38, %rax
movq %rax, -0x498(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
movl $0x1, %edx
movl %edx, %esi
callq 0x7390
movq %rax, -0x490(%rbp)
jmp 0x4ed2
movq -0x490(%rbp), %rsi
movq -0x498(%rbp), %rdi
callq 0x76d0
movq %rax, -0x4a8(%rbp)
jmp 0x4eee
movq -0x4a8(%rbp), %rsi
movq -0x4a0(%rbp), %rdi
callq 0x8530
jmp 0x4f03
leaq 0x529b(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x4f18
jmp 0x4f8c
movq -0x198(%rbp), %rax
movq %rax, %rcx
addq $0x58, %rcx
movq %rcx, -0x4c0(%rbp)
addq $0x38, %rax
movq %rax, -0x4b8(%rbp)
leaq 0x5264(%rip), %rdi      # 0xa1a5
movl $0x2, %esi
movl $0x1, %edx
callq 0x7390
movq %rax, -0x4b0(%rbp)
jmp 0x4f59
movq -0x4b0(%rbp), %rsi
movq -0x4b8(%rbp), %rdi
callq 0x76d0
movq %rax, -0x4c8(%rbp)
jmp 0x4f75
movq -0x4c8(%rbp), %rsi
movq -0x4c0(%rbp), %rdi
callq 0x8530
jmp 0x4f8a
jmp 0x4f8c
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x4d0(%rbp)
jmp 0x4fbc
movq -0x4d0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2c, %eax
jne 0x5115
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x503e
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x4e0(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
callq 0x7450
movq %rax, -0x4d8(%rbp)
jmp 0x5012
movq -0x4d8(%rbp), %rsi
movq -0x4e0(%rbp), %rdi
callq 0x76d0
jmp 0x5027
leaq 0x5177(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x503c
jmp 0x503e
movq -0x198(%rbp), %rdi
addq $0x58, %rdi
callq 0x85d0
movq %rax, -0x4e8(%rbp)
jmp 0x5057
movq -0x4e8(%rbp), %rdi
callq 0x6000
movl %eax, -0x4ec(%rbp)
jmp 0x506b
movl -0x4ec(%rbp), %eax
cmpl $0x1, %eax
je 0x50be
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x500(%rbp)
leaq 0x507a(%rip), %rdi      # 0xa109
movl $0x5, %esi
movl $0xb, %edx
callq 0x7390
movq %rax, -0x4f8(%rbp)
jmp 0x50a7
movq -0x4f8(%rbp), %rsi
movq -0x500(%rbp), %rdi
callq 0x76d0
jmp 0x50bc
jmp 0x5101
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x510(%rbp)
leaq 0x5032(%rip), %rdi      # 0xa109
movl $0x3, %esi
callq 0x7450
movq %rax, -0x508(%rbp)
jmp 0x50ea
movq -0x508(%rbp), %rsi
movq -0x510(%rbp), %rdi
callq 0x76d0
jmp 0x50ff
jmp 0x5101
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x518(%rbp)
jmp 0x5131
movq -0x518(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x29, %eax
jne 0x5203
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x51b3
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x528(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
callq 0x7450
movq %rax, -0x520(%rbp)
jmp 0x5187
movq -0x520(%rbp), %rsi
movq -0x528(%rbp), %rdi
callq 0x76d0
jmp 0x519c
leaq 0x5002(%rip), %rsi      # 0xa1a5
leaq -0x130(%rbp), %rdi
callq 0x22a0
jmp 0x51b1
jmp 0x51b3
movq -0x198(%rbp), %rdi
movq %rdi, %rax
addq $0x38, %rax
movq %rax, -0x538(%rbp)
addq $0x58, %rdi
callq 0x8560
movq %rax, -0x530(%rbp)
jmp 0x51da
movq -0x530(%rbp), %rsi
movq -0x538(%rbp), %rdi
callq 0x76d0
jmp 0x51ef
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
movq -0x198(%rbp), %rdi
movslq -0x10c(%rbp), %rsi
callq 0x2390
movq %rax, -0x540(%rbp)
jmp 0x521f
movq -0x540(%rbp), %rax
movsbl (%rax), %esi
leaq -0x130(%rbp), %rdi
callq 0x2110
jmp 0x5237
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x3b3a
leaq -0x130(%rbp), %rdi
callq 0x2160
cmpq $0x0, %rax
jbe 0x52a5
movq -0x198(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x550(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x20c0
movq %rax, %rdi
xorl %esi, %esi
callq 0x7450
movq %rax, -0x548(%rbp)
jmp 0x528e
movq -0x548(%rbp), %rsi
movq -0x550(%rbp), %rdi
callq 0x76d0
jmp 0x52a3
jmp 0x52a5
movq -0x198(%rbp), %rsi
movq %rsi, %rdi
addq $0x38, %rdi
addq $0x20, %rsi
callq 0x7750
jmp 0x52be
leaq -0x130(%rbp), %rdi
callq 0x23a8
leaq -0x98(%rbp), %rdi
callq 0x23a8
leaq -0x70(%rbp), %rdi
callq 0x23a8
leaq -0x38(%rbp), %rdi
callq 0x23a8
addq $0x5b0, %rsp            # imm = 0x5B0
popq %rbp
retq
leaq -0x130(%rbp), %rdi
callq 0x23a8
leaq -0x98(%rbp), %rdi
callq 0x23a8
leaq -0x70(%rbp), %rdi
callq 0x23a8
leaq -0x38(%rbp), %rdi
callq 0x23a8
movq -0x48(%rbp), %rdi
callq 0x2320
nopw %cs:(%rax,%rax)