Newer
Older
AMI-Aptio-BIOS-Reversed / PurleyPlatPkg / Platform / Pei / EarlyVideoPei / ImageRenderLine.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Full restructure
int __fastcall ImageRenderLine(int *p_n2, int n26, int p_n2a, int a4)
{
  unsigned int *p_count; // eax
  int v8; // eax
  char *count; // edx
  int v10; // edi
  int v11; // ebx
  int v12; // ecx
  char v13; // al
  int v14; // eax
  int v15; // edx
  char v16; // al
  int v17; // eax
  char v18; // al
  int v19; // eax

  p_count = ImageRenderAllocContext();
  p_n2[3] = (int)p_count;
  if ( !p_count )
    return -1;
  if ( ImageRenderBits(p_count, (char *)4, 2) >= 0 )
  {
    v8 = 0;
    if ( n26 > 9 )
    {
      LOBYTE(v8) = n26 > 26;
      ++v8;
    }
    count = *(char **)(a4 + 4 * v8 + 140);
    if ( !count || ImageRenderBits((unsigned int *)p_n2[3], count, p_n2[1]) >= 0 )
    {
      v10 = 0;
      v11 = p_n2[1] / 2;
      if ( v11 <= 0 )
      {
LABEL_17:
        if ( (p_n2[1] & 1) == 0 )
          return 0;
        v18 = *(_BYTE *)(p_n2[2] + 2 * v11);
        v19 = v18 >= 0 ? *(char *)(v18 + a4) : -1;
        if ( ImageRenderBits((unsigned int *)p_n2[3], (char *)6, v19) >= 0 )
          return 0;
      }
      else
      {
        while ( 1 )
        {
          v12 = p_n2[2];
          v13 = *(_BYTE *)(v12 + 2 * v10);
          v14 = v13 >= 0 ? *(char *)(v13 + a4) : -1;
          v15 = 45 * v14;
          v16 = *(_BYTE *)(v12 + 2 * v10 + 1);
          v17 = v16 >= 0 ? *(char *)(v16 + a4) : -1;
          if ( ImageRenderBits((unsigned int *)p_n2[3], (char *)0xB, v15 + v17) < 0 )
            break;
          if ( ++v10 >= v11 )
            goto LABEL_17;
        }
      }
    }
  }
  p_n2[3] = 0;
  return -1;
}