// File: /workspace/github_cpp_makefile_star2_O3/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 0x115ce(%rip), %rdi     # 0x1fdd8
movl %r14d, %esi
callq 0x5a1c
testl %eax, %eax
js 0xe8a6
movl %eax, %ebp
movq 0x115fd(%rip), %rax     # 0x1fe20
movq 0x115fe(%rip), %r15     # 0x1fe28
movl %ebp, %ecx
movzwl (%r15,%rcx,2), %r12d
movq (%rax,%r12,8), %rsi
movq %r14, %rdi
callq 0x21e0
testl %eax, %eax
je 0xeabc
movq 0x115c4(%rip), %rax     # 0x1fe10
shll $0x3, %r12d
movq (%rax,%r12), %rdi
callq 0x4de4
movq 0x115c0(%rip), %rax     # 0x1fe20
movq (%rax,%r12), %rdi
callq 0x23c0
movq 0x115a8(%rip), %rax     # 0x1fe18
movq %r14, (%rax,%r12)
movq %r14, %rdi
callq 0x2380
movq 0x1159d(%rip), %rcx     # 0x1fe20
movq %rax, (%rcx,%r12)
movq %r14, %rdi
callq 0xd628
movq 0x1157a(%rip), %rcx     # 0x1fe10
movq %rax, (%rcx,%r12)
movq 0x11587(%rip), %r15     # 0x1fe28
jmp 0xeabc
testq %r14, %r14
je 0xe9b3
movq 0x11562(%rip), %rax     # 0x1fe18
testq %rax, %rax
je 0xe8ca
movl -0x10(%rax), %ecx
cmpl -0xc(%rax), %ecx
jge 0xe8ca
incl %ecx
movl %ecx, -0x10(%rax)
jmp 0xe8e7
leaq 0x11547(%rip), %rdi     # 0x1fe18
movl $0x8, %esi
movl $0x1, %edx
callq 0x56ce
movq 0x11531(%rip), %rax     # 0x1fe18
movslq -0x10(%rax), %rcx
movq %r14, -0x8(%rax,%rcx,8)
movq %r14, %rdi
callq 0x2380
movq %rax, %r15
movq 0x1151e(%rip), %rax     # 0x1fe20
testq %rax, %rax
je 0xe916
movl -0x10(%rax), %ecx
cmpl -0xc(%rax), %ecx
jge 0xe916
incl %ecx
movl %ecx, -0x10(%rax)
jmp 0xe933
leaq 0x11503(%rip), %rdi     # 0x1fe20
movl $0x8, %esi
movl $0x1, %edx
callq 0x56ce
movq 0x114ed(%rip), %rax     # 0x1fe20
movslq -0x10(%rax), %rcx
movq %r15, -0x8(%rax,%rcx,8)
movq %r14, %rdi
callq 0xd628
movq %rax, %r15
movq 0x114c2(%rip), %rax     # 0x1fe10
testq %rax, %rax
je 0xe962
movl -0x10(%rax), %ecx
cmpl -0xc(%rax), %ecx
jge 0xe962
incl %ecx
movl %ecx, -0x10(%rax)
jmp 0xe97f
leaq 0x114a7(%rip), %rdi     # 0x1fe10
movl $0x8, %esi
movl $0x1, %edx
callq 0x56ce
movq 0x11491(%rip), %rax     # 0x1fe10
movslq -0x10(%rax), %rcx
movq %r15, -0x8(%rax,%rcx,8)
leaq 0x11449(%rip), %rdi     # 0x1fdd8
callq 0x634e
movq 0x1147d(%rip), %rsi     # 0x1fe18
testq %rsi, %rsi
je 0xea3e
movl -0x10(%rsi), %edx
leaq 0x1142a(%rip), %rdi     # 0x1fdd8
jmp 0xea49
xorl %r15d, %r15d
movq 0x11453(%rip), %rax     # 0x1fe10
testq %rax, %rax
je 0xe9c8
movslq -0x10(%rax), %rcx
jmp 0xe9ca
xorl %ecx, %ecx
cmpq %rcx, %r15
jge 0xe9ed
movq (%rax,%r15,8), %rdi
callq 0x4de4
movq 0x11441(%rip), %rax     # 0x1fe20
movq (%rax,%r15,8), %rdi
callq 0x23c0
incq %r15
jmp 0xe9b6
leaq 0x1141c(%rip), %rdi     # 0x1fe10
callq 0x55ba
leaq 0x11418(%rip), %rdi     # 0x1fe18
callq 0x55ba
leaq 0x11414(%rip), %rdi     # 0x1fe20
callq 0x55ba
leaq 0x113c0(%rip), %rdi     # 0x1fdd8
callq 0x634e
movq 0x11404(%rip), %rdi     # 0x1fe28
callq 0x23c0
movq $0x0, 0x113f4(%rip) # 0x1fe28
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
xorl %r15d, %r15d
jmp 0xeab7
leaq 0x11393(%rip), %rdi     # 0x1fdd8
xorl %esi, %esi
xorl %edx, %edx
callq 0x5a70
movq 0x113d3(%rip), %rdi     # 0x1fe28
movslq %eax, %rsi
addq %rsi, %rsi
callq 0x22b0
movq %rax, %r15
movq %rax, 0x113be(%rip)     # 0x1fe28
xorl %r13d, %r13d
movq 0x113a4(%rip), %rbp     # 0x1fe18
leaq 0x1135d(%rip), %r12     # 0x1fdd8
testq %rbp, %rbp
je 0xea86
movslq -0x10(%rbp), %rax
jmp 0xea88
xorl %eax, %eax
cmpq %rax, %r13
jge 0xeaa6
movl (%rbp,%r13,8), %esi
movq %r12, %rdi
callq 0x5a1c
cltq
movw %r13w, (%r15,%rax,2)
incq %r13
jmp 0xea7b
leaq 0x1132b(%rip), %rdi     # 0x1fdd8
movl %r14d, %esi
callq 0x5a1c
movl %eax, %ebp
testq %r14, %r14
je 0xeae5
movq 0x1134d(%rip), %rax     # 0x1fe10
movslq %ebp, %rcx
movzwl (%r15,%rcx,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 0xe168
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq