// File: zeeev[P]DASVC/bamtools/src/toolkit/bamtools_count.cpp
// Function: BamTools::CountTool::CountTool()
CountTool::CountTool(void) 
    : AbstractTool()
    , m_settings(new CountSettings)
    , m_impl(0)
{ 
    // set program details
    Options::SetProgramInfo("bamtools count", "prints number of alignments in BAM file(s)",
                            "[-in <filename> -in <filename> ... | -list <filelist>] [-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::StandardIn());
    Options::AddValueOption("-list",   "filename", "the input BAM file list, one line per file", "", m_settings->HasInputFilelist,  m_settings->InputFilelist, IO_Opts);
    Options::AddValueOption("-region", "REGION",
                            "genomic region. Index file is recommended for better performance, and is used automatically if it exists. See \'bamtools help index\' for more details on creating one",
                            "", m_settings->HasRegion, m_settings->Region, IO_Opts);
}

// Assembly:
subq $0x378, %rsp            # imm = 0x378
movq %rdi, 0x370(%rsp)
movq 0x370(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x91a20
movq 0xc0(%rsp), %rax
leaq 0xcc8f5(%rip), %rcx     # 0x1646f8
movq %rcx, (%rax)
addq $0x8, %rax
movq %rax, 0xc8(%rsp)
movl $0x60, %edi
callq 0x86720
movq %rax, 0xd0(%rsp)
jmp 0x97e26
movq 0xd0(%rsp), %rdi
callq 0x98ab0
jmp 0x97e35
movq 0xc0(%rsp), %rax
movq 0xc8(%rsp), %rcx
movq 0xd0(%rsp), %rdx
movq %rdx, (%rcx)
movq $0x0, 0x10(%rax)
leaq 0x33f(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x86da0
movq 0xb8(%rsp), %rdx
leaq 0x96c2f(%rip), %rsi     # 0x12eaab
leaq 0x340(%rsp), %rdi
callq 0x86a00
jmp 0x97e8b
leaq 0x317(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x86da0
movq 0xb0(%rsp), %rdx
leaq 0x96c0b(%rip), %rsi     # 0x12eaba
leaq 0x318(%rsp), %rdi
callq 0x86a00
jmp 0x97ebe
leaq 0x2ef(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x86da0
movq 0xa8(%rsp), %rdx
leaq 0x96c03(%rip), %rsi     # 0x12eae5
leaq 0x2f0(%rsp), %rdi
callq 0x86a00
jmp 0x97ef1
leaq 0x340(%rsp), %rdi
leaq 0x318(%rsp), %rsi
leaq 0x2f0(%rsp), %rdx
callq 0x10f230
jmp 0x97f10
leaq 0x2f0(%rsp), %rdi
callq 0x86f68
jmp 0x97f1f
leaq 0x2ef(%rsp), %rdi
callq 0x867b0
leaq 0x318(%rsp), %rdi
callq 0x86f68
jmp 0x97f3b
leaq 0x317(%rsp), %rdi
callq 0x867b0
leaq 0x340(%rsp), %rdi
callq 0x86f68
jmp 0x97f57
leaq 0x33f(%rsp), %rdi
callq 0x867b0
leaq 0x2bf(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x86da0
movq 0xa0(%rsp), %rdx
leaq 0x966e3(%rip), %rsi     # 0x12e66b
leaq 0x2c0(%rsp), %rdi
callq 0x86a00
jmp 0x97f97
leaq 0x2c0(%rsp), %rdi
callq 0x10d3e0
movq %rax, 0x98(%rsp)
jmp 0x97fae
leaq 0x2c0(%rsp), %rdi
callq 0x86f68
jmp 0x97fbd
leaq 0x2bf(%rsp), %rdi
callq 0x867b0
movq 0x98(%rsp), %rax
movq %rax, 0x2e0(%rsp)
leaq 0x297(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x86da0
movq 0x90(%rsp), %rdx
leaq 0x9667c(%rip), %rsi     # 0x12e67a
leaq 0x298(%rsp), %rdi
callq 0x86a00
jmp 0x9800d
leaq 0x26f(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x86da0
movq 0x88(%rsp), %rdx
leaq 0x9664d(%rip), %rsi     # 0x12e67e
leaq 0x270(%rsp), %rdi
callq 0x86a00
jmp 0x98040
leaq 0x247(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x86da0
movq 0x80(%rsp), %rdx
leaq 0x96627(%rip), %rsi     # 0x12e68b
leaq 0x248(%rsp), %rdi
callq 0x86a00
jmp 0x98073
leaq 0x21f(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x86da0
movq 0x78(%rsp), %rdx
leaq 0x9cbe2(%rip), %rsi     # 0x134c73
leaq 0x220(%rsp), %rdi
callq 0x86a00
jmp 0x980a0
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x58(%rsp)
addq $0x8, %rax
movq %rax, 0x60(%rsp)
movq 0x2e0(%rsp), %rax
movq %rax, 0x68(%rsp)
callq 0x10f280
movq %rax, 0x70(%rsp)
jmp 0x980d3
movq 0x60(%rsp), %r9
movq 0x58(%rsp), %r8
movq 0x68(%rsp), %rcx
movq 0x70(%rsp), %rdx
movq %rsp, %rax
movq %rdx, 0x8(%rax)
movq %rcx, (%rax)
leaq 0x298(%rsp), %rdi
leaq 0x270(%rsp), %rsi
leaq 0x248(%rsp), %rdx
leaq 0x220(%rsp), %rcx
callq 0x91bf0
jmp 0x98118
leaq 0x220(%rsp), %rdi
callq 0x86f68
jmp 0x98127
leaq 0x21f(%rsp), %rdi
callq 0x867b0
leaq 0x248(%rsp), %rdi
callq 0x86f68
jmp 0x98143
leaq 0x247(%rsp), %rdi
callq 0x867b0
leaq 0x270(%rsp), %rdi
callq 0x86f68
jmp 0x9815f
leaq 0x26f(%rsp), %rdi
callq 0x867b0
leaq 0x298(%rsp), %rdi
callq 0x86f68
jmp 0x9817b
leaq 0x297(%rsp), %rdi
callq 0x867b0
leaq 0x1f7(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x86da0
movq 0x50(%rsp), %rdx
leaq 0x964fb(%rip), %rsi     # 0x12e6a1
leaq 0x1f8(%rsp), %rdi
callq 0x86a00
jmp 0x981b5
leaq 0x1cf(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x86da0
movq 0x48(%rsp), %rdx
leaq 0x9658d(%rip), %rsi     # 0x12e760
leaq 0x1d0(%rsp), %rdi
callq 0x86a00
jmp 0x981e2
leaq 0x1a7(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x86da0
movq 0x40(%rsp), %rdx
leaq 0x964a7(%rip), %rsi     # 0x12e6a7
leaq 0x1a8(%rsp), %rdi
callq 0x86a00
jmp 0x9820f
leaq 0x17f(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x86da0
movq 0x38(%rsp), %rdx
leaq 0x9ca46(%rip), %rsi     # 0x134c73
leaq 0x180(%rsp), %rdi
callq 0x86a00
jmp 0x9823c
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %r9
movq %r9, %r8
incq %r8
addq $0x20, %r9
movq 0x2e0(%rsp), %rcx
movq %rsp, %rax
movq %rcx, (%rax)
leaq 0x1f8(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
leaq 0x1a8(%rsp), %rdx
leaq 0x180(%rsp), %rcx
callq 0x91f00
jmp 0x98287
leaq 0x180(%rsp), %rdi
callq 0x86f68
jmp 0x98296
leaq 0x17f(%rsp), %rdi
callq 0x867b0
leaq 0x1a8(%rsp), %rdi
callq 0x86f68
jmp 0x982b2
leaq 0x1a7(%rsp), %rdi
callq 0x867b0
leaq 0x1d0(%rsp), %rdi
callq 0x86f68
jmp 0x982ce
leaq 0x1cf(%rsp), %rdi
callq 0x867b0
leaq 0x1f8(%rsp), %rdi
callq 0x86f68
jmp 0x982ea
leaq 0x1f7(%rsp), %rdi
callq 0x867b0
leaq 0x157(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x86da0
movq 0x30(%rsp), %rdx
leaq 0x96420(%rip), %rsi     # 0x12e735
leaq 0x158(%rsp), %rdi
callq 0x86a00
jmp 0x98324
leaq 0x12f(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x86da0
movq 0x28(%rsp), %rdx
leaq 0x963fb(%rip), %rsi     # 0x12e73d
leaq 0x130(%rsp), %rdi
callq 0x86a00
jmp 0x98351
leaq 0x107(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x86da0
movq 0x20(%rsp), %rdx
leaq 0x982e3(%rip), %rsi     # 0x130652
leaq 0x108(%rsp), %rdi
callq 0x86a00
jmp 0x9837e
leaq 0xdf(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x86da0
movq 0x18(%rsp), %rdx
leaq 0x9c8d7(%rip), %rsi     # 0x134c73
leaq 0xe0(%rsp), %rdi
callq 0x86a00
jmp 0x983ab
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %r9
movq %r9, %r8
addq $0x2, %r8
addq $0x40, %r9
movq 0x2e0(%rsp), %rcx
movq %rsp, %rax
movq %rcx, (%rax)
leaq 0x158(%rsp), %rdi
leaq 0x130(%rsp), %rsi
leaq 0x108(%rsp), %rdx
leaq 0xe0(%rsp), %rcx
callq 0x91f00
jmp 0x983f7
leaq 0xe0(%rsp), %rdi
callq 0x86f68
jmp 0x98406
leaq 0xdf(%rsp), %rdi
callq 0x867b0
leaq 0x108(%rsp), %rdi
callq 0x86f68
jmp 0x98422
leaq 0x107(%rsp), %rdi
callq 0x867b0
leaq 0x130(%rsp), %rdi
callq 0x86f68
jmp 0x9843e
leaq 0x12f(%rsp), %rdi
callq 0x867b0
leaq 0x158(%rsp), %rdi
callq 0x86f68
jmp 0x9845a
leaq 0x157(%rsp), %rdi
callq 0x867b0
addq $0x378, %rsp            # imm = 0x378
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x9887b
movq 0xd0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
callq 0x866a0
jmp 0x9887b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98554
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98536
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98518
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
leaq 0x2f0(%rsp), %rdi
callq 0x86f68
jmp 0x98516
jmp 0x98518
leaq 0x2ef(%rsp), %rdi
callq 0x867b0
leaq 0x318(%rsp), %rdi
callq 0x86f68
jmp 0x98534
jmp 0x98536
leaq 0x317(%rsp), %rdi
callq 0x867b0
leaq 0x340(%rsp), %rdi
callq 0x86f68
jmp 0x98552
jmp 0x98554
leaq 0x33f(%rsp), %rdi
callq 0x867b0
jmp 0x9887b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x985a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
leaq 0x2c0(%rsp), %rdi
callq 0x86f68
jmp 0x9859f
jmp 0x985a1
leaq 0x2bf(%rsp), %rdi
callq 0x867b0
jmp 0x9887b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98690
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98672
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98654
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98636
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
leaq 0x220(%rsp), %rdi
callq 0x86f68
jmp 0x98634
jmp 0x98636
leaq 0x21f(%rsp), %rdi
callq 0x867b0
leaq 0x248(%rsp), %rdi
callq 0x86f68
jmp 0x98652
jmp 0x98654
leaq 0x247(%rsp), %rdi
callq 0x867b0
leaq 0x270(%rsp), %rdi
callq 0x86f68
jmp 0x98670
jmp 0x98672
leaq 0x26f(%rsp), %rdi
callq 0x867b0
leaq 0x298(%rsp), %rdi
callq 0x86f68
jmp 0x9868e
jmp 0x98690
leaq 0x297(%rsp), %rdi
callq 0x867b0
jmp 0x9887b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x9877f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98761
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98743
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98725
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
leaq 0x180(%rsp), %rdi
callq 0x86f68
jmp 0x98723
jmp 0x98725
leaq 0x17f(%rsp), %rdi
callq 0x867b0
leaq 0x1a8(%rsp), %rdi
callq 0x86f68
jmp 0x98741
jmp 0x98743
leaq 0x1a7(%rsp), %rdi
callq 0x867b0
leaq 0x1d0(%rsp), %rdi
callq 0x86f68
jmp 0x9875f
jmp 0x98761
leaq 0x1cf(%rsp), %rdi
callq 0x867b0
leaq 0x1f8(%rsp), %rdi
callq 0x86f68
jmp 0x9877d
jmp 0x9877f
leaq 0x1f7(%rsp), %rdi
callq 0x867b0
jmp 0x9887b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x9886e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98850
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98832
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
jmp 0x98814
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x368(%rsp)
movl %eax, 0x364(%rsp)
leaq 0xe0(%rsp), %rdi
callq 0x86f68
jmp 0x98812
jmp 0x98814
leaq 0xdf(%rsp), %rdi
callq 0x867b0
leaq 0x108(%rsp), %rdi
callq 0x86f68
jmp 0x98830
jmp 0x98832
leaq 0x107(%rsp), %rdi
callq 0x867b0
leaq 0x130(%rsp), %rdi
callq 0x86f68
jmp 0x9884e
jmp 0x98850
leaq 0x12f(%rsp), %rdi
callq 0x867b0
leaq 0x158(%rsp), %rdi
callq 0x86f68
jmp 0x9886c
jmp 0x9886e
leaq 0x157(%rsp), %rdi
callq 0x867b0
movq 0xc0(%rsp), %rdi
callq 0x92a20
jmp 0x9888a
jmp 0x9888c
movq 0x368(%rsp), %rdi
callq 0x86d80
movq %rax, %rdi
callq 0x91290
nopw %cs:(%rax,%rax)