// File: /workspace/github_c_makefile_star2_O0/smilingthax[P]libfontembed/main.c
// Function: example_write_fontdescr
void example_write_fontdescr(OTF_FILE *otf,const char *outfile) // {{{
{
  FONTFILE *ff=fontfile_open_sfnt(otf);
  EMB_PARAMS *emb=emb_new(ff,
                          EMB_DEST_PDF16,
//                          EMB_C_KEEP_T1
                          EMB_C_FORCE_MULTIBYTE

                          );
  EMB_PDF_FONTDESCR *fdes=emb_pdf_fontdescr(emb);
  assert(fdes);

  emb_get(emb,'a');
  emb_get(emb,0x400);

  EMB_PDF_FONTWIDTHS *fwid=emb_pdf_fontwidths(emb);
  assert(fwid);

  printf("0 0 obj\n");
  char *res=emb_pdf_simple_fontdescr(emb,fdes,1);
  assert(res);
  fputs(res,stdout);
  free(res);
  printf("endobj\n");

  printf("1 0 obj\n"
         "<<\n");
  if (emb_pdf_get_fontfile_subtype(emb)) {
    printf("  /Subtype /%s\n",
           emb_pdf_get_fontfile_subtype(emb));
  }
  if (emb->outtype==EMB_FMT_T1) {
    printf("  /Length1 ?\n"
           "  /Length2 ?\n"
           "  /Length3 ?\n");
  } else if (emb->outtype==EMB_FMT_TTF) {
    printf("  /Length1 2 0 R\n");
  }
  printf("  /Length 2 0 R\n" // maybe compress it...
         ">>\n"
         "stream\n");
  int outlen=0; // TODO
// TODO
  if (outfile) {
    FILE *f=fopen(outfile,"w");
    if (!f) {
      fprintf(stderr,"Opening \"%s\" for writing failed: %m\n",outfile);
      assert(0);
      emb_close(emb);
      return;
    }
    outlen=emb_embed(emb,example_outfn,f);
//    outlen=otf_ttc_extract(emb->font->sfnt,example_outfn,f);
    fclose(f);
  }
puts("...");
  printf("endstream\n"
         "endobj\n");
  printf("2 0 obj\n"
         "%d\n"
         "endobj\n",
         outlen
         );

  printf("3 0 obj\n");
  res=emb_pdf_simple_font(emb,fdes,fwid,0);
  assert(res);
  fputs(res,stdout);
  free(res);
  printf("endobj\n");

  if (emb->plan&EMB_A_MULTIBYTE) {
    printf("4 0 obj\n");
    res=emb_pdf_simple_cidfont(emb,fdes->fontname,3);
    assert(res);
    fputs(res,stdout);
    free(res);
    printf("endobj\n");
  }

  free(fdes);
  free(fwid);
  emb_close(emb);
#if 1
  free(ff); // TODO
#else
  ff->sfnt=NULL; // TODO
  fontfile_close(ff);
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x9c60
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movl $0x2, %esi
movl $0x8, %edx
callq 0x53b0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x7e40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x23ea
jmp 0x2409
leaq 0xac13(%rip), %rdi      # 0xd004
leaq 0xac11(%rip), %rsi      # 0xd009
movl $0x3a, %edx
leaq 0xac0c(%rip), %rcx      # 0xd010
callq 0x2100
movq -0x20(%rbp), %rdi
movl $0x61, %esi
callq 0x2730
movq -0x20(%rbp), %rdi
movl $0x400, %esi            # imm = 0x400
callq 0x2730
movq -0x20(%rbp), %rdi
callq 0x88d0
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x243b
jmp 0x245a
leaq 0xac05(%rip), %rdi      # 0xd047
leaq 0xabc0(%rip), %rsi      # 0xd009
movl $0x40, %edx
leaq 0xabbb(%rip), %rcx      # 0xd010
callq 0x2100
leaq 0xabeb(%rip), %rdi      # 0xd04c
movb $0x0, %al
callq 0x2040
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
movl $0x1, %edx
callq 0x89f0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x2487
jmp 0x24a6
leaq 0xabc7(%rip), %rdi      # 0xd055
leaq 0xab74(%rip), %rsi      # 0xd009
movl $0x44, %edx
leaq 0xab6f(%rip), %rcx      # 0xd010
callq 0x2100
movq -0x38(%rbp), %rdi
movq 0xfb17(%rip), %rax      # 0x11fc8
movq (%rax), %rsi
callq 0x21a0
movq -0x38(%rbp), %rdi
callq 0x21c0
leaq 0xac49(%rip), %rdi      # 0xd112
movb $0x0, %al
callq 0x2040
leaq 0xab82(%rip), %rdi      # 0xd059
movb $0x0, %al
callq 0x2040
movq -0x20(%rbp), %rdi
callq 0x7dd0
cmpq $0x0, %rax
je 0x2507
movq -0x20(%rbp), %rdi
callq 0x7dd0
movq %rax, %rsi
leaq 0xab65(%rip), %rdi      # 0xd065
movb $0x0, %al
callq 0x2040
movq -0x20(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jne 0x2521
leaq 0xab5d(%rip), %rdi      # 0xd075
movb $0x0, %al
callq 0x2040
jmp 0x253b
movq -0x20(%rbp), %rax
cmpl $0x1, 0x4(%rax)
jne 0x2539
leaq 0xab6b(%rip), %rdi      # 0xd09d
movb $0x0, %al
callq 0x2040
jmp 0x253b
leaq 0xab6d(%rip), %rdi      # 0xd0af
movb $0x0, %al
callq 0x2040
movl $0x0, -0x3c(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x25cd
movq -0x10(%rbp), %rdi
leaq 0xab68(%rip), %rsi      # 0xd0ca
callq 0x21b0
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x25ad
movq 0xfa67(%rip), %rax      # 0x11fe0
movq (%rax), %rdi
movq -0x10(%rbp), %rdx
leaq 0xab45(%rip), %rsi      # 0xd0cc
movb $0x0, %al
callq 0x2200
leaq 0xb61b(%rip), %rdi      # 0xdbb0
leaq 0xaa6d(%rip), %rsi      # 0xd009
movl $0x5f, %edx
leaq 0xaa68(%rip), %rcx      # 0xd010
callq 0x2100
movq -0x20(%rbp), %rdi
movq -0x48(%rbp), %rdx
leaq 0x1b4(%rip), %rsi       # 0x2770
callq 0x5890
movl %eax, -0x3c(%rbp)
movq -0x48(%rbp), %rdi
callq 0x2160
leaq 0xab1d(%rip), %rdi      # 0xd0f1
callq 0x2220
leaq 0xab15(%rip), %rdi      # 0xd0f5
movb $0x0, %al
callq 0x2040
movl -0x3c(%rbp), %esi
leaq 0xab16(%rip), %rdi      # 0xd107
movb $0x0, %al
callq 0x2040
leaq 0xab1b(%rip), %rdi      # 0xd11a
movb $0x0, %al
callq 0x2040
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x30(%rbp), %rdx
xorl %ecx, %ecx
callq 0x90a0
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x2626
jmp 0x2645
leaq 0xaa28(%rip), %rdi      # 0xd055
leaq 0xa9d5(%rip), %rsi      # 0xd009
movl $0x72, %edx
leaq 0xa9d0(%rip), %rcx      # 0xd010
callq 0x2100
movq -0x38(%rbp), %rdi
movq 0xf978(%rip), %rax      # 0x11fc8
movq (%rax), %rsi
callq 0x21a0
movq -0x38(%rbp), %rdi
callq 0x21c0
leaq 0xaaaa(%rip), %rdi      # 0xd112
movb $0x0, %al
callq 0x2040
movq -0x20(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x26f7
leaq 0xaa9e(%rip), %rdi      # 0xd123
movb $0x0, %al
callq 0x2040
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rax
movq (%rax), %rsi
movl $0x3, %edx
callq 0x9470
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x26ae
jmp 0x26cd
leaq 0xa9a0(%rip), %rdi      # 0xd055
leaq 0xa94d(%rip), %rsi      # 0xd009
movl $0x7a, %edx
leaq 0xa948(%rip), %rcx      # 0xd010
callq 0x2100
movq -0x38(%rbp), %rdi
movq 0xf8f0(%rip), %rax      # 0x11fc8
movq (%rax), %rsi
callq 0x21a0
movq -0x38(%rbp), %rdi
callq 0x21c0
leaq 0xaa22(%rip), %rdi      # 0xd112
movb $0x0, %al
callq 0x2040
movq -0x28(%rbp), %rdi
callq 0x21c0
movq -0x30(%rbp), %rdi
callq 0x21c0
movq -0x20(%rbp), %rdi
callq 0x5810
movq -0x18(%rbp), %rdi
callq 0x21c0
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)