// File: /workspace/github_cpp_makefile_star2_O2/ncbi[P]amr/common.cpp
// Function: Common_sp::Token::readInput(Common_sp::CharInput&, bool, bool)
void Token::readInput (CharInput &in,
                       bool dashInName_arg,
                       bool consecutiveQuotesInText)
{
	ASSERT (empty ());


  // Skip spaces
	char c = '\0';
	do { c = in. get (); }
	  while (! in. eof && isSpace (c));
	if (in. eof)
		return;  
		
	tp = in. tp;

	if (   c == '\'' 
	    || c == '\"'
	   )
	{
		type = eText;
		quote = c;
		bool prevQuote = false;  // Valid if consecutiveQuotesInText
		for (;;)
		{ 
			c = in. get (); 
			if (in. eof && (! consecutiveQuotesInText || ! prevQuote))
		    in. error ("Text is not finished: end of file", false);
			if (in. tp. eol ())
		    continue;
			if (c == quote)
			{
			  if (consecutiveQuotesInText)
  			{
  		    if (prevQuote)
  		      prevQuote = false;
  		    else
  		    {
  		      prevQuote = true;
  		      continue;
  		    }
  		  }
  		  else 
  		    break;
  		}
		  else
		    if (consecutiveQuotesInText && prevQuote)
		    {
		      in. unget ();
		      break;
		    }
			name += c;
		}
	}
	else if (isDigit (c) || c == '-')
	{
	  bool minusPossible = true;
		while (   ! in. eof 
		       && (   isDigit (c)
		           || c == '.'
		           || toUpper (c) == 'E'
		           || (c == '-' && minusPossible)
		           || c == 'x'
		           || isHex (c)
		          )
		      )
		{ 
			name += c;
			c = in. get (); 
			minusPossible = (toUpper (c) == 'E');
		}
		if (! in. eof)
			in. unget ();
	  if (name == "-")
	    type = eDelimiter;
	  else 
	  {
	    type = eText;
	    toNumberDate ();
	  /*QC_ASSERT (   type == eInteger
	               || type == eDouble
	              );*/
	  }
	}
	else if (isLetter (c))
	{
		type = eName;
		dashInName = dashInName_arg;
		while (! in. eof && (isLetter (c) || (dashInName && c == '-')))
		{ 
			name += c;
			c = in. get (); 
		}
		if (! in. eof)
			in. unget ();
	}
	else if (Common_sp::isDelimiter (c))
	{
	  type = eDelimiter;
		name = c;
	}	
	else
	  in. error ("Unknown token starting with ASCII " + to_string ((int) c), false);
	  	    
	ASSERT (! empty ());
  qc ();

  if (verbose ())
  	cout << tp. str () << type2str (type) << ' ' << *this << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movl %ecx, %r12d
movl %edx, %r13d
movq %rsi, %r14
movq %rdi, %rbx
callq 0xb060
movq %rax, 0x50(%rsp)
andl $0x0, (%rax)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x38(%rax)
testb %al, %al
je 0x2b8a0
movq %r14, %rdi
callq 0x2ae60
movl %eax, %ebp
movb 0x218(%r14), %al
movsbl %bpl, %r15d
testb %al, %al
jne 0x2b5c7
movl %r15d, %edi
callq 0x3c341
testb %al, %al
jne 0x2b59b
movb 0x218(%r14), %al
testb $0x1, %al
jne 0x2b823
movq 0x260(%r14), %rax
movq %rax, 0x54(%rbx)
cmpb $0x27, %bpl
je 0x2b5e9
movzbl %bpl, %eax
cmpl $0x22, %eax
jne 0x2b659
movl $0x2, 0x8(%rbx)
movb %bpl, 0x30(%rbx)
leaq 0x10(%rbx), %r15
xorl %ebp, %ebp
movl %r12d, %r13d
andb %bpl, %r13b
movq %r14, %rdi
callq 0x2ae60
movb 0x218(%r14), %cl
notb %cl
orb %r13b, %cl
testb $0x1, %cl
je 0x2b87b
cmpl $-0x1, 0x264(%r14)
je 0x2b600
cmpb 0x30(%rbx), %al
jne 0x2b642
testb %r12b, %r12b
je 0x2b783
testb $0x1, %bpl
movb $0x1, %bpl
je 0x2b5fa
xorl %ebp, %ebp
jmp 0x2b64c
cmpb $0x1, %r13b
je 0x2b77b
movsbl %al, %esi
movq %r15, %rdi
callq 0xb4e0
jmp 0x2b5fa
movl %r15d, %edi
callq 0x3c2f6
xorb $0x1, %al
cmpb $0x2d, %bpl
setne %cl
testb %al, %cl
jne 0x2b6f5
leaq 0x10(%rbx), %r12
movb $0x1, %r13b
movb 0x218(%r14), %al
testb %al, %al
jne 0x2b83c
movsbl %bpl, %r15d
movl %r15d, %edi
callq 0x3c2f6
cmpb $0x2e, %r15b
sete %cl
orb %al, %cl
jne 0x2b6d0
movl %r15d, %edi
callq 0x3c35f
cmpb $0x45, %al
je 0x2b6d0
cmpb $0x78, %bpl
je 0x2b6d0
movzbl %bpl, %eax
cmpl $0x2d, %eax
jne 0x2b6c0
testb $0x1, %r13b
jne 0x2b6d0
movl %r15d, %edi
callq 0x3c424
testb %al, %al
je 0x2b835
movq %r12, %rdi
movl %r15d, %esi
callq 0xb4e0
movq %r14, %rdi
callq 0x2ae60
movl %eax, %ebp
movsbl %al, %edi
callq 0x3c35f
cmpb $0x45, %al
sete %r13b
jmp 0x2b679
movl %r15d, %edi
callq 0x3c2d0
testb %al, %al
je 0x2b74b
andl $0x0, 0x8(%rbx)
movb %r13b, 0xc(%rbx)
leaq 0x10(%rbx), %r15
movb 0x218(%r14), %al
testb %al, %al
jne 0x2b777
movsbl %bpl, %r12d
movl %r12d, %edi
callq 0x3c2d0
testb %al, %al
jne 0x2b734
cmpb $0x2d, %bpl
jne 0x2b770
cmpb $0x0, 0xc(%rbx)
je 0x2b770
movq %r15, %rdi
movl %r12d, %esi
callq 0xb4e0
movq %r14, %rdi
callq 0x2ae60
movl %eax, %ebp
jmp 0x2b70d
movl %r15d, %edi
callq 0x3c88d
testb %al, %al
je 0x2ba50
movl $0x1, 0x8(%rbx)
leaq 0x10(%rbx), %rdi
movl %r15d, %esi
callq 0xb980
jmp 0x2b783
movb 0x218(%r14), %al
testb $0x1, %al
jne 0x2b783
movq %r14, %rdi
callq 0x2b16c
movq 0x50(%rsp), %rax
andl $0x0, (%rax)
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x38(%rax)
testb %al, %al
jne 0x2b974
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x18(%rax)
xorl %edi, %edi
callq 0x280a3
testb %al, %al
je 0x2b823
leaq 0x54(%rbx), %rsi
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x2a472
movq 0x587c0(%rip), %rdi     # 0x83f88
movq %r14, %rsi
callq 0xb510
movq %rax, %r14
movl 0x8(%rbx), %esi
leaq 0x30(%rsp), %rdi
callq 0x3c8a8
leaq 0x30(%rsp), %rsi
movq %r14, %rdi
callq 0xb510
pushq $0x20
popq %rsi
movq %rax, %rdi
callq 0xb680
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
movq %r14, %rsi
callq *0x20(%rax)
movq %r14, %rdi
callq 0xb2f0
leaq 0x30(%rsp), %rdi
callq 0xbb68
leaq 0x10(%rsp), %rdi
callq 0xbb68
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movb 0x218(%r14), %al
testb $0x1, %al
jne 0x2b848
movq %r14, %rdi
callq 0x2b16c
leaq 0x2f6f3(%rip), %rsi     # 0x5af42
movq %r12, %rdi
callq 0x1cba2
testb %al, %al
je 0x2b867
movl $0x1, 0x8(%rbx)
jmp 0x2b783
movl $0x2, 0x8(%rbx)
movq %rbx, %rdi
callq 0x2bb5c
jmp 0x2b783
leaq 0x30e6c(%rip), %rsi     # 0x5c6ee
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x1b7b6
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
xorl %edx, %edx
callq 0x3c836
callq 0xb6c0
testl %eax, %eax
jne 0x2ba48
leaq 0x3008d(%rip), %rsi     # 0x5b941
leaq 0xb8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1b7b6
leaq 0x98(%rsp), %rdi
movl $0x92d, %esi            # imm = 0x92D
callq 0x1caa3
leaq 0xd8(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x1ca3c
leaq 0x2e2e7(%rip), %rdx     # 0x59be3
leaq 0xf8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x1b92d
leaq 0x30d9c(%rip), %rsi     # 0x5c6b4
leaq 0x58(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1b7b6
leaq 0x30010(%rip), %rdx     # 0x5b93e
leaq 0x78(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1b92d
leaq 0x30(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x1ca3c
leaq 0x30dda(%rip), %rdx     # 0x5c735
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x1b92d
leaq 0x10(%rsp), %rdi
callq 0x224fc
callq 0xb6c0
testl %eax, %eax
jne 0x2ba48
leaq 0x2ffb9(%rip), %rsi     # 0x5b941
leaq 0xb8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1b7b6
leaq 0x98(%rsp), %rdi
movl $0x991, %esi            # imm = 0x991
callq 0x1caa3
leaq 0xd8(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
leaq 0x98(%rsp), %rdx
callq 0x1ca3c
leaq 0x2e213(%rip), %rdx     # 0x59be3
leaq 0xf8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x1b92d
leaq 0x30cc8(%rip), %rsi     # 0x5c6b4
leaq 0x58(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1b7b6
leaq 0x2ff3c(%rip), %rdx     # 0x5b93e
leaq 0x78(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1b92d
leaq 0x30(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x1ca3c
leaq 0x30d04(%rip), %rdx     # 0x5c733
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x1b92d
leaq 0x10(%rsp), %rdi
callq 0x224fc
pushq $0x1
popq %rdi
callq 0xb6d0
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
movl %r15d, %esi
callq 0x1caa3
leaq 0x30ca9(%rip), %rsi     # 0x5c710
leaq 0x10(%rsp), %rdi
movq %rbx, %rdx
callq 0x1b94c
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
xorl %edx, %edx
callq 0x3c836
jmp 0x2ba89
jmp 0x2ba98
jmp 0x2baa9
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xbb68
jmp 0x2ba9b
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xbb68
jmp 0x2baac
jmp 0x2baba
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0xbb68
jmp 0x2babd
jmp 0x2bacb
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0xbb68
jmp 0x2bace
jmp 0x2baf8
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
callq 0xbb68
jmp 0x2bafb
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xbb68
jmp 0x2baef
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x2bb4a
jmp 0x2bb0c
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0xbb68
jmp 0x2bb0f
jmp 0x2bb20
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0xbb68
jmp 0x2bb23
jmp 0x2bb51
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x2bb4a
jmp 0x2bb42
jmp 0x2bb42
jmp 0x2bb51
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xbb68
jmp 0x2bb45
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xbb68
jmp 0x2bb54
movq %rax, %rbx
movq %rbx, %rdi
callq 0xba30