// File: /workspace/github_c_makefile_star2_O3/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 0xc93b(%rip), %rdi      # 0x114ac
callq 0x9153
movq %rax, %r15
leaq 0xc926(%rip), %rdi      # 0x114a6
callq 0x9153
movq %rax, (%rsp)
leaq 0xc924(%rip), %rdi      # 0x114b4
callq 0x9153
movq %rax, 0x8(%rsp)
leaq 0xca38(%rip), %rbx      # 0x115d9
leaq -0x32a(%rip), %r12      # 0x487e
movq 0x13419(%rip), %r13     # 0x17fc8
leaq -0x327(%rip), %rbp      # 0x488f
movq %r15, %rdi
movq %rbx, %rsi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa93d
leaq 0xc8e7(%rip), %rsi      # 0x114bb
leaq 0xc77e(%rip), %r14      # 0x11359
movl %eax, %edi
movq %r14, %rdx
movl $0x38, %ecx
callq 0x4094
leaq 0xc8ed(%rip), %rsi      # 0x114de
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa93d
leaq 0xc8d7(%rip), %rsi      # 0x114e3
movl %eax, %edi
movq %r14, %rdx
movl $0x39, %ecx
callq 0x4094
leaq 0xc8e5(%rip), %rsi      # 0x11507
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa93d
leaq 0xc8cf(%rip), %rsi      # 0x1150c
movl %eax, %edi
movq %r14, %rdx
movl $0x3a, %ecx
callq 0x4094
leaq 0xc8dd(%rip), %rsi      # 0x11530
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa93d
leaq 0xc8ca(%rip), %rsi      # 0x11538
movl %eax, %edi
movq %r14, %rdx
movl $0x3b, %ecx
callq 0x4094
leaq 0xc8db(%rip), %rsi      # 0x1155f
movq %r15, %rdi
movq %r15, 0x10(%rsp)
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa8c1
leaq 0xc8c2(%rip), %rsi      # 0x11566
movl %eax, %edi
movq %r14, %rdx
movl $0x3d, %ecx
callq 0x4094
leaq 0xc8d2(%rip), %rsi      # 0x1158c
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa8c1
leaq 0xc8bc(%rip), %rsi      # 0x11591
movl %eax, %edi
movq %r14, %rdx
movl $0x3e, %ecx
callq 0x4094
movq (%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa93d
leaq 0xc8af(%rip), %rsi      # 0x115b5
movl %eax, %edi
movq %r14, %rdx
movl $0x40, %ecx
callq 0x4094
leaq 0xc8bc(%rip), %rdx      # 0x115d8
movq %r15, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa93d
leaq 0xc8a6(%rip), %rsi      # 0x115dd
movl %eax, %edi
movq %r14, %rdx
movl $0x41, %ecx
callq 0x4094
leaq 0xc8b5(%rip), %rsi      # 0x11602
movq %r15, %rdi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa8c1
leaq 0xc89f(%rip), %rsi      # 0x11607
movl %eax, %edi
movq %r14, %rdx
movl $0x42, %ecx
callq 0x4094
leaq 0xc8ad(%rip), %rdx      # 0x1162b
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa93d
leaq 0xc894(%rip), %rsi      # 0x11632
movl %eax, %edi
movq %r14, %rdx
movl $0x44, %ecx
callq 0x4094
leaq 0xc8a7(%rip), %rdx      # 0x1165b
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa93d
leaq 0xc890(%rip), %rsi      # 0x1165f
movl %eax, %edi
movq %r14, %rdx
movl $0x45, %ecx
callq 0x4094
leaq 0xc89d(%rip), %rdx      # 0x11682
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa93d
leaq 0xc886(%rip), %rsi      # 0x11686
movl %eax, %edi
movq %r14, %rdx
movl $0x46, %ecx
callq 0x4094
leaq 0xad84(%rip), %rdx      # 0xfb9a
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa8c1
leaq 0xc878(%rip), %rsi      # 0x116a9
movl %eax, %edi
movq %r14, %rdx
movl $0x47, %ecx
callq 0x4094
leaq 0xc883(%rip), %rdx      # 0x116ca
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa8c1
leaq 0xc86c(%rip), %rsi      # 0x116ce
movl %eax, %edi
movq %r14, %rdx
movl $0x48, %ecx
callq 0x4094
leaq 0xc879(%rip), %rdx      # 0x116f1
movq %rbx, %rdi
movq %rdx, %rsi
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
callq 0xa8c1
leaq 0xc862(%rip), %rsi      # 0x116f5
movl %eax, %edi
movq %r14, %rdx
movl $0x49, %ecx
callq 0x4094
movq 0x10(%rsp), %rdi
callq 0x708b
movq %r15, %rdi
callq 0x708b
movq %rbx, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x708b