// File: /workspace/github_c_makefile_star2_O3/afi-lambda[P]a_little_smalltalk/src/parser.c
// Function: term
static boolean term()
{
    boolean superTerm = false; /* true if term is pseudo var super */

    if (token == nameconst)
    {
        superTerm = nameTerm(tokenString);
        nextToken();
    }
    else if (token == intconst)
    {
        genInteger(tokenInteger);
        nextToken();
    }
    else if (token == floatconst)
    {
        genInstruction(PushLiteral, genLiteral(newFloat(tokenFloat)));
        nextToken();
    }
    else if ((token == binary) && streq(tokenString, "-"))
    {
        nextToken();
        if (token == intconst)
            genInteger(-tokenInteger);
        else if (token == floatconst)
        {
            genInstruction(PushLiteral, genLiteral(newFloat(-tokenFloat)));
        }
        else
            compilError(selector, "negation not followed", "by number");
        nextToken();
    }
    else if (token == charconst)
    {
        genInstruction(PushLiteral, genLiteral(newChar(tokenInteger)));
        nextToken();
    }
    else if (token == symconst)
    {
        genInstruction(PushLiteral, genLiteral(newSymbol(tokenString)));
        nextToken();
    }
    else if (token == strconst)
    {
        genInstruction(PushLiteral, genLiteral(newStString(tokenString)));
        nextToken();
    }
    else if (token == arraybegin)
    {
        genInstruction(PushLiteral, parseArray());
    }
    else if ((token == binary) && streq(tokenString, "("))
    {
        nextToken();
        expression();
        if (parseok)
        {
            if ((token != closing) || !streq(tokenString, ")"))
                compilError(selector, "Missing Right Parenthesis", "");
            else
                nextToken();
        }
    }
    else if ((token == binary) && streq(tokenString, "<"))
        parsePrimitive();
    else if ((token == binary) && streq(tokenString, "["))
        block();
    else
        compilError(selector, "invalid expression start", tokenString);

    return (superTerm);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
leaq 0x2069e(%rip), %rbx     # 0x28510
movl (%rbx), %eax
decl %eax
cmpl $0x8, %eax
ja 0x7fe5
leaq 0x1a4a(%rip), %rcx      # 0x98d0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x2062a(%rip), %rdi     # 0x284c0
callq 0x7539
movl %eax, %ebx
callq 0x60e6
movl %ebx, %eax
jmp 0x8001
callq 0x80b7
movl $0x4, %edi
movl %eax, %esi
callq 0x6f21
jmp 0x7fff
leaq 0x2064e(%rip), %rax     # 0x28514
movl (%rax), %edi
callq 0x8046
jmp 0x7f7c
leaq 0x205e7(%rip), %rdi     # 0x284c0
callq 0x3b64
jmp 0x7f68
leaq 0x205d6(%rip), %r14     # 0x284c0
movzbl (%r14), %eax
cmpl $0x3b, %eax
jg 0x7f83
cmpl $0x28, %eax
je 0x7f9b
cmpl $0x2d, %eax
jne 0x7fe5
cmpb $0x0, 0x1(%r14)
jne 0x7fe5
callq 0x60e6
movl (%rbx), %eax
cmpl $0x4, %eax
je 0x8010
cmpl $0x3, %eax
jne 0x8027
leaq 0x205e0(%rip), %rax     # 0x28514
xorl %edi, %edi
subl (%rax), %edi
jmp 0x7ec8
leaq 0x205d7(%rip), %rax     # 0x28518
movsd (%rax), %xmm0
callq 0x39ee
jmp 0x7f68
leaq 0x205c1(%rip), %rax     # 0x28514
movl (%rax), %edi
callq 0x3698
jmp 0x7f68
leaq 0x2055d(%rip), %rdi     # 0x284c0
callq 0x379b
movswl %ax, %edi
callq 0x77ff
movl $0x4, %edi
movl %eax, %esi
callq 0x6f21
callq 0x60e6
jmp 0x7fff
cmpl $0x3c, %eax
je 0x7fde
cmpl $0x5b, %eax
jne 0x7fe5
cmpb $0x0, 0x1(%r14)
jne 0x7fe5
callq 0x8401
jmp 0x7fff
cmpb $0x0, 0x1(%r14)
jne 0x7fe5
callq 0x60e6
callq 0x7359
cmpl $0x0, 0x20d8d(%rip)     # 0x28d40
je 0x7fff
cmpl $0xa, (%rbx)
jne 0x7fc7
cmpb $0x29, (%r14)
jne 0x7fc7
cmpb $0x0, 0x1(%r14)
je 0x7f7c
leaq 0x20e92(%rip), %rdi     # 0x28e60
leaq 0x1b42(%rip), %rsi      # 0x9b17
leaq 0x16f1(%rip), %rdx      # 0x96cd
jmp 0x7ffa
cmpb $0x0, 0x1(%r14)
je 0x8009
leaq 0x20e74(%rip), %rdi     # 0x28e60
leaq 0x1b3e(%rip), %rsi      # 0x9b31
leaq 0x204c6(%rip), %rdx     # 0x284c0
callq 0x26d5
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x832e
jmp 0x7fff
leaq 0x20501(%rip), %rax     # 0x28518
movsd (%rax), %xmm0
xorps 0x189e(%rip), %xmm0     # 0x98c0
jmp 0x7f45
leaq 0x20e32(%rip), %rdi     # 0x28e60
leaq 0x1ac2(%rip), %rsi      # 0x9af7
leaq 0x1ad1(%rip), %rdx      # 0x9b0d
callq 0x26d5
jmp 0x7f7c