// File: CMU-SAFARI[P]optimal-seed-solver/testAnalyzeBasic.cc
// Function: main
int main(int argc, const char* argv[]) {
	int frequency;
	map <int, unsigned long long> frequencyCounter;

	AnalyzeBasic solver;

	if (argc != 3 && argc != 4) {
		cerr << "USAGE: ./testOptimalSolver <Ref File> <TableFile> length" << endl;
		cerr << "USAGE: ./testOptimalSolver <TableFile> <Read File>" << endl;
		exit(1);
	}

	if (argc == 4) {
		solver.generateHash(argv[1], atoi(argv[3]) );
		solver.storeHash(argv[2]);
			
		return 0;
	}

	cout << "Loading tree " << argv[1] << " into memory.\n";
	solver.loadHash(argv[1]);
	cout << "Finished loading. \n";

	int seedNum;
	//cout << "Please input number of seeds: ";
	cin >> seedNum;

	//int seedLength;

	ifstream readFile;
	readFile.open(argv[2]);
	string read;
	
	char benchFileName[80];
	strcpy(benchFileName, argv[2]);
	char* benchName = strtok(benchFileName, ".");
	
	ofstream output;
	output.open( (string(benchName) + string(".space") ).c_str() );

	while (seedNum > 0) {	
		//cout << "Please input seed length: ";
		//cin >> seedLength;
		
		frequencyCounter.clear();

		//Start reading the file
		readFile.clear();
		readFile.seekg(0, ios::beg);

		//Name
		getline(readFile, read);
		//Read
		getline(readFile, read);
		//cout << "DNA: " << read << endl;

		//Solve
		for (int i = 0; i < seedNum; i++) {
			int interval = read.length() / seedNum;
			string seed = read.substr(i * interval, solver.getLength() );
			frequency = solver.checkFreq(seed);
			if (frequencyCounter.find(frequency) == frequencyCounter.end() )
				frequencyCounter[frequency] = 1;
			else
				frequencyCounter[frequency]++;
		}

		//Trash
		getline(readFile, read);
		getline(readFile, read);
			
		//Name
		getline(readFile, read);

		while (!readFile.eof()) {
			//Read
			getline(readFile, read);
			//cout << "DNA: " << read << endl;

			//Solve
			for (int i = 0; i < seedNum; i++) {
				if (read.find('N') == string::npos) {
					int interval = read.length() / seedNum;
					string seed = read.substr(i * interval, solver.getLength() );
					frequency = solver.checkFreq(seed);
					if (frequencyCounter.find(frequency) == frequencyCounter.end() )
						frequencyCounter[frequency] = 1;
					else
						frequencyCounter[frequency]++;
				}
			}

			//Trash
			getline(readFile, read);
			getline(readFile, read);
			
			//Name
			getline(readFile, read);
		}

		cout << "seedNum: " << seedNum << endl;
		output << "seedNum: " << seedNum << endl;
		for (map<int, unsigned long long>::iterator iter = frequencyCounter.begin(); iter != frequencyCounter.end(); iter++)
			output << iter->first << ": " << iter->second << endl;

		cin >> seedNum;
	}
	
	return 0;
}

