Newer
Older
AMI-Aptio-BIOS-Reversed / PurleyPlatPkg / Platform / Pei / EarlyVideoPei / VgaDisplaySetStartAddr.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Full restructure
int __fastcall VgaDisplaySetStartAddr(unsigned __int16 a1, unsigned __int16 n8, _BYTE *a3, int a4)
{
  int n8_4; // ebp
  unsigned int n8_1; // ebx
  unsigned int v7; // edx
  int result; // eax
  int v10; // ecx
  int n8_2; // eax
  _BYTE *v12; // ecx
  int v13; // [esp+10h] [ebp-8h]
  unsigned int v14; // [esp+14h] [ebp-4h]
  int n8_3; // [esp+20h] [ebp+8h]

  n8_4 = 0;
  n8_1 = n8;
  v7 = a1;
  result = *(_DWORD *)(a4 + 30);
  v14 = a1;
  v10 = result + 4 * (a1 + n8_1 * *(_DWORD *)(a4 + 82));
  v13 = v10;
  do
  {
    if ( n8_1 >= *(_DWORD *)(a4 + 86) )
      break;
    n8_2 = 8;
    v12 = (_BYTE *)(v10 + 2);
    n8_3 = 8;
    do
    {
      if ( v7 < *(_DWORD *)(a4 + 82) )
      {
        *(v12 - 2) = *a3;
        *(v12 - 1) = a3[1];
        *v12 = a3[2];
        n8_2 = n8_3;
        v12[1] = 0;
      }
      a3 += 4;
      v12 += 4;
      ++v7;
      n8_3 = --n8_2;
    }
    while ( n8_2 );
    ++n8_4;
    result = *(_DWORD *)(a4 + 82);
    ++n8_1;
    v7 = v14;
    v10 = v13 + 4 * result;
    v13 = v10;
  }
  while ( n8_4 < 8 );
  return result;
}