// File: ncbi[P]amr/common.cpp
// Function: Common_sp::getScientific(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool&, long&)
bool getScientific (string numberS,
                    bool &hasPoint,
                    streamsize &decimals)
{
  strUpper (numberS);
  const size_t ePos     = numberS. find ('E');
  const size_t pointPos = numberS. find ('.');
  
  hasPoint = (pointPos != string::npos);  
  decimals = 0;
  if (ePos == string::npos)
  {
    if (hasPoint)
      decimals = (streamoff) (numberS. size () - (pointPos + 1));
  }
  else
  {
    ASSERT (ePos != pointPos);
    if (hasPoint && ePos < pointPos)
      hasPoint = false;
    if (hasPoint)
      decimals = (streamoff) (ePos - (pointPos + 1));
  }
  
  return ePos != string::npos;
}

// Assembly:
subq $0x168, %rsp            # imm = 0x168
movq %rdi, 0x18(%rsp)
movq %rdi, 0x160(%rsp)
movq %rsi, 0x158(%rsp)
movq %rdx, 0x150(%rsp)
callq 0x41a40
movq 0x18(%rsp), %rdi
movl $0x45, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0xc990
movq 0x18(%rsp), %rdi
movq %rax, 0x148(%rsp)
movl $0x2e, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0xc990
movq %rax, 0x140(%rsp)
cmpq $-0x1, 0x140(%rsp)
setne %cl
movq 0x158(%rsp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movq 0x150(%rsp), %rax
movq $0x0, (%rax)
cmpq $-0x1, 0x148(%rsp)
jne 0x4173b
movq 0x158(%rsp), %rax
testb $0x1, (%rax)
je 0x41736
movq 0x18(%rsp), %rdi
callq 0xc530
movq %rax, %rcx
movq 0x140(%rsp), %rax
addq $0x1, %rax
subq %rax, %rcx
movq 0x150(%rsp), %rax
movq %rcx, (%rax)
jmp 0x41a1a
callq 0xc090
movl $0x0, (%rax)
movq 0x148(%rsp), %rax
cmpq 0x140(%rsp), %rax
jne 0x419bf
callq 0xc8c0
cmpl $0x0, %eax
jne 0x419b5
leaq 0x9f(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0xcd00
movq 0x10(%rsp), %rdx
leaq 0x8c291(%rip), %rsi     # 0xcda19
leaq 0xa0(%rsp), %rdi
callq 0x29fd0
jmp 0x41797
leaq 0x68(%rsp), %rdi
movl $0x2fb, %esi            # imm = 0x2FB
callq 0x2ded0
jmp 0x417a8
leaq 0xc0(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x2dde0
jmp 0x417c4
leaq 0x8a3d6(%rip), %rdx     # 0xcbba1
leaq 0xe0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x2a2f0
jmp 0x417e2
leaq 0x27(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xcd00
movq 0x8(%rsp), %rdx
leaq 0x8c3a5(%rip), %rsi     # 0xcdba2
leaq 0x28(%rsp), %rdi
callq 0x29fd0
jmp 0x41809
leaq 0x8c206(%rip), %rdx     # 0xcda16
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x2a2f0
jmp 0x41821
leaq 0x100(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
leaq 0x48(%rsp), %rdx
callq 0x2dde0
jmp 0x4183d
leaq 0x8c39a(%rip), %rdx     # 0xcdbde
leaq 0x120(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x2a2f0
jmp 0x4185b
leaq 0x120(%rsp), %rdi
callq 0x3e9b0
jmp 0x4186a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x419a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x41999
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x4198f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x41982
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x4196b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x41961
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x41957
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
jmp 0x4194a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x90(%rsp)
movl %eax, 0x8c(%rsp)
leaq 0x120(%rsp), %rdi
callq 0xce98
leaq 0x100(%rsp), %rdi
callq 0xce98
leaq 0x48(%rsp), %rdi
callq 0xce98
leaq 0x28(%rsp), %rdi
callq 0xce98
leaq 0x27(%rsp), %rdi
callq 0xc7a0
leaq 0xe0(%rsp), %rdi
callq 0xce98
leaq 0xc0(%rsp), %rdi
callq 0xce98
leaq 0x68(%rsp), %rdi
callq 0xce98
leaq 0xa0(%rsp), %rdi
callq 0xce98
leaq 0x9f(%rsp), %rdi
callq 0xc7a0
jmp 0x41a30
movl $0x1, %edi
callq 0xc8d0
movq 0x158(%rsp), %rax
testb $0x1, (%rax)
je 0x419e9
movq 0x148(%rsp), %rax
cmpq 0x140(%rsp), %rax
jae 0x419e9
movq 0x158(%rsp), %rax
movb $0x0, (%rax)
movq 0x158(%rsp), %rax
testb $0x1, (%rax)
je 0x41a18
movq 0x148(%rsp), %rcx
movq 0x140(%rsp), %rax
addq $0x1, %rax
subq %rax, %rcx
movq 0x150(%rsp), %rax
movq %rcx, (%rax)
jmp 0x41a1a
cmpq $-0x1, 0x148(%rsp)
setne %al
andb $0x1, %al
addq $0x168, %rsp            # imm = 0x168
retq
movq 0x90(%rsp), %rdi
callq 0xccf0
nopl (%rax)