// File: /workspace/github_c_makefile_star2_O1/orangeduck[P]mpc/tests/regex.c
// Function: test_regex_boundary
void test_regex_boundary(void) {

  mpc_parser_t *re0, *re1, *re2;

  re0 = mpc_re("\\bfoo\\b");
  re1 = mpc_re("(w| )?\\bfoo\\b");
  re2 = mpc_re("py\\B.*");

  PT_ASSERT(regex_test_pass(re0, "foo", "foo"));
  PT_ASSERT(regex_test_pass(re0, "foo.", "foo"));
  PT_ASSERT(regex_test_pass(re0, "foo)", "foo"));
  PT_ASSERT(regex_test_pass(re0, "foo baz", "foo"));

  PT_ASSERT(regex_test_fail(re0, "foobar", "foo"));
  PT_ASSERT(regex_test_fail(re0, "foo3", "foo"));

  PT_ASSERT(regex_test_pass(re1, "foo", "foo"));
  PT_ASSERT(regex_test_pass(re1, " foo", " foo"));
  PT_ASSERT(regex_test_fail(re1, "wfoo", "foo"));

  PT_ASSERT(regex_test_pass(re2, "python", "python"));
  PT_ASSERT(regex_test_pass(re2, "py3", "py3"));
  PT_ASSERT(regex_test_pass(re2, "py2", "py2"));
  PT_ASSERT(regex_test_fail(re2, "py", "py"));
  PT_ASSERT(regex_test_fail(re2, "py.", "py."));
  PT_ASSERT(regex_test_fail(re2, "py!", "py!"));

  mpc_delete(re0);
  mpc_delete(re1);
  mpc_delete(re2);

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
leaq 0xc97f(%rip), %rdi      # 0x114ac
callq 0x92b6
movq %rax, %r15
leaq 0xc96a(%rip), %rdi      # 0x114a6
callq 0x92b6
movq %rax, (%rsp)
leaq 0xc968(%rip), %rdi      # 0x114b4
callq 0x92b6
movq %rax, 0x8(%rsp)
leaq 0xca7c(%rip), %rbx      # 0x115d9
leaq -0x32a(%rip), %r12      # 0x483a
movq 0x1345d(%rip), %r13     # 0x17fc8
leaq -0x327(%rip), %rbp      # 0x484b
movq %r15, %rdi
movq %rbx, %rsi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xaa3c
leaq 0xc92b(%rip), %rsi      # 0x114bb
leaq 0xc7c2(%rip), %r14      # 0x11359
movl %eax, %edi
movq %r14, %rdx
movl $0x38, %ecx
callq 0x4050
leaq 0xc931(%rip), %rsi      # 0x114de
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xaa3c
leaq 0xc91b(%rip), %rsi      # 0x114e3
movl %eax, %edi
movq %r14, %rdx
movl $0x39, %ecx
callq 0x4050
leaq 0xc929(%rip), %rsi      # 0x11507
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xaa3c
leaq 0xc913(%rip), %rsi      # 0x1150c
movl %eax, %edi
movq %r14, %rdx
movl $0x3a, %ecx
callq 0x4050
leaq 0xc921(%rip), %rsi      # 0x11530
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xaa3c
leaq 0xc90e(%rip), %rsi      # 0x11538
movl %eax, %edi
movq %r14, %rdx
movl $0x3b, %ecx
callq 0x4050
leaq 0xc91f(%rip), %rsi      # 0x1155f
movq %r15, %rdi
movq %r15, 0x10(%rsp)
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa9c0
leaq 0xc906(%rip), %rsi      # 0x11566
movl %eax, %edi
movq %r14, %rdx
movl $0x3d, %ecx
callq 0x4050
leaq 0xc916(%rip), %rsi      # 0x1158c
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa9c0
leaq 0xc900(%rip), %rsi      # 0x11591
movl %eax, %edi
movq %r14, %rdx
movl $0x3e, %ecx
callq 0x4050
movq (%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xaa3c
leaq 0xc8f3(%rip), %rsi      # 0x115b5
movl %eax, %edi
movq %r14, %rdx
movl $0x40, %ecx
callq 0x4050
leaq 0xc900(%rip), %rdx      # 0x115d8
movq %r15, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xaa3c
leaq 0xc8ea(%rip), %rsi      # 0x115dd
movl %eax, %edi
movq %r14, %rdx
movl $0x41, %ecx
callq 0x4050
leaq 0xc8f9(%rip), %rsi      # 0x11602
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa9c0
leaq 0xc8e3(%rip), %rsi      # 0x11607
movl %eax, %edi
movq %r14, %rdx
movl $0x42, %ecx
callq 0x4050
leaq 0xc8f1(%rip), %rdx      # 0x1162b
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xaa3c
leaq 0xc8d8(%rip), %rsi      # 0x11632
movl %eax, %edi
movq %r14, %rdx
movl $0x44, %ecx
callq 0x4050
leaq 0xc8eb(%rip), %rdx      # 0x1165b
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xaa3c
leaq 0xc8d4(%rip), %rsi      # 0x1165f
movl %eax, %edi
movq %r14, %rdx
movl $0x45, %ecx
callq 0x4050
leaq 0xc8e1(%rip), %rdx      # 0x11682
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xaa3c
leaq 0xc8ca(%rip), %rsi      # 0x11686
movl %eax, %edi
movq %r14, %rdx
movl $0x46, %ecx
callq 0x4050
leaq 0xadc8(%rip), %rdx      # 0xfb9a
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa9c0
leaq 0xc8bc(%rip), %rsi      # 0x116a9
movl %eax, %edi
movq %r14, %rdx
movl $0x47, %ecx
callq 0x4050
leaq 0xc8c7(%rip), %rdx      # 0x116ca
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa9c0
leaq 0xc8b0(%rip), %rsi      # 0x116ce
movl %eax, %edi
movq %r14, %rdx
movl $0x48, %ecx
callq 0x4050
leaq 0xc8bd(%rip), %rdx      # 0x116f1
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa9c0
leaq 0xc8a6(%rip), %rsi      # 0x116f5
movl %eax, %edi
movq %r14, %rdx
movl $0x49, %ecx
callq 0x4050
movq 0x10(%rsp), %rdi
callq 0x7052
movq %r15, %rdi
callq 0x7052
movq %rbx, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x7052