// File: pranavmodx[P]modlang/src/lexer.cpp
// Function: Lexer::nextToken()
Token Lexer::nextToken()
{
	Token token;

	skipWhitespace();

	switch (curChar)
	{
	case '=':
		if (peekChar() == '=')
		{
			token = Token(EQ, "==");
			readChar();
		}
		else
			token = Token(ASSIGN, curChar);

		readChar();
		break;

	case '!':
		if (peekChar() == '=')
		{
			token = Token(NEQ, "!=");
			readChar();
		}
		else
			token = Token(BANG, curChar);

		readChar();
		break;

	case '<':
		if (peekChar() == '=')
		{
			token = Token(LTEQ, "<=");
			readChar();
		}
		else
			token = Token(LT, curChar);

		readChar();
		break;

	case '>':
		if (peekChar() == '=')
		{
			token = Token(GTEQ, ">=");
			readChar();
		}
		else
			token = Token(GT, curChar);

		readChar();
		break;

	case '+':
		token = Token(PLUS, curChar);
		readChar();
		break;

	case '-':
		token = Token(MINUS, curChar);
		readChar();
		break;

	case '*':
		token = Token(ASTERISK, curChar);
		readChar();
		break;

	case '/':
		token = Token(SLASH, curChar);
		readChar();
		break;

	case '%':
		token = Token(MODULO, curChar);
		readChar();
		break;

	case ',':
		token = Token(COMMA, curChar);
		readChar();
		break;

	case ';':
		token = Token(SEMICOLON, curChar);
		readChar();
		break;

	case ':':
		token = Token(COLON, curChar);
		readChar();
		break;

	case '(':
		token = Token(LPAREN, curChar);
		readChar();
		break;

	case ')':
		token = Token(RPAREN, curChar);
		readChar();
		break;

	case '{':
		token = Token(LBRACE, curChar);
		readChar();
		break;

	case '}':
		token = Token(RBRACE, curChar);
		readChar();
		break;

	case '[':
		token = Token(LBRACKET, curChar);
		readChar();
		break;

	case ']':
		token = Token(RBRACKET, curChar);
		readChar();
		break;

	case '"':
		token = Token(STRING, readString());
		readChar();
		break;

	case 0:
		token = Token(END, "");
		readChar();
		break;

	default:
		if (isLetter(curChar))
		{
			token.literal = readIdentifier();
			token.type = LookupIdentifier(token.literal);
			return token;
		}
		else if (isDigit(curChar))
		{
			token.type = INTEGER;
			token.literal = readNumber();
			return token;
		}
		else
		{
			token = Token(ILLEGAL, curChar);
			readChar();
		}
		break;
	}

	return token;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc20, %rsp            # imm = 0xC20
movq %rdi, -0xb10(%rbp)
movq %rdi, %rax
movq %rax, -0xb08(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xb00(%rbp)
movb $0x0, -0x11(%rbp)
callq 0x6b50
movq -0xb00(%rbp), %rdi
callq 0xac50
jmp 0x98e6
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %eax
movl %eax, %ecx
movq %rcx, -0xb18(%rbp)
subl $0x7d, %eax
ja 0xaa15
movq -0xb18(%rbp), %rax
leaq 0x1843(%rip), %rcx      # 0xb154
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xac34
movq -0xb00(%rbp), %rdi
callq 0xacd0
movb %al, -0xb19(%rbp)
jmp 0x993f
movb -0xb19(%rbp), %al
movsbl %al, %eax
cmpl $0x3d, %eax
jne 0x9a4b
leaq 0x84d8(%rip), %rsi      # 0x11e30
leaq -0x88(%rbp), %rdi
callq 0x20a0
jmp 0x9966
leaq -0xa9(%rbp), %rdi
movq %rdi, -0xb28(%rbp)
callq 0x22e0
movq -0xb28(%rbp), %rdx
leaq 0x16b4(%rip), %rsi      # 0xb03b
leaq -0xa8(%rbp), %rdi
callq 0x6aa0
jmp 0x9995
leaq -0x68(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
callq 0xae90
jmp 0x99ae
movq -0xb10(%rbp), %rdi
leaq -0x68(%rbp), %rsi
movq %rsi, -0xb30(%rbp)
callq 0x6ba0
movq -0xb30(%rbp), %rdi
callq 0x6be0
leaq -0xa8(%rbp), %rdi
callq 0x2328
leaq -0xa9(%rbp), %rdi
callq 0x21e0
leaq -0x88(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0x9a03
jmp 0x9aca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x9a2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x2328
leaq -0xa9(%rbp), %rdi
callq 0x21e0
leaq -0x88(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x827e(%rip), %rsi      # 0x11cd0
leaq -0x110(%rbp), %rdi
callq 0x20a0
jmp 0x9a60
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xaef0
jmp 0x9a80
movq -0xb10(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x6ba0
leaq -0xf0(%rbp), %rdi
callq 0x6be0
leaq -0x110(%rbp), %rdi
callq 0x2328
jmp 0x9aca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x2328
jmp 0xac34
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0x9ad8
jmp 0xac04
movq -0xb00(%rbp), %rdi
callq 0xacd0
movb %al, -0xb31(%rbp)
jmp 0x9af1
movb -0xb31(%rbp), %al
movsbl %al, %eax
cmpl $0x3d, %eax
jne 0x9c03
leaq 0x8346(%rip), %rsi      # 0x11e50
leaq -0x170(%rbp), %rdi
callq 0x20a0
jmp 0x9b18
leaq -0x191(%rbp), %rdi
movq %rdi, -0xb40(%rbp)
callq 0x22e0
movq -0xb40(%rbp), %rdx
leaq 0x1505(%rip), %rsi      # 0xb03e
leaq -0x190(%rbp), %rdi
callq 0x6aa0
jmp 0x9b47
leaq -0x150(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x190(%rbp), %rdx
callq 0xae90
jmp 0x9b63
movq -0xb10(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movq %rsi, -0xb48(%rbp)
callq 0x6ba0
movq -0xb48(%rbp), %rdi
callq 0x6be0
leaq -0x190(%rbp), %rdi
callq 0x2328
leaq -0x191(%rbp), %rdi
callq 0x21e0
leaq -0x170(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0x9bbb
jmp 0x9c82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x9be6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x2328
leaq -0x191(%rbp), %rdi
callq 0x21e0
leaq -0x170(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x8126(%rip), %rsi      # 0x11d30
leaq -0x1f8(%rbp), %rdi
callq 0x20a0
jmp 0x9c18
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x1d8(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0xaef0
jmp 0x9c38
movq -0xb10(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x6ba0
leaq -0x1d8(%rbp), %rdi
callq 0x6be0
leaq -0x1f8(%rbp), %rdi
callq 0x2328
jmp 0x9c82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x2328
jmp 0xac34
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0x9c90
jmp 0xac04
movq -0xb00(%rbp), %rdi
callq 0xacd0
movb %al, -0xb49(%rbp)
jmp 0x9ca9
movb -0xb49(%rbp), %al
movsbl %al, %eax
cmpl $0x3d, %eax
jne 0x9dbb
leaq 0x812e(%rip), %rsi      # 0x11df0
leaq -0x258(%rbp), %rdi
callq 0x20a0
jmp 0x9cd0
leaq -0x279(%rbp), %rdi
movq %rdi, -0xb58(%rbp)
callq 0x22e0
movq -0xb58(%rbp), %rdx
leaq 0x1344(%rip), %rsi      # 0xb035
leaq -0x278(%rbp), %rdi
callq 0x6aa0
jmp 0x9cff
leaq -0x238(%rbp), %rdi
leaq -0x258(%rbp), %rsi
leaq -0x278(%rbp), %rdx
callq 0xae90
jmp 0x9d1b
movq -0xb10(%rbp), %rdi
leaq -0x238(%rbp), %rsi
movq %rsi, -0xb60(%rbp)
callq 0x6ba0
movq -0xb60(%rbp), %rdi
callq 0x6be0
leaq -0x278(%rbp), %rdi
callq 0x2328
leaq -0x279(%rbp), %rdi
callq 0x21e0
leaq -0x258(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0x9d73
jmp 0x9e3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x9d9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x2328
leaq -0x279(%rbp), %rdi
callq 0x21e0
leaq -0x258(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7fee(%rip), %rsi      # 0x11db0
leaq -0x2e0(%rbp), %rdi
callq 0x20a0
jmp 0x9dd0
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x2c0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0xaef0
jmp 0x9df0
movq -0xb10(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x6ba0
leaq -0x2c0(%rbp), %rdi
callq 0x6be0
leaq -0x2e0(%rbp), %rdi
callq 0x2328
jmp 0x9e3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x2328
jmp 0xac34
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0x9e48
jmp 0xac04
movq -0xb00(%rbp), %rdi
callq 0xacd0
movb %al, -0xb61(%rbp)
jmp 0x9e61
movb -0xb61(%rbp), %al
movsbl %al, %eax
cmpl $0x3d, %eax
jne 0x9f73
leaq 0x7f96(%rip), %rsi      # 0x11e10
leaq -0x340(%rbp), %rdi
callq 0x20a0
jmp 0x9e88
leaq -0x361(%rbp), %rdi
movq %rdi, -0xb70(%rbp)
callq 0x22e0
movq -0xb70(%rbp), %rdx
leaq 0x118f(%rip), %rsi      # 0xb038
leaq -0x360(%rbp), %rdi
callq 0x6aa0
jmp 0x9eb7
leaq -0x320(%rbp), %rdi
leaq -0x340(%rbp), %rsi
leaq -0x360(%rbp), %rdx
callq 0xae90
jmp 0x9ed3
movq -0xb10(%rbp), %rdi
leaq -0x320(%rbp), %rsi
movq %rsi, -0xb78(%rbp)
callq 0x6ba0
movq -0xb78(%rbp), %rdi
callq 0x6be0
leaq -0x360(%rbp), %rdi
callq 0x2328
leaq -0x361(%rbp), %rdi
callq 0x21e0
leaq -0x340(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0x9f2b
jmp 0x9ff2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x9f56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x2328
leaq -0x361(%rbp), %rdi
callq 0x21e0
leaq -0x340(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7e56(%rip), %rsi      # 0x11dd0
leaq -0x3c8(%rbp), %rdi
callq 0x20a0
jmp 0x9f88
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x3a8(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0xaef0
jmp 0x9fa8
movq -0xb10(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x6ba0
leaq -0x3a8(%rbp), %rdi
callq 0x6be0
leaq -0x3c8(%rbp), %rdi
callq 0x2328
jmp 0x9ff2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x2328
jmp 0xac34
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa000
jmp 0xac04
leaq 0x7ce4(%rip), %rsi      # 0x11cf0
leaq -0x428(%rbp), %rdi
callq 0x20a0
jmp 0xa01a
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x408(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0xaef0
jmp 0xa03a
movq -0xb10(%rbp), %rdi
leaq -0x408(%rbp), %rsi
movq %rsi, -0xb80(%rbp)
callq 0x6ba0
movq -0xb80(%rbp), %rdi
callq 0x6be0
leaq -0x428(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa07a
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7c6d(%rip), %rsi      # 0x11d10
leaq -0x488(%rbp), %rdi
callq 0x20a0
jmp 0xa0b1
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x468(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0xaef0
jmp 0xa0d1
movq -0xb10(%rbp), %rdi
leaq -0x468(%rbp), %rsi
movq %rsi, -0xb88(%rbp)
callq 0x6ba0
movq -0xb88(%rbp), %rdi
callq 0x6be0
leaq -0x488(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa111
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7c16(%rip), %rsi      # 0x11d50
leaq -0x4e8(%rbp), %rdi
callq 0x20a0
jmp 0xa148
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x4c8(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0xaef0
jmp 0xa168
movq -0xb10(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
movq %rsi, -0xb90(%rbp)
callq 0x6ba0
movq -0xb90(%rbp), %rdi
callq 0x6be0
leaq -0x4e8(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa1a8
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7b9f(%rip), %rsi      # 0x11d70
leaq -0x548(%rbp), %rdi
callq 0x20a0
jmp 0xa1df
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x528(%rbp), %rdi
leaq -0x548(%rbp), %rsi
callq 0xaef0
jmp 0xa1ff
movq -0xb10(%rbp), %rdi
leaq -0x528(%rbp), %rsi
movq %rsi, -0xb98(%rbp)
callq 0x6ba0
movq -0xb98(%rbp), %rdi
callq 0x6be0
leaq -0x548(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa23f
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7b28(%rip), %rsi      # 0x11d90
leaq -0x5a8(%rbp), %rdi
callq 0x20a0
jmp 0xa276
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x588(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
callq 0xaef0
jmp 0xa296
movq -0xb10(%rbp), %rdi
leaq -0x588(%rbp), %rsi
movq %rsi, -0xba0(%rbp)
callq 0x6ba0
movq -0xba0(%rbp), %rdi
callq 0x6be0
leaq -0x5a8(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa2d6
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x5a8(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7b71(%rip), %rsi      # 0x11e70
leaq -0x608(%rbp), %rdi
callq 0x20a0
jmp 0xa30d
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x5e8(%rbp), %rdi
leaq -0x608(%rbp), %rsi
callq 0xaef0
jmp 0xa32d
movq -0xb10(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
movq %rsi, -0xba8(%rbp)
callq 0x6ba0
movq -0xba8(%rbp), %rdi
callq 0x6be0
leaq -0x608(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa36d
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x608(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7afa(%rip), %rsi      # 0x11e90
leaq -0x668(%rbp), %rdi
callq 0x20a0
jmp 0xa3a4
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x648(%rbp), %rdi
leaq -0x668(%rbp), %rsi
callq 0xaef0
jmp 0xa3c4
movq -0xb10(%rbp), %rdi
leaq -0x648(%rbp), %rsi
movq %rsi, -0xbb0(%rbp)
callq 0x6ba0
movq -0xbb0(%rbp), %rdi
callq 0x6be0
leaq -0x668(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa404
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x668(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7a83(%rip), %rsi      # 0x11eb0
leaq -0x6c8(%rbp), %rdi
callq 0x20a0
jmp 0xa43b
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x6a8(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
callq 0xaef0
jmp 0xa45b
movq -0xb10(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
movq %rsi, -0xbb8(%rbp)
callq 0x6ba0
movq -0xbb8(%rbp), %rdi
callq 0x6be0
leaq -0x6c8(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa49b
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x6c8(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7a0c(%rip), %rsi      # 0x11ed0
leaq -0x728(%rbp), %rdi
callq 0x20a0
jmp 0xa4d2
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x708(%rbp), %rdi
leaq -0x728(%rbp), %rsi
callq 0xaef0
jmp 0xa4f2
movq -0xb10(%rbp), %rdi
leaq -0x708(%rbp), %rsi
movq %rsi, -0xbc0(%rbp)
callq 0x6ba0
movq -0xbc0(%rbp), %rdi
callq 0x6be0
leaq -0x728(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa532
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x728(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7995(%rip), %rsi      # 0x11ef0
leaq -0x788(%rbp), %rdi
callq 0x20a0
jmp 0xa569
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x768(%rbp), %rdi
leaq -0x788(%rbp), %rsi
callq 0xaef0
jmp 0xa589
movq -0xb10(%rbp), %rdi
leaq -0x768(%rbp), %rsi
movq %rsi, -0xbc8(%rbp)
callq 0x6ba0
movq -0xbc8(%rbp), %rdi
callq 0x6be0
leaq -0x788(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa5c9
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x788(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x791e(%rip), %rsi      # 0x11f10
leaq -0x7e8(%rbp), %rdi
callq 0x20a0
jmp 0xa600
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x7c8(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
callq 0xaef0
jmp 0xa620
movq -0xb10(%rbp), %rdi
leaq -0x7c8(%rbp), %rsi
movq %rsi, -0xbd0(%rbp)
callq 0x6ba0
movq -0xbd0(%rbp), %rdi
callq 0x6be0
leaq -0x7e8(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa660
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x7e8(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x78a7(%rip), %rsi      # 0x11f30
leaq -0x848(%rbp), %rdi
callq 0x20a0
jmp 0xa697
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x828(%rbp), %rdi
leaq -0x848(%rbp), %rsi
callq 0xaef0
jmp 0xa6b7
movq -0xb10(%rbp), %rdi
leaq -0x828(%rbp), %rsi
movq %rsi, -0xbd8(%rbp)
callq 0x6ba0
movq -0xbd8(%rbp), %rdi
callq 0x6be0
leaq -0x848(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa6f7
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x848(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7830(%rip), %rsi      # 0x11f50
leaq -0x8a8(%rbp), %rdi
callq 0x20a0
jmp 0xa72e
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x888(%rbp), %rdi
leaq -0x8a8(%rbp), %rsi
callq 0xaef0
jmp 0xa74e
movq -0xb10(%rbp), %rdi
leaq -0x888(%rbp), %rsi
movq %rsi, -0xbe0(%rbp)
callq 0x6ba0
movq -0xbe0(%rbp), %rdi
callq 0x6be0
leaq -0x8a8(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa78e
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x8a8(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x77b9(%rip), %rsi      # 0x11f70
leaq -0x908(%rbp), %rdi
callq 0x20a0
jmp 0xa7c5
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0x8e8(%rbp), %rdi
leaq -0x908(%rbp), %rsi
callq 0xaef0
jmp 0xa7e5
movq -0xb10(%rbp), %rdi
leaq -0x8e8(%rbp), %rsi
movq %rsi, -0xbe8(%rbp)
callq 0x6ba0
movq -0xbe8(%rbp), %rdi
callq 0x6be0
leaq -0x908(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa825
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x908(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7462(%rip), %rsi      # 0x11cb0
leaq -0x968(%rbp), %rdi
callq 0x20a0
jmp 0xa85c
movq -0xb00(%rbp), %rsi
leaq -0x988(%rbp), %rdi
callq 0xad20
jmp 0xa871
leaq -0x948(%rbp), %rdi
leaq -0x968(%rbp), %rsi
leaq -0x988(%rbp), %rdx
callq 0xae90
jmp 0xa88d
movq -0xb10(%rbp), %rdi
leaq -0x948(%rbp), %rsi
movq %rsi, -0xbf0(%rbp)
callq 0x6ba0
movq -0xbf0(%rbp), %rdi
callq 0x6be0
leaq -0x988(%rbp), %rdi
callq 0x2328
leaq -0x968(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa8d9
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xa904
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x988(%rbp), %rdi
callq 0x2328
leaq -0x968(%rbp), %rdi
callq 0x2328
jmp 0xac34
leaq 0x7334(%rip), %rsi      # 0x11c50
leaq -0x9e8(%rbp), %rdi
callq 0x20a0
jmp 0xa92a
leaq -0xa09(%rbp), %rdi
movq %rdi, -0xbf8(%rbp)
callq 0x22e0
movq -0xbf8(%rbp), %rdx
leaq 0x76b(%rip), %rsi       # 0xb0b6
leaq -0xa08(%rbp), %rdi
callq 0x6aa0
jmp 0xa959
leaq -0x9c8(%rbp), %rdi
leaq -0x9e8(%rbp), %rsi
leaq -0xa08(%rbp), %rdx
callq 0xae90
jmp 0xa975
movq -0xb10(%rbp), %rdi
leaq -0x9c8(%rbp), %rsi
movq %rsi, -0xc00(%rbp)
callq 0x6ba0
movq -0xc00(%rbp), %rdi
callq 0x6be0
leaq -0xa08(%rbp), %rdi
callq 0x2328
leaq -0xa09(%rbp), %rdi
callq 0x21e0
leaq -0x9e8(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xa9cd
jmp 0xac04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xa9f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xa08(%rbp), %rdi
callq 0x2328
leaq -0xa09(%rbp), %rdi
callq 0x21e0
leaq -0x9e8(%rbp), %rdi
callq 0x2328
jmp 0xac34
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edi
callq 0x9780
testb $0x1, %al
jne 0xaa2e
jmp 0xaaf9
movq -0xb00(%rbp), %rsi
leaq -0xa30(%rbp), %rdi
callq 0xadb0
jmp 0xaa43
movq -0xb10(%rbp), %rdi
addq $0x20, %rdi
movq %rdi, -0xc08(%rbp)
leaq -0xa30(%rbp), %rsi
movq %rsi, -0xc10(%rbp)
callq 0x2220
movq -0xc10(%rbp), %rdi
callq 0x2328
movq -0xc08(%rbp), %rsi
leaq -0xa70(%rbp), %rdi
callq 0x20a0
jmp 0xaa89
leaq -0xa50(%rbp), %rdi
leaq -0xa70(%rbp), %rsi
callq 0x7010
jmp 0xaa9e
movq -0xb10(%rbp), %rdi
leaq -0xa50(%rbp), %rsi
callq 0x2220
leaq -0xa50(%rbp), %rdi
callq 0x2328
leaq -0xa70(%rbp), %rdi
callq 0x2328
movb $0x1, -0x11(%rbp)
movl $0x1, -0xa74(%rbp)
jmp 0xac12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xa70(%rbp), %rdi
callq 0x2328
jmp 0xac34
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edi
callq 0x97c0
testb $0x1, %al
jne 0xab0f
jmp 0xab6f
movq -0xb10(%rbp), %rdi
leaq 0x7173(%rip), %rsi      # 0x11c90
callq 0x2030
jmp 0xab24
movq -0xb00(%rbp), %rsi
leaq -0xa98(%rbp), %rdi
callq 0xae20
jmp 0xab39
movq -0xb10(%rbp), %rdi
addq $0x20, %rdi
leaq -0xa98(%rbp), %rsi
callq 0x2220
leaq -0xa98(%rbp), %rdi
callq 0x2328
movb $0x1, -0x11(%rbp)
movl $0x1, -0xa74(%rbp)
jmp 0xac12
leaq 0x70ba(%rip), %rsi      # 0x11c30
leaq -0xaf8(%rbp), %rdi
callq 0x20a0
jmp 0xab84
movq -0xb00(%rbp), %rax
movsbl 0x28(%rax), %edx
leaq -0xad8(%rbp), %rdi
leaq -0xaf8(%rbp), %rsi
callq 0xaef0
jmp 0xaba4
movq -0xb10(%rbp), %rdi
leaq -0xad8(%rbp), %rsi
movq %rsi, -0xc18(%rbp)
callq 0x6ba0
movq -0xc18(%rbp), %rdi
callq 0x6be0
leaq -0xaf8(%rbp), %rdi
callq 0x2328
movq -0xb00(%rbp), %rdi
callq 0x9830
jmp 0xabe4
jmp 0xac00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xaf8(%rbp), %rdi
callq 0x2328
jmp 0xac34
jmp 0xac02
jmp 0xac04
movb $0x1, -0x11(%rbp)
movl $0x1, -0xa74(%rbp)
testb $0x1, -0x11(%rbp)
jne 0xac24
movq -0xb10(%rbp), %rdi
callq 0x6be0
movq -0xb08(%rbp), %rax
addq $0xc20, %rsp            # imm = 0xC20
popq %rbp
retq
movq -0xb10(%rbp), %rdi
callq 0x6be0
movq -0x20(%rbp), %rdi
callq 0x22d0
nopl (%rax)