// File: /workspace/github_c_makefile_star2_O0/smilingthax[P]libfontembed/woffer.c
// Function: parse_ranges
static BITSET parse_ranges(OTF_FILE *otf,const char *str) // {{{
{
  BITSET ret=bitset_new(otf->numGlyphs);
  if (!ret) {
    return NULL;
  }

  while (*str==' ') str++;
  while (*str) {
    if ( ((str[0]|0x20)=='u')&&(str[1]=='+') ) {
      int is_wildcard;
      str+=2;
      const int unistart=parse_uni(&str,&is_wildcard);
      if (unistart<0) {
        goto fail;
      }
      if (*str=='-') {
        if (is_wildcard>0) {
          goto fail;
        }
        str++;
        const int uniend=parse_uni(&str,NULL);
        if (uniend<0) {
          goto fail;
        } else if (uniend<unistart) {
          fprintf(stderr,"Reverse range is not allowed\n");
          goto fail;
        }
        set_range(otf,ret,unistart,uniend);
      } else if (is_wildcard) {
        set_range(otf,ret,unistart,unistart+is_wildcard);
      } else {
        bit_set(ret,otf_from_unicode(otf,unistart));
      }
    } else {
      break;
    }
    while (*str==' ') str++;
    if (*str==',') {
      str++;
      while (*str==' ') str++;
      if (!*str) {
        goto fail;
      }
    }
  }

  if (!*str) {
    return ret;
  }
fail:
  free(ret);
  return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movzwl 0x4c(%rax), %edi
callq 0x19b0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x1735
movq $0x0, -0x8(%rbp)
jmp 0x18ef
jmp 0x1737
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x1751
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x1737
jmp 0x1753
movq -0x18(%rbp), %rax
cmpb $0x0, (%rax)
je 0x18c9
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
orl $0x20, %eax
cmpl $0x75, %eax
jne 0x1867
movq -0x18(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2b, %eax
jne 0x1867
movq -0x18(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x18(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x24(%rbp), %rsi
callq 0x19e0
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
jge 0x17ab
jmp 0x18de
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x1825
cmpl $0x0, -0x24(%rbp)
jle 0x17c2
jmp 0x18de
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
leaq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x19e0
movl %eax, -0x2c(%rbp)
cmpl $0x0, -0x2c(%rbp)
jge 0x17e9
jmp 0x18de
movl -0x2c(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x180e
movq 0x97e0(%rip), %rax      # 0xafd8
movq (%rax), %rdi
leaq 0x6a15(%rip), %rsi      # 0x8217
movb $0x0, %al
callq 0x1170
jmp 0x18de
jmp 0x1810
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
movl -0x28(%rbp), %edx
movl -0x2c(%rbp), %ecx
callq 0x1bd0
jmp 0x1865
cmpl $0x0, -0x24(%rbp)
je 0x1843
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
movl -0x28(%rbp), %edx
movl -0x28(%rbp), %ecx
addl -0x24(%rbp), %ecx
callq 0x1bd0
jmp 0x1863
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0x4040
movq -0x38(%rbp), %rdi
movzwl %ax, %esi
callq 0x1c20
jmp 0x1865
jmp 0x1869
jmp 0x18c9
jmp 0x186b
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x1885
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x186b
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2c, %eax
jne 0x18c4
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
jne 0x18b7
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x189d
movq -0x18(%rbp), %rax
cmpb $0x0, (%rax)
jne 0x18c2
jmp 0x18de
jmp 0x18c4
jmp 0x1753
movq -0x18(%rbp), %rax
cmpb $0x0, (%rax)
jne 0x18dc
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x18ef
jmp 0x18de
movq -0x20(%rbp), %rdi
callq 0x1140
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)