// File: /workspace/github_cpp_makefile_star2_O3/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 0x895a
movq %r9, %r12
movl %r8d, %r13d
movl %edx, %eax
leaq 0x3eb6(%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 0x41d6
leaq -0x120(%rbp), %rsi
movq %rbx, %rdi
callq 0x8b42
movq -0x120(%rbp), %rdi
jmp 0x8911
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 0x41d6
leaq -0xc0(%rbp), %rsi
movq %rbx, %rdi
callq 0x99fe
movq -0xc0(%rbp), %rdi
jmp 0x8911
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 0x41d6
leaq -0xe0(%rbp), %rsi
movq %rbx, %rdi
callq 0x9708
movq -0xe0(%rbp), %rdi
jmp 0x8911
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 0x41d6
movl $0x3, (%rbx)
movq -0x140(%rbp), %rdi
jmp 0x8911
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 0x41d6
leaq -0x100(%rbp), %rsi
movq %rbx, %rdi
callq 0x8e82
movq -0x100(%rbp), %rdi
jmp 0x8911
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 0x41d6
leaq -0xa0(%rbp), %rsi
movq %rbx, %rdi
callq 0xa0c8
movq -0xa0(%rbp), %rdi
cmpq %r15, %rdi
je 0x8921
movq (%r15), %rsi
incq %rsi
callq 0x3200
testb %r14b, %r14b
je 0x8938
movq -0x80(%rbp), %rsi
callq 0xa460
movq -0x78(%rbp), %rsi
callq 0xa460
testb %r13b, %r13b
je 0x8948
movq %rbx, %rdi
movq %r12, %rsi
callq 0xa2d4
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x868f(%rip), %rdi      # 0x10ff0
leaq 0x3d08(%rip), %rsi      # 0xc670
movl $0x1a, %edx
callq 0x3250
movl (%rbx), %esi
movq 0x8675(%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 0x8a15
movq -0x90(%rbp), %rsi
jmp 0x8a08
movq %rax, %r14
movq -0x100(%rbp), %rdi
cmpq %r15, %rdi
je 0x8a15
movq -0xf0(%rbp), %rsi
jmp 0x8a08
movq %rax, %r14
movq -0x120(%rbp), %rdi
cmpq %r15, %rdi
je 0x8a15
movq -0x110(%rbp), %rsi
jmp 0x8a08
movq %rax, %r14
movq -0xe0(%rbp), %rdi
cmpq %r15, %rdi
je 0x8a15
movq -0xd0(%rbp), %rsi
jmp 0x8a08
movq %rax, %r14
movq -0xc0(%rbp), %rdi
cmpq %r15, %rdi
je 0x8a15
movq -0xb0(%rbp), %rsi
incq %rsi
callq 0x3200
jmp 0x8a15
movq %rax, %r14
movq 0x130(%rbx), %rdi
cmpq -0x30(%rbp), %rdi
je 0x8a31
movq -0x30(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0x110(%rbx), %rdi
cmpq -0x38(%rbp), %rdi
je 0x8a4d
movq -0x38(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0xf0(%rbx), %rdi
cmpq -0x40(%rbp), %rdi
je 0x8a69
movq -0x40(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0xd0(%rbx), %rdi
cmpq -0x48(%rbp), %rdi
je 0x8a85
movq -0x48(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0xb0(%rbx), %rdi
cmpq -0x50(%rbp), %rdi
je 0x8aa1
movq -0x50(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0x80(%rbx), %rdi
cmpq -0x58(%rbp), %rdi
je 0x8abd
movq -0x58(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq 0x60(%rbx), %rdi
cmpq -0x60(%rbp), %rdi
je 0x8ad6
movq -0x60(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq -0x78(%rbp), %rax
movq (%rax), %rdi
cmpq -0x68(%rbp), %rdi
je 0x8af2
movq -0x68(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq -0x80(%rbp), %rax
movq (%rax), %rdi
cmpq -0x70(%rbp), %rdi
je 0x8b0e
movq -0x70(%rbp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x3200
movq %r14, %rdi
callq 0x3340