// File: 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:
subq $0x68, %rsp
movb %dil, %al
movb %al, 0x63(%rsp)
movq %rsi, 0x58(%rsp)
movq 0x58(%rsp), %rax
movl %eax, %esi
leaq 0x2099a(%rip), %rdi     # 0x2a098
callq 0x87c0
movl %eax, 0x54(%rsp)
cmpl $0x0, 0x54(%rsp)
jge 0x9a44
cmpq $0x0, 0x58(%rsp)
jne 0x9756
leaq 0x209b7(%rip), %rdi     # 0x2a0d8
callq 0x7d20
movq 0x209a3(%rip), %rdi     # 0x2a0d0
callq 0x23c0
movq $0x0, 0x20993(%rip) # 0x2a0d0
leaq 0x20954(%rip), %rdi     # 0x2a098
callq 0x9670
movl $0x0, 0x64(%rsp)
jmp 0x9a80
movq 0x58(%rsp), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x20970(%rip)     # 0x2a0d8
je 0x977a
movq 0x20967(%rip), %rax     # 0x2a0d8
movl -0x10(%rax), %eax
movl %eax, 0x34(%rsp)
jmp 0x9782
xorl %eax, %eax
movl %eax, 0x34(%rsp)
jmp 0x9782
movl 0x34(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x30(%rsp)
cmpq $0x0, 0x20943(%rip)     # 0x2a0d8
je 0x97a7
movq 0x2093a(%rip), %rax     # 0x2a0d8
movl -0xc(%rax), %eax
movl %eax, 0x2c(%rsp)
jmp 0x97af
xorl %eax, %eax
movl %eax, 0x2c(%rsp)
jmp 0x97af
movl 0x30(%rsp), %eax
movl 0x2c(%rsp), %ecx
cmpl %ecx, %eax
jle 0x97d3
leaq 0x20916(%rip), %rdi     # 0x2a0d8
movl $0x8, %esi
movl $0x1, %edx
callq 0x8030
jmp 0x97e3
movq 0x208fe(%rip), %rax     # 0x2a0d8
movl -0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, -0x10(%rax)
movq 0x208ee(%rip), %rax     # 0x2a0d8
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x208e1(%rip)     # 0x2a0d8
je 0x9809
movq 0x208d8(%rip), %rax     # 0x2a0d8
movl -0x10(%rax), %eax
movl %eax, 0x1c(%rsp)
jmp 0x9811
xorl %eax, %eax
movl %eax, 0x1c(%rsp)
jmp 0x9811
movq 0x20(%rsp), %rax
movq 0x38(%rsp), %rdx
movl 0x1c(%rsp), %ecx
movslq %ecx, %rcx
movq %rdx, -0x8(%rax,%rcx,8)
leaq 0x2086a(%rip), %rdi     # 0x2a098
callq 0x9670
movq 0x2089e(%rip), %rax     # 0x2a0d8
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x20891(%rip)     # 0x2a0d8
je 0x9859
movq 0x20888(%rip), %rax     # 0x2a0d8
movl -0x10(%rax), %eax
movl %eax, 0xc(%rsp)
jmp 0x9861
xorl %eax, %eax
movl %eax, 0xc(%rsp)
jmp 0x9861
movq 0x10(%rsp), %rsi
movl 0xc(%rsp), %edx
leaq 0x20827(%rip), %rdi     # 0x2a098
callq 0x88c0
movl %eax, 0x48(%rsp)
cmpl $0x0, 0x48(%rsp)
je 0x9883
jmp 0x98a2
leaq 0x15e1f(%rip), %rdi     # 0x1f6a9
leaq 0x15af8(%rip), %rsi     # 0x1f389
movl $0xeaa, %edx            # imm = 0xEAA
leaq 0x15e13(%rip), %rcx     # 0x1f6b0
callq 0x2140
movl 0x48(%rsp), %eax
addl $0x7, %eax
sarl $0x3, %eax
movl %eax, 0x4c(%rsp)
movq 0x20819(%rip), %rdi     # 0x2a0d0
movslq 0x4c(%rsp), %rsi
shlq $0x8, %rsi
callq 0x22b0
movq %rax, 0x20804(%rip)     # 0x2a0d0
movq 0x207fd(%rip), %rdi     # 0x2a0d0
movslq 0x4c(%rsp), %rdx
shlq $0x8, %rdx
xorl %esi, %esi
callq 0x2160
movl $0x0, 0x50(%rsp)
movl 0x50(%rsp), %eax
movl %eax, 0x8(%rsp)
cmpq $0x0, 0x207dd(%rip)     # 0x2a0d8
je 0x990d
movq 0x207d4(%rip), %rax     # 0x2a0d8
movl -0x10(%rax), %eax
movl %eax, 0x4(%rsp)
jmp 0x9915
xorl %eax, %eax
movl %eax, 0x4(%rsp)
jmp 0x9915
movl 0x8(%rsp), %eax
movl 0x4(%rsp), %ecx
cmpl %ecx, %eax
jge 0x9a2d
movq 0x207ac(%rip), %rax     # 0x2a0d8
movslq 0x50(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %esi
leaq 0x2075a(%rip), %rdi     # 0x2a098
callq 0x87c0
movl %eax, 0x4c(%rsp)
cmpl $0x0, 0x4c(%rsp)
jl 0x9950
jmp 0x996f
leaq 0x15d76(%rip), %rdi     # 0x1f6cd
leaq 0x15a2b(%rip), %rsi     # 0x1f389
movl $0xeb0, %edx            # imm = 0xEB0
leaq 0x15d46(%rip), %rcx     # 0x1f6b0
callq 0x2140
movl 0x4c(%rsp), %eax
sarl $0x3, %eax
movl %eax, 0x48(%rsp)
movl 0x4c(%rsp), %eax
andl $0x7, %eax
movslq %eax, %rcx
leaq 0x1c9dd(%rip), %rax     # 0x26368
movzbl (%rax,%rcx), %eax
movl %eax, 0x40(%rsp)
movl $0x0, 0x44(%rsp)
movb $0x1, %al
cmpl $0x0, 0x44(%rsp)
movb %al, 0x3(%rsp)
je 0x99cb
movq 0x20729(%rip), %rax     # 0x2a0d8
movslq 0x50(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x44(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
setne %al
movb %al, 0x3(%rsp)
movb 0x3(%rsp), %al
testb $0x1, %al
jne 0x99d5
jmp 0x9a1b
movl 0x40(%rsp), %esi
movq 0x206f0(%rip), %rax     # 0x2a0d0
movslq 0x48(%rsp), %rcx
shlq $0x8, %rcx
addq %rcx, %rax
movq 0x206e5(%rip), %rcx     # 0x2a0d8
movslq 0x50(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq 0x44(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %edx
orl %esi, %edx
movb %dl, (%rax,%rcx)
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x999b
jmp 0x9a1d
movl 0x50(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x50(%rsp)
jmp 0x98eb
movq 0x58(%rsp), %rax
movl %eax, %esi
leaq 0x2065d(%rip), %rdi     # 0x2a098
callq 0x87c0
movl %eax, 0x54(%rsp)
movq 0x20685(%rip), %rax     # 0x2a0d0
movl 0x54(%rsp), %ecx
sarl $0x3, %ecx
movslq %ecx, %rcx
shlq $0x8, %rcx
addq %rcx, %rax
movzbl 0x63(%rsp), %ecx
movzbl (%rax,%rcx), %eax
movl 0x54(%rsp), %ecx
andl $0x7, %ecx
movslq %ecx, %rdx
leaq 0x1c8f2(%rip), %rcx     # 0x26368
movzbl (%rcx,%rdx), %ecx
andl %ecx, %eax
movl %eax, 0x64(%rsp)
movl 0x64(%rsp), %eax
addq $0x68, %rsp
retq
nopl (%rax)