// File: /workspace/github_cpp_makefile_star2_O1/zeeev[P]DASVC/bamtools/src/toolkit/bamtools_resolve.cpp
// Function: BamTools::ResolveTool::ResolveTool()
ResolveTool::ResolveTool(void)
    : AbstractTool()
    , m_settings(new ResolveSettings)
    , m_impl(0)
{
    // set description texts
    const string programDescription = "resolves paired-end reads (marking the IsProperPair flag as needed)";
    const string programUsage = "<mode> [options] [-in <filename>] [-out <filename> | [-forceCompression] ] [-stats <filename>]";
    const string inputBamDescription = "the input BAM file(s)";
    const string outputBamDescription = "the output BAM file";
    const string statsFileDescription = "input/output stats file, depending on selected mode (see below). "
            "This file is human-readable, storing fragment length data generated per read group, as well as "
            "the options used to configure the -makeStats mode";
    const string forceCompressionDescription = "if results are sent to stdout (like when piping to another tool), "
            "default behavior is to leave output uncompressed."
            "Use this flag to override and force compression. This feature is disabled in -makeStats mode.";
    const string makeStatsDescription = "generates a fragment-length stats file from the input BAM. "
            "Data is written to file specified using the -stats option. "
            "MarkPairs Mode Settings are DISABLED.";
    const string markPairsDescription = "generates an output BAM with alignments marked with proper-pair status. "
            "Stats data is read from file specified using the -stats option. "
            "MakeStats Mode Settings are DISABLED";
    const string twoPassDescription = "combines the -makeStats & -markPairs modes into a single command. "
            "However, due to the two-pass nature of paired-end resolution, piping BAM data via stdin is DISABLED. "
            "You must supply an explicit input BAM file. Output BAM may be piped to stdout, however, if desired. "
            "All MakeStats & MarkPairs Mode Settings are available. "
            "The intermediate stats file is not necessary, but if the -stats options is used, then one will be generated. "
            "You may find this useful for documentation purposes.";
    const string minMapQualDescription = "minimum map quality. Used in -makeStats mode as a heuristic for determining a mate's "
            "uniqueness. Used in -markPairs mode as a filter for marking candidate proper pairs.";
    const string confidenceIntervalDescription = "confidence interval. Set min/max fragment lengths such that we capture "
            "this fraction of pairs";
    const string unusedModelThresholdDescription = "unused model threshold. The resolve tool considers 8 possible orientation models "
            "for pairs. The top 2 are selected for later use when actually marking alignments. This value determines the "
            "cutoff for marking a read group as ambiguous. Meaning that if the ratio of the number of alignments from bottom 6 models "
            "to the top 2 is greater than this threshold, then the read group is flagged as ambiguous. By default, NO alignments "
            "from ambiguous read groups will be marked as proper pairs. You may override this behavior with the -force option "
            "in -markPairs mode";
    const string forceMarkDescription = "forces all read groups to be marked according to their top 2 'orientation models'. "
            "When generating stats, the 2 (out of 8 possible) models with the most observations are chosen as the top models for each read group. "
            "If the remaining 6 models account for more than some threshold ([default=10%], see -umt), then the read group is marked as ambiguous. "
            "The default behavior is that for an ambiguous read group, NONE of its alignments are marked as proper-pairs. "
            "By setting this option, a read group's ambiguity flag will be ignored, and all of its alignments will be compared to the top 2 models.";

    // set program details
    Options::SetProgramInfo("bamtools resolve", programDescription, programUsage);

    // set up I/O options
    OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
    Options::AddValueOption("-in",  "BAM filename", inputBamDescription, "",
                            m_settings->HasInputBamFile, m_settings->InputBamFilename,
                            IO_Opts, Options::StandardIn());
    Options::AddValueOption("-out", "BAM filename", outputBamDescription, "",
                            m_settings->HasOutputBamFile, m_settings->OutputBamFilename,
                            IO_Opts, Options::StandardOut());
    Options::AddValueOption("-stats", "STATS filename", statsFileDescription, "",
                            m_settings->HasStatsFile, m_settings->StatsFilename, IO_Opts);
    Options::AddOption("-forceCompression", forceCompressionDescription,
                       m_settings->IsForceCompression, IO_Opts);

    OptionGroup* ModeOpts = Options::CreateOptionGroup("Resolve Modes (must select ONE of the following)");
    Options::AddOption("-makeStats", makeStatsDescription, m_settings->IsMakeStats, ModeOpts);
    Options::AddOption("-markPairs", markPairsDescription, m_settings->IsMarkPairs, ModeOpts);
    Options::AddOption("-twoPass",   twoPassDescription,   m_settings->IsTwoPass,   ModeOpts);

    OptionGroup* GeneralOpts = Options::CreateOptionGroup("General Resolve Options (available in all modes)");
    Options::AddValueOption("-minMQ", "unsigned short", minMapQualDescription, "",
                            m_settings->HasMinimumMapQuality, m_settings->MinimumMapQuality, GeneralOpts);

    OptionGroup* MakeStatsOpts = Options::CreateOptionGroup("MakeStats Mode Options (disabled in -markPairs mode)");
    Options::AddValueOption("-ci", "double", confidenceIntervalDescription, "",
                            m_settings->HasConfidenceInterval, m_settings->ConfidenceInterval, MakeStatsOpts);
    Options::AddValueOption("-umt", "double", unusedModelThresholdDescription, "",
                            m_settings->HasUnusedModelThreshold, m_settings->UnusedModelThreshold, MakeStatsOpts);

    OptionGroup* MarkPairsOpts = Options::CreateOptionGroup("MarkPairs Mode Options (disabled in -makeStats mode)");
    Options::AddOption("-force", forceMarkDescription, m_settings->HasForceMarkReadGroups, MarkPairsOpts);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x218, %rsp            # imm = 0x218
movq %rdi, %rbx
leaq 0x45f35(%rip), %rax     # 0x8fa88
movq %rax, (%rdi)
movl $0xa8, %edi
callq 0x275c0
movq %rax, %r14
movq %rax, %rdi
callq 0x4b038
movq %r14, 0x8(%rbx)
movq $0x0, 0x10(%rbx)
leaq 0x208(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b0ed(%rip), %rsi     # 0x74c77
leaq 0x2b129(%rip), %rdx     # 0x74cba
leaq 0x1f8(%rsp), %rdi
callq 0x2f1b2
leaq 0x1e8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b10a(%rip), %rsi     # 0x74cbb
leaq 0x2b161(%rip), %rdx     # 0x74d19
leaq 0x1d8(%rsp), %rdi
callq 0x2f1b2
leaq 0x1c8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x28959(%rip), %rsi     # 0x72531
leaq 0x28967(%rip), %rdx     # 0x72546
leaq 0x1b8(%rsp), %rdi
callq 0x2f1b2
leaq 0x1a8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2897e(%rip), %rsi     # 0x7257d
leaq 0x2898a(%rip), %rdx     # 0x72590
leaq 0x198(%rsp), %rdi
callq 0x2f1b2
leaq 0x188(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b0f4(%rip), %rsi     # 0x74d1a
leaq 0x2b1be(%rip), %rdx     # 0x74deb
leaq 0x178(%rsp), %rdi
callq 0x2f1b2
leaq 0x168(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b19f(%rip), %rsi     # 0x74dec
leaq 0x2b268(%rip), %rdx     # 0x74ebc
leaq 0x158(%rsp), %rdi
callq 0x2f1b2
leaq 0x148(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b249(%rip), %rsi     # 0x74ebd
leaq 0x2b2dd(%rip), %rdx     # 0x74f58
leaq 0x138(%rsp), %rdi
callq 0x2f1b2
leaq 0x128(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b2be(%rip), %rsi     # 0x74f59
leaq 0x2b363(%rip), %rdx     # 0x75005
leaq 0x118(%rsp), %rdi
callq 0x2f1b2
leaq 0x108(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b344(%rip), %rsi     # 0x75006
leaq 0x2b520(%rip), %rdx     # 0x751e9
leaq 0xf8(%rsp), %rdi
callq 0x2f1b2
leaq 0xe8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b501(%rip), %rsi     # 0x751ea
leaq 0x2b5a2(%rip), %rdx     # 0x75292
leaq 0xd8(%rsp), %rdi
callq 0x2f1b2
leaq 0xc8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b583(%rip), %rsi     # 0x75293
leaq 0x2b5d9(%rip), %rdx     # 0x752f0
leaq 0xb8(%rsp), %rdi
callq 0x2f1b2
leaq 0xa8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b5ba(%rip), %rsi     # 0x752f1
leaq 0x2b7e0(%rip), %rdx     # 0x7551e
leaq 0x98(%rsp), %rdi
callq 0x2f1b2
leaq 0x88(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b7c1(%rip), %rsi     # 0x7551f
leaq 0x2ba0b(%rip), %rdx     # 0x75770
leaq 0x78(%rsp), %rdi
callq 0x2f1b2
leaq 0x28(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2b9f2(%rip), %rsi     # 0x75771
leaq 0x2b9fb(%rip), %rdx     # 0x75781
leaq 0x18(%rsp), %rdi
callq 0x2f1b2
leaq 0x18(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
leaq 0x1d8(%rsp), %rdx
callq 0x646a4
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x49db9
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x28749(%rip), %rsi     # 0x72511
leaq 0x28750(%rip), %rdx     # 0x7251f
callq 0x2f1b2
leaq 0x18(%rsp), %rdi
callq 0x63a0c
movq %rax, %r14
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x49df0
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x28721(%rip), %rsi     # 0x72520
leaq 0x2871d(%rip), %rdx     # 0x72523
callq 0x2f1b2
leaq 0x68(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x28709(%rip), %rsi     # 0x72524
leaq 0x2870e(%rip), %rdx     # 0x72530
leaq 0x58(%rsp), %rdi
callq 0x2f1b2
leaq 0x48(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x2d9de(%rip), %rdx     # 0x7781b
leaq 0x38(%rsp), %rdi
movq %rdx, %rsi
callq 0x2f1b2
movq 0x8(%rbx), %r15
callq 0x646e2
leaq 0x10(%r15), %r9
addq $0x3, %r15
movq %rax, 0x8(%rsp)
movq %r14, (%rsp)
leaq 0x18(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x1b8(%rsp), %rdx
leaq 0x38(%rsp), %rcx
movq %r15, %r8
callq 0x2ebcc
movq 0x38(%rsp), %rdi
cmpq %r12, %rdi
je 0x49e92
callq 0x27560
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x49ea1
callq 0x27560
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x49eb0
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x286b9(%rip), %rsi     # 0x72578
leaq 0x286b6(%rip), %rdx     # 0x7257c
callq 0x2f1b2
leaq 0x58(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x2864a(%rip), %rsi     # 0x72524
leaq 0x2864f(%rip), %rdx     # 0x72530
callq 0x2f1b2
leaq 0x38(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d926(%rip), %rdx     # 0x7781b
movq %rdx, %rsi
callq 0x2f1b2
movq 0x8(%rbx), %r15
callq 0x646ea
leaq 0x30(%r15), %r9
addq $0x4, %r15
movq %rax, 0x8(%rsp)
movq %r14, (%rsp)
leaq 0x18(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x198(%rsp), %rdx
leaq 0x38(%rsp), %rcx
movq %r15, %r8
callq 0x2ebcc
movq 0x38(%rsp), %rdi
cmpq %r12, %rdi
je 0x49f45
callq 0x27560
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x49f54
callq 0x27560
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x49f63
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b810(%rip), %rsi     # 0x75782
leaq 0x2b80f(%rip), %rdx     # 0x75788
callq 0x2f1b2
leaq 0x58(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x2b7fc(%rip), %rsi     # 0x75789
leaq 0x2b803(%rip), %rdx     # 0x75797
callq 0x2f1b2
leaq 0x38(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d873(%rip), %rdx     # 0x7781b
movq %rdx, %rsi
callq 0x2f1b2
movq 0x8(%rbx), %r9
leaq 0x5(%r9), %r8
addq $0x50, %r9
movq %r14, (%rsp)
leaq 0x18(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x178(%rsp), %rdx
leaq 0x38(%rsp), %rcx
callq 0x2e8ba
movq 0x38(%rsp), %rdi
cmpq %r12, %rdi
je 0x49feb
callq 0x27560
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x49ffa
callq 0x27560
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a009
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x290df(%rip), %rsi     # 0x730f7
leaq 0x290e9(%rip), %rdx     # 0x73108
callq 0x2f1b2
movq 0x8(%rbx), %rdx
addq $0x6, %rdx
leaq 0x18(%rsp), %rdi
leaq 0x158(%rsp), %rsi
movq %r14, %rcx
callq 0x63808
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a050
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b739(%rip), %rsi     # 0x75798
leaq 0x2b762(%rip), %rdx     # 0x757c8
callq 0x2f1b2
leaq 0x18(%rsp), %rdi
callq 0x63a0c
movq %rax, %r14
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a087
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b733(%rip), %rsi     # 0x757c9
leaq 0x2b736(%rip), %rdx     # 0x757d3
callq 0x2f1b2
movq 0x8(%rbx), %rdx
leaq 0x18(%rsp), %rdi
leaq 0x138(%rsp), %rsi
movq %r14, %rcx
callq 0x63808
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a0ca
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b6fb(%rip), %rsi     # 0x757d4
leaq 0x2b6fe(%rip), %rdx     # 0x757de
callq 0x2f1b2
movq 0x8(%rbx), %rdx
incq %rdx
leaq 0x18(%rsp), %rdi
leaq 0x118(%rsp), %rsi
movq %r14, %rcx
callq 0x63808
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a110
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b6c0(%rip), %rsi     # 0x757df
leaq 0x2b6c1(%rip), %rdx     # 0x757e7
callq 0x2f1b2
movq 0x8(%rbx), %rdx
addq $0x2, %rdx
leaq 0x18(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
movq %r14, %rcx
callq 0x63808
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a157
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b682(%rip), %rsi     # 0x757e8
leaq 0x2b6ab(%rip), %rdx     # 0x75818
callq 0x2f1b2
leaq 0x18(%rsp), %rdi
callq 0x63a0c
movq %rax, %r14
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a18e
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b67c(%rip), %rsi     # 0x75819
leaq 0x2b67b(%rip), %rdx     # 0x7581f
callq 0x2f1b2
leaq 0x58(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x2b668(%rip), %rsi     # 0x75820
leaq 0x2b66f(%rip), %rdx     # 0x7582e
callq 0x2f1b2
leaq 0x38(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d648(%rip), %rdx     # 0x7781b
movq %rdx, %rsi
callq 0x2f1b2
movq 0x8(%rbx), %r9
leaq 0x9(%r9), %r8
addq $0x98, %r9
movq %r14, (%rsp)
leaq 0x18(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
leaq 0x38(%rsp), %rcx
callq 0x4b15e
movq 0x38(%rsp), %rdi
cmpq %r12, %rdi
je 0x4a219
callq 0x27560
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4a228
callq 0x27560
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a237
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b5e9(%rip), %rsi     # 0x7582f
leaq 0x2b616(%rip), %rdx     # 0x75863
callq 0x2f1b2
leaq 0x18(%rsp), %rdi
callq 0x63a0c
movq %rax, %r14
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a26e
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b5e7(%rip), %rsi     # 0x75864
leaq 0x2b5e3(%rip), %rdx     # 0x75867
callq 0x2f1b2
leaq 0x58(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x2d499(%rip), %rsi     # 0x77731
leaq 0x2d498(%rip), %rdx     # 0x77737
callq 0x2f1b2
leaq 0x38(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d568(%rip), %rdx     # 0x7781b
movq %rdx, %rsi
callq 0x2f1b2
movq 0x8(%rbx), %r9
leaq 0x7(%r9), %r8
addq $0x90, %r9
movq %r14, (%rsp)
leaq 0x18(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
leaq 0x38(%rsp), %rcx
callq 0x4b3d6
movq 0x38(%rsp), %rdi
cmpq %r12, %rdi
je 0x4a2f9
callq 0x27560
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4a308
callq 0x27560
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a317
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b542(%rip), %rsi     # 0x75868
leaq 0x2b53f(%rip), %rdx     # 0x7586c
callq 0x2f1b2
leaq 0x58(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x2d3f0(%rip), %rsi     # 0x77731
leaq 0x2d3ef(%rip), %rdx     # 0x77737
callq 0x2f1b2
leaq 0x38(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d4bf(%rip), %rdx     # 0x7781b
movq %rdx, %rsi
callq 0x2f1b2
movq 0x8(%rbx), %r9
leaq 0xa(%r9), %r8
addq $0xa0, %r9
movq %r14, (%rsp)
leaq 0x18(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x98(%rsp), %rdx
leaq 0x38(%rsp), %rcx
callq 0x4b3d6
movq 0x38(%rsp), %rdi
cmpq %r12, %rdi
je 0x4a3a2
callq 0x27560
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4a3b1
callq 0x27560
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a3c0
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b49e(%rip), %rsi     # 0x7586d
leaq 0x2b4cb(%rip), %rdx     # 0x758a1
callq 0x2f1b2
leaq 0x18(%rsp), %rdi
callq 0x63a0c
movq %rax, %r14
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a3f7
callq 0x27560
leaq 0x18(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2b49c(%rip), %rsi     # 0x758a2
leaq 0x2b49b(%rip), %rdx     # 0x758a8
callq 0x2f1b2
movq 0x8(%rbx), %rdx
addq $0x8, %rdx
leaq 0x18(%rsp), %rdi
leaq 0x78(%rsp), %rsi
movq %r14, %rcx
callq 0x63808
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a43b
callq 0x27560
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
leaq 0x208(%rsp), %rbx
leaq 0x1e8(%rsp), %r14
leaq 0x1c8(%rsp), %r15
je 0x4a46a
callq 0x27560
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a484
callq 0x27560
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a49e
callq 0x27560
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a4b8
callq 0x27560
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x4a4d2
callq 0x27560
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x4a4ec
callq 0x27560
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x4a506
callq 0x27560
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x4a520
callq 0x27560
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x4a53a
callq 0x27560
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a554
callq 0x27560
movq 0x1b8(%rsp), %rdi
cmpq %r15, %rdi
je 0x4a566
callq 0x27560
movq 0x1d8(%rsp), %rdi
cmpq %r14, %rdi
je 0x4a578
callq 0x27560
movq 0x1f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4a58a
callq 0x27560
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a687
jmp 0x4a5f2
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a687
jmp 0x4a5f2
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a687
jmp 0x4a5f2
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a687
jmp 0x4a5f2
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a5f2
jmp 0x4a602
jmp 0x4a60a
movq %rax, %rbx
jmp 0x4a699
jmp 0x4a602
jmp 0x4a60a
jmp 0x4a602
jmp 0x4a60a
movq %rax, %rbx
jmp 0x4a6a8
movq %rax, %rbx
jmp 0x4a6b7
movq %rax, %rbx
jmp 0x4a6ce
movq %rax, %rbx
jmp 0x4a6e8
movq %rax, %rbx
jmp 0x4a702
movq %rax, %rbx
jmp 0x4a71c
movq %rax, %rbx
jmp 0x4a736
movq %rax, %rbx
jmp 0x4a750
movq %rax, %rbx
jmp 0x4a76a
movq %rax, %rbx
jmp 0x4a784
movq %rax, %rbx
jmp 0x4a79e
movq %rax, %rbx
jmp 0x4a7b8
movq %rax, %rbx
jmp 0x4a7d2
movq %rax, %rbx
jmp 0x4a7ec
movq %rax, %rbx
jmp 0x4a806
movq %rax, %rbx
movq %r14, %rdi
jmp 0x4a801
jmp 0x4a687
movq %rax, %rbx
movq 0x38(%rsp), %rdi
cmpq %r12, %rdi
je 0x4a699
callq 0x27560
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4a6a8
callq 0x27560
movq 0x18(%rsp), %rdi
cmpq %r13, %rdi
je 0x4a6b7
callq 0x27560
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x4a6ce
callq 0x27560
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a6e8
callq 0x27560
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a702
callq 0x27560
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a71c
callq 0x27560
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x4a736
callq 0x27560
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x4a750
callq 0x27560
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x4a76a
callq 0x27560
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x4a784
callq 0x27560
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x4a79e
callq 0x27560
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a7b8
callq 0x27560
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a7d2
callq 0x27560
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x4a7ec
callq 0x27560
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x4a806
callq 0x27560
movq %rbx, %rdi
callq 0x27b20