// File: besm6[P]pascal-re/pascompl.cc
// Function: parseLiteral(Types*&, Word&, bool)
void parseLiteral(TypesPtr & litType, Word & litValue,
    bool allowSign)
{
    Operator l3var1z;
    litValue = curToken;
    if (GTSY < SY) {
        if (allowSign and (charClass == PLUSOP || charClass == MINUSOP))  {
            l3var1z = charClass;
            inSymbol();
            parseLiteral(litType, litValue, false);
            if (litType != IntegerType && litType != RealType) {
                error(62); /* errIntegerNeeded */
                litType = IntegerType;
                litValue.i = 1;
            } else if (l3var1z == MINUSOP) {
                if (litType == IntegerType)
                    litValue.i = -litValue.i;
                else
                    litValue.r = -litValue.r;
            }
        } else {
L99:        litType = NULL;
            error(errNoConstant);
        }
    } else
        switch (SY) {
        case IDENT: {
            if ((hashTravPtr == NULL) or
                (hashTravPtr->cl != ENUMID))
                goto L99;
            litType = hashTravPtr->typ;
            litValue.ii = hashTravPtr->value();
        } break;
        case INTCONST:
            litType = IntegerType;
            break;
        case REALCONST:
            litType = RealType;
            break;
        case CHARCONST:
            litType = CharType;
            break;
        case LTSY:
            litType = makeStringType();
            break;
        case GTSY: {
            litType = pointerType;
            litValue.ii = 074000;
            } break;
        default: break;
        } /* case */
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rax
movq 0x753a3(%rip), %rcx     # 0x800e8
movq %rcx, (%rax)
movl $0x5, %eax
cmpl 0x75189(%rip), %eax     # 0x7fedc
jge 0xae61
testb $0x1, -0x11(%rbp)
je 0xae45
cmpl $0x5, 0x7516e(%rip)     # 0x7fed8
je 0xad79
cmpl $0x6, 0x75165(%rip)     # 0x7fed8
jne 0xae45
movl 0x75159(%rip), %eax     # 0x7fed8
movl %eax, -0x18(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x9790
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
xorl %edx, %edx
callq 0xad20
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq 0x752fd(%rip), %rax     # 0x800a8
je 0xade5
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq 0x752f5(%rip), %rax     # 0x800b0
je 0xade5
movl $0x3e, %edi
callq 0x7b40
movq 0x752da(%rip), %rcx     # 0x800a8
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x4ad0
jmp 0xae43
cmpl $0x6, -0x18(%rbp)
jne 0xae41
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq 0x752af(%rip), %rax     # 0x800a8
jne 0xae16
movq -0x10(%rbp), %rdi
callq 0x1dfb0
xorl %ecx, %ecx
movl %ecx, %esi
subq %rax, %rsi
movq -0x10(%rbp), %rdi
callq 0x4ad0
jmp 0xae3f
movq -0x10(%rbp), %rdi
callq 0x1db90
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq -0x10(%rbp), %rdi
callq 0x1e780
jmp 0xae41
jmp 0xae43
jmp 0xae5c
jmp 0xae47
movq -0x8(%rbp), %rax
movq $0x0, (%rax)
movl $0x6, %edi
callq 0x7b40
jmp 0xaf32
movl 0x75075(%rip), %eax     # 0x7fedc
movq %rax, -0x190(%rbp)
subq $0x5, %rax
ja 0xaf2e
movq -0x190(%rbp), %rax
leaq 0x26646(%rip), %rcx     # 0x314cc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpq $0x0, 0x751c9(%rip)     # 0x80060
je 0xaea6
movq 0x751c0(%rip), %rax     # 0x80060
cmpl $0x1, 0x20(%rax)
je 0xaea8
jmp 0xae47
movq 0x751b1(%rip), %rax     # 0x80060
movq 0x18(%rax), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq 0x7519f(%rip), %rdi     # 0x80060
callq 0x1e6b0
movq (%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
jmp 0xaf30
movq 0x751cf(%rip), %rcx     # 0x800a8
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
jmp 0xaf30
movq 0x751c7(%rip), %rcx     # 0x800b0
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
jmp 0xaf30
movq 0x751bf(%rip), %rcx     # 0x800b8
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
jmp 0xaf30
callq 0x78c0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
jmp 0xaf30
movq 0x7516e(%rip), %rcx     # 0x80088
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq $0x7800, (%rax)         # imm = 0x7800
jmp 0xaf30
jmp 0xaf30
jmp 0xaf32
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
nopl (%rax,%rax)