// File: /workspace/github_c_makefile_star2_O0/afi-lambda[P]a_little_smalltalk/src/parser.c
// Function: messagePattern
static void messagePattern()
{
    object argsym;

    argumentTop = 0;
    strcpy(selector, tokenString);
    if (token == nameconst) /* unary message pattern */
        nextToken();
    else if (token == binary)   /* binary message pattern */
    {
        nextToken();
        if (token != nameconst)
            compilError(selector,
                             "binary message pattern not followed by name", selector);
        argsym = newSymbol(tokenString);
        argumentName[++argumentTop] = charPtr(argsym);
        nextToken();
    }
    else if (token == namecolon)     /* keyword message pattern */
    {
        selector[0] = '\0';
        while (parseok && (token == namecolon))
        {
            strcat(selector, tokenString);
            nextToken();
            if (token != nameconst)
                compilError(selector, "keyword message pattern",
                                 "not followed by a name");
            if (++argumentTop > argumentLimit)
                compilError(selector, "too many arguments in method", "");
            argsym = newSymbol(tokenString);
            argumentName[argumentTop] = charPtr(argsym);
            nextToken();
        }
    }
    else
        compilError(selector, "illegal message selector", tokenString);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl $0x0, 0x216ea(%rip)     # 0x2ad8c
leaq 0x217f7(%rip), %rdi     # 0x2aea0
leaq 0x20e40(%rip), %rsi     # 0x2a4f0
callq 0x2050
leaq 0x20e84(%rip), %rax     # 0x2a540
cmpl $0x1, (%rax)
jne 0x96cb
callq 0x8710
jmp 0x990a
leaq 0x20e6e(%rip), %rax     # 0x2a540
cmpl $0x9, (%rax)
jne 0x97a4
callq 0x8710
leaq 0x20e59(%rip), %rax     # 0x2a540
cmpl $0x1, (%rax)
je 0x9702
leaq 0x217ad(%rip), %rdx     # 0x2aea0
leaq 0x3196(%rip), %rsi      # 0xc890
movq %rdx, %rdi
callq 0x64b0
leaq 0x20de7(%rip), %rdi     # 0x2a4f0
callq 0x4000
movw %ax, -0x2(%rbp)
movw -0x2(%rbp), %ax
leaq 0x20193(%rip), %rcx     # 0x298b0
movw %ax, (%rcx)
movswl %ax, %edi
callq 0x2fb0
cmpl $0x0, %eax
je 0x9754
leaq 0x2017c(%rip), %rax     # 0x298b0
movswl (%rax), %eax
sarl %eax
movslq %eax, %rcx
leaq 0x6b1d(%rip), %rax      # 0x10260
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
jmp 0x9779
leaq 0x20155(%rip), %rax     # 0x298b0
movswl (%rax), %eax
sarl %eax
movslq %eax, %rcx
leaq 0x6af6(%rip), %rax      # 0x10260
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdx
movl 0x21609(%rip), %eax     # 0x2ad8c
addl $0x1, %eax
movl %eax, 0x21600(%rip)     # 0x2ad8c
movslq %eax, %rcx
leaq 0x2195a(%rip), %rax     # 0x2b0f0
movq %rdx, (%rax,%rcx,8)
callq 0x8710
jmp 0x9908
leaq 0x20d95(%rip), %rax     # 0x2a540
cmpl $0x2, (%rax)
jne 0x98ec
movb $0x0, 0x216e5(%rip)     # 0x2aea0
xorl %eax, %eax
cmpl $0x0, 0x215bc(%rip)     # 0x2ad80
movb %al, -0x11(%rbp)
je 0x97d9
leaq 0x20d70(%rip), %rax     # 0x2a540
cmpl $0x2, (%rax)
sete %al
movb %al, -0x11(%rbp)
movb -0x11(%rbp), %al
testb $0x1, %al
jne 0x97e5
jmp 0x98ea
leaq 0x216b4(%rip), %rdi     # 0x2aea0
leaq 0x20cfd(%rip), %rsi     # 0x2a4f0
callq 0x21c0
callq 0x8710
leaq 0x20d3c(%rip), %rax     # 0x2a540
cmpl $0x1, (%rax)
je 0x9823
leaq 0x21690(%rip), %rdi     # 0x2aea0
leaq 0x30a5(%rip), %rsi      # 0xc8bc
leaq 0x30b6(%rip), %rdx      # 0xc8d4
callq 0x64b0
movl 0x21563(%rip), %eax     # 0x2ad8c
addl $0x1, %eax
movl %eax, 0x2155a(%rip)     # 0x2ad8c
cmpl $0x100, %eax            # imm = 0x100
jle 0x9853
leaq 0x21660(%rip), %rdi     # 0x2aea0
leaq 0x30a4(%rip), %rsi      # 0xc8eb
leaq 0x2e67(%rip), %rdx      # 0xc6b5
callq 0x64b0
leaq 0x20c96(%rip), %rdi     # 0x2a4f0
callq 0x4000
movw %ax, -0x2(%rbp)
movw -0x2(%rbp), %ax
leaq 0x20042(%rip), %rcx     # 0x298b0
movw %ax, (%rcx)
movswl %ax, %edi
callq 0x2fb0
cmpl $0x0, %eax
je 0x98a5
leaq 0x2002b(%rip), %rax     # 0x298b0
movswl (%rax), %eax
sarl %eax
movslq %eax, %rcx
leaq 0x69cc(%rip), %rax      # 0x10260
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0x98ca
leaq 0x20004(%rip), %rax     # 0x298b0
movswl (%rax), %eax
sarl %eax
movslq %eax, %rcx
leaq 0x69a5(%rip), %rax      # 0x10260
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdx
movslq 0x214b7(%rip), %rcx     # 0x2ad8c
leaq 0x21814(%rip), %rax     # 0x2b0f0
movq %rdx, (%rax,%rcx,8)
callq 0x8710
jmp 0x97bb
jmp 0x9906
leaq 0x215ad(%rip), %rdi     # 0x2aea0
leaq 0x300e(%rip), %rsi      # 0xc908
leaq 0x20bef(%rip), %rdx     # 0x2a4f0
callq 0x64b0
jmp 0x9908
jmp 0x990a
addq $0x20, %rsp
popq %rbp
retq