Newer
Older
AMI-Aptio-BIOS-Reversed / EarlyVideoPei / VgaCrtcProgramAll.c
@Ajax Dong Ajax Dong 2 days ago 2 KB Init
int __usercall VgaCrtcProgramAll@<eax>(int edx0@<edx>, char *dst, _WORD *a2, int a3, int a4, int a5)
{
  int n8; // ebp
  int n64_1; // edi
  int n64; // edx
  int i; // ecx
  __int16 *dst_1; // ebx
  __int16 *dst_2; // ebx
  int n8_1; // ebp
  int n128; // eax
  _WORD v14[64]; // [esp+10h] [ebp-100h]
  char src[128]; // [esp+90h] [ebp-80h] BYREF

  v14[0] = 0;
  v14[1] = 1;
  v14[2] = 5;
  v14[3] = 6;
  v14[4] = 14;
  v14[5] = 15;
  v14[6] = 27;
  v14[7] = 28;
  v14[8] = 2;
  v14[9] = 4;
  v14[10] = 7;
  v14[11] = 13;
  v14[12] = 16;
  v14[13] = 26;
  v14[14] = 29;
  v14[15] = 42;
  n8 = 8;
  v14[16] = 3;
  v14[18] = 12;
  v14[19] = 17;
  v14[20] = 25;
  v14[21] = 30;
  v14[22] = 41;
  v14[23] = 43;
  v14[24] = 9;
  v14[17] = 8;
  v14[25] = 11;
  v14[26] = 18;
  v14[27] = 24;
  v14[28] = 31;
  v14[29] = 40;
  v14[30] = 44;
  v14[31] = 53;
  v14[32] = 10;
  v14[33] = 19;
  v14[34] = 23;
  v14[35] = 32;
  v14[36] = 39;
  v14[37] = 45;
  v14[38] = 52;
  v14[39] = 54;
  v14[40] = 20;
  v14[41] = 22;
  v14[42] = 33;
  v14[43] = 38;
  v14[44] = 46;
  v14[45] = 51;
  v14[46] = 55;
  v14[47] = 60;
  v14[48] = 21;
  v14[49] = 34;
  v14[50] = 37;
  v14[51] = 47;
  v14[52] = 50;
  v14[53] = 56;
  v14[54] = 59;
  v14[55] = 61;
  v14[56] = 35;
  v14[57] = 36;
  v14[58] = 48;
  v14[59] = 49;
  v14[60] = 57;
  v14[61] = 58;
  v14[62] = 62;
  v14[63] = 63;
  VgaDisplayEnable(edx0, dst, a5);
  *a2 += *(_WORD *)dst;
  n64_1 = 0;
  n64 = 0;
  *(_WORD *)dst = *a2;
  do
  {
    *(_WORD *)&dst[2 * n64] *= *(unsigned __int8 *)(n64 + a3);
    ++n64;
  }
  while ( n64 < 64 );
  for ( i = 0; i < 64; ++i )
    *(_WORD *)&src[i * 2] = *(_WORD *)&dst[2 * (unsigned __int16)v14[i]];
  CopyMem(dst, src, 0x80u);
  dst_1 = (__int16 *)dst;
  do
  {
    VgaDisplayFullInit(dst_1, 1u);
    dst_1 += 8;
    --n8;
  }
  while ( n8 );
  dst_2 = (__int16 *)dst;
  n8_1 = 8;
  do
  {
    n128 = VgaDisplayFullInit(dst_2++, 8u);
    --n8_1;
  }
  while ( n8_1 );
  if ( a4 )
  {
    n128 = 128;
    do
      *(_WORD *)&dst[2 * n64_1++] += 128;
    while ( n64_1 < 64 );
  }
  return n128;
}