// File: /workspace/github_cpp_makefile_star2_O2/millanek[P]evo/process_vcf_utils.cpp
// Function: readMultiFastaToMap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
std::map<string,string> readMultiFastaToMap(const string& fileName) {
    std::map<string, string> fastaSeqs;
    string line;
    std::ifstream* fastaFile = new std::ifstream(fileName.c_str());
    getline(*fastaFile, line);
    std::vector<std::string> fields = split(line, ' ');
    string currentScaffold = fields[0].substr(1,string::npos);
    fastaSeqs[currentScaffold] = ""; fastaSeqs[currentScaffold].reserve(50000000);
    while (getline(*fastaFile, line)) {
        if (line[0] != '>') {
            fastaSeqs[currentScaffold].append(line);
        } else {
            int l = (int)fastaSeqs[currentScaffold].length();
            std::cerr << currentScaffold << " length: " << l << std::endl;
            fastaSeqs[currentScaffold].shrink_to_fit();
            std::vector<std::string> fields = split(line, ' ');
            currentScaffold = fields[0].substr(1,string::npos);
            fastaSeqs[currentScaffold] = ""; fastaSeqs[currentScaffold].reserve(50000000);
        }
    }
    std::cerr << currentScaffold << " length: " << (int)fastaSeqs[currentScaffold].length() << std::endl;
    return fastaSeqs;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rdi, %rbx
leaq 0x8(%rdi), %rax
andl $0x0, 0x8(%rdi)
andq $0x0, 0x10(%rdi)
movq %rax, 0x18(%rdi)
movq %rax, 0x20(%rdi)
andq $0x0, 0x28(%rdi)
movq %rsi, %r15
leaq 0x38(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r14
movq (%r15), %rsi
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8890
leaq 0x28(%rsp), %rsi
movq %r14, %rdi
callq 0x80a0
leaq 0x60(%rsp), %rdi
leaq 0x28(%rsp), %rsi
pushq $0x20
popq %rdx
callq 0x40349
movq 0x60(%rsp), %rsi
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rdx
pushq $-0x1
popq %rcx
callq 0x84b0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3210e
leaq 0x5735c(%rip), %rsi     # 0x99e1f
movq %rax, %rdi
callq 0x88f0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3210e
movl $0x2faf080, %esi        # imm = 0x2FAF080
movq %rax, %rdi
callq 0x8700
leaq 0x28(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x78(%rsp), %rbp
movq %r14, %rdi
movq %r15, %rsi
callq 0x80a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x42c04
movq 0x28(%rsp), %rax
cmpb $0x3e, (%rax)
jne 0x42be9
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3210e
movl 0x8(%rax), %r13d
movq 0x9a4b3(%rip), %rdi     # 0xdcfe8
movq %r12, %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x60983(%rip), %rsi     # 0xa34ca
callq 0x8480
movq %rax, %rdi
movl %r13d, %esi
callq 0x8840
movq %rax, %rdi
callq 0x8230
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3210e
movq %rax, %rdi
callq 0x8930
leaq 0x48(%rsp), %rdi
movq %r15, %rsi
pushq $0x20
popq %rdx
callq 0x40349
movq 0x48(%rsp), %rsi
movq %rbp, %rdi
pushq $0x1
popq %rdx
pushq $-0x1
popq %rcx
callq 0x84b0
movq %r12, %rdi
movq %rbp, %rsi
callq 0x8550
movq %rbp, %rdi
callq 0x8978
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3210e
movq %rax, %rdi
leaq 0x57262(%rip), %rsi     # 0x99e1f
callq 0x88f0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3210e
movl $0x2faf080, %esi        # imm = 0x2FAF080
movq %rax, %rdi
callq 0x8700
leaq 0x48(%rsp), %rdi
callq 0x28a08
jmp 0x42af4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3210e
movq %rax, %rdi
movq %r15, %rsi
callq 0x8920
jmp 0x42af4
movq 0x9a3dd(%rip), %rdi     # 0xdcfe8
leaq 0x8(%rsp), %rsi
callq 0x8430
leaq 0x608ae(%rip), %rsi     # 0xa34ca
movq %rax, %rdi
callq 0x8480
movq %rax, %r14
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3210e
movl 0x8(%rax), %esi
movq %r14, %rdi
callq 0x8840
movq %rax, %rdi
callq 0x8230
leaq 0x8(%rsp), %rdi
callq 0x8978
leaq 0x60(%rsp), %rdi
callq 0x28a08
leaq 0x28(%rsp), %rdi
callq 0x8978
movq %rbx, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
jmp 0x42cbc
jmp 0x42c93
movq %rax, %r15
movl $0x208, %esi            # imm = 0x208
movq %r14, %rdi
callq 0x84a0
jmp 0x42cc6
movq %rax, %r15
jmp 0x42cc6
jmp 0x42caf
jmp 0x42c9e
jmp 0x42caf
movq %rax, %r15
leaq 0x48(%rsp), %rdi
callq 0x28a08
jmp 0x42cb2
jmp 0x42caf
movq %rax, %r15
leaq 0x8(%rsp), %rdi
callq 0x8978
leaq 0x60(%rsp), %rdi
callq 0x28a08
leaq 0x28(%rsp), %rdi
callq 0x8978
movq %rbx, %rdi
callq 0x33008
movq %r15, %rdi
callq 0x8870