// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x9d36
movq -0x28(%rbp), %rdi
callq 0x4850
movl -0x1c(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x9d12
callq 0x4150
movq %rax, -0x8(%rbp)
jmp 0x9f70
leaq 0x8c8d(%rip), %rdi      # 0x129a6
callq 0x4220
movq %rax, %rdi
leaq 0x8ba6(%rip), %rsi      # 0x128ce
callq 0x47c0
movq %rax, -0x8(%rbp)
jmp 0x9f70
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5e, %eax
jne 0x9df4
movq -0x28(%rbp), %rdi
callq 0x4850
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x9db5
callq 0x4170
movq %rax, -0x40(%rbp)
callq 0x4030
movq -0x40(%rbp), %rsi
movq %rax, %rdx
movl $0x2, %edi
movb $0x0, %al
callq 0x4790
movq %rax, -0x38(%rbp)
movq 0xd1f2(%rip), %rdi      # 0x16f78
callq 0x4140
movq -0x38(%rbp), %rdx
movq %rax, %rcx
movl $0x2, %edi
movq 0xd22a(%rip), %rsi      # 0x16fc8
movq 0xd17b(%rip), %r8       # 0x16f20
movb $0x0, %al
callq 0x41c0
movq %rax, -0x8(%rbp)
jmp 0x9f70
callq 0x4170
movq %rax, -0x48(%rbp)
movq 0xd1b3(%rip), %rdi      # 0x16f78
callq 0x4140
movq -0x48(%rbp), %rdx
movq %rax, %rcx
movl $0x2, %edi
movq 0xd1eb(%rip), %rsi      # 0x16fc8
movq 0xd13c(%rip), %r8       # 0x16f20
movb $0x0, %al
callq 0x41c0
movq %rax, -0x8(%rbp)
jmp 0x9f70
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x24, %eax
jne 0x9ef5
movq -0x28(%rbp), %rdi
callq 0x4850
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x9e73
callq 0x4770
movq %rax, -0x50(%rbp)
callq 0x4290
movq %rax, -0x58(%rbp)
movq 0xd147(%rip), %rdi      # 0x16f78
callq 0x4140
movq -0x58(%rbp), %rdx
movq %rax, %rcx
movl $0x2, %edi
movq 0xd17f(%rip), %rsi      # 0x16fc8
movq 0xd0d0(%rip), %r8       # 0x16f20
movb $0x0, %al
callq 0x41c0
movq -0x50(%rbp), %rsi
movq %rax, %rdx
movl $0x2, %edi
movb $0x0, %al
callq 0x4790
movq %rax, -0x8(%rbp)
jmp 0x9f70
callq 0x4770
movq %rax, -0x70(%rbp)
callq 0x4290
movq -0x70(%rbp), %rdx
movq %rax, %rcx
movl $0x2, %edi
movq 0xd0c4(%rip), %rsi      # 0x16f58
movq 0xd085(%rip), %r8       # 0x16f20
movb $0x0, %al
callq 0x41c0
movq %rax, -0x60(%rbp)
callq 0x4290
movq %rax, -0x68(%rbp)
movq 0xd0c2(%rip), %rdi      # 0x16f78
callq 0x4140
movq -0x68(%rbp), %rdx
movq %rax, %rcx
movl $0x2, %edi
movq 0xd0fa(%rip), %rsi      # 0x16fc8
movq 0xd04b(%rip), %r8       # 0x16f20
movb $0x0, %al
callq 0x41c0
movq -0x60(%rbp), %rsi
movq %rax, %rdx
movl $0x2, %edi
movb $0x0, %al
callq 0x4790
movq %rax, -0x8(%rbp)
jmp 0x9f70
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5c, %eax
jne 0x9f4f
movq -0x28(%rbp), %rax
movsbl 0x1(%rax), %edi
callq 0x10d90
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x9f2c
movq -0x28(%rbp), %rax
movsbl 0x1(%rax), %edi
callq 0x4580
movq %rax, -0x78(%rbp)
jmp 0x9f34
movq -0x30(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
callq 0x4850
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x9f70
movq -0x28(%rbp), %rax
movsbl (%rax), %edi
callq 0x4580
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
callq 0x4850
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax)