// File: CMU-SAFARI[P]optimal-seed-solver/testTemplateClass.cc
// Function: main
int main(int argc, const char* argv[]) {
	templateClass test;
	if (argc != 2) {
		cerr << "Please also put the tree file name" << endl;
		exit(1);
	}

	test.loadTree(argv[1]);

	while (1) {
		cout << "please input DNA string: " << endl;
		string DNA;
		cin >> DNA;

		cout << "please input number of thresholds: ";
		int input;
		cin >> input;
		
		cout << "please input thresholds, one by one:" << endl;

		vector<int> thresholds(input, 1);
		for (int i = 0; i < thresholds.size(); i++)
			cin >> thresholds[i];

		test.setThresholdVec(thresholds);
		test.analyzeRead(DNA);
		test.printInfo();
	}

	return 0;
}

// Assembly:
subq $0x4c8, %rsp            # imm = 0x4C8
movl $0x0, 0x4c4(%rsp)
movl %edi, 0x4c0(%rsp)
movq %rsi, 0x4b8(%rsp)
leaq 0xf8(%rsp), %rdi
callq 0x48b0
cmpl $0x2, 0x4c0(%rsp)
je 0x38d8
movq 0x18761(%rip), %rdi     # 0x1bff0
leaq 0x1076e(%rip), %rsi     # 0x14004
callq 0x3290
movq %rax, 0x48(%rsp)
jmp 0x38a2
movq 0x48(%rsp), %rdi
movq 0x1870a(%rip), %rsi     # 0x1bfb8
callq 0x32e0
jmp 0x38b5
movl $0x1, %edi
callq 0x3370
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf0(%rsp)
movl %eax, 0xec(%rsp)
jmp 0x3bec
movq 0x4b8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x38(%rsp)
leaq 0xc7(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x3590
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
leaq 0xc8(%rsp), %rdi
callq 0x3c10
jmp 0x3914
leaq 0xf8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x49b0
jmp 0x392b
leaq 0xc8(%rsp), %rdi
callq 0x31c0
leaq 0xc7(%rsp), %rdi
callq 0x3300
jmp 0x3947
movq 0x1867a(%rip), %rdi     # 0x1bfc8
leaq 0x106d2(%rip), %rsi     # 0x14027
callq 0x3290
movq %rax, 0x30(%rsp)
jmp 0x3961
movq 0x30(%rsp), %rdi
movq 0x1864b(%rip), %rsi     # 0x1bfb8
callq 0x32e0
jmp 0x3974
leaq 0xa0(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x3450
movq 0x28(%rsp), %rsi
movq 0x18646(%rip), %rdi     # 0x1bfd8
callq 0x33d0
jmp 0x3999
movq 0x18628(%rip), %rdi     # 0x1bfc8
leaq 0x1069a(%rip), %rsi     # 0x14041
callq 0x3290
jmp 0x39ae
movq 0x18623(%rip), %rdi     # 0x1bfd8
leaq 0x9c(%rsp), %rsi
callq 0x31b0
jmp 0x39c4
movq 0x185fd(%rip), %rdi     # 0x1bfc8
leaq 0x10693(%rip), %rsi     # 0x14065
callq 0x3290
movq %rax, 0x20(%rsp)
jmp 0x39de
movq 0x20(%rsp), %rdi
movq 0x185ce(%rip), %rsi     # 0x1bfb8
callq 0x32e0
jmp 0x39f1
movslq 0x9c(%rsp), %rax
movq %rax, 0x10(%rsp)
movl $0x1, 0x7c(%rsp)
leaq 0x7b(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x3cd0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rcx
leaq 0x80(%rsp), %rdi
leaq 0x7c(%rsp), %rdx
callq 0x3ce0
jmp 0x3a33
leaq 0x7b(%rsp), %rdi
callq 0x3d60
movl $0x0, 0x74(%rsp)
movslq 0x74(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x3d70
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x3b3d
movslq 0x74(%rsp), %rsi
leaq 0x80(%rsp), %rdi
callq 0x3d90
movq %rax, %rsi
movq 0x1854f(%rip), %rdi     # 0x1bfd8
callq 0x31b0
jmp 0x3a90
jmp 0x3a92
movl 0x74(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x74(%rsp)
jmp 0x3a45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf0(%rsp)
movl %eax, 0xec(%rsp)
jmp 0x3ad6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf0(%rsp)
movl %eax, 0xec(%rsp)
leaq 0xc8(%rsp), %rdi
callq 0x31c0
leaq 0xc7(%rsp), %rdi
callq 0x3300
jmp 0x3bec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf0(%rsp)
movl %eax, 0xec(%rsp)
jmp 0x3bdf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf0(%rsp)
movl %eax, 0xec(%rsp)
leaq 0x7b(%rsp), %rdi
callq 0x3d60
jmp 0x3bdf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf0(%rsp)
movl %eax, 0xec(%rsp)
jmp 0x3bd2
leaq 0xf8(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x4a20
jmp 0x3b54
leaq 0x50(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x3150
jmp 0x3b68
leaq 0xf8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x4ac0
jmp 0x3b7c
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0xf8(%rsp), %rdi
callq 0x4d20
jmp 0x3b95
leaq 0x80(%rsp), %rdi
callq 0x3db0
leaq 0xa0(%rsp), %rdi
callq 0x31c0
jmp 0x3945
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf0(%rsp)
movl %eax, 0xec(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x80(%rsp), %rdi
callq 0x3db0
leaq 0xa0(%rsp), %rdi
callq 0x31c0
leaq 0xf8(%rsp), %rdi
callq 0x3e10
movq 0xf0(%rsp), %rdi
callq 0x3580
nopw %cs:(%rax,%rax)