// File: /workspace/github_c_makefile_star2_O0/smilingthax[P]libfontembed/test_cff.c
// Function: dump_op
void dump_op(CFF_FILE *cff,struct _CFF_VALUE *value,int args) // {{{
{
  printf(" : ");
  switch (value->op->flags&CFFOP_TYPEMASK) {
  case CFFOP_TYPE_NUMBER:
    assert(args==1);
    // already shown, int or real
    break;
  case CFFOP_TYPE_BOOL:
    assert(args==1);
    assert(value[-1].type==CFF_VAL_INT);
    if (value[-1].number==0) {
      printf("false");
    } else if (value[-1].number==1) {
      printf("true");
    } else {
      printf("[error]");
    }
    break;
  case CFFOP_TYPE_SID:
    assert(args==1);
    assert(value[-1].type==CFF_VAL_INT);
    {
      int len;
      const char *str=cff_get_string(cff,value[-1].number,&len);
      printf("%.*s",len,str);
    }
    break;
  case CFFOP_TYPE_ARRAY:
    // TODO
    printf("[array size %d]",args);
    break;
  case CFFOP_TYPE_DELTA: // TODO
    printf("[delta size %d]",args);
    break;
  case CFFOP_TYPE_NUMNUM:
    printf("[todo: NUM NUM]");
    break;
  case CFFOP_TYPE_SIDSIDNUM:
    printf("[todo: SID SID NUM]");
    break;
  default:
    printf("[error]");
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
leaq 0x5a42(%rip), %rdi      # 0xa0ac
xorl %eax, %eax
callq 0x4040
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movl 0x18(%rax), %eax
andl $0xf, %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0xa, %eax
ja 0x4832
movq -0x28(%rbp), %rax
leaq 0x5969(%rip), %rcx      # 0xa004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x1, -0x14(%rbp)
jne 0x46ac
jmp 0x46cb
leaq 0x59fd(%rip), %rdi      # 0xa0b0
leaq 0x59fe(%rip), %rsi      # 0xa0b8
movl $0x65, %edx
leaq 0x59fd(%rip), %rcx      # 0xa0c3
callq 0x40d0
jmp 0x4840
cmpl $0x1, -0x14(%rbp)
jne 0x46d8
jmp 0x46f7
leaq 0x59d1(%rip), %rdi      # 0xa0b0
leaq 0x59d2(%rip), %rsi      # 0xa0b8
movl $0x69, %edx
leaq 0x59d1(%rip), %rcx      # 0xa0c3
callq 0x40d0
movq -0x10(%rbp), %rax
cmpl $0x2, -0x10(%rax)
jne 0x4703
jmp 0x4722
leaq 0x59ec(%rip), %rdi      # 0xa0f6
leaq 0x59a7(%rip), %rsi      # 0xa0b8
movl $0x6a, %edx
leaq 0x59a6(%rip), %rcx      # 0xa0c3
callq 0x40d0
movq -0x10(%rbp), %rax
cmpl $0x0, -0x8(%rax)
jne 0x473c
leaq 0x59df(%rip), %rdi      # 0xa112
movb $0x0, %al
callq 0x4040
jmp 0x4766
movq -0x10(%rbp), %rax
cmpl $0x1, -0x8(%rax)
jne 0x4756
leaq 0x59cb(%rip), %rdi      # 0xa118
movb $0x0, %al
callq 0x4040
jmp 0x4764
leaq 0x59c0(%rip), %rdi      # 0xa11d
movb $0x0, %al
callq 0x4040
jmp 0x4766
jmp 0x4840
cmpl $0x1, -0x14(%rbp)
jne 0x4773
jmp 0x4792
leaq 0x5936(%rip), %rdi      # 0xa0b0
leaq 0x5937(%rip), %rsi      # 0xa0b8
movl $0x74, %edx
leaq 0x5936(%rip), %rcx      # 0xa0c3
callq 0x40d0
movq -0x10(%rbp), %rax
cmpl $0x2, -0x10(%rax)
jne 0x479e
jmp 0x47bd
leaq 0x5951(%rip), %rdi      # 0xa0f6
leaq 0x590c(%rip), %rsi      # 0xa0b8
movl $0x75, %edx
leaq 0x590b(%rip), %rcx      # 0xa0c3
callq 0x40d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl -0x8(%rax), %esi
leaq -0x18(%rbp), %rdx
callq 0x8390
movq %rax, -0x20(%rbp)
movl -0x18(%rbp), %esi
movq -0x20(%rbp), %rdx
leaq 0x5942(%rip), %rdi      # 0xa125
movb $0x0, %al
callq 0x4040
jmp 0x4840
movl -0x14(%rbp), %esi
leaq 0x5934(%rip), %rdi      # 0xa12a
movb $0x0, %al
callq 0x4040
jmp 0x4840
movl -0x14(%rbp), %esi
leaq 0x5931(%rip), %rdi      # 0xa13a
movb $0x0, %al
callq 0x4040
jmp 0x4840
leaq 0x5931(%rip), %rdi      # 0xa14a
movb $0x0, %al
callq 0x4040
jmp 0x4840
leaq 0x5931(%rip), %rdi      # 0xa15a
movb $0x0, %al
callq 0x4040
jmp 0x4840
leaq 0x58e4(%rip), %rdi      # 0xa11d
movb $0x0, %al
callq 0x4040
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)