Newer
Older
AMI-Aptio-BIOS-Reversed / EarlyVideoPei / PciCfgWriteBuf.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Init
int __fastcall PciCfgWriteBuf(__int16 a1, __int16 a2, int n981)
{
  unsigned int v3; // edi
  unsigned __int32 v4; // eax
  unsigned __int32 v5; // eax
  unsigned __int32 v7; // eax
  unsigned __int32 v8; // eax
  unsigned __int32 v9; // eax
  unsigned __int32 v10; // eax
  unsigned __int32 v11; // eax
  unsigned int v13; // [esp+10h] [ebp-4h]

  v3 = 0x80000000;
  v13 = 0x80000000;
  while ( 1 )
  {
    __outdword(0xCF8u, v13);
    v4 = __indword(0xCFCu);
    if ( (_WORD)v4 == a1 )
    {
      __outdword(0xCF8u, v13);
      v5 = __indword(0xCFCu);
      if ( HIWORD(v5) == a2 )
        break;
    }
    v3 += 2048;
    v13 = v3;
    if ( v3 >= 0x81000000 )
    {
      v3 = 0;
      break;
    }
  }
  if ( !v3 )
    return 0;
  *(_DWORD *)n981 = v3;
  *(_WORD *)(n981 + 24) = a1;
  *(_WORD *)(n981 + 26) = a2;
  __outdword(0xCF8u, v3 + 8);
  v7 = __indword(0xCFCu);
  *(_BYTE *)(n981 + 28) = v7;
  __outdword(0xCF8u, v3 + 4);
  v8 = __indword(0xCFCu);
  __outdword(0xCFCu, v8 | 3);
  __outdword(0xCF8u, v3 + 24);
  v9 = __indword(0xCFCu);
  *(_WORD *)(n981 + 64) = v9 & 0xFFFC;
  __outdword(0xCF8u, v3 + 20);
  v10 = __indword(0xCFCu);
  v10 &= 0xFFFFFFF0;
  *(_DWORD *)(n981 + 52) = 0x20000;
  *(_DWORD *)(n981 + 56) = v10;
  *(_DWORD *)(n981 + 60) = v10;
  *(_DWORD *)(n981 + 68) = 655360;
  *(_DWORD *)(n981 + 72) = 720896;
  *(_DWORD *)(n981 + 76) = 786432;
  VgaModeProgramDac((unsigned __int8 *)n981, 1);
  VgaModeSetClock((_DWORD *)n981);
  VgaModeSetClockMask(n981);
  __outdword(0xCF8u, v3 + 16);
  v11 = __indword(0xCFCu);
  v11 &= 0xFFFFFFF0;
  *(_DWORD *)(n981 + 44) = v11;
  *(_DWORD *)(n981 + 48) = v11;
  return 1;
}