// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd48, %rsp            # imm = 0xD48
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
leaq 0x1b8a6(%rip), %rsi     # 0x21022
leaq 0x2c0(%rsp), %rdi
leaq 0xc38(%rsp), %rdx
callq 0x72ee
leaq 0x1b88e(%rip), %rsi     # 0x21026
leaq 0x2a0(%rsp), %rdi
leaq 0xc38(%rsp), %rdx
callq 0x72ee
leaq 0x958(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
pushq $0x20
popq %rdx
leaq 0x2c0(%rsp), %rcx
pushq $0x1
popq %r8
callq 0x7d34
leaq 0x1b953(%rip), %rsi     # 0x2112b
leaq 0xb28(%rsp), %rdi
leaq 0x5e0(%rsp), %rdx
callq 0x72ee
leaq 0x1b87a(%rip), %rsi     # 0x2106e
leaq 0x848(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x72ee
leaq 0x1b86e(%rip), %rsi     # 0x2107e
leaq 0x738(%rsp), %rdi
leaq 0x508(%rsp), %rdx
callq 0x72ee
leaq 0x1cd7e(%rip), %rsi     # 0x225aa
leaq 0x280(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x72ee
leaq 0x1b84c(%rip), %rsi     # 0x21094
leaq 0xa38(%rsp), %r15
leaq 0x2e0(%rsp), %rdx
movq %r15, %rdi
callq 0x72ee
movq %r15, (%rsp)
andq $0x0, 0x8(%rsp)
leaq 0xc38(%rsp), %rdi
leaq 0xb28(%rsp), %rsi
leaq 0x848(%rsp), %rdx
leaq 0x738(%rsp), %rcx
pushq $0x1
popq %r8
leaq 0x280(%rsp), %r9
callq 0x7ea0
leaq 0xa38(%rsp), %rdi
callq 0x55e8
leaq 0x280(%rsp), %rdi
callq 0x55e8
leaq 0x738(%rsp), %rdi
callq 0x55e8
leaq 0x848(%rsp), %rdi
callq 0x55e8
leaq 0xb28(%rsp), %rdi
callq 0x55e8
leaq 0x1b7b6(%rip), %rsi     # 0x21099
leaq 0x848(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x72ee
leaq 0x1b79c(%rip), %rsi     # 0x2109b
leaq 0x738(%rsp), %rdi
leaq 0x508(%rsp), %rdx
callq 0x72ee
leaq 0x1b789(%rip), %rsi     # 0x210a4
leaq 0xa38(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x72ee
leaq 0x1cc73(%rip), %rsi     # 0x225aa
leaq 0x260(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x72ee
leaq 0x1b741(%rip), %rsi     # 0x21094
leaq 0x5e0(%rsp), %r15
leaq 0x388(%rsp), %rdx
movq %r15, %rdi
callq 0x72ee
movq %r15, (%rsp)
andq $0x0, 0x8(%rsp)
leaq 0xb28(%rsp), %rdi
leaq 0x848(%rsp), %rsi
leaq 0x738(%rsp), %rdx
leaq 0xa38(%rsp), %rcx
pushq $0x1
popq %r8
leaq 0x260(%rsp), %r9
callq 0x7ea0
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
leaq 0x260(%rsp), %rdi
callq 0x55e8
leaq 0xa38(%rsp), %rdi
callq 0x55e8
leaq 0x738(%rsp), %rdi
callq 0x55e8
leaq 0x848(%rsp), %rdi
callq 0x55e8
leaq 0x1b6d0(%rip), %rsi     # 0x210be
leaq 0x848(%rsp), %rdi
leaq 0x508(%rsp), %rdx
callq 0x72ee
leaq 0x1b6b6(%rip), %rsi     # 0x210c0
leaq 0x738(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x72ee
leaq 0x1b6a0(%rip), %rsi     # 0x210c6
leaq 0x5e0(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x72ee
leaq 0x1b696(%rip), %rsi     # 0x210d8
leaq 0xe8(%rsp), %rdi
leaq 0x388(%rsp), %rdx
callq 0x72ee
andq $0x0, (%rsp)
leaq 0xa38(%rsp), %rdi
leaq 0x848(%rsp), %rsi
leaq 0x738(%rsp), %rdx
leaq 0x5e0(%rsp), %rcx
pushq $0x1
popq %r15
leaq 0xe8(%rsp), %r9
movl %r15d, %r8d
callq 0x7f40
leaq 0xe8(%rsp), %rdi
callq 0x55e8
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
leaq 0x738(%rsp), %rdi
callq 0x55e8
leaq 0x848(%rsp), %rdi
callq 0x55e8
leaq 0x1b617(%rip), %rsi     # 0x210e2
leaq 0x738(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x72ee
leaq 0x1b5fd(%rip), %rsi     # 0x210e4
leaq 0x5e0(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x72ee
leaq 0x1b5ec(%rip), %rsi     # 0x210ef
leaq 0xe8(%rsp), %rdi
leaq 0x388(%rsp), %rdx
callq 0x72ee
leaq 0x1cf1f(%rip), %rsi     # 0x22a3e
leaq 0x240(%rsp), %rdi
leaq 0x6f8(%rsp), %rdx
callq 0x72ee
leaq 0x1b5eb(%rip), %rsi     # 0x21126
leaq 0x508(%rsp), %r12
leaq 0x6b8(%rsp), %rdx
movq %r12, %rdi
callq 0x72ee
andq $0x0, 0x8(%rsp)
movq %r12, (%rsp)
leaq 0x848(%rsp), %rdi
leaq 0x738(%rsp), %rsi
leaq 0x5e0(%rsp), %rdx
leaq 0xe8(%rsp), %rcx
leaq 0x240(%rsp), %r9
xorl %r8d, %r8d
callq 0x7ea0
leaq 0x508(%rsp), %rdi
callq 0x55e8
leaq 0x240(%rsp), %rdi
callq 0x55e8
leaq 0xe8(%rsp), %rdi
callq 0x55e8
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
leaq 0x738(%rsp), %rdi
callq 0x55e8
leaq 0x1c2cb(%rip), %rsi     # 0x21ea0
leaq 0x5e0(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x72ee
leaq 0x1b53c(%rip), %rsi     # 0x2112d
leaq 0xe8(%rsp), %rdi
leaq 0x388(%rsp), %rdx
callq 0x72ee
leaq 0x1b52c(%rip), %rsi     # 0x21139
leaq 0x508(%rsp), %rdi
leaq 0x6f8(%rsp), %rdx
callq 0x72ee
leaq 0x1b539(%rip), %rsi     # 0x21162
leaq 0x220(%rsp), %rdi
leaq 0x6b8(%rsp), %rdx
callq 0x72ee
leaq 0x1b4e1(%rip), %rsi     # 0x21126
leaq 0x430(%rsp), %r12
leaq 0xc8(%rsp), %rdx
movq %r12, %rdi
callq 0x72ee
andq $0x0, 0x8(%rsp)
movq %r12, (%rsp)
leaq 0x738(%rsp), %rdi
leaq 0x5e0(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
leaq 0x508(%rsp), %rcx
leaq 0x220(%rsp), %r9
xorl %r8d, %r8d
callq 0x7ea0
leaq 0x430(%rsp), %rdi
callq 0x55e8
leaq 0x220(%rsp), %rdi
callq 0x55e8
leaq 0x508(%rsp), %rdi
callq 0x55e8
leaq 0xe8(%rsp), %rdi
callq 0x55e8
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
callq 0x53e0
movl %eax, %r12d
callq 0x53e0
cmpl $0x2, %eax
cmovgel %eax, %r15d
leaq 0xe8(%rsp), %rdi
movl %r15d, %esi
callq 0x8011
leaq 0x1b463(%rip), %rsi     # 0x21166
leaq 0x5e0(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x7fed
leaq 0x1b497(%rip), %rdx     # 0x211b6
leaq 0xc8(%rsp), %rdi
leaq 0x5e0(%rsp), %rsi
callq 0x7fce
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
leaq 0xe8(%rsp), %rdi
callq 0x55e8
leaq 0x1cb5e(%rip), %rsi     # 0x228b3
leaq 0xe8(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x72ee
leaq 0x1b4a4(%rip), %rsi     # 0x21215
leaq 0x508(%rsp), %rdi
leaq 0x388(%rsp), %rdx
callq 0x72ee
leaq 0x1b493(%rip), %rsi     # 0x21220
leaq 0x430(%rsp), %r13
leaq 0x6f8(%rsp), %rdx
movq %r13, %rdi
callq 0x72ee
andq $0x0, 0x8(%rsp)
movq %r13, (%rsp)
leaq 0x5e0(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0x508(%rsp), %rdx
leaq 0xc8(%rsp), %rcx
xorl %r8d, %r8d
movl %r12d, %r9d
callq 0x806a
leaq 0x430(%rsp), %rdi
callq 0x55e8
leaq 0x508(%rsp), %rdi
callq 0x55e8
leaq 0xe8(%rsp), %r12
movq %r12, %rdi
callq 0x55e8
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %rax, (%r12)
movl $0x1, 0x8(%r12)
leaq 0x50(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
pushq $0x3
popq %rdx
leaq 0x508(%rsp), %rcx
callq 0x80d8
leaq 0x6f8(%rsp), %r12
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
callq 0x810e
leaq 0x1b3d5(%rip), %rsi     # 0x21224
leaq 0x200(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0x72ee
leaq 0x1b49f(%rip), %rsi     # 0x2130a
leaq 0x508(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x72ee
leaq 0x1b485(%rip), %rsi     # 0x2130c
leaq 0x430(%rsp), %rdi
leaq 0x388(%rsp), %rdx
callq 0x72ee
andq $0x0, 0x8(%rsp)
movq %r12, (%rsp)
leaq 0xe8(%rsp), %rdi
leaq 0x508(%rsp), %rsi
leaq 0x430(%rsp), %rdx
leaq 0x200(%rsp), %rcx
pushq $-0x1
popq %r9
xorl %r8d, %r8d
callq 0x8226
leaq 0x430(%rsp), %rdi
callq 0x55e8
leaq 0x508(%rsp), %rdi
callq 0x55e8
leaq 0x1b424(%rip), %rsi     # 0x21317
leaq 0x1e0(%rsp), %rdi
leaq 0x508(%rsp), %rdx
callq 0x72ee
leaq 0x1b30f(%rip), %rsi     # 0x2121e
leaq 0x430(%rsp), %rdi
leaq 0x388(%rsp), %rdx
callq 0x72ee
leaq 0x1b595(%rip), %rsi     # 0x214c0
leaq 0x2e0(%rsp), %rdi
leaq 0x6b8(%rsp), %rdx
callq 0x72ee
andq $0x0, 0x8(%rsp)
movq %r12, (%rsp)
leaq 0x508(%rsp), %rdi
leaq 0x430(%rsp), %rsi
leaq 0x2e0(%rsp), %rdx
leaq 0x1e0(%rsp), %rcx
pushq $-0x1
popq %r9
xorl %r8d, %r8d
callq 0x8226
leaq 0x2e0(%rsp), %rdi
callq 0x55e8
leaq 0x430(%rsp), %rdi
callq 0x55e8
leaq 0x1b534(%rip), %rsi     # 0x214cb
leaq 0x1c0(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x72ee
movups 0x1bf91(%rip), %xmm0    # 0x21f44
leaq 0x430(%rsp), %rsi
movaps %xmm0, (%rsi)
movl $0x3, 0x10(%rsi)
leaq 0x38(%rsp), %rdi
pushq $0x5
popq %rdx
leaq 0x2e0(%rsp), %rcx
callq 0x80d8
leaq 0x6b8(%rsp), %r12
leaq 0x38(%rsp), %rsi
movq %r12, %rdi
callq 0x810e
leaq 0x1b89c(%rip), %rsi     # 0x21892
leaq 0x2e0(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
callq 0x72ee
leaq 0x1b780(%rip), %rsi     # 0x21792
leaq 0x388(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x72ee
andq $0x0, 0x8(%rsp)
movq %r12, (%rsp)
leaq 0x430(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
leaq 0x388(%rsp), %rdx
leaq 0x1c0(%rsp), %rcx
pushq $-0x1
popq %r9
xorl %r8d, %r8d
callq 0x8226
leaq 0x388(%rsp), %rdi
callq 0x55e8
leaq 0x2e0(%rsp), %rdi
callq 0x55e8
leaq 0x1b724(%rip), %rsi     # 0x2179f
leaq 0xa8(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x72ee
leaq 0x1c560(%rip), %rsi     # 0x225f7
leaq 0x388(%rsp), %rdi
leaq 0x88(%rsp), %rdx
callq 0x72ee
leaq 0x1b79e(%rip), %rsi     # 0x21851
leaq 0x18(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x72ee
andq $0x0, (%rsp)
leaq 0x2e0(%rsp), %rdi
leaq 0x388(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0xa8(%rsp), %rcx
leaq 0x958(%rsp), %r8
xorl %r9d, %r9d
callq 0x8294
leaq 0x18(%rsp), %rdi
callq 0x55e8
leaq 0x388(%rsp), %rdi
callq 0x55e8
leaq 0x1b74e(%rip), %rsi     # 0x21860
leaq 0x18(%rsp), %rdi
leaq 0x388(%rsp), %rdx
callq 0x72ee
leaq 0x1b758(%rip), %rsi     # 0x21883
leaq 0x88(%rsp), %rdi
leaq 0x17(%rsp), %rdx
callq 0x72ee
leaq 0x1b741(%rip), %rsi     # 0x21885
leaq 0x68(%rsp), %rdi
leaq 0x16(%rsp), %rdx
callq 0x72ee
andq $0x0, (%rsp)
leaq 0x388(%rsp), %rdi
leaq 0x88(%rsp), %rsi
leaq 0x68(%rsp), %rdx
leaq 0x18(%rsp), %rcx
leaq 0x958(%rsp), %r8
xorl %r9d, %r9d
callq 0x8294
leaq 0x68(%rsp), %rdi
callq 0x55e8
leaq 0x88(%rsp), %rdi
callq 0x55e8
leaq 0x958(%rsp), %rdi
movq (%rdi), %rax
leaq 0x430(%rsp), %rsi
callq *0x18(%rax)
leaq 0x958(%rsp), %rdi
movq (%rdi), %rax
leaq 0x508(%rsp), %rsi
callq *0x18(%rax)
leaq 0x958(%rsp), %rdi
movq (%rdi), %rax
leaq 0xe8(%rsp), %rsi
callq *0x18(%rax)
leaq 0x958(%rsp), %rdi
movq (%rdi), %rax
leaq 0x5e0(%rsp), %rsi
callq *0x18(%rax)
leaq 0x958(%rsp), %rdi
movq (%rdi), %rax
leaq 0x848(%rsp), %rsi
callq *0x18(%rax)
leaq 0x958(%rsp), %rdi
movq (%rdi), %rax
leaq 0xa38(%rsp), %rsi
callq *0x18(%rax)
leaq 0x958(%rsp), %rdi
movq (%rdi), %rax
leaq 0xb28(%rsp), %rsi
callq *0x18(%rax)
leaq 0x958(%rsp), %rdi
movq (%rdi), %rax
leaq 0xc38(%rsp), %rsi
callq *0x18(%rax)
leaq 0x958(%rsp), %rdi
movl %ebp, %esi
movq %r14, %rdx
callq 0x8304
leaq 0xce0(%rsp), %rsi
leaq 0x40(%rbx), %rdi
callq 0x51d0
leaq 0xbd0(%rsp), %rsi
movq %rbx, %rdi
callq 0x51d0
leaq 0xae0(%rsp), %rsi
leaq 0xb8(%rbx), %rdi
callq 0x83bc
leaq 0x8f0(%rsp), %rsi
leaq 0x60(%rbx), %rdi
callq 0x51d0
leaq 0x7e0(%rsp), %rsi
leaq 0x80(%rbx), %rdi
callq 0x51d0
leaq 0x5e0(%rsp), %r14
movl 0xa4(%r14), %eax
cmpl %r15d, %eax
movl %r15d, %ecx
cmovll %eax, %ecx
testl %eax, %eax
cmovlel %r15d, %ecx
movl %ecx, 0xa0(%rbx)
leaq 0xe8(%rsp), %r15
movl 0xa4(%r15), %eax
movl %eax, 0xa4(%rbx)
leaq 0x508(%rsp), %r12
movl 0xa4(%r12), %eax
movl %eax, 0xa8(%rbx)
leaq 0x430(%rsp), %r13
movl 0xa4(%r13), %eax
movl %eax, 0xac(%rbx)
leaq 0x2e0(%rsp), %rbp
movb 0xa3(%rbp), %al
movb %al, 0xb0(%rbx)
leaq 0x388(%rsp), %rdi
movb 0xa3(%rdi), %al
xorb $0x1, %al
movb %al, 0xd0(%rbx)
callq 0x8e24
leaq 0x18(%rsp), %rdi
callq 0x55e8
movq %rbp, %rdi
callq 0x8e24
leaq 0xa8(%rsp), %rdi
callq 0x55e8
movq %r13, %rdi
callq 0x8486
leaq 0x6b8(%rsp), %rdi
callq 0x84aa
leaq 0x38(%rsp), %rdi
callq 0xce14
leaq 0x1c0(%rsp), %rdi
callq 0x55e8
movq %r12, %rdi
callq 0x8486
leaq 0x1e0(%rsp), %rdi
callq 0x55e8
movq %r15, %rdi
callq 0x8486
leaq 0x200(%rsp), %rdi
callq 0x55e8
leaq 0x6f8(%rsp), %rdi
callq 0x84aa
leaq 0x50(%rsp), %rdi
callq 0xce14
movq %r14, %rdi
callq 0x8486
leaq 0xc8(%rsp), %rdi
callq 0x55e8
leaq 0x738(%rsp), %rdi
callq 0x84d6
leaq 0x848(%rsp), %rdi
callq 0x84d6
leaq 0xa38(%rsp), %rdi
callq 0x8512
leaq 0xb28(%rsp), %rdi
callq 0x84d6
leaq 0xc38(%rsp), %rdi
callq 0x84d6
leaq 0x958(%rsp), %rdi
callq 0x7c90
leaq 0x2a0(%rsp), %rdi
callq 0x55e8
leaq 0x2c0(%rsp), %rdi
callq 0x55e8
movb $0x1, %al
addq $0xd48, %rsp            # imm = 0xD48
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %r14
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x55e8
jmp 0x647d
movq %rdx, %r14
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x55e8
jmp 0x68c9
movq %rdx, %r14
movq %rax, %rbx
jmp 0x68c9
movq %rdx, %r14
movq %rax, %rbx
jmp 0x68d3
movq %rdx, %r14
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x55e8
jmp 0x64bd
movq %rdx, %r14
movq %rax, %rbx
leaq 0x388(%rsp), %rdi
callq 0x55e8
jmp 0x68e0
movq %rdx, %r14
movq %rax, %rbx
jmp 0x68e0
movq %rdx, %r14
movq %rax, %rbx
jmp 0x68ed
movq %rdx, %r14
movq %rax, %rbx
leaq 0x388(%rsp), %rdi
callq 0x55e8
jmp 0x6500
movq %rdx, %r14
movq %rax, %rbx
leaq 0x2e0(%rsp), %rdi
callq 0x55e8
jmp 0x68fa
movq %rdx, %r14
movq %rax, %rbx
jmp 0x68fa
movq %rdx, %r14
movq %rax, %rbx
jmp 0x6907
movq %rdx, %r14
movq %rax, %rbx
jmp 0x6911
movq %rdx, %r14
movq %rax, %rbx
jmp 0x691e
movq %rdx, %r14
movq %rax, %rbx
leaq 0x2e0(%rsp), %rdi
callq 0x55e8
jmp 0x6559
movq %rdx, %r14
movq %rax, %rbx
leaq 0x430(%rsp), %rdi
callq 0x55e8
jmp 0x692b
movq %rdx, %r14
movq %rax, %rbx
jmp 0x692b
movq %rdx, %r14
movq %rax, %rbx
jmp 0x6938
movq %rdx, %r14
movq %rax, %rbx
leaq 0x430(%rsp), %rdi
callq 0x55e8
jmp 0x659c
movq %rdx, %r14
movq %rax, %rbx
leaq 0x508(%rsp), %rdi
callq 0x55e8
jmp 0x6945
movq %rdx, %r14
movq %rax, %rbx
jmp 0x6945
movq %rdx, %r14
movq %rax, %rbx
jmp 0x6952
movq %rdx, %r14
movq %rax, %rbx
jmp 0x695f
movq %rdx, %r14
movq %rax, %rbx
jmp 0x6969
movq %rdx, %r14
movq %rax, %rbx
leaq 0x430(%rsp), %rdi
callq 0x55e8
jmp 0x65f5
movq %rdx, %r14
movq %rax, %rbx
leaq 0x508(%rsp), %rdi
callq 0x55e8
jmp 0x660a
movq %rdx, %r14
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x55e8
jmp 0x6976
movq %rdx, %r14
movq %rax, %rbx
jmp 0x6976
movq %rdx, %r14
movq %rax, %rbx
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
jmp 0x6642
movq %rdx, %r14
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
jmp 0x697e
movq %rdx, %r14
movq %rax, %rbx
jmp 0x6983
movq %rdx, %r14
movq %rax, %rbx
leaq 0x430(%rsp), %rdi
callq 0x55e8
jmp 0x6675
movq %rdx, %r14
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x55e8
jmp 0x668a
movq %rdx, %r14
movq %rax, %rbx
leaq 0x508(%rsp), %rdi
callq 0x55e8
jmp 0x669f
movq %rdx, %r14
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x55e8
jmp 0x66b4
movq %rdx, %r14
movq %rax, %rbx
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
jmp 0x6990
movq %rdx, %r14
movq %rax, %rbx
jmp 0x6990
movq %rdx, %r14
movq %rax, %rbx
leaq 0x508(%rsp), %rdi
callq 0x55e8
jmp 0x66ec
movq %rdx, %r14
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0x55e8
jmp 0x6701
movq %rdx, %r14
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x55e8
jmp 0x6716
movq %rdx, %r14
movq %rax, %rbx
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
jmp 0x672b
movq %rdx, %r14
movq %rax, %rbx
leaq 0x738(%rsp), %rdi
callq 0x55e8
jmp 0x699d
movq %rdx, %r14
movq %rax, %rbx
jmp 0x699d
movq %rdx, %r14
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x55e8
jmp 0x6763
movq %rdx, %r14
movq %rax, %rbx
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
jmp 0x6778
movq %rdx, %r14
movq %rax, %rbx
leaq 0x738(%rsp), %rdi
callq 0x55e8
jmp 0x678d
movq %rdx, %r14
movq %rax, %rbx
leaq 0x848(%rsp), %rdi
callq 0x55e8
jmp 0x69aa
movq %rdx, %r14
movq %rax, %rbx
jmp 0x69aa
movq %rdx, %r14
movq %rax, %rbx
leaq 0x5e0(%rsp), %rdi
callq 0x55e8
jmp 0x67c5
movq %rdx, %r14
movq %rax, %rbx
leaq 0x260(%rsp), %rdi
callq 0x55e8
jmp 0x67da
movq %rdx, %r14
movq %rax, %rbx
leaq 0xa38(%rsp), %rdi
callq 0x55e8
jmp 0x67ef
movq %rdx, %r14
movq %rax, %rbx
leaq 0x738(%rsp), %rdi
callq 0x55e8
jmp 0x6804
movq %rdx, %r14
movq %rax, %rbx
leaq 0x848(%rsp), %rdi
callq 0x55e8
jmp 0x69b7
movq %rdx, %r14
movq %rax, %rbx
jmp 0x69b7
movq %rdx, %r14
movq %rax, %rbx
leaq 0xa38(%rsp), %rdi
callq 0x55e8
jmp 0x683c
movq %rdx, %r14
movq %rax, %rbx
leaq 0x280(%rsp), %rdi
callq 0x55e8
jmp 0x6851
movq %rdx, %r14
movq %rax, %rbx
leaq 0x738(%rsp), %rdi
callq 0x55e8
jmp 0x6866
movq %rdx, %r14
movq %rax, %rbx
leaq 0x848(%rsp), %rdi
callq 0x55e8
jmp 0x687b
movq %rdx, %r14
movq %rax, %rbx
leaq 0xb28(%rsp), %rdi
callq 0x55e8
jmp 0x69c4
movq %rdx, %r14
movq %rax, %rbx
jmp 0x69c4
movq %rdx, %r14
movq %rax, %rbx
jmp 0x69d1
movq %rdx, %r14
movq %rax, %rbx
jmp 0x69de
movq %rax, %rbx
jmp 0x6ac7
movq %rdx, %r14
movq %rax, %rbx
leaq 0x388(%rsp), %rdi
callq 0x8e24
leaq 0x18(%rsp), %rdi
callq 0x55e8
leaq 0x2e0(%rsp), %rdi
callq 0x8e24
leaq 0xa8(%rsp), %rdi
callq 0x55e8
leaq 0x430(%rsp), %rdi
callq 0x8486
leaq 0x6b8(%rsp), %rdi
callq 0x84aa
leaq 0x38(%rsp), %rdi
callq 0xce14
leaq 0x1c0(%rsp), %rdi
callq 0x55e8
leaq 0x508(%rsp), %rdi
callq 0x8486
leaq 0x1e0(%rsp), %rdi
callq 0x55e8
leaq 0xe8(%rsp), %rdi
callq 0x8486
leaq 0x200(%rsp), %rdi
callq 0x55e8
leaq 0x6f8(%rsp), %rdi
callq 0x84aa
leaq 0x50(%rsp), %rdi
callq 0xce14
leaq 0x5e0(%rsp), %rdi
callq 0x8486
leaq 0xc8(%rsp), %rdi
callq 0x55e8
leaq 0x738(%rsp), %rdi
callq 0x84d6
leaq 0x848(%rsp), %rdi
callq 0x84d6
leaq 0xa38(%rsp), %rdi
callq 0x8512
leaq 0xb28(%rsp), %rdi
callq 0x84d6
leaq 0xc38(%rsp), %rdi
callq 0x84d6
leaq 0x958(%rsp), %rdi
callq 0x7c90
leaq 0x2a0(%rsp), %rdi
callq 0x55e8
cmpl $0x1, %r14d
jne 0x6aba
movq %rbx, %rdi
callq 0x5130
movq %rax, %rbx
movq 0x295f6(%rip), %rdi     # 0x2fff0
leaq 0x1ae93(%rip), %rsi     # 0x21894
callq 0x52f0
movq %rax, %r14
leaq 0x8(%rbx), %rsi
leaq 0xc38(%rsp), %rdi
callq 0x53f0
leaq 0xc38(%rsp), %rsi
movq %r14, %rdi
callq 0x52c0
leaq 0x1ae6b(%rip), %rsi     # 0x2189c
movq %rax, %rdi
callq 0x52f0
movq %rax, %r14
leaq 0xb28(%rsp), %rdi
movq %rbx, %rsi
callq 0x8542
leaq 0xb28(%rsp), %rsi
movq %r14, %rdi
callq 0x52c0
leaq 0x1a609(%rip), %rsi     # 0x2106c
movq %rax, %rdi
callq 0x52f0
leaq 0xb28(%rsp), %rdi
callq 0x55e8
leaq 0xc38(%rsp), %rdi
callq 0x55e8
callq 0x51e0
movq %rax, %rbx
leaq 0xb28(%rsp), %rdi
callq 0x55e8
jmp 0x6aa1
jmp 0x6a9e
movq %rax, %rbx
leaq 0xc38(%rsp), %rdi
callq 0x55e8
jmp 0x6ab5
jmp 0x6ab2
movq %rax, %rbx
callq 0x54e0
leaq 0x2c0(%rsp), %rdi
callq 0x55e8
movq %rbx, %rdi
callq 0x5540
movq %rax, %rdi
callq 0x7c3a