// File: /workspace/github_c_makefile_star2_O0/AK6DN[P]dec-utilities-for-pdp/macro8x/macro8x.c
// Function: getExpr
SYM_T *getExpr()
{
  delimiter = line[lexterm];

  if( line[lexstart] == '-' )
  {
    nextLexBlank();
    sym_getexpr = *(eval());
    sym_getexpr.val = ( - sym_getexpr.val );
  }
  else
  {
    sym_getexpr = *(eval());
  }


  if( is_blank( delimiter ))
  {
    return( &sym_getexpr );
  }

  /* 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 ))
    {
      return( &sym_getexpr );
    }

    switch( line[lexstart] )
    {
    case '+':                   /* add                                        */
      nextLexBlank();           /* skip over the operator                     */
      sym_getexpr.val += (eval())->val;
      break;

    case '-':                   /* subtract                                   */
      nextLexBlank();           /* skip over the operator                     */
      sym_getexpr.val -= (eval())->val;
      break;

    case '^':                   /* multiply                                   */
      nextLexBlank();           /* skip over the operator                     */
      sym_getexpr.val *= (eval())->val;
      break;

    case '%':                   /* divide                                     */
      nextLexBlank();           /* skip over the operator                     */
      sym_getexpr.val /= (eval())->val;
      break;

    case '&':                   /* and                                        */
      nextLexBlank();           /* skip over the operator                     */
      sym_getexpr.val &= (eval())->val;
      break;

    case '!':                   /* or                                         */
      nextLexBlank();           /* skip over the operator                     */
      sym_getexpr.val |= (eval())->val;
      break;

    default:
      if( is_end( line[lexstart] ))
      {
        return( &sym_getexpr );
      }

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

      case '=':
        errorMessage( &illegal_equals, lexstart );
        moveToEndOfLine();
        sym_getexpr.val = 0;
        break;

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq 0x164f9(%rip), %rcx     # 0x1acb8
leaq 0x160fa(%rip), %rax     # 0x1a8c0
movb (%rax,%rcx), %al
movb %al, 0x164f1(%rip)      # 0x1acc0
movq 0x164d2(%rip), %rcx     # 0x1aca8
leaq 0x160e3(%rip), %rax     # 0x1a8c0
movsbl (%rax,%rcx), %eax
cmpl $0x2d, %eax
jne 0x4816
callq 0x52b0
callq 0x70d0
movq %rax, %rsi
leaq 0xa3ae(%rip), %rdi      # 0xeba8
movl $0x28, %edx
callq 0x2120
xorl %eax, %eax
subq 0xa3ab(%rip), %rax      # 0xebb8
movq %rax, 0xa3a4(%rip)      # 0xebb8
jmp 0x482f
callq 0x70d0
movq %rax, %rsi
leaq 0xa383(%rip), %rdi      # 0xeba8
movl $0x28, %edx
callq 0x2120
movsbl 0x1648a(%rip), %eax     # 0x1acc0
cmpl $0x20, %eax
je 0x485f
movsbl 0x1647e(%rip), %eax     # 0x1acc0
cmpl $0x9, %eax
je 0x485f
movsbl 0x16472(%rip), %eax     # 0x1acc0
cmpl $0xc, %eax
je 0x485f
movsbl 0x16466(%rip), %eax     # 0x1acc0
cmpl $0x3e, %eax
jne 0x486f
leaq 0xa342(%rip), %rax      # 0xeba8
movq %rax, -0x8(%rbp)
jmp 0x4ac8
jmp 0x4871
movsbl 0x16448(%rip), %eax     # 0x1acc0
cmpl $0x20, %eax
je 0x48a1
movsbl 0x1643c(%rip), %eax     # 0x1acc0
cmpl $0x9, %eax
je 0x48a1
movsbl 0x16430(%rip), %eax     # 0x1acc0
cmpl $0xc, %eax
je 0x48a1
movsbl 0x16424(%rip), %eax     # 0x1acc0
cmpl $0x3e, %eax
jne 0x48b1
leaq 0xa300(%rip), %rax      # 0xeba8
movq %rax, -0x8(%rbp)
jmp 0x4ac8
movq 0x163f0(%rip), %rax     # 0x1aca8
leaq 0x16001(%rip), %rcx     # 0x1a8c0
movsbl (%rax,%rcx), %eax
movl %eax, -0xc(%rbp)
subl $0x21, %eax
je 0x49bc
jmp 0x48d1
movl -0xc(%rbp), %eax
subl $0x25, %eax
je 0x4975
jmp 0x48df
movl -0xc(%rbp), %eax
subl $0x26, %eax
je 0x499b
jmp 0x48ed
movl -0xc(%rbp), %eax
subl $0x2b, %eax
je 0x490e
jmp 0x48f7
movl -0xc(%rbp), %eax
subl $0x2d, %eax
je 0x492f
jmp 0x4901
movl -0xc(%rbp), %eax
subl $0x5e, %eax
je 0x4953
jmp 0x49dd
callq 0x52b0
callq 0x70d0
movq 0x10(%rax), %rax
addq 0xa295(%rip), %rax      # 0xebb8
movq %rax, 0xa28e(%rip)      # 0xebb8
jmp 0x4ac3
callq 0x52b0
callq 0x70d0
movq 0x10(%rax), %rcx
movq 0xa274(%rip), %rax      # 0xebb8
subq %rcx, %rax
movq %rax, 0xa26a(%rip)      # 0xebb8
jmp 0x4ac3
callq 0x52b0
callq 0x70d0
movq 0x10(%rax), %rax
imulq 0xa24f(%rip), %rax      # 0xebb8
movq %rax, 0xa248(%rip)      # 0xebb8
jmp 0x4ac3
callq 0x52b0
callq 0x70d0
movq 0x10(%rax), %rcx
movq 0xa22e(%rip), %rax      # 0xebb8
cqto
idivq %rcx
movq %rax, 0xa222(%rip)      # 0xebb8
jmp 0x4ac3
callq 0x52b0
callq 0x70d0
movq 0x10(%rax), %rax
andq 0xa208(%rip), %rax      # 0xebb8
movq %rax, 0xa201(%rip)      # 0xebb8
jmp 0x4ac3
callq 0x52b0
callq 0x70d0
movq 0x10(%rax), %rax
orq 0xa1e7(%rip), %rax      # 0xebb8
movq %rax, 0xa1e0(%rip)      # 0xebb8
jmp 0x4ac3
movq 0x162c4(%rip), %rcx     # 0x1aca8
leaq 0x15ed5(%rip), %rax     # 0x1a8c0
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x4a0b
movq 0x162ad(%rip), %rcx     # 0x1aca8
leaq 0x15ebe(%rip), %rax     # 0x1a8c0
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
jne 0x4a1b
leaq 0xa196(%rip), %rax      # 0xeba8
movq %rax, -0x8(%rbp)
jmp 0x4ac8
movq 0x16286(%rip), %rax     # 0x1aca8
leaq 0x15e97(%rip), %rcx     # 0x1a8c0
movsbl (%rax,%rcx), %eax
movl %eax, -0x10(%rbp)
subl $0x29, %eax
je 0x4a6c
jmp 0x4a37
movl -0x10(%rbp), %eax
subl $0x2c, %eax
je 0x4a6c
jmp 0x4a41
movl -0x10(%rbp), %eax
subl $0x2f, %eax
je 0x4a6c
jmp 0x4a4b
movl -0x10(%rbp), %eax
addl $-0x3a, %eax
subl $0x3, %eax
jb 0x4a6c
jmp 0x4a58
movl -0x10(%rbp), %eax
subl $0x3d, %eax
je 0x4a6e
jmp 0x4a62
movl -0x10(%rbp), %eax
subl $0x5d, %eax
jne 0x4a93
jmp 0x4a6c
jmp 0x4ab6
movq 0x16233(%rip), %rsi     # 0x1aca8
leaq 0x9f74(%rip), %rdi      # 0xe9f0
callq 0x7650
callq 0x76f0
movq $0x0, 0xa127(%rip) # 0xebb8
jmp 0x4ab6
movq 0x1620e(%rip), %rsi     # 0x1aca8
leaq 0x9eff(%rip), %rdi      # 0xe9a0
callq 0x7650
callq 0x76f0
movq $0x0, 0xa102(%rip) # 0xebb8
leaq 0xa0eb(%rip), %rax      # 0xeba8
movq %rax, -0x8(%rbp)
jmp 0x4ac8
jmp 0x4871
movq -0x8(%rbp), %rax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)