// File: medvedevgroup[P]varmatch/src/vm.cpp
// Function: TclapParser(Args&, int, char**)
bool TclapParser(Args & args, int argc, char** argv){
	string version = "0.9";

	try {
		std::string desc = "Please cite our paper if you are using this program in your research. \n";
		TCLAP::CmdLine cmd(desc, ' ', version);
		//TCLAP::ValueArg<std::string> arg_input_vcf_file("i", "i", "input VCF file", true, "", "file", cmd);
		TCLAP::ValueArg<std::string> arg_genome_seq_filename("g", "genome_sequence", "genome sequence FASTA file", true, "", "file");
		TCLAP::ValueArg<std::string> arg_baseline_vcf_filename("b", "baseline", "baseline variant VCF file", true, "", "file");
		TCLAP::MultiArg<std::string> arg_query_vcf_filename("q", "query", "query variant VCF file list", true, "file list");
		TCLAP::ValueArg<std::string> arg_output_dir("o", "output_dir", "output directory, default is current working directory", false, ".", "string");
		TCLAP::ValueArg<std::string> arg_output_prefix("p", "file_prefix", "output filename prefix, default is \"out\"", false, "out", "string");
        int thread_num = (int)thread::hardware_concurrency();


		int max_cores = (int)thread::hardware_concurrency();
		if(max_cores <= 0) max_cores = 1;

		string thread_string = "number of threads, default is the number of available cores (For this machine: " + to_string(max_cores) + ").\n"
                            "If larger than number of available cores or less than 1, automatically set to default value";
		TCLAP::ValueArg<int> arg_thread_num("t", "thread_num", thread_string, false, thread_num, "int");
		vector<int> allowed_two = {-1, 0,1};
		TCLAP::ValuesConstraint<int> allowedVals(allowed_two);

        string score_unit_string = "scoring function/score unit: (Default: -1)\n"
        "-1 : iterate both 0 and 1.\n"
        "0 : the score that a VCF entry contributes is 1.\n"
        "1 : the score that a VCF entry contributes is the edit distance between the new allele and the reference one.\n";

        TCLAP::ValueArg<int> arg_score_unit("u", "score_unit", score_unit_string, false, -1, &allowedVals);


        string match_mode_string = "matching mode: (Default: -1)\n"
        "-1 : iterate both 0 and 1.\n"
        "0 : a set of query entries match a set of baseline entries if, "
        "for each entry, we can select one of the alleles such that the inferred sequences are identical\n"
        "1 : a set of query entries match a set of baseline entries if there exist a phasing of each set such that "
        "the two inferred haplotypes from the query are equal to the two inferred haplotypes from the baseline.\n";

        TCLAP::ValueArg<int> arg_match_mode("m", "match_mode", match_mode_string, false, -1, &allowedVals);


        string score_scheme_string = "scoring scheme: (Default: -1)\n"
        "-1 : iterate 0, 1, and 2 (not including 3)\n"
        "0 : find two subsets of non-overlapping equivalent variants such that "
        "the score of the matched variants is maximized (Default)\n"
        "1 : find two subsets of non-overlapping equivalent variants such that"
        " the score of the chosen baseline variants is maximized\n"
        "2 : find a maximum scoring set of variants in the query such that"
        " each variant can be matched by a subset of the baseline variants\n"
        "3 : (1 to 1 direct match) find a maximum scoring set of entry pairs such that each entry pair contains"
        " one query and one baseline variant that result in the same sequence. In this scheme, different scoring functions and "
        "matching mode have no difference.\n";
        vector<int> allowed_four = {-1,0,1,2,3};
        TCLAP::ValuesConstraint<int> allowedFour(allowed_four);
        TCLAP::ValueArg<int> arg_score_scheme("s", "score_scheme", score_scheme_string, false, -1, &allowedFour);

        //string direct_match_string = "Direct Match. \n";
        //TCLAP::SwitchArg arg_direct_match("d", "direct_match", direct_match_string, cmd, false);

        string detail_results_string = "output detail matching results, by default do not output.\n"
        "filename in format PREFIX.PARAMETER.match\n"
        "The results present which variants in baseline match which variants in query.";

        TCLAP::SwitchArg arg_detail_results("e","detail_results", detail_results_string, cmd, false);

        string precision_recall_string = "Disable Precision-Recall curves. \n";
        TCLAP::SwitchArg arg_disable_curves("C", "disable_curves", precision_recall_string, cmd, false);

        cmd.add(arg_score_scheme);
        cmd.add(arg_match_mode);
        cmd.add(arg_score_unit);
        cmd.add(arg_thread_num);
        //cmd.add(arg_output_prefix);
        cmd.add(arg_output_dir);
        cmd.add(arg_query_vcf_filename);
        cmd.add(arg_baseline_vcf_filename);
        cmd.add(arg_genome_seq_filename);

		cmd.parse(argc, argv);

		args.genome_seq_filename = arg_genome_seq_filename.getValue();
		args.ref_vcf_filename = arg_baseline_vcf_filename.getValue();
		args.query_file_list = arg_query_vcf_filename.getValue();
        //args.que_vcf_filename = arg_query_vcf_filename.getValue();
        args.output_dir = arg_output_dir.getValue();
		args.output_prefix = arg_output_prefix.getValue();
		args.thread_num = arg_thread_num.getValue();
		if(args.thread_num <= 0 || args.thread_num > max_cores) args.thread_num = max_cores;
		args.score_unit = arg_score_unit.getValue();
		args.match_mode = arg_match_mode.getValue();
		args.score_scheme = arg_score_scheme.getValue();
        args.detail_results = arg_detail_results.getValue();
        args.pr_curves = ! arg_disable_curves.getValue();
        //args.direct_match = arg_direct_match.getValue();
	}
	catch (TCLAP::ArgException &e)
	{
		std::cerr << "error: " << e.error() << " for arg " << e.argId() << "\n";
		abort();
	}
	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1570, %rsp           # imm = 0x1570
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0x1380(%rbp)
callq 0x6760
movq -0x1380(%rbp), %rdx
leaq 0x4d61e(%rip), %rsi     # 0x54042
leaq -0x38(%rbp), %rdi
callq 0x9680
jmp 0x6a2f
leaq -0x39(%rbp), %rdi
callq 0x64b0
leaq -0x71(%rbp), %rdi
movq %rdi, -0x1388(%rbp)
callq 0x6760
movq -0x1388(%rbp), %rdx
leaq 0x4d5f0(%rip), %rsi     # 0x54046
leaq -0x70(%rbp), %rdi
callq 0x9680
jmp 0x6a61
leaq -0x71(%rbp), %rdi
callq 0x64b0
leaq -0x158(%rbp), %rdi
leaq -0x70(%rbp), %rsi
movl $0x20, %edx
leaq -0x38(%rbp), %rcx
movl $0x1, %r8d
callq 0xacb0
jmp 0x6a8b
leaq -0x289(%rbp), %rdi
movq %rdi, -0x1390(%rbp)
callq 0x6760
movq -0x1390(%rbp), %rdx
leaq 0x4d69f(%rip), %rsi     # 0x5414b
leaq -0x288(%rbp), %rdi
callq 0x9680
jmp 0x6aba
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x1398(%rbp)
callq 0x6760
movq -0x1398(%rbp), %rdx
leaq 0x4d5b3(%rip), %rsi     # 0x5408e
leaq -0x2b0(%rbp), %rdi
callq 0x9680
jmp 0x6ae9
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x13a0(%rbp)
callq 0x6760
movq -0x13a0(%rbp), %rdx
leaq 0x4d594(%rip), %rsi     # 0x5409e
leaq -0x2d8(%rbp), %rdi
callq 0x9680
jmp 0x6b18
leaq -0x301(%rbp), %rdi
movq %rdi, -0x13a8(%rbp)
callq 0x6760
movq -0x13a8(%rbp), %rdx
leaq 0x4ea65(%rip), %rsi     # 0x5559e
leaq -0x300(%rbp), %rdi
callq 0x9680
jmp 0x6b47
leaq -0x329(%rbp), %rdi
movq %rdi, -0x13b0(%rbp)
callq 0x6760
movq -0x13b0(%rbp), %rdx
leaq 0x4d54c(%rip), %rsi     # 0x540b4
leaq -0x328(%rbp), %rdi
callq 0x9680
jmp 0x6b76
movq %rsp, %rax
leaq -0x328(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
leaq -0x268(%rbp), %rdi
leaq -0x288(%rbp), %rsi
leaq -0x2b0(%rbp), %rdx
leaq -0x2d8(%rbp), %rcx
movl $0x1, %r8d
leaq -0x300(%rbp), %r9
callq 0xaee0
jmp 0x6bbb
leaq -0x328(%rbp), %rdi
callq 0x6828
leaq -0x329(%rbp), %rdi
callq 0x64b0
leaq -0x300(%rbp), %rdi
callq 0x6828
leaq -0x301(%rbp), %rdi
callq 0x64b0
leaq -0x2d8(%rbp), %rdi
callq 0x6828
leaq -0x2d9(%rbp), %rdi
callq 0x64b0
leaq -0x2b0(%rbp), %rdi
callq 0x6828
leaq -0x2b1(%rbp), %rdi
callq 0x64b0
leaq -0x288(%rbp), %rdi
callq 0x6828
leaq -0x289(%rbp), %rdi
callq 0x64b0
leaq -0x461(%rbp), %rdi
movq %rdi, -0x13b8(%rbp)
callq 0x6760
movq -0x13b8(%rbp), %rdx
leaq 0x4d465(%rip), %rsi     # 0x540b9
leaq -0x460(%rbp), %rdi
callq 0x9680
jmp 0x6c62
leaq -0x489(%rbp), %rdi
movq %rdi, -0x13c0(%rbp)
callq 0x6760
movq -0x13c0(%rbp), %rdx
leaq 0x4d438(%rip), %rsi     # 0x540bb
leaq -0x488(%rbp), %rdi
callq 0x9680
jmp 0x6c91
leaq -0x4b1(%rbp), %rdi
movq %rdi, -0x13c8(%rbp)
callq 0x6760
movq -0x13c8(%rbp), %rdx
leaq 0x4d412(%rip), %rsi     # 0x540c4
leaq -0x4b0(%rbp), %rdi
callq 0x9680
jmp 0x6cc0
leaq -0x4d9(%rbp), %rdi
movq %rdi, -0x13d0(%rbp)
callq 0x6760
movq -0x13d0(%rbp), %rdx
leaq 0x4e8bd(%rip), %rsi     # 0x5559e
leaq -0x4d8(%rbp), %rdi
callq 0x9680
jmp 0x6cef
leaq -0x501(%rbp), %rdi
movq %rdi, -0x13d8(%rbp)
callq 0x6760
movq -0x13d8(%rbp), %rdx
leaq 0x4d3a4(%rip), %rsi     # 0x540b4
leaq -0x500(%rbp), %rdi
callq 0x9680
jmp 0x6d1e
movq %rsp, %rax
leaq -0x500(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
leaq -0x440(%rbp), %rdi
leaq -0x460(%rbp), %rsi
leaq -0x488(%rbp), %rdx
leaq -0x4b0(%rbp), %rcx
movl $0x1, %r8d
leaq -0x4d8(%rbp), %r9
callq 0xaee0
jmp 0x6d63
leaq -0x500(%rbp), %rdi
callq 0x6828
leaq -0x501(%rbp), %rdi
callq 0x64b0
leaq -0x4d8(%rbp), %rdi
callq 0x6828
leaq -0x4d9(%rbp), %rdi
callq 0x64b0
leaq -0x4b0(%rbp), %rdi
callq 0x6828
leaq -0x4b1(%rbp), %rdi
callq 0x64b0
leaq -0x488(%rbp), %rdi
callq 0x6828
leaq -0x489(%rbp), %rdi
callq 0x64b0
leaq -0x460(%rbp), %rdi
callq 0x6828
leaq -0x461(%rbp), %rdi
callq 0x64b0
leaq -0x619(%rbp), %rdi
movq %rdi, -0x13e0(%rbp)
callq 0x6760
movq -0x13e0(%rbp), %rdx
leaq 0x4d2e2(%rip), %rsi     # 0x540de
leaq -0x618(%rbp), %rdi
callq 0x9680
jmp 0x6e0a
leaq -0x641(%rbp), %rdi
movq %rdi, -0x13e8(%rbp)
callq 0x6760
movq -0x13e8(%rbp), %rdx
leaq 0x4d2b5(%rip), %rsi     # 0x540e0
leaq -0x640(%rbp), %rdi
callq 0x9680
jmp 0x6e39
leaq -0x669(%rbp), %rdi
movq %rdi, -0x13f0(%rbp)
callq 0x6760
movq -0x13f0(%rbp), %rdx
leaq 0x4d28c(%rip), %rsi     # 0x540e6
leaq -0x668(%rbp), %rdi
callq 0x9680
jmp 0x6e68
leaq -0x691(%rbp), %rdi
movq %rdi, -0x13f8(%rbp)
callq 0x6760
movq -0x13f8(%rbp), %rdx
leaq 0x4d26f(%rip), %rsi     # 0x540f8
leaq -0x690(%rbp), %rdi
callq 0x9680
jmp 0x6e97
movq %rsp, %rax
movq $0x0, (%rax)
leaq -0x5f8(%rbp), %rdi
leaq -0x618(%rbp), %rsi
leaq -0x640(%rbp), %rdx
leaq -0x668(%rbp), %rcx
movl $0x1, %r8d
leaq -0x690(%rbp), %r9
callq 0xb000
jmp 0x6ed1
leaq -0x690(%rbp), %rdi
callq 0x6828
leaq -0x691(%rbp), %rdi
callq 0x64b0
leaq -0x668(%rbp), %rdi
callq 0x6828
leaq -0x669(%rbp), %rdi
callq 0x64b0
leaq -0x640(%rbp), %rdi
callq 0x6828
leaq -0x641(%rbp), %rdi
callq 0x64b0
leaq -0x618(%rbp), %rdi
callq 0x6828
leaq -0x619(%rbp), %rdi
callq 0x64b0
leaq -0x7c9(%rbp), %rdi
movq %rdi, -0x1400(%rbp)
callq 0x6760
movq -0x1400(%rbp), %rdx
leaq 0x4d1b0(%rip), %rsi     # 0x54102
leaq -0x7c8(%rbp), %rdi
callq 0x9680
jmp 0x6f60
leaq -0x7f1(%rbp), %rdi
movq %rdi, -0x1408(%rbp)
callq 0x6760
movq -0x1408(%rbp), %rdx
leaq 0x4d183(%rip), %rsi     # 0x54104
leaq -0x7f0(%rbp), %rdi
callq 0x9680
jmp 0x6f8f
leaq -0x819(%rbp), %rdi
movq %rdi, -0x1410(%rbp)
callq 0x6760
movq -0x1410(%rbp), %rdx
leaq 0x4d15f(%rip), %rsi     # 0x5410f
leaq -0x818(%rbp), %rdi
callq 0x9680
jmp 0x6fbe
leaq -0x841(%rbp), %rdi
movq %rdi, -0x1418(%rbp)
callq 0x6760
movq -0x1418(%rbp), %rdx
leaq 0x4ea53(%rip), %rsi     # 0x55a32
leaq -0x840(%rbp), %rdi
callq 0x9680
jmp 0x6fed
leaq -0x869(%rbp), %rdi
movq %rdi, -0x1420(%rbp)
callq 0x6760
movq -0x1420(%rbp), %rdx
leaq 0x4d138(%rip), %rsi     # 0x54146
leaq -0x868(%rbp), %rdi
callq 0x9680
jmp 0x701c
movq %rsp, %rax
leaq -0x868(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
leaq -0x7a8(%rbp), %rdi
leaq -0x7c8(%rbp), %rsi
leaq -0x7f0(%rbp), %rdx
leaq -0x818(%rbp), %rcx
xorl %r8d, %r8d
leaq -0x840(%rbp), %r9
callq 0xaee0
jmp 0x705e
leaq -0x868(%rbp), %rdi
callq 0x6828
leaq -0x869(%rbp), %rdi
callq 0x64b0
leaq -0x840(%rbp), %rdi
callq 0x6828
leaq -0x841(%rbp), %rdi
callq 0x64b0
leaq -0x818(%rbp), %rdi
callq 0x6828
leaq -0x819(%rbp), %rdi
callq 0x64b0
leaq -0x7f0(%rbp), %rdi
callq 0x6828
leaq -0x7f1(%rbp), %rdi
callq 0x64b0
leaq -0x7c8(%rbp), %rdi
callq 0x6828
leaq -0x7c9(%rbp), %rdi
callq 0x64b0
leaq -0x9a1(%rbp), %rdi
movq %rdi, -0x1428(%rbp)
callq 0x6760
movq -0x1428(%rbp), %rdx
leaq 0x4dd9f(%rip), %rsi     # 0x54e96
leaq -0x9a0(%rbp), %rdi
callq 0x9680
jmp 0x7105
leaq -0x9c9(%rbp), %rdi
movq %rdi, -0x1430(%rbp)
callq 0x6760
movq -0x1430(%rbp), %rdx
leaq 0x4d027(%rip), %rsi     # 0x5414d
leaq -0x9c8(%rbp), %rdi
callq 0x9680
jmp 0x7134
leaq -0x9f1(%rbp), %rdi
movq %rdi, -0x1438(%rbp)
callq 0x6760
movq -0x1438(%rbp), %rdx
leaq 0x4d004(%rip), %rsi     # 0x54159
leaq -0x9f0(%rbp), %rdi
callq 0x9680
jmp 0x7163
leaq -0xa19(%rbp), %rdi
movq %rdi, -0x1440(%rbp)
callq 0x6760
movq -0x1440(%rbp), %rdx
leaq 0x4cffe(%rip), %rsi     # 0x54182
leaq -0xa18(%rbp), %rdi
callq 0x9680
jmp 0x7192
leaq -0xa41(%rbp), %rdi
movq %rdi, -0x1448(%rbp)
callq 0x6760
movq -0x1448(%rbp), %rdx
leaq 0x4cf93(%rip), %rsi     # 0x54146
leaq -0xa40(%rbp), %rdi
callq 0x9680
jmp 0x71c1
movq %rsp, %rax
leaq -0xa40(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
leaq -0x980(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
leaq -0x9c8(%rbp), %rdx
leaq -0x9f0(%rbp), %rcx
xorl %r8d, %r8d
leaq -0xa18(%rbp), %r9
callq 0xaee0
jmp 0x7203
leaq -0xa40(%rbp), %rdi
callq 0x6828
leaq -0xa41(%rbp), %rdi
callq 0x64b0
leaq -0xa18(%rbp), %rdi
callq 0x6828
leaq -0xa19(%rbp), %rdi
callq 0x64b0
leaq -0x9f0(%rbp), %rdi
callq 0x6828
leaq -0x9f1(%rbp), %rdi
callq 0x64b0
leaq -0x9c8(%rbp), %rdi
callq 0x6828
leaq -0x9c9(%rbp), %rdi
callq 0x64b0
leaq -0x9a0(%rbp), %rdi
callq 0x6828
leaq -0x9a1(%rbp), %rdi
callq 0x64b0
callq 0x65d0
movl %eax, -0xa48(%rbp)
callq 0x65d0
movl %eax, -0xa4c(%rbp)
cmpl $0x0, -0xa4c(%rbp)
jg 0x76f2
movl $0x1, -0xa4c(%rbp)
jmp 0x76f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x39(%rbp), %rdi
callq 0x64b0
jmp 0x887e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x71(%rbp), %rdi
callq 0x64b0
jmp 0x872a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8721
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x73b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x739e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7386
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x736e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x6828
leaq -0x329(%rbp), %rdi
callq 0x64b0
leaq -0x300(%rbp), %rdi
callq 0x6828
leaq -0x301(%rbp), %rdi
callq 0x64b0
leaq -0x2d8(%rbp), %rdi
callq 0x6828
leaq -0x2d9(%rbp), %rdi
callq 0x64b0
leaq -0x2b0(%rbp), %rdi
callq 0x6828
leaq -0x2b1(%rbp), %rdi
callq 0x64b0
leaq -0x288(%rbp), %rdi
callq 0x6828
leaq -0x289(%rbp), %rdi
callq 0x64b0
jmp 0x8715
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x748b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7473
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x745b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7443
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x742b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x500(%rbp), %rdi
callq 0x6828
leaq -0x501(%rbp), %rdi
callq 0x64b0
leaq -0x4d8(%rbp), %rdi
callq 0x6828
leaq -0x4d9(%rbp), %rdi
callq 0x64b0
leaq -0x4b0(%rbp), %rdi
callq 0x6828
leaq -0x4b1(%rbp), %rdi
callq 0x64b0
leaq -0x488(%rbp), %rdi
callq 0x6828
leaq -0x489(%rbp), %rdi
callq 0x64b0
leaq -0x460(%rbp), %rdi
callq 0x6828
leaq -0x461(%rbp), %rdi
callq 0x64b0
jmp 0x8709
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7537
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x751f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7507
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x74ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x6828
leaq -0x691(%rbp), %rdi
callq 0x64b0
leaq -0x668(%rbp), %rdi
callq 0x6828
leaq -0x669(%rbp), %rdi
callq 0x64b0
leaq -0x640(%rbp), %rdi
callq 0x6828
leaq -0x641(%rbp), %rdi
callq 0x64b0
leaq -0x618(%rbp), %rdi
callq 0x6828
leaq -0x619(%rbp), %rdi
callq 0x64b0
jmp 0x86fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x760c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x75f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x75dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x75c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x75ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x868(%rbp), %rdi
callq 0x6828
leaq -0x869(%rbp), %rdi
callq 0x64b0
leaq -0x840(%rbp), %rdi
callq 0x6828
leaq -0x841(%rbp), %rdi
callq 0x64b0
leaq -0x818(%rbp), %rdi
callq 0x6828
leaq -0x819(%rbp), %rdi
callq 0x64b0
leaq -0x7f0(%rbp), %rdi
callq 0x6828
leaq -0x7f1(%rbp), %rdi
callq 0x64b0
leaq -0x7c8(%rbp), %rdi
callq 0x6828
leaq -0x7c9(%rbp), %rdi
callq 0x64b0
jmp 0x86f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x76e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x76c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x76b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7699
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x7681
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xa40(%rbp), %rdi
callq 0x6828
leaq -0xa41(%rbp), %rdi
callq 0x64b0
leaq -0xa18(%rbp), %rdi
callq 0x6828
leaq -0xa19(%rbp), %rdi
callq 0x64b0
leaq -0x9f0(%rbp), %rdi
callq 0x6828
leaq -0x9f1(%rbp), %rdi
callq 0x64b0
leaq -0x9c8(%rbp), %rdi
callq 0x6828
leaq -0x9c9(%rbp), %rdi
callq 0x64b0
leaq -0x9a0(%rbp), %rdi
callq 0x6828
leaq -0x9a1(%rbp), %rdi
callq 0x64b0
jmp 0x86e5
movl -0xa4c(%rbp), %esi
leaq -0xab0(%rbp), %rdi
callq 0xb190
jmp 0x7706
leaq 0x4ca79(%rip), %rsi     # 0x54186
leaq -0xa90(%rbp), %rdi
leaq -0xab0(%rbp), %rdx
callq 0xb140
jmp 0x7722
leaq 0x4caad(%rip), %rdx     # 0x541d6
leaq -0xa70(%rbp), %rdi
leaq -0xa90(%rbp), %rsi
callq 0xb0f0
jmp 0x773e
leaq -0xa90(%rbp), %rdi
callq 0x6828
leaq -0xab0(%rbp), %rdi
callq 0x6828
leaq -0xba9(%rbp), %rdi
movq %rdi, -0x1450(%rbp)
callq 0x6760
movq -0x1450(%rbp), %rdx
leaq 0x4e130(%rip), %rsi     # 0x558a7
leaq -0xba8(%rbp), %rdi
callq 0x9680
jmp 0x7785
leaq -0xbd1(%rbp), %rdi
movq %rdi, -0x1458(%rbp)
callq 0x6760
movq -0x1458(%rbp), %rdx
leaq 0x4ca8f(%rip), %rsi     # 0x54235
leaq -0xbd0(%rbp), %rdi
callq 0x9680
jmp 0x77b4
movl -0xa48(%rbp), %eax
movl %eax, -0x1464(%rbp)
leaq -0xbf9(%rbp), %rdi
movq %rdi, -0x1460(%rbp)
callq 0x6760
movq -0x1460(%rbp), %rdx
leaq 0x4ca5f(%rip), %rsi     # 0x54240
leaq -0xbf8(%rbp), %rdi
callq 0x9680
jmp 0x77ef
movl -0x1464(%rbp), %r9d
movq %rsp, %rax
leaq -0xbf8(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
leaq -0xb88(%rbp), %rdi
leaq -0xba8(%rbp), %rsi
leaq -0xbd0(%rbp), %rdx
leaq -0xa70(%rbp), %rcx
xorl %r8d, %r8d
callq 0xb2b0
jmp 0x7831
leaq -0xbf8(%rbp), %rdi
callq 0x6828
leaq -0xbf9(%rbp), %rdi
callq 0x64b0
leaq -0xbd0(%rbp), %rdi
callq 0x6828
leaq -0xbd1(%rbp), %rdi
callq 0x64b0
leaq -0xba8(%rbp), %rdi
callq 0x6828
leaq -0xba9(%rbp), %rdi
callq 0x64b0
movl $0xffffffff, -0xc34(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0xc30(%rbp)
movl $0x1, -0xc2c(%rbp)
leaq -0xc34(%rbp), %rax
movq %rax, -0xc28(%rbp)
movq $0x3, -0xc20(%rbp)
leaq -0xc35(%rbp), %rdi
movq %rdi, -0x1470(%rbp)
callq 0xb380
movq -0x1470(%rbp), %rcx
movq -0xc28(%rbp), %rsi
movq -0xc20(%rbp), %rdx
leaq -0xc18(%rbp), %rdi
callq 0xb3a0
jmp 0x78e6
leaq -0xc35(%rbp), %rdi
callq 0xb420
leaq -0xc78(%rbp), %rdi
leaq -0xc18(%rbp), %rsi
callq 0xb440
jmp 0x7907
leaq -0xc99(%rbp), %rdi
movq %rdi, -0x1478(%rbp)
callq 0x6760
movq -0x1478(%rbp), %rdx
leaq 0x4c91c(%rip), %rsi     # 0x54244
leaq -0xc98(%rbp), %rdi
callq 0x9680
jmp 0x7936
leaq -0xc99(%rbp), %rdi
callq 0x64b0
leaq -0xd99(%rbp), %rdi
movq %rdi, -0x1480(%rbp)
callq 0x6760
movq -0x1480(%rbp), %rdx
leaq 0x4c9c7(%rip), %rsi     # 0x5432a
leaq -0xd98(%rbp), %rdi
callq 0x9680
jmp 0x7971
leaq -0xdc1(%rbp), %rdi
movq %rdi, -0x1488(%rbp)
callq 0x6760
movq -0x1488(%rbp), %rdx
leaq 0x4c99a(%rip), %rsi     # 0x5432c
leaq -0xdc0(%rbp), %rdi
callq 0x9680
jmp 0x79a0
movq %rsp, %rax
leaq -0xc78(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
leaq -0xd78(%rbp), %rdi
leaq -0xd98(%rbp), %rsi
leaq -0xdc0(%rbp), %rdx
leaq -0xc98(%rbp), %rcx
xorl %r8d, %r8d
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xb660
jmp 0x79e1
leaq -0xdc0(%rbp), %rdi
callq 0x6828
leaq -0xdc1(%rbp), %rdi
callq 0x64b0
leaq -0xd98(%rbp), %rdi
callq 0x6828
leaq -0xd99(%rbp), %rdi
callq 0x64b0
leaq -0xde9(%rbp), %rdi
movq %rdi, -0x1490(%rbp)
callq 0x6760
movq -0x1490(%rbp), %rdx
leaq 0x4c905(%rip), %rsi     # 0x54337
leaq -0xde8(%rbp), %rdi
callq 0x9680
jmp 0x7a40
leaq -0xde9(%rbp), %rdi
callq 0x64b0
leaq -0xee9(%rbp), %rdi
movq %rdi, -0x1498(%rbp)
callq 0x6760
movq -0x1498(%rbp), %rdx
leaq 0x4c7d1(%rip), %rsi     # 0x5423e
leaq -0xee8(%rbp), %rdi
callq 0x9680
jmp 0x7a7b
leaq -0xf11(%rbp), %rdi
movq %rdi, -0x14a0(%rbp)
callq 0x6760
movq -0x14a0(%rbp), %rdx
leaq 0x4ca44(%rip), %rsi     # 0x544e0
leaq -0xf10(%rbp), %rdi
callq 0x9680
jmp 0x7aaa
movq %rsp, %rax
leaq -0xc78(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
leaq -0xec8(%rbp), %rdi
leaq -0xee8(%rbp), %rsi
leaq -0xf10(%rbp), %rdx
leaq -0xde8(%rbp), %rcx
xorl %r8d, %r8d
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xb660
jmp 0x7aeb
leaq -0xf10(%rbp), %rdi
callq 0x6828
leaq -0xf11(%rbp), %rdi
callq 0x64b0
leaq -0xee8(%rbp), %rdi
callq 0x6828
leaq -0xee9(%rbp), %rdi
callq 0x64b0
leaq -0xf39(%rbp), %rdi
movq %rdi, -0x14a8(%rbp)
callq 0x6760
movq -0x14a8(%rbp), %rdx
leaq 0x4c9af(%rip), %rsi     # 0x544eb
leaq -0xf38(%rbp), %rdi
callq 0x9680
jmp 0x7b4a
leaq -0xf39(%rbp), %rdi
callq 0x64b0
movups 0x4d407(%rip), %xmm0    # 0x54f64
movaps %xmm0, -0xf80(%rbp)
movl $0x3, -0xf70(%rbp)
leaq -0xf80(%rbp), %rax
movq %rax, -0xf68(%rbp)
movq $0x5, -0xf60(%rbp)
leaq -0xf81(%rbp), %rdi
movq %rdi, -0x14b0(%rbp)
callq 0xb380
movq -0x14b0(%rbp), %rcx
movq -0xf68(%rbp), %rsi
movq -0xf60(%rbp), %rdx
leaq -0xf58(%rbp), %rdi
callq 0xb3a0
jmp 0x7bbd
leaq -0xf81(%rbp), %rdi
callq 0xb420
leaq -0xfc8(%rbp), %rdi
leaq -0xf58(%rbp), %rsi
callq 0xb440
jmp 0x7bde
leaq -0x10c1(%rbp), %rdi
movq %rdi, -0x14b8(%rbp)
callq 0x6760
movq -0x14b8(%rbp), %rdx
leaq 0x4ccb3(%rip), %rsi     # 0x548b2
leaq -0x10c0(%rbp), %rdi
callq 0x9680
jmp 0x7c0d
leaq -0x10e9(%rbp), %rdi
movq %rdi, -0x14c0(%rbp)
callq 0x6760
movq -0x14c0(%rbp), %rdx
leaq 0x4cb84(%rip), %rsi     # 0x547b2
leaq -0x10e8(%rbp), %rdi
callq 0x9680
jmp 0x7c3c
movq %rsp, %rax
leaq -0xfc8(%rbp), %rcx
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
leaq -0x10a0(%rbp), %rdi
leaq -0x10c0(%rbp), %rsi
leaq -0x10e8(%rbp), %rdx
leaq -0xf38(%rbp), %rcx
xorl %r8d, %r8d
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
callq 0xb660
jmp 0x7c7d
leaq -0x10e8(%rbp), %rdi
callq 0x6828
leaq -0x10e9(%rbp), %rdi
callq 0x64b0
leaq -0x10c0(%rbp), %rdi
callq 0x6828
leaq -0x10c1(%rbp), %rdi
callq 0x64b0
leaq -0x1111(%rbp), %rdi
movq %rdi, -0x14c8(%rbp)
callq 0x6760
movq -0x14c8(%rbp), %rdx
leaq 0x4caf1(%rip), %rsi     # 0x547bf
leaq -0x1110(%rbp), %rdi
callq 0x9680
jmp 0x7cdc
leaq -0x1111(%rbp), %rdi
callq 0x64b0
leaq -0x11e1(%rbp), %rdi
movq %rdi, -0x14d0(%rbp)
callq 0x6760
movq -0x14d0(%rbp), %rdx
leaq 0x4d8e2(%rip), %rsi     # 0x555eb
leaq -0x11e0(%rbp), %rdi
callq 0x9680
jmp 0x7d17
leaq -0x1209(%rbp), %rdi
movq %rdi, -0x14d8(%rbp)
callq 0x6760
movq -0x14d8(%rbp), %rdx
leaq 0x4cb39(%rip), %rsi     # 0x54871
leaq -0x1208(%rbp), %rdi
callq 0x9680
jmp 0x7d46
movq %rsp, %rax
movq $0x0, (%rax)
leaq -0x11c0(%rbp), %rdi
leaq -0x11e0(%rbp), %rsi
leaq -0x1208(%rbp), %rdx
leaq -0x1110(%rbp), %rcx
leaq -0x158(%rbp), %r8
xorl %r9d, %r9d
callq 0xb730
jmp 0x7d7d
leaq -0x1208(%rbp), %rdi
callq 0x6828
leaq -0x1209(%rbp), %rdi
callq 0x64b0
leaq -0x11e0(%rbp), %rdi
callq 0x6828
leaq -0x11e1(%rbp), %rdi
callq 0x64b0
leaq -0x1231(%rbp), %rdi
movq %rdi, -0x14e0(%rbp)
callq 0x6760
movq -0x14e0(%rbp), %rdx
leaq 0x4cab2(%rip), %rsi     # 0x54880
leaq -0x1230(%rbp), %rdi
callq 0x9680
jmp 0x7ddc
leaq -0x1231(%rbp), %rdi
callq 0x64b0
leaq -0x1301(%rbp), %rdi
movq %rdi, -0x14e8(%rbp)
callq 0x6760
movq -0x14e8(%rbp), %rdx
leaq 0x4ca9a(%rip), %rsi     # 0x548a3
leaq -0x1300(%rbp), %rdi
callq 0x9680
jmp 0x7e17
leaq -0x1329(%rbp), %rdi
movq %rdi, -0x14f0(%rbp)
callq 0x6760
movq -0x14f0(%rbp), %rdx
leaq 0x4ca6d(%rip), %rsi     # 0x548a5
leaq -0x1328(%rbp), %rdi
callq 0x9680
jmp 0x7e46
movq %rsp, %rax
movq $0x0, (%rax)
leaq -0x12e0(%rbp), %rdi
leaq -0x1300(%rbp), %rsi
leaq -0x1328(%rbp), %rdx
leaq -0x1230(%rbp), %rcx
leaq -0x158(%rbp), %r8
xorl %r9d, %r9d
callq 0xb730
jmp 0x7e7d
leaq -0x1328(%rbp), %rdi
callq 0x6828
leaq -0x1329(%rbp), %rdi
callq 0x64b0
leaq -0x1300(%rbp), %rdi
callq 0x6828
leaq -0x1301(%rbp), %rdi
callq 0x64b0
leaq -0x158(%rbp), %rdi
leaq -0x10a0(%rbp), %rsi
callq 0xb7e0
jmp 0x7ec2
leaq -0x158(%rbp), %rdi
leaq -0xec8(%rbp), %rsi
callq 0xb7e0
jmp 0x7ed7
leaq -0x158(%rbp), %rdi
leaq -0xd78(%rbp), %rsi
callq 0xb7e0
jmp 0x7eec
leaq -0x158(%rbp), %rdi
leaq -0xb88(%rbp), %rsi
callq 0xb7e0
jmp 0x7f01
leaq -0x158(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
callq 0xb7e0
jmp 0x7f16
leaq -0x158(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0xb7e0
jmp 0x7f2b
leaq -0x158(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0xb7e0
jmp 0x7f40
leaq -0x158(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0xb7e0
jmp 0x7f55
movl -0xc(%rbp), %esi
movq -0x18(%rbp), %rdx
leaq -0x158(%rbp), %rdi
callq 0xb810
jmp 0x7f6a
leaq -0x268(%rbp), %rdi
callq 0xb920
movq %rax, -0x14f8(%rbp)
jmp 0x7f7f
movq -0x14f8(%rbp), %rsi
movq -0x8(%rbp), %rdi
addq $0x40, %rdi
callq 0x6070
jmp 0x7f95
leaq -0x440(%rbp), %rdi
callq 0xb920
movq %rax, -0x1500(%rbp)
jmp 0x7faa
movq -0x1500(%rbp), %rsi
movq -0x8(%rbp), %rdi
callq 0x6070
jmp 0x7fbc
leaq -0x5f8(%rbp), %rdi
callq 0xb940
movq %rax, -0x1508(%rbp)
jmp 0x7fd1
movq -0x1508(%rbp), %rsi
movq -0x8(%rbp), %rdi
addq $0xb8, %rdi
callq 0xb960
jmp 0x7fea
leaq -0x7a8(%rbp), %rdi
callq 0xb920
movq %rax, -0x1510(%rbp)
jmp 0x7fff
movq -0x1510(%rbp), %rsi
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
callq 0x6070
jmp 0x8015
leaq -0x980(%rbp), %rdi
callq 0xb920
movq %rax, -0x1518(%rbp)
jmp 0x802a
movq -0x1518(%rbp), %rsi
movq -0x8(%rbp), %rdi
subq $-0x80, %rdi
callq 0x6070
jmp 0x8040
leaq -0xb88(%rbp), %rdi
callq 0xbbb0
movq %rax, -0x1520(%rbp)
jmp 0x8055
movq -0x1520(%rbp), %rax
movl (%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xa0(%rax)
movq -0x8(%rbp), %rax
cmpl $0x0, 0xa0(%rax)
jle 0x808b
movq -0x8(%rbp), %rax
movl 0xa0(%rax), %eax
cmpl -0xa4c(%rbp), %eax
jle 0x8446
movl -0xa4c(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xa0(%rax)
jmp 0x8446
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x86d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x80d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xa90(%rbp), %rdi
callq 0x6828
leaq -0xab0(%rbp), %rdi
callq 0x6828
jmp 0x86d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x815a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8142
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x812a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xbf8(%rbp), %rdi
callq 0x6828
leaq -0xbf9(%rbp), %rdi
callq 0x64b0
leaq -0xbd0(%rbp), %rdi
callq 0x6828
leaq -0xbd1(%rbp), %rdi
callq 0x64b0
leaq -0xba8(%rbp), %rdi
callq 0x6828
leaq -0xba9(%rbp), %rdi
callq 0x64b0
jmp 0x86cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xc35(%rbp), %rdi
callq 0xb420
jmp 0x86c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x86b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xc99(%rbp), %rdi
callq 0x64b0
jmp 0x86a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8202
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x81ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xdc0(%rbp), %rdi
callq 0x6828
leaq -0xdc1(%rbp), %rdi
callq 0x64b0
leaq -0xd98(%rbp), %rdi
callq 0x6828
leaq -0xd99(%rbp), %rdi
callq 0x64b0
jmp 0x869d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xde9(%rbp), %rdi
callq 0x64b0
jmp 0x8691
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x827c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8264
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xf10(%rbp), %rdi
callq 0x6828
leaq -0xf11(%rbp), %rdi
callq 0x64b0
leaq -0xee8(%rbp), %rdi
callq 0x6828
leaq -0xee9(%rbp), %rdi
callq 0x64b0
jmp 0x8685
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xf39(%rbp), %rdi
callq 0x64b0
jmp 0x8679
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xf81(%rbp), %rdi
callq 0xb420
jmp 0x866d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8661
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8324
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x830c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x10e8(%rbp), %rdi
callq 0x6828
leaq -0x10e9(%rbp), %rdi
callq 0x64b0
leaq -0x10c0(%rbp), %rdi
callq 0x6828
leaq -0x10c1(%rbp), %rdi
callq 0x64b0
jmp 0x8655
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1111(%rbp), %rdi
callq 0x64b0
jmp 0x8649
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x839e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8386
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1208(%rbp), %rdi
callq 0x6828
leaq -0x1209(%rbp), %rdi
callq 0x64b0
leaq -0x11e0(%rbp), %rdi
callq 0x6828
leaq -0x11e1(%rbp), %rdi
callq 0x64b0
jmp 0x863d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1231(%rbp), %rdi
callq 0x64b0
jmp 0x8631
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8418
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1328(%rbp), %rdi
callq 0x6828
leaq -0x1329(%rbp), %rdi
callq 0x64b0
leaq -0x1300(%rbp), %rdi
callq 0x6828
leaq -0x1301(%rbp), %rdi
callq 0x64b0
jmp 0x8625
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x12e0(%rbp), %rdi
callq 0xbbf0
jmp 0x8625
leaq -0xd78(%rbp), %rdi
callq 0xbbb0
movq %rax, -0x1528(%rbp)
jmp 0x845b
movq -0x1528(%rbp), %rax
movl (%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xa4(%rax)
leaq -0xec8(%rbp), %rdi
callq 0xbbb0
movq %rax, -0x1530(%rbp)
jmp 0x8483
movq -0x1530(%rbp), %rax
movl (%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xa8(%rax)
leaq -0x10a0(%rbp), %rdi
callq 0xbbb0
movq %rax, -0x1538(%rbp)
jmp 0x84ab
movq -0x1538(%rbp), %rax
movl (%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xac(%rax)
leaq -0x11c0(%rbp), %rdi
callq 0xbbd0
movb %al, -0x1539(%rbp)
jmp 0x84d2
movb -0x1539(%rbp), %cl
movq -0x8(%rbp), %rax
andb $0x1, %cl
movb %cl, 0xb0(%rax)
leaq -0x12e0(%rbp), %rdi
callq 0xbbd0
movb %al, -0x153a(%rbp)
jmp 0x84f9
movb -0x153a(%rbp), %cl
xorb $-0x1, %cl
movq -0x8(%rbp), %rax
andb $0x1, %cl
movb %cl, 0xd0(%rax)
leaq -0x12e0(%rbp), %rdi
callq 0xbbf0
leaq -0x1230(%rbp), %rdi
callq 0x6828
leaq -0x11c0(%rbp), %rdi
callq 0xbbf0
leaq -0x1110(%rbp), %rdi
callq 0x6828
leaq -0x10a0(%rbp), %rdi
callq 0xbc10
leaq -0xfc8(%rbp), %rdi
callq 0xbc50
leaq -0xf58(%rbp), %rdi
callq 0xbca0
leaq -0xf38(%rbp), %rdi
callq 0x6828
leaq -0xec8(%rbp), %rdi
callq 0xbc10
leaq -0xde8(%rbp), %rdi
callq 0x6828
leaq -0xd78(%rbp), %rdi
callq 0xbc10
leaq -0xc98(%rbp), %rdi
callq 0x6828
leaq -0xc78(%rbp), %rdi
callq 0xbc50
leaq -0xc18(%rbp), %rdi
callq 0xbca0
leaq -0xb88(%rbp), %rdi
callq 0xbc10
leaq -0xa70(%rbp), %rdi
callq 0x6828
leaq -0x980(%rbp), %rdi
callq 0xbd00
leaq -0x7a8(%rbp), %rdi
callq 0xbd00
leaq -0x5f8(%rbp), %rdi
callq 0xbd60
leaq -0x440(%rbp), %rdi
callq 0xbd00
leaq -0x268(%rbp), %rdi
callq 0xbd00
leaq -0x158(%rbp), %rdi
callq 0xabb0
leaq -0x70(%rbp), %rdi
callq 0x6828
jmp 0x885f
leaq -0x1230(%rbp), %rdi
callq 0x6828
leaq -0x11c0(%rbp), %rdi
callq 0xbbf0
leaq -0x1110(%rbp), %rdi
callq 0x6828
leaq -0x10a0(%rbp), %rdi
callq 0xbc10
leaq -0xfc8(%rbp), %rdi
callq 0xbc50
leaq -0xf58(%rbp), %rdi
callq 0xbca0
leaq -0xf38(%rbp), %rdi
callq 0x6828
leaq -0xec8(%rbp), %rdi
callq 0xbc10
leaq -0xde8(%rbp), %rdi
callq 0x6828
leaq -0xd78(%rbp), %rdi
callq 0xbc10
leaq -0xc98(%rbp), %rdi
callq 0x6828
leaq -0xc78(%rbp), %rdi
callq 0xbc50
leaq -0xc18(%rbp), %rdi
callq 0xbca0
leaq -0xb88(%rbp), %rdi
callq 0xbc10
leaq -0xa70(%rbp), %rdi
callq 0x6828
leaq -0x980(%rbp), %rdi
callq 0xbd00
leaq -0x7a8(%rbp), %rdi
callq 0xbd00
leaq -0x5f8(%rbp), %rdi
callq 0xbd60
leaq -0x440(%rbp), %rdi
callq 0xbd00
leaq -0x268(%rbp), %rdi
callq 0xbd00
leaq -0x158(%rbp), %rdi
callq 0xabb0
leaq -0x70(%rbp), %rdi
callq 0x6828
movl -0x4c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x8875
movq -0x48(%rbp), %rdi
callq 0x6190
movq %rax, -0x1338(%rbp)
movq 0x6b89f(%rip), %rdi     # 0x73ff0
leaq 0x4c15c(%rip), %rsi     # 0x548b4
callq 0x6420
movq %rax, -0x1548(%rbp)
jmp 0x8766
movq -0x1338(%rbp), %rsi
leaq -0x1358(%rbp), %rdi
callq 0xbdb0
jmp 0x877b
movq -0x1548(%rbp), %rdi
leaq -0x1358(%rbp), %rsi
callq 0x63e0
movq %rax, -0x1550(%rbp)
jmp 0x8797
movq -0x1550(%rbp), %rdi
leaq 0x4c117(%rip), %rsi     # 0x548bc
callq 0x6420
movq %rax, -0x1558(%rbp)
jmp 0x87b3
movq -0x1338(%rbp), %rsi
leaq -0x1378(%rbp), %rdi
callq 0xbde0
jmp 0x87c8
movq -0x1558(%rbp), %rdi
leaq -0x1378(%rbp), %rsi
callq 0x63e0
movq %rax, -0x1560(%rbp)
jmp 0x87e4
movq -0x1560(%rbp), %rdi
leaq 0x4b89a(%rip), %rsi     # 0x5408c
callq 0x6420
jmp 0x87f9
leaq -0x1378(%rbp), %rdi
callq 0x6828
leaq -0x1358(%rbp), %rdi
callq 0x6828
callq 0x6250
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x8856
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x884a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1378(%rbp), %rdi
callq 0x6828
leaq -0x1358(%rbp), %rdi
callq 0x6828
callq 0x66d0
jmp 0x885d
jmp 0x8875
leaq -0x38(%rbp), %rdi
callq 0x6828
movb $0x1, %al
andb $0x1, %al
addq $0x1570, %rsp           # imm = 0x1570
popq %rbp
retq
leaq -0x38(%rbp), %rdi
callq 0x6828
movq -0x48(%rbp), %rdi
callq 0x6750
movq %rax, %rdi
callq 0xaac0
nop