// File: /workspace/github_cpp_makefile_star2_O2/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 0x437e
movq 0x5cbc(%rip), %rbx      # 0x9ff0
leaq 0x2f35(%rip), %rsi      # 0x7270
movq %rbx, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x20e0
leaq 0x2f39(%rip), %rsi      # 0x728b
movq %rbx, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x20e0
leaq 0x2f46(%rip), %rsi      # 0x72af
movq %rbx, %rdi
callq 0x21f0
movq %rax, %rdi
callq 0x20e0
jmp 0x5b66
movq %rsi, %rbx
leaq 0xee8(%rsp), %r15
movq %r15, %rdi
callq 0x2230
movq 0x8(%rbx), %rsi
pushq $0x8
popq %rdx
movq %r15, %rdi
callq 0x21d0
movl $0x1, 0x1c(%rsp)
leaq 0x2d08(%rip), %rsi      # 0x70b7
leaq 0x1c8(%rsp), %rdi
leaq 0xb58(%rsp), %rdx
callq 0x2e8e
leaq 0x2cec(%rip), %rsi      # 0x70b7
leaq 0x50(%rsp), %rdi
leaq 0xb58(%rsp), %rdx
callq 0x2e8e
leaq 0x2cd3(%rip), %rsi      # 0x70b7
leaq 0x30(%rsp), %rdi
leaq 0xb58(%rsp), %rdx
callq 0x2e8e
andl $0x0, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0xd0(%rsp)
andq $0x0, 0xe0(%rsp)
movaps %xmm0, 0x70(%rsp)
andq $0x0, 0x80(%rsp)
movaps %xmm0, 0xb0(%rsp)
andq $0x0, 0xc0(%rsp)
movaps %xmm0, 0xf0(%rsp)
andq $0x0, 0x100(%rsp)
leaq 0x2c71(%rip), %rsi      # 0x70b7
leaq 0x178(%rsp), %rdi
leaq 0xb58(%rsp), %rdx
callq 0x2e8e
leaq 0x2c55(%rip), %rsi      # 0x70b7
leaq 0x988(%rsp), %rdi
leaq 0xb58(%rsp), %rdx
callq 0x2e8e
leaq 0x2c39(%rip), %rsi      # 0x70b7
leaq 0x968(%rsp), %rdi
leaq 0xb58(%rsp), %rdx
callq 0x2e8e
leaq 0x12(%rsp), %rdi
callq 0x254c
leaq 0x908(%rsp), %rdi
callq 0x2640
leaq 0x110(%rsp), %rdi
callq 0x2868
leaq 0xf(%rsp), %rdi
callq 0x2f60
leaq 0x10(%rsp), %rdi
callq 0x3110
leaq 0x13(%rsp), %rdi
callq 0x34a4
leaq 0xb58(%rsp), %rdi
callq 0x2230
cmpl $0x3, %r14d
jne 0x4543
movq 0x10(%rbx), %rsi
cmpb $0x2d, (%rsi)
jne 0x44fb
cmpb $0x0, 0x1(%rsi)
je 0x5b7a
leaq 0xb58(%rsp), %rdi
pushq $0x10
popq %rdx
callq 0x21d0
leaq 0x2b90(%rip), %rsi      # 0x70a2
leaq 0x5a8(%rsp), %rdi
leaq 0xd68(%rsp), %rdx
callq 0x2e8e
leaq 0x10(%rsp), %rdi
leaq 0x5a8(%rsp), %rsi
callq 0x3114
leaq 0x5a8(%rsp), %rdi
jmp 0x4590
leaq 0x2d82(%rip), %rsi      # 0x72cc
leaq 0xb58(%rsp), %rdi
pushq $0x10
popq %rdx
callq 0x21d0
leaq 0x2b41(%rip), %rsi      # 0x70a2
leaq 0x588(%rsp), %rdi
leaq 0xd68(%rsp), %rdx
callq 0x2e8e
leaq 0x10(%rsp), %rdi
leaq 0x588(%rsp), %rsi
callq 0x3114
leaq 0x588(%rsp), %rdi
callq 0x20c0
leaq 0x150(%rsp), %r15
leaq 0x568(%rsp), %r12
movl $0x0, 0x20(%rsp)
xorl %ebp, %ebp
movl $0x0, 0x28(%rsp)
movl $0x0, 0x14(%rsp)
xorl %r13d, %r13d
leaq 0xee8(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x2040
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x54b7
leaq 0xd68(%rsp), %rbx
movq %rbx, %rdi
leaq 0x1c8(%rsp), %rsi
pushq $0x8
popq %rdx
callq 0x22f0
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
andq $0x0, 0xa0(%rsp)
leaq 0x9a8(%rsp), %rdi
movq %rbx, %rsi
callq 0x63a8
movl %r13d, %r14d
andq $0x0, 0x198(%rsp)
leaq 0x1b0(%rsp), %rax
movq %rax, 0x1a0(%rsp)
andq $0x0, 0x1a8(%rsp)
xorl %eax, %eax
movb %al, 0x1b0(%rsp)
movb %al, 0x1c0(%rsp)
leaq 0x9a8(%rsp), %rdi
leaq 0x198(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x62c9
leaq 0x1a0(%rsp), %rdi
callq 0x20c0
leaq 0x9b0(%rsp), %rdi
callq 0x20c0
movq 0x90(%rsp), %rdi
movl $0xc0, %r13d
addq %r13, %rdi
leaq 0x2c2f(%rip), %rsi      # 0x72db
callq 0x2e80
testb %al, %al
je 0x4730
testb $0x1, 0x20(%rsp)
je 0x4bfb
movq 0xd0(%rsp), %rax
movq (%rax), %rcx
cmpq 0x8(%rax), %rcx
jbe 0x4aa9
movq 0x70(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0x67d7
movq 0xb8(%rsp), %rbx
subq 0xb0(%rsp), %rbx
sarq $0x5, %rbx
decq %rbx
xorl %eax, %eax
movl %eax, %r12d
cmpq %r12, %rbx
jbe 0x4aa9
movq 0xb0(%rsp), %rax
movq %r12, %rcx
shlq $0x5, %rcx
leaq (%rax,%rcx), %rdi
leaq (%rax,%rcx), %rsi
addq $0x20, %rsi
callq 0x2160
leal 0x2(%r12), %eax
jmp 0x46fd
movq 0x90(%rsp), %rdi
movl $0xc0, %ebx
addq %r13, %rdi
leaq 0x2b9d(%rip), %rsi      # 0x72e4
callq 0x2e80
testb %al, %al
je 0x47c4
testb $0x1, 0x20(%rsp)
je 0x524e
movq 0xd0(%rsp), %rax
movq (%rax), %rcx
cmpq 0x8(%rax), %rcx
jbe 0x5109
movq 0x70(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0x67d7
xorl %eax, %eax
movl %eax, %ebx
movq 0xb0(%rsp), %rax
movq 0xb8(%rsp), %r13
subq %rax, %r13
sarq $0x5, %r13
leaq -0x1(%r13), %rcx
cmpq %rbx, %rcx
jbe 0x511d
movq %rbx, %rcx
shlq $0x5, %rcx
leaq (%rax,%rcx), %rdi
leaq (%rax,%rcx), %rsi
addq $0x20, %rsi
callq 0x2160
leal 0x2(%rbx), %eax
jmp 0x4781
movl %r14d, %r13d
testl %r14d, %r14d
setg %al
andb 0x28(%rsp), %al
cmpb $0x1, %al
jne 0x4e31
movq 0x90(%rsp), %rsi
addq %rbx, %rsi
leaq 0x748(%rsp), %rdi
callq 0x2280
leaq 0x12(%rsp), %rdi
leaq 0x748(%rsp), %rbx
movq %rbx, %rsi
callq 0x25cc
movq %rax, 0xe8(%rsp)
movq %rbx, %rdi
callq 0x20c0
movq 0xe8(%rsp), %rax
movq $-0x40000818, %rcx      # imm = 0xBFFFF7E8
addq %rcx, %rax
movb $0x1, %cl
movl %ecx, 0x28(%rsp)
cmpq $0x3fc, %rax            # imm = 0x3FC
ja 0x546b
movq 0xd8(%rsp), %rax
subq 0xd0(%rsp), %rax
cmpq $0x8, %rax
ja 0x4865
leaq 0xd0(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x63fa
movq 0x90(%rsp), %rsi
movl $0xe0, %eax
addq %rax, %rsi
leaq 0x728(%rsp), %rdi
callq 0x2280
leaq 0x908(%rsp), %rdi
leaq 0x728(%rsp), %rbx
movq %rbx, %rsi
callq 0x2692
movq %rbx, %rdi
callq 0x20c0
movq 0x90(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
leaq 0x708(%rsp), %rbx
movq %rbx, %rdi
callq 0x2280
movq %r15, %rdi
leaq 0x110(%rsp), %rsi
movq %rbx, %rdx
callq 0x2882
leaq 0x50(%rsp), %rdi
movq %r15, %rsi
callq 0x2100
movq %r15, %rdi
callq 0x20c0
leaq 0x708(%rsp), %rdi
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x2732(%rip), %rsi      # 0x7035
callq 0x2360
movq 0x90(%rsp), %rsi
addq $0x40, %rsi
leaq 0x6e8(%rsp), %rdi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x6e8(%rsp), %rbx
movq %rbx, %rsi
callq 0x28ee
movsd %xmm0, 0x20(%rsp)
movq %rbx, %rdi
callq 0x20c0
leaq 0x6c8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0xa38(%rsp), %r14
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x6c8(%rsp), %rbx
movq %rbx, %rsi
movsd 0x20(%rsp), %xmm0
movq %r14, %rdx
callq 0x2b42
movq %r14, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
leaq 0x6a8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0xa18(%rsp), %r14
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x6a8(%rsp), %rbx
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2c28
movq %r14, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
movl 0x14(%rsp), %ebx
subl %r13d, %ebx
movl %ebx, 0x18(%rsp)
leaq 0x70(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x641a
movq %r15, %rdi
leaq 0x908(%rsp), %rsi
callq 0x27bc
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x6438
movq %r15, %rdi
callq 0x20c0
leaq 0xf0(%rsp), %rdi
leaq 0x1c(%rsp), %rsi
callq 0x641a
incl %ebx
movl %ebx, 0x18(%rsp)
leaq 0x70(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x641a
movq %r15, %rdi
leaq 0x908(%rsp), %rsi
callq 0x27ce
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x6438
movq %r15, %rdi
callq 0x20c0
leaq 0xf0(%rsp), %rdi
leaq 0x1c(%rsp), %rsi
callq 0x641a
addl $-0x2, %r13d
movb $0x1, %al
movl %eax, 0x20(%rsp)
movb $0x1, %al
movl %eax, 0x28(%rsp)
jmp 0x546b
movq 0xb8(%rsp), %r13
subq 0xb0(%rsp), %r13
sarq $0x5, %r13
xorl %ebx, %ebx
movl %ebx, %ebx
cmpq %rbx, %r13
jbe 0x4b8f
movq 0x70(%rsp), %rax
movl (%rax,%rbx,4), %r12d
movq %rbx, %rsi
shlq $0x5, %rsi
addq 0xb0(%rsp), %rsi
leaq 0x8e8(%rsp), %r14
movq %r14, %rdi
callq 0x2280
movq %r15, %rdi
leaq 0x13(%rsp), %rsi
movl %r12d, %edx
movq %r14, %rcx
callq 0x34a8
leaq 0x178(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x2100
movq %r15, %rdi
callq 0x20c0
leaq 0x8e8(%rsp), %rdi
callq 0x20c0
movq %r14, %rdi
leaq 0x2580(%rip), %rsi      # 0x70b7
callq 0x63e8
testb %al, %al
je 0x4b88
leaq 0xb38(%rsp), %r12
movq %r12, %rdi
leaq 0x178(%rsp), %rsi
callq 0x2280
movq 0x70(%rsp), %rax
movl (%rax,%rbx,4), %edx
movq 0xf0(%rsp), %rax
movl (%rax,%rbx,4), %ecx
leaq 0x10(%rsp), %rdi
movq %r12, %rsi
leaq 0xb58(%rsp), %r8
callq 0x33be
movq %r12, %rdi
callq 0x20c0
incl %ebx
jmp 0x4abf
leaq 0x10(%rsp), %rdi
leaq 0xb58(%rsp), %rsi
callq 0x3156
leaq 0xb0(%rsp), %rdi
callq 0x63f2
movq 0xf0(%rsp), %rax
cmpq %rax, 0xf8(%rsp)
je 0x4bc8
movq %rax, 0xf8(%rsp)
movq 0x70(%rsp), %rax
cmpq %rax, 0x78(%rsp)
je 0x4bd9
movq %rax, 0x78(%rsp)
movq 0xd0(%rsp), %rax
cmpq %rax, 0xd8(%rsp)
je 0x4bf3
movq %rax, 0xd8(%rsp)
movl $0x0, 0x20(%rsp)
movq 0x90(%rsp), %rsi
movl $0xe0, %eax
addq %rax, %rsi
leaq 0x8c8(%rsp), %rdi
callq 0x2280
leaq 0x12(%rsp), %rdi
leaq 0x8c8(%rsp), %rbx
movq %rbx, %rsi
callq 0x2550
movl %eax, 0x14(%rsp)
movq %rbx, %rdi
callq 0x20c0
movq 0x90(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
leaq 0x8a8(%rsp), %rbx
movq %rbx, %rdi
callq 0x2280
movq %r15, %rdi
leaq 0x110(%rsp), %rsi
movq %rbx, %rdx
callq 0x2882
leaq 0x50(%rsp), %rdi
movq %r15, %rsi
callq 0x2100
movq %r15, %rdi
callq 0x20c0
leaq 0x8a8(%rsp), %rdi
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x239b(%rip), %rsi      # 0x7035
callq 0x2360
movq 0x90(%rsp), %rsi
addq $0x40, %rsi
leaq 0x888(%rsp), %rdi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x888(%rsp), %rbx
movq %rbx, %rsi
callq 0x28ee
movsd %xmm0, 0x28(%rsp)
movq %rbx, %rdi
callq 0x20c0
leaq 0x868(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0xb18(%rsp), %r13
movq %r13, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x868(%rsp), %rbx
movq %rbx, %rsi
movsd 0x28(%rsp), %xmm0
movq %r13, %rdx
callq 0x2b42
movq %r13, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
leaq 0x848(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0xaf8(%rsp), %r13
movq %r13, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x848(%rsp), %rbx
movq %rbx, %rsi
movq %r13, %rdx
callq 0x2c28
movq %r13, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
leaq 0x828(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
movl 0x1c(%rsp), %r13d
leaq 0xad8(%rsp), %r12
movq %r12, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x10(%rsp), %rdi
leaq 0x828(%rsp), %rbx
movq %rbx, %rsi
movl 0x14(%rsp), %r14d
movl %r14d, %edx
movl %r13d, %ecx
movq %r12, %r8
leaq 0xb58(%rsp), %r9
callq 0x3194
movq %r12, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
movb $0x1, %al
movl %eax, 0x28(%rsp)
testl %r14d, %r14d
jle 0x4e0a
movl %r14d, %r13d
leaq 0x568(%rsp), %r12
jmp 0x546b
leaq 0x10(%rsp), %rdi
leaq 0xb58(%rsp), %rsi
callq 0x3156
leaq 0x568(%rsp), %r12
movl $0x0, 0x28(%rsp)
jmp 0x5466
testl %r13d, %r13d
setg %al
andb %bpl, %al
cmpb $0x1, %al
jne 0x548e
movq 0x90(%rsp), %rsi
addq %rbx, %rsi
leaq 0x688(%rsp), %rdi
callq 0x2280
leaq 0x12(%rsp), %rdi
leaq 0x688(%rsp), %rbx
movq %rbx, %rsi
callq 0x25cc
movq %rax, 0xe8(%rsp)
movq %rbx, %rdi
callq 0x20c0
movq 0xe8(%rsp), %rax
movq $-0x40000c20, %rcx      # imm = 0xBFFFF3E0
addq %rcx, %rax
movb $0x1, %bpl
cmpq $0x3fc, %rax            # imm = 0x3FC
ja 0x546b
movq 0xd8(%rsp), %rax
subq 0xd0(%rsp), %rax
cmpq $0x8, %rax
ja 0x4ecb
leaq 0xd0(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x63fa
movq 0x90(%rsp), %rsi
movl $0xe0, %eax
addq %rax, %rsi
leaq 0x668(%rsp), %rdi
callq 0x2280
leaq 0x908(%rsp), %rdi
leaq 0x668(%rsp), %rbx
movq %rbx, %rsi
callq 0x2692
movq %rbx, %rdi
callq 0x20c0
movq 0x90(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
leaq 0x648(%rsp), %rbx
movq %rbx, %rdi
callq 0x2280
movq %r15, %rdi
leaq 0x110(%rsp), %rsi
movq %rbx, %rdx
callq 0x2882
leaq 0x50(%rsp), %rdi
movq %r15, %rsi
callq 0x2100
movq %r15, %rdi
callq 0x20c0
leaq 0x648(%rsp), %rdi
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x20c5(%rip), %rsi      # 0x702e
callq 0x2360
movq 0x90(%rsp), %rsi
addq $0x40, %rsi
leaq 0x628(%rsp), %rdi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x628(%rsp), %rbx
movq %rbx, %rsi
callq 0x28ee
movsd %xmm0, 0x20(%rsp)
movq %rbx, %rdi
callq 0x20c0
leaq 0x608(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x9f8(%rsp), %r14
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x608(%rsp), %rbx
movq %rbx, %rsi
movsd 0x20(%rsp), %xmm0
movq %r14, %rdx
callq 0x2b42
movq %r14, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
leaq 0x5e8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x9d8(%rsp), %r14
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x5e8(%rsp), %rbx
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2c28
movq %r14, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
movl 0x14(%rsp), %ebx
subl %r13d, %ebx
movl %ebx, 0x18(%rsp)
leaq 0x70(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x641a
movq %r15, %rdi
leaq 0x908(%rsp), %rsi
callq 0x27bc
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x6438
movq %r15, %rdi
callq 0x20c0
leaq 0xf0(%rsp), %rdi
leaq 0x1c(%rsp), %rsi
callq 0x641a
incl %ebx
movl %ebx, 0x18(%rsp)
leaq 0x70(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x641a
movq %r15, %rdi
leaq 0x908(%rsp), %rsi
callq 0x27ce
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x6438
movq %r15, %rdi
callq 0x20c0
leaq 0xf0(%rsp), %rdi
leaq 0x1c(%rsp), %rsi
callq 0x641a
addl $-0x2, %r13d
movb $0x1, %al
movl %eax, 0x20(%rsp)
jmp 0x544d
movq 0xb8(%rsp), %r13
subq 0xb0(%rsp), %r13
sarq $0x5, %r13
xorl %ebx, %ebx
movl %ebx, %ebx
cmpq %rbx, %r13
jbe 0x51e2
movq 0x70(%rsp), %rax
movl (%rax,%rbx,4), %r14d
movq %rbx, %rsi
shlq $0x5, %rsi
addq 0xb0(%rsp), %rsi
movq %r12, %rdi
callq 0x2280
movq %r15, %rdi
leaq 0x13(%rsp), %rsi
movl %r14d, %edx
movq %r12, %rcx
callq 0x34a8
leaq 0x178(%rsp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x2100
movq %r15, %rdi
callq 0x20c0
movq %r12, %rdi
callq 0x20c0
movq %r14, %rdi
leaq 0x1f2d(%rip), %rsi      # 0x70b7
callq 0x63e8
testb %al, %al
je 0x51db
leaq 0xab8(%rsp), %r14
movq %r14, %rdi
leaq 0x178(%rsp), %rsi
callq 0x2280
movq 0x70(%rsp), %rax
movl (%rax,%rbx,4), %edx
movq 0xf0(%rsp), %rax
movl (%rax,%rbx,4), %ecx
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
leaq 0xb58(%rsp), %r8
callq 0x33be
movq %r14, %rdi
callq 0x20c0
incl %ebx
jmp 0x511f
leaq 0x10(%rsp), %rdi
leaq 0xb58(%rsp), %rsi
callq 0x3156
leaq 0xb0(%rsp), %rdi
callq 0x63f2
movq 0xf0(%rsp), %rax
cmpq %rax, 0xf8(%rsp)
je 0x521b
movq %rax, 0xf8(%rsp)
movq 0x70(%rsp), %rax
cmpq %rax, 0x78(%rsp)
je 0x522c
movq %rax, 0x78(%rsp)
movq 0xd0(%rsp), %rax
cmpq %rax, 0xd8(%rsp)
je 0x5246
movq %rax, 0xd8(%rsp)
movl $0x0, 0x20(%rsp)
movq 0x90(%rsp), %rsi
movl $0xe0, %eax
addq %rax, %rsi
leaq 0x808(%rsp), %rdi
callq 0x2280
leaq 0x12(%rsp), %rdi
leaq 0x808(%rsp), %rbx
movq %rbx, %rsi
callq 0x2550
movl %eax, 0x14(%rsp)
movq %rbx, %rdi
callq 0x20c0
movq 0x90(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
leaq 0x7e8(%rsp), %rbx
movq %rbx, %rdi
callq 0x2280
movq %r15, %rdi
leaq 0x110(%rsp), %rsi
movq %rbx, %rdx
callq 0x2882
leaq 0x50(%rsp), %rdi
movq %r15, %rsi
callq 0x2100
movq %r15, %rdi
callq 0x20c0
leaq 0x7e8(%rsp), %rdi
callq 0x20c0
leaq 0x30(%rsp), %rdi
leaq 0x1d41(%rip), %rsi      # 0x702e
callq 0x2360
movq 0x90(%rsp), %rsi
addq $0x40, %rsi
leaq 0x7c8(%rsp), %rdi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x7c8(%rsp), %rbx
movq %rbx, %rsi
callq 0x28ee
movsd %xmm0, 0x170(%rsp)
movq %rbx, %rdi
callq 0x20c0
leaq 0x7a8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0xa98(%rsp), %r14
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x7a8(%rsp), %rbx
movq %rbx, %rsi
movsd 0x170(%rsp), %xmm0
movq %r14, %rdx
callq 0x2b42
movq %r14, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
leaq 0x788(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0xa78(%rsp), %r14
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x788(%rsp), %rbx
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2c28
movq %r14, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
leaq 0x768(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
movl 0x1c(%rsp), %r13d
leaq 0xa58(%rsp), %r14
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x10(%rsp), %rdi
leaq 0x768(%rsp), %rbx
movq %rbx, %rsi
movl 0x14(%rsp), %ebp
movl %ebp, %edx
movl %r13d, %ecx
movq %r14, %r8
leaq 0xb58(%rsp), %r9
callq 0x3194
movq %r14, %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x20c0
testl %ebp, %ebp
jle 0x5452
movl %ebp, %r13d
movb $0x1, %bpl
jmp 0x546b
leaq 0x10(%rsp), %rdi
leaq 0xb58(%rsp), %rsi
callq 0x3156
xorl %ebp, %ebp
movl 0x14(%rsp), %r13d
incl 0x1c(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x6464
leaq 0xd68(%rsp), %rdi
callq 0x20d0
jmp 0x45c2
testl %r13d, %r13d
sete %al
testb %al, 0x28(%rsp)
je 0x54a7
movl $0x0, 0x28(%rsp)
xorl %r13d, %r13d
jmp 0x546b
testl %r13d, %r13d
sete %al
andb %bpl, %al
xorb %bpl, %al
movl %eax, %ebp
jmp 0x546b
leaq 0xee8(%rsp), %rdi
callq 0x2030
leaq 0x1b51(%rip), %rsi      # 0x701c
leaq 0x50(%rsp), %rdi
callq 0x2360
leaq 0x1b59(%rip), %rsi      # 0x7035
leaq 0x30(%rsp), %rdi
callq 0x2360
leaq 0x528(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x508(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x528(%rsp), %rsi
leaq 0x508(%rsp), %rdx
callq 0x2cee
movl %eax, %ebx
leaq 0x4e8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x4c8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
leaq 0x4c8(%rsp), %rdx
callq 0x2dba
leaq 0xf(%rsp), %rdi
movl %ebx, %esi
movq %rax, %rdx
callq 0x2f64
leaq 0x548(%rsp), %rdi
leaq 0xf(%rsp), %rsi
callq 0x2f82
leaq 0x4a8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x488(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x10(%rsp), %rdi
leaq 0x548(%rsp), %rsi
leaq 0x4a8(%rsp), %rdx
leaq 0x488(%rsp), %rcx
leaq 0xb58(%rsp), %r8
callq 0x32f0
leaq 0x488(%rsp), %rdi
callq 0x20c0
leaq 0x4a8(%rsp), %rdi
callq 0x20c0
leaq 0x548(%rsp), %rdi
callq 0x20c0
leaq 0x4c8(%rsp), %rdi
callq 0x20c0
leaq 0x4e8(%rsp), %rdi
callq 0x20c0
leaq 0x508(%rsp), %rdi
callq 0x20c0
leaq 0x528(%rsp), %rdi
callq 0x20c0
leaq 0x19e1(%rip), %rsi      # 0x701c
leaq 0x50(%rsp), %rdi
callq 0x2360
leaq 0x19e2(%rip), %rsi      # 0x702e
leaq 0x30(%rsp), %rdi
callq 0x2360
leaq 0x448(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x428(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x448(%rsp), %rsi
leaq 0x428(%rsp), %rdx
callq 0x2cee
movl %eax, %ebx
leaq 0x408(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x3e8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x408(%rsp), %rsi
leaq 0x3e8(%rsp), %rdx
callq 0x2dba
leaq 0xf(%rsp), %rdi
movl %ebx, %esi
movq %rax, %rdx
callq 0x2f64
leaq 0x468(%rsp), %rdi
leaq 0xf(%rsp), %rsi
callq 0x2f82
leaq 0x3c8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x3a8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x10(%rsp), %rdi
leaq 0x468(%rsp), %rsi
leaq 0x3c8(%rsp), %rdx
leaq 0x3a8(%rsp), %rcx
leaq 0xb58(%rsp), %r8
callq 0x32f0
leaq 0x3a8(%rsp), %rdi
callq 0x20c0
leaq 0x3c8(%rsp), %rdi
callq 0x20c0
leaq 0x468(%rsp), %rdi
callq 0x20c0
leaq 0x3e8(%rsp), %rdi
callq 0x20c0
leaq 0x408(%rsp), %rdi
callq 0x20c0
leaq 0x428(%rsp), %rdi
callq 0x20c0
leaq 0x448(%rsp), %rdi
callq 0x20c0
leaq 0x1868(%rip), %rsi      # 0x7013
leaq 0x50(%rsp), %rdi
callq 0x2360
leaq 0x1879(%rip), %rsi      # 0x7035
leaq 0x30(%rsp), %rdi
callq 0x2360
leaq 0x368(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x348(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x368(%rsp), %rsi
leaq 0x348(%rsp), %rdx
callq 0x2cee
movl %eax, %ebx
leaq 0x328(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x308(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x328(%rsp), %rsi
leaq 0x308(%rsp), %rdx
callq 0x2dba
leaq 0xf(%rsp), %rdi
movl %ebx, %esi
movq %rax, %rdx
callq 0x2f64
leaq 0x388(%rsp), %rdi
leaq 0xf(%rsp), %rsi
callq 0x2f82
leaq 0x2e8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x2c8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x10(%rsp), %rdi
leaq 0x388(%rsp), %rsi
leaq 0x2e8(%rsp), %rdx
leaq 0x2c8(%rsp), %rcx
leaq 0xb58(%rsp), %r8
callq 0x32f0
leaq 0x2c8(%rsp), %rdi
callq 0x20c0
leaq 0x2e8(%rsp), %rdi
callq 0x20c0
leaq 0x388(%rsp), %rdi
callq 0x20c0
leaq 0x308(%rsp), %rdi
callq 0x20c0
leaq 0x328(%rsp), %rdi
callq 0x20c0
leaq 0x348(%rsp), %rdi
callq 0x20c0
leaq 0x368(%rsp), %rdi
callq 0x20c0
leaq 0x16f8(%rip), %rsi      # 0x7013
leaq 0x50(%rsp), %rdi
callq 0x2360
leaq 0x1702(%rip), %rsi      # 0x702e
leaq 0x30(%rsp), %rdi
callq 0x2360
leaq 0x288(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x268(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x288(%rsp), %rsi
leaq 0x268(%rsp), %rdx
callq 0x2cee
movl %eax, %ebx
leaq 0x248(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x228(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x110(%rsp), %rdi
leaq 0x248(%rsp), %rsi
leaq 0x228(%rsp), %rdx
callq 0x2dba
leaq 0xf(%rsp), %rdi
movl %ebx, %esi
movq %rax, %rdx
callq 0x2f64
leaq 0x2a8(%rsp), %rdi
leaq 0xf(%rsp), %rsi
callq 0x2f82
leaq 0x208(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2280
leaq 0x1e8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2280
leaq 0x10(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
leaq 0x208(%rsp), %rdx
leaq 0x1e8(%rsp), %rcx
leaq 0xb58(%rsp), %r8
callq 0x32f0
leaq 0x1e8(%rsp), %rdi
callq 0x20c0
leaq 0x208(%rsp), %rdi
callq 0x20c0
leaq 0x2a8(%rsp), %rdi
callq 0x20c0
leaq 0x228(%rsp), %rdi
callq 0x20c0
leaq 0x248(%rsp), %rdi
callq 0x20c0
leaq 0x268(%rsp), %rdi
callq 0x20c0
leaq 0x288(%rsp), %rdi
callq 0x20c0
leaq 0xb58(%rsp), %rdi
callq 0x2030
leaq 0xb58(%rsp), %rdi
callq 0x2050
leaq 0x13(%rsp), %rdi
callq 0x34a6
leaq 0x10(%rsp), %rdi
callq 0x3112
leaq 0xf(%rsp), %rdi
callq 0x2f62
leaq 0x110(%rsp), %rdi
callq 0x2880
leaq 0x908(%rsp), %rdi
callq 0x2672
leaq 0x12(%rsp), %rdi
callq 0x254e
leaq 0x968(%rsp), %rdi
callq 0x20c0
leaq 0x988(%rsp), %rdi
callq 0x20c0
leaq 0x178(%rsp), %rdi
callq 0x20c0
leaq 0xf0(%rsp), %rdi
callq 0x64c4
leaq 0xb0(%rsp), %rdi
callq 0x6464
leaq 0x70(%rsp), %rdi
callq 0x64c4
leaq 0xd0(%rsp), %rdi
callq 0x6490
leaq 0x30(%rsp), %rdi
callq 0x20c0
leaq 0x50(%rsp), %rdi
callq 0x20c0
leaq 0x1c8(%rsp), %rdi
callq 0x20c0
leaq 0xee8(%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
leaq 0x151b(%rip), %rsi      # 0x709c
leaq 0x5c8(%rsp), %rdi
leaq 0xd68(%rsp), %rdx
callq 0x2e8e
leaq 0x10(%rsp), %rdi
leaq 0x5c8(%rsp), %rsi
callq 0x3114
leaq 0x5c8(%rsp), %rdi
jmp 0x4590
movq %rax, %rbx
leaq 0x5c8(%rsp), %rdi
jmp 0x5fc3
jmp 0x6162
movq %rax, %rbx
leaq 0x5a8(%rsp), %rdi
jmp 0x5fc3
jmp 0x6162
movq %rax, %rbx
leaq 0x588(%rsp), %rdi
jmp 0x5fc3
jmp 0x6162
movq %rax, %rbx
jmp 0x5c2a
jmp 0x5e28
jmp 0x61bd
movq %rax, %rbx
jmp 0x5c57
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
callq 0x20c0
jmp 0x5c67
movq %rax, %rbx
leaq 0x9d8(%rsp), %rdi
callq 0x20c0
leaq 0x5e8(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x668(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x9f8(%rsp), %rdi
callq 0x20c0
leaq 0x608(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x648(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x628(%rsp), %rdi
jmp 0x61cd
jmp 0x61bd
jmp 0x5e28
jmp 0x61bd
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x20c0
jmp 0x5ca8
movq %rax, %rbx
leaq 0x208(%rsp), %rdi
callq 0x20c0
jmp 0x5cba
movq %rax, %rbx
leaq 0x2a8(%rsp), %rdi
callq 0x20c0
jmp 0x5ef5
movq %rax, %rbx
jmp 0x5f02
movq %rax, %rbx
jmp 0x5f1c
movq %rax, %rbx
leaq 0x2c8(%rsp), %rdi
callq 0x20c0
jmp 0x5cf1
movq %rax, %rbx
leaq 0x2e8(%rsp), %rdi
callq 0x20c0
jmp 0x5d03
movq %rax, %rbx
leaq 0x388(%rsp), %rdi
callq 0x20c0
jmp 0x5f2c
movq %rax, %rbx
jmp 0x5f39
movq %rax, %rbx
jmp 0x5f53
movq %rax, %rbx
leaq 0x3a8(%rsp), %rdi
callq 0x20c0
jmp 0x5d3a
movq %rax, %rbx
leaq 0x3c8(%rsp), %rdi
callq 0x20c0
jmp 0x5d4c
movq %rax, %rbx
leaq 0x468(%rsp), %rdi
callq 0x20c0
jmp 0x5f60
movq %rax, %rbx
jmp 0x5f6d
movq %rax, %rbx
jmp 0x5f87
movq %rax, %rbx
leaq 0x488(%rsp), %rdi
callq 0x20c0
jmp 0x5d83
movq %rax, %rbx
leaq 0x4a8(%rsp), %rdi
callq 0x20c0
jmp 0x5d95
movq %rax, %rbx
leaq 0x548(%rsp), %rdi
callq 0x20c0
jmp 0x5f94
movq %rax, %rbx
jmp 0x5fa1
movq %rax, %rbx
jmp 0x5fbb
movq %rax, %rbx
jmp 0x61f9
movq %rax, %rbx
jmp 0x6203
movq %rax, %rbx
jmp 0x620d
movq %rax, %rbx
jmp 0x6217
movq %rax, %rbx
jmp 0x6224
movq %rax, %rbx
jmp 0x6231
movq %rax, %rbx
jmp 0x623b
movq %rax, %rbx
jmp 0x6248
movq %rax, %rbx
jmp 0x6255
movq %rax, %rbx
jmp 0x6262
movq %rax, %rbx
jmp 0x629d
movq %rax, %rbx
jmp 0x62a7
jmp 0x5e19
movq %rax, %rbx
jmp 0x62b4
movq %rax, %rbx
jmp 0x5e64
jmp 0x5e28
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0xa38(%rsp), %rdi
callq 0x20c0
jmp 0x5e84
jmp 0x61bd
jmp 0x61bd
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
callq 0x20c0
leaq 0x708(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x728(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x6c8(%rsp), %rdi
jmp 0x61cd
jmp 0x61bd
movq %rax, %rbx
leaq 0x6e8(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x688(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
jmp 0x5ecb
movq %rax, %rbx
leaq 0xa18(%rsp), %rdi
callq 0x20c0
leaq 0x6a8(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
jmp 0x5f0f
movq %rax, %rbx
jmp 0x5f46
movq %rax, %rbx
jmp 0x5f7a
movq %rax, %rbx
jmp 0x5fae
movq %rax, %rbx
leaq 0x228(%rsp), %rdi
callq 0x20c0
leaq 0x248(%rsp), %rdi
callq 0x20c0
leaq 0x268(%rsp), %rdi
callq 0x20c0
leaq 0x288(%rsp), %rdi
jmp 0x5fc3
movq %rax, %rbx
leaq 0x308(%rsp), %rdi
callq 0x20c0
leaq 0x328(%rsp), %rdi
callq 0x20c0
leaq 0x348(%rsp), %rdi
callq 0x20c0
leaq 0x368(%rsp), %rdi
jmp 0x5fc3
movq %rax, %rbx
leaq 0x3e8(%rsp), %rdi
callq 0x20c0
leaq 0x408(%rsp), %rdi
callq 0x20c0
leaq 0x428(%rsp), %rdi
callq 0x20c0
leaq 0x448(%rsp), %rdi
jmp 0x5fc3
movq %rax, %rbx
leaq 0x4c8(%rsp), %rdi
callq 0x20c0
leaq 0x4e8(%rsp), %rdi
callq 0x20c0
leaq 0x508(%rsp), %rdi
callq 0x20c0
leaq 0x528(%rsp), %rdi
callq 0x20c0
jmp 0x61ec
jmp 0x61bd
movq %rax, %rbx
leaq 0x748(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0xa58(%rsp), %rdi
callq 0x20c0
jmp 0x6067
movq %rax, %rbx
leaq 0xa98(%rsp), %rdi
callq 0x20c0
jmp 0x6052
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
callq 0x20c0
jmp 0x6087
movq %rax, %rbx
jmp 0x6042
jmp 0x61bd
movq %rax, %rbx
leaq 0x7c8(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0xa78(%rsp), %rdi
callq 0x20c0
leaq 0x788(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x7a8(%rsp), %rdi
jmp 0x61cd
jmp 0x61bd
movq %rax, %rbx
leaq 0x768(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x808(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x7e8(%rsp), %rdi
jmp 0x61cd
jmp 0x6162
movq %rax, %rbx
leaq 0xaf8(%rsp), %rdi
callq 0x20c0
jmp 0x60c3
movq %rax, %rbx
jmp 0x60f2
movq %rax, %rbx
leaq 0x8c8(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x848(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
callq 0x20c0
jmp 0x610c
movq %rax, %rbx
leaq 0xad8(%rsp), %rdi
callq 0x20c0
leaq 0x828(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
jmp 0x6129
jmp 0x61bd
movq %rax, %rbx
leaq 0x8a8(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0xb18(%rsp), %rdi
callq 0x20c0
leaq 0x868(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0x888(%rsp), %rdi
jmp 0x61cd
jmp 0x6162
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
callq 0x20c0
leaq 0x9b0(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
jmp 0x61ec
jmp 0x61bd
movq %rax, %rbx
leaq 0xab8(%rsp), %rdi
jmp 0x61cd
jmp 0x61bd
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
callq 0x20c0
jmp 0x6190
movq %rax, %rbx
leaq 0x568(%rsp), %rdi
jmp 0x61cd
movq %rax, %rbx
leaq 0xb38(%rsp), %rdi
jmp 0x61cd
jmp 0x61bd
jmp 0x61bd
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
callq 0x20c0
jmp 0x61c5
movq %rax, %rbx
jmp 0x61d2
movq %rax, %rbx
leaq 0x8e8(%rsp), %rdi
callq 0x20c0
leaq 0x90(%rsp), %rdi
callq 0x6464
leaq 0xd68(%rsp), %rdi
callq 0x20d0
leaq 0xb58(%rsp), %rdi
callq 0x2050
leaq 0x13(%rsp), %rdi
callq 0x34a6
leaq 0x10(%rsp), %rdi
callq 0x3112
leaq 0xf(%rsp), %rdi
callq 0x2f62
leaq 0x110(%rsp), %rdi
callq 0x2880
leaq 0x908(%rsp), %rdi
callq 0x2672
leaq 0x12(%rsp), %rdi
callq 0x254e
leaq 0x968(%rsp), %rdi
callq 0x20c0
leaq 0x988(%rsp), %rdi
callq 0x20c0
leaq 0x178(%rsp), %rdi
callq 0x20c0
leaq 0xf0(%rsp), %rdi
callq 0x64c4
leaq 0xb0(%rsp), %rdi
callq 0x6464
leaq 0x70(%rsp), %rdi
callq 0x64c4
leaq 0xd0(%rsp), %rdi
callq 0x6490
leaq 0x30(%rsp), %rdi
callq 0x20c0
leaq 0x50(%rsp), %rdi
callq 0x20c0
leaq 0x1c8(%rsp), %rdi
callq 0x20c0
leaq 0xee8(%rsp), %rdi
callq 0x2050
movq %rbx, %rdi
callq 0x2340