// File: /workspace/github_cpp_makefile_star2_O2/millanek[P]evo/./process_vcf_annotation_tools.h
// Function: Annotation::loadAnnotationMap[abi:cxx11](std::basic_ifstream<char, std::char_traits<char>>*&, bool)
std::map<string, std::vector<std::vector<string> > > loadAnnotationMap(std::ifstream*& geneFile, const bool bUsePartial) {
        std::map<string, std::vector<std::vector<string> > > annotationMap;
        std::vector<std::vector<string> > annotation;
        string line;
        std::vector<string> currentTranscript;
        getline(*geneFile, line);
        currentTranscript.push_back(line);
        std::vector<string> annotLineVec = split(line, '\t');
        std::vector<string> findIfPartial = split(annotLineVec[4], '-');
        string currentScaffold = annotLineVec[0];
        bool bThisTranscriptPartial; string currentTranscriptName = getTranscriptName(annotLineVec[4], bThisTranscriptPartial);
        while (getline(*geneFile, line)) {
            std::vector<string> annotLineVec = split(line, '\t');
            bool bCurrentLinePartial = false; string currentLineTranscriptName = getTranscriptName(annotLineVec[4], bCurrentLinePartial);
            if (bCurrentLinePartial)
                bThisTranscriptPartial = true;
            if (annotLineVec[0] == currentScaffold) {
                if (currentLineTranscriptName == currentTranscriptName) {
                    currentTranscript.push_back(line);
                } else {
                    if (!bThisTranscriptPartial || bUsePartial)
                        annotation.push_back(currentTranscript);
                    currentTranscript.clear();
                    currentTranscript.push_back(line);
                    currentTranscriptName = currentLineTranscriptName;
                    bThisTranscriptPartial = bCurrentLinePartial;
                }
            } else {
                if (!bThisTranscriptPartial || bUsePartial)
                    annotation.push_back(currentTranscript);
                annotationMap[currentScaffold] = annotation;
                annotation.clear();
                currentTranscript.clear();
                currentTranscript.push_back(line);
                currentScaffold = annotLineVec[0];
                currentTranscriptName = currentLineTranscriptName;
                bThisTranscriptPartial = bCurrentLinePartial;
            }
        }
        return annotationMap;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movl %ecx, 0xc(%rsp)
movq %rdx, %r14
movq %rsi, 0x18(%rsp)
leaq 0x8(%rdi), %rax
andl $0x0, 0x8(%rdi)
andq $0x0, 0x10(%rdi)
movq %rax, 0x18(%rdi)
movq %rax, 0x20(%rdi)
movq %rdi, 0x10(%rsp)
andq $0x0, 0x28(%rdi)
andq $0x0, 0x30(%rsp)
leaq 0x88(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movb $0x0, (%rax)
movaps %xmm0, 0x40(%rsp)
andq $0x0, 0x50(%rsp)
movq (%rdx), %rdi
leaq 0x78(%rsp), %rsi
callq 0x80a0
leaq 0x40(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x2b0a4
leaq 0x60(%rsp), %rdi
leaq 0x78(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x40349
movq 0x60(%rsp), %rsi
subq $-0x80, %rsi
leaq 0xf0(%rsp), %rdi
pushq $0x2d
popq %rdx
callq 0x40349
movq 0x60(%rsp), %rsi
leaq 0xd0(%rsp), %rdi
callq 0x8600
movq 0x60(%rsp), %rdx
subq $-0x80, %rdx
leaq 0xb0(%rsp), %rdi
leaq 0xa(%rsp), %rcx
movq 0x18(%rsp), %rsi
callq 0x325e2
leaq 0x78(%rsp), %r12
leaq 0x98(%rsp), %r13
leaq 0x108(%rsp), %rbx
leaq 0xd0(%rsp), %rbp
leaq 0x40(%rsp), %r15
movq (%r14), %rdi
movq %r12, %rsi
callq 0x80a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x324a7
movq %r13, %rdi
movq %r12, %rsi
pushq $0x9
popq %rdx
callq 0x40349
movb $0x0, 0xb(%rsp)
movq 0x98(%rsp), %rdx
subq $-0x80, %rdx
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
leaq 0xb(%rsp), %rcx
callq 0x325e2
cmpb $0x1, 0xb(%rsp)
jne 0x3239c
movb $0x1, 0xa(%rsp)
movq 0x98(%rsp), %rdi
movq %rbp, %rsi
callq 0x26b06
testb %al, %al
je 0x323d8
movq %rbx, %rdi
leaq 0xb0(%rsp), %rsi
callq 0x26b06
testb %al, %al
je 0x3244c
movq %r15, %rdi
movq %r12, %rsi
callq 0x2b0a4
jmp 0x32492
movb 0xa(%rsp), %al
xorb $0x1, %al
orb 0xc(%rsp), %al
cmpb $0x1, %al
jne 0x323f3
leaq 0x20(%rsp), %rdi
movq %r15, %rsi
callq 0x29502
movq 0x10(%rsp), %rdi
movq %rbp, %rsi
callq 0x2957c
movq %rax, %rdi
leaq 0x20(%rsp), %rsi
callq 0x295e2
leaq 0x20(%rsp), %rdi
callq 0x296c0
movq %r15, %rdi
callq 0x32680
movq %r15, %rdi
movq %r12, %rsi
callq 0x2b0a4
movq 0x98(%rsp), %rsi
movq %rbp, %rdi
callq 0x82a0
leaq 0xb0(%rsp), %rdi
movq %rbx, %rsi
callq 0x82a0
jmp 0x3248a
movb 0xa(%rsp), %al
xorb $0x1, %al
orb 0xc(%rsp), %al
cmpb $0x1, %al
jne 0x32467
leaq 0x20(%rsp), %rdi
movq %r15, %rsi
callq 0x29502
movq %r15, %rdi
callq 0x32680
movq %r15, %rdi
movq %r12, %rsi
callq 0x2b0a4
leaq 0xb0(%rsp), %rdi
movq %rbx, %rsi
callq 0x82a0
movb 0xb(%rsp), %al
movb %al, 0xa(%rsp)
movq %rbx, %rdi
callq 0x8978
movq %r13, %rdi
callq 0x28a08
jmp 0x32342
leaq 0xb0(%rsp), %rdi
callq 0x8978
leaq 0xd0(%rsp), %rdi
callq 0x8978
leaq 0xf0(%rsp), %rdi
callq 0x28a08
leaq 0x60(%rsp), %rdi
callq 0x28a08
leaq 0x40(%rsp), %rdi
callq 0x28a08
leaq 0x78(%rsp), %rdi
callq 0x8978
leaq 0x20(%rsp), %rdi
callq 0x29054
movq 0x10(%rsp), %rax
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x32559
movq %rax, %rbx
jmp 0x32566
movq %rax, %rbx
jmp 0x32573
jmp 0x3251e
movq %rax, %rbx
jmp 0x3257d
movq %rax, %rbx
jmp 0x3253f
jmp 0x3252a
movq %rax, %rbx
jmp 0x3254c
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x8978
leaq 0x98(%rsp), %rdi
callq 0x28a08
leaq 0xb0(%rsp), %rdi
callq 0x8978
leaq 0xd0(%rsp), %rdi
callq 0x8978
leaq 0xf0(%rsp), %rdi
callq 0x28a08
leaq 0x60(%rsp), %rdi
callq 0x28a08
leaq 0x40(%rsp), %rdi
callq 0x28a08
leaq 0x78(%rsp), %rdi
callq 0x8978
leaq 0x20(%rsp), %rdi
callq 0x29054
movq 0x10(%rsp), %rdi
callq 0x2a588
movq %rbx, %rdi
callq 0x8870
nop