// File: /workspace/github_cpp_makefile_star2_O2/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 0x3546
movq %rax, (%r14)
movq (%r15), %rdi
leaq 0x9db3(%rip), %rcx      # 0xe3b0
cmpq (%rcx), %rdi
je 0x46de
leaq 0x9bdb(%rip), %rcx      # 0xe1e8
cmpq (%rcx), %rdi
je 0x46c2
leaq 0x9bd3(%rip), %rcx      # 0xe1f0
cmpq (%rcx), %rdi
je 0x46c2
leaq 0x9bdb(%rip), %rcx      # 0xe208
cmpq (%rcx), %rdi
je 0x46fa
leaq 0x9bd3(%rip), %rcx      # 0xe210
cmpq (%rcx), %rdi
je 0x4716
leaq 0x9bdb(%rip), %rcx      # 0xe228
cmpq (%rcx), %rdi
je 0x4732
leaq 0x9bc3(%rip), %rcx      # 0xe220
cmpq (%rcx), %rdi
je 0x474e
leaq 0x9bf3(%rip), %rcx      # 0xe260
cmpq (%rcx), %rdi
je 0x476a
leaq 0x9beb(%rip), %rcx      # 0xe268
cmpq (%rcx), %rdi
je 0x4786
leaq 0x9be3(%rip), %rcx      # 0xe270
cmpq (%rcx), %rdi
je 0x47a2
leaq 0x9d73(%rip), %rcx      # 0xe410
cmpq (%rcx), %rdi
jne 0x47be
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5bae
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5474
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x52ce
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x55ca
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x566c
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5702
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x57a6
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x57ee
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x5844
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x589a
movq %rax, %rsi
callq 0x3e80
leaq 0x42db(%rip), %rdi      # 0x8aa8
leaq 0x3a23(%rip), %rsi      # 0x81f7
leaq 0x3b7f(%rip), %rcx      # 0x835a
movl $0x156, %edx            # imm = 0x156
callq 0x2120
nop