// File: /workspace/github_cpp_makefile_star2_O2/attractivechaos[P]udb2/stb/./stb.h
// Function: stb_ischar
int stb_ischar(char c, char *set)
{
   static unsigned char bit[8] = { 1,2,4,8,16,32,64,128 };
   static stb_perfect p;
   static unsigned char (*tables)[256];
   static char ** sets = NULL;

   int z = stb_perfect_hash(&p, (int) set);
   if (z < 0) {
      int i,k,n,j,f;
      // special code that means free all existing data
      if (set == NULL) {
         stb_arr_free(sets);
         free(tables);
         tables = NULL;
         stb_perfect_destroy(&p);
         return 0;
      }
      stb_arr_push(sets, set);
      stb_perfect_destroy(&p);
      n = stb_perfect_create(&p, (unsigned int *) (char **) sets, stb_arr_len(sets));
      assert(n != 0);
      k = (n+7) >> 3;
      tables = (unsigned char (*)[256]) realloc(tables, sizeof(*tables) * k);
      memset(tables, 0, sizeof(*tables) * k);
      for (i=0; i < stb_arr_len(sets); ++i) {
         k = stb_perfect_hash(&p, (int) sets[i]);
         assert(k >= 0);
         n = k >> 3;
         f = bit[k&7];
         for (j=0; !j || sets[i][j]; ++j) {
            tables[n][(unsigned char) sets[i][j]] |= f;
         }
      }
      z = stb_perfect_hash(&p, (int) set);
   }
   return tables[z >> 3][(unsigned char) c] & bit[z & 7];
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r14
movl %edi, %ebx
leaq 0x16286(%rip), %rdi     # 0x1bf28
callq 0x550e
testl %eax, %eax
js 0x5cb7
movq 0x162ae(%rip), %r15     # 0x1bf60
jmp 0x5e2d
testq %r14, %r14
je 0x5d16
movq 0x162a5(%rip), %rax     # 0x1bf68
testq %rax, %rax
je 0x5cd7
movl -0x10(%rax), %ecx
cmpl -0xc(%rax), %ecx
jge 0x5cd7
incl %ecx
movl %ecx, -0x10(%rax)
jmp 0x5cf0
leaq 0x1628a(%rip), %rdi     # 0x1bf68
pushq $0x8
popq %rsi
pushq $0x1
popq %rdx
callq 0x521e
movq 0x16278(%rip), %rax     # 0x1bf68
movslq -0x10(%rax), %rcx
movq %r14, -0x8(%rax,%rcx,8)
leaq 0x16228(%rip), %rdi     # 0x1bf28
callq 0x5c5e
movq 0x1625c(%rip), %rsi     # 0x1bf68
testq %rsi, %rsi
je 0x5d49
movl -0x10(%rsi), %edx
jmp 0x5d4b
leaq 0x1624b(%rip), %rdi     # 0x1bf68
callq 0x510d
movq 0x16237(%rip), %rdi     # 0x1bf60
callq 0x23c0
andq $0x0, 0x1622a(%rip)     # 0x1bf60
leaq 0x161eb(%rip), %rdi     # 0x1bf28
callq 0x5c5e
xorl %eax, %eax
jmp 0x5e52
xorl %edx, %edx
movq %r14, 0x10(%rsp)
movl %ebx, 0xc(%rsp)
leaq 0x161cd(%rip), %rdi     # 0x1bf28
callq 0x555e
testl %eax, %eax
je 0x5e80
addl $0x7, %eax
sarl $0x3, %eax
movq 0x161eb(%rip), %rdi     # 0x1bf60
movslq %eax, %r12
shlq $0x8, %r12
movq %r12, %rsi
callq 0x22b0
movq %rax, %r15
movq %rax, 0x161d2(%rip)     # 0x1bf60
xorl %ebp, %ebp
movq %rax, %rdi
xorl %esi, %esi
movq %r12, %rdx
callq 0x2160
movq 0x161c4(%rip), %rbx     # 0x1bf68
leaq 0x1617d(%rip), %r12     # 0x1bf28
leaq 0xa296(%rip), %r14      # 0x10048
testq %rbx, %rbx
je 0x5dbd
movslq -0x10(%rbx), %rax
jmp 0x5dbf
xorl %eax, %eax
cmpq %rax, %rbp
jge 0x5e18
movq (%rbx,%rbp,8), %r13
movq %r12, %rdi
movl %r13d, %esi
callq 0x550e
testl %eax, %eax
js 0x5e61
movl %eax, %ecx
shrl $0x3, %ecx
andl $0x7, %eax
movb (%rax,%r14), %al
shlq $0x8, %rcx
addq %r15, %rcx
xorl %edx, %edx
jmp 0x5e04
movb (%r13), %sil
movzbl %sil, %esi
orb %al, (%rsi,%rcx)
incq %rdx
movq (%rbx,%rbp,8), %r13
testq %rdx, %rdx
je 0x5df2
movb (%r13,%rdx), %sil
testb %sil, %sil
jne 0x5df6
incq %rbp
jmp 0x5db2
leaq 0x16109(%rip), %rdi     # 0x1bf28
movq 0x10(%rsp), %rsi
callq 0x550e
movl 0xc(%rsp), %ebx
movl %eax, %ecx
sarl $0x3, %ecx
movslq %ecx, %rcx
movzbl %bl, %edx
shlq $0x8, %rcx
addq %r15, %rcx
andl $0x7, %eax
leaq 0xa1ff(%rip), %rsi      # 0x10048
movb (%rax,%rsi), %al
andb (%rdx,%rcx), %al
movzbl %al, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xa8fd(%rip), %rdi      # 0x10765
leaq 0xa5b2(%rip), %rsi      # 0x10421
leaq 0xa8d2(%rip), %rcx      # 0x10748
movl $0xeb0, %edx            # imm = 0xEB0
callq 0x2140
leaq 0xa8ba(%rip), %rdi      # 0x10741
leaq 0xa593(%rip), %rsi      # 0x10421
leaq 0xa8b3(%rip), %rcx      # 0x10748
movl $0xeaa, %edx            # imm = 0xEAA
callq 0x2140