// File: /workspace/github_c_makefile_star2_O2/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 0x7be4
movq %rax, %rbx
callq 0x7c01
pushq $0x2
popq %rbp
movl %ebp, %edi
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x7646
movq %rax, %r14
callq 0x7be4
movq %rax, %rbx
callq 0x7c01
movq %rax, %r15
callq 0x7ae4
pushq $0x3
popq %rdi
movq %rbx, %rsi
movq %r15, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x7646
leaq 0x600c(%rip), %r15      # 0x79cc
movq %r15, %rdi
movq %rax, %rsi
callq 0x75c5
movq 0x145f6(%rip), %rbx     # 0x15fc8
movl %ebp, %edi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
movq %rbx, %r8
xorl %eax, %eax
callq 0x773b
movq %rax, %rdi
movq %rbx, %rsi
callq 0x8154
movq %rax, %r14
leaq 0xb615(%rip), %rdx      # 0xd011
leaq 0x169(%rip), %r12       # 0x1b6c
leaq 0x173(%rip), %r15       # 0x1b7d
movq %rax, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0x9642
leaq 0xb6e3(%rip), %rsi      # 0xd108
leaq 0xb718(%rip), %r13      # 0xd144
pushq $0x1d
popq %rcx
movl %eax, %edi
movq %r13, %rdx
callq 0x4040
leaq 0xb711(%rip), %rsi      # 0xd151
leaq 0xea4b(%rip), %rbp      # 0x10492
movq %r14, %rdi
movq %rbp, %rdx
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0x95e0
leaq 0xb6f6(%rip), %rsi      # 0xd158
pushq $0x1e
popq %rcx
movl %eax, %edi
movq %r13, %rdx
callq 0x4040
leaq 0xb71c(%rip), %rdx      # 0xd192
movq %r14, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0x9642
leaq 0xb70b(%rip), %rsi      # 0xd19c
pushq $0x1f
popq %rcx
movl %eax, %edi
movq %r13, %rdx
callq 0x4040
leaq 0xb73d(%rip), %rdx      # 0xd1e2
movq %r14, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0x9642
leaq 0xb729(%rip), %rsi      # 0xd1e9
pushq $0x20
popq %rcx
movl %eax, %edi
movq %r13, %rdx
callq 0x4040
leaq 0xb755(%rip), %rsi      # 0xd229
movq %r14, %rdi
movq %rbp, %rdx
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0x95e0
leaq 0xb746(%rip), %rsi      # 0xd235
pushq $0x21
popq %rcx
movl %eax, %edi
movq %r13, %rdx
callq 0x4040
movq %r14, %rdi
movq %rbp, %rsi
movq %rbp, %rdx
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0x95e0
leaq 0xb75a(%rip), %rsi      # 0xd274
pushq $0x22
popq %rcx
movl %eax, %edi
movq %r13, %rdx
callq 0x4040
leaq 0xb77a(%rip), %rsi      # 0xd2a8
movq %r14, %rdi
movq %rbp, %rdx
movq %r12, %rcx
movq %rbx, %r8
movq %r15, %r9
callq 0x95e0
leaq 0xb766(%rip), %rsi      # 0xd2af
pushq $0x23
popq %rcx
movl %eax, %edi
movq %r13, %rdx
callq 0x4040
movq %r14, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x68f0