// File: /workspace/github_c_makefile_star2_O0/AK6DN[P]dec-utilities-for-pdp/palbart/palbart.c
// Function: getDublExpr
WORD32 getDublExpr()
{
  WORD32 dublvalue;

  delimiter = line[lexterm];
  if( line[lexstart] == '-' )
  {
    nextLexBlank();
    dublvalue = evalDubl( 0 );
    nextLexeme();
    /* Test for any value greater than 23 bits in length.                     */
    if( (unsigned long int)dublvalue > 040000000L )
    {
      errorMessage( &dubl_overflow, lexstart );
      dublvalue = 0;
    }
    dublvalue = -dublvalue;
  }
  else
  {
    dublvalue = evalDubl( 0 );
    nextLexeme();
    /* Test for any value greater than 23 bits in length.                     */
    if( (unsigned long int)dublvalue > 037777777L )
    {
      errorMessage( &dubl_overflow, lexstart );
      dublvalue = 0;
    }
  }

  if( is_blank( delimiter ))
  {
    return( dublvalue );
  }

  /* Here we assume the current lexeme is the operator separating the         */
  /* previous operator from the next, if any.                                 */
  while( TRUE )
  {
    /* assert line[lexstart] == delimiter                                     */
    if( is_blank( delimiter ))
    {
      errorMessage( &illegal_expression, lexstart );
      moveToEndOfLine();
      dublvalue = 0;
      return( dublvalue );
    }

    switch( line[lexstart] )
    {
    case '+':                   /* add                                        */
    case '-':                   /* subtract                                   */
    case '^':                   /* multiply                                   */
    case '%':                   /* divide                                     */
    case '&':                   /* and                                        */
    case '!':                   /* or                                         */
      errorMessage( &illegal_expression, lexstart );
      moveToEndOfLine();
      dublvalue = 0;
      break;

    default:
      if( isend( line[lexstart] ))
      {
        return( dublvalue );
      }

      switch( line[lexstart] )
      {
      case '/':
      case ';':
        break;

      default:
        errorMessage( &illegal_expression, lexstart );
        moveToEndOfLine();
        dublvalue = 0;
        break;
      }
      return( dublvalue );
    }
  } /* end while                                                              */
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movslq 0x865d(%rip), %rcx      # 0xf87c
leaq 0x85ca(%rip), %rax      # 0xf7f0
movb (%rax,%rcx), %al
movb %al, 0x8651(%rip)       # 0xf880
movslq 0x863e(%rip), %rcx      # 0xf874
leaq 0x85b3(%rip), %rax      # 0xf7f0
movsbl (%rax,%rcx), %eax
cmpl $0x2d, %eax
jne 0x728d
callq 0x51a0
xorl %eax, %eax
movl %eax, %edi
callq 0x7470
movq %rax, -0x10(%rbp)
callq 0x4330
cmpq $0x800000, -0x10(%rbp)  # imm = 0x800000
jbe 0x7281
movl 0x8607(%rip), %esi      # 0xf874
leaq 0x5f94(%rip), %rdi      # 0xd208
callq 0x6ed0
movq $0x0, -0x10(%rbp)
xorl %eax, %eax
subq -0x10(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0x72c5
xorl %eax, %eax
movl %eax, %edi
callq 0x7470
movq %rax, -0x10(%rbp)
callq 0x4330
cmpq $0x7fffff, -0x10(%rbp)  # imm = 0x7FFFFF
jbe 0x72c3
movl 0x85c5(%rip), %esi      # 0xf874
leaq 0x5f52(%rip), %rdi      # 0xd208
callq 0x6ed0
movq $0x0, -0x10(%rbp)
jmp 0x72c5
movsbl 0x85b4(%rip), %eax      # 0xf880
cmpl $0x20, %eax
je 0x72f5
movsbl 0x85a8(%rip), %eax      # 0xf880
cmpl $0x9, %eax
je 0x72f5
movsbl 0x859c(%rip), %eax      # 0xf880
cmpl $0xc, %eax
je 0x72f5
movsbl 0x8590(%rip), %eax      # 0xf880
cmpl $0x3e, %eax
jne 0x7302
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7459
jmp 0x7304
movsbl 0x8575(%rip), %eax      # 0xf880
cmpl $0x20, %eax
je 0x7334
movsbl 0x8569(%rip), %eax      # 0xf880
cmpl $0x9, %eax
je 0x7334
movsbl 0x855d(%rip), %eax      # 0xf880
cmpl $0xc, %eax
je 0x7334
movsbl 0x8551(%rip), %eax      # 0xf880
cmpl $0x3e, %eax
jne 0x7360
movl 0x853a(%rip), %esi      # 0xf874
leaq 0x5df7(%rip), %rdi      # 0xd138
callq 0x6ed0
callq 0x6f70
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7459
movslq 0x850d(%rip), %rax      # 0xf874
leaq 0x8482(%rip), %rcx      # 0xf7f0
movsbl (%rax,%rcx), %eax
movl %eax, -0x14(%rbp)
subl $0x21, %eax
je 0x73a7
jmp 0x737c
movl -0x14(%rbp), %eax
addl $-0x25, %eax
subl $0x2, %eax
jb 0x73a7
jmp 0x7389
movl -0x14(%rbp), %eax
subl $0x2b, %eax
je 0x73a7
jmp 0x7393
movl -0x14(%rbp), %eax
subl $0x2d, %eax
je 0x73a7
jmp 0x739d
movl -0x14(%rbp), %eax
subl $0x5e, %eax
jne 0x73cb
jmp 0x73a7
movl 0x84c7(%rip), %esi      # 0xf874
leaq 0x5d84(%rip), %rdi      # 0xd138
callq 0x6ed0
callq 0x6f70
movq $0x0, -0x10(%rbp)
jmp 0x7454
movslq 0x84a2(%rip), %rcx      # 0xf874
leaq 0x8417(%rip), %rax      # 0xf7f0
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x73f9
movslq 0x848b(%rip), %rcx      # 0xf874
leaq 0x8400(%rip), %rax      # 0xf7f0
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
jne 0x7403
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7459
movslq 0x846a(%rip), %rax      # 0xf874
leaq 0x83df(%rip), %rcx      # 0xf7f0
movsbl (%rax,%rcx), %eax
movl %eax, -0x18(%rbp)
subl $0x2f, %eax
je 0x7429
jmp 0x741f
movl -0x18(%rbp), %eax
subl $0x3b, %eax
jne 0x742b
jmp 0x7429
jmp 0x744a
movl 0x8443(%rip), %esi      # 0xf874
leaq 0x5d00(%rip), %rdi      # 0xd138
callq 0x6ed0
callq 0x6f70
movq $0x0, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x7459
jmp 0x7304
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)