Newer
Older
AMI-Aptio-BIOS-Reversed / EarlyVideoPei / VgaDisplayModeSet.c
@Ajax Dong Ajax Dong 2 days ago 3 KB Init
int __thiscall VgaDisplayModeSet(int *this)
{
  int v2; // esi
  int v3; // ecx
  int v4; // ecx
  int v5; // ecx
  int v6; // ecx
  int v7; // ecx
  int v8; // ecx
  int v9; // ecx
  int v10; // ecx
  int v11; // ecx
  int v12; // ecx
  int v13; // ecx
  int v14; // ecx
  int v15; // ecx
  int v16; // ecx
  int v17; // ecx
  int v18; // ecx
  int v19; // ecx
  int v20; // ecx
  int v21; // ecx
  int v22; // ecx
  int v23; // ecx
  int v24; // ecx
  int v25; // ecx
  int v26; // ebx
  unsigned int j; // edi
  int v28; // ecx
  int v29; // ecx
  unsigned int v30; // ecx
  unsigned int v31; // eax
  unsigned int v32; // ecx
  int v33; // ebx
  unsigned int n255_1; // edi
  int v35; // ecx
  int v36; // ecx
  int v37; // ecx
  int v38; // ecx
  int v39; // ecx
  int v40; // ecx
  unsigned int n255; // [esp+10h] [ebp-14h]
  unsigned int n255_2; // [esp+14h] [ebp-10h]
  unsigned int v44; // [esp+18h] [ebp-Ch]
  unsigned int i; // [esp+1Ch] [ebp-8h]
  unsigned int j_1; // [esp+20h] [ebp-4h]
  unsigned int k; // [esp+20h] [ebp-4h]

  n255 = 0;
  v2 = *(this + 15);
  n255_2 = 0;
  j_1 = 0;
  PciRegWrite(v2, 510525444, 787);
  PciRegWrite(v3, 510525456, dword_FFE7753C);
  PciRegWrite(v4, 510525460, dword_FFE77540);
  PciRegWrite(v5, 510525464, dword_FFE77544);
  PciRegWrite(v6, 510525472, dword_FFE77548);
  PciRegWrite(v7, 510525476, dword_FFE7754C);
  PciRegWrite(v8, 510525484, dword_FFE77550 | 0x100);
  PciRegWrite(v9, 510525488, dword_FFE77554);
  PciRegWrite(v10, 510525952, 1112091310);
  PciRegWrite(v11, 510525956, 151003136);
  PciRegWrite(v12, 510525964, 1440746251);
  PciRegWrite(v13, 510525968, 0x20000000);
  PciRegWrite(v14, 510525972, dword_FFE77558);
  PciRegWrite(v15, 510526176, dword_FFE7755C);
  PciRegWrite(v16, 510526180, dword_FFE77560);
  PciRegWrite(v17, 510526184, dword_FFE77564);
  PciRegWrite(v18, 510526188, dword_FFE77568);
  PciRegWrite(v19, 510526192, dword_FFE7756C);
  PciRegWrite(v20, 510526196, dword_FFE77570);
  PciRegWrite(v21, 510526200, dword_FFE77574);
  PciRegWrite(v22, 510526096, 1048584);
  PciRegWrite(v23, 510526148, 1008221244);
  PciRegWrite(v24, 510526152, 6495758);
  PciRegWrite(v25, 510525492, 108945);
  v26 = 0;
  for ( i = 0; i < 4; ++i )
  {
    if ( v26 )
      break;
    v44 = 0;
    PciRegWrite(v2, 510526144, 7174);
    for ( j = 64; j < 0x80; ++j )
    {
      PciRegWrite(v2, 510525452, 0);
      PciRegWrite(v28, 510525536, 0);
      PciRegWrite(v29, 510526156, j | (j << 8));
      VgaModeProgramSeq(this);
      PciRegWrite(v2, 510525452, 23553);
      if ( VgaModeEnable(this) )
      {
        ++v26;
        v30 = PciRegRead(v2, 510526416);
        v31 = (unsigned __int8)v30;
        v32 = v30 >> 8;
        if ( (unsigned __int8)v31 > v32 )
          v31 = v32;
        if ( v44 < v31 )
        {
          v44 = v31;
          j_1 = j;
        }
      }
      else if ( v26 )
      {
        break;
      }
    }
  }
  PciRegWrite(v2, 510526156, j_1 | (j_1 << 8));
  v33 = 0;
  for ( k = 0; k < 4; ++k )
  {
    if ( v33 )
      break;
    n255_2 = 0;
    n255_1 = 0;
    n255 = 255;
    do
    {
      PciRegWrite(v2, 510525452, 0);
      PciRegWrite(v35, 510525536, 0);
      PciRegWrite(v36, 510526144, (n255_1 << 8) | 6);
      VgaModeProgramSeq(this);
      PciRegWrite(v2, 510525452, 23553);
      if ( VgaModeEnable(this) )
      {
        ++v33;
        if ( n255 > n255_1 )
          n255 = n255_1;
        if ( n255_2 < n255_1 )
          n255_2 = n255_1;
      }
      else if ( v33 )
      {
        break;
      }
      ++n255_1;
    }
    while ( n255_1 < 0x40 );
  }
  PciRegWrite(v2, 510525452, 0);
  PciRegWrite(v37, 510525536, 0);
  PciRegWrite(v2, 510526144, ((n255_2 + 1 + n255) << 7) & 0xFFFFFF00 | 6);
  VgaModeProgramSeq(this);
  PciRegWrite(v2, 510525728, dword_FFE7757C);
  PciRegWrite(v38, 510525452, 1118461057);
  PciRegWrite(v39, 510525492, 110483);
  VgaModeProgramGc((int)this, dword_FFE77578);
  VgaModeProgramAttr(this);
  PciRegWrite(v2, 510525468, 8);
  return PciRegWrite(v40, 510525496, -256);
}