// File: /workspace/github_c_makefile_star2_O2/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 %r13
pushq %r12
pushq %rbx
pushq %rax
leaq 0x21060(%rip), %r12     # 0x28510
movl (%r12), %eax
decl %eax
cmpl $0x8, %eax
ja 0x775c
leaq 0x23ea(%rip), %rcx      # 0x98b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x20fea(%rip), %rdi     # 0x284c0
callq 0x6d6d
movl %eax, %ebx
callq 0x5d93
movl %ebx, %eax
jmp 0x7778
callq 0x79a4
pushq $0x4
popq %rdi
movl %eax, %esi
callq 0x699a
jmp 0x7776
leaq 0x21010(%rip), %rax     # 0x28514
movl (%rax), %edi
callq 0x796d
jmp 0x75c1
leaq 0x20fa9(%rip), %rdi     # 0x284c0
callq 0x374c
jmp 0x75af
leaq 0x20f98(%rip), %rbx     # 0x284c0
movzbl (%rbx), %eax
cmpl $0x28, %eax
je 0x7756
cmpl $0x5b, %eax
je 0x75cb
cmpl $0x3c, %eax
je 0x76f6
cmpl $0x2d, %eax
jne 0x775c
cmpb $0x0, 0x1(%rbx)
jne 0x775c
callq 0x5d93
movl (%r12), %eax
cmpl $0x4, %eax
je 0x77de
cmpl $0x3, %eax
jne 0x77f5
leaq 0x20f99(%rip), %rax     # 0x28514
xorl %edi, %edi
subl (%rax), %edi
jmp 0x7506
leaq 0x20f90(%rip), %rax     # 0x28518
movsd (%rax), %xmm0
callq 0x35b8
jmp 0x75af
leaq 0x20f7a(%rip), %rax     # 0x28514
movl (%rax), %edi
callq 0x3269
jmp 0x75af
leaq 0x20f16(%rip), %rdi     # 0x284c0
callq 0x3368
movswl %ax, %edi
callq 0x6fb3
pushq $0x4
popq %rdi
movl %eax, %esi
callq 0x699a
callq 0x5d93
jmp 0x7776
cmpb $0x0, 0x1(%rbx)
jne 0x775c
movl 0x21774(%rip), %r15d    # 0x28d50
movl 0x21761(%rip), %r14d    # 0x28d44
callq 0x5d93
xorl %ebp, %ebp
cmpl $0x9, (%r12)
movl %r14d, 0x4(%rsp)
jne 0x7844
cmpb $0x3a, (%rbx)
jne 0x7844
cmpb $0x0, 0x1(%rbx)
jne 0x7844
xorl %ebp, %ebp
pushq $0x9
popq %rax
leaq 0x21847(%rip), %r13     # 0x28e60
leaq 0x20260(%rip), %r14     # 0x27880
cmpl $0x0, 0x21719(%rip)     # 0x28d40
je 0x7814
cmpl $0x9, %eax
jne 0x7814
movb (%rbx), %al
cmpb $0x3a, %al
jne 0x781b
cmpb $0x0, 0x1(%rbx)
jne 0x7825
callq 0x5d93
cmpl $0x1, %eax
je 0x766a
movq %r13, %rdi
leaq 0x252d(%rip), %rsi      # 0x9b8b
leaq 0x253d(%rip), %rdx      # 0x9ba2
callq 0x499b
movl 0x216e0(%rip), %eax     # 0x28d50
leal 0x1(%rax), %ecx
movl %ecx, 0x216d7(%rip)     # 0x28d50
cmpl 0x216d9(%rip), %eax     # 0x28d58
jl 0x7687
movl %ecx, 0x216d1(%rip)     # 0x28d58
cmpl $0x100, %eax            # imm = 0x100
jl 0x76a6
movq %r13, %rdi
leaq 0x22f1(%rip), %rsi      # 0x9989
leaq 0x201a(%rip), %rdx      # 0x96b9
callq 0x499b
jmp 0x76e6
movq %rbx, %rdi
callq 0x3368
movw %ax, (%r14)
movswl %ax, %edi
callq 0x2b28
movswl (%r14), %eax
shrl %eax
movswq %ax, %rax
shlq $0x4, %rax
leaq 0x6b61(%rip), %rcx      # 0xe230
movq 0x8(%rcx,%rax), %rax
movslq 0x21675(%rip), %rcx     # 0x28d50
leaq 0x221ce(%rip), %rdx     # 0x298b0
movq %rax, (%rdx,%rcx,8)
callq 0x5d93
movl (%r12), %eax
incl %ebp
jmp 0x7620
cmpb $0x0, 0x1(%rbx)
jne 0x775c
callq 0x5d93
cmpl $0x3, %eax
je 0x7720
leaq 0x21753(%rip), %rdi     # 0x28e60
leaq 0x245e(%rip), %rsi      # 0x9b72
leaq 0x1f9e(%rip), %rdx      # 0x96b9
callq 0x499b
leaq 0x20ded(%rip), %rax     # 0x28514
movl (%rax), %ebp
callq 0x5d93
xorl %r14d, %r14d
cmpl $0x0, 0x21608(%rip)     # 0x28d40
je 0x7787
cmpl $0x9, (%r12)
jne 0x774c
cmpb $0x3e, (%rbx)
jne 0x774c
cmpb $0x0, 0x1(%rbx)
je 0x7787
callq 0x749e
incl %r14d
jmp 0x7731
cmpb $0x0, 0x1(%rbx)
je 0x779e
leaq 0x216fd(%rip), %rdi     # 0x28e60
leaq 0x23a7(%rip), %rsi      # 0x9b11
leaq 0x20d4f(%rip), %rdx     # 0x284c0
callq 0x499b
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0xd
popq %rdi
movl %r14d, %esi
callq 0x699a
movl %ebp, %edi
callq 0x7361
jmp 0x75c1
callq 0x5d93
callq 0x6be4
cmpl $0x0, 0x21591(%rip)     # 0x28d40
je 0x7776
cmpl $0xa, (%r12)
jne 0x77c7
cmpb $0x29, (%rbx)
jne 0x77c7
cmpb $0x0, 0x1(%rbx)
je 0x75c1
leaq 0x21692(%rip), %rdi     # 0x28e60
leaq 0x2322(%rip), %rsi      # 0x9af7
leaq 0x1edd(%rip), %rdx      # 0x96b9
jmp 0x7771
leaq 0x20d33(%rip), %rax     # 0x28518
movsd (%rax), %xmm0
xorps 0x20b0(%rip), %xmm0     # 0x98a0
jmp 0x758c
leaq 0x21664(%rip), %rdi     # 0x28e60
leaq 0x22d4(%rip), %rsi      # 0x9ad7
leaq 0x22e3(%rip), %rdx      # 0x9aed
callq 0x499b
jmp 0x75c1
cmpl $0x9, %eax
jne 0x7825
movb (%rbx), %al
cmpb $0x7c, %al
jne 0x7825
cmpb $0x0, 0x1(%rbx)
je 0x783f
leaq 0x21634(%rip), %rdi     # 0x28e60
leaq 0x2386(%rip), %rsi      # 0x9bb9
leaq 0x23a6(%rip), %rdx      # 0x9be0
callq 0x499b
callq 0x5d93
xorl %eax, %eax
callq 0x31e2
movl %eax, %r14d
movl %ebp, %edi
callq 0x2d9b
movswl %r14w, %ebp
movl %ebp, %ecx
shrl %ecx
movswq %cx, %r14
shlq $0x4, %r14
leaq 0x69c4(%rip), %r13      # 0xe230
movq 0x8(%r13,%r14), %rcx
movw %ax, 0x2(%rcx)
movswl %ax, %edi
callq 0x2b30
leal 0x1(%r15), %edi
callq 0x2d9b
movq 0x8(%r13,%r14), %rcx
movw %ax, 0x4(%rcx)
movswl %ax, %edi
callq 0x2b30
movl %ebp, %edi
callq 0x6fb3
pushq $0x4
popq %rdi
movl %eax, %esi
callq 0x699a
pushq $0x54
popq %rdi
callq 0x7361
movl $0xd2, %edi
callq 0x7361
pushq $0x1d
popq %rdi
callq 0x7361
movl $0xf6, %edi
callq 0x7361
movslq 0x21475(%rip), %rbp     # 0x28d48
xorl %edi, %edi
callq 0x7361
movl 0x21468(%rip), %edi     # 0x28d48
incl %edi
callq 0x2d9b
movq 0x8(%r13,%r14), %rcx
movw %ax, 0x6(%rcx)
movswl %ax, %edi
callq 0x2b30
movl $0x1, 0x21442(%rip)     # 0x28d44
callq 0x69ba
cmpl $0xa, (%r12)
jne 0x7919
cmpb $0x5d, (%rbx)
jne 0x7919
cmpb $0x0, 0x1(%rbx)
je 0x7966
leaq 0x21540(%rip), %rdi     # 0x28e60
leaq 0x22be(%rip), %rsi      # 0x9be5
leaq 0x1d8b(%rip), %rdx      # 0x96b9
callq 0x499b
movl 0x4(%rsp), %ebx
movl $0xf2, %edi
callq 0x7361
movb 0x21401(%rip), %al      # 0x28d48
incb %al
leaq 0x21410(%rip), %rcx     # 0x28d60
movb %al, (%rbp,%rcx)
movl %r15d, 0x213f5(%rip)    # 0x28d50
movl %ebx, 0x213e3(%rip)     # 0x28d44
jmp 0x7776
callq 0x5d93
jmp 0x7933