// File: /workspace/github_c_makefile_star2_O1/mattn[P]orelang/slre.c
// Function: slre_match
int slre_match(const char *regexp, const char *s, int s_len,
               struct slre_cap *caps, int num_caps, int flags) {
  struct regex_info info;

  /* Initialize info structure */
  info.flags = flags;
  info.num_brackets = info.num_branches = 0;
  info.num_caps = num_caps;
  info.caps = caps;

  DBG(("========================> [%s] [%.*s]\n", regexp, s_len, s));
  return foo(regexp, (int) strlen(regexp), s, s_len, &info);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1018, %rsp           # imm = 0x1018
movl %edx, %ebx
movq %rsi, 0x38(%rsp)
movq %rdi, %r15
leaq 0x9c0(%rsp), %r14
movl %r9d, 0x654(%r14)
xorl %eax, %eax
movl %eax, 0x640(%r14)
movl $0x0, 0xc(%rsp)
movl %eax, -0x8(%r14)
movl %r8d, 0x2c(%rsp)
movl %r8d, 0x650(%r14)
movq %rcx, 0x648(%r14)
callq 0x20c0
movq %rax, %r13
movq %r15, 0x30(%rsp)
movq %r15, -0x968(%r14)
movl %r13d, -0x960(%r14)
movl $0x1, -0x8(%r14)
testl %r13d, %r13d
jle 0xbd41
movl %ebx, 0x20(%rsp)
leal -0x1(%r13), %eax
movl %eax, 0x28(%rsp)
leal -0x3(%r13), %eax
movl %eax, 0x24(%rsp)
movl 0x9b8(%rsp), %eax
movq %rax, 0x10(%rsp)
movl 0x1000(%rsp), %r12d
xorl %ebp, %ebp
movslq %ebp, %rbx
movq 0x30(%rsp), %r14
leaq (%r14,%rbx), %r15
movl %r13d, %esi
subl %ebx, %esi
movq %r15, %rdi
callq 0xbecf
movl %eax, %r8d
movzbl (%r14,%rbx), %eax
cmpl $0x5b, %eax
jg 0xbbdc
cmpl $0x28, %eax
je 0xbc2e
cmpl $0x29, %eax
jne 0xbd05
movq 0x10(%rsp), %rax
decl %eax
cltq
leaq (%rax,%rax,2), %rcx
cmpl $-0x1, 0x60(%rsp,%rcx,8)
movl 0xc(%rsp), %ecx
cmovnel %ecx, %eax
cltq
leaq (%rax,%rax,2), %rax
subl 0x58(%rsp,%rax,8), %r15d
movl %r15d, 0x60(%rsp,%rax,8)
testl %ecx, %ecx
jle 0xbcef
testl %ebp, %ebp
jle 0xbceb
movl %ebp, %eax
movq 0x30(%rsp), %rcx
cmpb $0x28, -0x1(%rcx,%rax)
jne 0xbceb
movl $0xffffffff, 0x1c(%rsp) # imm = 0xFFFFFFFF
jmp 0xbcf7
cmpl $0x5c, %eax
je 0xbc7f
cmpl $0x7c, %eax
jne 0xbd05
cmpl $0x63, %r12d
jg 0xbe8f
movq 0x10(%rsp), %rax
decl %eax
cltq
leaq (%rax,%rax,2), %rcx
cmpl $-0x1, 0x60(%rsp,%rcx,8)
cmovnel 0xc(%rsp), %eax
movslq %r12d, %rcx
shlq $0x4, %rcx
leaq 0x9c0(%rsp), %rdx
movl %eax, (%rdx,%rcx)
movq %r15, 0x8(%rdx,%rcx)
incl %r12d
jmp 0xbd05
movq 0x10(%rsp), %rax
cmpl $0x63, %eax
jg 0xbe96
movl 0x2c(%rsp), %edi
testl %edi, %edi
setg %cl
incq %r15
movq %rax, %rdx
movslq %edx, %rax
leaq (%rax,%rax,2), %rax
movq %r15, 0x58(%rsp,%rax,8)
movl $0xffffffff, 0x60(%rsp,%rax,8) # imm = 0xFFFFFFFF
leal 0x1(%rdx), %esi
cmpl %edi, %edx
setg %dl
testb %dl, %cl
jne 0xbe9d
incl 0xc(%rsp)
movl %esi, %eax
movq %rax, 0x10(%rsp)
jmp 0xbd05
cmpl 0x28(%rsp), %ebp
jge 0xbe7d
movzbl 0x1(%r15), %esi
cmpl $0x78, %esi
jne 0xbcc9
cmpl 0x24(%rsp), %ebp
jge 0xbe7d
movl %r8d, %r14d
callq 0x22b0
movq (%rax), %rax
movsbq 0x2(%r15), %rcx
testb $0x10, 0x1(%rax,%rcx,2)
je 0xbe7d
movsbq 0x3(%r15), %rcx
testb $0x10, 0x1(%rax,%rcx,2)
jne 0xbce6
jmp 0xbe7d
movl %r8d, %r14d
movl $0x16, %edx
leaq 0x8b10(%rip), %rdi      # 0x147e8
callq 0x2120
testq %rax, %rax
je 0xbe7d
movl %r14d, %r8d
jmp 0xbd05
movb $0x1, %al
jmp 0xbcf9
movl $0xfffffffd, 0x1c(%rsp) # imm = 0xFFFFFFFD
xorl %eax, %eax
testb %al, %al
je 0xbe89
decl 0xc(%rsp)
addl %r8d, %ebp
cmpl %r13d, %ebp
jl 0xbb4c
movq 0x10(%rsp), %rax
movl %eax, 0x9b8(%rsp)
movl %r12d, 0x1000(%rsp)
movl $0xfffffffd, %eax       # imm = 0xFFFFFFFD
cmpl $0x0, 0xc(%rsp)
movl 0x20(%rsp), %ebx
leaq 0x9c0(%rsp), %r14
jne 0xbebd
movl 0x1000(%rsp), %eax
testl %eax, %eax
movl %ebx, %r13d
jle 0xbdc0
movl $0x1, %ecx
leaq 0x9d0(%rsp), %rdx
xorl %esi, %esi
movq %rsi, %rax
incq %rsi
movslq 0x1000(%rsp), %rdi
cmpq %rdi, %rsi
jge 0xbdad
shlq $0x4, %rax
addq %r14, %rax
movq %rdx, %rdi
movl %ecx, %r8d
movl (%rax), %r9d
cmpl (%rdi), %r9d
jle 0xbd9c
movups (%rax), %xmm0
movaps %xmm0, 0x40(%rsp)
movups (%rdi), %xmm0
movups %xmm0, (%rax)
movaps 0x40(%rsp), %xmm0
movups %xmm0, (%rdi)
incl %r8d
addq $0x10, %rdi
cmpl %r8d, 0x1000(%rsp)
jg 0xbd7e
movslq 0x1000(%rsp), %rax
incl %ecx
addq $0x10, %rdx
cmpq %rax, %rsi
jl 0xbd5e
movslq 0x9b8(%rsp), %rcx
testq %rcx, %rcx
jle 0xbe2d
movslq %eax, %rdx
negq %rdx
xorl %esi, %esi
xorl %edi, %edi
leaq (%rsi,%rsi,2), %r8
movl $0x0, 0x68(%rsp,%r8,8)
movl %edi, 0x64(%rsp,%r8,8)
cmpl %eax, %edi
jge 0xbe25
leaq (%rsp,%r8,8), %r8
addq $0x58, %r8
movslq %edi, %r9
leaq (%rdx,%r9), %r10
shlq $0x4, %r9
addq %r14, %r9
xorl %r11d, %r11d
movl (%r9), %ebx
cmpq %rbx, %rsi
jne 0xbe22
incl 0x10(%r8)
decq %r11
addq $0x10, %r9
cmpq %r11, %r10
jne 0xbe06
movl %eax, %edi
jmp 0xbe25
subl %r11d, %edi
incq %rsi
cmpq %rcx, %rsi
jne 0xbdd7
testl %r13d, %r13d
js 0xbe76
leaq 0x58(%rsp), %r14
movq (%r14), %rax
movb (%rax), %bpl
movl %r13d, %r15d
xorl %r12d, %r12d
movl %r13d, %ebx
movq 0x38(%rsp), %rax
leaq (%rax,%r12), %rdi
movl %ebx, %esi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0xbf45
testl %eax, %eax
jns 0xbe84
cmpb $0x5e, %bpl
je 0xbebd
leaq 0x1(%r12), %rcx
decl %ebx
cmpq %r15, %r12
movq %rcx, %r12
jb 0xbe46
jmp 0xbebd
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0xbebd
movl $0xfffffffa, %eax       # imm = 0xFFFFFFFA
jmp 0xbea9
addl %r12d, %eax
jmp 0xbebd
movl 0x1c(%rsp), %eax
jmp 0xbea9
movl $0xfffffff8, %eax       # imm = 0xFFFFFFF8
jmp 0xbea9
movl $0xfffffff7, %eax       # imm = 0xFFFFFFF7
jmp 0xbea9
movl $0xfffffff9, %eax       # imm = 0xFFFFFFF9
movl %esi, %ecx
movq %rcx, 0x10(%rsp)
movq 0x10(%rsp), %rcx
movl %ecx, 0x9b8(%rsp)
movl %r12d, 0x1000(%rsp)
addq $0x1018, %rsp           # imm = 0x1018
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq