// File: zeeev[P]DASVC/bamtools/src/toolkit/bamtools_stats.cpp
// Function: BamTools::StatsTool::StatsTool()
StatsTool::StatsTool(void)
    : AbstractTool()
    , m_settings(new StatsSettings)
    , m_impl(0)
{
    // set program details
    Options::SetProgramInfo("bamtools stats", "prints general alignment statistics", "[-in <filename> -in <filename> ... | -list <filelist>] [statsOptions]");
    
    // set up options 
    OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
    Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", 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);
    
    OptionGroup* AdditionalOpts = Options::CreateOptionGroup("Additional Stats");
    Options::AddOption("-insert", "summarize insert size data", m_settings->IsShowingInsertSizeSummary, AdditionalOpts);
}

// Assembly:
subq $0x358, %rsp            # imm = 0x358
movq %rdi, 0x350(%rsp)
movq 0x350(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x91a20
movq 0xc0(%rsp), %rax
leaq 0x5ce45(%rip), %rcx     # 0x164be8
movq %rcx, (%rax)
addq $0x8, %rax
movq %rax, 0xc8(%rsp)
movl $0x40, %edi
callq 0x86720
movq %rax, 0xd0(%rsp)
jmp 0x107dc6
movq 0xd0(%rsp), %rdi
callq 0x108af0
jmp 0x107dd5
movq 0xc0(%rsp), %rax
movq 0xc8(%rsp), %rcx
movq 0xd0(%rsp), %rdx
movq %rdx, (%rcx)
movq $0x0, 0x10(%rax)
leaq 0x31f(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x86da0
movq 0xb8(%rsp), %rdx
leaq 0x2b948(%rip), %rsi     # 0x133764
leaq 0x320(%rsp), %rdi
callq 0x86a00
jmp 0x107e2b
leaq 0x2f7(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x86da0
movq 0xb0(%rsp), %rdx
leaq 0x2b924(%rip), %rsi     # 0x133773
leaq 0x2f8(%rsp), %rdi
callq 0x86a00
jmp 0x107e5e
leaq 0x2cf(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x86da0
movq 0xa8(%rsp), %rdx
leaq 0x2b915(%rip), %rsi     # 0x133797
leaq 0x2d0(%rsp), %rdi
callq 0x86a00
jmp 0x107e91
leaq 0x320(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
leaq 0x2d0(%rsp), %rdx
callq 0x10f230
jmp 0x107eb0
leaq 0x2d0(%rsp), %rdi
callq 0x86f68
jmp 0x107ebf
leaq 0x2cf(%rsp), %rdi
callq 0x867b0
leaq 0x2f8(%rsp), %rdi
callq 0x86f68
jmp 0x107edb
leaq 0x2f7(%rsp), %rdi
callq 0x867b0
leaq 0x320(%rsp), %rdi
callq 0x86f68
jmp 0x107ef7
leaq 0x31f(%rsp), %rdi
callq 0x867b0
leaq 0x29f(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x86da0
movq 0xa0(%rsp), %rdx
leaq 0x26743(%rip), %rsi     # 0x12e66b
leaq 0x2a0(%rsp), %rdi
callq 0x86a00
jmp 0x107f37
leaq 0x2a0(%rsp), %rdi
callq 0x10d3e0
movq %rax, 0x98(%rsp)
jmp 0x107f4e
leaq 0x2a0(%rsp), %rdi
callq 0x86f68
jmp 0x107f5d
leaq 0x29f(%rsp), %rdi
callq 0x867b0
movq 0x98(%rsp), %rax
movq %rax, 0x2c0(%rsp)
leaq 0x277(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x86da0
movq 0x90(%rsp), %rdx
leaq 0x266dc(%rip), %rsi     # 0x12e67a
leaq 0x278(%rsp), %rdi
callq 0x86a00
jmp 0x107fad
leaq 0x24f(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x86da0
movq 0x88(%rsp), %rdx
leaq 0x266ad(%rip), %rsi     # 0x12e67e
leaq 0x250(%rsp), %rdi
callq 0x86a00
jmp 0x107fe0
leaq 0x227(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x86da0
movq 0x80(%rsp), %rdx
leaq 0x2b930(%rip), %rsi     # 0x133934
leaq 0x228(%rsp), %rdi
callq 0x86a00
jmp 0x108013
leaq 0x1ff(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x86da0
movq 0x78(%rsp), %rdx
leaq 0x2cc42(%rip), %rsi     # 0x134c73
leaq 0x200(%rsp), %rdi
callq 0x86a00
jmp 0x108040
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x58(%rsp)
addq $0x8, %rax
movq %rax, 0x60(%rsp)
movq 0x2c0(%rsp), %rax
movq %rax, 0x68(%rsp)
callq 0x10f280
movq %rax, 0x70(%rsp)
jmp 0x108073
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 0x278(%rsp), %rdi
leaq 0x250(%rsp), %rsi
leaq 0x228(%rsp), %rdx
leaq 0x200(%rsp), %rcx
callq 0x91bf0
jmp 0x1080b8
leaq 0x200(%rsp), %rdi
callq 0x86f68
jmp 0x1080c7
leaq 0x1ff(%rsp), %rdi
callq 0x867b0
leaq 0x228(%rsp), %rdi
callq 0x86f68
jmp 0x1080e3
leaq 0x227(%rsp), %rdi
callq 0x867b0
leaq 0x250(%rsp), %rdi
callq 0x86f68
jmp 0x1080ff
leaq 0x24f(%rsp), %rdi
callq 0x867b0
leaq 0x278(%rsp), %rdi
callq 0x86f68
jmp 0x10811b
leaq 0x277(%rsp), %rdi
callq 0x867b0
leaq 0x1d7(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x86da0
movq 0x50(%rsp), %rdx
leaq 0x2655b(%rip), %rsi     # 0x12e6a1
leaq 0x1d8(%rsp), %rdi
callq 0x86a00
jmp 0x108155
leaq 0x1af(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x86da0
movq 0x48(%rsp), %rdx
leaq 0x265ed(%rip), %rsi     # 0x12e760
leaq 0x1b0(%rsp), %rdi
callq 0x86a00
jmp 0x108182
leaq 0x187(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x86da0
movq 0x40(%rsp), %rdx
leaq 0x26507(%rip), %rsi     # 0x12e6a7
leaq 0x188(%rsp), %rdi
callq 0x86a00
jmp 0x1081af
leaq 0x15f(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x86da0
movq 0x38(%rsp), %rdx
leaq 0x2caa6(%rip), %rsi     # 0x134c73
leaq 0x160(%rsp), %rdi
callq 0x86a00
jmp 0x1081dc
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %r9
movq %r9, %r8
incq %r8
addq $0x20, %r9
movq 0x2c0(%rsp), %rcx
movq %rsp, %rax
movq %rcx, (%rax)
leaq 0x1d8(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
leaq 0x188(%rsp), %rdx
leaq 0x160(%rsp), %rcx
callq 0x91f00
jmp 0x108227
leaq 0x160(%rsp), %rdi
callq 0x86f68
jmp 0x108236
leaq 0x15f(%rsp), %rdi
callq 0x867b0
leaq 0x188(%rsp), %rdi
callq 0x86f68
jmp 0x108252
leaq 0x187(%rsp), %rdi
callq 0x867b0
leaq 0x1b0(%rsp), %rdi
callq 0x86f68
jmp 0x10826e
leaq 0x1af(%rsp), %rdi
callq 0x867b0
leaq 0x1d8(%rsp), %rdi
callq 0x86f68
jmp 0x10828a
leaq 0x1d7(%rsp), %rdi
callq 0x867b0
leaq 0x12f(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x86da0
movq 0x30(%rsp), %rdx
leaq 0x2b528(%rip), %rsi     # 0x1337dd
leaq 0x130(%rsp), %rdi
callq 0x86a00
jmp 0x1082c4
leaq 0x130(%rsp), %rdi
callq 0x10d3e0
movq %rax, 0x28(%rsp)
jmp 0x1082d8
leaq 0x130(%rsp), %rdi
callq 0x86f68
jmp 0x1082e7
leaq 0x12f(%rsp), %rdi
callq 0x867b0
movq 0x28(%rsp), %rax
movq %rax, 0x150(%rsp)
leaq 0x107(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x86da0
movq 0x20(%rsp), %rdx
leaq 0x2b4cf(%rip), %rsi     # 0x1337ee
leaq 0x108(%rsp), %rdi
callq 0x86a00
jmp 0x10832e
leaq 0xdf(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x86da0
movq 0x18(%rsp), %rdx
leaq 0x2b4aa(%rip), %rsi     # 0x1337f6
leaq 0xe0(%rsp), %rdi
callq 0x86a00
jmp 0x10835b
movq 0xc0(%rsp), %rax
movq 0x8(%rax), %rdx
addq $0x2, %rdx
movq 0x150(%rsp), %rcx
leaq 0x108(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x10d2a0
jmp 0x10838a
leaq 0xe0(%rsp), %rdi
callq 0x86f68
jmp 0x108399
leaq 0xdf(%rsp), %rdi
callq 0x867b0
leaq 0x108(%rsp), %rdi
callq 0x86f68
jmp 0x1083b5
leaq 0x107(%rsp), %rdi
callq 0x867b0
addq $0x358, %rsp            # imm = 0x358
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x1087b2
movq 0xd0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
callq 0x866a0
jmp 0x1087b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x1084af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x108491
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x108473
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x86f68
jmp 0x108471
jmp 0x108473
leaq 0x2cf(%rsp), %rdi
callq 0x867b0
leaq 0x2f8(%rsp), %rdi
callq 0x86f68
jmp 0x10848f
jmp 0x108491
leaq 0x2f7(%rsp), %rdi
callq 0x867b0
leaq 0x320(%rsp), %rdi
callq 0x86f68
jmp 0x1084ad
jmp 0x1084af
leaq 0x31f(%rsp), %rdi
callq 0x867b0
jmp 0x1087b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x1084fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
leaq 0x2a0(%rsp), %rdi
callq 0x86f68
jmp 0x1084fa
jmp 0x1084fc
leaq 0x29f(%rsp), %rdi
callq 0x867b0
jmp 0x1087b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x1085eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x1085cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x1085af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x108591
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
leaq 0x200(%rsp), %rdi
callq 0x86f68
jmp 0x10858f
jmp 0x108591
leaq 0x1ff(%rsp), %rdi
callq 0x867b0
leaq 0x228(%rsp), %rdi
callq 0x86f68
jmp 0x1085ad
jmp 0x1085af
leaq 0x227(%rsp), %rdi
callq 0x867b0
leaq 0x250(%rsp), %rdi
callq 0x86f68
jmp 0x1085cb
jmp 0x1085cd
leaq 0x24f(%rsp), %rdi
callq 0x867b0
leaq 0x278(%rsp), %rdi
callq 0x86f68
jmp 0x1085e9
jmp 0x1085eb
leaq 0x277(%rsp), %rdi
callq 0x867b0
jmp 0x1087b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x1086da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x1086bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x10869e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x108680
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
leaq 0x160(%rsp), %rdi
callq 0x86f68
jmp 0x10867e
jmp 0x108680
leaq 0x15f(%rsp), %rdi
callq 0x867b0
leaq 0x188(%rsp), %rdi
callq 0x86f68
jmp 0x10869c
jmp 0x10869e
leaq 0x187(%rsp), %rdi
callq 0x867b0
leaq 0x1b0(%rsp), %rdi
callq 0x86f68
jmp 0x1086ba
jmp 0x1086bc
leaq 0x1af(%rsp), %rdi
callq 0x867b0
leaq 0x1d8(%rsp), %rdi
callq 0x86f68
jmp 0x1086d8
jmp 0x1086da
leaq 0x1d7(%rsp), %rdi
callq 0x867b0
jmp 0x1087b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x108727
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
leaq 0x130(%rsp), %rdi
callq 0x86f68
jmp 0x108725
jmp 0x108727
leaq 0x12f(%rsp), %rdi
callq 0x867b0
jmp 0x1087b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x1087a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
jmp 0x108787
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x348(%rsp)
movl %eax, 0x344(%rsp)
leaq 0xe0(%rsp), %rdi
callq 0x86f68
jmp 0x108785
jmp 0x108787
leaq 0xdf(%rsp), %rdi
callq 0x867b0
leaq 0x108(%rsp), %rdi
callq 0x86f68
jmp 0x1087a3
jmp 0x1087a5
leaq 0x107(%rsp), %rdi
callq 0x867b0
movq 0xc0(%rsp), %rdi
callq 0x92a20
jmp 0x1087c1
jmp 0x1087c3
movq 0x348(%rsp), %rdi
callq 0x86d80
movq %rax, %rdi
callq 0x91290
nopl (%rax,%rax)