// File: /workspace/github_cpp_makefile_star2_O1/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 0x301ca(%rip), %r14     # 0x91388
jne 0x611e3
testq %r14, %r14
je 0x612f0
movq 0x301b0(%rip), %rsi     # 0x91380
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x612f0
cmpq 0x301be(%rip), %r14     # 0x913a8
jne 0x6120f
testq %r14, %r14
je 0x6130a
movq 0x301a4(%rip), %rsi     # 0x913a0
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x6130a
cmpq 0x301b2(%rip), %r14     # 0x913c8
jne 0x6123b
testq %r14, %r14
je 0x61324
movq 0x30198(%rip), %rsi     # 0x913c0
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x61324
cmpq 0x301a6(%rip), %r14     # 0x913e8
jne 0x61267
testq %r14, %r14
je 0x6133e
movq 0x3018c(%rip), %rsi     # 0x913e0
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x6133e
cmpq 0x3019a(%rip), %r14     # 0x91408
jne 0x61293
testq %r14, %r14
je 0x61358
movq 0x30180(%rip), %rsi     # 0x91400
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x61358
cmpq 0x3018e(%rip), %r14     # 0x91428
jne 0x612bf
testq %r14, %r14
je 0x6139f
movq 0x30174(%rip), %rsi     # 0x91420
movq (%rbx), %rdi
movq %r14, %rdx
callq 0x275f0
testl %eax, %eax
je 0x6139f
leaq 0x3017a(%rip), %rsi     # 0x91440
movq %rbx, %rdi
callq 0x2e3bb
testb %al, %al
je 0x61372
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x440b2
jmp 0x61493
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x2cbe4
jmp 0x61493
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x308d6
jmp 0x61493
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x310da
jmp 0x61493
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x34b80
jmp 0x61493
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x430ae
jmp 0x61493
leaq 0x300e7(%rip), %rsi     # 0x91460
movq %rbx, %rdi
callq 0x2e3bb
testb %al, %al
je 0x613b9
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4525e
jmp 0x61493
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x43670
jmp 0x61493
leaq 0x300c0(%rip), %rsi     # 0x91480
movq %rbx, %rdi
callq 0x2e3bb
testb %al, %al
je 0x613e6
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x49b38
jmp 0x61493
leaq 0x300b3(%rip), %rsi     # 0x914a0
movq %rbx, %rdi
callq 0x2e3bb
testb %al, %al
je 0x61413
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4d6e8
jmp 0x61493
leaq 0x300a6(%rip), %rsi     # 0x914c0
movq %rbx, %rdi
callq 0x2e3bb
testb %al, %al
je 0x6143d
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x4e840
jmp 0x61493
leaq 0x3009c(%rip), %rsi     # 0x914e0
movq %rbx, %rdi
callq 0x2e3bb
testb %al, %al
je 0x61467
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x54556
jmp 0x61493
leaq 0x30092(%rip), %rsi     # 0x91500
movq %rbx, %rdi
callq 0x2e3bb
testb %al, %al
je 0x61491
movl $0x18, %edi
callq 0x275c0
movq %rax, %rbx
movq %rax, %rdi
callq 0x60a86
jmp 0x61493
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
jmp 0x614b6
movq %rax, %r14
movq %rbx, %rdi
callq 0x27560
movq %r14, %rdi
callq 0x27b20