// File: /workspace/github_c_makefile_star2_O1/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 %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
leaq 0x20462(%rip), %r12     # 0x28520
movl (%r12), %ebx
leal -0x1(%rbx), %eax
cmpl $0x8, %eax
ja 0x825a
leaq 0x17db(%rip), %rcx      # 0x98b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x203eb(%rip), %rdi     # 0x284d0
callq 0x771d
movl %eax, %ebx
callq 0x6172
movl %ebx, %eax
jmp 0x81ac
leaq 0x20425(%rip), %rax     # 0x28524
movl (%rax), %edi
callq 0x8396
jmp 0x81a5
leaq 0x203be(%rip), %rdi     # 0x284d0
leaq 0x18fb(%rip), %rsi      # 0x9a14
callq 0x2160
testl %eax, %eax
je 0x81b5
leal -0x5(%rbx), %eax
cmpl $0x4, %eax
ja 0x825a
leaq 0x179b(%rip), %rcx      # 0x98d4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x203db(%rip), %rax     # 0x28524
movl (%rax), %edi
callq 0x36ba
jmp 0x8191
callq 0x8407
movl $0x4, %edi
movl %eax, %esi
callq 0x70d3
jmp 0x81aa
leaq 0x20364(%rip), %rdi     # 0x284d0
callq 0x3b88
jmp 0x8191
leaq 0x20356(%rip), %rdi     # 0x284d0
callq 0x37bd
jmp 0x8191
leaq 0x203a0(%rip), %rax     # 0x28528
movsd (%rax), %xmm0
callq 0x3a12
movswl %ax, %edi
callq 0x7a4b
movl $0x4, %edi
movl %eax, %esi
callq 0x70d3
callq 0x6172
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0x6172
movl (%r12), %eax
cmpl $0x4, %eax
je 0x81d8
cmpl $0x3, %eax
jne 0x81ec
leaq 0x20355(%rip), %rax     # 0x28524
xorl %edi, %edi
subl (%rax), %edi
jmp 0x8101
leaq 0x20349(%rip), %rax     # 0x28528
movsd (%rax), %xmm0
xorps 0x16b6(%rip), %xmm0     # 0x98a0
jmp 0x818c
leaq 0x20c7d(%rip), %rdi     # 0x28e70
leaq 0x18fa(%rip), %rsi      # 0x9af4
leaq 0x1909(%rip), %rdx      # 0x9b0a
callq 0x26d7
jmp 0x81a5
leaq 0x202c1(%rip), %rdi     # 0x284d0
leaq 0x18fe(%rip), %rsi      # 0x9b14
callq 0x2160
testl %eax, %eax
je 0x8279
cmpl $0x9, %ebx
jne 0x825a
leaq 0x202a5(%rip), %rdi     # 0x284d0
leaq 0x1025(%rip), %rsi      # 0x9257
callq 0x2160
testl %eax, %eax
je 0x82c9
leaq 0x2028a(%rip), %rdi     # 0x284d0
leaq 0x1862(%rip), %rsi      # 0x9aaf
callq 0x2160
testl %eax, %eax
je 0x833c
leaq 0x20c0f(%rip), %rdi     # 0x28e70
leaq 0x18ca(%rip), %rsi      # 0x9b32
leaq 0x20261(%rip), %rdx     # 0x284d0
callq 0x26d7
jmp 0x81aa
callq 0x6172
callq 0x7553
cmpl $0x0, 0x20ac6(%rip)     # 0x28d50
je 0x81aa
cmpl $0xa, (%r12)
jne 0x82b2
leaq 0x20232(%rip), %rdi     # 0x284d0
leaq 0x1871(%rip), %rsi      # 0x9b16
callq 0x2160
testl %eax, %eax
je 0x81a5
leaq 0x20bb7(%rip), %rdi     # 0x28e70
leaq 0x1858(%rip), %rsi      # 0x9b18
leaq 0x13ee(%rip), %rdx      # 0x96b5
jmp 0x826f
callq 0x6172
cmpl $0x3, %eax
je 0x82ed
leaq 0x20b96(%rip), %rdi     # 0x28e70
leaq 0x18b2(%rip), %rsi      # 0x9b93
leaq 0x13cd(%rip), %rdx      # 0x96b5
callq 0x26d7
leaq 0x20230(%rip), %rax     # 0x28524
movl (%rax), %ebp
callq 0x6172
cmpl $0x0, 0x20a4e(%rip)     # 0x28d50
je 0x8346
xorl %ebx, %ebx
leaq 0x201c3(%rip), %r14     # 0x284d0
leaq 0xd63(%rip), %r15       # 0x9077
cmpl $0x9, (%r12)
jne 0x832a
movq %r14, %rdi
movq %r15, %rsi
callq 0x2160
testl %eax, %eax
je 0x8348
callq 0x80af
incl %ebx
cmpl $0x0, 0x20a18(%rip)     # 0x28d50
jne 0x8314
jmp 0x8348
callq 0x867d
jmp 0x81aa
xorl %ebx, %ebx
movl $0xd, %edi
movl %ebx, %esi
callq 0x70d3
movslq 0x209fd(%rip), %rax     # 0x28d58
cmpq $0x100, %rax            # imm = 0x100
jl 0x837d
leaq 0x20b06(%rip), %rdi     # 0x28e70
leaq 0x175a(%rip), %rsi      # 0x9acb
leaq 0x133d(%rip), %rdx      # 0x96b5
jmp 0x8201
leal 0x1(%rax), %ecx
movl %ecx, 0x209d2(%rip)     # 0x28d58
leaq 0x209e3(%rip), %rcx     # 0x28d70
movb %bpl, (%rax,%rcx)
jmp 0x81a5