// File: lukewagner[P]asmjs2wasm/src/cashew/parser.h
// Function: cashew::Parser<asmjs_ast::Node*, Builder>::parseAfterIdent(cashew::Parser<asmjs_ast::Node*, Builder>::Frag&, char*&, char const*)
NodeRef parseAfterIdent(Frag& frag, char*& src, const char* seps) {
    assert(!isSpace(*src));
    if (*src == '(') return parseExpression(parseCall(parseFrag(frag), src), src, seps);
    if (*src == '[') return parseExpression(parseIndexing(parseFrag(frag), src), src, seps);
    if (*src == ':' && expressionPartsStack.back().size() == 0) {
      src++;
      src = skipSpace(src);
      NodeRef inner;
      if (*src == '{') { // context lets us know this is not an object, but a block
        inner = parseBracketedBlock(src);
      } else {
        inner = parseElement(src, seps);
      }
      return builder.makeLabel(frag.str, inner);
    }
    if (*src == '.') return parseExpression(parseDotting(parseFrag(frag), src), src, seps);
    return parseExpression(parseFrag(frag), src, seps);
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %edi
callq 0x7580
xorb $-0x1, %al
testb $0x1, %al
jne 0x9e2a
jmp 0x9e2c
jmp 0x9e4b
leaq 0xb4c5(%rip), %rdi      # 0x152f8
leaq 0xb4cd(%rip), %rsi      # 0x15307
movl $0x20b, %edx            # imm = 0x20B
leaq 0xbc37(%rip), %rcx      # 0x15a7d
callq 0x2130
movq -0x20(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x28, %eax
jne 0x9ea7
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xaf00
movq -0x80(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0xd330
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
callq 0xaff0
movq -0x80(%rbp), %rdi
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movb -0x38(%rbp), %al
movq -0x30(%rbp), %rdx
movzbl %al, %esi
callq 0xa060
movq %rax, -0x8(%rbp)
jmp 0xa04a
movq -0x20(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x5b, %eax
jne 0x9f03
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xaf00
movq -0x80(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0xd4f0
movq %rax, %rsi
leaq -0x48(%rbp), %rdi
callq 0xaff0
movq -0x80(%rbp), %rdi
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movb -0x48(%rbp), %al
movq -0x40(%rbp), %rdx
movzbl %al, %esi
callq 0xa060
movq %rax, -0x8(%rbp)
jmp 0xa04a
movq -0x20(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x9fb9
movq -0x80(%rbp), %rdi
callq 0xd640
movq %rax, %rdi
callq 0xd680
cmpq $0x0, %rax
jne 0x9fb9
movq -0x20(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x5d30
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x7b, %eax
jne 0x9f7b
movq -0x80(%rbp), %rdi
movq -0x20(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xc400
movq %rax, -0x50(%rbp)
jmp 0x9f90
movq -0x80(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x9850
movq %rax, -0x50(%rbp)
movq -0x80(%rbp), %rdi
addq $0x28, %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rdx
movq -0x58(%rbp), %rsi
callq 0xd6a0
movq %rax, -0x8(%rbp)
jmp 0xa04a
movq -0x20(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0xa012
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xaf00
movq -0x80(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0xd6f0
movq %rax, %rsi
leaq -0x68(%rbp), %rdi
callq 0xaff0
movq -0x80(%rbp), %rdi
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movb -0x68(%rbp), %al
movq -0x60(%rbp), %rdx
movzbl %al, %esi
callq 0xa060
movq %rax, -0x8(%rbp)
jmp 0xa04a
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xaf00
movq %rax, %rsi
leaq -0x78(%rbp), %rdi
callq 0xaff0
movq -0x80(%rbp), %rdi
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movb -0x78(%rbp), %al
movq -0x70(%rbp), %rdx
movzbl %al, %esi
callq 0xa060
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
nopw (%rax,%rax)