// File: /workspace/github_cpp_makefile_star2_O2/millanek[P]evo/./process_vcf_annotation_tools.h
// Function: Annotation::getCategoryOfSNP(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
string getCategoryOfSNP(const string& SNPscaffold, const string& SNPlocus) {
        string SNPcategory = "other non-coding";
        std::vector<string> scaffoldTranscriptStartEnd = transcriptStartEndMap[SNPscaffold];
        string inGene = "";
        for (std::vector<std::vector<string> >::size_type i = 0; i != scaffoldTranscriptStartEnd.size(); i++) {
            std::vector<string> startEndVec = split(scaffoldTranscriptStartEnd[i], '\t');
            if (SNPlocus >= startEndVec[1] && SNPlocus <= startEndVec[2]) {
                string thisTranscript = startEndVec[0];
                int numDots = (int)std::count(thisTranscript.begin(), thisTranscript.end(), '.');
                SNPcategory = "intron";
                if (numDots == 4)  inGene = geneFromTranscript(thisTranscript);
                else inGene = thisTranscript;
                std::vector<string> exons = annotationMapTranscriptMap[SNPscaffold][thisTranscript];
                for (std::vector<string>::size_type j = 0; j != exons.size(); j++) {
                    std::vector<string> exonVec = split(exons[j], '\t');
                    if (SNPlocus >= exonVec[1] && SNPlocus <= exonVec[2]) {
                        SNPcategory = "exon";
                    }
                    break;
                }
                if (SNPcategory == "exon") { break; }
            } //else if (SNPcategory == "intron") { if (inGene != geneFromTranscript(startEndVec[0])) { break; } }
        }
        return SNPcategory;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rcx, %r14
movq %rdx, %rbx
movq %rsi, %r15
leaq 0x3a9ec(%rip), %rsi     # 0xab97d
leaq 0xa8(%rsp), %rdx
movq %rdi, 0x8(%rsp)
callq 0x21904
movq %r15, 0x10(%rsp)
leaq 0x60(%r15), %rdi
movq %rbx, 0x38(%rsp)
movq %rbx, %rsi
callq 0x3abd8
leaq 0x90(%rsp), %rdi
movq %rax, %rsi
callq 0x297dc
leaq 0x28e4f(%rip), %rsi     # 0x99e1f
leaq 0xa8(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x21904
addq $0x90, 0x10(%rsp)
xorl %r15d, %r15d
leaq 0x60(%rsp), %r13
pushq $0x9
popq %rbp
xorl %r12d, %r12d
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %rax, %r12
je 0x711a9
addq %r15, %rsi
movq %r13, %rdi
movl %ebp, %edx
callq 0x40349
movq 0x60(%rsp), %rsi
addq $0x20, %rsi
movq %r14, %rdi
callq 0x722e8
testb %al, %al
je 0x7118b
movq 0x60(%rsp), %rsi
addq $0x40, %rsi
movq %r14, %rdi
callq 0x722fd
testb %al, %al
je 0x7118b
movq 0x60(%rsp), %rsi
leaq 0x18(%rsp), %rdi
callq 0x8600
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
addq %rdi, %rsi
movb $0x2e, 0x40(%rsp)
leaq 0x40(%rsp), %rdx
callq 0x32af0
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x279c9(%rip), %rsi     # 0x98a5b
callq 0x88f0
cmpl $0x4, %ebx
jne 0x710c8
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
leaq 0x18(%rsp), %rsi
callq 0x3293a
leaq 0xa8(%rsp), %rdi
movq %rbx, %rsi
callq 0x8550
movq %rbx, %rdi
callq 0x8978
jmp 0x710da
leaq 0xa8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x82a0
movq 0x10(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x3ab72
movq %rax, %rdi
leaq 0x18(%rsp), %rsi
callq 0x3abd8
leaq 0x40(%rsp), %rdi
movq %rax, %rsi
callq 0x297dc
movq 0x40(%rsp), %rsi
cmpq %rsi, 0x48(%rsp)
je 0x71160
leaq 0x78(%rsp), %rdi
movl %ebp, %edx
callq 0x40349
movq 0x78(%rsp), %rsi
addq $0x20, %rsi
movq %r14, %rdi
callq 0x722e8
testb %al, %al
je 0x71156
movq 0x78(%rsp), %rsi
addq $0x40, %rsi
movq %r14, %rdi
callq 0x722fd
testb %al, %al
je 0x71156
movq 0x8(%rsp), %rdi
leaq 0x2eedb(%rip), %rsi     # 0xa002c
callq 0x88f0
leaq 0x78(%rsp), %rdi
callq 0x28a08
movq 0x8(%rsp), %rdi
leaq 0x2eec0(%rip), %rsi     # 0xa002c
callq 0x2193f
movl %eax, %ebx
leaq 0x40(%rsp), %rdi
callq 0x28a08
leaq 0x18(%rsp), %rdi
callq 0x8978
testb %bl, %bl
jne 0x7119f
movq %r13, %rdi
callq 0x28a08
incq %r12
addq $0x20, %r15
jmp 0x70ff9
leaq 0x60(%rsp), %rdi
callq 0x28a08
leaq 0xa8(%rsp), %rdi
callq 0x8978
leaq 0x90(%rsp), %rdi
callq 0x28a08
movq 0x8(%rsp), %rax
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x78(%rsp), %rdi
callq 0x28a08
jmp 0x711f8
movq %rax, %r14
jmp 0x71236
movq %rax, %r14
jmp 0x71243
jmp 0x7120d
movq %rax, %r14
leaq 0x40(%rsp), %rdi
callq 0x28a08
jmp 0x71210
jmp 0x7120d
movq %rax, %r14
jmp 0x7121a
jmp 0x7120d
movq %rax, %r14
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x60(%rsp), %rdi
callq 0x28a08
jmp 0x71229
movq %rax, %r14
leaq 0xa8(%rsp), %rdi
callq 0x8978
leaq 0x90(%rsp), %rdi
callq 0x28a08
movq 0x8(%rsp), %rdi
callq 0x8978
movq %r14, %rdi
callq 0x8870