// File: /workspace/github_cpp_makefile_star2_O3/zeeev[P]DASVC/bamtools/src/toolkit/bamtools_merge.cpp
// Function: BamTools::MergeTool::MergeTool()
MergeTool::MergeTool(void)
    : AbstractTool()
    , m_settings(new MergeSettings)
    , m_impl(0)
{
    // set program details
    Options::SetProgramInfo("bamtools merge", "merges multiple BAM files into one",
                            "[-in <filename> -in <filename> ... | -list <filelist>] [-out <filename> | [-forceCompression]] [-region <REGION>]");
    
    // set up options 
    OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
    Options::AddValueOption("-in",  "BAM filename", "the input BAM file(s)", "", m_settings->HasInput,  m_settings->InputFiles,     IO_Opts);
    Options::AddValueOption("-list",  "filename", "the input BAM file list, one line per file", "", m_settings->HasInputFilelist,  m_settings->InputFilelist, IO_Opts);
    Options::AddValueOption("-out", "BAM filename", "the output BAM file",   "", m_settings->HasOutput, m_settings->OutputFilename, IO_Opts);
    Options::AddOption("-forceCompression", "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", m_settings->IsForceCompression, IO_Opts);
    Options::AddValueOption("-region", "REGION", "genomic region. See README for more details", "", m_settings->HasRegion, m_settings->Region, IO_Opts);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
leaq 0x4aa0d(%rip), %rax     # 0x8e9f8
movq %rax, (%rdi)
movl $0x80, %edi
callq 0x275c0
movq %rax, %r14
movq %rax, %rdi
callq 0x44634
movq %r14, 0x8(%rbx)
movq $0x0, 0x10(%rbx)
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2eb31(%rip), %rsi     # 0x72b50
leaq 0x2eb38(%rip), %rdx     # 0x72b5e
leaq 0x8(%rsp), %rdi
callq 0x2f1a0
leaq 0x38(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x2eb1e(%rip), %rsi     # 0x72b5f
leaq 0x2eb39(%rip), %rdx     # 0x72b81
leaq 0x28(%rsp), %rdi
callq 0x2f1a0
leaq 0x58(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2eb20(%rip), %rsi     # 0x72b82
leaq 0x2eb8a(%rip), %rdx     # 0x72bf3
leaq 0x48(%rsp), %rdi
callq 0x2f1a0
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x48(%rsp), %rdx
callq 0x64164
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x44096
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x440a5
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x440b4
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2d44e(%rip), %rsi     # 0x71511
leaq 0x2d455(%rip), %rdx     # 0x7151f
callq 0x2f1a0
leaq 0x8(%rsp), %rdi
callq 0x634cc
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x440eb
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2d426(%rip), %rsi     # 0x71520
leaq 0x2d422(%rip), %rdx     # 0x71523
callq 0x2f1a0
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d40f(%rip), %rsi     # 0x71524
leaq 0x2d414(%rip), %rdx     # 0x71530
callq 0x2f1a0
leaq 0x48(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2d401(%rip), %rsi     # 0x71531
leaq 0x2d40f(%rip), %rdx     # 0x71546
callq 0x2f1a0
leaq 0x78(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x326cb(%rip), %rdx     # 0x76817
leaq 0x68(%rsp), %rdi
movq %rdx, %rsi
callq 0x2f1a0
movq 0x8(%rbx), %r8
leaq 0x8(%r8), %r9
movq %r14, (%rsp)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x48(%rsp), %rdx
leaq 0x68(%rsp), %rcx
callq 0x446d2
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4418d
callq 0x27560
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x4419c
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x441ab
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x441ba
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2d37e(%rip), %rsi     # 0x71547
leaq 0x2d37c(%rip), %rdx     # 0x7154c
callq 0x2f1a0
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d422(%rip), %rsi     # 0x71606
leaq 0x2d423(%rip), %rdx     # 0x7160e
callq 0x2f1a0
leaq 0x48(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2d34e(%rip), %rsi     # 0x7154d
leaq 0x2d371(%rip), %rdx     # 0x71577
callq 0x2f1a0
leaq 0x68(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x325fd(%rip), %rdx     # 0x76817
movq %rdx, %rsi
callq 0x2f1a0
movq 0x8(%rbx), %r9
leaq 0x1(%r9), %r8
addq $0x20, %r9
movq %r14, (%rsp)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x48(%rsp), %rdx
leaq 0x68(%rsp), %rcx
callq 0x2e8c0
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4425a
callq 0x27560
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x44269
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x44278
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x44287
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2d2e2(%rip), %rsi     # 0x71578
leaq 0x2d2df(%rip), %rdx     # 0x7157c
callq 0x2f1a0
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d273(%rip), %rsi     # 0x71524
leaq 0x2d278(%rip), %rdx     # 0x71530
callq 0x2f1a0
leaq 0x48(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2d2b1(%rip), %rsi     # 0x7157d
leaq 0x2d2bd(%rip), %rdx     # 0x71590
callq 0x2f1a0
leaq 0x68(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x32530(%rip), %rdx     # 0x76817
movq %rdx, %rsi
callq 0x2f1a0
movq 0x8(%rbx), %r9
leaq 0x2(%r9), %r8
addq $0x40, %r9
movq %r14, (%rsp)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x48(%rsp), %rdx
leaq 0x68(%rsp), %rcx
callq 0x2e8c0
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x44327
callq 0x27560
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x44336
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x44345
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x44354
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2dd94(%rip), %rsi     # 0x720f7
leaq 0x2dd9e(%rip), %rdx     # 0x72108
callq 0x2f1a0
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2dccd(%rip), %rsi     # 0x7204b
leaq 0x2dd69(%rip), %rdx     # 0x720ee
callq 0x2f1a0
movq 0x8(%rbx), %rdx
addq $0x3, %rdx
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
movq %r14, %rcx
callq 0x632c4
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x443b3
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x443c2
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2d20a(%rip), %rsi     # 0x715db
leaq 0x2d20a(%rip), %rdx     # 0x715e2
callq 0x2f1a0
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2d1f7(%rip), %rsi     # 0x715e3
leaq 0x2d1f6(%rip), %rdx     # 0x715e9
callq 0x2f1a0
leaq 0x48(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2e7ed(%rip), %rsi     # 0x72bf4
leaq 0x2e811(%rip), %rdx     # 0x72c1f
callq 0x2f1a0
leaq 0x68(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x323f5(%rip), %rdx     # 0x76817
movq %rdx, %rsi
callq 0x2f1a0
movq 0x8(%rbx), %r9
leaq 0x4(%r9), %r8
addq $0x60, %r9
movq %r14, (%rsp)
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x48(%rsp), %rdx
leaq 0x68(%rsp), %rcx
callq 0x2e8c0
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x44462
callq 0x27560
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x44471
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x44480
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x4448f
callq 0x27560
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x444c5
jmp 0x444e5
jmp 0x444f9
jmp 0x4450d
jmp 0x44521
jmp 0x444f9
jmp 0x4450d
jmp 0x44521
jmp 0x444c5
jmp 0x444e5
jmp 0x444f9
jmp 0x4450d
jmp 0x44521
jmp 0x444c5
jmp 0x444e5
jmp 0x444f9
jmp 0x4450d
jmp 0x44521
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x444e8
callq 0x27560
jmp 0x444e8
jmp 0x444e5
jmp 0x444f9
jmp 0x4450d
jmp 0x44521
jmp 0x4450d
jmp 0x44521
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x444fc
callq 0x27560
jmp 0x444fc
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x44510
callq 0x27560
jmp 0x44510
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x44524
callq 0x27560
jmp 0x44524
movq %rax, %rbx
movq %rbx, %rdi
callq 0x27b10
movq %rax, %rbx
movq %r14, %rdi
jmp 0x4451a