// File: /workspace/github_cpp_makefile_star2_O1/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 0x3686
movq %rax, (%r14)
movq (%r15), %rdi
leaq 0x8d9d(%rip), %rcx      # 0xd3b8
cmpq (%rcx), %rdi
je 0x4709
leaq 0x8bc5(%rip), %rcx      # 0xd1f0
cmpq (%rcx), %rdi
je 0x46ed
leaq 0x8bbd(%rip), %rcx      # 0xd1f8
cmpq (%rcx), %rdi
je 0x46ed
leaq 0x8bc5(%rip), %rcx      # 0xd210
cmpq (%rcx), %rdi
je 0x4725
leaq 0x8bbd(%rip), %rcx      # 0xd218
cmpq (%rcx), %rdi
je 0x4741
leaq 0x8bc5(%rip), %rcx      # 0xd230
cmpq (%rcx), %rdi
je 0x475d
leaq 0x8bad(%rip), %rcx      # 0xd228
cmpq (%rcx), %rdi
je 0x4779
leaq 0x8bdd(%rip), %rcx      # 0xd268
cmpq (%rcx), %rdi
je 0x4795
leaq 0x8bd5(%rip), %rcx      # 0xd270
cmpq (%rcx), %rdi
je 0x47b1
leaq 0x8bcd(%rip), %rcx      # 0xd278
cmpq (%rcx), %rdi
je 0x47cd
leaq 0x8d5d(%rip), %rcx      # 0xd418
cmpq (%rcx), %rdi
jne 0x47e9
leaq 0x28(%r12), %r15
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x4490
movq %r15, %rdi
movq %rax, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x643a
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x57ba
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5600
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x592a
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x59e8
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5a9e
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5b56
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5bb4
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5c1e
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5c88
movq %rax, %rsi
callq 0x237a
nop