// File: /workspace/github_cpp_makefile_star2_O3/lukewagner[P]asmjs2wasm/src/cashew/parser.h
// Function: cashew::Parser<asmjs_ast::Node*, Builder>::parseAfterKeyword(cashew::Parser<asmjs_ast::Node*, Builder>::Frag&, char*&, char const*)
NodeRef parseAfterKeyword(Frag& frag, char*& src, const char* seps) {
    src = skipSpace(src);
    if (frag.str == FUNCTION) return parseFunction(frag, src, seps);
    else if (frag.str == VAR) return parseVar(frag, src, seps);
    else if (frag.str == CONST) return parseVar(frag, src, seps);
    else if (frag.str == RETURN) return parseReturn(frag, src, seps);
    else if (frag.str == IF) return parseIf(frag, src, seps);
    else if (frag.str == DO) return parseDo(frag, src, seps);
    else if (frag.str == WHILE) return parseWhile(frag, src, seps);
    else if (frag.str == BREAK) return parseBreak(frag, src, seps);
    else if (frag.str == CONTINUE) return parseContinue(frag, src, seps);
    else if (frag.str == SWITCH) return parseSwitch(frag, src, seps);
    else if (frag.str == NEW) return parseNew(frag, src, seps);
    dump(frag.str.str, src);
    assert(0);
    return nullptr;
  }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %rbx
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %r12
movq (%rdx), %rdi
callq 0x3692
movq %rax, (%r14)
movq (%r15), %rdi
leaq 0x8da9(%rip), %rcx      # 0xd3b8
cmpq (%rcx), %rdi
je 0x46fd
leaq 0x8bd1(%rip), %rcx      # 0xd1f0
cmpq (%rcx), %rdi
je 0x46e1
leaq 0x8bc9(%rip), %rcx      # 0xd1f8
cmpq (%rcx), %rdi
je 0x46e1
leaq 0x8bd1(%rip), %rcx      # 0xd210
cmpq (%rcx), %rdi
je 0x4719
leaq 0x8bc9(%rip), %rcx      # 0xd218
cmpq (%rcx), %rdi
je 0x4735
leaq 0x8bd1(%rip), %rcx      # 0xd230
cmpq (%rcx), %rdi
je 0x4751
leaq 0x8bb9(%rip), %rcx      # 0xd228
cmpq (%rcx), %rdi
je 0x476d
leaq 0x8be9(%rip), %rcx      # 0xd268
cmpq (%rcx), %rdi
je 0x4789
leaq 0x8be1(%rip), %rcx      # 0xd270
cmpq (%rcx), %rdi
je 0x47a5
leaq 0x8bd9(%rip), %rcx      # 0xd278
cmpq (%rcx), %rdi
je 0x47c1
leaq 0x8d69(%rip), %rcx      # 0xd418
cmpq (%rcx), %rdi
jne 0x47dd
leaq 0x28(%r12), %r15
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x4484
movq %r15, %rdi
movq %rax, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x6430
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x57aa
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x55f0
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5916
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x59da
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5a90
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5b48
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5ba6
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5c10
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5c7a
movq %rax, %rsi
callq 0x237a
nop