// File: /workspace/github_cpp_makefile_star2_O3/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
movq 0x8(%rdi), %r14
cmpq 0x2f6da(%rip), %r14     # 0x90380
jne 0x60ccb
testq %r14, %r14
je 0x60dd8
movq 0x2f6c0(%rip), %rsi     # 0x90378
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x60dd8
cmpq 0x2f6ce(%rip), %r14     # 0x903a0
jne 0x60cf7
testq %r14, %r14
je 0x60df2
movq 0x2f6b4(%rip), %rsi     # 0x90398
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x60df2
cmpq 0x2f6c2(%rip), %r14     # 0x903c0
jne 0x60d23
testq %r14, %r14
je 0x60e0c
movq 0x2f6a8(%rip), %rsi     # 0x903b8
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x60e0c
cmpq 0x2f6b6(%rip), %r14     # 0x903e0
jne 0x60d4f
testq %r14, %r14
je 0x60e26
movq 0x2f69c(%rip), %rsi     # 0x903d8
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x60e26
cmpq 0x2f6aa(%rip), %r14     # 0x90400
jne 0x60d7b
testq %r14, %r14
je 0x60e40
movq 0x2f690(%rip), %rsi     # 0x903f8
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x60e40
cmpq 0x2f69e(%rip), %r14     # 0x90420
jne 0x60da7
testq %r14, %r14
je 0x60e87
movq 0x2f684(%rip), %rsi     # 0x90418
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x60e87
leaq 0x2f68a(%rip), %rsi     # 0x90438
movq %rbx, %rdi
callq 0x2e3c3
testb %al, %al
je 0x60e5a
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x43fd0
jmp 0x60f7b
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x2cbae
jmp 0x60f7b
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x308c8
jmp 0x60f7b
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x310c2
jmp 0x60f7b
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x34b48
jmp 0x60f7b
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x42fe4
jmp 0x60f7b
leaq 0x2f5f7(%rip), %rsi     # 0x90458
movq %rbx, %rdi
callq 0x2e3c3
testb %al, %al
je 0x60ea1
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4516e
jmp 0x60f7b
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4359c
jmp 0x60f7b
leaq 0x2f5d0(%rip), %rsi     # 0x90478
movq %rbx, %rdi
callq 0x2e3c3
testb %al, %al
je 0x60ece
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x49a36
jmp 0x60f7b
leaq 0x2f5c3(%rip), %rsi     # 0x90498
movq %rbx, %rdi
callq 0x2e3c3
testb %al, %al
je 0x60efb
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4d57c
jmp 0x60f7b
leaq 0x2f5b6(%rip), %rsi     # 0x904b8
movq %rbx, %rdi
callq 0x2e3c3
testb %al, %al
je 0x60f25
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4e6cc
jmp 0x60f7b
leaq 0x2f5ac(%rip), %rsi     # 0x904d8
movq %rbx, %rdi
callq 0x2e3c3
testb %al, %al
je 0x60f4f
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x543e4
jmp 0x60f7b
leaq 0x2f5a2(%rip), %rsi     # 0x904f8
movq %rbx, %rdi
callq 0x2e3c3
testb %al, %al
je 0x60f79
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x6056e
jmp 0x60f7b
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
jmp 0x60f9e
movq %rax, %r14
movq %rbx, %rdi
callq 0x27560
movq %r14, %rdi
callq 0x27b10