// File: ssubrandon[P]460Project2/LexicalAnalyzer.cpp
// Function: LexicalAnalyzer::GetToken()
token_type LexicalAnalyzer::GetToken ()
{
	error_type = 1;
	lexeme = "";
	int state = 1;
	token_type token = NONE;
	map <string, token_type>::iterator itr;
	if (input.fail())
	{
		debug << '\t' << setw(16) << left << "EOF_T" << endl;
		p1file << '\t' << setw(16) << left << "EOF_T" << endl;
		return EOF_T;
	}
	static string valid = "acdrb0.()+-*/'=<>?_\"";
	while (isspace(line[pos]) || line[pos] == ';') // end of line or beginning of comment
		if (line[pos] == ';' || ++pos >= line.length())
		{
			getline (input, line);
			if (input.fail())
			{
				debug << '\t' << setw(16) << left << "EOF_T" << endl;
				p1file << '\t' << setw(16) << left << "EOF_T" << endl;
				return EOF_T;
			}
			linenum++;
			listing << setw(4) << right << linenum << ": " << line << endl;	
			debug << setw(4) << right << linenum << ": " << line << endl;	
			line += ' ';
			pos = 0;
		}
	while (token == NONE)
	{
		char c = line[pos++];
		lexeme += c;
		if (state == 12 && pos == line.length())
		{ // used if end of line found in a string literal
			token = ERROR_T;
			error_type = 2;
			break;	
		}
		if (isalpha(c) && (c != 'a' && c != 'c' && c != 'd' && c != 'r')) 
			c = 'b';
		else if (isdigit(c))
			c = '0';
		int col = 0;
		while (col < valid.length() && valid[col] != c)
			col++;
		state = table[state][col];
		switch (state)
		{
		    case 20: // car, cdr, cadr, cddr, and other list operators
			pos--;
			//cout << lexeme << endl;
			lexeme = lexeme.erase(lexeme.length()-1,1);
			//cout << lexeme << endl;
			token = LISTOP_T;
			break;
		    case 21: // symbol or keyword
			pos--;
			lexeme = lexeme.erase(lexeme.length()-1,1);
			itr = symbols.find (lexeme);
			if (itr != symbols.end())
				token = itr->second;
			else 
				token = IDENT_T;
			break;
		    case 22: // numeric literal
			pos--;
			lexeme = lexeme.erase(lexeme.length()-1,1);
			token = NUMLIT_T;
			break;
		    case 23: // operator/symbol with backup
			pos--;
			lexeme = lexeme.erase(lexeme.length()-1,1);
		    case 24: // operator/symbol without backup
			itr = symbols.find (lexeme);
			if (itr != symbols.end())
				token = itr->second;
			else if (lexeme[lexeme.length()-1] == '?') // allow ? at end of identifier
			{
				pos--;
				lexeme = lexeme.erase(lexeme.length()-1,1);
				token = IDENT_T;
			}
			else
				token = ERROR_T;
			break;
		    case 25: // string literal
			token = STRLIT_T;
			break;
		    case 31: // error with backup
			pos--;
			lexeme = lexeme.erase(lexeme.length()-1,1);
		    case 32: // error
			token = ERROR_T;
		}
		if (token == ERROR_T)
			switch (error_type)
			{
				case 1: ReportError (string("Invalid character found: ") + lexeme);
					break;
				case 2: ReportError (string("Unterminated string literal: ") + lexeme);
					break;
				default: ReportError (string("Unidentified error: ") + lexeme);
			}
	}
	debug << '\t' << setw(16) << left << token_names[token] << lexeme << endl;
	p1file << '\t' << setw(16) << left << token_names[token] << lexeme << endl;
	return token;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x230, %rsp            # imm = 0x230
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x160(%rbp)
movl $0x1, 0x850(%rdi)
addq $0x830, %rdi            # imm = 0x830
leaq 0xa18b(%rip), %rsi      # 0x1018d
callq 0x3370
movl $0x1, -0x14(%rbp)
movl $0xffffffff, -0x18(%rbp) # imm = 0xFFFFFFFF
leaq -0x20(%rbp), %rdi
callq 0x75a0
movq -0x160(%rbp), %rax
movq %rax, %rdi
addq $0x400, %rdi            # imm = 0x400
movq 0x400(%rax), %rax
addq -0x18(%rax), %rdi
callq 0x3030
testb $0x1, %al
jne 0x6048
jmp 0x611d
movq -0x160(%rbp), %rdi
movl $0x9, %esi
callq 0x3330
movq %rax, -0x170(%rbp)
movl $0x10, %edi
callq 0x75c0
movq -0x170(%rbp), %rdi
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %esi
callq 0x3320
movq %rax, %rdi
leaq 0x155a(%rip), %rsi      # 0x75e0
callq 0x3120
movq %rax, %rdi
leaq 0xa0bb(%rip), %rsi      # 0x10150
callq 0x3270
movq %rax, %rdi
movq 0xef1c(%rip), %rsi      # 0x14fc0
callq 0x32c0
movq -0x160(%rbp), %rdi
addq $0x608, %rdi            # imm = 0x608
movl $0x9, %esi
callq 0x3330
movq %rax, -0x168(%rbp)
movl $0x10, %edi
callq 0x75c0
movq -0x168(%rbp), %rdi
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %esi
callq 0x3320
movq %rax, %rdi
leaq 0x14f2(%rip), %rsi      # 0x75e0
callq 0x3120
movq %rax, %rdi
leaq 0xa053(%rip), %rsi      # 0x10150
callq 0x3270
movq %rax, %rdi
movq 0xeeb4(%rip), %rsi      # 0x14fc0
callq 0x32c0
movl $0x23, -0x4(%rbp)
jmp 0x6e18
cmpb $0x0, 0xfaac(%rip)      # 0x15bd0
jne 0x6192
leaq 0xfaa3(%rip), %rdi      # 0x15bd0
callq 0x3460
cmpl $0x0, %eax
je 0x6192
leaq -0x29(%rbp), %rdi
movq %rdi, -0x178(%rbp)
callq 0x3440
movq -0x178(%rbp), %rdx
leaq 0xfa5b(%rip), %rdi      # 0x15bb0
leaq 0xa0f3(%rip), %rsi      # 0x1024f
callq 0x7040
jmp 0x6163
leaq -0x29(%rbp), %rdi
callq 0x32e0
movq 0xee55(%rip), %rdi      # 0x14fc8
leaq 0xfa36(%rip), %rsi      # 0x15bb0
leaq 0xf0e7(%rip), %rdx      # 0x15268
callq 0x3230
leaq 0xfa43(%rip), %rdi      # 0x15bd0
callq 0x31d0
jmp 0x6194
movq -0x160(%rbp), %rax
movq %rax, %rdi
addq $0x808, %rdi            # imm = 0x808
movslq 0x82c(%rax), %rsi
callq 0x34a0
movsbl (%rax), %edi
callq 0x3080
movl %eax, %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x179(%rbp)
jne 0x61f4
movq -0x160(%rbp), %rax
movq %rax, %rdi
addq $0x808, %rdi            # imm = 0x808
movslq 0x82c(%rax), %rsi
callq 0x34a0
movsbl (%rax), %eax
cmpl $0x3b, %eax
sete %al
movb %al, -0x179(%rbp)
movb -0x179(%rbp), %al
testb $0x1, %al
jne 0x6203
jmp 0x64e1
movq -0x160(%rbp), %rax
movq %rax, %rdi
addq $0x808, %rdi            # imm = 0x808
movslq 0x82c(%rax), %rsi
callq 0x34a0
movsbl (%rax), %eax
cmpl $0x3b, %eax
je 0x6266
movq -0x160(%rbp), %rdi
movl 0x82c(%rdi), %eax
addl $0x1, %eax
movl %eax, 0x82c(%rdi)
cltq
movq %rax, -0x188(%rbp)
addq $0x808, %rdi            # imm = 0x808
callq 0x33d0
movq %rax, %rcx
movq -0x188(%rbp), %rax
cmpq %rcx, %rax
jb 0x64dc
movq -0x160(%rbp), %rsi
movq %rsi, %rdi
addq $0x400, %rdi            # imm = 0x400
addq $0x808, %rsi            # imm = 0x808
callq 0x30b0
movq -0x160(%rbp), %rax
movq %rax, %rdi
addq $0x400, %rdi            # imm = 0x400
movq 0x400(%rax), %rax
addq -0x18(%rax), %rdi
callq 0x3030
testb $0x1, %al
jne 0x62ad
jmp 0x63a8
movq -0x160(%rbp), %rdi
movl $0x9, %esi
callq 0x3330
movq %rax, -0x198(%rbp)
movl $0x10, %edi
callq 0x75c0
movq -0x198(%rbp), %rdi
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %esi
callq 0x3320
movq %rax, %rdi
leaq 0x12f5(%rip), %rsi      # 0x75e0
callq 0x3120
movq %rax, %rdi
leaq 0x9e56(%rip), %rsi      # 0x10150
callq 0x3270
movq %rax, %rdi
movq 0xecb7(%rip), %rsi      # 0x14fc0
callq 0x32c0
movq -0x160(%rbp), %rdi
addq $0x608, %rdi            # imm = 0x608
movl $0x9, %esi
callq 0x3330
movq %rax, -0x190(%rbp)
movl $0x10, %edi
callq 0x75c0
movq -0x190(%rbp), %rdi
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %esi
callq 0x3320
movq %rax, %rdi
leaq 0x128d(%rip), %rsi      # 0x75e0
callq 0x3120
movq %rax, %rdi
leaq 0x9dee(%rip), %rsi      # 0x10150
callq 0x3270
movq %rax, %rdi
movq 0xec4f(%rip), %rsi      # 0x14fc0
callq 0x32c0
movl $0x23, -0x4(%rbp)
jmp 0x6e18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x32e0
leaq 0xf832(%rip), %rdi      # 0x15bd0
callq 0x31c0
jmp 0x6e24
movq -0x160(%rbp), %rax
movl 0x828(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x828(%rax)
addq $0x200, %rax            # imm = 0x200
movq %rax, -0x1a0(%rbp)
movl $0x4, %edi
callq 0x75c0
movq -0x1a0(%rbp), %rdi
movl %eax, -0x48(%rbp)
movl -0x48(%rbp), %esi
callq 0x3320
movq %rax, %rdi
leaq 0x121f(%rip), %rsi      # 0x7610
callq 0x3120
movq %rax, %rdi
movq -0x160(%rbp), %rax
movl 0x828(%rax), %esi
callq 0x3420
movq %rax, %rdi
leaq 0x9e66(%rip), %rsi      # 0x1027b
callq 0x3270
movq -0x160(%rbp), %rsi
movq %rax, %rdi
addq $0x808, %rsi            # imm = 0x808
callq 0x3240
movq %rax, %rdi
movq 0xeb86(%rip), %rsi      # 0x14fc0
callq 0x32c0
movl $0x4, %edi
callq 0x75c0
movq -0x160(%rbp), %rdi
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %esi
callq 0x3320
movq %rax, %rdi
leaq 0x11ab(%rip), %rsi      # 0x7610
callq 0x3120
movq %rax, %rdi
movq -0x160(%rbp), %rax
movl 0x828(%rax), %esi
callq 0x3420
movq %rax, %rdi
leaq 0x9df2(%rip), %rsi      # 0x1027b
callq 0x3270
movq -0x160(%rbp), %rsi
movq %rax, %rdi
addq $0x808, %rsi            # imm = 0x808
callq 0x3240
movq %rax, %rdi
movq 0xeb12(%rip), %rsi      # 0x14fc0
callq 0x32c0
movq -0x160(%rbp), %rdi
addq $0x808, %rdi            # imm = 0x808
movl $0x20, %esi
callq 0x31a0
movq -0x160(%rbp), %rax
movl $0x0, 0x82c(%rax)
jmp 0x6194
jmp 0x64e3
cmpl $-0x1, -0x18(%rbp)
jne 0x6cfb
movq -0x160(%rbp), %rcx
movq %rcx, %rdi
addq $0x808, %rdi            # imm = 0x808
movl 0x82c(%rcx), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, 0x82c(%rcx)
movslq %eax, %rsi
callq 0x34a0
movq -0x160(%rbp), %rdi
movb (%rax), %al
movb %al, -0x4d(%rbp)
movb -0x4d(%rbp), %al
addq $0x830, %rdi            # imm = 0x830
movsbl %al, %esi
callq 0x31a0
cmpl $0xc, -0x14(%rbp)
jne 0x6588
movq -0x160(%rbp), %rdi
movslq 0x82c(%rdi), %rax
movq %rax, -0x1a8(%rbp)
addq $0x808, %rdi            # imm = 0x808
callq 0x33d0
movq %rax, %rcx
movq -0x1a8(%rbp), %rax
cmpq %rcx, %rax
jne 0x6588
movq -0x160(%rbp), %rax
movl $0x22, -0x18(%rbp)
movl $0x2, 0x850(%rax)
jmp 0x6cfb
movsbl -0x4d(%rbp), %edi
callq 0x33f0
cmpl $0x0, %eax
je 0x65c0
movsbl -0x4d(%rbp), %eax
cmpl $0x61, %eax
je 0x65c0
movsbl -0x4d(%rbp), %eax
cmpl $0x63, %eax
je 0x65c0
movsbl -0x4d(%rbp), %eax
cmpl $0x64, %eax
je 0x65c0
movsbl -0x4d(%rbp), %eax
cmpl $0x72, %eax
je 0x65c0
movb $0x62, -0x4d(%rbp)
jmp 0x65d4
movsbl -0x4d(%rbp), %edi
callq 0x3250
cmpl $0x0, %eax
je 0x65d2
movb $0x30, -0x4d(%rbp)
jmp 0x65d4
movl $0x0, -0x54(%rbp)
movslq -0x54(%rbp), %rax
movq %rax, -0x1b8(%rbp)
leaq 0xf5c3(%rip), %rdi      # 0x15bb0
callq 0x33d0
movq -0x1b8(%rbp), %rcx
movq %rax, %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, -0x1a9(%rbp)
jae 0x662b
movslq -0x54(%rbp), %rsi
leaq 0xf59c(%rip), %rdi      # 0x15bb0
callq 0x34a0
movsbl (%rax), %eax
movsbl -0x4d(%rbp), %ecx
cmpl %ecx, %eax
setne %al
movb %al, -0x1a9(%rbp)
movb -0x1a9(%rbp), %al
testb $0x1, %al
jne 0x6637
jmp 0x6642
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x65db
movslq -0x14(%rbp), %rax
imulq $0x54, %rax, %rcx
leaq 0xec1f(%rip), %rax      # 0x15270
addq %rcx, %rax
movslq -0x54(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
addl $-0x14, %eax
movl %eax, %ecx
movq %rcx, -0x1c0(%rbp)
subl $0xc, %eax
ja 0x6a1e
movq -0x1c0(%rbp), %rax
leaq 0x9998(%rip), %rcx      # 0x1001c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x160(%rbp), %rdi
movl 0x82c(%rdi), %eax
addl $-0x1, %eax
movl %eax, 0x82c(%rdi)
movq %rdi, %rax
addq $0x830, %rax            # imm = 0x830
movq %rax, -0x1c8(%rbp)
addq $0x830, %rdi            # imm = 0x830
callq 0x33d0
movq -0x1c8(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movl $0x1, %edx
callq 0x30d0
movq -0x160(%rbp), %rdi
movq %rax, %rsi
addq $0x830, %rdi            # imm = 0x830
callq 0x3050
movl $0x9, -0x18(%rbp)
jmp 0x6a1e
movq -0x160(%rbp), %rdi
movl 0x82c(%rdi), %eax
addl $-0x1, %eax
movl %eax, 0x82c(%rdi)
movq %rdi, %rax
addq $0x830, %rax            # imm = 0x830
movq %rax, -0x1d0(%rbp)
addq $0x830, %rdi            # imm = 0x830
callq 0x33d0
movq -0x1d0(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movl $0x1, %edx
callq 0x30d0
movq -0x160(%rbp), %rdi
movq %rax, %rsi
addq $0x830, %rdi            # imm = 0x830
callq 0x3050
movq -0x160(%rbp), %rsi
movq %rsi, %rdi
addq $0x858, %rdi            # imm = 0x858
addq $0x830, %rsi            # imm = 0x830
callq 0x7640
movq -0x160(%rbp), %rdi
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x20(%rbp)
addq $0x858, %rdi            # imm = 0x858
callq 0x76a0
movq %rax, -0x68(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x7670
testb $0x1, %al
jne 0x67ac
jmp 0x67bd
leaq -0x20(%rbp), %rdi
callq 0x76d0
movl 0x20(%rax), %eax
movl %eax, -0x18(%rbp)
jmp 0x67c4
movl $0x1, -0x18(%rbp)
jmp 0x6a1e
movq -0x160(%rbp), %rdi
movl 0x82c(%rdi), %eax
addl $-0x1, %eax
movl %eax, 0x82c(%rdi)
movq %rdi, %rax
addq $0x830, %rax            # imm = 0x830
movq %rax, -0x1d8(%rbp)
addq $0x830, %rdi            # imm = 0x830
callq 0x33d0
movq -0x1d8(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movl $0x1, %edx
callq 0x30d0
movq -0x160(%rbp), %rdi
movq %rax, %rsi
addq $0x830, %rdi            # imm = 0x830
callq 0x3050
movl $0x2, -0x18(%rbp)
jmp 0x6a1e
movq -0x160(%rbp), %rdi
movl 0x82c(%rdi), %eax
addl $-0x1, %eax
movl %eax, 0x82c(%rdi)
movq %rdi, %rax
addq $0x830, %rax            # imm = 0x830
movq %rax, -0x1e0(%rbp)
addq $0x830, %rdi            # imm = 0x830
callq 0x33d0
movq -0x1e0(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movl $0x1, %edx
callq 0x30d0
movq -0x160(%rbp), %rdi
movq %rax, %rsi
addq $0x830, %rdi            # imm = 0x830
callq 0x3050
movq -0x160(%rbp), %rsi
movq %rsi, %rdi
addq $0x858, %rdi            # imm = 0x858
addq $0x830, %rsi            # imm = 0x830
callq 0x7640
movq -0x160(%rbp), %rdi
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x20(%rbp)
addq $0x858, %rdi            # imm = 0x858
callq 0x76a0
movq %rax, -0x78(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x7670
testb $0x1, %al
jne 0x68e8
jmp 0x68fc
leaq -0x20(%rbp), %rdi
callq 0x76d0
movl 0x20(%rax), %eax
movl %eax, -0x18(%rbp)
jmp 0x69ac
movq -0x160(%rbp), %rdi
movq %rdi, %rax
addq $0x830, %rax            # imm = 0x830
movq %rax, -0x1e8(%rbp)
addq $0x830, %rdi            # imm = 0x830
callq 0x33d0
movq -0x1e8(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
callq 0x34a0
movsbl (%rax), %eax
cmpl $0x3f, %eax
jne 0x69a3
movq -0x160(%rbp), %rdi
movl 0x82c(%rdi), %eax
addl $-0x1, %eax
movl %eax, 0x82c(%rdi)
movq %rdi, %rax
addq $0x830, %rax            # imm = 0x830
movq %rax, -0x1f0(%rbp)
addq $0x830, %rdi            # imm = 0x830
callq 0x33d0
movq -0x1f0(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movl $0x1, %edx
callq 0x30d0
movq -0x160(%rbp), %rdi
movq %rax, %rsi
addq $0x830, %rdi            # imm = 0x830
callq 0x3050
movl $0x1, -0x18(%rbp)
jmp 0x69aa
movl $0x22, -0x18(%rbp)
jmp 0x69ac
jmp 0x6a1e
movl $0x3, -0x18(%rbp)
jmp 0x6a1e
movq -0x160(%rbp), %rdi
movl 0x82c(%rdi), %eax
addl $-0x1, %eax
movl %eax, 0x82c(%rdi)
movq %rdi, %rax
addq $0x830, %rax            # imm = 0x830
movq %rax, -0x1f8(%rbp)
addq $0x830, %rdi            # imm = 0x830
callq 0x33d0
movq -0x1f8(%rbp), %rdi
movq %rax, %rsi
subq $0x1, %rsi
movl $0x1, %edx
callq 0x30d0
movq -0x160(%rbp), %rdi
movq %rax, %rsi
addq $0x830, %rdi            # imm = 0x830
callq 0x3050
movl $0x22, -0x18(%rbp)
cmpl $0x22, -0x18(%rbp)
jne 0x6cf6
movq -0x160(%rbp), %rax
movl 0x850(%rax), %eax
movl %eax, -0x1fc(%rbp)
subl $0x1, %eax
je 0x6a56
jmp 0x6a42
movl -0x1fc(%rbp), %eax
subl $0x2, %eax
je 0x6b37
jmp 0x6c18
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x3440
movq -0x208(%rbp), %rdx
leaq 0x97ed(%rip), %rsi      # 0x10264
leaq -0xb8(%rbp), %rdi
callq 0x7040
jmp 0x6a85
movq -0x160(%rbp), %rdx
addq $0x830, %rdx            # imm = 0x830
leaq -0x98(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x76f0
jmp 0x6aa8
movq -0x160(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x6e30
jmp 0x6abd
leaq -0x98(%rbp), %rdi
callq 0x34b8
leaq -0xb8(%rbp), %rdi
callq 0x34b8
leaq -0xb9(%rbp), %rdi
callq 0x32e0
jmp 0x6ca3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x6b26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x6b1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x34b8
leaq -0xb8(%rbp), %rdi
callq 0x34b8
leaq -0xb9(%rbp), %rdi
callq 0x32e0
jmp 0x6e24
leaq -0x101(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0x3440
movq -0x210(%rbp), %rdx
leaq 0x9726(%rip), %rsi      # 0x1027e
leaq -0x100(%rbp), %rdi
callq 0x7040
jmp 0x6b66
movq -0x160(%rbp), %rdx
addq $0x830, %rdx            # imm = 0x830
leaq -0xe0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x76f0
jmp 0x6b89
movq -0x160(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x6e30
jmp 0x6b9e
leaq -0xe0(%rbp), %rdi
callq 0x34b8
leaq -0x100(%rbp), %rdi
callq 0x34b8
leaq -0x101(%rbp), %rdi
callq 0x32e0
jmp 0x6ca3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x6c07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x6bfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x34b8
leaq -0x100(%rbp), %rdi
callq 0x34b8
leaq -0x101(%rbp), %rdi
callq 0x32e0
jmp 0x6e24
leaq -0x149(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0x3440
movq -0x218(%rbp), %rdx
leaq 0x9663(%rip), %rsi      # 0x1029c
leaq -0x148(%rbp), %rdi
callq 0x7040
jmp 0x6c47
movq -0x160(%rbp), %rdx
addq $0x830, %rdx            # imm = 0x830
leaq -0x128(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x76f0
jmp 0x6c6a
movq -0x160(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x6e30
jmp 0x6c7f
leaq -0x128(%rbp), %rdi
callq 0x34b8
leaq -0x148(%rbp), %rdi
callq 0x34b8
leaq -0x149(%rbp), %rdi
callq 0x32e0
jmp 0x6cf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x6ce5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x6cd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x34b8
leaq -0x148(%rbp), %rdi
callq 0x34b8
leaq -0x149(%rbp), %rdi
callq 0x32e0
jmp 0x6e24
jmp 0x64e3
movq -0x160(%rbp), %rdi
movl $0x9, %esi
callq 0x3330
movq %rax, -0x228(%rbp)
movl $0x10, %edi
callq 0x75c0
movq -0x228(%rbp), %rdi
movl %eax, -0x150(%rbp)
movl -0x150(%rbp), %esi
callq 0x3320
movq %rax, %rdi
leaq 0x8a1(%rip), %rsi       # 0x75e0
callq 0x3120
movq %rax, %rdi
movslq -0x18(%rbp), %rax
leaq 0xe9de(%rip), %rsi      # 0x15730
shlq $0x5, %rax
addq %rax, %rsi
callq 0x3240
movq -0x160(%rbp), %rsi
movq %rax, %rdi
addq $0x830, %rsi            # imm = 0x830
callq 0x3240
movq %rax, %rdi
movq 0xe242(%rip), %rsi      # 0x14fc0
callq 0x32c0
movq -0x160(%rbp), %rdi
addq $0x608, %rdi            # imm = 0x608
movl $0x9, %esi
callq 0x3330
movq %rax, -0x220(%rbp)
movl $0x10, %edi
callq 0x75c0
movq -0x220(%rbp), %rdi
movl %eax, -0x154(%rbp)
movl -0x154(%rbp), %esi
callq 0x3320
movq %rax, %rdi
leaq 0x812(%rip), %rsi       # 0x75e0
callq 0x3120
movq %rax, %rdi
movslq -0x18(%rbp), %rax
leaq 0xe94f(%rip), %rsi      # 0x15730
shlq $0x5, %rax
addq %rax, %rsi
callq 0x3240
movq -0x160(%rbp), %rsi
movq %rax, %rdi
addq $0x830, %rsi            # imm = 0x830
callq 0x3240
movq %rax, %rdi
movq 0xe1b3(%rip), %rsi      # 0x14fc0
callq 0x32c0
movl -0x18(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x230, %rsp            # imm = 0x230
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x3430
nopl (%rax)