// File: zeeev[P]DASVC/bamtools/src/toolkit/bamtools_index.cpp
// Function: BamTools::IndexTool::IndexTool()
IndexTool::IndexTool(void)
    : AbstractTool()
    , m_settings(new IndexSettings)
    , m_impl(0)
{
    // set program details
    Options::SetProgramInfo("bamtools index", "creates index for BAM file", "[-in <filename>] [-bti]");
    
    // set up options 
    OptionGroup* IO_Opts = Options::CreateOptionGroup("Input & Output");
    Options::AddValueOption("-in", "BAM filename", "the input BAM file", "", m_settings->HasInputBamFilename, m_settings->InputBamFilename, IO_Opts, Options::StandardIn());
    Options::AddOption("-bti", "create (non-standard) BamTools index file (*.bti). Default behavior is to create standard BAM index (*.bai)", m_settings->IsUsingBamtoolsIndex, IO_Opts);
}

// Assembly:
subq $0x258, %rsp            # imm = 0x258
movq %rdi, 0x250(%rsp)
movq 0x250(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x91a20
movq 0x90(%rsp), %rax
leaq 0xa2705(%rip), %rcx     # 0x1649b8
movq %rcx, (%rax)
addq $0x8, %rax
movq %rax, 0x98(%rsp)
movl $0x28, %edi
callq 0x86720
movq %rax, 0xa0(%rsp)
jmp 0xc22d6
movq 0xa0(%rsp), %rdi
callq 0xc2bb0
jmp 0xc22e5
movq 0x90(%rsp), %rax
movq 0x98(%rsp), %rcx
movq 0xa0(%rsp), %rdx
movq %rdx, (%rcx)
movq $0x0, 0x10(%rax)
leaq 0x21f(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x86da0
movq 0x88(%rsp), %rdx
leaq 0x6ddd2(%rip), %rsi     # 0x1300fe
leaq 0x220(%rsp), %rdi
callq 0x86a00
jmp 0xc233b
leaq 0x1f7(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x86da0
movq 0x80(%rsp), %rdx
leaq 0x6ddae(%rip), %rsi     # 0x13010d
leaq 0x1f8(%rsp), %rdi
callq 0x86a00
jmp 0xc236e
leaq 0x1cf(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x86da0
movq 0x78(%rsp), %rdx
leaq 0x6dd9c(%rip), %rsi     # 0x130128
leaq 0x1d0(%rsp), %rdi
callq 0x86a00
jmp 0xc239b
leaq 0x220(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
callq 0x10f230
jmp 0xc23ba
leaq 0x1d0(%rsp), %rdi
callq 0x86f68
jmp 0xc23c9
leaq 0x1cf(%rsp), %rdi
callq 0x867b0
leaq 0x1f8(%rsp), %rdi
callq 0x86f68
jmp 0xc23e5
leaq 0x1f7(%rsp), %rdi
callq 0x867b0
leaq 0x220(%rsp), %rdi
callq 0x86f68
jmp 0xc2401
leaq 0x21f(%rsp), %rdi
callq 0x867b0
leaq 0x19f(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x86da0
movq 0x70(%rsp), %rdx
leaq 0x6c23f(%rip), %rsi     # 0x12e66b
leaq 0x1a0(%rsp), %rdi
callq 0x86a00
jmp 0xc243b
leaq 0x1a0(%rsp), %rdi
callq 0x10d3e0
movq %rax, 0x68(%rsp)
jmp 0xc244f
leaq 0x1a0(%rsp), %rdi
callq 0x86f68
jmp 0xc245e
leaq 0x19f(%rsp), %rdi
callq 0x867b0
movq 0x68(%rsp), %rax
movq %rax, 0x1c0(%rsp)
leaq 0x177(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x86da0
movq 0x60(%rsp), %rdx
leaq 0x6c1e4(%rip), %rsi     # 0x12e67a
leaq 0x178(%rsp), %rdi
callq 0x86a00
jmp 0xc24a5
leaq 0x14f(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x86da0
movq 0x58(%rsp), %rdx
leaq 0x6c1bb(%rip), %rsi     # 0x12e67e
leaq 0x150(%rsp), %rdi
callq 0x86a00
jmp 0xc24d2
leaq 0x127(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x86da0
movq 0x50(%rsp), %rdx
leaq 0x71444(%rip), %rsi     # 0x133934
leaq 0x128(%rsp), %rdi
callq 0x86a00
jmp 0xc24ff
leaq 0xff(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x86da0
movq 0x48(%rsp), %rdx
leaq 0x72756(%rip), %rsi     # 0x134c73
leaq 0x100(%rsp), %rdi
callq 0x86a00
jmp 0xc252c
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x28(%rsp)
addq $0x8, %rax
movq %rax, 0x30(%rsp)
movq 0x1c0(%rsp), %rax
movq %rax, 0x38(%rsp)
callq 0x10f280
movq %rax, 0x40(%rsp)
jmp 0xc255f
movq 0x30(%rsp), %r9
movq 0x28(%rsp), %r8
movq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rdx
movq %rsp, %rax
movq %rdx, 0x8(%rax)
movq %rcx, (%rax)
leaq 0x178(%rsp), %rdi
leaq 0x150(%rsp), %rsi
leaq 0x128(%rsp), %rdx
leaq 0x100(%rsp), %rcx
callq 0x92150
jmp 0xc25a4
leaq 0x100(%rsp), %rdi
callq 0x86f68
jmp 0xc25b3
leaq 0xff(%rsp), %rdi
callq 0x867b0
leaq 0x128(%rsp), %rdi
callq 0x86f68
jmp 0xc25cf
leaq 0x127(%rsp), %rdi
callq 0x867b0
leaq 0x150(%rsp), %rdi
callq 0x86f68
jmp 0xc25eb
leaq 0x14f(%rsp), %rdi
callq 0x867b0
leaq 0x178(%rsp), %rdi
callq 0x86f68
jmp 0xc2607
leaq 0x177(%rsp), %rdi
callq 0x867b0
leaq 0xd7(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x86da0
movq 0x20(%rsp), %rdx
leaq 0x6db0e(%rip), %rsi     # 0x130140
leaq 0xd8(%rsp), %rdi
callq 0x86a00
jmp 0xc2641
leaq 0xaf(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x86da0
movq 0x18(%rsp), %rdx
leaq 0x6dae6(%rip), %rsi     # 0x130145
leaq 0xb0(%rsp), %rdi
callq 0x86a00
jmp 0xc266e
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rdx
incq %rdx
movq 0x1c0(%rsp), %rcx
leaq 0xd8(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x10d2a0
jmp 0xc269c
leaq 0xb0(%rsp), %rdi
callq 0x86f68
jmp 0xc26ab
leaq 0xaf(%rsp), %rdi
callq 0x867b0
leaq 0xd8(%rsp), %rdi
callq 0x86f68
jmp 0xc26c7
leaq 0xd7(%rsp), %rdi
callq 0x867b0
addq $0x258, %rsp            # imm = 0x258
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc2988
movq 0xa0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
callq 0x866a0
jmp 0xc2988
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc27c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc27a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc2785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
leaq 0x1d0(%rsp), %rdi
callq 0x86f68
jmp 0xc2783
jmp 0xc2785
leaq 0x1cf(%rsp), %rdi
callq 0x867b0
leaq 0x1f8(%rsp), %rdi
callq 0x86f68
jmp 0xc27a1
jmp 0xc27a3
leaq 0x1f7(%rsp), %rdi
callq 0x867b0
leaq 0x220(%rsp), %rdi
callq 0x86f68
jmp 0xc27bf
jmp 0xc27c1
leaq 0x21f(%rsp), %rdi
callq 0x867b0
jmp 0xc2988
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc280e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0x86f68
jmp 0xc280c
jmp 0xc280e
leaq 0x19f(%rsp), %rdi
callq 0x867b0
jmp 0xc2988
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc28fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc28df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc28c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc28a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
leaq 0x100(%rsp), %rdi
callq 0x86f68
jmp 0xc28a1
jmp 0xc28a3
leaq 0xff(%rsp), %rdi
callq 0x867b0
leaq 0x128(%rsp), %rdi
callq 0x86f68
jmp 0xc28bf
jmp 0xc28c1
leaq 0x127(%rsp), %rdi
callq 0x867b0
leaq 0x150(%rsp), %rdi
callq 0x86f68
jmp 0xc28dd
jmp 0xc28df
leaq 0x14f(%rsp), %rdi
callq 0x867b0
leaq 0x178(%rsp), %rdi
callq 0x86f68
jmp 0xc28fb
jmp 0xc28fd
leaq 0x177(%rsp), %rdi
callq 0x867b0
jmp 0xc2988
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc297b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
jmp 0xc295d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x248(%rsp)
movl %eax, 0x244(%rsp)
leaq 0xb0(%rsp), %rdi
callq 0x86f68
jmp 0xc295b
jmp 0xc295d
leaq 0xaf(%rsp), %rdi
callq 0x867b0
leaq 0xd8(%rsp), %rdi
callq 0x86f68
jmp 0xc2979
jmp 0xc297b
leaq 0xd7(%rsp), %rdi
callq 0x867b0
movq 0x90(%rsp), %rdi
callq 0x92a20
jmp 0xc2997
jmp 0xc2999
movq 0x248(%rsp), %rdi
callq 0x86d80
movq %rax, %rdi
callq 0x91290
nop