// File: 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
subq $0x160, %rsp            # imm = 0x160
movq %rsi, -0x148(%rbp)
movb %r8b, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
andb $0x1, %cl
movb %cl, -0x15(%rbp)
andb $0x1, %al
movb %al, -0x16(%rbp)
movq %r9, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
addq $0x8, %rdi
movq %rdi, -0x140(%rbp)
callq 0x3380
movq -0xf8(%rbp), %rdi
addq $0x28, %rdi
movq %rdi, -0x138(%rbp)
callq 0x3380
movq -0xf8(%rbp), %rdi
addq $0x60, %rdi
movq %rdi, -0x130(%rbp)
callq 0x3380
movq -0xf8(%rbp), %rdi
subq $-0x80, %rdi
movq %rdi, -0x128(%rbp)
callq 0x3380
movq -0xf8(%rbp), %rdi
addq $0xb0, %rdi
movq %rdi, -0x120(%rbp)
callq 0x3380
movq -0xf8(%rbp), %rdi
addq $0xd0, %rdi
movq %rdi, -0x118(%rbp)
callq 0x3380
movq -0xf8(%rbp), %rdi
addq $0xf0, %rdi
movq %rdi, -0x110(%rbp)
callq 0x3380
movq -0xf8(%rbp), %rdi
addq $0x110, %rdi            # imm = 0x110
movq %rdi, -0x108(%rbp)
callq 0x3380
movq -0xf8(%rbp), %rdi
addq $0x130, %rdi            # imm = 0x130
movq %rdi, -0x100(%rbp)
callq 0x3380
movq -0xf8(%rbp), %rdi
callq 0xf830
jmp 0xf4df
movq -0xf8(%rbp), %rax
movl -0x14(%rbp), %ecx
movl %ecx, (%rax)
movl (%rax), %eax
movq %rax, -0x150(%rbp)
subq $0x5, %rax
ja 0xf71b
movq -0x150(%rbp), %rax
leaq 0x6104(%rip), %rcx      # 0x15610
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0xf7ad
movq -0x148(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x3130
jmp 0xf538
movq -0xf8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xf890
jmp 0xf54a
leaq -0x50(%rbp), %rdi
callq 0x3508
jmp 0xf774
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x3508
jmp 0xf7ad
movq -0x148(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0x3130
jmp 0xf584
movq -0xf8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0xfe50
jmp 0xf596
leaq -0x70(%rbp), %rdi
callq 0x3508
jmp 0xf774
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x3508
jmp 0xf7ad
movq -0x148(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x3130
jmp 0xf5d3
movq -0xf8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x10d40
jmp 0xf5e8
leaq -0x90(%rbp), %rdi
callq 0x3508
jmp 0xf774
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x3508
jmp 0xf7ad
movq -0x148(%rbp), %rsi
leaq -0xb0(%rbp), %rdi
callq 0x3130
jmp 0xf62b
movq -0xf8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x11220
jmp 0xf640
leaq -0xb0(%rbp), %rdi
callq 0x3508
jmp 0xf774
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x3508
jmp 0xf7ad
movq -0x148(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0x3130
jmp 0xf683
movq -0xf8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x11240
jmp 0xf698
leaq -0xd0(%rbp), %rdi
callq 0x3508
jmp 0xf774
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x3508
jmp 0xf7ad
movq -0x148(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x3130
jmp 0xf6db
movq -0xf8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x11f00
jmp 0xf6f0
leaq -0xf0(%rbp), %rdi
callq 0x3508
jmp 0xf774
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x3508
jmp 0xf7ad
movq 0xe8ce(%rip), %rdi      # 0x1dff0
leaq 0x5eff(%rip), %rsi      # 0x15628
callq 0x3270
movq %rax, -0x158(%rbp)
jmp 0xf737
movq -0x158(%rbp), %rdi
movq -0xf8(%rbp), %rax
movl (%rax), %esi
callq 0x3460
movq %rax, -0x160(%rbp)
jmp 0xf755
movq -0x160(%rbp), %rdi
movq 0xe83d(%rip), %rsi      # 0x1dfa0
callq 0x32c0
jmp 0xf76a
movl $0x1, %edi
callq 0x3320
testb $0x1, -0x15(%rbp)
je 0xf78a
movq -0xf8(%rbp), %rdi
callq 0x121b0
jmp 0xf788
jmp 0xf78a
testb $0x1, -0x16(%rbp)
je 0xf7a4
movq -0xf8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x121f0
jmp 0xf7a2
jmp 0xf7a4
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
movq -0x100(%rbp), %rdi
callq 0x3508
movq -0x108(%rbp), %rdi
callq 0x3508
movq -0x110(%rbp), %rdi
callq 0x3508
movq -0x118(%rbp), %rdi
callq 0x3508
movq -0x120(%rbp), %rdi
callq 0x3508
movq -0x128(%rbp), %rdi
callq 0x3508
movq -0x130(%rbp), %rdi
callq 0x3508
movq -0x138(%rbp), %rdi
callq 0x3508
movq -0x140(%rbp), %rdi
callq 0x3508
movq -0x28(%rbp), %rdi
callq 0x3470
nopw %cs:(%rax,%rax)