// File: /workspace/github_c_makefile_star2_O0/radekh[P]palbart/palbart-2.5.c
// Function: getExprs
WORD16 getExprs()
{
  SYM_T  *symv;
  SYM_T  *symt;
  WORD16  temp;
  SYMTYP  temp_type;
  WORD16  value;
  SYMTYP  value_type;

  symv = getExpr();
  value = symv->val;
  value_type = symv->type;

  while( TRUE )
  {
    if( isdone( line[lexstart] ))
    {
      return( value );
    }
    switch( line[lexstart] )
    {
    case ')':
    case ']':
      return( value );

    default:
      break;
    }

    /* Interpret space as logical or                                          */
    symt = getExpr();
    temp = symt->val & 07777;
    temp_type = symt->type;

    switch( value_type )
    {
    case MRI:
    case MRIFIX:
      /* Previous symbol was a Memory Reference Instruction.                  */
      switch( temp_type )
      {
      case MRI:
      case MRIFIX:
        /* Current symbol is also a Memory Reference Instruction.             */
        value |= temp;          /* Just OR the MRI instructions.              */
        break;

      default:
        /* Now have the address part of the MRI instruction.                  */
        if( temp < 00200 )
        {
          value |= temp;        /* Page zero MRI.                             */
        }
        else if( (( fieldlc + reloc ) & 07600 ) <= temp
             && temp <= (( fieldlc + reloc ) | 0177 ))
        {
          value |= ( PAGE_BIT | (temp & ADDRESS_FIELD )); /* Current page MRI */
        }
        else
        {
          if(( value & INDIRECT_BIT ) == INDIRECT_BIT )
          {
            /* Already indirect, can't generate                               */
            errorSymbol( &illegal_indirect, symt->name, lexstartprev );
          }
          else
          {
            if( literals_on )
            {
              /* Now fix off page reference.                                  */
              /* Search current page literal pool for needed value.           */
              /* Set Indirect Current Page                                    */
              value |= ( 00600 | insertLiteral( &cp, temp ));
              indirect_generated = TRUE;
            }
            else
            {
              errorSymbol( &illegal_reference, symt->name, lexstartprev );
              value |= ( temp & 0177 );
            }
          }
        }
        break;
      }
      break;

    default:
        value |= temp;          /* Normal 12 bit value.                       */
        break;
    }
  } /* end while                                                              */
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
callq 0x2f70
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movw 0xc(%rax), %ax
movw %ax, -0x22(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x28(%rbp)
movslq 0x7d63(%rip), %rcx      # 0xb760
leaq 0x7cfc(%rip), %rax      # 0xb700
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
je 0x3a52
movslq 0x7d4c(%rip), %rcx      # 0xb760
leaq 0x7ce5(%rip), %rax      # 0xb700
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x3a52
movslq 0x7d35(%rip), %rcx      # 0xb760
leaq 0x7cce(%rip), %rax      # 0xb700
movsbl (%rax,%rcx), %eax
cmpl $0xa, %eax
je 0x3a52
movslq 0x7d1e(%rip), %rcx      # 0xb760
leaq 0x7cb7(%rip), %rax      # 0xb700
movsbl (%rax,%rcx), %eax
cmpl $0x3b, %eax
jne 0x3a5f
movw -0x22(%rbp), %ax
movw %ax, -0x2(%rbp)
jmp 0x3c02
movslq 0x7cfa(%rip), %rax      # 0xb760
leaq 0x7c93(%rip), %rcx      # 0xb700
movsbl (%rax,%rcx), %eax
movl %eax, -0x2c(%rbp)
subl $0x29, %eax
je 0x3a85
jmp 0x3a7b
movl -0x2c(%rbp), %eax
subl $0x5d, %eax
jne 0x3a92
jmp 0x3a85
movw -0x22(%rbp), %ax
movw %ax, -0x2(%rbp)
jmp 0x3c02
jmp 0x3a94
callq 0x2f70
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movzwl 0xc(%rax), %eax
andl $0xfff, %eax            # imm = 0xFFF
movw %ax, -0x1a(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x20(%rbp)
movl -0x28(%rbp), %eax
orl $0x2, %eax
subl $0x7, %eax
je 0x3ac7
jmp 0x3bef
movl -0x20(%rbp), %eax
orl $0x2, %eax
subl $0x7, %eax
je 0x3ad4
jmp 0x3ae7
movswl -0x1a(%rbp), %ecx
movswl -0x22(%rbp), %eax
orl %ecx, %eax
movw %ax, -0x22(%rbp)
jmp 0x3bed
movswl -0x1a(%rbp), %eax
cmpl $0x80, %eax
jge 0x3b05
movswl -0x1a(%rbp), %ecx
movswl -0x22(%rbp), %eax
orl %ecx, %eax
movw %ax, -0x22(%rbp)
jmp 0x3beb
movswl 0x79c8(%rip), %eax      # 0xb4d4
movswl 0x79c3(%rip), %ecx      # 0xb4d6
addl %ecx, %eax
andl $0xf80, %eax            # imm = 0xF80
movswl -0x1a(%rbp), %ecx
cmpl %ecx, %eax
jg 0x3b59
movswl -0x1a(%rbp), %eax
movswl 0x79a7(%rip), %ecx      # 0xb4d4
movswl 0x79a2(%rip), %edx      # 0xb4d6
addl %edx, %ecx
orl $0x7f, %ecx
cmpl %ecx, %eax
jg 0x3b59
movswl -0x1a(%rbp), %ecx
andl $0x7f, %ecx
orl $0x80, %ecx
movswl -0x22(%rbp), %eax
orl %ecx, %eax
movw %ax, -0x22(%rbp)
jmp 0x3be9
movswl -0x22(%rbp), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x100, %eax            # imm = 0x100
jne 0x3b85
movq -0x18(%rbp), %rsi
addq $0x4, %rsi
movl 0x7bf9(%rip), %edx      # 0xb770
leaq 0x7442(%rip), %rdi      # 0xafc0
callq 0x37f0
jmp 0x3be7
cmpb $0x0, 0x762e(%rip)      # 0xb1ba
je 0x3bba
leaq 0x7943(%rip), %rdi      # 0xb4d8
movswl -0x1a(%rbp), %esi
callq 0x4ce0
movswl %ax, %ecx
orl $0x180, %ecx            # imm = 0x180
movswl -0x22(%rbp), %eax
orl %ecx, %eax
movw %ax, -0x22(%rbp)
movb $0x1, 0x7bbc(%rip)      # 0xb774
jmp 0x3be5
movq -0x18(%rbp), %rsi
addq $0x4, %rsi
movl 0x7ba8(%rip), %edx      # 0xb770
leaq 0x7401(%rip), %rdi      # 0xafd0
callq 0x37f0
movswl -0x1a(%rbp), %ecx
andl $0x7f, %ecx
movswl -0x22(%rbp), %eax
orl %ecx, %eax
movw %ax, -0x22(%rbp)
jmp 0x3be7
jmp 0x3be9
jmp 0x3beb
jmp 0x3bed
jmp 0x3bfd
movswl -0x1a(%rbp), %ecx
movswl -0x22(%rbp), %eax
orl %ecx, %eax
movw %ax, -0x22(%rbp)
jmp 0x39f6
movw -0x2(%rbp), %ax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)