// File: /workspace/github_c_makefile_star2_O1/orangeduck[P]mpc/mpc.c
// Function: mpcf_re_escape
static mpc_val_t *mpcf_re_escape(mpc_val_t *x, void* data) {

  int mode = *((int*)data);
  char *s = x;
  mpc_parser_t *p;

  /* Any Character */
  if (s[0] == '.') {
    free(s);
    if (mode & MPC_RE_DOTALL) {
      return mpc_any();
    } else {
      return mpc_expect(mpc_noneof("\n"), "any character except a newline");
    }
  }

  /* Start of Input */
  if (s[0] == '^') {
    free(s);
    if (mode & MPC_RE_MULTILINE) {
      return mpc_and(2, mpcf_snd, mpc_or(2, mpc_soi(), mpc_boundary_newline()), mpc_lift(mpcf_ctor_str), free);
    } else {
      return mpc_and(2, mpcf_snd, mpc_soi(), mpc_lift(mpcf_ctor_str), free);
    }
  }

  /* End of Input */
  if (s[0] == '$') {
    free(s);
    if (mode & MPC_RE_MULTILINE) {
      return mpc_or(2,
        mpc_newline(),
        mpc_and(2, mpcf_snd, mpc_eoi(), mpc_lift(mpcf_ctor_str), free));
    } else {
      return mpc_or(2,
        mpc_and(2, mpcf_fst, mpc_newline(), mpc_eoi(), free),
        mpc_and(2, mpcf_snd, mpc_eoi(), mpc_lift(mpcf_ctor_str), free));
    }
  }

  /* Regex Escape */
  if (s[0] == '\\') {
    p = mpc_re_escape_char(s[1]);
    p = (p == NULL) ? mpc_char(s[1]) : p;
    free(s);
    return p;
  }

  /* Regex Standard */
  p = mpc_char(s[0]);
  free(s);
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movl (%rsi), %ebp
movb (%rdi), %al
movzbl %al, %ecx
cmpl $0x5b, %ecx
jg 0x8932
cmpl $0x24, %ecx
je 0x89f1
cmpl $0x2e, %ecx
jne 0x89e9
movq %rbx, %rdi
callq 0x4580
testb $0x2, %bpl
jne 0x8b13
leaq 0x5ec9(%rip), %rdi      # 0xe7ea
callq 0x4190
leaq 0x5de5(%rip), %rsi      # 0xe712
jmp 0x8b36
cmpl $0x5c, %ecx
je 0x8add
cmpl $0x5e, %ecx
jne 0x89e9
movq %rbx, %rdi
callq 0x4580
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq $0x0, (%rax)
movw $0x1b, 0x30(%rax)
leaq 0x5a5e(%rip), %rsi      # 0xe3cd
movq %rax, %rdi
callq 0x4520
movq %rax, %rbx
testb $0x1, %bpl
je 0x899a
callq 0x4030
movl $0x2, %edi
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x4500
movq %rax, %rbx
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq $0x0, (%rax)
movw $0x3, 0x30(%rax)
movq 0xa5bb(%rip), %rcx      # 0x12f78
movq %rcx, 0x8(%rax)
movq 0xa600(%rip), %rsi      # 0x12fc8
movq 0xa551(%rip), %r8       # 0x12f20
movl $0x2, %edi
movq %rbx, %rdx
movq %rax, %rcx
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x4130
movsbl %al, %edi
jmp 0x8d90
movq %rbx, %rdi
callq 0x4580
movl $0xa, %edi
callq 0x43b0
leaq 0x5d1f(%rip), %rsi      # 0xe729
movq %rax, %rdi
callq 0x4520
movq %rax, %rbx
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq $0x0, (%rax)
movw $0x1c, 0x30(%rax)
leaq 0x59a4(%rip), %rsi      # 0xe3dc
movq %rax, %rdi
callq 0x4520
movq %rax, %r15
testb $0x1, %bpl
jne 0x8b46
movq 0xa504(%rip), %rsi      # 0x12f58
movq 0xa4c5(%rip), %r14      # 0x12f20
xorl %r12d, %r12d
movl $0x2, %edi
movq %rbx, %rdx
movq %r15, %rcx
movq %r14, %r8
xorl %eax, %eax
callq 0x4130
movq %rax, %rbx
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq %r12, (%rax)
movw $0x1c, 0x30(%rax)
leaq 0x5947(%rip), %rsi      # 0xe3dc
movq %rax, %rdi
callq 0x4520
movq %rax, %r15
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq %r12, (%rax)
movw $0x3, 0x30(%rax)
movq 0xa4b9(%rip), %rcx      # 0x12f78
movq %rcx, 0x8(%rax)
movq 0xa4fe(%rip), %rsi      # 0x12fc8
movl $0x2, %edi
movq %r15, %rdx
movq %rax, %rcx
movq %r14, %r8
jmp 0x8b86
movzbl 0x1(%rbx), %eax
xorl %r14d, %r14d
cmpl $0x56, %eax
jle 0x8ba7
leal -0x61(%rax), %ecx
cmpl $0x16, %ecx
ja 0x8bee
leaq 0x5690(%rip), %rax      # 0xe190
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movl $0x7, %edi
jmp 0x8d3c
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq $0x0, (%rax)
movw $0x8, 0x30(%rax)
leaq 0x5836(%rip), %rsi      # 0xe36c
movq %rax, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x4520
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq $0x0, (%rax)
movw $0x3, 0x30(%rax)
movq 0xa40f(%rip), %rcx      # 0x12f78
movq %rcx, 0x8(%rax)
movq 0xa454(%rip), %rsi      # 0x12fc8
movq 0xa3a5(%rip), %r8       # 0x12f20
movl $0x2, %edi
movq %r15, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x4130
movl $0x2, %edi
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x4500
cmpl $0x43, %eax
jg 0x8bc4
cmpl $0x41, %eax
je 0x8c24
cmpl $0x42, %eax
jne 0x8d87
callq 0x4160
jmp 0x8d4b
cmpl $0x44, %eax
je 0x8c68
cmpl $0x53, %eax
jne 0x8d87
leaq 0x582b(%rip), %rdi      # 0xe408
callq 0x4070
leaq 0x5826(%rip), %rsi      # 0xe40f
jmp 0x8c7b
cmpl $0x57, %eax
je 0x8d46
cmpl $0x5a, %eax
jne 0x8d87
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
xorl %r15d, %r15d
movq %r15, (%rax)
movw $0x1c, 0x30(%rax)
leaq 0x57ba(%rip), %rsi      # 0xe3dc
jmp 0x8c46
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
xorl %r15d, %r15d
movq %r15, (%rax)
movw $0x1b, 0x30(%rax)
leaq 0x5787(%rip), %rsi      # 0xe3cd
movq %rax, %rdi
callq 0x4520
movq %rax, %r14
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq %r15, (%rax)
jmp 0x8cfd
leaq 0x57b2(%rip), %rdi      # 0xe421
callq 0x4070
leaq 0x57df(%rip), %rsi      # 0xe45a
movq %rax, %rdi
callq 0x4520
jmp 0x8d4b
callq 0x4470
jmp 0x8d41
movl $0x9, %edi
jmp 0x8d3c
leaq 0x5765(%rip), %rdi      # 0xe408
callq 0x4070
leaq 0x5760(%rip), %rsi      # 0xe40f
jmp 0x8cce
movl $0xd, %edi
jmp 0x8d3c
leaq 0x575f(%rip), %rdi      # 0xe421
callq 0x4070
leaq 0x578c(%rip), %rsi      # 0xe45a
movq %rax, %rdi
callq 0x4520
jmp 0x8d41
movl $0xb, %edi
jmp 0x8d3c
callq 0x4160
movq %rax, %r14
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq $0x0, (%rax)
movw $0x3, 0x30(%rax)
movq 0xa26e(%rip), %rcx      # 0x12f78
movq %rcx, 0x8(%rax)
movq 0xa2b3(%rip), %rsi      # 0x12fc8
movq 0xa204(%rip), %r8       # 0x12f20
movl $0x2, %edi
movq %r14, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x4130
jmp 0x8d41
movl $0xc, %edi
jmp 0x8d3c
movl $0xa, %edi
callq 0x43b0
movq %rax, %r14
jmp 0x8d87
callq 0x4470
movq %rax, %r15
movl $0x1, %edi
movl $0x38, %esi
callq 0x4280
movq %rax, %r14
movq $0x0, (%rax)
movw $0x12, 0x30(%rax)
movq %r15, 0x8(%rax)
movq 0xa1a8(%rip), %rax      # 0x12f20
movq %rax, 0x10(%r14)
movq 0xa1f5(%rip), %rax      # 0x12f78
movq %rax, 0x18(%r14)
testq %r14, %r14
jne 0x8d98
movsbl 0x1(%rbx), %edi
callq 0x43b0
movq %rax, %r14
movq %rbx, %rdi
callq 0x4580
movq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq