// File: 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
movq %rsp, %rbp
subq $0x1480, %rsp           # imm = 0x1480
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x2, -0x8(%rbp)
je 0x7060
cmpl $0x3, -0x8(%rbp)
je 0x7060
movq 0xaff4(%rip), %rdi      # 0x11ff0
leaq 0x61fc(%rip), %rsi      # 0xd1ff
callq 0x3260
movq %rax, %rdi
movq 0xafae(%rip), %rsi      # 0x11fc0
callq 0x32b0
movq 0xafd2(%rip), %rdi      # 0x11ff0
leaq 0x61f5(%rip), %rsi      # 0xd21a
callq 0x3260
movq %rax, %rdi
movq 0xaf8c(%rip), %rsi      # 0x11fc0
callq 0x32b0
movq 0xafb0(%rip), %rdi      # 0x11ff0
leaq 0x61f7(%rip), %rsi      # 0xd23e
callq 0x3260
movq %rax, %rdi
movq 0xaf6a(%rip), %rsi      # 0x11fc0
callq 0x32b0
jmp 0x9f02
leaq -0x220(%rbp), %rdi
movq %rdi, -0x1308(%rbp)
callq 0x3300
movq -0x1308(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
movl $0x8, %edx
callq 0x3250
jmp 0x708e
movl $0x1, -0x230(%rbp)
leaq -0x251(%rbp), %rdi
movq %rdi, -0x1310(%rbp)
callq 0x3450
movq -0x1310(%rbp), %rdx
leaq 0x5ffe(%rip), %rsi      # 0xd0b7
leaq -0x250(%rbp), %rdi
callq 0x4ab0
jmp 0x70c7
leaq -0x251(%rbp), %rdi
callq 0x32d0
leaq -0x279(%rbp), %rdi
movq %rdi, -0x1318(%rbp)
callq 0x3450
movq -0x1318(%rbp), %rdx
leaq 0x5fc3(%rip), %rsi      # 0xd0b7
leaq -0x278(%rbp), %rdi
callq 0x4ab0
jmp 0x7102
leaq -0x279(%rbp), %rdi
callq 0x32d0
leaq -0x2a1(%rbp), %rdi
movq %rdi, -0x1320(%rbp)
callq 0x3450
movq -0x1320(%rbp), %rdx
leaq 0x5f88(%rip), %rsi      # 0xd0b7
leaq -0x2a0(%rbp), %rdi
callq 0x4ab0
jmp 0x713d
leaq -0x2a1(%rbp), %rdi
callq 0x32d0
movq $0x0, -0x2b0(%rbp)
movl $0x0, -0x2b4(%rbp)
movl $0x0, -0x2b8(%rbp)
movl $0x0, -0x2bc(%rbp)
movb $0x0, -0x2bd(%rbp)
movb $0x0, -0x2be(%rbp)
movb $0x0, -0x2bf(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x9f20
leaq -0x2f8(%rbp), %rdi
callq 0x9f40
leaq -0x310(%rbp), %rdi
callq 0x9f60
leaq -0x328(%rbp), %rdi
callq 0x9f40
leaq -0x349(%rbp), %rdi
movq %rdi, -0x1328(%rbp)
callq 0x3450
movq -0x1328(%rbp), %rdx
leaq 0x5edf(%rip), %rsi      # 0xd0b7
leaq -0x348(%rbp), %rdi
callq 0x4ab0
jmp 0x71e6
leaq -0x349(%rbp), %rdi
callq 0x32d0
leaq -0x371(%rbp), %rdi
movq %rdi, -0x1330(%rbp)
callq 0x3450
movq -0x1330(%rbp), %rdx
leaq 0x5ea4(%rip), %rsi      # 0xd0b7
leaq -0x370(%rbp), %rdi
callq 0x4ab0
jmp 0x7221
leaq -0x371(%rbp), %rdi
callq 0x32d0
leaq -0x399(%rbp), %rdi
movq %rdi, -0x1338(%rbp)
callq 0x3450
movq -0x1338(%rbp), %rdx
leaq 0x5e69(%rip), %rsi      # 0xd0b7
leaq -0x398(%rbp), %rdi
callq 0x4ab0
jmp 0x725c
leaq -0x399(%rbp), %rdi
callq 0x32d0
leaq -0x39a(%rbp), %rdi
callq 0x36f0
jmp 0x7276
leaq -0x400(%rbp), %rdi
callq 0x39d0
jmp 0x7284
leaq -0x440(%rbp), %rdi
callq 0x3f50
jmp 0x7292
leaq -0x441(%rbp), %rdi
callq 0x4df0
jmp 0x72a0
leaq -0x443(%rbp), %rdi
callq 0x5150
jmp 0x72ae
leaq -0x444(%rbp), %rdi
callq 0x55b0
jmp 0x72bc
leaq -0x658(%rbp), %rdi
callq 0x3300
jmp 0x72ca
cmpl $0x3, -0x8(%rbp)
jne 0x751f
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
leaq 0x5f76(%rip), %rsi      # 0xd259
callq 0x3380
cmpl $0x0, %eax
jne 0x751f
leaq -0x679(%rbp), %rdi
movq %rdi, -0x1340(%rbp)
callq 0x3450
movq -0x1340(%rbp), %rdx
leaq 0x5d8a(%rip), %rsi      # 0xd09c
leaq -0x678(%rbp), %rdi
callq 0x4ab0
jmp 0x7320
leaq -0x443(%rbp), %rdi
leaq -0x678(%rbp), %rsi
callq 0x5170
jmp 0x7335
leaq -0x678(%rbp), %rdi
callq 0x3170
leaq -0x679(%rbp), %rdi
callq 0x32d0
jmp 0x76bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9ef4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x251(%rbp), %rdi
callq 0x32d0
jmp 0x9ef4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x279(%rbp), %rdi
callq 0x32d0
jmp 0x9ee8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x2a1(%rbp), %rdi
callq 0x32d0
jmp 0x9edc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x349(%rbp), %rdi
callq 0x32d0
jmp 0x9ea0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x371(%rbp), %rdi
callq 0x32d0
jmp 0x9e94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x399(%rbp), %rdi
callq 0x32d0
jmp 0x9e88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x750e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x678(%rbp), %rdi
callq 0x3170
leaq -0x679(%rbp), %rdi
callq 0x32d0
jmp 0x9e28
cmpl $0x3, -0x8(%rbp)
jne 0x75ff
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
leaq -0x658(%rbp), %rdi
movl $0x10, %edx
callq 0x3250
jmp 0x7544
leaq -0x6a1(%rbp), %rdi
movq %rdi, -0x1348(%rbp)
callq 0x3450
movq -0x1348(%rbp), %rdx
leaq 0x5b3d(%rip), %rsi      # 0xd0a2
leaq -0x6a0(%rbp), %rdi
callq 0x4ab0
jmp 0x7573
leaq -0x443(%rbp), %rdi
leaq -0x6a0(%rbp), %rsi
callq 0x5170
jmp 0x7588
leaq -0x6a0(%rbp), %rdi
callq 0x3170
leaq -0x6a1(%rbp), %rdi
callq 0x32d0
jmp 0x76ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x75ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x6a0(%rbp), %rdi
callq 0x3170
leaq -0x6a1(%rbp), %rdi
callq 0x32d0
jmp 0x9e28
leaq 0x5c55(%rip), %rsi      # 0xd25b
leaq -0x658(%rbp), %rdi
movl $0x10, %edx
callq 0x3250
jmp 0x7619
leaq -0x6c9(%rbp), %rdi
movq %rdi, -0x1350(%rbp)
callq 0x3450
movq -0x1350(%rbp), %rdx
leaq 0x5a68(%rip), %rsi      # 0xd0a2
leaq -0x6c8(%rbp), %rdi
callq 0x4ab0
jmp 0x7648
leaq -0x443(%rbp), %rdi
leaq -0x6c8(%rbp), %rsi
callq 0x5170
jmp 0x765d
leaq -0x6c8(%rbp), %rdi
callq 0x3170
leaq -0x6c9(%rbp), %rdi
callq 0x32d0
jmp 0x76ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x76a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x6c8(%rbp), %rdi
callq 0x3170
leaq -0x6c9(%rbp), %rdi
callq 0x32d0
jmp 0x9e28
jmp 0x76bc
jmp 0x76be
leaq -0x220(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x3070
movq %rax, -0x1358(%rbp)
jmp 0x76da
movq -0x1358(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3330
movb %al, -0x1359(%rbp)
jmp 0x76f8
movb -0x1359(%rbp), %al
testb $0x1, %al
jne 0x7707
jmp 0x92e4
leaq -0x850(%rbp), %rdi
leaq -0x250(%rbp), %rsi
movl $0x8, %edx
callq 0x3400
jmp 0x7721
leaq -0x868(%rbp), %rdi
callq 0x9f60
leaq -0x898(%rbp), %rdi
leaq -0x850(%rbp), %rsi
callq 0xa0f0
jmp 0x7742
leaq -0x8c8(%rbp), %rdi
callq 0xa150
jmp 0x7750
leaq -0x868(%rbp), %rdi
callq 0xa190
movq %rax, -0x1368(%rbp)
jmp 0x7765
movq -0x1368(%rbp), %rax
movq %rax, -0x8d0(%rbp)
movq -0x8d0(%rbp), %rdx
leaq -0x898(%rbp), %rdi
leaq -0x8c8(%rbp), %rsi
callq 0x9f80
movq %rax, -0x1370(%rbp)
jmp 0x7796
movq -0x1370(%rbp), %rax
movq %rax, -0x8d8(%rbp)
leaq -0x8c8(%rbp), %rdi
callq 0xa1c0
leaq -0x898(%rbp), %rdi
callq 0xa1c0
leaq -0x868(%rbp), %rdi
movl $0x6, %esi
callq 0xa1e0
movq %rax, %rdi
leaq 0x5a93(%rip), %rsi      # 0xd26a
callq 0x4a80
movb %al, -0x1371(%rbp)
jmp 0x77e4
movb -0x1371(%rbp), %al
testb $0x1, %al
jne 0x77f3
jmp 0x8009
testb $0x1, -0x2bf(%rbp)
je 0x7be2
leaq -0x2e0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa200
movq (%rax), %rax
movq %rax, -0x1380(%rbp)
leaq -0x2e0(%rbp), %rdi
movl $0x1, %esi
callq 0xa200
movq %rax, %rcx
movq -0x1380(%rbp), %rax
cmpq (%rcx), %rax
jbe 0x79b9
leaq -0x2f8(%rbp), %rdi
movq %rdi, -0x1388(%rbp)
callq 0xa260
movq -0x1388(%rbp), %rdi
movq %rax, -0x8e0(%rbp)
callq 0xa290
movq %rax, -0x8e8(%rbp)
movq -0x8e0(%rbp), %rdi
movq -0x8e8(%rbp), %rsi
callq 0xa220
jmp 0x7880
leaq -0x310(%rbp), %rdi
callq 0xa2c0
movq %rax, -0x8f0(%rbp)
movl $0x0, -0x8f4(%rbp)
movl -0x8f4(%rbp), %eax
movq -0x8f0(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x79b7
leaq -0x310(%rbp), %rdi
movq %rdi, -0x1390(%rbp)
callq 0xa320
movq %rax, -0x908(%rbp)
movl -0x8f4(%rbp), %eax
movl %eax, %esi
leaq -0x908(%rbp), %rdi
callq 0xa350
movq -0x1390(%rbp), %rdi
movq %rax, -0x900(%rbp)
callq 0xa320
movq %rax, -0x920(%rbp)
movl -0x8f4(%rbp), %eax
movl %eax, %esi
leaq -0x920(%rbp), %rdi
callq 0xa350
movq %rax, -0x918(%rbp)
leaq -0x918(%rbp), %rdi
movl $0x1, %esi
callq 0xa350
movq %rax, -0x910(%rbp)
movq -0x900(%rbp), %rdi
movq -0x910(%rbp), %rsi
callq 0xa2e0
jmp 0x7947
jmp 0x7949
movl -0x8f4(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x8f4(%rbp)
jmp 0x789d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x79a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x8c8(%rbp), %rdi
callq 0xa1c0
leaq -0x898(%rbp), %rdi
callq 0xa1c0
jmp 0x92c7
jmp 0x79b9
leaq -0x310(%rbp), %rdi
callq 0xa2c0
movq %rax, -0x928(%rbp)
movl $0x0, -0x92c(%rbp)
movl -0x92c(%rbp), %eax
cmpq -0x928(%rbp), %rax
jae 0x7b96
movl -0x92c(%rbp), %eax
movl %eax, %esi
leaq -0x2f8(%rbp), %rdi
callq 0xa390
movl (%rax), %eax
movl %eax, -0x1394(%rbp)
movl -0x92c(%rbp), %eax
movl %eax, %esi
leaq -0x310(%rbp), %rdi
callq 0xa1e0
movq %rax, %rsi
leaq -0x970(%rbp), %rdi
callq 0x3100
jmp 0x7a2a
movl -0x1394(%rbp), %edx
leaq -0x950(%rbp), %rdi
leaq -0x444(%rbp), %rsi
leaq -0x970(%rbp), %rcx
callq 0x55d0
jmp 0x7a4c
leaq -0x348(%rbp), %rdi
leaq -0x950(%rbp), %rsi
callq 0x3030
jmp 0x7a61
leaq -0x950(%rbp), %rdi
callq 0x3170
leaq -0x970(%rbp), %rdi
callq 0x3170
leaq 0x5637(%rip), %rsi      # 0xd0b7
leaq -0x348(%rbp), %rdi
callq 0xa3b0
movb %al, -0x1395(%rbp)
jmp 0x7a94
movb -0x1395(%rbp), %al
testb $0x1, %al
jne 0x7aa3
jmp 0x7b80
leaq -0x990(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x3100
jmp 0x7ab8
movl -0x92c(%rbp), %eax
movl %eax, %esi
leaq -0x2f8(%rbp), %rdi
callq 0xa390
movl (%rax), %eax
movl %eax, -0x139c(%rbp)
movl -0x92c(%rbp), %eax
movl %eax, %esi
leaq -0x328(%rbp), %rdi
callq 0xa390
movl -0x139c(%rbp), %edx
movl (%rax), %ecx
leaq -0x443(%rbp), %rdi
leaq -0x990(%rbp), %rsi
leaq -0x658(%rbp), %r8
callq 0x54b0
jmp 0x7b0c
leaq -0x990(%rbp), %rdi
callq 0x3170
jmp 0x7b80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x7b4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x950(%rbp), %rdi
callq 0x3170
leaq -0x970(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x990(%rbp), %rdi
callq 0x3170
jmp 0x92c7
jmp 0x7b82
movl -0x92c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x92c(%rbp)
jmp 0x79d6
leaq -0x443(%rbp), %rdi
leaq -0x658(%rbp), %rsi
callq 0x51e0
jmp 0x7bab
movb $0x0, -0x2bf(%rbp)
leaq -0x310(%rbp), %rdi
callq 0xa3e0
leaq -0x328(%rbp), %rdi
callq 0xa400
leaq -0x2f8(%rbp), %rdi
callq 0xa400
leaq -0x2e0(%rbp), %rdi
callq 0xa420
leaq -0x868(%rbp), %rdi
movl $0x7, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0x9b0(%rbp), %rdi
callq 0x3100
jmp 0x7c04
leaq -0x39a(%rbp), %rdi
leaq -0x9b0(%rbp), %rsi
callq 0x3710
movl %eax, -0x13a0(%rbp)
jmp 0x7c1f
movl -0x13a0(%rbp), %eax
movl %eax, -0x2b4(%rbp)
leaq -0x9b0(%rbp), %rdi
callq 0x3170
movl -0x2b4(%rbp), %eax
movl %eax, -0x2b8(%rbp)
leaq -0x868(%rbp), %rdi
movl $0x9, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0x9f0(%rbp), %rdi
callq 0x3100
jmp 0x7c65
leaq -0x9d0(%rbp), %rdi
leaq -0x440(%rbp), %rsi
leaq -0x9f0(%rbp), %rdx
callq 0x3fc0
jmp 0x7c81
leaq -0x278(%rbp), %rdi
leaq -0x9d0(%rbp), %rsi
callq 0x3030
jmp 0x7c96
leaq -0x9d0(%rbp), %rdi
callq 0x3170
leaq -0x9f0(%rbp), %rdi
callq 0x3170
leaq 0x5380(%rip), %rsi      # 0xd035
leaq -0x2a0(%rbp), %rdi
callq 0x3360
jmp 0x7cc3
leaq -0x868(%rbp), %rdi
movl $0x2, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xa10(%rbp), %rdi
callq 0x3100
jmp 0x7ce5
leaq -0x440(%rbp), %rdi
leaq -0xa10(%rbp), %rsi
callq 0x4100
movsd %xmm0, -0x13a8(%rbp)
jmp 0x7d02
movsd -0x13a8(%rbp), %xmm0
movsd %xmm0, -0x2b0(%rbp)
leaq -0xa10(%rbp), %rdi
callq 0x3170
leaq -0xa30(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x7d33
movsd -0x2b0(%rbp), %xmm0
movsd %xmm0, -0x13b0(%rbp)
leaq -0xa50(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x7d58
movsd -0x13b0(%rbp), %xmm0
leaq -0x440(%rbp), %rdi
leaq -0xa30(%rbp), %rsi
leaq -0xa50(%rbp), %rdx
callq 0x4540
jmp 0x7d7c
leaq -0xa50(%rbp), %rdi
callq 0x3170
leaq -0xa30(%rbp), %rdi
callq 0x3170
leaq -0xa70(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x7da9
leaq -0xa90(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x7dbe
leaq -0x440(%rbp), %rdi
leaq -0xa70(%rbp), %rsi
leaq -0xa90(%rbp), %rdx
callq 0x46d0
jmp 0x7dda
leaq -0xa90(%rbp), %rdi
callq 0x3170
leaq -0xa70(%rbp), %rdi
callq 0x3170
leaq -0xab0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x7e07
movl -0x2b4(%rbp), %eax
movl %eax, -0x13b8(%rbp)
movl -0x230(%rbp), %eax
movl %eax, -0x13b4(%rbp)
leaq -0xad0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x7e34
movl -0x13b4(%rbp), %ecx
movl -0x13b8(%rbp), %edx
leaq -0x443(%rbp), %rdi
leaq -0xab0(%rbp), %rsi
leaq -0xad0(%rbp), %r8
leaq -0x658(%rbp), %r9
callq 0x5240
jmp 0x7e63
leaq -0xad0(%rbp), %rdi
callq 0x3170
leaq -0xab0(%rbp), %rdi
callq 0x3170
cmpl $0x0, -0x2b4(%rbp)
jle 0x7fe6
movb $0x1, -0x2bd(%rbp)
jmp 0x8004
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x9b0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x7ee9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x9d0(%rbp), %rdi
callq 0x3170
leaq -0x9f0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xa10(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x7f4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xa50(%rbp), %rdi
callq 0x3170
leaq -0xa30(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x7f92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xa90(%rbp), %rdi
callq 0x3170
leaq -0xa70(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x7fd5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xad0(%rbp), %rdi
callq 0x3170
leaq -0xab0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movb $0x0, -0x2bd(%rbp)
leaq -0x443(%rbp), %rdi
leaq -0x658(%rbp), %rsi
callq 0x51e0
jmp 0x8002
jmp 0x8004
jmp 0x929b
leaq -0x868(%rbp), %rdi
movl $0x6, %esi
callq 0xa1e0
movq %rax, %rdi
leaq 0x524f(%rip), %rsi      # 0xd273
callq 0x4a80
movb %al, -0x13b9(%rbp)
jmp 0x8031
movb -0x13b9(%rbp), %al
testb $0x1, %al
jne 0x8040
jmp 0x87ff
testb $0x1, -0x2bf(%rbp)
je 0x83d8
leaq -0x2e0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa200
movq (%rax), %rax
movq %rax, -0x13c8(%rbp)
leaq -0x2e0(%rbp), %rdi
movl $0x1, %esi
callq 0xa200
movq %rax, %rcx
movq -0x13c8(%rbp), %rax
cmpq (%rcx), %rax
jbe 0x81af
leaq -0x2f8(%rbp), %rdi
movq %rdi, -0x13d0(%rbp)
callq 0xa260
movq -0x13d0(%rbp), %rdi
movq %rax, -0xad8(%rbp)
callq 0xa290
movq %rax, -0xae0(%rbp)
movq -0xad8(%rbp), %rdi
movq -0xae0(%rbp), %rsi
callq 0xa220
jmp 0x80cd
movl $0x0, -0xae4(%rbp)
movl -0xae4(%rbp), %eax
movq %rax, -0x13d8(%rbp)
leaq -0x310(%rbp), %rdi
callq 0xa2c0
movq %rax, %rcx
movq -0x13d8(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x81ad
leaq -0x310(%rbp), %rdi
movq %rdi, -0x13e0(%rbp)
callq 0xa320
movq %rax, -0xaf8(%rbp)
movl -0xae4(%rbp), %eax
movl %eax, %esi
leaq -0xaf8(%rbp), %rdi
callq 0xa350
movq -0x13e0(%rbp), %rdi
movq %rax, -0xaf0(%rbp)
callq 0xa320
movq %rax, -0xb10(%rbp)
movl -0xae4(%rbp), %eax
movl %eax, %esi
leaq -0xb10(%rbp), %rdi
callq 0xa350
movq %rax, -0xb08(%rbp)
leaq -0xb08(%rbp), %rdi
movl $0x1, %esi
callq 0xa350
movq %rax, -0xb00(%rbp)
movq -0xaf0(%rbp), %rdi
movq -0xb00(%rbp), %rsi
callq 0xa2e0
jmp 0x8197
jmp 0x8199
movl -0xae4(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xae4(%rbp)
jmp 0x80d7
jmp 0x81af
leaq -0x310(%rbp), %rdi
callq 0xa2c0
movq %rax, -0xb18(%rbp)
movl $0x0, -0xb1c(%rbp)
movl -0xb1c(%rbp), %eax
cmpq -0xb18(%rbp), %rax
jae 0x838c
movl -0xb1c(%rbp), %eax
movl %eax, %esi
leaq -0x2f8(%rbp), %rdi
callq 0xa390
movl (%rax), %eax
movl %eax, -0x13e4(%rbp)
movl -0xb1c(%rbp), %eax
movl %eax, %esi
leaq -0x310(%rbp), %rdi
callq 0xa1e0
movq %rax, %rsi
leaq -0xb60(%rbp), %rdi
callq 0x3100
jmp 0x8220
movl -0x13e4(%rbp), %edx
leaq -0xb40(%rbp), %rdi
leaq -0x444(%rbp), %rsi
leaq -0xb60(%rbp), %rcx
callq 0x55d0
jmp 0x8242
leaq -0x348(%rbp), %rdi
leaq -0xb40(%rbp), %rsi
callq 0x3030
jmp 0x8257
leaq -0xb40(%rbp), %rdi
callq 0x3170
leaq -0xb60(%rbp), %rdi
callq 0x3170
leaq 0x4e41(%rip), %rsi      # 0xd0b7
leaq -0x348(%rbp), %rdi
callq 0xa3b0
movb %al, -0x13e5(%rbp)
jmp 0x828a
movb -0x13e5(%rbp), %al
testb $0x1, %al
jne 0x8299
jmp 0x8376
leaq -0xb80(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x3100
jmp 0x82ae
movl -0xb1c(%rbp), %eax
movl %eax, %esi
leaq -0x2f8(%rbp), %rdi
callq 0xa390
movl (%rax), %eax
movl %eax, -0x13ec(%rbp)
movl -0xb1c(%rbp), %eax
movl %eax, %esi
leaq -0x328(%rbp), %rdi
callq 0xa390
movl -0x13ec(%rbp), %edx
movl (%rax), %ecx
leaq -0x443(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
leaq -0x658(%rbp), %r8
callq 0x54b0
jmp 0x8302
leaq -0xb80(%rbp), %rdi
callq 0x3170
jmp 0x8376
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x8342
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xb40(%rbp), %rdi
callq 0x3170
leaq -0xb60(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xb80(%rbp), %rdi
callq 0x3170
jmp 0x92c7
jmp 0x8378
movl -0xb1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb1c(%rbp)
jmp 0x81cc
leaq -0x443(%rbp), %rdi
leaq -0x658(%rbp), %rsi
callq 0x51e0
jmp 0x83a1
movb $0x0, -0x2bf(%rbp)
leaq -0x310(%rbp), %rdi
callq 0xa3e0
leaq -0x328(%rbp), %rdi
callq 0xa400
leaq -0x2f8(%rbp), %rdi
callq 0xa400
leaq -0x2e0(%rbp), %rdi
callq 0xa420
leaq -0x868(%rbp), %rdi
movl $0x7, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xba0(%rbp), %rdi
callq 0x3100
jmp 0x83fa
leaq -0x39a(%rbp), %rdi
leaq -0xba0(%rbp), %rsi
callq 0x3710
movl %eax, -0x13f0(%rbp)
jmp 0x8415
movl -0x13f0(%rbp), %eax
movl %eax, -0x2b4(%rbp)
leaq -0xba0(%rbp), %rdi
callq 0x3170
movl -0x2b4(%rbp), %eax
movl %eax, -0x2b8(%rbp)
leaq -0x868(%rbp), %rdi
movl $0x9, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xbe0(%rbp), %rdi
callq 0x3100
jmp 0x845b
leaq -0xbc0(%rbp), %rdi
leaq -0x440(%rbp), %rsi
leaq -0xbe0(%rbp), %rdx
callq 0x3fc0
jmp 0x8477
leaq -0x278(%rbp), %rdi
leaq -0xbc0(%rbp), %rsi
callq 0x3030
jmp 0x848c
leaq -0xbc0(%rbp), %rdi
callq 0x3170
leaq -0xbe0(%rbp), %rdi
callq 0x3170
leaq 0x4b83(%rip), %rsi      # 0xd02e
leaq -0x2a0(%rbp), %rdi
callq 0x3360
jmp 0x84b9
leaq -0x868(%rbp), %rdi
movl $0x2, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xc00(%rbp), %rdi
callq 0x3100
jmp 0x84db
leaq -0x440(%rbp), %rdi
leaq -0xc00(%rbp), %rsi
callq 0x4100
movsd %xmm0, -0x13f8(%rbp)
jmp 0x84f8
movsd -0x13f8(%rbp), %xmm0
movsd %xmm0, -0x2b0(%rbp)
leaq -0xc00(%rbp), %rdi
callq 0x3170
leaq -0xc20(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x8529
movsd -0x2b0(%rbp), %xmm0
movsd %xmm0, -0x1400(%rbp)
leaq -0xc40(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x854e
movsd -0x1400(%rbp), %xmm0
leaq -0x440(%rbp), %rdi
leaq -0xc20(%rbp), %rsi
leaq -0xc40(%rbp), %rdx
callq 0x4540
jmp 0x8572
leaq -0xc40(%rbp), %rdi
callq 0x3170
leaq -0xc20(%rbp), %rdi
callq 0x3170
leaq -0xc60(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x859f
leaq -0xc80(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x85b4
leaq -0x440(%rbp), %rdi
leaq -0xc60(%rbp), %rsi
leaq -0xc80(%rbp), %rdx
callq 0x46d0
jmp 0x85d0
leaq -0xc80(%rbp), %rdi
callq 0x3170
leaq -0xc60(%rbp), %rdi
callq 0x3170
leaq -0xca0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x85fd
movl -0x2b4(%rbp), %eax
movl %eax, -0x1408(%rbp)
movl -0x230(%rbp), %eax
movl %eax, -0x1404(%rbp)
leaq -0xcc0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x862a
movl -0x1404(%rbp), %ecx
movl -0x1408(%rbp), %edx
leaq -0x443(%rbp), %rdi
leaq -0xca0(%rbp), %rsi
leaq -0xcc0(%rbp), %r8
leaq -0x658(%rbp), %r9
callq 0x5240
jmp 0x8659
leaq -0xcc0(%rbp), %rdi
callq 0x3170
leaq -0xca0(%rbp), %rdi
callq 0x3170
cmpl $0x0, -0x2b4(%rbp)
jle 0x87dc
movb $0x1, -0x2be(%rbp)
jmp 0x87fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xba0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x86df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xbc0(%rbp), %rdi
callq 0x3170
leaq -0xbe0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xc00(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x8745
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xc40(%rbp), %rdi
callq 0x3170
leaq -0xc20(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x8788
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xc80(%rbp), %rdi
callq 0x3170
leaq -0xc60(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x87cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xcc0(%rbp), %rdi
callq 0x3170
leaq -0xca0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movb $0x0, -0x2be(%rbp)
leaq -0x443(%rbp), %rdi
leaq -0x658(%rbp), %rsi
callq 0x51e0
jmp 0x87f8
jmp 0x87fa
jmp 0x9299
testb $0x1, -0x2bd(%rbp)
je 0x8d31
cmpl $0x0, -0x2b4(%rbp)
jle 0x8d31
leaq -0x868(%rbp), %rdi
movl $0x6, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xce0(%rbp), %rdi
callq 0x3100
jmp 0x883b
leaq -0x39a(%rbp), %rdi
leaq -0xce0(%rbp), %rsi
callq 0x37d0
movq %rax, -0x1410(%rbp)
jmp 0x8857
movq -0x1410(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq -0xce0(%rbp), %rdi
callq 0x3170
movl $0x40000818, %eax       # imm = 0x40000818
cmpq -0x2c8(%rbp), %rax
ja 0x8d2c
cmpq $0x40000c14, -0x2c8(%rbp) # imm = 0x40000C14
ja 0x8d2c
leaq -0x2e0(%rbp), %rdi
callq 0xa440
cmpq $0x2, %rax
jae 0x88e0
leaq -0x2e0(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0xa460
jmp 0x88bb
jmp 0x88e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xce0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
leaq -0x868(%rbp), %rdi
movl $0x7, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xd00(%rbp), %rdi
callq 0x3100
jmp 0x8902
leaq -0x400(%rbp), %rdi
leaq -0xd00(%rbp), %rsi
callq 0x3a50
jmp 0x8917
leaq -0xd00(%rbp), %rdi
callq 0x3170
leaq -0x868(%rbp), %rdi
movl $0x9, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xd40(%rbp), %rdi
callq 0x3100
jmp 0x8945
leaq -0xd20(%rbp), %rdi
leaq -0x440(%rbp), %rsi
leaq -0xd40(%rbp), %rdx
callq 0x3fc0
jmp 0x8961
leaq -0x278(%rbp), %rdi
leaq -0xd20(%rbp), %rsi
callq 0x3030
jmp 0x8976
leaq -0xd20(%rbp), %rdi
callq 0x3170
leaq -0xd40(%rbp), %rdi
callq 0x3170
leaq 0x46a0(%rip), %rsi      # 0xd035
leaq -0x2a0(%rbp), %rdi
callq 0x3360
jmp 0x89a3
leaq -0x868(%rbp), %rdi
movl $0x2, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xd60(%rbp), %rdi
callq 0x3100
jmp 0x89c5
leaq -0x440(%rbp), %rdi
leaq -0xd60(%rbp), %rsi
callq 0x4100
movsd %xmm0, -0x1418(%rbp)
jmp 0x89e2
movsd -0x1418(%rbp), %xmm0
movsd %xmm0, -0x2b0(%rbp)
leaq -0xd60(%rbp), %rdi
callq 0x3170
leaq -0xd80(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x8a13
movsd -0x2b0(%rbp), %xmm0
movsd %xmm0, -0x1420(%rbp)
leaq -0xda0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x8a38
movsd -0x1420(%rbp), %xmm0
leaq -0x440(%rbp), %rdi
leaq -0xd80(%rbp), %rsi
leaq -0xda0(%rbp), %rdx
callq 0x4540
jmp 0x8a5c
leaq -0xda0(%rbp), %rdi
callq 0x3170
leaq -0xd80(%rbp), %rdi
callq 0x3170
leaq -0xdc0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x8a89
leaq -0xde0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x8a9e
leaq -0x440(%rbp), %rdi
leaq -0xdc0(%rbp), %rsi
leaq -0xde0(%rbp), %rdx
callq 0x46d0
jmp 0x8aba
leaq -0xde0(%rbp), %rdi
callq 0x3170
leaq -0xdc0(%rbp), %rdi
callq 0x3170
movl -0x2b8(%rbp), %eax
movl -0x2b4(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0x2bc(%rbp)
leaq -0x2f8(%rbp), %rdi
leaq -0x2bc(%rbp), %rsi
callq 0xa4d0
jmp 0x8afb
leaq -0xe00(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x3c20
jmp 0x8b10
leaq -0x310(%rbp), %rdi
leaq -0xe00(%rbp), %rsi
callq 0xa540
jmp 0x8b25
leaq -0xe00(%rbp), %rdi
callq 0x3170
leaq -0x328(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0xa4d0
jmp 0x8b46
movl -0x2b8(%rbp), %eax
movl -0x2b4(%rbp), %ecx
subl %ecx, %eax
incl %eax
movl %eax, -0x2bc(%rbp)
leaq -0x2f8(%rbp), %rdi
leaq -0x2bc(%rbp), %rsi
callq 0xa4d0
jmp 0x8b71
leaq -0xe20(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x3c50
jmp 0x8b86
leaq -0x310(%rbp), %rdi
leaq -0xe20(%rbp), %rsi
callq 0xa540
jmp 0x8b9b
leaq -0xe20(%rbp), %rdi
callq 0x3170
leaq -0x328(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0xa4d0
jmp 0x8bbc
movl -0x2b4(%rbp), %eax
subl $0x2, %eax
movl %eax, -0x2b4(%rbp)
movb $0x1, -0x2bf(%rbp)
jmp 0x8d2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xd00(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x8c2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xd20(%rbp), %rdi
callq 0x3170
leaq -0xd40(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xd60(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x8c92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xda0(%rbp), %rdi
callq 0x3170
leaq -0xd80(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x8cd5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xde0(%rbp), %rdi
callq 0x3170
leaq -0xdc0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xe00(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xe20(%rbp), %rdi
callq 0x3170
jmp 0x92c7
jmp 0x9297
testb $0x1, -0x2be(%rbp)
je 0x925d
cmpl $0x0, -0x2b4(%rbp)
jle 0x925d
leaq -0x868(%rbp), %rdi
movl $0x6, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xe40(%rbp), %rdi
callq 0x3100
jmp 0x8d6d
leaq -0x39a(%rbp), %rdi
leaq -0xe40(%rbp), %rsi
callq 0x37d0
movq %rax, -0x1428(%rbp)
jmp 0x8d89
movq -0x1428(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq -0xe40(%rbp), %rdi
callq 0x3170
movl $0x40000c20, %eax       # imm = 0x40000C20
cmpq -0x2c8(%rbp), %rax
ja 0x925b
cmpq $0x4000101c, -0x2c8(%rbp) # imm = 0x4000101C
ja 0x925b
leaq -0x2e0(%rbp), %rdi
callq 0xa440
cmpq $0x2, %rax
jae 0x8e12
leaq -0x2e0(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0xa460
jmp 0x8ded
jmp 0x8e12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xe40(%rbp), %rdi
callq 0x3170
jmp 0x92c7
leaq -0x868(%rbp), %rdi
movl $0x7, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xe60(%rbp), %rdi
callq 0x3100
jmp 0x8e34
leaq -0x400(%rbp), %rdi
leaq -0xe60(%rbp), %rsi
callq 0x3a50
jmp 0x8e49
leaq -0xe60(%rbp), %rdi
callq 0x3170
leaq -0x868(%rbp), %rdi
movl $0x9, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xea0(%rbp), %rdi
callq 0x3100
jmp 0x8e77
leaq -0xe80(%rbp), %rdi
leaq -0x440(%rbp), %rsi
leaq -0xea0(%rbp), %rdx
callq 0x3fc0
jmp 0x8e93
leaq -0x278(%rbp), %rdi
leaq -0xe80(%rbp), %rsi
callq 0x3030
jmp 0x8ea8
leaq -0xe80(%rbp), %rdi
callq 0x3170
leaq -0xea0(%rbp), %rdi
callq 0x3170
leaq 0x4167(%rip), %rsi      # 0xd02e
leaq -0x2a0(%rbp), %rdi
callq 0x3360
jmp 0x8ed5
leaq -0x868(%rbp), %rdi
movl $0x2, %esi
callq 0xa1e0
movq %rax, %rsi
leaq -0xec0(%rbp), %rdi
callq 0x3100
jmp 0x8ef7
leaq -0x440(%rbp), %rdi
leaq -0xec0(%rbp), %rsi
callq 0x4100
movsd %xmm0, -0x1430(%rbp)
jmp 0x8f14
movsd -0x1430(%rbp), %xmm0
movsd %xmm0, -0x2b0(%rbp)
leaq -0xec0(%rbp), %rdi
callq 0x3170
leaq -0xee0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x8f45
movsd -0x2b0(%rbp), %xmm0
movsd %xmm0, -0x1438(%rbp)
leaq -0xf00(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x8f6a
movsd -0x1438(%rbp), %xmm0
leaq -0x440(%rbp), %rdi
leaq -0xee0(%rbp), %rsi
leaq -0xf00(%rbp), %rdx
callq 0x4540
jmp 0x8f8e
leaq -0xf00(%rbp), %rdi
callq 0x3170
leaq -0xee0(%rbp), %rdi
callq 0x3170
leaq -0xf20(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x8fbb
leaq -0xf40(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x8fd0
leaq -0x440(%rbp), %rdi
leaq -0xf20(%rbp), %rsi
leaq -0xf40(%rbp), %rdx
callq 0x46d0
jmp 0x8fec
leaq -0xf40(%rbp), %rdi
callq 0x3170
leaq -0xf20(%rbp), %rdi
callq 0x3170
movl -0x2b8(%rbp), %eax
movl -0x2b4(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0x2bc(%rbp)
leaq -0x2f8(%rbp), %rdi
leaq -0x2bc(%rbp), %rsi
callq 0xa4d0
jmp 0x902d
leaq -0xf60(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x3c20
jmp 0x9042
leaq -0x310(%rbp), %rdi
leaq -0xf60(%rbp), %rsi
callq 0xa540
jmp 0x9057
leaq -0xf60(%rbp), %rdi
callq 0x3170
leaq -0x328(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0xa4d0
jmp 0x9078
movl -0x2b8(%rbp), %eax
movl -0x2b4(%rbp), %ecx
subl %ecx, %eax
incl %eax
movl %eax, -0x2bc(%rbp)
leaq -0x2f8(%rbp), %rdi
leaq -0x2bc(%rbp), %rsi
callq 0xa4d0
jmp 0x90a3
leaq -0xf80(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x3c50
jmp 0x90b8
leaq -0x310(%rbp), %rdi
leaq -0xf80(%rbp), %rsi
callq 0xa540
jmp 0x90cd
leaq -0xf80(%rbp), %rdi
callq 0x3170
leaq -0x328(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0xa4d0
jmp 0x90ee
movl -0x2b4(%rbp), %eax
subl $0x2, %eax
movl %eax, -0x2b4(%rbp)
movb $0x1, -0x2bf(%rbp)
jmp 0x925b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xe60(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x915e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xe80(%rbp), %rdi
callq 0x3170
leaq -0xea0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xec0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x91c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xf00(%rbp), %rdi
callq 0x3170
leaq -0xee0(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9207
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xf40(%rbp), %rdi
callq 0x3170
leaq -0xf20(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xf60(%rbp), %rdi
callq 0x3170
jmp 0x92c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0xf80(%rbp), %rdi
callq 0x3170
jmp 0x92c7
jmp 0x9295
testb $0x1, -0x2bd(%rbp)
je 0x9278
cmpl $0x0, -0x2b4(%rbp)
jne 0x9278
movb $0x0, -0x2bd(%rbp)
jmp 0x9293
testb $0x1, -0x2be(%rbp)
je 0x9291
cmpl $0x0, -0x2b4(%rbp)
jne 0x9291
movb $0x0, -0x2be(%rbp)
jmp 0x9293
jmp 0x9295
jmp 0x9297
jmp 0x9299
jmp 0x929b
movl -0x230(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x230(%rbp)
leaq -0x868(%rbp), %rdi
callq 0xa5b0
leaq -0x850(%rbp), %rdi
callq 0x3130
jmp 0x76be
leaq -0x868(%rbp), %rdi
callq 0xa5b0
leaq -0x850(%rbp), %rdi
callq 0x3130
jmp 0x9e28
leaq -0x220(%rbp), %rdi
callq 0x3040
jmp 0x92f2
leaq 0x3d23(%rip), %rsi      # 0xd01c
leaq -0x278(%rbp), %rdi
callq 0x3360
jmp 0x9307
leaq 0x3d27(%rip), %rsi      # 0xd035
leaq -0x2a0(%rbp), %rdi
callq 0x3360
jmp 0x931c
leaq -0xfc0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x9331
leaq -0xfe0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x9346
leaq -0x440(%rbp), %rdi
leaq -0xfc0(%rbp), %rsi
leaq -0xfe0(%rbp), %rdx
callq 0x4810
movl %eax, -0x143c(%rbp)
jmp 0x9368
leaq -0x1000(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x937d
leaq -0x1020(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x9392
leaq -0x440(%rbp), %rdi
leaq -0x1000(%rbp), %rsi
leaq -0x1020(%rbp), %rdx
callq 0x4950
movq %rax, -0x1448(%rbp)
jmp 0x93b5
movq -0x1448(%rbp), %rdx
movl -0x143c(%rbp), %esi
leaq -0x441(%rbp), %rdi
callq 0x4e10
movss %xmm0, -0x144c(%rbp)
jmp 0x93d8
movss -0x144c(%rbp), %xmm0
leaq -0xfa0(%rbp), %rdi
leaq -0x441(%rbp), %rsi
callq 0x4e60
jmp 0x93f5
leaq -0x1040(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x940a
leaq -0x1060(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x941f
leaq -0x443(%rbp), %rdi
leaq -0xfa0(%rbp), %rsi
leaq -0x1040(%rbp), %rdx
leaq -0x1060(%rbp), %rcx
leaq -0x658(%rbp), %r8
callq 0x53c0
jmp 0x9449
leaq -0x1060(%rbp), %rdi
callq 0x3170
leaq -0x1040(%rbp), %rdi
callq 0x3170
leaq -0xfa0(%rbp), %rdi
callq 0x3170
leaq -0x1020(%rbp), %rdi
callq 0x3170
leaq -0x1000(%rbp), %rdi
callq 0x3170
leaq -0xfe0(%rbp), %rdi
callq 0x3170
leaq -0xfc0(%rbp), %rdi
callq 0x3170
leaq 0x3b78(%rip), %rsi      # 0xd01c
leaq -0x278(%rbp), %rdi
callq 0x3360
jmp 0x94b2
leaq 0x3b75(%rip), %rsi      # 0xd02e
leaq -0x2a0(%rbp), %rdi
callq 0x3360
jmp 0x94c7
leaq -0x10a0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x94dc
leaq -0x10c0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x94f1
leaq -0x440(%rbp), %rdi
leaq -0x10a0(%rbp), %rsi
leaq -0x10c0(%rbp), %rdx
callq 0x4810
movl %eax, -0x1450(%rbp)
jmp 0x9513
leaq -0x10e0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x9528
leaq -0x1100(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x953d
leaq -0x440(%rbp), %rdi
leaq -0x10e0(%rbp), %rsi
leaq -0x1100(%rbp), %rdx
callq 0x4950
movq %rax, -0x1458(%rbp)
jmp 0x9560
movq -0x1458(%rbp), %rdx
movl -0x1450(%rbp), %esi
leaq -0x441(%rbp), %rdi
callq 0x4e10
movss %xmm0, -0x145c(%rbp)
jmp 0x9583
movss -0x145c(%rbp), %xmm0
leaq -0x1080(%rbp), %rdi
leaq -0x441(%rbp), %rsi
callq 0x4e60
jmp 0x95a0
leaq -0x1120(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x95b5
leaq -0x1140(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x95ca
leaq -0x443(%rbp), %rdi
leaq -0x1080(%rbp), %rsi
leaq -0x1120(%rbp), %rdx
leaq -0x1140(%rbp), %rcx
leaq -0x658(%rbp), %r8
callq 0x53c0
jmp 0x95f4
leaq -0x1140(%rbp), %rdi
callq 0x3170
leaq -0x1120(%rbp), %rdi
callq 0x3170
leaq -0x1080(%rbp), %rdi
callq 0x3170
leaq -0x1100(%rbp), %rdi
callq 0x3170
leaq -0x10e0(%rbp), %rdi
callq 0x3170
leaq -0x10c0(%rbp), %rdi
callq 0x3170
leaq -0x10a0(%rbp), %rdi
callq 0x3170
leaq 0x39c4(%rip), %rsi      # 0xd013
leaq -0x278(%rbp), %rdi
callq 0x3360
jmp 0x965d
leaq 0x39d1(%rip), %rsi      # 0xd035
leaq -0x2a0(%rbp), %rdi
callq 0x3360
jmp 0x9672
leaq -0x1180(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x9687
leaq -0x11a0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x969c
leaq -0x440(%rbp), %rdi
leaq -0x1180(%rbp), %rsi
leaq -0x11a0(%rbp), %rdx
callq 0x4810
movl %eax, -0x1460(%rbp)
jmp 0x96be
leaq -0x11c0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x96d3
leaq -0x11e0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x96e8
leaq -0x440(%rbp), %rdi
leaq -0x11c0(%rbp), %rsi
leaq -0x11e0(%rbp), %rdx
callq 0x4950
movq %rax, -0x1468(%rbp)
jmp 0x970b
movq -0x1468(%rbp), %rdx
movl -0x1460(%rbp), %esi
leaq -0x441(%rbp), %rdi
callq 0x4e10
movss %xmm0, -0x146c(%rbp)
jmp 0x972e
movss -0x146c(%rbp), %xmm0
leaq -0x1160(%rbp), %rdi
leaq -0x441(%rbp), %rsi
callq 0x4e60
jmp 0x974b
leaq -0x1200(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x9760
leaq -0x1220(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x9775
leaq -0x443(%rbp), %rdi
leaq -0x1160(%rbp), %rsi
leaq -0x1200(%rbp), %rdx
leaq -0x1220(%rbp), %rcx
leaq -0x658(%rbp), %r8
callq 0x53c0
jmp 0x979f
leaq -0x1220(%rbp), %rdi
callq 0x3170
leaq -0x1200(%rbp), %rdi
callq 0x3170
leaq -0x1160(%rbp), %rdi
callq 0x3170
leaq -0x11e0(%rbp), %rdi
callq 0x3170
leaq -0x11c0(%rbp), %rdi
callq 0x3170
leaq -0x11a0(%rbp), %rdi
callq 0x3170
leaq -0x1180(%rbp), %rdi
callq 0x3170
leaq 0x3819(%rip), %rsi      # 0xd013
leaq -0x278(%rbp), %rdi
callq 0x3360
jmp 0x9808
leaq 0x381f(%rip), %rsi      # 0xd02e
leaq -0x2a0(%rbp), %rdi
callq 0x3360
jmp 0x981d
leaq -0x1260(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x9832
leaq -0x1280(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x9847
leaq -0x440(%rbp), %rdi
leaq -0x1260(%rbp), %rsi
leaq -0x1280(%rbp), %rdx
callq 0x4810
movl %eax, -0x1470(%rbp)
jmp 0x9869
leaq -0x12a0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x987e
leaq -0x12c0(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x9893
leaq -0x440(%rbp), %rdi
leaq -0x12a0(%rbp), %rsi
leaq -0x12c0(%rbp), %rdx
callq 0x4950
movq %rax, -0x1478(%rbp)
jmp 0x98b6
movq -0x1478(%rbp), %rdx
movl -0x1470(%rbp), %esi
leaq -0x441(%rbp), %rdi
callq 0x4e10
movss %xmm0, -0x147c(%rbp)
jmp 0x98d9
movss -0x147c(%rbp), %xmm0
leaq -0x1240(%rbp), %rdi
leaq -0x441(%rbp), %rsi
callq 0x4e60
jmp 0x98f6
leaq -0x12e0(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x3100
jmp 0x990b
leaq -0x1300(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3100
jmp 0x9920
leaq -0x443(%rbp), %rdi
leaq -0x1240(%rbp), %rsi
leaq -0x12e0(%rbp), %rdx
leaq -0x1300(%rbp), %rcx
leaq -0x658(%rbp), %r8
callq 0x53c0
jmp 0x994a
leaq -0x1300(%rbp), %rdi
callq 0x3170
leaq -0x12e0(%rbp), %rdi
callq 0x3170
leaq -0x1240(%rbp), %rdi
callq 0x3170
leaq -0x12c0(%rbp), %rdi
callq 0x3170
leaq -0x12a0(%rbp), %rdi
callq 0x3170
leaq -0x1280(%rbp), %rdi
callq 0x3170
leaq -0x1260(%rbp), %rdi
callq 0x3170
leaq -0x658(%rbp), %rdi
callq 0x3040
jmp 0x99ac
leaq -0x658(%rbp), %rdi
callq 0x3080
leaq -0x444(%rbp), %rdi
callq 0x55c0
leaq -0x443(%rbp), %rdi
callq 0x5160
leaq -0x441(%rbp), %rdi
callq 0x4e00
leaq -0x440(%rbp), %rdi
callq 0x3fb0
leaq -0x400(%rbp), %rdi
callq 0x3a10
leaq -0x39a(%rbp), %rdi
callq 0x3700
leaq -0x398(%rbp), %rdi
callq 0x3170
leaq -0x370(%rbp), %rdi
callq 0x3170
leaq -0x348(%rbp), %rdi
callq 0x3170
leaq -0x328(%rbp), %rdi
callq 0xa610
leaq -0x310(%rbp), %rdi
callq 0xa5b0
leaq -0x2f8(%rbp), %rdi
callq 0xa610
leaq -0x2e0(%rbp), %rdi
callq 0xa670
leaq -0x2a0(%rbp), %rdi
callq 0x3170
leaq -0x278(%rbp), %rdi
callq 0x3170
leaq -0x250(%rbp), %rdi
callq 0x3170
leaq -0x220(%rbp), %rdi
callq 0x3080
jmp 0x9f02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9b61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9b55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9b49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9b3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9b31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9b25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x1060(%rbp), %rdi
callq 0x3170
leaq -0x1040(%rbp), %rdi
callq 0x3170
leaq -0xfa0(%rbp), %rdi
callq 0x3170
leaq -0x1020(%rbp), %rdi
callq 0x3170
leaq -0x1000(%rbp), %rdi
callq 0x3170
leaq -0xfe0(%rbp), %rdi
callq 0x3170
leaq -0xfc0(%rbp), %rdi
callq 0x3170
jmp 0x9e28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9c4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9c3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9c32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9c26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9c1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9c0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x1140(%rbp), %rdi
callq 0x3170
leaq -0x1120(%rbp), %rdi
callq 0x3170
leaq -0x1080(%rbp), %rdi
callq 0x3170
leaq -0x1100(%rbp), %rdi
callq 0x3170
leaq -0x10e0(%rbp), %rdi
callq 0x3170
leaq -0x10c0(%rbp), %rdi
callq 0x3170
leaq -0x10a0(%rbp), %rdi
callq 0x3170
jmp 0x9e28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9d03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9cf7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x1220(%rbp), %rdi
callq 0x3170
leaq -0x1200(%rbp), %rdi
callq 0x3170
leaq -0x1160(%rbp), %rdi
callq 0x3170
leaq -0x11e0(%rbp), %rdi
callq 0x3170
leaq -0x11c0(%rbp), %rdi
callq 0x3170
leaq -0x11a0(%rbp), %rdi
callq 0x3170
leaq -0x1180(%rbp), %rdi
callq 0x3170
jmp 0x9e28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9e04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9df8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9dec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
jmp 0x9de0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x228(%rbp)
movl %eax, -0x22c(%rbp)
leaq -0x1300(%rbp), %rdi
callq 0x3170
leaq -0x12e0(%rbp), %rdi
callq 0x3170
leaq -0x1240(%rbp), %rdi
callq 0x3170
leaq -0x12c0(%rbp), %rdi
callq 0x3170
leaq -0x12a0(%rbp), %rdi
callq 0x3170
leaq -0x1280(%rbp), %rdi
callq 0x3170
leaq -0x1260(%rbp), %rdi
callq 0x3170
leaq -0x658(%rbp), %rdi
callq 0x3080
leaq -0x444(%rbp), %rdi
callq 0x55c0
leaq -0x443(%rbp), %rdi
callq 0x5160
leaq -0x441(%rbp), %rdi
callq 0x4e00
leaq -0x440(%rbp), %rdi
callq 0x3fb0
leaq -0x400(%rbp), %rdi
callq 0x3a10
leaq -0x39a(%rbp), %rdi
callq 0x3700
leaq -0x398(%rbp), %rdi
callq 0x3170
leaq -0x370(%rbp), %rdi
callq 0x3170
leaq -0x348(%rbp), %rdi
callq 0x3170
leaq -0x328(%rbp), %rdi
callq 0xa610
leaq -0x310(%rbp), %rdi
callq 0xa5b0
leaq -0x2f8(%rbp), %rdi
callq 0xa610
leaq -0x2e0(%rbp), %rdi
callq 0xa670
leaq -0x2a0(%rbp), %rdi
callq 0x3170
leaq -0x278(%rbp), %rdi
callq 0x3170
leaq -0x250(%rbp), %rdi
callq 0x3170
leaq -0x220(%rbp), %rdi
callq 0x3080
jmp 0x9f0d
xorl %eax, %eax
addq $0x1480, %rsp           # imm = 0x1480
popq %rbp
retq
movq -0x228(%rbp), %rdi
callq 0x3440
nopl (%rax)