// File: /workspace/github_c_makefile_star2_O2/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 %rbx
pushq %rax
movq %rdi, %rbx
movl (%rsi), %ebp
movzbl (%rdi), %eax
cmpl $0x24, %eax
je 0x7f93
cmpl $0x5e, %eax
je 0x7f2e
cmpl $0x5c, %eax
je 0x7f6a
cmpl $0x2e, %eax
jne 0x8006
movq %rbx, %rdi
callq 0x4880
testb $0x2, %bpl
jne 0x805b
leaq 0x48fa(%rip), %rdi      # 0xc80a
callq 0x4230
leaq 0x4816(%rip), %rsi      # 0xc732
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x47f0
movq %rbx, %rdi
callq 0x4880
callq 0x4180
movq %rax, %rbx
testb $0x1, %bpl
jne 0x800e
movq 0x9029(%rip), %rdi      # 0x10f78
callq 0x4150
movq 0x906d(%rip), %rsi      # 0x10fc8
movq 0x8fbe(%rip), %r8       # 0x10f20
pushq $0x2
popq %rdi
jmp 0x8044
movb 0x1(%rbx), %al
movzbl %al, %ecx
leal -0x61(%rcx), %edx
cmpl $0x16, %edx
ja 0x80af
leaq 0x420d(%rip), %rcx      # 0xc190
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
pushq $0x7
jmp 0x8110
movq %rbx, %rdi
callq 0x4880
callq 0x47a0
movq %rax, %rbx
callq 0x42a0
movq %rax, %r14
testb $0x1, %bpl
jne 0x806a
movq 0x8f9c(%rip), %rsi      # 0x10f58
movq 0x8f5d(%rip), %r15      # 0x10f20
pushq $0x2
popq %rbp
movl %ebp, %edi
movq %rbx, %rdx
movq %r14, %rcx
movq %r15, %r8
xorl %eax, %eax
callq 0x41d0
movq %rax, %rbx
callq 0x42a0
movq %rax, %r14
movq 0x8f8e(%rip), %rdi      # 0x10f78
callq 0x4150
movq 0x8fd2(%rip), %rsi      # 0x10fc8
movl %ebp, %edi
movq %r14, %rdx
movq %rax, %rcx
movq %r15, %r8
jmp 0x808f
movsbl %al, %edi
jmp 0x818a
callq 0x4030
pushq $0x2
popq %rbp
movl %ebp, %edi
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x47c0
movq %rax, %rbx
movq 0x8f49(%rip), %rdi      # 0x10f78
callq 0x4150
movq 0x8f8d(%rip), %rsi      # 0x10fc8
movq 0x8ede(%rip), %r8       # 0x10f20
movl %ebp, %edi
movq %rbx, %rdx
movq %rax, %rcx
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x41d0
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x4160
movq 0x8f07(%rip), %rdi      # 0x10f78
callq 0x4150
movq 0x8f4b(%rip), %rsi      # 0x10fc8
movq 0x8e9c(%rip), %r8       # 0x10f20
pushq $0x2
popq %rbp
movl %ebp, %edi
movq %r14, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x41d0
movl %ebp, %edi
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x47c0
cmpl $0x41, %ecx
je 0x812d
cmpl $0x42, %ecx
je 0x8161
cmpl $0x44, %ecx
je 0x8126
cmpl $0x53, %ecx
je 0x8118
cmpl $0x57, %ecx
je 0x811f
cmpl $0x5a, %ecx
jne 0x8187
callq 0x42a0
jmp 0x8132
callq 0x41b0
jmp 0x817c
pushq $0xc
jmp 0x8110
pushq $0x9
jmp 0x8110
callq 0x4440
jmp 0x817c
callq 0x46d0
jmp 0x817c
pushq $0xd
jmp 0x8110
pushq $0xa
jmp 0x8110
callq 0x4200
jmp 0x8132
pushq $0xb
popq %rdi
callq 0x45b0
jmp 0x817c
callq 0x41b0
jmp 0x8166
callq 0x46d0
jmp 0x8166
callq 0x4440
jmp 0x8166
callq 0x4180
movq %rax, %r14
movq 0x8e3c(%rip), %rdi      # 0x10f78
callq 0x4150
movq 0x8e80(%rip), %rsi      # 0x10fc8
movq 0x8dd1(%rip), %r8       # 0x10f20
pushq $0x2
popq %rdi
movq %r14, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x41d0
jmp 0x817c
callq 0x4200
movq 0x8db3(%rip), %rsi      # 0x10f20
movq 0x8e04(%rip), %rdx      # 0x10f78
movq %rax, %rdi
callq 0x4300
movq %rax, %r14
testq %rax, %rax
jne 0x8192
movb 0x1(%rbx), %al
movsbl %al, %edi
callq 0x45b0
movq %rax, %r14
movq %rbx, %rdi
callq 0x4880
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq