// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x0, -0x4(%rbp)
leaq 0x1fc4a(%rip), %rax     # 0x2a540
cmpl $0x1, (%rax)
jne 0xa914
leaq 0x1fbee(%rip), %rdi     # 0x2a4f0
callq 0x9f70
movl %eax, -0x4(%rbp)
callq 0x8710
jmp 0xabfa
leaq 0x1fc25(%rip), %rax     # 0x2a540
cmpl $0x3, (%rax)
jne 0xa938
leaq 0x1fc29(%rip), %rax     # 0x2a550
movl (%rax), %edi
callq 0xac10
callq 0x8710
jmp 0xabf8
leaq 0x1fc01(%rip), %rax     # 0x2a540
cmpl $0x4, (%rax)
jne 0xa972
leaq 0x1fc0d(%rip), %rax     # 0x2a558
movsd (%rax), %xmm0
callq 0x4330
movswl %ax, %edi
callq 0xa290
movl %eax, %esi
movl $0x4, %edi
callq 0x9650
callq 0x8710
jmp 0xabf6
leaq 0x1fbc7(%rip), %rax     # 0x2a540
cmpl $0x9, (%rax)
jne 0xaa30
leaq 0x1fb67(%rip), %rdi     # 0x2a4f0
leaq 0x2008(%rip), %rsi      # 0xc998
callq 0x2150
cmpl $0x0, %eax
jne 0xaa30
callq 0x8710
leaq 0x1fb96(%rip), %rax     # 0x2a540
cmpl $0x3, (%rax)
jne 0xa9c1
xorl %edi, %edi
leaq 0x1fb98(%rip), %rax     # 0x2a550
subl (%rax), %edi
callq 0xac10
jmp 0xaa26
leaq 0x1fb78(%rip), %rax     # 0x2a540
cmpl $0x4, (%rax)
jne 0xaa0a
leaq 0x1fb84(%rip), %rax     # 0x2a558
movsd (%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
callq 0x4330
movswl %ax, %edi
callq 0xa290
movl %eax, %esi
movl $0x4, %edi
callq 0x9650
jmp 0xaa24
leaq 0x2048f(%rip), %rdi     # 0x2aea0
leaq 0x2060(%rip), %rsi      # 0xca78
leaq 0x206f(%rip), %rdx      # 0xca8e
callq 0x64b0
jmp 0xaa26
callq 0x8710
jmp 0xabf4
leaq 0x1fb09(%rip), %rax     # 0x2a540
cmpl $0x5, (%rax)
jne 0xaa68
leaq 0x1fb0d(%rip), %rax     # 0x2a550
movl (%rax), %edi
callq 0x3ea0
movswl %ax, %edi
callq 0xa290
movl %eax, %esi
movl $0x4, %edi
callq 0x9650
callq 0x8710
jmp 0xabf2
leaq 0x1fad1(%rip), %rax     # 0x2a540
cmpl $0x6, (%rax)
jne 0xaa9e
leaq 0x1fa75(%rip), %rdi     # 0x2a4f0
callq 0x4000
movswl %ax, %edi
callq 0xa290
movl %eax, %esi
movl $0x4, %edi
callq 0x9650
callq 0x8710
jmp 0xabf0
leaq 0x1fa9b(%rip), %rax     # 0x2a540
cmpl $0x8, (%rax)
jne 0xaad4
leaq 0x1fa3f(%rip), %rdi     # 0x2a4f0
callq 0x45d0
movswl %ax, %edi
callq 0xa290
movl %eax, %esi
movl $0x4, %edi
callq 0x9650
callq 0x8710
jmp 0xabee
leaq 0x1fa65(%rip), %rax     # 0x2a540
cmpl $0x7, (%rax)
jne 0xaaf6
callq 0xac80
movl %eax, %esi
movl $0x4, %edi
callq 0x9650
jmp 0xabec
leaq 0x1fa43(%rip), %rax     # 0x2a540
cmpl $0x9, (%rax)
jne 0xab76
leaq 0x1f9e7(%rip), %rdi     # 0x2a4f0
leaq 0x1f88(%rip), %rsi      # 0xca98
callq 0x2150
cmpl $0x0, %eax
jne 0xab76
callq 0x8710
callq 0x9d80
cmpl $0x0, 0x20255(%rip)     # 0x2ad80
je 0xab74
leaq 0x1fa0c(%rip), %rax     # 0x2a540
cmpl $0xa, (%rax)
jne 0xab51
leaq 0x1f9b0(%rip), %rdi     # 0x2a4f0
leaq 0x1f53(%rip), %rsi      # 0xca9a
callq 0x2150
cmpl $0x0, %eax
je 0xab6d
leaq 0x20348(%rip), %rdi     # 0x2aea0
leaq 0x1f3d(%rip), %rsi      # 0xca9c
leaq 0x1b4f(%rip), %rdx      # 0xc6b5
callq 0x64b0
jmp 0xab72
callq 0x8710
jmp 0xab74
jmp 0xabea
leaq 0x1f9c3(%rip), %rax     # 0x2a540
cmpl $0x9, (%rax)
jne 0xaba1
leaq 0x1f967(%rip), %rdi     # 0x2a4f0
leaq 0x16c8(%rip), %rsi      # 0xc258
callq 0x2150
cmpl $0x0, %eax
jne 0xaba1
callq 0xafd0
jmp 0xabe8
leaq 0x1f998(%rip), %rax     # 0x2a540
cmpl $0x9, (%rax)
jne 0xabcc
leaq 0x1f93c(%rip), %rdi     # 0x2a4f0
leaq 0x1e78(%rip), %rsi      # 0xca33
callq 0x2150
cmpl $0x0, %eax
jne 0xabcc
callq 0xb090
jmp 0xabe6
leaq 0x202cd(%rip), %rdi     # 0x2aea0
leaq 0x1edc(%rip), %rsi      # 0xcab6
leaq 0x1f90f(%rip), %rdx     # 0x2a4f0
callq 0x64b0
jmp 0xabe8
jmp 0xabea
jmp 0xabec
jmp 0xabee
jmp 0xabf0
jmp 0xabf2
jmp 0xabf4
jmp 0xabf6
jmp 0xabf8
jmp 0xabfa
movl -0x4(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)