// File: millanek[P]evo/process_vcf_annotation_tools.cpp
// Function: Annotation::annotateGeneStartsEnds()
void Annotation::annotateGeneStartsEnds() {
    for (std::map<std::string, std::vector<std::vector<std::string> > >::iterator it = annotationMap.begin(); it != annotationMap.end(); it++) {
        std::vector<std::vector<std::string> > thisScaffoldAnnotation = it->second;
        std::vector<std::string> thisScaffoldTranscriptStartEnd;
        std::map<std::string, std::vector<std::string> > thisScaffoldTranscriptMap;
        for (std::vector<std::vector<std::string> >::size_type i = 0; i != thisScaffoldAnnotation.size(); i++) {
            std::vector<string> annotLineVec = split(thisScaffoldAnnotation[i][0], '\t');
            //if (i == 0) { print_vector_stream(annotLineVec, std::cerr); }
            string transcriptName = annotLineVec[4]; string strand = annotLineVec[3];
            string transcriptStart; string transcriptEnd;
            if (strand == "+") { transcriptStart = annotLineVec[1]; } else { transcriptEnd = annotLineVec[2]; }
            annotLineVec = split(thisScaffoldAnnotation[i].back(), '\t');
            if (strand == "+") { transcriptEnd = annotLineVec[2]; } else { transcriptStart = annotLineVec[1]; }
            // if (i == 0) { print_vector_stream(annotLineVec, std::cerr); }
            string transcriptStartEnd = transcriptName + "\t" + transcriptStart + "\t" + transcriptEnd + "\t" + strand;
            thisScaffoldTranscriptStartEnd.push_back(transcriptStartEnd);
            thisScaffoldTranscriptMap[transcriptName] = thisScaffoldAnnotation[i];
            //std::cerr << "Annotation processed: " << transcriptName << std::endl;
        }
        //std::cerr << "Annotation processed: " << it->first << std::endl;
        annotationMapTranscriptMap[it->first] = thisScaffoldTranscriptMap;
        transcriptStartEndMap[it->first] = thisScaffoldTranscriptStartEnd;
        thisScaffoldTranscriptMap.clear();
        thisScaffoldTranscriptStartEnd.clear();
        }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x260, %rsp            # imm = 0x260
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0x59460
movq %rax, -0x10(%rbp)
movq -0x210(%rbp), %rdi
callq 0x42260
movq %rax, -0x18(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x90110
testb $0x1, %al
jne 0x8faf9
jmp 0x900ec
leaq -0x10(%rbp), %rdi
callq 0x90140
movq %rax, %rsi
addq $0x20, %rsi
leaq -0x30(%rbp), %rdi
callq 0x45190
leaq -0x48(%rbp), %rdi
callq 0x48da0
leaq -0x78(%rbp), %rdi
callq 0x58920
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x218(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x409f0
movq %rax, %rcx
movq -0x218(%rbp), %rax
cmpq %rcx, %rax
je 0x8ffff
movq -0x80(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x3ec10
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x98(%rbp), %rdi
movl $0x9, %edx
callq 0x7bbe0
jmp 0x8fb82
leaq -0x98(%rbp), %rdi
movl $0x4, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0xc8(%rbp), %rdi
callq 0xa250
jmp 0x8fba4
leaq -0x98(%rbp), %rdi
movl $0x3, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0xe8(%rbp), %rdi
callq 0xa250
jmp 0x8fbc6
leaq -0x108(%rbp), %rdi
callq 0xa820
leaq -0x128(%rbp), %rdi
callq 0xa820
leaq 0xa4f1e(%rip), %rsi     # 0x134b03
leaq -0xe8(%rbp), %rdi
callq 0x2d770
movb %al, -0x219(%rbp)
jmp 0x8fbf9
movb -0x219(%rbp), %al
testb $0x1, %al
jne 0x8fc08
jmp 0x8fc8b
leaq -0x98(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x108(%rbp), %rdi
callq 0xa060
jmp 0x8fc2a
jmp 0x8fcaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x900cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x8ffee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x8ffe2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x8ffbe
leaq -0x98(%rbp), %rdi
movl $0x2, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x128(%rbp), %rdi
callq 0xa060
jmp 0x8fcad
jmp 0x8fcaf
movq -0x80(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x3ec10
movq %rax, %rdi
callq 0x5fcc0
movq %rax, %rsi
leaq -0x140(%rbp), %rdi
movl $0x9, %edx
callq 0x7bbe0
jmp 0x8fcda
leaq -0x98(%rbp), %rdi
leaq -0x140(%rbp), %rsi
movq %rsi, -0x228(%rbp)
callq 0x50c30
movq -0x228(%rbp), %rdi
callq 0x3dfa0
leaq 0xa4dfc(%rip), %rsi     # 0x134b03
leaq -0xe8(%rbp), %rdi
callq 0x2d770
movb %al, -0x21a(%rbp)
jmp 0x8fd1b
movb -0x21a(%rbp), %al
testb $0x1, %al
jne 0x8fd27
jmp 0x8fd4b
leaq -0x98(%rbp), %rdi
movl $0x2, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x128(%rbp), %rdi
callq 0xa060
jmp 0x8fd49
jmp 0x8fd6f
leaq -0x98(%rbp), %rdi
movl $0x1, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x108(%rbp), %rdi
callq 0xa060
jmp 0x8fd6d
jmp 0x8fd6f
leaq 0xa6168(%rip), %rdx     # 0x135ede
leaq -0x200(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3da80
jmp 0x8fd8b
leaq -0x1e0(%rbp), %rdi
leaq -0x200(%rbp), %rsi
leaq -0x108(%rbp), %rdx
callq 0x3da30
jmp 0x8fda7
leaq 0xa6130(%rip), %rdx     # 0x135ede
leaq -0x1c0(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x3e020
jmp 0x8fdc3
leaq -0x1a0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
leaq -0x128(%rbp), %rdx
callq 0x3da30
jmp 0x8fddf
leaq 0xa60f8(%rip), %rdx     # 0x135ede
leaq -0x180(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x3e020
jmp 0x8fdfb
leaq -0x160(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
callq 0x3da30
jmp 0x8fe17
leaq -0x180(%rbp), %rdi
callq 0xac88
leaq -0x1a0(%rbp), %rdi
callq 0xac88
leaq -0x1c0(%rbp), %rdi
callq 0xac88
leaq -0x1e0(%rbp), %rdi
callq 0xac88
leaq -0x200(%rbp), %rdi
callq 0xac88
leaq -0x48(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x48dc0
jmp 0x8fe65
movq -0x80(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x3ec10
movq %rax, -0x238(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x6b400
movq %rax, -0x230(%rbp)
jmp 0x8fe92
movq -0x238(%rbp), %rsi
movq -0x230(%rbp), %rdi
callq 0x43c10
jmp 0x8fea7
leaq -0x160(%rbp), %rdi
callq 0xac88
leaq -0x128(%rbp), %rdi
callq 0xac88
leaq -0x108(%rbp), %rdi
callq 0xac88
leaq -0xe8(%rbp), %rdi
callq 0xac88
leaq -0xc8(%rbp), %rdi
callq 0xac88
leaq -0x98(%rbp), %rdi
callq 0x3dfa0
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x8fb2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x8ff92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x8ff86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x8ff7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x8ff6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x180(%rbp), %rdi
callq 0xac88
leaq -0x1a0(%rbp), %rdi
callq 0xac88
leaq -0x1c0(%rbp), %rdi
callq 0xac88
leaq -0x1e0(%rbp), %rdi
callq 0xac88
leaq -0x200(%rbp), %rdi
callq 0xac88
jmp 0x8ffbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x160(%rbp), %rdi
callq 0xac88
leaq -0x128(%rbp), %rdi
callq 0xac88
leaq -0x108(%rbp), %rdi
callq 0xac88
leaq -0xe8(%rbp), %rdi
callq 0xac88
leaq -0xc8(%rbp), %rdi
callq 0xac88
leaq -0x98(%rbp), %rdi
callq 0x3dfa0
jmp 0x900cf
movq -0x210(%rbp), %rax
addq $0x90, %rax
movq %rax, -0x248(%rbp)
leaq -0x10(%rbp), %rdi
callq 0x90140
movq -0x248(%rbp), %rdi
movq %rax, %rsi
callq 0x6b320
movq %rax, -0x240(%rbp)
jmp 0x90034
movq -0x240(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x90170
jmp 0x90046
movq -0x210(%rbp), %rax
addq $0x60, %rax
movq %rax, -0x258(%rbp)
leaq -0x10(%rbp), %rdi
callq 0x90140
movq -0x258(%rbp), %rdi
movq %rax, %rsi
callq 0x6b400
movq %rax, -0x250(%rbp)
jmp 0x90079
movq -0x250(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x43c10
jmp 0x9008b
leaq -0x78(%rbp), %rdi
callq 0x901a0
leaq -0x48(%rbp), %rdi
callq 0x591f0
leaq -0x78(%rbp), %rdi
callq 0x58f00
leaq -0x48(%rbp), %rdi
callq 0x3dfa0
leaq -0x30(%rbp), %rdi
callq 0x3ec50
leaq -0x10(%rbp), %rdi
xorl %esi, %esi
callq 0x901c0
movq %rax, -0x208(%rbp)
jmp 0x8fad3
leaq -0x78(%rbp), %rdi
callq 0x58f00
leaq -0x48(%rbp), %rdi
callq 0x3dfa0
leaq -0x30(%rbp), %rdi
callq 0x3ec50
jmp 0x900f5
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
movq -0xa0(%rbp), %rdi
callq 0xab50
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)