// File: /workspace/github_cpp_makefile_star2_O1/mittman[P]project254/parser.cpp
// Function: main
int main(int argc, char* argv[]) {

	// Check parameters
	if(argc != 2 && argc != 3) {
		cerr << "USAGE: ./parser [filename]" << endl;
		cerr << "USAGE: ./parser [filename] [output]" << endl;
		cerr << "USAGE: ./parser [filename] -" << endl;
	}
	else {
		// Read log file
		fstream f;
		f.open(argv[1], ios::in);

		int num = 1;
		string line = "";
		string cycle = "";
		string direction = "";
		double elapsed = 0;

		int words = 0;
		int count = 0;
		int wordPos = 0;
		bool marker1 = false;
		bool marker2 = false;
		bool printList = false;
		unsigned long address;

		vector<unsigned long> addressList;
		vector<int> wordPosList;
		vector<string> binaryList;
		vector<int> numLines;

		string highWord = "";
		string lowWord = "";
		string binary = "";

		// Initialize objects
		Address a;
		Binary2 b;
		Cycle c;
		DataRate d;
		Output o;
		Table t;

		// Write parsed file
		fstream output;
		if(argc == 3 && strcmp(argv[2], "-") == 0) {
			o.setMode("print");
		}
		else if(argc == 3) {
			output.open(argv[2], ios:: out);
			o.setMode("file");
		}
		else {
			output.open("log_parsed.txt", ios:: out);
			o.setMode("file");
		}

		// Line by line
		while (getline(f, line)) {

			// Split into vector by whitespace
			istringstream linestream(line);
			vector<string> column;
			copy(istream_iterator<string>(linestream),
				 istream_iterator<string>(),
				 back_inserter(column));

			// S-to-D marker
			if(column[6] == "40000810") {
				if(printList){
					if(addressList[0] > addressList[1]){
						reverse(wordPosList.begin(),wordPosList.end());
						vector<int>::size_type siz = binaryList.size();
						for (unsigned i=0; i < siz-1; i+=2)
							iter_swap(binaryList.begin()+i, binaryList.begin()+i+1);
					}
					vector<int>::size_type sz = binaryList.size();
					for (unsigned i=0; i<sz; i++){

						highWord = t.getCode(wordPosList[i], binaryList[i]);
						if(highWord != "") {
							o.writeWords(highWord, wordPosList[i], numLines[i], output);
						}

					}

					o.writeBlank(output);
					printList = false;
					binaryList.clear();
					numLines.clear();
					wordPosList.clear();
					addressList.clear();
				}

				words = a.getLength(column[7]);
				count = words;
				cycle = c.getIO(column[9]);
				direction = "S-to-D";
				elapsed = c.toNanoSeconds(column[2]);
				c.setElapsed(cycle, elapsed, direction);
				c.plusType(cycle, direction);
				o.writeCommand(cycle, words, num, direction, output);

				if(words > 0) {
					marker1 = true;
				}
				else {
					marker1 = false;
					o.writeBlank(output);
				}
			}

			// D-to-S marker
			else if(column[6] == "40000C18") {
				if(printList){
					if(addressList[0] > addressList[1]){
						reverse(wordPosList.begin(),wordPosList.end());
						
						for (unsigned i=0; i < binaryList.size()-1; i+=2)
							iter_swap(binaryList.begin()+i, binaryList.begin()+i+1);
	
					}
					vector<int>::size_type sz = binaryList.size();
					for (unsigned i=0; i<sz; i++){

						highWord = t.getCode(wordPosList[i], binaryList[i]);
						if(highWord != "") {
							o.writeWords(highWord, wordPosList[i], numLines[i], output);
						}

					}

					o.writeBlank(output);
					printList = false;
					binaryList.clear();
					numLines.clear();
					wordPosList.clear();
					addressList.clear();
				}

				words = a.getLength(column[7]);
				count = words;
				cycle = c.getIO(column[9]);
				direction = "D-to-S";
				elapsed = c.toNanoSeconds(column[2]);
				c.setElapsed(cycle, elapsed, direction);
				c.plusType(cycle, direction);
				o.writeCommand(cycle, words, num, direction, output);

				if(words > 0) {
					marker2 = true;
				}
				else {
					marker2 = false;
					o.writeBlank(output);
				}

			}
			// S-to-D range
			else if(marker1 && words > 0) {
				address = a.getAddress(column[6]);
				if(static_cast<long>(0x40000818) <= address && address <= static_cast<long>(0x40000C14)) {
					if(addressList.size() <2){
						addressList.push_back(address);
					}

					b.hexToBinary(column[7]);
					cycle = c.getIO(column[9]);
					direction = "S-to-D";
					elapsed = c.toNanoSeconds(column[2]);
					c.setElapsed(cycle, elapsed, direction);
					c.plusType(cycle, direction);

					wordPos = (count-words);
					wordPosList.push_back(wordPos);
					binaryList.push_back(b.getWord0());
					numLines.push_back(num);

					wordPos = (count-words+1);
					wordPosList.push_back(wordPos);
					binaryList.push_back(b.getWord1());
					numLines.push_back(num);
		
					words -= 2;
					printList = true;
				}
			}
			// D-to-S range
			else if(marker2 && words > 0) {
				address = a.getAddress(column[6]);
				if(static_cast<long>(0x40000C20) <= address && address <= static_cast<long>(0x4000101C)) {
					if(addressList.size() <2){
						addressList.push_back(address);
					}

					b.hexToBinary(column[7]);
					cycle = c.getIO(column[9]);
					direction = "D-to-S";
					elapsed = c.toNanoSeconds(column[2]);
					c.setElapsed(cycle, elapsed, direction);
					c.plusType(cycle, direction);

					wordPos = (count-words);
					wordPosList.push_back(wordPos);
					binaryList.push_back(b.getWord0());
					numLines.push_back(num);

					wordPos = (count-words+1);
					wordPosList.push_back(wordPos);
					binaryList.push_back(b.getWord1());
					numLines.push_back(num);
					words -= 2;
					printList = true;

				}
			}
			else if(marker1 && words == 0) {
				marker1 = false;
			}
			else if(marker2 && words == 0) {
				marker2 = false;
			}

			++num;
		}

		f.close();

		// Data Rates
		cycle = "Read"; direction = "S-to-D";
		o.writeRate(d.GigaOrTera(d.MegaBits(c.getBits(cycle, direction), c.getElapsed(cycle, direction))), cycle, direction, output);
		cycle = "Read"; direction = "D-to-S";
		o.writeRate(d.GigaOrTera(d.MegaBits(c.getBits(cycle, direction), c.getElapsed(cycle, direction))), cycle, direction, output);
		cycle = "Write"; direction = "S-to-D";
		o.writeRate(d.GigaOrTera(d.MegaBits(c.getBits(cycle, direction), c.getElapsed(cycle, direction))), cycle, direction, output);
		cycle = "Write"; direction = "D-to-S";
		o.writeRate(d.GigaOrTera(d.MegaBits(c.getBits(cycle, direction), c.getElapsed(cycle, direction))), cycle, direction, output);

		output.close();
	}

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10f8, %rsp           # imm = 0x10F8
movl %edi, %r14d
leal -0x4(%r14), %eax
cmpl $-0x3, %eax
ja 0x4c7e
movq 0x8428(%rip), %rbx      # 0xcff0
leaq 0x56a1(%rip), %rsi      # 0xa270
movl $0x1a, %edx
movq %rbx, %rdi
callq 0x2200
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
leaq 0x5681(%rip), %rsi      # 0xa28b
movl $0x23, %edx
movq %rbx, %rdi
callq 0x2200
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
leaq 0x566a(%rip), %rsi      # 0xa2af
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x2200
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
jmp 0x7575
movq %rsi, %rbx
leaq 0xd68(%rsp), %r13
movq %r13, %rdi
callq 0x2210
movq 0x8(%rbx), %rsi
movq %r13, %rdi
movl $0x8, %edx
callq 0x21a0
movl $0x1, 0x18(%rsp)
leaq 0x448(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x53fa(%rip), %rdx      # 0xa0b7
leaq 0x438(%rsp), %rdi
movq %rdx, %rsi
callq 0x3144
leaq 0x50(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x53da(%rip), %rdx      # 0xa0b7
leaq 0x40(%rsp), %rdi
movq %rdx, %rsi
callq 0x3144
leaq 0x30(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x53bd(%rip), %rdx      # 0xa0b7
leaq 0x20(%rsp), %rdi
movq %rdx, %rsi
callq 0x3144
movl $0x0, 0x1c(%rsp)
xorl %eax, %eax
movq %rax, 0xf0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0xe0(%rsp)
movq %rax, 0x90(%rsp)
movaps %xmm0, 0x80(%rsp)
movq %rax, 0xd0(%rsp)
movaps %xmm0, 0xc0(%rsp)
movq %rax, 0xb0(%rsp)
movaps %xmm0, 0xa0(%rsp)
leaq 0x148(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x5350(%rip), %rdx      # 0xa0b7
leaq 0x138(%rsp), %rdi
movq %rdx, %rsi
callq 0x3144
leaq 0x428(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x532d(%rip), %rdx      # 0xa0b7
leaq 0x418(%rsp), %rdi
movq %rdx, %rsi
callq 0x3144
leaq 0x6a8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x530a(%rip), %rdx      # 0xa0b7
leaq 0x698(%rsp), %rdi
movq %rdx, %rsi
callq 0x3144
leaq 0x7(%rsp), %rdi
callq 0x257c
leaq 0xaf8(%rsp), %rdi
callq 0x26cc
leaq 0x158(%rsp), %rdi
callq 0x2a6c
leaq 0x4(%rsp), %rdi
callq 0x31d4
leaq 0x5(%rsp), %rdi
callq 0x3454
leaq 0x17(%rsp), %rdi
callq 0x39e4
leaq 0xb58(%rsp), %rdi
callq 0x2210
cmpl $0x3, %r14d
jne 0x4e88
movq 0x10(%rbx), %rbx
leaq 0x54ad(%rip), %rsi      # 0xa2ca
movq %rbx, %rdi
callq 0x2260
testl %eax, %eax
je 0x4ee4
leaq 0xb58(%rsp), %rdi
movq %rbx, %rsi
movl $0x10, %edx
callq 0x21a0
leaq 0xa98(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x524d(%rip), %rsi      # 0xa0a2
leaq 0x524a(%rip), %rdx      # 0xa0a6
leaq 0xa88(%rsp), %rdi
callq 0x3144
leaq 0x5(%rsp), %rdi
leaq 0xa88(%rsp), %rsi
callq 0x3458
movq 0xa88(%rsp), %rdi
jmp 0x4f25
leaq 0x543d(%rip), %rsi      # 0xa2cc
leaq 0xb58(%rsp), %rdi
movl $0x10, %edx
callq 0x21a0
leaq 0xa78(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x51ee(%rip), %rsi      # 0xa0a2
leaq 0x51eb(%rip), %rdx      # 0xa0a6
leaq 0xa68(%rsp), %rdi
callq 0x3144
leaq 0x5(%rsp), %rdi
leaq 0xa68(%rsp), %rsi
callq 0x3458
movq 0xa68(%rsp), %rdi
jmp 0x4f25
leaq 0xab8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x51a5(%rip), %rsi      # 0xa09c
leaq 0x51a3(%rip), %rdx      # 0xa0a1
leaq 0xaa8(%rsp), %rdi
callq 0x3144
leaq 0x5(%rsp), %rdi
leaq 0xaa8(%rsp), %rsi
callq 0x3458
movq 0xaa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x4f35
movq (%r14), %rsi
incq %rsi
callq 0x21e0
leaq 0x60(%rsp), %r14
movl $0x0, 0x8(%rsp)
movl $0x0, 0x100(%rsp)
movl $0x0, 0x108(%rsp)
xorl %ebx, %ebx
xorl %r15d, %r15d
movq 0xd68(%rsp), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %edx
movq %r13, %rdi
leaq 0x438(%rsp), %rsi
callq 0x2360
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x69fb
leaq 0xf78(%rsp), %rbp
movq %rbp, %rdi
leaq 0x438(%rsp), %rsi
movl $0x8, %edx
callq 0x2300
xorps %xmm0, %xmm0
movaps %xmm0, 0x110(%rsp)
movq $0x0, 0x120(%rsp)
leaq 0xac8(%rsp), %rdi
movq %rbp, %rsi
callq 0x8610
xorl %eax, %eax
movq %rax, 0x6b8(%rsp)
leaq 0x6d0(%rsp), %rbp
movq %rbp, 0x6c0(%rsp)
movq %rax, 0x6c8(%rsp)
movb %al, 0x6d0(%rsp)
movb %al, 0x6e0(%rsp)
leaq 0xac8(%rsp), %rdi
leaq 0x6b8(%rsp), %rsi
leaq 0x110(%rsp), %rdx
callq 0x842a
movq 0x6c0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5049
movq 0x6d0(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0xad0(%rsp), %rdi
leaq 0xae0(%rsp), %rax
cmpq %rax, %rdi
je 0x506e
movq 0xae0(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x110(%rsp), %rdi
movl $0xc0, %ebp
addq %rbp, %rdi
leaq 0x5256(%rip), %rsi      # 0xa2db
callq 0x2070
testl %eax, %eax
je 0x5198
movq 0x110(%rsp), %rdi
addq %rbp, %rdi
leaq 0x5240(%rip), %rsi      # 0xa2e4
callq 0x2070
testl %eax, %eax
je 0x588b
testb $0x1, 0x108(%rsp)
je 0x5fc1
testl %r15d, %r15d
jle 0x5fc1
movq 0x110(%rsp), %rax
leaq 0x2c8(%rsp), %rcx
movq %rcx, 0x2b8(%rsp)
movq 0xc0(%rax), %rsi
movq 0xc8(%rax), %rdx
addq %rsi, %rdx
leaq 0x2b8(%rsp), %rdi
callq 0x2930
leaq 0x7(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0x262a
movq %rax, 0x130(%rsp)
movq 0x2b8(%rsp), %rdi
leaq 0x2c8(%rsp), %rax
cmpq %rax, %rdi
je 0x513d
movq 0x2c8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x130(%rsp), %rax
leaq -0x40000818(%rax), %rcx
cmpq $0x3fc, %rcx            # imm = 0x3FC
ja 0x5f8a
movq 0xe8(%rsp), %rsi
movq %rsi, %rcx
subq 0xe0(%rsp), %rcx
cmpq $0x8, %rcx
ja 0x6104
cmpq 0xf0(%rsp), %rsi
je 0x60ef
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xe8(%rsp)
jmp 0x6104
testb $0x1, 0x8(%rsp)
je 0x547b
movq 0xe0(%rsp), %rax
movq (%rax), %rcx
cmpq 0x8(%rax), %rcx
jbe 0x5247
movq 0x80(%rsp), %rax
movq 0x88(%rsp), %rcx
cmpq %rcx, %rax
setne %dl
addq $-0x4, %rcx
cmpq %rax, %rcx
seta %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x5200
addq $0x4, %rax
movl -0x4(%rax), %edx
movl (%rcx), %esi
movl %esi, -0x4(%rax)
movl %edx, (%rcx)
addq $-0x4, %rcx
leaq 0x4(%rax), %rdx
cmpq %rcx, %rax
movq %rdx, %rax
jb 0x51e6
movq 0xc8(%rsp), %rbx
subq 0xc0(%rsp), %rbx
sarq $0x5, %rbx
decq %rbx
je 0x5247
movl $0x2, %ebp
xorl %eax, %eax
movq 0xc0(%rsp), %rcx
shlq $0x5, %rax
leaq (%rcx,%rax), %rdi
leaq (%rcx,%rax), %rsi
addq $0x20, %rsi
callq 0x2150
movl %ebp, %eax
addl $0x2, %ebp
cmpq %rax, %rbx
ja 0x5220
movq 0xc8(%rsp), %r15
movq 0xc0(%rsp), %rax
subq %rax, %r15
je 0x53c5
sarq $0x5, %r15
movl $0x1, %ebp
xorl %r13d, %r13d
movq 0x80(%rsp), %rax
movl (%rax,%r13,4), %ebx
movq 0xc0(%rsp), %rax
movq %r13, %rcx
shlq $0x5, %rcx
leaq 0x688(%rsp), %rdx
movq %rdx, 0x678(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq 0x678(%rsp), %r12
movq %r12, %rdi
callq 0x2930
movq %r14, %rdi
leaq 0x17(%rsp), %rsi
movl %ebx, %edx
movq %r12, %rcx
callq 0x39e8
leaq 0x138(%rsp), %rdi
movq %r14, %rsi
callq 0x20e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x52f1
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x678(%rsp), %rdi
leaq 0x688(%rsp), %rax
cmpq %rax, %rdi
je 0x5316
movq 0x688(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x138(%rsp), %rdi
leaq 0x4d92(%rip), %rsi      # 0xa0b7
callq 0x2070
testl %eax, %eax
je 0x53b7
leaq 0x668(%rsp), %rax
movq %rax, 0x658(%rsp)
movq 0x138(%rsp), %rsi
movq 0x140(%rsp), %rdx
addq %rsi, %rdx
leaq 0x658(%rsp), %rbx
movq %rbx, %rdi
callq 0x2930
movq 0x80(%rsp), %rax
movl (%rax,%r13,4), %edx
movq 0xa0(%rsp), %rax
movl (%rax,%r13,4), %ecx
leaq 0x5(%rsp), %rdi
movq %rbx, %rsi
leaq 0xb58(%rsp), %r8
callq 0x386c
movq 0x658(%rsp), %rdi
leaq 0x668(%rsp), %rax
cmpq %rax, %rdi
je 0x53b7
movq 0x668(%rsp), %rsi
incq %rsi
callq 0x21e0
movl %ebp, %r13d
incl %ebp
cmpq %r13, %r15
ja 0x526c
leaq 0x5(%rsp), %rdi
leaq 0xb58(%rsp), %rsi
callq 0x349c
movq 0xc0(%rsp), %rbx
movq 0xc8(%rsp), %r15
cmpq %rbx, %r15
je 0x541d
leaq 0x10(%rbx), %r13
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x5405
movq (%r13), %rsi
incq %rsi
callq 0x21e0
leaq 0x20(%r13), %rax
addq $0x10, %r13
cmpq %r15, %r13
movq %rax, %r13
jne 0x53f0
movq %rbx, 0xc8(%rsp)
movq 0xa0(%rsp), %rax
cmpq %rax, 0xa8(%rsp)
leaq 0xd68(%rsp), %r13
je 0x543f
movq %rax, 0xa8(%rsp)
movq 0x80(%rsp), %rax
cmpq %rax, 0x88(%rsp)
je 0x5459
movq %rax, 0x88(%rsp)
movq 0xe0(%rsp), %rax
cmpq %rax, 0xe8(%rsp)
je 0x5473
movq %rax, 0xe8(%rsp)
movl $0x0, 0x8(%rsp)
movq 0x110(%rsp), %rax
leaq 0x408(%rsp), %rcx
movq %rcx, 0x3f8(%rsp)
movq 0xe0(%rax), %rsi
movq 0xe8(%rax), %rdx
addq %rsi, %rdx
leaq 0x3f8(%rsp), %rdi
callq 0x2930
leaq 0x7(%rsp), %rdi
leaq 0x3f8(%rsp), %rsi
callq 0x2580
movl %eax, %ebx
movq 0x3f8(%rsp), %rdi
leaq 0x408(%rsp), %rax
cmpq %rax, %rdi
je 0x54ea
movq 0x408(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x110(%rsp), %rax
leaq 0x648(%rsp), %rcx
movq %rcx, 0x638(%rsp)
movq 0x120(%rax), %rsi
movq 0x128(%rax), %rdx
addq %rsi, %rdx
leaq 0x638(%rsp), %r15
movq %r15, %rdi
callq 0x2930
movq %r14, %rdi
leaq 0x158(%rsp), %rsi
movq %r15, %rdx
callq 0x2a8c
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x20e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x555f
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x638(%rsp), %rdi
leaq 0x648(%rsp), %rax
cmpq %rax, %rdi
je 0x5584
movq 0x648(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x28(%rsp), %rdx
movl $0x6, %r8d
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
leaq 0x4ac0(%rip), %rcx      # 0xa05d
callq 0x22b0
movq 0x110(%rsp), %rax
leaq 0x3e8(%rsp), %rcx
movq %rcx, 0x3d8(%rsp)
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq 0x3d8(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x3d8(%rsp), %rsi
callq 0x2b0c
movsd %xmm0, 0x108(%rsp)
movq 0x3d8(%rsp), %rdi
leaq 0x3e8(%rsp), %rax
cmpq %rax, %rdi
je 0x5615
movq 0x3e8(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x3c8(%rsp), %rax
movq %rax, 0x3b8(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3b8(%rsp), %rdi
callq 0x2930
leaq 0x628(%rsp), %rax
movq %rax, 0x618(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x618(%rsp), %r15
movq %r15, %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x3b8(%rsp), %rsi
movsd 0x108(%rsp), %xmm0
movq %r15, %rdx
callq 0x2df4
movq 0x618(%rsp), %rdi
leaq 0x628(%rsp), %rax
cmpq %rax, %rdi
je 0x56b2
movq 0x628(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x3b8(%rsp), %rdi
leaq 0x3c8(%rsp), %rax
cmpq %rax, %rdi
je 0x56d7
movq 0x3c8(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x3a8(%rsp), %rax
movq %rax, 0x398(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x398(%rsp), %rdi
callq 0x2930
leaq 0x608(%rsp), %rax
movq %rax, 0x5f8(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x5f8(%rsp), %r15
movq %r15, %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x398(%rsp), %rsi
movq %r15, %rdx
callq 0x2ee8
movq 0x5f8(%rsp), %rdi
leaq 0x608(%rsp), %rax
cmpq %rax, %rdi
je 0x576b
movq 0x608(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x398(%rsp), %rdi
leaq 0x3a8(%rsp), %rax
cmpq %rax, %rdi
je 0x5790
movq 0x3a8(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x388(%rsp), %rax
movq %rax, 0x378(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x378(%rsp), %rdi
callq 0x2930
movl 0x18(%rsp), %r15d
leaq 0x5e8(%rsp), %rax
movq %rax, 0x5d8(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x5d8(%rsp), %r12
movq %r12, %rdi
callq 0x2930
leaq 0x5(%rsp), %rdi
leaq 0x378(%rsp), %rsi
movl %ebx, %edx
movl %r15d, %ecx
movq %r12, %r8
leaq 0xb58(%rsp), %r9
callq 0x3518
movq 0x5d8(%rsp), %rdi
leaq 0x5e8(%rsp), %rax
cmpq %rax, %rdi
je 0x5833
movq 0x5e8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x378(%rsp), %rdi
leaq 0x388(%rsp), %rax
cmpq %rax, %rdi
je 0x5858
movq 0x388(%rsp), %rsi
incq %rsi
callq 0x21e0
movb $0x1, %al
movl %eax, 0x108(%rsp)
testl %ebx, %ebx
jg 0x5f87
leaq 0x5(%rsp), %rdi
leaq 0xb58(%rsp), %rsi
callq 0x349c
movl $0x0, 0x108(%rsp)
jmp 0x5f87
testb $0x1, 0x8(%rsp)
je 0x5b80
movq 0xe0(%rsp), %rax
movq (%rax), %rcx
cmpq 0x8(%rax), %rcx
jbe 0x594c
movq 0x80(%rsp), %rax
movq 0x88(%rsp), %rcx
cmpq %rcx, %rax
setne %dl
addq $-0x4, %rcx
cmpq %rax, %rcx
seta %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x58f3
addq $0x4, %rax
movl -0x4(%rax), %edx
movl (%rcx), %esi
movl %esi, -0x4(%rax)
movl %edx, (%rcx)
addq $-0x4, %rcx
leaq 0x4(%rax), %rdx
cmpq %rcx, %rax
movq %rdx, %rax
jb 0x58d9
movq 0xc0(%rsp), %rax
movq 0xc8(%rsp), %rcx
subq %rax, %rcx
cmpq $0x20, %rcx
je 0x594c
movl $0x2, %ebx
xorl %ecx, %ecx
shlq $0x5, %rcx
leaq (%rax,%rcx), %rdi
leaq (%rax,%rcx), %rsi
addq $0x20, %rsi
callq 0x2150
movl %ebx, %ecx
movq 0xc0(%rsp), %rax
movq 0xc8(%rsp), %rdx
subq %rax, %rdx
sarq $0x5, %rdx
decq %rdx
addl $0x2, %ebx
cmpq %rcx, %rdx
ja 0x5913
movq 0xc8(%rsp), %r15
movq 0xc0(%rsp), %rax
subq %rax, %r15
je 0x5aca
sarq $0x5, %r15
movl $0x1, %ebp
xorl %r13d, %r13d
movq 0x80(%rsp), %rax
movl (%rax,%r13,4), %ebx
movq 0xc0(%rsp), %rax
movq %r13, %rcx
shlq $0x5, %rcx
leaq 0x5c8(%rsp), %rdx
movq %rdx, 0x5b8(%rsp)
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq 0x5b8(%rsp), %r12
movq %r12, %rdi
callq 0x2930
movq %r14, %rdi
leaq 0x17(%rsp), %rsi
movl %ebx, %edx
movq %r12, %rcx
callq 0x39e8
leaq 0x138(%rsp), %rdi
movq %r14, %rsi
callq 0x20e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x59f6
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x5b8(%rsp), %rdi
leaq 0x5c8(%rsp), %rax
cmpq %rax, %rdi
je 0x5a1b
movq 0x5c8(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x138(%rsp), %rdi
leaq 0x468d(%rip), %rsi      # 0xa0b7
callq 0x2070
testl %eax, %eax
je 0x5abc
leaq 0x5a8(%rsp), %rax
movq %rax, 0x598(%rsp)
movq 0x138(%rsp), %rsi
movq 0x140(%rsp), %rdx
addq %rsi, %rdx
leaq 0x598(%rsp), %rbx
movq %rbx, %rdi
callq 0x2930
movq 0x80(%rsp), %rax
movl (%rax,%r13,4), %edx
movq 0xa0(%rsp), %rax
movl (%rax,%r13,4), %ecx
leaq 0x5(%rsp), %rdi
movq %rbx, %rsi
leaq 0xb58(%rsp), %r8
callq 0x386c
movq 0x598(%rsp), %rdi
leaq 0x5a8(%rsp), %rax
cmpq %rax, %rdi
je 0x5abc
movq 0x5a8(%rsp), %rsi
incq %rsi
callq 0x21e0
movl %ebp, %r13d
incl %ebp
cmpq %r13, %r15
ja 0x5971
leaq 0x5(%rsp), %rdi
leaq 0xb58(%rsp), %rsi
callq 0x349c
movq 0xc0(%rsp), %rbx
movq 0xc8(%rsp), %r15
cmpq %rbx, %r15
je 0x5b22
leaq 0x10(%rbx), %r13
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x5b0a
movq (%r13), %rsi
incq %rsi
callq 0x21e0
leaq 0x20(%r13), %rax
addq $0x10, %r13
cmpq %r15, %r13
movq %rax, %r13
jne 0x5af5
movq %rbx, 0xc8(%rsp)
movq 0xa0(%rsp), %rax
cmpq %rax, 0xa8(%rsp)
leaq 0xd68(%rsp), %r13
je 0x5b44
movq %rax, 0xa8(%rsp)
movq 0x80(%rsp), %rax
cmpq %rax, 0x88(%rsp)
je 0x5b5e
movq %rax, 0x88(%rsp)
movq 0xe0(%rsp), %rax
cmpq %rax, 0xe8(%rsp)
je 0x5b78
movq %rax, 0xe8(%rsp)
movl $0x0, 0x8(%rsp)
movq 0x110(%rsp), %rax
leaq 0x368(%rsp), %rcx
movq %rcx, 0x358(%rsp)
movq 0xe0(%rax), %rsi
movq 0xe8(%rax), %rdx
addq %rsi, %rdx
leaq 0x358(%rsp), %rdi
callq 0x2930
leaq 0x7(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0x2580
movl %eax, %ebx
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x5bef
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x110(%rsp), %rax
leaq 0x588(%rsp), %rcx
movq %rcx, 0x578(%rsp)
movq 0x120(%rax), %rsi
movq 0x128(%rax), %rdx
addq %rsi, %rdx
leaq 0x578(%rsp), %r15
movq %r15, %rdi
callq 0x2930
movq %r14, %rdi
leaq 0x158(%rsp), %rsi
movq %r15, %rdx
callq 0x2a8c
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x20e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x5c64
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x578(%rsp), %rdi
leaq 0x588(%rsp), %rax
cmpq %rax, %rdi
je 0x5c89
movq 0x588(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x28(%rsp), %rdx
movl $0x6, %r8d
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
leaq 0x43b4(%rip), %rcx      # 0xa056
callq 0x22b0
movq 0x110(%rsp), %rax
leaq 0x348(%rsp), %rcx
movq %rcx, 0x338(%rsp)
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq 0x338(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0x2b0c
movsd %xmm0, 0x100(%rsp)
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x5d1a
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x328(%rsp), %rax
movq %rax, 0x318(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x318(%rsp), %rdi
callq 0x2930
leaq 0x568(%rsp), %rax
movq %rax, 0x558(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x558(%rsp), %r15
movq %r15, %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x318(%rsp), %rsi
movsd 0x100(%rsp), %xmm0
movq %r15, %rdx
callq 0x2df4
movq 0x558(%rsp), %rdi
leaq 0x568(%rsp), %rax
cmpq %rax, %rdi
je 0x5db7
movq 0x568(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x318(%rsp), %rdi
leaq 0x328(%rsp), %rax
cmpq %rax, %rdi
je 0x5ddc
movq 0x328(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x308(%rsp), %rax
movq %rax, 0x2f8(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2f8(%rsp), %rdi
callq 0x2930
leaq 0x548(%rsp), %rax
movq %rax, 0x538(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x538(%rsp), %r15
movq %r15, %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
movq %r15, %rdx
callq 0x2ee8
movq 0x538(%rsp), %rdi
leaq 0x548(%rsp), %rax
cmpq %rax, %rdi
je 0x5e70
movq 0x548(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0x5e95
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x2e8(%rsp), %rax
movq %rax, 0x2d8(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2d8(%rsp), %rdi
callq 0x2930
movl 0x18(%rsp), %r15d
leaq 0x528(%rsp), %rax
movq %rax, 0x518(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x518(%rsp), %r12
movq %r12, %rdi
callq 0x2930
leaq 0x5(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
movl %ebx, %edx
movl %r15d, %ecx
movq %r12, %r8
leaq 0xb58(%rsp), %r9
callq 0x3518
movq 0x518(%rsp), %rdi
leaq 0x528(%rsp), %rax
cmpq %rax, %rdi
je 0x5f38
movq 0x528(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x2d8(%rsp), %rdi
leaq 0x2e8(%rsp), %rax
cmpq %rax, %rdi
je 0x5f5d
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0x21e0
movb $0x1, %al
movl %eax, 0x100(%rsp)
testl %ebx, %ebx
jg 0x5f87
leaq 0x5(%rsp), %rdi
leaq 0xb58(%rsp), %rsi
callq 0x349c
movl $0x0, 0x100(%rsp)
movl %ebx, %r15d
incl 0x18(%rsp)
leaq 0x110(%rsp), %rdi
callq 0x869c
leaq 0xf78(%rsp), %rdi
movq 0x7016(%rip), %rsi      # 0xcfc0
callq 0x2280
leaq 0xff0(%rsp), %rdi
callq 0x2090
jmp 0x4f5d
testb $0x1, 0x100(%rsp)
je 0x60a8
testl %r15d, %r15d
jle 0x60a8
movq 0x110(%rsp), %rax
leaq 0x228(%rsp), %rcx
movq %rcx, 0x218(%rsp)
movq 0xc0(%rax), %rsi
movq 0xc8(%rax), %rdx
addq %rsi, %rdx
leaq 0x218(%rsp), %rdi
callq 0x2930
leaq 0x7(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x262a
movq %rax, 0x130(%rsp)
movq 0x218(%rsp), %rdi
leaq 0x228(%rsp), %rax
cmpq %rax, %rdi
je 0x604d
movq 0x228(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x130(%rsp), %rax
leaq -0x40000c20(%rax), %rcx
cmpq $0x3fc, %rcx            # imm = 0x3FC
ja 0x5f8a
movq 0xe8(%rsp), %rsi
movq %rsi, %rcx
subq 0xe0(%rsp), %rcx
cmpq $0x8, %rcx
ja 0x657d
cmpq 0xf0(%rsp), %rsi
je 0x6568
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xe8(%rsp)
jmp 0x657d
testb $0x1, 0x108(%rsp)
je 0x60ca
testl %r15d, %r15d
jne 0x60ca
movl $0x0, 0x108(%rsp)
xorl %r15d, %r15d
jmp 0x5f8a
testl %r15d, %r15d
movl 0x100(%rsp), %edx
movzbl %dl, %eax
movl %eax, %ecx
cmovel %r15d, %ecx
testb $0x1, %dl
cmovel %eax, %ecx
movl %ecx, 0x100(%rsp)
jmp 0x5f8a
leaq 0xe0(%rsp), %rdi
leaq 0x130(%rsp), %rdx
callq 0x8b66
movq 0x110(%rsp), %rax
leaq 0x2a8(%rsp), %rcx
movq %rcx, 0x298(%rsp)
movq 0xe0(%rax), %rsi
movq 0xe8(%rax), %rdx
addq %rsi, %rdx
leaq 0x298(%rsp), %rdi
callq 0x2930
leaq 0xaf8(%rsp), %rdi
leaq 0x298(%rsp), %rsi
callq 0x274a
movq 0x298(%rsp), %rdi
leaq 0x2a8(%rsp), %rax
cmpq %rax, %rdi
je 0x6174
movq 0x2a8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x110(%rsp), %rax
leaq 0x508(%rsp), %rcx
movq %rcx, 0x4f8(%rsp)
movq 0x120(%rax), %rsi
movq 0x128(%rax), %rdx
addq %rsi, %rdx
leaq 0x4f8(%rsp), %r12
movq %r12, %rdi
callq 0x2930
movq %r14, %rdi
leaq 0x158(%rsp), %rsi
movq %r12, %rdx
callq 0x2a8c
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x20e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x61e9
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x4f8(%rsp), %rdi
leaq 0x508(%rsp), %rax
cmpq %rax, %rdi
je 0x620e
movq 0x508(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x28(%rsp), %rdx
movl $0x6, %r8d
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
leaq 0x3e36(%rip), %rcx      # 0xa05d
callq 0x22b0
movq 0x110(%rsp), %rax
leaq 0x288(%rsp), %rcx
movq %rcx, 0x278(%rsp)
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq 0x278(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0x2b0c
movsd %xmm0, 0x8(%rsp)
movq 0x278(%rsp), %rdi
leaq 0x288(%rsp), %rax
cmpq %rax, %rdi
je 0x629c
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x268(%rsp), %rax
movq %rax, 0x258(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x258(%rsp), %rdi
callq 0x2930
leaq 0x4e8(%rsp), %rax
movq %rax, 0x4d8(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x4d8(%rsp), %r12
movq %r12, %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x258(%rsp), %rsi
movsd 0x8(%rsp), %xmm0
movq %r12, %rdx
callq 0x2df4
movq 0x4d8(%rsp), %rdi
leaq 0x4e8(%rsp), %rax
cmpq %rax, %rdi
je 0x6336
movq 0x4e8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x258(%rsp), %rdi
leaq 0x268(%rsp), %rax
cmpq %rax, %rdi
je 0x635b
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x248(%rsp), %rax
movq %rax, 0x238(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x238(%rsp), %rdi
callq 0x2930
leaq 0x4c8(%rsp), %rax
movq %rax, 0x4b8(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x4b8(%rsp), %r12
movq %r12, %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x238(%rsp), %rsi
movq %r12, %rdx
callq 0x2ee8
movq 0x4b8(%rsp), %rdi
leaq 0x4c8(%rsp), %rax
cmpq %rax, %rdi
je 0x63ef
movq 0x4c8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x6414
movq 0x248(%rsp), %rsi
incq %rsi
callq 0x21e0
movl %ebx, %ebp
subl %r15d, %ebp
movl %ebp, 0x1c(%rsp)
movq 0x88(%rsp), %rsi
cmpq 0x90(%rsp), %rsi
je 0x643f
movl %ebp, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x88(%rsp)
jmp 0x6451
leaq 0x80(%rsp), %rdi
leaq 0x1c(%rsp), %rdx
callq 0x8ca2
movq %r14, %rdi
leaq 0xaf8(%rsp), %rsi
callq 0x28e8
leaq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0x865e
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x648d
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0xa8(%rsp), %rsi
cmpq 0xb0(%rsp), %rsi
je 0x64b3
movl 0x18(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xa8(%rsp)
jmp 0x64c5
leaq 0xa0(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x8ca2
incl %ebp
movl %ebp, 0x1c(%rsp)
movq 0x88(%rsp), %rsi
cmpq 0x90(%rsp), %rsi
je 0x64ed
movl %ebp, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x88(%rsp)
jmp 0x64ff
leaq 0x80(%rsp), %rdi
leaq 0x1c(%rsp), %rdx
callq 0x8ca2
movq %r14, %rdi
leaq 0xaf8(%rsp), %rsi
callq 0x290c
leaq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0x865e
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x653b
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0xa8(%rsp), %rsi
cmpq 0xb0(%rsp), %rsi
jne 0x69c6
leaq 0xa0(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x8ca2
jmp 0x69d8
leaq 0xe0(%rsp), %rdi
leaq 0x130(%rsp), %rdx
callq 0x8b66
movq 0x110(%rsp), %rax
leaq 0x208(%rsp), %rcx
movq %rcx, 0x1f8(%rsp)
movq 0xe0(%rax), %rsi
movq 0xe8(%rax), %rdx
addq %rsi, %rdx
leaq 0x1f8(%rsp), %rdi
callq 0x2930
leaq 0xaf8(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x274a
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x65ed
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x110(%rsp), %rax
leaq 0x4a8(%rsp), %rcx
movq %rcx, 0x498(%rsp)
movq 0x120(%rax), %rsi
movq 0x128(%rax), %rdx
addq %rsi, %rdx
leaq 0x498(%rsp), %r12
movq %r12, %rdi
callq 0x2930
movq %r14, %rdi
leaq 0x158(%rsp), %rsi
movq %r12, %rdx
callq 0x2a8c
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x20e0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x6662
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x498(%rsp), %rdi
leaq 0x4a8(%rsp), %rax
cmpq %rax, %rdi
je 0x6687
movq 0x4a8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x28(%rsp), %rdx
movl $0x6, %r8d
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
leaq 0x39b6(%rip), %rcx      # 0xa056
callq 0x22b0
movq 0x110(%rsp), %rax
leaq 0x1e8(%rsp), %rcx
movq %rcx, 0x1d8(%rsp)
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq 0x1d8(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x2b0c
movsd %xmm0, 0x8(%rsp)
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x6715
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x1c8(%rsp), %rax
movq %rax, 0x1b8(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1b8(%rsp), %rdi
callq 0x2930
leaq 0x488(%rsp), %rax
movq %rax, 0x478(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x478(%rsp), %r12
movq %r12, %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
movsd 0x8(%rsp), %xmm0
movq %r12, %rdx
callq 0x2df4
movq 0x478(%rsp), %rdi
leaq 0x488(%rsp), %rax
cmpq %rax, %rdi
je 0x67af
movq 0x488(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x67d4
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x198(%rsp), %rdi
callq 0x2930
leaq 0x468(%rsp), %rax
movq %rax, 0x458(%rsp)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x458(%rsp), %r12
movq %r12, %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x198(%rsp), %rsi
movq %r12, %rdx
callq 0x2ee8
movq 0x458(%rsp), %rdi
leaq 0x468(%rsp), %rax
cmpq %rax, %rdi
je 0x6868
movq 0x468(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x688d
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x21e0
movl %ebx, %ebp
subl %r15d, %ebp
movl %ebp, 0x1c(%rsp)
movq 0x88(%rsp), %rsi
cmpq 0x90(%rsp), %rsi
je 0x68b8
movl %ebp, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x88(%rsp)
jmp 0x68ca
leaq 0x80(%rsp), %rdi
leaq 0x1c(%rsp), %rdx
callq 0x8ca2
movq %r14, %rdi
leaq 0xaf8(%rsp), %rsi
callq 0x28e8
leaq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0x865e
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x6906
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0xa8(%rsp), %rsi
cmpq 0xb0(%rsp), %rsi
je 0x692c
movl 0x18(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xa8(%rsp)
jmp 0x693e
leaq 0xa0(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x8ca2
incl %ebp
movl %ebp, 0x1c(%rsp)
movq 0x88(%rsp), %rsi
cmpq 0x90(%rsp), %rsi
je 0x6966
movl %ebp, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x88(%rsp)
jmp 0x6978
leaq 0x80(%rsp), %rdi
leaq 0x1c(%rsp), %rdx
callq 0x8ca2
movq %r14, %rdi
leaq 0xaf8(%rsp), %rsi
callq 0x290c
leaq 0xc0(%rsp), %rdi
movq %r14, %rsi
callq 0x865e
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x69b4
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0xa8(%rsp), %rsi
cmpq 0xb0(%rsp), %rsi
je 0x69e7
movl 0x18(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xa8(%rsp)
addl $-0x2, %r15d
movb $0x1, %al
movl %eax, 0x8(%rsp)
jmp 0x5f8a
leaq 0xa0(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x8ca2
jmp 0x69d8
leaq 0xd68(%rsp), %rdi
callq 0x2040
leaq 0x40(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x362c(%rip), %rcx      # 0xa044
movl $0x4, %r8d
xorl %esi, %esi
callq 0x22b0
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x3628(%rip), %rcx      # 0xa05d
movl $0x6, %r8d
xorl %esi, %esi
callq 0x22b0
leaq 0x9d8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x9c8(%rsp), %rdi
callq 0x2930
leaq 0x9b8(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x9a8(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x9c8(%rsp), %rsi
leaq 0x9a8(%rsp), %rdx
callq 0x2faa
movl %eax, %ebx
leaq 0x998(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x988(%rsp), %rdi
callq 0x2930
leaq 0x978(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x968(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x988(%rsp), %rsi
leaq 0x968(%rsp), %rdx
callq 0x3072
leaq 0x4(%rsp), %rdi
movl %ebx, %esi
movq %rax, %rdx
callq 0x31d8
leaq 0xa48(%rsp), %rdi
leaq 0x4(%rsp), %rsi
callq 0x3208
leaq 0x958(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x948(%rsp), %rdi
callq 0x2930
leaq 0x938(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x928(%rsp), %rdi
callq 0x2930
leaq 0x5(%rsp), %rdi
leaq 0xa48(%rsp), %rsi
leaq 0x948(%rsp), %rdx
leaq 0x928(%rsp), %rcx
leaq 0xb58(%rsp), %r8
callq 0x370a
movq 0x928(%rsp), %rdi
cmpq %rbx, %rdi
je 0x6bcb
movq 0x938(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x948(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6be8
movq 0x958(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0xa58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6c09
movq 0xa58(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x968(%rsp), %rdi
cmpq %r13, %rdi
je 0x6c26
movq 0x978(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x988(%rsp), %rdi
cmpq %r12, %rdi
je 0x6c43
movq 0x998(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x9a8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6c60
movq 0x9b8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x9c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x6c7d
movq 0x9d8(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x40(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x33b7(%rip), %rcx      # 0xa044
movl $0x4, %r8d
xorl %esi, %esi
callq 0x22b0
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x33ac(%rip), %rcx      # 0xa056
movl $0x6, %r8d
xorl %esi, %esi
callq 0x22b0
leaq 0x918(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x908(%rsp), %rdi
callq 0x2930
leaq 0x8f8(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8e8(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x908(%rsp), %rsi
leaq 0x8e8(%rsp), %rdx
callq 0x2faa
movl %eax, %ebx
leaq 0x8d8(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8c8(%rsp), %rdi
callq 0x2930
leaq 0x8b8(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8a8(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x8c8(%rsp), %rsi
leaq 0x8a8(%rsp), %rdx
callq 0x3072
leaq 0x4(%rsp), %rdi
movl %ebx, %esi
movq %rax, %rdx
callq 0x31d8
leaq 0xa28(%rsp), %rdi
leaq 0x4(%rsp), %rsi
callq 0x3208
leaq 0x898(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x888(%rsp), %rdi
callq 0x2930
leaq 0x878(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x868(%rsp), %rdi
callq 0x2930
leaq 0x5(%rsp), %rdi
leaq 0xa28(%rsp), %rsi
leaq 0x888(%rsp), %rdx
leaq 0x868(%rsp), %rcx
leaq 0xb58(%rsp), %r8
callq 0x370a
movq 0x868(%rsp), %rdi
cmpq %rbx, %rdi
je 0x6e40
movq 0x878(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x888(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6e5d
movq 0x898(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0xa38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6e7e
movq 0xa38(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x8a8(%rsp), %rdi
cmpq %r13, %rdi
je 0x6e9b
movq 0x8b8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x8c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x6eb8
movq 0x8d8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x8e8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6ed5
movq 0x8f8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x908(%rsp), %rdi
cmpq %r14, %rdi
je 0x6ef2
movq 0x918(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x40(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x3139(%rip), %rcx      # 0xa03b
movl $0x5, %r8d
xorl %esi, %esi
callq 0x22b0
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x313e(%rip), %rcx      # 0xa05d
movl $0x6, %r8d
xorl %esi, %esi
callq 0x22b0
leaq 0x858(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x848(%rsp), %rdi
callq 0x2930
leaq 0x838(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x828(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x848(%rsp), %rsi
leaq 0x828(%rsp), %rdx
callq 0x2faa
movl %eax, %ebx
leaq 0x818(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x808(%rsp), %rdi
callq 0x2930
leaq 0x7f8(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x7e8(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x808(%rsp), %rsi
leaq 0x7e8(%rsp), %rdx
callq 0x3072
leaq 0x4(%rsp), %rdi
movl %ebx, %esi
movq %rax, %rdx
callq 0x31d8
leaq 0xa08(%rsp), %rdi
leaq 0x4(%rsp), %rsi
callq 0x3208
leaq 0x7d8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x7c8(%rsp), %rdi
callq 0x2930
leaq 0x7b8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x7a8(%rsp), %rdi
callq 0x2930
leaq 0x5(%rsp), %rdi
leaq 0xa08(%rsp), %rsi
leaq 0x7c8(%rsp), %rdx
leaq 0x7a8(%rsp), %rcx
leaq 0xb58(%rsp), %r8
callq 0x370a
movq 0x7a8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x70b5
movq 0x7b8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x7c8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x70d2
movq 0x7d8(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0xa18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x70f3
movq 0xa18(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x7e8(%rsp), %rdi
cmpq %r13, %rdi
je 0x7110
movq 0x7f8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x808(%rsp), %rdi
cmpq %r12, %rdi
je 0x712d
movq 0x818(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x828(%rsp), %rdi
cmpq %r15, %rdi
je 0x714a
movq 0x838(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x848(%rsp), %rdi
cmpq %r14, %rdi
je 0x7167
movq 0x858(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x40(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x2ec4(%rip), %rcx      # 0xa03b
movl $0x5, %r8d
xorl %esi, %esi
callq 0x22b0
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rdx
leaq 0x2ec2(%rip), %rcx      # 0xa056
movl $0x6, %r8d
xorl %esi, %esi
callq 0x22b0
leaq 0x798(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x788(%rsp), %rdi
callq 0x2930
leaq 0x778(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x768(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x788(%rsp), %rsi
leaq 0x768(%rsp), %rdx
callq 0x2faa
movl %eax, %ebx
leaq 0x758(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x748(%rsp), %rdi
callq 0x2930
leaq 0x738(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x728(%rsp), %rdi
callq 0x2930
leaq 0x158(%rsp), %rdi
leaq 0x748(%rsp), %rsi
leaq 0x728(%rsp), %rdx
callq 0x3072
leaq 0x4(%rsp), %rdi
movl %ebx, %esi
movq %rax, %rdx
callq 0x31d8
leaq 0x9e8(%rsp), %rdi
leaq 0x4(%rsp), %rsi
callq 0x3208
leaq 0x718(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
leaq 0x708(%rsp), %rdi
callq 0x2930
leaq 0x6f8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x6e8(%rsp), %rdi
callq 0x2930
leaq 0x5(%rsp), %rdi
leaq 0x9e8(%rsp), %rsi
leaq 0x708(%rsp), %rdx
leaq 0x6e8(%rsp), %rcx
leaq 0xb58(%rsp), %r8
callq 0x370a
movq 0x6e8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x732a
movq 0x6f8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x708(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7347
movq 0x718(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x9f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7368
movq 0x9f8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x728(%rsp), %rdi
cmpq %r13, %rdi
je 0x7385
movq 0x738(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x748(%rsp), %rdi
cmpq %r12, %rdi
je 0x73a2
movq 0x758(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x768(%rsp), %rdi
cmpq %r15, %rdi
je 0x73bf
movq 0x778(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x788(%rsp), %rdi
cmpq %r14, %rdi
je 0x73dc
movq 0x798(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0xb58(%rsp), %rdi
callq 0x2040
leaq 0xb58(%rsp), %rdi
callq 0x2050
leaq 0x17(%rsp), %rdi
callq 0x39e6
leaq 0x5(%rsp), %rdi
callq 0x3456
leaq 0x4(%rsp), %rdi
callq 0x31d6
leaq 0x158(%rsp), %rdi
callq 0x2a8a
leaq 0xaf8(%rsp), %rdi
callq 0x26fc
leaq 0x7(%rsp), %rdi
callq 0x257e
movq 0x698(%rsp), %rdi
leaq 0x6a8(%rsp), %rax
cmpq %rax, %rdi
je 0x745d
movq 0x6a8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x418(%rsp), %rdi
leaq 0x428(%rsp), %rax
cmpq %rax, %rdi
je 0x7482
movq 0x428(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x74a7
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x74c4
movq 0xb0(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
leaq 0xc0(%rsp), %rdi
callq 0x869c
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x74ee
movq 0x90(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x750b
movq 0xf0(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x7527
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x7543
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x438(%rsp), %rdi
leaq 0x448(%rsp), %rax
cmpq %rax, %rdi
je 0x7568
movq 0x448(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0xd68(%rsp), %rdi
callq 0x2050
xorl %eax, %eax
addq $0x10f8, %rsp           # imm = 0x10F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0xaa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x8296
movq 0xab8(%rsp), %rsi
jmp 0x75eb
jmp 0x819a
movq %rax, %rbx
movq 0xa88(%rsp), %rdi
cmpq %r14, %rdi
je 0x8296
movq 0xa98(%rsp), %rsi
jmp 0x75eb
jmp 0x819a
movq %rax, %rbx
movq 0xa68(%rsp), %rdi
cmpq %r14, %rdi
je 0x8296
movq 0xa78(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x8296
jmp 0x819a
movq %rax, 0x8(%rsp)
movq 0x6e8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7626
movq 0x6f8(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7626
movq %rax, 0x8(%rsp)
movq 0x708(%rsp), %rdi
cmpq %rbp, %rdi
je 0x764a
movq 0x718(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x764a
movq %rax, 0x8(%rsp)
leaq 0x9f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7a1b
movq 0x9f8(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7a1b
movq %rax, 0x8(%rsp)
jmp 0x7a38
movq %rax, 0x8(%rsp)
jmp 0x7a72
movq %rax, 0x8(%rsp)
movq 0x7a8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x76b1
movq 0x7b8(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x76b1
movq %rax, 0x8(%rsp)
movq 0x7c8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x76d5
movq 0x7d8(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x76d5
movq %rax, 0x8(%rsp)
leaq 0xa18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7a95
movq 0xa18(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7a95
movq %rax, 0x8(%rsp)
jmp 0x7ab2
movq %rax, 0x8(%rsp)
jmp 0x7aec
movq %rax, 0x8(%rsp)
movq 0x868(%rsp), %rdi
cmpq %rbx, %rdi
je 0x773c
movq 0x878(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x773c
movq %rax, 0x8(%rsp)
movq 0x888(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7760
movq 0x898(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7760
movq %rax, 0x8(%rsp)
leaq 0xa38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7b0f
movq 0xa38(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7b0f
movq %rax, 0x8(%rsp)
jmp 0x7b2c
movq %rax, 0x8(%rsp)
jmp 0x7b66
movq %rax, 0x8(%rsp)
movq 0x928(%rsp), %rdi
cmpq %rbx, %rdi
je 0x77c7
movq 0x938(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x77c7
movq %rax, 0x8(%rsp)
movq 0x948(%rsp), %rdi
cmpq %rbp, %rdi
je 0x77eb
movq 0x958(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x77eb
movq %rax, 0x8(%rsp)
leaq 0xa58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7b86
movq 0xa58(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7b86
movq %rax, 0x8(%rsp)
jmp 0x7ba3
movq %rax, 0x8(%rsp)
jmp 0x7bdd
movq %rax, %rbx
jmp 0x82a3
movq %rax, %rbx
jmp 0x82ad
movq %rax, %rbx
jmp 0x82b7
movq %rax, %rbx
jmp 0x82c1
movq %rax, %rbx
jmp 0x82ce
movq %rax, %rbx
jmp 0x82db
movq %rax, %rbx
jmp 0x82e5
movq %rax, %rbx
jmp 0x830a
movq %rax, %rbx
jmp 0x832f
movq %rax, %rbx
jmp 0x8354
movq %rax, %rbx
jmp 0x83d4
movq %rax, %rbx
jmp 0x83f0
jmp 0x788b
movq %rax, %rbx
jmp 0x8415
movq %rax, %rbx
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x1e8(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x478(%rsp), %rdi
leaq 0x488(%rsp), %rax
cmpq %rax, %rdi
je 0x78f3
movq 0x488(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x78f3
jmp 0x8265
jmp 0x7c99
movq %rax, %rbx
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x1c8(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x7978
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7978
movq %rax, %rbx
jmp 0x79cb
movq %rax, %rbx
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x208(%rsp), %rsi
jmp 0x8259
jmp 0x7c99
jmp 0x8265
movq %rax, %rbx
movq 0x498(%rsp), %rdi
leaq 0x4a8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x4a8(%rsp), %rsi
jmp 0x8259
jmp 0x8265
movq %rax, %rbx
movq 0x458(%rsp), %rdi
leaq 0x468(%rsp), %rax
cmpq %rax, %rdi
je 0x79cb
movq 0x468(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x1a8(%rsp), %rsi
jmp 0x8259
movq %rax, 0x8(%rsp)
jmp 0x7a55
movq %rax, 0x8(%rsp)
jmp 0x7acf
movq %rax, 0x8(%rsp)
jmp 0x7b49
movq %rax, 0x8(%rsp)
jmp 0x7bc0
movq %rax, 0x8(%rsp)
movq 0x728(%rsp), %rdi
cmpq %r13, %rdi
je 0x7a38
movq 0x738(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x748(%rsp), %rdi
cmpq %r12, %rdi
je 0x7a55
movq 0x758(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x768(%rsp), %rdi
cmpq %r15, %rdi
je 0x7a72
movq 0x778(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x788(%rsp), %rdi
cmpq %r14, %rdi
je 0x7bfa
movq 0x798(%rsp), %rsi
jmp 0x7bf2
movq %rax, 0x8(%rsp)
movq 0x7e8(%rsp), %rdi
cmpq %r13, %rdi
je 0x7ab2
movq 0x7f8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x808(%rsp), %rdi
cmpq %r12, %rdi
je 0x7acf
movq 0x818(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x828(%rsp), %rdi
cmpq %r15, %rdi
je 0x7aec
movq 0x838(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x848(%rsp), %rdi
cmpq %r14, %rdi
je 0x7bfa
movq 0x858(%rsp), %rsi
jmp 0x7bf2
movq %rax, 0x8(%rsp)
movq 0x8a8(%rsp), %rdi
cmpq %r13, %rdi
je 0x7b2c
movq 0x8b8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x8c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7b49
movq 0x8d8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x8e8(%rsp), %rdi
cmpq %r15, %rdi
je 0x7b66
movq 0x8f8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x908(%rsp), %rdi
cmpq %r14, %rdi
je 0x7bfa
movq 0x918(%rsp), %rsi
jmp 0x7bf2
movq %rax, 0x8(%rsp)
movq 0x968(%rsp), %rdi
cmpq %r13, %rdi
je 0x7ba3
movq 0x978(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x988(%rsp), %rdi
cmpq %r12, %rdi
je 0x7bc0
movq 0x998(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x9a8(%rsp), %rdi
cmpq %r15, %rdi
je 0x7bdd
movq 0x9b8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x9c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x7bfa
movq 0x9d8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x8(%rsp), %rbx
jmp 0x8296
movq %rax, %rbx
movq 0x4b8(%rsp), %rdi
leaq 0x4c8(%rsp), %rax
cmpq %rax, %rdi
je 0x7c31
movq 0x4c8(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7c31
movq %rax, %rbx
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x248(%rsp), %rsi
jmp 0x8259
jmp 0x8265
jmp 0x8265
jmp 0x8265
movq %rax, %rbx
movq 0x218(%rsp), %rdi
leaq 0x228(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x228(%rsp), %rsi
jmp 0x8259
jmp 0x7c99
movq %rax, %rbx
jmp 0x7d2a
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x70(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x278(%rsp), %rdi
leaq 0x288(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x288(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x298(%rsp), %rdi
leaq 0x2a8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x2a8(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x7d2a
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x4f8(%rsp), %rdi
leaq 0x508(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x508(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x4d8(%rsp), %rdi
leaq 0x4e8(%rsp), %rax
cmpq %rax, %rdi
je 0x7d7d
movq 0x4e8(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7d7d
movq %rax, %rbx
movq 0x258(%rsp), %rdi
leaq 0x268(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x268(%rsp), %rsi
jmp 0x8259
jmp 0x8265
jmp 0x8265
movq %rax, %rbx
movq 0x2b8(%rsp), %rdi
leaq 0x2c8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x2c8(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x7f58
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7f58
movq %rax, %rbx
movq 0x518(%rsp), %rdi
leaq 0x528(%rsp), %rax
cmpq %rax, %rdi
je 0x7eb3
movq 0x528(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7eb3
movq %rax, %rbx
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x348(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
jmp 0x7e85
movq %rax, %rbx
movq 0x558(%rsp), %rdi
leaq 0x568(%rsp), %rax
cmpq %rax, %rdi
je 0x7e85
movq 0x568(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x318(%rsp), %rdi
leaq 0x328(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x328(%rsp), %rsi
jmp 0x8259
jmp 0x8265
movq %rax, %rbx
movq 0x2d8(%rsp), %rdi
leaq 0x2e8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x2e8(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x368(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x538(%rsp), %rdi
leaq 0x548(%rsp), %rax
cmpq %rax, %rdi
je 0x7f2f
movq 0x548(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7f2f
movq %rax, %rbx
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x308(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x578(%rsp), %rdi
leaq 0x588(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x588(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x7faa
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x7faa
movq %rax, %rbx
jmp 0x8052
movq %rax, %rbx
movq 0x638(%rsp), %rdi
leaq 0x648(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x648(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x618(%rsp), %rdi
leaq 0x628(%rsp), %rax
cmpq %rax, %rdi
je 0x80ce
movq 0x628(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x80ce
movq %rax, %rbx
movq 0x3d8(%rsp), %rdi
leaq 0x3e8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x3e8(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x5d8(%rsp), %rdi
leaq 0x5e8(%rsp), %rax
cmpq %rax, %rdi
je 0x8052
movq 0x5e8(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x378(%rsp), %rdi
leaq 0x388(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x388(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x5f8(%rsp), %rdi
leaq 0x608(%rsp), %rax
cmpq %rax, %rdi
je 0x80a5
movq 0x608(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x80a5
movq %rax, %rbx
movq 0x398(%rsp), %rdi
leaq 0x3a8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x3a8(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
movq 0x3b8(%rsp), %rdi
leaq 0x3c8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x3c8(%rsp), %rsi
jmp 0x8259
jmp 0x8265
movq %rax, %rbx
movq 0x3f8(%rsp), %rdi
leaq 0x408(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x408(%rsp), %rsi
jmp 0x8259
jmp 0x819a
movq %rax, %rbx
movq 0x6c0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x8144
movq 0x6d0(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0xad0(%rsp), %rdi
leaq 0xae0(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0xae0(%rsp), %rsi
jmp 0x8259
jmp 0x819a
movq %rax, %rbx
movq 0x598(%rsp), %rdi
leaq 0x5a8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x5a8(%rsp), %rsi
jmp 0x8259
jmp 0x8265
movq %rax, %rbx
jmp 0x8296
movq %rax, %rbx
movq 0x658(%rsp), %rdi
leaq 0x668(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x668(%rsp), %rsi
jmp 0x8259
jmp 0x8265
jmp 0x8265
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x81f9
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x81f9
movq %rax, %rbx
movq 0x5b8(%rsp), %rdi
leaq 0x5c8(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x5c8(%rsp), %rsi
jmp 0x8259
movq %rax, %rbx
jmp 0x823c
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x823c
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x678(%rsp), %rdi
leaq 0x688(%rsp), %rax
cmpq %rax, %rdi
je 0x8268
movq 0x688(%rsp), %rsi
incq %rsi
callq 0x21e0
jmp 0x8268
jmp 0x8265
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x869c
movq 0x4d44(%rip), %rsi      # 0xcfc0
leaq 0xf78(%rsp), %rdi
callq 0x2280
leaq 0xff0(%rsp), %rdi
callq 0x2090
leaq 0xb58(%rsp), %rdi
callq 0x2050
leaq 0x17(%rsp), %rdi
callq 0x39e6
leaq 0x5(%rsp), %rdi
callq 0x3456
leaq 0x4(%rsp), %rdi
callq 0x31d6
leaq 0x158(%rsp), %rdi
callq 0x2a8a
leaq 0xaf8(%rsp), %rdi
callq 0x26fc
leaq 0x7(%rsp), %rdi
callq 0x257e
movq 0x698(%rsp), %rdi
leaq 0x6a8(%rsp), %rax
cmpq %rax, %rdi
je 0x830a
movq 0x6a8(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x428(%rsp), %rax
movq 0x418(%rsp), %rdi
cmpq %rax, %rdi
je 0x832f
movq 0x428(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x148(%rsp), %rax
movq 0x138(%rsp), %rdi
cmpq %rax, %rdi
je 0x8354
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x8371
movq 0xb0(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
leaq 0xc0(%rsp), %rdi
callq 0x869c
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x839b
movq 0x90(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x83b8
movq 0xf0(%rsp), %rsi
subq %rdi, %rsi
callq 0x21e0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x83d4
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0x50(%rsp), %rax
movq 0x40(%rsp), %rdi
cmpq %rax, %rdi
je 0x83f0
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x21e0
movq 0x438(%rsp), %rdi
leaq 0x448(%rsp), %rax
cmpq %rax, %rdi
je 0x8415
movq 0x448(%rsp), %rsi
incq %rsi
callq 0x21e0
leaq 0xd68(%rsp), %rdi
callq 0x2050
movq %rbx, %rdi
callq 0x2340