Newer
Older
AMI-Aptio-BIOS-Reversed / EarlyVideoPei / VgaSeqProgram.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Init
unsigned __int8 __fastcall VgaSeqProgram(int a1, int a2)
{
  char n4; // al
  unsigned int n32; // esi
  unsigned __int8 n47; // al
  int v7; // eax
  int v8; // ecx
  int n47_2; // ebx
  unsigned __int8 v10; // [esp+10h] [ebp-10h]
  unsigned __int8 v11; // [esp+10h] [ebp-10h]
  unsigned __int8 n47_1; // [esp+10h] [ebp-10h]
  char n112; // [esp+14h] [ebp-Ch]
  char n2; // [esp+18h] [ebp-8h]
  char v15; // [esp+1Ch] [ebp-4h]

  n2 = 0;
  n4 = 0;
  n112 = 0;
  n32 = *(_DWORD *)(a2 + 8);
  if ( n32 == 1 )
  {
    n4 = 0;
    n112 = 0;
    n2 = 0;
  }
  else if ( n32 == 8 )
  {
    n112 = 112;
    n4 = 1;
    n2 = 1;
  }
  else if ( n32 > 0xE )
  {
    if ( n32 <= 0x10 )
    {
      n2 = 2;
      n4 = 4;
      n112 = 112;
    }
    else if ( n32 == 32 )
    {
      n2 = 3;
      n4 = 8;
      n112 = 112;
    }
  }
  v15 = n4 | 0x80;
  VgaSeqRegReadModifyWrite(0x3D4u, 0xA0u, 143, n112);
  VgaSeqRegReadModifyWrite(0x3D4u, 0xA3u, 0, v15);
  VgaSeqRegReadModifyWrite(0x3D4u, 0xA8u, 253, 0);
  __outbyte(0x3D4u, 0xA7u);
  if ( *(_BYTE *)(a1 + 28) < 0x20u )
  {
    __outbyte(0x3D5u, 0x3Fu);
    __outbyte(0x3D4u, 0xA6u);
    n47 = 47;
    __outbyte(0x3D5u, 0x2Fu);
  }
  else
  {
    __outbyte(0x3D5u, 0x78u);
    __outbyte(0x3D4u, 0xA6u);
    n47 = 96;
    __outbyte(0x3D5u, 0x60u);
  }
  if ( *(_DWORD *)(a2 + 8) > 1u )
  {
    v7 = *(_DWORD *)(a2 + 20);
    v8 = *(_DWORD *)(v7 + 44);
    n47_2 = *(_DWORD *)(v7 + 48);
    v10 = 16 * n2;
    __outbyte(0x3D4u, 0x8Cu);
    __outbyte(0x3D5u, v10);
    v11 = v8;
    __outbyte(0x3D4u, 0x8Du);
    __outbyte(0x3D5u, v11);
    n47_1 = n47_2;
    __outbyte(0x3D4u, 0x8Eu);
    n47 = n47_1;
    __outbyte(0x3D5u, n47_1);
  }
  return n47;
}