// File: /workspace/github_cpp_makefile_star2_O1/soccin[P]BIC-RNAseq/tools/MergeFusion/StandardFusion.cpp
// Function: StandardFusion::StandardFusion(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, CALLER_TYPE, bool, bool, std::map<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, int>>>, std::less<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::allocator<std::pair<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>> const, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, int>>>>>>&)
StandardFusion::StandardFusion(string line, CALLER_TYPE _caller_id, bool bool_normalize_chrom, bool bool_normalize_gene, map<pair<string, string>, map<string, int> >& hugo_map)
{
    init();
    caller_id = _caller_id;
    switch(caller_id)
    {
        case CHIMERASCAN: parseChimerascan(line); break;
        case DEFUSE: parseDefuse(line); break;
        case FUSIONCATCHER: parseFusioncatcher(line); break;
        case FUSIONHUNTER: parseFusionHunter(line); break;
        case MAPSPLICE: parseMapsplice(line); break;
        case STAR: parseStar(line); break;
        default: cerr << "Unknown fusion file type: " << caller_id << endl; exit(1);
    }
    if(bool_normalize_chrom)
        normalize_chrom_name();
    if(bool_normalize_gene)
        normalize_gene_name(hugo_map);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movl %ecx, %r14d
movq %rdi, %rbx
leaq 0x18(%rdi), %rax
movq %rax, -0x70(%rbp)
movq %rax, 0x8(%rdi)
xorl %eax, %eax
movq %rax, 0x10(%rdi)
movb %al, 0x18(%rdi)
leaq 0x38(%rdi), %rcx
movq %rcx, -0x68(%rbp)
movq %rcx, 0x28(%rdi)
movq %rax, 0x30(%rdi)
movb %al, 0x38(%rdi)
leaq 0x70(%rdi), %rcx
movq %rcx, -0x60(%rbp)
movq %rcx, 0x60(%rdi)
movq %rax, 0x68(%rdi)
movb %al, 0x70(%rdi)
leaq 0x90(%rdi), %rcx
movq %rcx, -0x58(%rbp)
movq %rcx, 0x80(%rdi)
movq %rax, 0x88(%rdi)
movb %al, 0x90(%rdi)
leaq 0xc0(%rdi), %rcx
movq %rcx, -0x50(%rbp)
movq %rcx, 0xb0(%rdi)
movq %rax, 0xb8(%rdi)
movb %al, 0xc0(%rdi)
leaq 0xe0(%rdi), %rcx
movq %rcx, -0x48(%rbp)
movq %rcx, 0xd0(%rdi)
movq %rax, 0xd8(%rdi)
movb %al, 0xe0(%rdi)
leaq 0x100(%rdi), %rcx
movq %rcx, -0x40(%rbp)
movq %rcx, 0xf0(%rdi)
movq %rax, 0xf8(%rdi)
movb %al, 0x100(%rdi)
leaq 0x120(%rdi), %rcx
movq %rcx, -0x38(%rbp)
movq %rcx, 0x110(%rdi)
movq %rax, 0x118(%rdi)
movb %al, 0x120(%rdi)
leaq 0x140(%rdi), %rcx
movq %rcx, -0x30(%rbp)
movq %rcx, 0x130(%rdi)
movq %rax, 0x138(%rdi)
movb %al, 0x140(%rdi)
movq $-0x1, %rax
movq %rax, 0xa0(%rdi)
movl $0xffffffff, 0xa8(%rdi) # imm = 0xFFFFFFFF
movq %rax, 0x58(%rdi)
pcmpeqd %xmm0, %xmm0
movdqu %xmm0, 0x48(%rdi)
movl %edx, (%rdi)
leaq 0x8(%rdi), %rax
movq %rax, -0x80(%rbp)
leaq 0x28(%rdi), %rax
movq %rax, -0x78(%rbp)
cmpl $0x5, %edx
ja 0x8942
movq %r9, %r12
movl %r8d, %r13d
movl %edx, %eax
leaq 0x3ece(%rip), %rcx      # 0xc658
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x110(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
leaq -0x120(%rbp), %rdi
movq %rax, %rsi
callq 0x41f8
leaq -0x120(%rbp), %rsi
movq %rbx, %rdi
callq 0x8b2a
movq -0x120(%rbp), %rdi
jmp 0x88f9
leaq -0xb0(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
leaq -0xc0(%rbp), %rdi
movq %rax, %rsi
callq 0x41f8
leaq -0xc0(%rbp), %rsi
movq %rbx, %rdi
callq 0x99e6
movq -0xc0(%rbp), %rdi
jmp 0x88f9
leaq -0xd0(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
leaq -0xe0(%rbp), %rdi
movq %rax, %rsi
callq 0x41f8
leaq -0xe0(%rbp), %rsi
movq %rbx, %rdi
callq 0x96f0
movq -0xe0(%rbp), %rdi
jmp 0x88f9
leaq -0x130(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
leaq -0x140(%rbp), %rdi
movq %rax, %rsi
callq 0x41f8
movl $0x3, (%rbx)
movq -0x140(%rbp), %rdi
jmp 0x88f9
leaq -0xf0(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
leaq -0x100(%rbp), %rdi
movq %rax, %rsi
callq 0x41f8
leaq -0x100(%rbp), %rsi
movq %rbx, %rdi
callq 0x8e6a
movq -0x100(%rbp), %rdi
jmp 0x88f9
leaq -0x90(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
leaq -0xa0(%rbp), %rdi
movq %rax, %rsi
callq 0x41f8
leaq -0xa0(%rbp), %rsi
movq %rbx, %rdi
callq 0xa0ac
movq -0xa0(%rbp), %rdi
cmpq %r15, %rdi
je 0x8909
movq (%r15), %rsi
incq %rsi
callq 0x3200
testb %r14b, %r14b
je 0x8920
movq -0x80(%rbp), %rsi
callq 0xa444
movq -0x78(%rbp), %rsi
callq 0xa444
testb %r13b, %r13b
je 0x8930
movq %rbx, %rdi
movq %r12, %rsi
callq 0xa2b8
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x86a7(%rip), %rdi      # 0x10ff0
leaq 0x3d20(%rip), %rsi      # 0xc670
movl $0x1a, %edx
callq 0x3250
movl (%rbx), %esi
movq 0x868d(%rip), %rdi      # 0x10ff0
callq 0x3330
movq %rax, %rdi
callq 0x3110
movl $0x1, %edi
callq 0x3260
movq %rax, %r14
movq -0xa0(%rbp), %rdi
cmpq %r15, %rdi
je 0x89fd
movq -0x90(%rbp), %rsi
jmp 0x89f0
movq %rax, %r14
movq -0x100(%rbp), %rdi
cmpq %r15, %rdi
je 0x89fd
movq -0xf0(%rbp), %rsi
jmp 0x89f0
movq %rax, %r14
movq -0x120(%rbp), %rdi
cmpq %r15, %rdi
je 0x89fd
movq -0x110(%rbp), %rsi
jmp 0x89f0
movq %rax, %r14
movq -0xe0(%rbp), %rdi
cmpq %r15, %rdi
je 0x89fd
movq -0xd0(%rbp), %rsi
jmp 0x89f0
movq %rax, %r14
movq -0xc0(%rbp), %rdi
cmpq %r15, %rdi
je 0x89fd
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x3200
jmp 0x89fd
movq %rax, %r14
movq 0x130(%rbx), %rdi
cmpq -0x30(%rbp), %rdi
je 0x8a19
movq -0x30(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0x110(%rbx), %rdi
cmpq -0x38(%rbp), %rdi
je 0x8a35
movq -0x38(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0xf0(%rbx), %rdi
cmpq -0x40(%rbp), %rdi
je 0x8a51
movq -0x40(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0xd0(%rbx), %rdi
cmpq -0x48(%rbp), %rdi
je 0x8a6d
movq -0x48(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0xb0(%rbx), %rdi
cmpq -0x50(%rbp), %rdi
je 0x8a89
movq -0x50(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0x80(%rbx), %rdi
cmpq -0x58(%rbp), %rdi
je 0x8aa5
movq -0x58(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0x60(%rbx), %rdi
cmpq -0x60(%rbp), %rdi
je 0x8abe
movq -0x60(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq -0x78(%rbp), %rax
movq (%rax), %rdi
cmpq -0x68(%rbp), %rdi
je 0x8ada
movq -0x68(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq -0x80(%rbp), %rax
movq (%rax), %rdi
cmpq -0x70(%rbp), %rdi
je 0x8af6
movq -0x70(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq %r14, %rdi
callq 0x3340