// File: ncbi[P]amr/seq.cpp
// Function: Seq_sp::Seq::Seq(Common_sp::LineInput&, unsigned long, bool, bool)
Seq::Seq (LineInput &fasta,
          size_t reserveLen,
          bool sparse_arg,
     	    bool makeUpper)
: sparse (sparse_arg)
{
	QC_ASSERT (! fasta. eof);
	QC_ASSERT (! fasta. line. empty ());
  QC_ASSERT (fasta. line [0] == '>');
  name = fasta. line. substr (1);
  replace (name, '\t', ' ');
  qcName ();
  
  seq. reserve (reserveLen);

  while (   fasta. nextLine () 
         && ! (   strBlank (fasta. line)
               || fasta. line [0] == '>'
       	      )
       	)
  {
    trimTrailing (fasta. line);
    seq += fasta. line;
  }

  while (   ! fasta. eof        
         && strBlank (fasta. line)
        )
    fasta. nextLine ();

  if (makeUpper)
    strUpper (seq);
  else
    strLower (seq);

	if (! sparse)
	  unSparse ();
}

// Assembly:
subq $0x3f8, %rsp            # imm = 0x3F8
movb %r8b, %al
movq %rdi, 0x3f0(%rsp)
movq %rsi, 0x3e8(%rsp)
movq %rdx, 0x3e0(%rsp)
andb $0x1, %cl
movb %cl, 0x3df(%rsp)
andb $0x1, %al
movb %al, 0x3de(%rsp)
movq 0x3f0(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0xd79c0
movq 0x70(%rsp), %rdi
leaq 0x767ed(%rip), %rax     # 0x11f860
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x28, %rdi
movq %rdi, 0x68(%rsp)
callq 0xda50
movq 0x70(%rsp), %rax
movb 0x3df(%rsp), %cl
andb $0x1, %cl
movb %cl, 0x48(%rax)
callq 0xd0a0
movl $0x0, (%rax)
movq 0x3e8(%rsp), %rax
testb $0x1, 0x218(%rax)
je 0xa9341
callq 0xd8c0
cmpl $0x0, %eax
jne 0xa9337
leaq 0x337(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0xdd50
movq 0x60(%rsp), %rdx
leaq 0x3f360(%rip), %rsi     # 0xe8446
leaq 0x338(%rsp), %rdi
callq 0xfae0
jmp 0xa90f5
leaq 0x300(%rsp), %rdi
movl $0x98, %esi
callq 0x11600
jmp 0xa9109
leaq 0x358(%rsp), %rdi
leaq 0x338(%rsp), %rsi
leaq 0x300(%rsp), %rdx
callq 0x11510
jmp 0xa9128
leaq 0x3a0a2(%rip), %rdx     # 0xe31d1
leaq 0x378(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0x114c0
jmp 0xa9146
leaq 0x2bf(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0xdd50
movq 0x58(%rsp), %rdx
leaq 0x3f34d(%rip), %rsi     # 0xe84b1
leaq 0x2c0(%rsp), %rdi
callq 0xfae0
jmp 0xa9173
leaq 0x3a82a(%rip), %rdx     # 0xe39a4
leaq 0x2e0(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x114c0
jmp 0xa9191
leaq 0x398(%rsp), %rdi
leaq 0x378(%rsp), %rsi
leaq 0x2e0(%rsp), %rdx
callq 0x11510
jmp 0xa91b0
leaq 0x3f32c(%rip), %rdx     # 0xe84e3
leaq 0x3b8(%rsp), %rdi
leaq 0x398(%rsp), %rsi
callq 0x114c0
jmp 0xa91ce
leaq 0x3b8(%rsp), %rdi
callq 0x173d0
jmp 0xa91dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9325
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9318
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa930b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa92fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa92e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa92d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa92ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa92bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
leaq 0x3b8(%rsp), %rdi
callq 0xdf08
leaq 0x398(%rsp), %rdi
callq 0xdf08
leaq 0x2e0(%rsp), %rdi
callq 0xdf08
leaq 0x2c0(%rsp), %rdi
callq 0xdf08
leaq 0x2bf(%rsp), %rdi
callq 0xd7a0
leaq 0x378(%rsp), %rdi
callq 0xdf08
leaq 0x358(%rsp), %rdi
callq 0xdf08
leaq 0x300(%rsp), %rdi
callq 0xdf08
leaq 0x338(%rsp), %rdi
callq 0xdf08
leaq 0x337(%rsp), %rdi
callq 0xd7a0
jmp 0xa9aca
movl $0x1, %edi
callq 0xd8e0
callq 0xd0a0
movl $0x0, (%rax)
movq 0x3e8(%rsp), %rdi
addq $0x268, %rdi            # imm = 0x268
callq 0xdc60
testb $0x1, %al
jne 0xa9369
jmp 0xa95f0
callq 0xd8c0
cmpl $0x0, %eax
jne 0xa95e6
leaq 0x217(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xdd50
movq 0x50(%rsp), %rdx
leaq 0x3f0b1(%rip), %rsi     # 0xe8446
leaq 0x218(%rsp), %rdi
callq 0xfae0
jmp 0xa93a4
leaq 0x1f0(%rsp), %rdi
movl $0x99, %esi
callq 0x11600
jmp 0xa93b8
leaq 0x238(%rsp), %rdi
leaq 0x218(%rsp), %rsi
leaq 0x1f0(%rsp), %rdx
callq 0x11510
jmp 0xa93d7
leaq 0x39df3(%rip), %rdx     # 0xe31d1
leaq 0x258(%rsp), %rdi
leaq 0x238(%rsp), %rsi
callq 0x114c0
jmp 0xa93f5
leaq 0x1af(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xdd50
movq 0x48(%rsp), %rdx
leaq 0x3f09e(%rip), %rsi     # 0xe84b1
leaq 0x1b0(%rsp), %rdi
callq 0xfae0
jmp 0xa9422
leaq 0x3a57b(%rip), %rdx     # 0xe39a4
leaq 0x1d0(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x114c0
jmp 0xa9440
leaq 0x278(%rsp), %rdi
leaq 0x258(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
callq 0x11510
jmp 0xa945f
leaq 0x3f08a(%rip), %rdx     # 0xe84f0
leaq 0x298(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0x114c0
jmp 0xa947d
leaq 0x298(%rsp), %rdi
callq 0x173d0
jmp 0xa948c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa95d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa95c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa95ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa95ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9593
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9586
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9579
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa956c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
leaq 0x298(%rsp), %rdi
callq 0xdf08
leaq 0x278(%rsp), %rdi
callq 0xdf08
leaq 0x1d0(%rsp), %rdi
callq 0xdf08
leaq 0x1b0(%rsp), %rdi
callq 0xdf08
leaq 0x1af(%rsp), %rdi
callq 0xd7a0
leaq 0x258(%rsp), %rdi
callq 0xdf08
leaq 0x238(%rsp), %rdi
callq 0xdf08
leaq 0x1f0(%rsp), %rdi
callq 0xdf08
leaq 0x218(%rsp), %rdi
callq 0xdf08
leaq 0x217(%rsp), %rdi
callq 0xd7a0
jmp 0xa9aca
movl $0x1, %edi
callq 0xd8e0
callq 0xd0a0
movl $0x0, (%rax)
movq 0x3e8(%rsp), %rdi
addq $0x268, %rdi            # imm = 0x268
xorl %eax, %eax
movl %eax, %esi
callq 0xdec0
movq %rax, 0x40(%rsp)
jmp 0xa961a
movq 0x40(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x3e, %eax
je 0xa98cb
callq 0xd8c0
cmpl $0x0, %eax
jne 0xa98c1
leaq 0x107(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xdd50
movq 0x38(%rsp), %rdx
leaq 0x3edef(%rip), %rsi     # 0xe8446
leaq 0x108(%rsp), %rdi
callq 0xfae0
jmp 0xa9666
leaq 0xe0(%rsp), %rdi
movl $0x9a, %esi
callq 0x11600
jmp 0xa967a
leaq 0x128(%rsp), %rdi
leaq 0x108(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x11510
jmp 0xa9699
leaq 0x39b31(%rip), %rdx     # 0xe31d1
leaq 0x148(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x114c0
jmp 0xa96b7
leaq 0x9f(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xdd50
movq 0x30(%rsp), %rdx
leaq 0x3eddc(%rip), %rsi     # 0xe84b1
leaq 0xa0(%rsp), %rdi
callq 0xfae0
jmp 0xa96e4
leaq 0x3a2b9(%rip), %rdx     # 0xe39a4
leaq 0xc0(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x114c0
jmp 0xa9702
leaq 0x168(%rsp), %rdi
leaq 0x148(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x11510
jmp 0xa9721
leaq 0x3ede0(%rip), %rdx     # 0xe8508
leaq 0x188(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x114c0
jmp 0xa973f
leaq 0x188(%rsp), %rdi
callq 0x173d0
jmp 0xa974e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9aca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa98af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa98a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9895
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9888
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa986e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9861
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9854
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
jmp 0xa9847
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x328(%rsp)
movl %eax, 0x324(%rsp)
leaq 0x188(%rsp), %rdi
callq 0xdf08
leaq 0x168(%rsp), %rdi
callq 0xdf08
leaq 0xc0(%rsp), %rdi
callq 0xdf08
leaq 0xa0(%rsp), %rdi
callq 0xdf08
leaq 0x9f(%rsp), %rdi
callq 0xd7a0
leaq 0x148(%rsp), %rdi
callq 0xdf08
leaq 0x128(%rsp), %rdi
callq 0xdf08
leaq 0xe0(%rsp), %rdi
callq 0xdf08
leaq 0x108(%rsp), %rdi
callq 0xdf08
leaq 0x107(%rsp), %rdi
callq 0xd7a0
jmp 0xa9aca
movl $0x1, %edi
callq 0xd8e0
movq 0x3e8(%rsp), %rsi
addq $0x268, %rsi            # imm = 0x268
leaq 0x78(%rsp), %rdi
movl $0x1, %edx
movq $-0x1, %rcx
callq 0xd740
jmp 0xa98f2
movq 0x70(%rsp), %rdi
addq $0x8, %rdi
movq %rdi, 0x28(%rsp)
leaq 0x78(%rsp), %rsi
movq %rsi, 0x20(%rsp)
callq 0xd900
movq 0x20(%rsp), %rdi
callq 0xdf08
movq 0x28(%rsp), %rdi
movl $0x9, %esi
movl $0x20, %edx
callq 0x19350
jmp 0xa992f
movq 0x70(%rsp), %rdi
callq 0xa9af0
jmp 0xa993b
movq 0x70(%rsp), %rdi
addq $0x28, %rdi
movq 0x3e0(%rsp), %rsi
callq 0xdb90
jmp 0xa9953
jmp 0xa9955
movq 0x3e8(%rsp), %rdi
callq 0x15db0
movb %al, 0x1f(%rsp)
jmp 0xa9968
movb 0x1f(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x1e(%rsp)
jne 0xa9979
jmp 0xa99df
movq 0x3e8(%rsp), %rdi
addq $0x268, %rdi            # imm = 0x268
callq 0x1a000
movb %al, 0x1d(%rsp)
jmp 0xa9993
movb 0x1d(%rsp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x1c(%rsp)
jne 0xa99d5
jmp 0xa99a4
movq 0x3e8(%rsp), %rdi
addq $0x268, %rdi            # imm = 0x268
xorl %eax, %eax
movl %eax, %esi
callq 0xdec0
movq %rax, 0x10(%rsp)
jmp 0xa99c3
movq 0x10(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x3e, %eax
sete %al
movb %al, 0x1c(%rsp)
movb 0x1c(%rsp), %al
xorb $-0x1, %al
movb %al, 0x1e(%rsp)
movb 0x1e(%rsp), %al
testb $0x1, %al
jne 0xa99e9
jmp 0xa9a23
movq 0x3e8(%rsp), %rdi
addq $0x268, %rdi            # imm = 0x268
callq 0x19110
jmp 0xa99ff
movq 0x70(%rsp), %rdi
movq 0x3e8(%rsp), %rsi
addq $0x268, %rsi            # imm = 0x268
addq $0x28, %rdi
callq 0xd980
jmp 0xa9a1e
jmp 0xa9955
jmp 0xa9a25
movq 0x3e8(%rsp), %rcx
xorl %eax, %eax
testb $0x1, 0x218(%rcx)
movb %al, 0xf(%rsp)
jne 0xa9a60
movq 0x3e8(%rsp), %rdi
addq $0x268, %rdi            # imm = 0x268
callq 0x1a000
movb %al, 0xe(%rsp)
jmp 0xa9a56
movb 0xe(%rsp), %al
movb %al, 0xf(%rsp)
jmp 0xa9a60
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0xa9a6a
jmp 0xa9a7b
movq 0x3e8(%rsp), %rdi
callq 0x15db0
jmp 0xa9a79
jmp 0xa9a25
testb $0x1, 0x3de(%rsp)
je 0xa9a97
movq 0x70(%rsp), %rdi
addq $0x28, %rdi
callq 0x1a460
jmp 0xa9a95
jmp 0xa9aa9
movq 0x70(%rsp), %rdi
addq $0x28, %rdi
callq 0x1a4e0
jmp 0xa9aa7
jmp 0xa9aa9
movq 0x70(%rsp), %rax
testb $0x1, 0x48(%rax)
jne 0xa9ac2
movq 0x70(%rsp), %rdi
callq 0xd7a00
jmp 0xa9ac0
jmp 0xa9ac2
addq $0x3f8, %rsp            # imm = 0x3F8
retq
movq 0x68(%rsp), %rdi
callq 0xdf08
movq 0x70(%rsp), %rdi
callq 0x11050
movq 0x328(%rsp), %rdi
callq 0xdd40
nopl (%rax,%rax)