// File: /workspace/github_cpp_makefile_star2_O1/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 0x4b92b(%rip), %rax     # 0x8f9f8
movq %rax, (%rdi)
movl $0x80, %edi
callq 0x275c0
movq %rax, %r14
movq %rax, %rdi
callq 0x44720
movq %r14, 0x8(%rbx)
movq $0x0, 0x10(%rbx)
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2fa38(%rip), %rsi     # 0x73b39
leaq 0x2fa3f(%rip), %rdx     # 0x73b47
leaq 0x8(%rsp), %rdi
callq 0x2f1b2
leaq 0x38(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x2fa25(%rip), %rsi     # 0x73b48
leaq 0x2fa40(%rip), %rdx     # 0x73b6a
leaq 0x28(%rsp), %rdi
callq 0x2f1b2
leaq 0x58(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2fa27(%rip), %rsi     # 0x73b6b
leaq 0x2fa91(%rip), %rdx     # 0x73bdc
leaq 0x48(%rsp), %rdi
callq 0x2f1b2
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x48(%rsp), %rdx
callq 0x646a4
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x44178
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x44187
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x44196
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2e36c(%rip), %rsi     # 0x72511
leaq 0x2e373(%rip), %rdx     # 0x7251f
callq 0x2f1b2
leaq 0x8(%rsp), %rdi
callq 0x63a0c
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x441cd
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2e344(%rip), %rsi     # 0x72520
leaq 0x2e340(%rip), %rdx     # 0x72523
callq 0x2f1b2
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2e32d(%rip), %rsi     # 0x72524
leaq 0x2e332(%rip), %rdx     # 0x72530
callq 0x2f1b2
leaq 0x48(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2e31f(%rip), %rsi     # 0x72531
leaq 0x2e32d(%rip), %rdx     # 0x72546
callq 0x2f1b2
leaq 0x78(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x335ed(%rip), %rdx     # 0x7781b
leaq 0x68(%rsp), %rdi
movq %rdx, %rsi
callq 0x2f1b2
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 0x447be
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4426f
callq 0x27560
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x4427e
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x4428d
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x4429c
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2e29c(%rip), %rsi     # 0x72547
leaq 0x2e29a(%rip), %rdx     # 0x7254c
callq 0x2f1b2
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2e340(%rip), %rsi     # 0x72606
leaq 0x2e341(%rip), %rdx     # 0x7260e
callq 0x2f1b2
leaq 0x48(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2e26c(%rip), %rsi     # 0x7254d
leaq 0x2e28f(%rip), %rdx     # 0x72577
callq 0x2f1b2
leaq 0x68(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x3351f(%rip), %rdx     # 0x7781b
movq %rdx, %rsi
callq 0x2f1b2
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 0x2e8ba
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4433c
callq 0x27560
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x4434b
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x4435a
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x44369
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2e200(%rip), %rsi     # 0x72578
leaq 0x2e1fd(%rip), %rdx     # 0x7257c
callq 0x2f1b2
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2e191(%rip), %rsi     # 0x72524
leaq 0x2e196(%rip), %rdx     # 0x72530
callq 0x2f1b2
leaq 0x48(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2e1cf(%rip), %rsi     # 0x7257d
leaq 0x2e1db(%rip), %rdx     # 0x72590
callq 0x2f1b2
leaq 0x68(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x33452(%rip), %rdx     # 0x7781b
movq %rdx, %rsi
callq 0x2f1b2
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 0x2e8ba
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x44409
callq 0x27560
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x44418
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x44427
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x44436
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2ecb2(%rip), %rsi     # 0x730f7
leaq 0x2ecbc(%rip), %rdx     # 0x73108
callq 0x2f1b2
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2ebeb(%rip), %rsi     # 0x7304b
leaq 0x2ec87(%rip), %rdx     # 0x730ee
callq 0x2f1b2
movq 0x8(%rbx), %rdx
addq $0x3, %rdx
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
movq %r14, %rcx
callq 0x63808
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x44495
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x444a4
callq 0x27560
leaq 0x8(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x2e128(%rip), %rsi     # 0x725db
leaq 0x2e128(%rip), %rdx     # 0x725e2
callq 0x2f1b2
leaq 0x28(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2e115(%rip), %rsi     # 0x725e3
leaq 0x2e114(%rip), %rdx     # 0x725e9
callq 0x2f1b2
leaq 0x48(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2f6f4(%rip), %rsi     # 0x73bdd
leaq 0x2f718(%rip), %rdx     # 0x73c08
callq 0x2f1b2
leaq 0x68(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x33317(%rip), %rdx     # 0x7781b
movq %rdx, %rsi
callq 0x2f1b2
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 0x2e8ba
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x44544
callq 0x27560
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x44553
callq 0x27560
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x44562
callq 0x27560
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x44571
callq 0x27560
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x445a7
jmp 0x445c7
jmp 0x445db
jmp 0x445ef
jmp 0x44603
jmp 0x445db
jmp 0x445ef
jmp 0x44603
jmp 0x445a7
jmp 0x445c7
jmp 0x445db
jmp 0x445ef
jmp 0x44603
jmp 0x445a7
jmp 0x445c7
jmp 0x445db
jmp 0x445ef
jmp 0x44603
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x445ca
callq 0x27560
jmp 0x445ca
jmp 0x445c7
jmp 0x445db
jmp 0x445ef
jmp 0x44603
jmp 0x445ef
jmp 0x44603
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x445de
callq 0x27560
jmp 0x445de
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x445f2
callq 0x27560
jmp 0x445f2
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x44606
callq 0x27560
jmp 0x44606
movq %rax, %rbx
movq %rbx, %rdi
callq 0x27b20
movq %rax, %rbx
movq %r14, %rdi
jmp 0x445fc