// File: /workspace/github_c_makefile_star2_O0/smilingthax[P]libfontembed/woffer.c
// Function: parse_uni
static int parse_uni(const char **str,int *is_wildcard) // {{{
{
  const char *end=*str;
  int iA,ret=0,wildcard=1;

  for (iA=0;(*end)&&(iA<6);end++,iA++) {
    if (*end=='?') {
      wildcard*=16;
      ret*=16;
    } else if (wildcard>1) {
      ret=-1;
      break;
    } else if ( (*end>='0')&&(*end<='9') ) {
      ret=16*ret+(*end-'0');
    } else if ( (*end>='a')&&(*end<='f') ) {
      ret=16*ret+10+(*end-'a');
    } else if ( (*end>='A')&&(*end<='F') ) {
      ret=16*ret+10+(*end-'A');
    } else {
      break;
    }
  }
  if (  (wildcard>0x100000)||
        ( (ret==0x100000)&&(wildcard>0x10000) )  ) {
    ret=-1;
  } else if (is_wildcard) {
    *is_wildcard=wildcard-1;
  } else if (wildcard>1) {
    ret=-1;
  }
  if ( (iA==0)||(iA>=6)||(ret<0)||(ret>0x10ffff) ) {
    fprintf(stderr,"Parse error in unicode point\n");
    return -1;
  }
  *str=end;

  return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movl $0x0, -0x28(%rbp)
movl $0x1, -0x2c(%rbp)
movl $0x0, -0x24(%rbp)
movq -0x20(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x2d(%rbp)
je 0x1a2b
cmpl $0x6, -0x24(%rbp)
setl %al
movb %al, -0x2d(%rbp)
movb -0x2d(%rbp), %al
testb $0x1, %al
jne 0x1a37
jmp 0x1b25
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3f, %eax
jne 0x1a5a
movl -0x2c(%rbp), %eax
shll $0x4, %eax
movl %eax, -0x2c(%rbp)
movl -0x28(%rbp), %eax
shll $0x4, %eax
movl %eax, -0x28(%rbp)
jmp 0x1b09
cmpl $0x1, -0x2c(%rbp)
jle 0x1a6c
movl $0xffffffff, -0x28(%rbp) # imm = 0xFFFFFFFF
jmp 0x1b25
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jl 0x1a9b
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x39, %eax
jg 0x1a9b
movl -0x28(%rbp), %eax
shll $0x4, %eax
movq -0x20(%rbp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
addl %ecx, %eax
movl %eax, -0x28(%rbp)
jmp 0x1b05
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x61, %eax
jl 0x1acd
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x66, %eax
jg 0x1acd
movl -0x28(%rbp), %eax
shll $0x4, %eax
addl $0xa, %eax
movq -0x20(%rbp), %rcx
movsbl (%rcx), %ecx
subl $0x61, %ecx
addl %ecx, %eax
movl %eax, -0x28(%rbp)
jmp 0x1b03
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x41, %eax
jl 0x1aff
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x46, %eax
jg 0x1aff
movl -0x28(%rbp), %eax
shll $0x4, %eax
addl $0xa, %eax
movq -0x20(%rbp), %rcx
movsbl (%rcx), %ecx
subl $0x41, %ecx
addl %ecx, %eax
movl %eax, -0x28(%rbp)
jmp 0x1b01
jmp 0x1b25
jmp 0x1b03
jmp 0x1b05
jmp 0x1b07
jmp 0x1b09
jmp 0x1b0b
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x1a10
cmpl $0x100000, -0x2c(%rbp)  # imm = 0x100000
jg 0x1b40
cmpl $0x100000, -0x28(%rbp)  # imm = 0x100000
jne 0x1b49
cmpl $0x10000, -0x2c(%rbp)   # imm = 0x10000
jle 0x1b49
movl $0xffffffff, -0x28(%rbp) # imm = 0xFFFFFFFF
jmp 0x1b6f
cmpq $0x0, -0x18(%rbp)
je 0x1b5e
movl -0x2c(%rbp), %ecx
subl $0x1, %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
jmp 0x1b6d
cmpl $0x1, -0x2c(%rbp)
jle 0x1b6b
movl $0xffffffff, -0x28(%rbp) # imm = 0xFFFFFFFF
jmp 0x1b6d
jmp 0x1b6f
cmpl $0x0, -0x24(%rbp)
je 0x1b8a
cmpl $0x6, -0x24(%rbp)
jge 0x1b8a
cmpl $0x0, -0x28(%rbp)
jl 0x1b8a
cmpl $0x10ffff, -0x28(%rbp)  # imm = 0x10FFFF
jle 0x1bab
movq 0x9447(%rip), %rax      # 0xafd8
movq (%rax), %rdi
leaq 0x669a(%rip), %rsi      # 0x8235
movb $0x0, %al
callq 0x1170
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x1bbc
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movl -0x28(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)