// File: ncbi[P]amr/gff.cpp
// Function: GFF_sp::Annot::load_fasta2gff_dna(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void Annot::load_fasta2gff_dna (const string &fName)
{
  map<string/*DNA GFF id*/,string/*DNA FASTA id*/> gff2fasta;  
  {
    LineInput f (fName);
  	Istringstream iss;
  	string fasta_dna, gff_dna;
    while (f. nextLine ())
    {
    	iss. reset (f. line);
    	fasta_dna. clear ();
    	gff_dna. clear ();
    	iss >> fasta_dna >> gff_dna;
    	QC_ASSERT (! gff_dna. empty ());
    	gff2fasta [gff_dna] = fasta_dna;
    }
  }
  if (gff2fasta. empty ())
  	throw runtime_error ("File " + fName + " is empty");
  
  for (auto& it : prot2loci)
  {
    Set<Locus>& loci = it. second;
    for (const Locus& locus : loci)
    {
    	string s;
    	if (! find (gff2fasta, locus. contig, s))
    	  throw runtime_error ("FASTA DNA contig " + strQuote (locus. contig) + " is not found in GFF-DNA match file " + strQuote (fName));
    	var_cast (locus). contig = std::move (s);
    }
  }
}

// Assembly:
subq $0x788, %rsp            # imm = 0x788
movq %rdi, 0x780(%rsp)
movq %rsi, 0x778(%rsp)
movq 0x780(%rsp), %rax
movq %rax, 0x60(%rsp)
leaq 0x748(%rsp), %rdi
callq 0x2a8d0
movq 0x778(%rsp), %rsi
leaq 0x4a0(%rsp), %rdi
xorl %edx, %edx
callq 0x2f200
jmp 0xb200a
leaq 0x310(%rsp), %rdi
callq 0x2f270
jmp 0xb2019
leaq 0x2f0(%rsp), %rdi
callq 0xca10
leaq 0x2d0(%rsp), %rdi
callq 0xca10
leaq 0x4a0(%rsp), %rdi
callq 0x3d390
movb %al, 0x5f(%rsp)
jmp 0xb2046
movb 0x5f(%rsp), %al
testb $0x1, %al
jne 0xb2053
jmp 0xb23de
leaq 0x708(%rsp), %rsi
leaq 0x310(%rsp), %rdi
callq 0x2f350
jmp 0xb206a
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xc9a0
leaq 0x2d0(%rsp), %rdi
callq 0xc9a0
movq 0x48(%rsp), %rsi
leaq 0x310(%rsp), %rdi
callq 0xc950
movq %rax, 0x50(%rsp)
jmp 0xb20a2
movq 0x50(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0xc950
jmp 0xb20b6
callq 0xc090
movl $0x0, (%rax)
leaq 0x2d0(%rsp), %rdi
callq 0xcc10
testb $0x1, %al
jne 0xb20d7
jmp 0xb23a9
callq 0xc8c0
cmpl $0x0, %eax
jne 0xb239f
leaq 0x22f(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xcd00
movq 0x40(%rsp), %rdx
leaq 0x1eefb(%rip), %rsi     # 0xd0ffe
leaq 0x230(%rsp), %rdi
callq 0x29fd0
jmp 0xb2112
leaq 0x208(%rsp), %rdi
movl $0x1c2, %esi            # imm = 0x1C2
callq 0x2ded0
jmp 0xb2126
leaq 0x250(%rsp), %rdi
leaq 0x230(%rsp), %rsi
leaq 0x208(%rsp), %rdx
callq 0x2dde0
jmp 0xb2145
leaq 0x19a55(%rip), %rdx     # 0xcbba1
leaq 0x270(%rsp), %rdi
leaq 0x250(%rsp), %rsi
callq 0x2a2f0
jmp 0xb2163
leaq 0x1c7(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xcd00
movq 0x38(%rsp), %rdx
leaq 0x1f2d2(%rip), %rsi     # 0xd1453
leaq 0x1c8(%rsp), %rdi
callq 0x29fd0
jmp 0xb2190
leaq 0x1b87f(%rip), %rdx     # 0xcda16
leaq 0x1e8(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x2a2f0
jmp 0xb21ae
leaq 0x290(%rsp), %rdi
leaq 0x270(%rsp), %rsi
leaq 0x1e8(%rsp), %rdx
callq 0x2dde0
jmp 0xb21cd
leaq 0x1f2b6(%rip), %rdx     # 0xd148a
leaq 0x2b0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0x2a2f0
jmp 0xb21eb
leaq 0x2b0(%rsp), %rdi
callq 0x3e9b0
jmp 0xb21fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb28e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb24db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb24b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb238d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb2380
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb2373
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb2366
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb234c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb233f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb2332
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb2325
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0xce98
leaq 0x290(%rsp), %rdi
callq 0xce98
leaq 0x1e8(%rsp), %rdi
callq 0xce98
leaq 0x1c8(%rsp), %rdi
callq 0xce98
leaq 0x1c7(%rsp), %rdi
callq 0xc7a0
leaq 0x270(%rsp), %rdi
callq 0xce98
leaq 0x250(%rsp), %rdi
callq 0xce98
leaq 0x208(%rsp), %rdi
callq 0xce98
leaq 0x230(%rsp), %rdi
callq 0xce98
leaq 0x22f(%rsp), %rdi
callq 0xc7a0
jmp 0xb24b4
movl $0x1, %edi
callq 0xc8d0
leaq 0x748(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0x77a10
movq %rax, 0x30(%rsp)
jmp 0xb23c5
movq 0x30(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
callq 0xc080
jmp 0xb23d9
jmp 0xb2033
leaq 0x2d0(%rsp), %rdi
callq 0xce98
leaq 0x2f0(%rsp), %rdi
callq 0xce98
leaq 0x310(%rsp), %rdi
callq 0x2f450
leaq 0x4a0(%rsp), %rdi
callq 0x2f490
leaq 0x748(%rsp), %rdi
callq 0xb3910
testb $0x1, %al
jne 0xb2428
jmp 0xb2562
movb $0x1, 0x17f(%rsp)
movl $0x10, %edi
callq 0xc3b0
movq %rax, 0x28(%rsp)
movq 0x778(%rsp), %rdx
leaq 0x1ef0b(%rip), %rsi     # 0xd1359
leaq 0x180(%rsp), %rdi
callq 0x2a1c0
jmp 0xb245d
leaq 0x1efe5(%rip), %rdx     # 0xd1449
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x2a2f0
jmp 0xb247b
movq 0x28(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0xcbb0
jmp 0xb248f
movq 0x28(%rsp), %rdi
movb $0x0, 0x17f(%rsp)
movq 0x53b4d(%rip), %rsi     # 0x105ff0
movq 0x53ac6(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb28ff
leaq 0x2d0(%rsp), %rdi
callq 0xce98
leaq 0x2f0(%rsp), %rdi
callq 0xce98
leaq 0x310(%rsp), %rdi
callq 0x2f450
leaq 0x4a0(%rsp), %rdi
callq 0x2f490
jmp 0xb28e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb2547
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb253a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0xce98
leaq 0x180(%rsp), %rdi
callq 0xce98
testb $0x1, 0x17f(%rsp)
jne 0xb2553
jmp 0xb255d
movq 0x28(%rsp), %rdi
callq 0xc580
jmp 0xb28e5
movq 0x60(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x170(%rsp)
movq 0x170(%rsp), %rdi
callq 0xb3930
movq %rax, 0x168(%rsp)
movq 0x170(%rsp), %rdi
callq 0xb3960
movq %rax, 0x160(%rsp)
leaq 0x168(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0xb3990
testb $0x1, %al
jne 0xb25bb
jmp 0xb28d0
leaq 0x168(%rsp), %rdi
callq 0xb39b0
movq %rax, 0x158(%rsp)
movq 0x158(%rsp), %rax
addq $0x20, %rax
movq %rax, 0x150(%rsp)
movq 0x150(%rsp), %rax
movq %rax, 0x148(%rsp)
movq 0x148(%rsp), %rdi
callq 0xb39d0
movq %rax, 0x140(%rsp)
movq 0x148(%rsp), %rdi
callq 0xb3a00
movq %rax, 0x138(%rsp)
leaq 0x140(%rsp), %rdi
leaq 0x138(%rsp), %rsi
callq 0xb3a30
testb $0x1, %al
jne 0xb263c
jmp 0xb28bc
leaq 0x140(%rsp), %rdi
callq 0xb3a50
movq %rax, 0x130(%rsp)
leaq 0x110(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xca10
movq 0x18(%rsp), %rdx
movq 0x130(%rsp), %rsi
addq $0x8, %rsi
leaq 0x748(%rsp), %rdi
callq 0x77970
movb %al, 0x27(%rsp)
jmp 0xb2687
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0xb2864
jmp 0xb2695
movb $0x1, 0x6f(%rsp)
movl $0x10, %edi
callq 0xc3b0
movq %rax, 0x10(%rsp)
movq 0x130(%rsp), %rsi
addq $0x8, %rsi
leaq 0x90(%rsp), %rdi
movl $0x22, %edx
callq 0x424f0
jmp 0xb26c9
leaq 0x1edce(%rip), %rsi     # 0xd149e
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0x2a340
jmp 0xb26e7
leaq 0x1edc2(%rip), %rdx     # 0xd14b0
leaq 0xd0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x2a2f0
jmp 0xb2705
movq 0x778(%rsp), %rsi
leaq 0x70(%rsp), %rdi
movl $0x22, %edx
callq 0x424f0
jmp 0xb271e
leaq 0xf0(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x2dde0
jmp 0xb273a
movq 0x10(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0xcbb0
jmp 0xb274e
movq 0x10(%rsp), %rdi
movb $0x0, 0x6f(%rsp)
movq 0x53891(%rip), %rsi     # 0x105ff0
movq 0x5380a(%rip), %rdx     # 0x105f70
callq 0xcc80
jmp 0xb28ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb28ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb284f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb2842
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb2835
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb2828
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
jmp 0xb281e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x498(%rsp)
movl %eax, 0x494(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0xce98
leaq 0x70(%rsp), %rdi
callq 0xce98
leaq 0xd0(%rsp), %rdi
callq 0xce98
leaq 0xb0(%rsp), %rdi
callq 0xce98
leaq 0x90(%rsp), %rdi
callq 0xce98
testb $0x1, 0x6f(%rsp)
jne 0xb2858
jmp 0xb2862
movq 0x10(%rsp), %rdi
callq 0xc580
jmp 0xb28ad
movq 0x130(%rsp), %rdi
callq 0xb3a70
movq %rax, 0x8(%rsp)
jmp 0xb2878
movq 0x8(%rsp), %rdi
addq $0x8, %rdi
leaq 0x110(%rsp), %rsi
callq 0xc8f0
leaq 0x110(%rsp), %rdi
callq 0xce98
leaq 0x140(%rsp), %rdi
callq 0xb3a80
jmp 0xb261e
leaq 0x110(%rsp), %rdi
callq 0xce98
jmp 0xb28e5
jmp 0xb28be
leaq 0x168(%rsp), %rdi
callq 0xb3ab0
jmp 0xb259d
leaq 0x748(%rsp), %rdi
callq 0x2a910
addq $0x788, %rsp            # imm = 0x788
retq
leaq 0x748(%rsp), %rdi
callq 0x2a910
movq 0x498(%rsp), %rdi
callq 0xccf0
nop