Newer
Older
AMI-Aptio-BIOS-Reversed / PurleyPlatPkg / Platform / Pei / EarlyVideoPei / VgaAttrProgram.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Full restructure
int __fastcall VgaAttrProgram(_DWORD *a1, _BYTE *a2)
{
  unsigned __int8 v3; // al
  int v4; // ecx
  int v5; // ecx
  int v6; // ecx
  int v7; // ecx
  int v8; // ecx
  int v9; // ecx
  int n4000; // ecx
  _BYTE *v11; // eax
  unsigned __int8 v12; // al
  int v14; // [esp-4h] [ebp-30h]
  int v15; // [esp-4h] [ebp-30h]
  _DWORD v16[6]; // [esp+8h] [ebp-24h] BYREF
  int n965; // [esp+20h] [ebp-Ch]
  char v18; // [esp+24h] [ebp-8h]

  if ( !VgaGcProgramMode(a2, v16) )
    return 0;
  __outbyte(0x3C4u, 1u);
  n965 = 965;
  v3 = __inbyte(0x3C5u);
  v18 = v3 | 0x20;
  __outbyte(n965, v3 | 0x20);
  if ( v16[2] == 1 )
  {
    VgaModeSetPalette();
    VgaModeSetPaletteRange(v8, (int)v16);
    v15 = v9;
    VgaSeqProgram((int)a1, (int)v16);
    VgaSeqProgramChain(v15, (int)v16);
    VgaGcProgram(a1);
    n4000 = 4000;
    v11 = (_BYTE *)(a1[18] + 0x8000);
    do
    {
      *v11++ = 0;
      --n4000;
    }
    while ( n4000 );
  }
  else
  {
    VgaModeSetPalette();
    VgaModeSetPaletteRange(v4, (int)v16);
    VgaModeProgramAllExt(v5, (int)v16);
    VgaSeqUnlock(v6, v16);
    VgaSeqSetClocking((int)a1, (int)v16);
    v14 = v7;
    VgaSeqProgram((int)a1, (int)v16);
    VgaSeqProgramChain(v14, (int)v16);
    VgaGcProgramMisc(a1, v16);
  }
  __outbyte(0x3C4u, 1u);
  n965 = 965;
  v12 = __inbyte(0x3C5u);
  v18 = v12 & 0xDF;
  __outbyte(n965, v12 & 0xDF);
  return 1;
}