// File: /workspace/github_cpp_makefile_star2_O1/attractivechaos[P]udb2/stb/./stb.h
// Function: stb_regex
int stb_regex(char *regex, char *str)
{
   static stb_perfect p;
   static stb_matcher ** matchers;
   static char        ** regexps;
   static char        ** regexp_cache;
   static unsigned short *mapping;
   int z = stb_perfect_hash(&p, (int) regex);
   if (z >= 0) {
      if (strcmp(regex, regexp_cache[(int) mapping[z]])) {
         int i = mapping[z];
         stb_matcher_free(matchers[i]);
         free(regexp_cache[i]);
         regexps[i] = regex;
         regexp_cache[i] = strdup(regex);
         matchers[i] = stb_regex_matcher(regex);
      }
   } else {
      int i,n;
      if (regex == NULL) {
         for (i=0; i < stb_arr_len(matchers); ++i) {
            stb_matcher_free(matchers[i]);
            free(regexp_cache[i]);
         }
         stb_arr_free(matchers);
         stb_arr_free(regexps);
         stb_arr_free(regexp_cache);
         stb_perfect_destroy(&p);
         free(mapping); mapping = NULL;
         return -1;
      }
      stb_arr_push(regexps, regex);
      stb_arr_push(regexp_cache, strdup(regex));
      stb_arr_push(matchers, stb_regex_matcher(regex));
      stb_perfect_destroy(&p);
      n = stb_perfect_create(&p, (unsigned int *) (char **) regexps, stb_arr_len(regexps));
      mapping = (unsigned short *) realloc(mapping, n * sizeof(*mapping));
      for (i=0; i < stb_arr_len(regexps); ++i)
         mapping[stb_perfect_hash(&p, (int) regexps[i])] = i;
      z = stb_perfect_hash(&p, (int) regex);
   }
   return stb_matcher_find(matchers[(int) mapping[z]], str);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x11301(%rip), %rdi     # 0x1fde8
movl %r14d, %esi
callq 0x5b58
testl %eax, %eax
js 0xeb7c
movl %eax, %ebp
movq 0x11330(%rip), %rax     # 0x1fe30
movq 0x11331(%rip), %rcx     # 0x1fe38
movl %ebp, %edx
movzwl (%rcx,%rdx,2), %r15d
movq (%rax,%r15,8), %rsi
movq %r14, %rdi
callq 0x21e0
testl %eax, %eax
je 0xedd5
movq 0x112f7(%rip), %rax     # 0x1fe20
shll $0x3, %r15d
movq (%rax,%r15), %rdi
callq 0x4ecf
movq 0x112f3(%rip), %rax     # 0x1fe30
movq (%rax,%r15), %rdi
callq 0x23d0
movq 0x112db(%rip), %rax     # 0x1fe28
movq %r14, (%rax,%r15)
movq %r14, %rdi
callq 0x2390
movq 0x112d0(%rip), %rcx     # 0x1fe30
movq %rax, (%rcx,%r15)
movq %r14, %rdi
callq 0xd898
movq 0x112ad(%rip), %rcx     # 0x1fe20
movq %rax, (%rcx,%r15)
jmp 0xedd5
testq %r14, %r14
je 0xeb9b
movq 0x112a0(%rip), %rax     # 0x1fe28
testq %rax, %rax
je 0xec26
movl -0x10(%rax), %ecx
incl %ecx
jmp 0xec2b
xorl %r15d, %r15d
movq 0x1127b(%rip), %rax     # 0x1fe20
testq %rax, %rax
je 0xebb0
movslq -0x10(%rax), %rcx
jmp 0xebb2
xorl %ecx, %ecx
cmpq %rcx, %r15
jge 0xebd5
movq (%rax,%r15,8), %rdi
callq 0x4ecf
movq 0x11269(%rip), %rax     # 0x1fe30
movq (%rax,%r15,8), %rdi
callq 0x23d0
incq %r15
jmp 0xeb9e
leaq 0x11244(%rip), %rdi     # 0x1fe20
callq 0x56c1
leaq 0x11240(%rip), %rdi     # 0x1fe28
callq 0x56c1
leaq 0x1123c(%rip), %rdi     # 0x1fe30
callq 0x56c1
leaq 0x111e8(%rip), %rdi     # 0x1fde8
callq 0x63b1
movq 0x1122c(%rip), %rdi     # 0x1fe38
callq 0x23d0
movq $0x0, 0x1121c(%rip) # 0x1fe38
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
jmp 0xedd0
movl $0x1, %ecx
testq %rax, %rax
je 0xec35
movl -0xc(%rax), %edx
jmp 0xec37
xorl %edx, %edx
cmpl %edx, %ecx
jle 0xec53
leaq 0x111e6(%rip), %rdi     # 0x1fe28
movl $0x8, %esi
movl $0x1, %edx
callq 0x57e0
jmp 0xec56
incl -0x10(%rax)
movq 0x111cb(%rip), %rax     # 0x1fe28
testq %rax, %rax
je 0xec68
movslq -0x10(%rax), %rcx
jmp 0xec6a
xorl %ecx, %ecx
movq %r14, -0x8(%rax,%rcx,8)
movq %r14, %rdi
callq 0x2390
movq %rax, %r15
movq 0x111af(%rip), %rax     # 0x1fe30
testq %rax, %rax
je 0xec8d
movl -0x10(%rax), %ecx
incl %ecx
jmp 0xec92
movl $0x1, %ecx
testq %rax, %rax
je 0xec9c
movl -0xc(%rax), %edx
jmp 0xec9e
xorl %edx, %edx
cmpl %edx, %ecx
jle 0xecba
leaq 0x11187(%rip), %rdi     # 0x1fe30
movl $0x8, %esi
movl $0x1, %edx
callq 0x57e0
jmp 0xecbd
incl -0x10(%rax)
movq 0x1116c(%rip), %rax     # 0x1fe30
testq %rax, %rax
je 0xeccf
movslq -0x10(%rax), %rcx
jmp 0xecd1
xorl %ecx, %ecx
movq %r15, -0x8(%rax,%rcx,8)
movq %r14, %rdi
callq 0xd898
movq %rax, %r15
movq 0x11138(%rip), %rax     # 0x1fe20
testq %rax, %rax
je 0xecf4
movl -0x10(%rax), %ecx
incl %ecx
jmp 0xecf9
movl $0x1, %ecx
testq %rax, %rax
je 0xed03
movl -0xc(%rax), %edx
jmp 0xed05
xorl %edx, %edx
cmpl %edx, %ecx
jle 0xed21
leaq 0x11110(%rip), %rdi     # 0x1fe20
movl $0x8, %esi
movl $0x1, %edx
callq 0x57e0
jmp 0xed24
incl -0x10(%rax)
movq 0x110f5(%rip), %rax     # 0x1fe20
xorl %r12d, %r12d
testq %rax, %rax
je 0xed39
movslq -0x10(%rax), %rcx
jmp 0xed3b
xorl %ecx, %ecx
movq %r15, -0x8(%rax,%rcx,8)
leaq 0x110a1(%rip), %rdi     # 0x1fde8
callq 0x63b1
movq 0x110d5(%rip), %rsi     # 0x1fe28
testq %rsi, %rsi
je 0xed5c
movl -0x10(%rsi), %r12d
leaq 0x11085(%rip), %r15     # 0x1fde8
movq %r15, %rdi
movl %r12d, %edx
callq 0x5bac
movq 0x110c3(%rip), %rdi     # 0x1fe38
movslq %eax, %rsi
addq %rsi, %rsi
callq 0x22b0
movq %rax, %r12
movq %rax, 0x110ae(%rip)     # 0x1fe38
xorl %r13d, %r13d
movq 0x11094(%rip), %rbp     # 0x1fe28
testq %rbp, %rbp
je 0xed9f
movslq -0x10(%rbp), %rax
jmp 0xeda1
xorl %eax, %eax
cmpq %rax, %r13
jge 0xedbf
movl (%rbp,%r13,8), %esi
movq %r15, %rdi
callq 0x5b58
cltq
movw %r13w, (%r12,%rax,2)
incq %r13
jmp 0xed94
leaq 0x11022(%rip), %rdi     # 0x1fde8
movl %r14d, %esi
callq 0x5b58
movl %eax, %ebp
testq %r14, %r14
je 0xee04
movq 0x11044(%rip), %rax     # 0x1fe20
movq 0x11055(%rip), %rcx     # 0x1fe38
movslq %ebp, %rdx
movzwl (%rcx,%rdx,2), %ecx
movq (%rax,%rcx,8), %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xe45d
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq