Newer
Older
AMI-Aptio-BIOS-Reversed / EarlyVideoPei / ImageRenderDecode.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Init
int __fastcall ImageRenderDecode(int *p_n26, int a2)
{
  int PaletteEntry; // eax
  int PaletteEntry_1; // edi
  int v6; // eax
  int *p_n2; // edi
  int v8; // ebx
  int v9; // eax

  PaletteEntry = 0;
  while ( 1 )
  {
    PaletteEntry_1 = PaletteEntry;
    v6 = BitmapRenderBlock((int)p_n26, PaletteEntry, a2);
    PaletteEntry = BitmapGetPaletteEntry((v6 + 7) / 8, p_n26[1], a2);
    if ( PaletteEntry < 0 )
      break;
    if ( PaletteEntry <= PaletteEntry_1 )
      goto LABEL_6;
  }
  PaletteEntry = -1;
LABEL_6:
  if ( PaletteEntry > *p_n26 && !p_n26[4] && (unsigned int)PaletteEntry <= 0x28 )
LABEL_9:
    *p_n26 = PaletteEntry;
  while ( 1 )
  {
    p_n2 = (int *)p_n26[2];
    v8 = 0;
    if ( p_n2 )
      break;
LABEL_14:
    PaletteEntry = BitmapGetPaletteEntry((v8 + 7) / 8, p_n26[1], a2);
    if ( PaletteEntry < 0 )
      return -1;
    if ( PaletteEntry <= *p_n26 )
      return 0;
    if ( !p_n26[4] && PaletteEntry <= 40 )
      goto LABEL_9;
  }
  while ( 1 )
  {
    v9 = ImageRenderFull(p_n2, *p_n26, p_n26[4], a2);
    if ( v9 < 0 )
      return -1;
    p_n2 = (int *)p_n2[4];
    v8 += v9;
    if ( !p_n2 )
    {
      if ( v8 < 0 )
        return -1;
      goto LABEL_14;
    }
  }
}