Newer
Older
AMI-Aptio-BIOS-Reversed / PurleyPlatPkg / Platform / Pei / EarlyVideoPei / LogoRenderScanline.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Full restructure
_BYTE *__fastcall LogoRenderScanline(int a1, int Scanline, int a3, int a4)
{
  int v4; // esi
  int v5; // ebx
  _BYTE *Pool; // edi
  _BYTE *result; // eax
  signed int n7; // ebp
  int (__cdecl **v9)(int, int, _BYTE *); // eax
  int v10; // esi
  __int64 v11; // rax
  int v12; // ecx
  int n0x7FFFFFFF_1; // eax
  int v15; // [esp+10h] [ebp-14h]
  int n0x7FFFFFFF; // [esp+14h] [ebp-10h]
  int v17; // [esp+18h] [ebp-Ch]
  _BYTE *Pool_1; // [esp+1Ch] [ebp-8h]

  v4 = a1;
  v5 = a1 * a1;
  n0x7FFFFFFF = 0x7FFFFFFF;
  Pool = (_BYTE *)PeiAllocatePool((void *)(a1 * a1));
  result = 0;
  if ( Pool )
  {
    Pool_1 = 0;
    n7 = 0;
    v9 = (int (__cdecl **)(int, int, _BYTE *))(a4 + 3392);
    v17 = a4 + 3392;
    do
    {
      v10 = (*v9)(v4, Scanline, Pool);
      v11 = (v5 + 200 * (v10 + ImageRenderDitherLine(a1, (int)Pool, n7, a3, a4))) / v5;
      v12 = ((int)v11 - HIDWORD(v11)) >> 1;
      v15 = v12 - 50;
      if ( v12 - 50 <= 0 )
        v15 = (-50 - v12) / 5;
      v4 = a1;
      n0x7FFFFFFF_1 = 10 * v15 + ImageRenderLineConvert(a1, Pool);
      if ( n0x7FFFFFFF_1 < n0x7FFFFFFF )
      {
        n0x7FFFFFFF = n0x7FFFFFFF_1;
        Pool_1 = Pool;
        Pool = (_BYTE *)PeiAllocatePool((void *)v5);
        if ( !Pool )
          break;
      }
      ++n7;
      v9 = (int (__cdecl **)(int, int, _BYTE *))(v17 + 4);
      v17 += 4;
    }
    while ( n7 < 8 );
    return Pool_1;
  }
  return result;
}