// File: /workspace/github_c_makefile_star2_O3/orangeduck[P]mpc/tests/core.c
// Function: test_ident
void test_ident(void) {

  /* ^[a-zA-Z_][a-zA-Z0-9_]*$ */

  mpc_parser_t* Ident = mpc_whole(
    mpc_and(2, mpcf_strfold,
      mpc_or(2, mpc_alpha(), mpc_underscore()),
      mpc_many1(mpcf_strfold, mpc_or(3, mpc_alpha(), mpc_underscore(), mpc_digit())),
      free),
    free
  );

  PT_ASSERT(mpc_test_pass(Ident, "test", "test", streq, free, strprint));
  PT_ASSERT(mpc_test_fail(Ident, "  blah", "", streq, free, strprint));
  PT_ASSERT(mpc_test_pass(Ident, "anoth21er", "anoth21er", streq, free, strprint));
  PT_ASSERT(mpc_test_pass(Ident, "du__de", "du__de", streq, free, strprint));
  PT_ASSERT(mpc_test_fail(Ident, "some spaces", "", streq, free, strprint));
  PT_ASSERT(mpc_test_fail(Ident, "", "", streq, free, strprint));
  PT_ASSERT(mpc_test_fail(Ident, "18nums", "", streq, free, strprint));

  mpc_delete(Ident);

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
callq 0x870b
movq %rax, %rbx
callq 0x8728
movl $0x2, %edi
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x7f80
movq %rax, %r14
callq 0x870b
movq %rax, %rbx
callq 0x8728
movq %rax, %r15
callq 0x8587
movl $0x3, %edi
movq %rbx, %rsi
movq %r15, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x7f80
leaq 0x69cc(%rip), %r15      # 0x83c6
movq %r15, %rdi
movq %rax, %rsi
callq 0x7ee1
movq 0x165bc(%rip), %rbx     # 0x17fc8
movl $0x2, %edi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
movq %rbx, %r8
xorl %eax, %eax
callq 0x8088
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8e7d
movq %rax, %r14
leaq 0xd5d8(%rip), %rdx      # 0xf011
leaq 0x177(%rip), %r12       # 0x1bb7
leaq 0x181(%rip), %r15       # 0x1bc8
movq %rax, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0xa93d
leaq 0xd6a6(%rip), %rsi      # 0xf108
leaq 0xd6db(%rip), %r13      # 0xf144
movl %eax, %edi
movq %r13, %rdx
movl $0x1d, %ecx
callq 0x4094
leaq 0xd6d2(%rip), %rsi      # 0xf151
leaq 0x10a1c(%rip), %rbp     # 0x124a2
movq %r14, %rdi
movq %rbp, %rdx
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0xa8c1
leaq 0xd6b7(%rip), %rsi      # 0xf158
movl %eax, %edi
movq %r13, %rdx
movl $0x1e, %ecx
callq 0x4094
leaq 0xd6db(%rip), %rdx      # 0xf192
movq %r14, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0xa93d
leaq 0xd6ca(%rip), %rsi      # 0xf19c
movl %eax, %edi
movq %r13, %rdx
movl $0x1f, %ecx
callq 0x4094
leaq 0xd6fa(%rip), %rdx      # 0xf1e2
movq %r14, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0xa93d
leaq 0xd6e6(%rip), %rsi      # 0xf1e9
movl %eax, %edi
movq %r13, %rdx
movl $0x20, %ecx
callq 0x4094
leaq 0xd710(%rip), %rsi      # 0xf229
movq %r14, %rdi
movq %rbp, %rdx
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0xa8c1
leaq 0xd701(%rip), %rsi      # 0xf235
movl %eax, %edi
movq %r13, %rdx
movl $0x21, %ecx
callq 0x4094
movq %r14, %rdi
movq %rbp, %rsi
movq %rbp, %rdx
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0xa8c1
leaq 0xd713(%rip), %rsi      # 0xf274
movl %eax, %edi
movq %r13, %rdx
movl $0x22, %ecx
callq 0x4094
leaq 0xd731(%rip), %rsi      # 0xf2a8
movq %r14, %rdi
movq %rbp, %rdx
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0xa8c1
leaq 0xd71d(%rip), %rsi      # 0xf2af
movl %eax, %edi
movq %r13, %rdx
movl $0x23, %ecx
callq 0x4094
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x708b