// File: /workspace/github_cpp_makefile_star2_O2/zeeev[P]DASVC/bamtools/src/toolkit/bamtools.cpp
// Function: CreateTool(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
AbstractTool* CreateTool(const string& arg) {
  
    // determine tool type based on arg
    if ( arg == CONVERT )  return new ConvertTool;
    if ( arg == COUNT )    return new CountTool;
    if ( arg == COVERAGE ) return new CoverageTool;
    if ( arg == FILTER )   return new FilterTool;
    if ( arg == HEADER )   return new HeaderTool;
    if ( arg == INDEX )    return new IndexTool;
    if ( arg == MERGE )    return new MergeTool;
    if ( arg == RANDOM )   return new RandomTool;
    if ( arg == RESOLVE )  return new ResolveTool;
    if ( arg == REVERT )   return new RevertTool;
    if ( arg == SORT )     return new SortTool;
    if ( arg == SPLIT )    return new SplitTool;
    if ( arg == STATS )    return new StatsTool;

    // unknown arg
    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x32c8a(%rip), %rsi     # 0x963b8
callq 0x3a2a9
testb %al, %al
je 0x6374f
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x38e7c
jmp 0x63949
leaq 0x32c82(%rip), %rsi     # 0x963d8
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x6377a
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x3c07a
jmp 0x63949
leaq 0x32c77(%rip), %rsi     # 0x963f8
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x637a5
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x3c840
jmp 0x63949
leaq 0x32c6c(%rip), %rsi     # 0x96418
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x637d0
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x3f434
jmp 0x63949
leaq 0x32c61(%rip), %rsi     # 0x96438
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x637fb
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4bc08
jmp 0x63949
leaq 0x32c56(%rip), %rsi     # 0x96458
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x63826
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4c0e8
jmp 0x63949
leaq 0x32c4b(%rip), %rsi     # 0x96478
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x63851
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4c944
jmp 0x63949
leaq 0x32c40(%rip), %rsi     # 0x96498
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x6387c
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4d7d8
jmp 0x63949
leaq 0x32c35(%rip), %rsi     # 0x964b8
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x638a7
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x50bea
jmp 0x63949
leaq 0x32c2a(%rip), %rsi     # 0x964d8
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x638cf
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x5429a
jmp 0x63949
leaq 0x32c22(%rip), %rsi     # 0x964f8
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x638f7
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x5504a
jmp 0x63949
leaq 0x32c1a(%rip), %rsi     # 0x96518
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x6391f
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x58acc
jmp 0x63949
leaq 0x32c12(%rip), %rsi     # 0x96538
movq %rbx, %rdi
callq 0x3a2a9
testb %al, %al
je 0x63947
pushq $0x18
popq %rdi
callq 0x355d0
movq %rax, %rbx
movq %rax, %rdi
callq 0x6313a
jmp 0x63949
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
jmp 0x6396c
movq %rax, %r14
movq %rbx, %rdi
callq 0x35570
movq %r14, %rdi
callq 0x35b50