// File: /workspace/github_c_makefile_star2_O0/jaimecgomezz[P]st/x.c
// Function: xmakeglyphfontspecs
int xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len,
                        int x, int y) {
  // >>>>>>>>>>>>>>>>>>>> anysize
  // ==================== anysize
  float winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, xp, yp;
  // ==================== anysize
  // <<<<<<<<<<<<<<<<<<<< anysize
  ushort mode, prevmode = USHRT_MAX;
  Font *font = &dc.font;
  int frcflags = FRC_NORMAL;
  float runewidth = win.cw;
  Rune rune;
  FT_UInt glyphidx;
  FcResult fcres;
  FcPattern *fcpattern, *fontpattern;
  FcFontSet *fcsets[] = {NULL};
  FcCharSet *fccharset;
  int i, f, numspecs = 0;

  // >>>>>>>>>>>>>>>>>>>> vertcenter
  // ==================== vertcenter
  for (i = 0, xp = winx, yp = winy + font->ascent; i < len; ++i) {
  // ==================== vertcenter
  // <<<<<<<<<<<<<<<<<<<< vertcenter
    /* Fetch rune and mode for current glyph. */
    // >>>>>>>>>>>>>>>>>>>> vim-browse
    // ==================== vim-browse
    rune = glyphs[i].u;
    mode = glyphs[i].mode;
    // ==================== vim-browse
    // <<<<<<<<<<<<<<<<<<<< vim-browse

    /* Skip dummy wide-character spacing. */
    // >>>>>>>>>>>>>>>>>>>> ligatures
    // ==================== ligatures
    if (mode == ATTR_WDUMMY)
    // ==================== ligatures
    // <<<<<<<<<<<<<<<<<<<< ligatures
      continue;

    /* Determine font for glyph if different from previous glyph. */
    if (prevmode != mode) {
      prevmode = mode;
      font = &dc.font;
      frcflags = FRC_NORMAL;
      runewidth = win.cw * ((mode & ATTR_WIDE) ? 2.0f : 1.0f);
      if ((mode & ATTR_ITALIC) && (mode & ATTR_BOLD)) {
        font = &dc.ibfont;
        frcflags = FRC_ITALICBOLD;
      } else if (mode & ATTR_ITALIC) {
        font = &dc.ifont;
        frcflags = FRC_ITALIC;
      } else if (mode & ATTR_BOLD) {
        font = &dc.bfont;
        frcflags = FRC_BOLD;
      }
      // >>>>>>>>>>>>>>>>>>>> vertcenter
      // ==================== vertcenter
      yp = winy + font->ascent;
      // ==================== vertcenter
      // <<<<<<<<<<<<<<<<<<<< vertcenter
    }

    /* Lookup character index with default font. */
    glyphidx = XftCharIndex(xw.dpy, font->match, rune);
    if (glyphidx) {
      specs[numspecs].font = font->match;
      specs[numspecs].glyph = glyphidx;
      specs[numspecs].x = (short)xp;
      specs[numspecs].y = (short)yp;
      xp += runewidth;
      numspecs++;
      continue;
    }

    /* Fallback on font cache, search the font cache for match. */
    for (f = 0; f < frclen; f++) {
      glyphidx = XftCharIndex(xw.dpy, frc[f].font, rune);
      /* Everything correct. */
      if (glyphidx && frc[f].flags == frcflags)
        break;
      /* We got a default font for a not found glyph. */
      if (!glyphidx && frc[f].flags == frcflags && frc[f].unicodep == rune) {
        break;
      }
    }

    /* Nothing was found. Use fontconfig to find matching font. */
    if (f >= frclen) {
      if (!font->set)
        font->set = FcFontSort(0, font->pattern, 1, 0, &fcres);
      fcsets[0] = font->set;

      /*
       * Nothing was found in the cache. Now use
       * some dozen of Fontconfig calls to get the
       * font for one single character.
       *
       * Xft and fontconfig are design failures.
       */
      fcpattern = FcPatternDuplicate(font->pattern);
      fccharset = FcCharSetCreate();

      FcCharSetAddChar(fccharset, rune);
      FcPatternAddCharSet(fcpattern, FC_CHARSET, fccharset);
      FcPatternAddBool(fcpattern, FC_SCALABLE, 1);

      FcConfigSubstitute(0, fcpattern, FcMatchPattern);
      FcDefaultSubstitute(fcpattern);

      fontpattern = FcFontSetMatch(0, fcsets, 1, fcpattern, &fcres);

      /* Allocate memory for the new cache entry. */
      if (frclen >= frccap) {
        frccap += 16;
        frc = xrealloc(frc, frccap * sizeof(Fontcache));
      }

      frc[frclen].font = XftFontOpenPattern(xw.dpy, fontpattern);
      if (!frc[frclen].font)
        die("XftFontOpenPattern failed seeking fallback font: %s\n",
            strerror(errno));
      frc[frclen].flags = frcflags;
      frc[frclen].unicodep = rune;

      glyphidx = XftCharIndex(xw.dpy, frc[frclen].font, rune);

      f = frclen;
      frclen++;

      FcPatternDestroy(fcpattern);
      FcCharSetDestroy(fccharset);
    }

    specs[numspecs].font = frc[f].font;
    specs[numspecs].glyph = glyphidx;
    specs[numspecs].x = (short)xp;
    specs[numspecs].y = (short)yp;
    xp += runewidth;
    numspecs++;
  }

  // >>>>>>>>>>>>>>>>>>>> ligatures
  // ==================== ligatures
  // ==================== ligatures
  // <<<<<<<<<<<<<<<<<<<< ligatures

  return numspecs;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movl 0xa7f5(%rip), %eax      # 0x16f28
movl -0x18(%rbp), %ecx
imull 0xec77(%rip), %ecx      # 0x1b3b4
addl %ecx, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x20(%rbp)
movl 0xa7da(%rip), %eax      # 0x16f28
movl -0x1c(%rbp), %ecx
imull 0xec58(%rip), %ecx      # 0x1b3b0
addl %ecx, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x24(%rbp)
movw $0xffff, -0x30(%rbp)    # imm = 0xFFFF
leaq 0xea38(%rip), %rax      # 0x1b1a8
addq $0x10, %rax
movq %rax, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
cvtsi2ssl 0xec2d(%rip), %xmm0 # 0x1b3b4
movss %xmm0, -0x40(%rbp)
leaq -0x68(%rbp), %rdi
xorl %esi, %esi
movl $0x8, %edx
callq 0x50a0
movl $0x0, -0x7c(%rbp)
movl $0x0, -0x74(%rbp)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x24(%rbp), %xmm0
movq -0x38(%rbp), %rax
cvtsi2ssl 0x8(%rax), %xmm1
addss %xmm1, %xmm0
movss %xmm0, -0x2c(%rbp)
movl -0x74(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0xcd11
movq -0x10(%rbp), %rax
movslq -0x74(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x10(%rbp), %rax
movslq -0x74(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movw 0x4(%rax), %ax
movw %ax, -0x2e(%rbp)
movzwl -0x2e(%rbp), %eax
cmpl $0x400, %eax            # imm = 0x400
jne 0xc812
jmp 0xcd03
movzwl -0x30(%rbp), %eax
movzwl -0x2e(%rbp), %ecx
cmpl %ecx, %eax
je 0xc933
movw -0x2e(%rbp), %ax
movw %ax, -0x30(%rbp)
leaq 0xe977(%rip), %rax      # 0x1b1a8
addq $0x10, %rax
movq %rax, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
cvtsi2ssl 0xeb6c(%rip), %xmm0 # 0x1b3b4
movss %xmm0, -0x88(%rbp)
movzwl -0x2e(%rbp), %eax
andl $0x200, %eax            # imm = 0x200
movss 0x551b(%rip), %xmm0     # 0x11d7c
movss 0x5517(%rip), %xmm1     # 0x11d80
movss %xmm1, -0x84(%rbp)
cmpl $0x0, %eax
movss %xmm0, -0x80(%rbp)
jne 0xc888
movss -0x84(%rbp), %xmm0
movss %xmm0, -0x80(%rbp)
movss -0x88(%rbp), %xmm0
movss -0x80(%rbp), %xmm1
mulss %xmm1, %xmm0
movss %xmm0, -0x40(%rbp)
movzwl -0x2e(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xc8d0
movzwl -0x2e(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xc8d0
leaq 0xe8eb(%rip), %rax      # 0x1b1a8
addq $0xb8, %rax
movq %rax, -0x38(%rbp)
movl $0x3, -0x3c(%rbp)
jmp 0xc91c
movzwl -0x2e(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xc8f6
leaq 0xe8c5(%rip), %rax      # 0x1b1a8
addq $0x80, %rax
movq %rax, -0x38(%rbp)
movl $0x1, -0x3c(%rbp)
jmp 0xc91a
movzwl -0x2e(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xc918
leaq 0xe89f(%rip), %rax      # 0x1b1a8
addq $0x48, %rax
movq %rax, -0x38(%rbp)
movl $0x2, -0x3c(%rbp)
jmp 0xc91a
jmp 0xc91c
movss -0x24(%rbp), %xmm0
movq -0x38(%rbp), %rax
cvtsi2ssl 0x8(%rax), %xmm1
addss %xmm1, %xmm0
movss %xmm0, -0x2c(%rbp)
movq 0xe966(%rip), %rdi      # 0x1b2a0
movq -0x38(%rbp), %rax
movq 0x20(%rax), %rsi
movl -0x44(%rbp), %edx
callq 0x53d0
movl %eax, -0x48(%rbp)
cmpl $0x0, -0x48(%rbp)
je 0xc9d7
movq -0x38(%rbp), %rax
movq 0x20(%rax), %rdx
movq -0x8(%rbp), %rax
movslq -0x7c(%rbp), %rcx
shlq $0x4, %rcx
movq %rdx, (%rax,%rcx)
movl -0x48(%rbp), %edx
movq -0x8(%rbp), %rax
movslq -0x7c(%rbp), %rcx
shlq $0x4, %rcx
movl %edx, 0x8(%rax,%rcx)
cvttss2si -0x28(%rbp), %eax
movw %ax, %dx
movq -0x8(%rbp), %rax
movslq -0x7c(%rbp), %rcx
shlq $0x4, %rcx
movw %dx, 0xc(%rax,%rcx)
movss -0x2c(%rbp), %xmm0
cvttss2si %xmm0, %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movslq -0x7c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movw %cx, 0xe(%rax)
movss -0x40(%rbp), %xmm0
addss -0x28(%rbp), %xmm0
movss %xmm0, -0x28(%rbp)
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0xcd03
movl $0x0, -0x78(%rbp)
movl -0x78(%rbp), %eax
cmpl 0xea61(%rip), %eax      # 0x1b448
jge 0xca82
movq 0xe8ac(%rip), %rdi      # 0x1b2a0
movq 0xea55(%rip), %rax      # 0x1b450
movslq -0x78(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movl -0x44(%rbp), %edx
callq 0x53d0
movl %eax, -0x48(%rbp)
cmpl $0x0, -0x48(%rbp)
je 0xca36
movq 0xea2f(%rip), %rax      # 0x1b450
movslq -0x78(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
cmpl -0x3c(%rbp), %eax
jne 0xca36
jmp 0xca82
cmpl $0x0, -0x48(%rbp)
jne 0xca72
movq 0xea0d(%rip), %rax      # 0x1b450
movslq -0x78(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
cmpl -0x3c(%rbp), %eax
jne 0xca72
movq 0xe9f3(%rip), %rax      # 0x1b450
movslq -0x78(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
cmpl -0x44(%rbp), %eax
jne 0xca72
jmp 0xca82
jmp 0xca74
movl -0x78(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x78(%rbp)
jmp 0xc9de
movl -0x78(%rbp), %eax
cmpl 0xe9bd(%rip), %eax      # 0x1b448
jl 0xcc7d
movq -0x38(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0xcac4
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rsi
xorl %eax, %eax
movl %eax, %ecx
movl $0x1, %edx
leaq -0x4c(%rbp), %r8
movq %rcx, %rdi
callq 0x5560
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x50e0
movq %rax, -0x58(%rbp)
callq 0x5240
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
movl -0x44(%rbp), %esi
callq 0x5040
movq -0x58(%rbp), %rdi
movq -0x70(%rbp), %rdx
leaq 0x53e9(%rip), %rsi      # 0x11eee
callq 0x5900
movq -0x58(%rbp), %rdi
leaq 0x53e1(%rip), %rsi      # 0x11ef6
movl $0x1, %edx
callq 0x55d0
movq -0x58(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edi
xorl %edx, %edx
callq 0x5790
movq -0x58(%rbp), %rdi
callq 0x57e0
leaq -0x68(%rbp), %rsi
movq -0x58(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edi
movl $0x1, %edx
leaq -0x4c(%rbp), %r8
callq 0x5660
movq %rax, -0x60(%rbp)
movl 0xe8ed(%rip), %eax      # 0x1b448
cmpl 0xe8f7(%rip), %eax      # 0x1b458
jl 0xcb90
movl 0xe8ef(%rip), %eax      # 0x1b458
addl $0x10, %eax
movl %eax, 0xe8e6(%rip)      # 0x1b458
movq 0xe8d7(%rip), %rdi      # 0x1b450
movslq 0xe8d8(%rip), %rsi      # 0x1b458
shlq $0x4, %rsi
callq 0x5b20
movq %rax, 0xe8c0(%rip)      # 0x1b450
movq 0xe709(%rip), %rdi      # 0x1b2a0
movq -0x60(%rbp), %rsi
callq 0x5750
movq %rax, %rcx
movq 0xe8a6(%rip), %rax      # 0x1b450
movslq 0xe897(%rip), %rdx      # 0x1b448
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq 0xe88e(%rip), %rax      # 0x1b450
movslq 0xe87f(%rip), %rcx      # 0x1b448
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
jne 0xcbf3
callq 0x5570
movl (%rax), %edi
callq 0x5430
movq %rax, %rsi
leaq 0x5313(%rip), %rdi      # 0x11eff
movb $0x0, %al
callq 0x5a70
movl -0x3c(%rbp), %ecx
movq 0xe853(%rip), %rax      # 0x1b450
movslq 0xe844(%rip), %rdx      # 0x1b448
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movl -0x44(%rbp), %ecx
movq 0xe838(%rip), %rax      # 0x1b450
movslq 0xe829(%rip), %rdx      # 0x1b448
shlq $0x4, %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movq 0xe670(%rip), %rdi      # 0x1b2a0
movq 0xe819(%rip), %rax      # 0x1b450
movslq 0xe80a(%rip), %rcx      # 0x1b448
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movl -0x44(%rbp), %edx
callq 0x53d0
movl %eax, -0x48(%rbp)
movl 0xe7ef(%rip), %eax      # 0x1b448
movl %eax, -0x78(%rbp)
movl 0xe7e6(%rip), %eax      # 0x1b448
addl $0x1, %eax
movl %eax, 0xe7dd(%rip)      # 0x1b448
movq -0x58(%rbp), %rdi
callq 0x5050
movq -0x70(%rbp), %rdi
callq 0x5680
movq 0xe7cc(%rip), %rax      # 0x1b450
movslq -0x78(%rbp), %rcx
shlq $0x4, %rcx
movq (%rax,%rcx), %rdx
movq -0x8(%rbp), %rax
movslq -0x7c(%rbp), %rcx
shlq $0x4, %rcx
movq %rdx, (%rax,%rcx)
movl -0x48(%rbp), %edx
movq -0x8(%rbp), %rax
movslq -0x7c(%rbp), %rcx
shlq $0x4, %rcx
movl %edx, 0x8(%rax,%rcx)
cvttss2si -0x28(%rbp), %eax
movw %ax, %dx
movq -0x8(%rbp), %rax
movslq -0x7c(%rbp), %rcx
shlq $0x4, %rcx
movw %dx, 0xc(%rax,%rcx)
movss -0x2c(%rbp), %xmm0
cvttss2si %xmm0, %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movslq -0x7c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movw %cx, 0xe(%rax)
movss -0x40(%rbp), %xmm0
addss -0x28(%rbp), %xmm0
movss %xmm0, -0x28(%rbp)
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0xc7cb
movl -0x7c(%rbp), %eax
addq $0x90, %rsp
popq %rbp
retq
nopl (%rax)