// File: /workspace/github_c_makefile_star2_O3/orangeduck[P]mpc/tests/grammar.c
// Function: test_regex_mode
void test_regex_mode(void) {
  
  mpc_parser_t *Line0, *Line1, *Line2, *Line3;
  mpc_ast_t *t0, *t1, *t2, *t3, *t4;
  
  Line0 = mpc_new("line0");
  Line1 = mpc_new("line1");
  Line2 = mpc_new("line2");
  Line3 = mpc_new("line3");
  
  mpca_lang(MPCA_LANG_DEFAULT, " line0 : /.*/; ", Line0);
  mpca_lang(MPCA_LANG_DEFAULT, " line1 : /.*/s; ", Line1);
  mpca_lang(MPCA_LANG_DEFAULT, " line2 : /(^[a-z]*$)*/; ", Line2);
  mpca_lang(MPCA_LANG_DEFAULT, " line3 : /(^[a-z]*$)*/m; ", Line3);
  
  t0 = mpc_ast_new("regex", "blah");
  t1 = mpc_ast_new("regex", "blah\nblah");
  t2 = mpc_ast_new("regex", "");
  t3 = mpc_ast_new("regex", "blah");
  t4 = mpc_ast_new("regex", "blah\nblah");
  
  PT_ASSERT(mpc_test_pass(Line0, "blah\nblah", t0,
    (int(*)(const void*,const void*))mpc_ast_eq,
    (mpc_dtor_t)mpc_ast_delete,
    (void(*)(const void*))mpc_ast_print));
  
  PT_ASSERT(mpc_test_pass(Line1, "blah\nblah", t1,
    (int(*)(const void*,const void*))mpc_ast_eq,
    (mpc_dtor_t)mpc_ast_delete,
    (void(*)(const void*))mpc_ast_print));
  
  PT_ASSERT(mpc_test_pass(Line2, "blah\nblah", t2,
    (int(*)(const void*,const void*))mpc_ast_eq,
    (mpc_dtor_t)mpc_ast_delete,
    (void(*)(const void*))mpc_ast_print));

  PT_ASSERT(mpc_test_pass(Line2, "blah", t3,
    (int(*)(const void*,const void*))mpc_ast_eq,
    (mpc_dtor_t)mpc_ast_delete,
    (void(*)(const void*))mpc_ast_print));
    
  PT_ASSERT(mpc_test_pass(Line3, "blah\nblah", t4,
    (int(*)(const void*,const void*))mpc_ast_eq,
    (mpc_dtor_t)mpc_ast_delete,
    (void(*)(const void*))mpc_ast_print));
  
  mpc_ast_delete(t0);
  mpc_ast_delete(t1);
  mpc_ast_delete(t2);
  mpc_ast_delete(t3);
  mpc_ast_delete(t4);
  
  mpc_cleanup(4, Line0, Line1, Line2, Line3);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
leaq 0xd076(%rip), %rdi      # 0x10a74
callq 0x71ca
movq %rax, %r15
leaq 0xd06d(%rip), %rdi      # 0x10a7a
callq 0x71ca
movq %rax, %r14
movq %rax, 0x8(%rsp)
leaq 0xd05f(%rip), %rdi      # 0x10a80
callq 0x71ca
movq %rax, %r13
movq %rax, (%rsp)
leaq 0xd052(%rip), %rdi      # 0x10a86
callq 0x71ca
movq %rax, %r12
movq %rax, 0x40(%rsp)
leaq 0xd044(%rip), %rsi      # 0x10a8c
xorl %edi, %edi
movq %r15, %rdx
movq %r15, 0x38(%rsp)
xorl %eax, %eax
callq 0xccc2
leaq 0xd03c(%rip), %rsi      # 0x10a9c
xorl %edi, %edi
movq %r14, %rdx
xorl %eax, %eax
callq 0xccc2
leaq 0xd03a(%rip), %rsi      # 0x10aad
xorl %edi, %edi
movq %r13, %rdx
xorl %eax, %eax
callq 0xccc2
leaq 0xd040(%rip), %rsi      # 0x10ac6
xorl %edi, %edi
movq %r12, %rdx
xorl %eax, %eax
callq 0xccc2
leaq 0xcddf(%rip), %rbx      # 0x10878
leaq 0xd045(%rip), %r14      # 0x10ae5
movq %rbx, %rdi
movq %r14, %rsi
callq 0xaa70
movq %rax, %r12
movq %rax, 0x30(%rsp)
leaq 0xd026(%rip), %rbp      # 0x10ae0
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xaa70
movq %rax, %r13
movq %rax, 0x20(%rsp)
leaq 0xe9ce(%rip), %rsi      # 0x124a2
movq %rbx, %rdi
callq 0xaa70
movq %rax, 0x10(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0xaa70
movq %rax, 0x18(%rsp)
movq %rbx, %rdi
movq %rbp, %rsi
movq %rbp, %rbx
callq 0xaa70
movq %rax, 0x28(%rsp)
leaq 0x718f(%rip), %rbp      # 0xac9a
leaq 0x6f06(%rip), %r8       # 0xaa18
leaq 0x735e(%rip), %r9       # 0xae77
movq %r15, %rdi
movq %rbx, %rsi
movq %r12, %rdx
movq %rbp, %rcx
movq %rbp, %r12
movq %r9, %r15
callq 0xa93d
leaq 0xcfb3(%rip), %rsi      # 0x10aea
leaq 0xc1fc(%rip), %r14      # 0xfd3a
movl %eax, %edi
movq %r14, %rdx
movl $0x135, %ecx            # imm = 0x135
callq 0x4094
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq %rbp, %rcx
leaq 0x6eb6(%rip), %r8       # 0xaa18
movq %r8, %rbp
movq %r15, %r9
callq 0xa93d
leaq 0xd00b(%rip), %rsi      # 0x10b7f
movl %eax, %edi
movq %r14, %rdx
movl $0x13a, %ecx            # imm = 0x13A
callq 0x4094
movq (%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movq 0x10(%rsp), %r13
movq %r13, %rdx
movq %r12, %rcx
movq %rbp, %r8
movq %r15, %r9
movq %r15, %rbx
callq 0xa93d
leaq 0xd067(%rip), %rsi      # 0x10c14
movl %eax, %edi
leaq 0xc184(%rip), %rdx      # 0xfd3a
movq %rdx, %rbp
movl $0x13f, %ecx            # imm = 0x13F
callq 0x4094
movq %r14, %rdi
leaq 0xcf18(%rip), %rsi      # 0x10ae5
movq 0x18(%rsp), %r15
movq %r15, %rdx
movq %r12, %rcx
leaq 0x6e39(%rip), %r8       # 0xaa18
movq %rbx, %r9
callq 0xa93d
leaq 0xd0bb(%rip), %rsi      # 0x10ca9
movl %eax, %edi
movq %rbp, %rdx
movl $0x144, %ecx            # imm = 0x144
callq 0x4094
movq 0x40(%rsp), %r14
movq %r14, %rdi
leaq 0xced4(%rip), %rsi      # 0x10ae0
movq 0x28(%rsp), %rbx
movq %rbx, %rdx
movq %r12, %rcx
leaq 0x6dfa(%rip), %r8       # 0xaa18
leaq 0x7252(%rip), %r9       # 0xae77
callq 0xa93d
leaq 0xd107(%rip), %rsi      # 0x10d38
movl %eax, %edi
movq %rbp, %rdx
movl $0x149, %ecx            # imm = 0x149
callq 0x4094
movq 0x30(%rsp), %rdi
callq 0xaa18
movq 0x20(%rsp), %rdi
callq 0xaa18
movq %r13, %rdi
callq 0xaa18
movq %r15, %rdi
callq 0xaa18
movq %rbx, %rdi
callq 0xaa18
movl $0x4, %edi
movq 0x38(%rsp), %rsi
movq 0x8(%rsp), %rdx
movq (%rsp), %rcx
movq %r14, %r8
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x75de