// Assembly:
subq $0xa28, %rsp            # imm = 0xA28
movl $0x0, 0xa24(%rsp)
movl %edi, 0xa20(%rsp)
movq %rsi, 0xa18(%rsp)
leaq 0x9e0(%rsp), %rdi
callq 0x4600
leaq 0x750(%rsp), %rdi
callq 0x6100
jmp 0x381d
cmpl $0x3, 0xa20(%rsp)
je 0x38db
cmpl $0x4, 0xa20(%rsp)
je 0x38db
movq 0xb7b0(%rip), %rdi      # 0xeff0
leaq 0x77bd(%rip), %rsi      # 0xb004
callq 0x3290
movq %rax, 0x108(%rsp)
jmp 0x3856
movq 0x108(%rsp), %rdi
movq 0xb753(%rip), %rsi      # 0xefb8
callq 0x32e0
jmp 0x386c
movq 0xb77d(%rip), %rdi      # 0xeff0
leaq 0x77c3(%rip), %rsi      # 0xb03d
callq 0x3290
movq %rax, 0x100(%rsp)
jmp 0x3889
movq 0x100(%rsp), %rdi
movq 0xb720(%rip), %rsi      # 0xefb8
callq 0x32e0
jmp 0x389f
movl $0x1, %edi
callq 0x3370
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x45dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x45d0
cmpl $0x4, 0xa20(%rsp)
jne 0x3a9b
movq 0xa18(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0xf0(%rsp)
leaq 0x71f(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x3570
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rdx
leaq 0x720(%rsp), %rdi
callq 0x4610
jmp 0x3931
movq 0xa18(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x3480
movl %eax, %edx
leaq 0x750(%rsp), %rdi
leaq 0x720(%rsp), %rsi
callq 0x61b0
jmp 0x395b
leaq 0x720(%rsp), %rdi
callq 0x31b0
leaq 0x71f(%rsp), %rdi
callq 0x3300
movq 0xa18(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0xe0(%rsp)
leaq 0x6f7(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x3570
movq 0xe0(%rsp), %rsi
movq 0xe8(%rsp), %rdx
leaq 0x6f8(%rsp), %rdi
callq 0x4610
jmp 0x39bd
leaq 0x750(%rsp), %rdi
leaq 0x6f8(%rsp), %rsi
callq 0x64b0
jmp 0x39d4
leaq 0x6f8(%rsp), %rdi
callq 0x31b0
leaq 0x6f7(%rsp), %rdi
callq 0x3300
movl $0x0, 0xa24(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0x45a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x3a40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
leaq 0x720(%rsp), %rdi
callq 0x31b0
leaq 0x71f(%rsp), %rdi
callq 0x3300
jmp 0x45d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x3a89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
leaq 0x6f8(%rsp), %rdi
callq 0x31b0
leaq 0x6f7(%rsp), %rdi
callq 0x3300
jmp 0x45d0
movq 0xb526(%rip), %rdi      # 0xefc8
leaq 0x75c7(%rip), %rsi      # 0xb070
callq 0x3290
movq %rax, 0xd8(%rsp)
jmp 0x3ab8
movq 0xd8(%rsp), %rdi
movq 0xa18(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x3290
movq %rax, 0xd0(%rsp)
jmp 0x3adb
movq 0xd0(%rsp), %rdi
leaq 0x7594(%rip), %rsi      # 0xb07e
callq 0x3290
jmp 0x3af1
movq 0xa18(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0xc0(%rsp)
leaq 0x6cf(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0x3570
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
leaq 0x6d0(%rsp), %rdi
callq 0x4610
jmp 0x3b39
leaq 0x750(%rsp), %rdi
leaq 0x6d0(%rsp), %rsi
callq 0x6600
jmp 0x3b50
leaq 0x6d0(%rsp), %rdi
callq 0x31b0
leaq 0x6cf(%rsp), %rdi
callq 0x3300
movq 0xb457(%rip), %rdi      # 0xefc8
leaq 0x7515(%rip), %rsi      # 0xb08d
callq 0x3290
jmp 0x3b7f
movq 0xb452(%rip), %rdi      # 0xefd8
leaq 0x6c8(%rsp), %rsi
callq 0x31a0
jmp 0x3b95
leaq 0x4c0(%rsp), %rdi
callq 0x3340
jmp 0x3ba4
movq 0xa18(%rsp), %rax
movq 0x10(%rax), %rsi
leaq 0x4c0(%rsp), %rdi
movl $0x8, %edx
callq 0x31c0
jmp 0x3bc4
leaq 0x4a0(%rsp), %rdi
callq 0x3410
movq 0xa18(%rsp), %rax
movq 0x10(%rax), %rsi
leaq 0x450(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x3280
movq 0xb8(%rsp), %rdi
leaq 0x74a0(%rip), %rsi      # 0xb0a1
callq 0x3490
movq %rax, 0x448(%rsp)
leaq 0x248(%rsp), %rdi
callq 0x3510
jmp 0x3c1d
movq 0x448(%rsp), %rax
movq %rax, 0xa8(%rsp)
leaq 0x207(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x3570
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
leaq 0x208(%rsp), %rdi
callq 0x4610
jmp 0x3c61
leaq 0x1df(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x3570
movq 0xa0(%rsp), %rdx
leaq 0x741e(%rip), %rsi      # 0xb0a3
leaq 0x1e0(%rsp), %rdi
callq 0x4610
jmp 0x3c94
leaq 0x228(%rsp), %rdi
leaq 0x208(%rsp), %rsi
leaq 0x1e0(%rsp), %rdx
callq 0x46d0
jmp 0x3cb3
leaq 0x228(%rsp), %rdi
callq 0x3130
movq %rax, %rsi
leaq 0x248(%rsp), %rdi
movl $0x10, %edx
callq 0x3040
jmp 0x3cd7
leaq 0x228(%rsp), %rdi
callq 0x31b0
leaq 0x1e0(%rsp), %rdi
callq 0x31b0
leaq 0x1df(%rsp), %rdi
callq 0x3300
leaq 0x208(%rsp), %rdi
callq 0x31b0
leaq 0x207(%rsp), %rdi
callq 0x3300
cmpl $0x0, 0x6c8(%rsp)
jle 0x453f
leaq 0x9e0(%rsp), %rdi
callq 0x47c0
movq 0x4c0(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x4c0(%rsp,%rax), %rdi
xorl %esi, %esi
callq 0x34f0
jmp 0x3d50
xorl %edx, %edx
movl %edx, %esi
leaq 0x4c0(%rsp), %rdi
callq 0x3400
jmp 0x3d63
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x30a0
jmp 0x3d7a
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x30a0
jmp 0x3d91
movl $0x0, 0x1d8(%rsp)
movl 0x1d8(%rsp), %eax
cmpl 0x6c8(%rsp), %eax
jge 0x40d4
leaq 0x4a0(%rsp), %rdi
callq 0x3460
movslq 0x6c8(%rsp), %rcx
xorl %edx, %edx
divq %rcx
movl %eax, 0x1d4(%rsp)
movl 0x1d8(%rsp), %eax
movl 0x1d4(%rsp), %ecx
imull %ecx, %eax
cltq
movq %rax, 0x90(%rsp)
leaq 0x750(%rsp), %rdi
callq 0x6800
movl %eax, 0x9c(%rsp)
jmp 0x3e02
movq 0x90(%rsp), %rdx
movl 0x9c(%rsp), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x1b0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x32c0
jmp 0x3e2c
leaq 0x190(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x3140
jmp 0x3e43
leaq 0x750(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0x6750
movl %eax, 0x8c(%rsp)
jmp 0x3e61
movl 0x8c(%rsp), %eax
movl %eax, 0xa14(%rsp)
leaq 0x190(%rsp), %rdi
callq 0x31b0
leaq 0x9e0(%rsp), %rdi
leaq 0xa14(%rsp), %rsi
callq 0x47f0
movq %rax, 0x80(%rsp)
jmp 0x3e9b
movq 0x80(%rsp), %rax
movq %rax, 0x188(%rsp)
leaq 0x9e0(%rsp), %rdi
callq 0x4820
movq %rax, 0x180(%rsp)
leaq 0x188(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x47d0
testb $0x1, %al
jne 0x3ede
jmp 0x4074
leaq 0x9e0(%rsp), %rdi
leaq 0xa14(%rsp), %rsi
callq 0x4850
movq %rax, 0x78(%rsp)
jmp 0x3efa
movq 0x78(%rsp), %rax
movq $0x1, (%rax)
jmp 0x409f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x3f42
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0x31b0
leaq 0x6cf(%rsp), %rdi
callq 0x3300
jmp 0x45d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x4598
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x458b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x4010
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x3ff6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x3fe9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
leaq 0x228(%rsp), %rdi
callq 0x31b0
leaq 0x1e0(%rsp), %rdi
callq 0x31b0
leaq 0x1df(%rsp), %rdi
callq 0x3300
leaq 0x208(%rsp), %rdi
callq 0x31b0
leaq 0x207(%rsp), %rdi
callq 0x3300
jmp 0x457e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x457e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x40c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
leaq 0x190(%rsp), %rdi
callq 0x31b0
jmp 0x40c2
leaq 0x9e0(%rsp), %rdi
leaq 0xa14(%rsp), %rsi
callq 0x4850
movq %rax, 0x70(%rsp)
jmp 0x4090
movq 0x70(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
leaq 0x1b0(%rsp), %rdi
callq 0x31b0
movl 0x1d8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1d8(%rsp)
jmp 0x3d9c
leaq 0x1b0(%rsp), %rdi
callq 0x31b0
jmp 0x457e
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x30a0
jmp 0x40eb
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x30a0
jmp 0x4102
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x30a0
jmp 0x4119
jmp 0x411b
movq 0x4c0(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x4c0(%rsp,%rax), %rdi
callq 0x3590
movb %al, 0x6f(%rsp)
jmp 0x413a
movb 0x6f(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4149
jmp 0x43c3
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x30a0
jmp 0x4160
movl $0x0, 0x17c(%rsp)
movl 0x17c(%rsp), %eax
cmpl 0x6c8(%rsp), %eax
jge 0x4379
leaq 0x4a0(%rsp), %rdi
movl $0x4e, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x33c0
cmpq $-0x1, %rax
jne 0x4361
leaq 0x4a0(%rsp), %rdi
callq 0x3460
movslq 0x6c8(%rsp), %rcx
xorl %edx, %edx
divq %rcx
movl %eax, 0x178(%rsp)
movl 0x17c(%rsp), %eax
movl 0x178(%rsp), %ecx
imull %ecx, %eax
cltq
movq %rax, 0x60(%rsp)
leaq 0x750(%rsp), %rdi
callq 0x6800
movl %eax, 0x68(%rsp)
jmp 0x41eb
movq 0x60(%rsp), %rdx
movl 0x68(%rsp), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x158(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x32c0
jmp 0x420f
leaq 0x138(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x3140
jmp 0x4226
leaq 0x750(%rsp), %rdi
leaq 0x138(%rsp), %rsi
callq 0x6750
movl %eax, 0x5c(%rsp)
jmp 0x4241
movl 0x5c(%rsp), %eax
movl %eax, 0xa14(%rsp)
leaq 0x138(%rsp), %rdi
callq 0x31b0
leaq 0x9e0(%rsp), %rdi
leaq 0xa14(%rsp), %rsi
callq 0x47f0
movq %rax, 0x50(%rsp)
jmp 0x4275
movq 0x50(%rsp), %rax
movq %rax, 0x130(%rsp)
leaq 0x9e0(%rsp), %rdi
callq 0x4820
movq %rax, 0x128(%rsp)
leaq 0x130(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x47d0
testb $0x1, %al
jne 0x42b2
jmp 0x4315
leaq 0x9e0(%rsp), %rdi
leaq 0xa14(%rsp), %rsi
callq 0x4850
movq %rax, 0x48(%rsp)
jmp 0x42ce
movq 0x48(%rsp), %rax
movq $0x1, (%rax)
jmp 0x4340
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
jmp 0x434f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x748(%rsp)
movl %eax, 0x744(%rsp)
leaq 0x138(%rsp), %rdi
callq 0x31b0
jmp 0x434f
leaq 0x9e0(%rsp), %rdi
leaq 0xa14(%rsp), %rsi
callq 0x4850
movq %rax, 0x40(%rsp)
jmp 0x4331
movq 0x40(%rsp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
leaq 0x158(%rsp), %rdi
callq 0x31b0
jmp 0x4361
leaq 0x158(%rsp), %rdi
callq 0x31b0
jmp 0x457e
jmp 0x4363
movl 0x17c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x17c(%rsp)
jmp 0x416b
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x30a0
jmp 0x4390
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x30a0
jmp 0x43a7
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x30a0
jmp 0x43be
jmp 0x411b
movq 0xabfe(%rip), %rdi      # 0xefc8
leaq 0x6cd9(%rip), %rsi      # 0xb0aa
callq 0x3290
movq %rax, 0x38(%rsp)
jmp 0x43dd
movq 0x38(%rsp), %rdi
movl 0x6c8(%rsp), %esi
callq 0x3540
movq %rax, 0x30(%rsp)
jmp 0x43f5
movq 0x30(%rsp), %rdi
movq 0xabb7(%rip), %rsi      # 0xefb8
callq 0x32e0
jmp 0x4408
leaq 0x6c9b(%rip), %rsi      # 0xb0aa
leaq 0x248(%rsp), %rdi
callq 0x3290
movq %rax, 0x28(%rsp)
jmp 0x4423
movq 0x28(%rsp), %rdi
movl 0x6c8(%rsp), %esi
callq 0x3540
movq %rax, 0x20(%rsp)
jmp 0x443b
movq 0x20(%rsp), %rdi
movq 0xab71(%rip), %rsi      # 0xefb8
callq 0x32e0
jmp 0x444e
leaq 0x9e0(%rsp), %rdi
callq 0x4940
movq %rax, 0x120(%rsp)
leaq 0x9e0(%rsp), %rdi
callq 0x4820
movq %rax, 0x118(%rsp)
leaq 0x120(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x4970
testb $0x1, %al
jne 0x4496
jmp 0x4524
leaq 0x120(%rsp), %rdi
callq 0x4990
movl (%rax), %esi
leaq 0x248(%rsp), %rdi
callq 0x3540
movq %rax, 0x18(%rsp)
jmp 0x44b9
movq 0x18(%rsp), %rdi
leaq 0x6cb1(%rip), %rsi      # 0xb176
callq 0x3290
movq %rax, 0x10(%rsp)
jmp 0x44d1
leaq 0x120(%rsp), %rdi
callq 0x4990
movq 0x10(%rsp), %rdi
movq 0x8(%rax), %rsi
callq 0x3270
movq %rax, 0x8(%rsp)
jmp 0x44f3
movq 0x8(%rsp), %rdi
movq 0xaab9(%rip), %rsi      # 0xefb8
callq 0x32e0
jmp 0x4506
jmp 0x4508
leaq 0x120(%rsp), %rdi
xorl %esi, %esi
callq 0x49b0
movq %rax, 0x110(%rsp)
jmp 0x4463
movq 0xaaad(%rip), %rdi      # 0xefd8
leaq 0x6c8(%rsp), %rsi
callq 0x31a0
jmp 0x453a
jmp 0x3d18
movl $0x0, 0xa24(%rsp)
movl $0x1, 0x6f0(%rsp)
leaq 0x248(%rsp), %rdi
callq 0x3450
leaq 0x4a0(%rsp), %rdi
callq 0x31b0
leaq 0x4c0(%rsp), %rdi
callq 0x30e0
jmp 0x45a7
leaq 0x248(%rsp), %rdi
callq 0x3450
leaq 0x4a0(%rsp), %rdi
callq 0x31b0
leaq 0x4c0(%rsp), %rdi
callq 0x30e0
jmp 0x45d0
leaq 0x750(%rsp), %rdi
callq 0x6170
leaq 0x9e0(%rsp), %rdi
callq 0x49f0
movl 0xa24(%rsp), %eax
addq $0xa28, %rsp            # imm = 0xA28
retq
leaq 0x750(%rsp), %rdi
callq 0x6170
leaq 0x9e0(%rsp), %rdi
callq 0x49f0
movq 0x748(%rsp), %rdi
callq 0x3560
nopw (%rax,%rax)