Newer
Older
AMI-Aptio-BIOS-Reversed / PurleyPlatPkg / Platform / Pei / EarlyVideoPei / ImageRenderDither.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Full restructure
int __fastcall ImageRenderDither(int n2, int buf, int a3, int a4)
{
  int n2_1; // ebx
  int n2_2; // edi
  int v6; // ecx
  int n6; // esi
  int v8; // ebp
  int n6_3; // eax
  int v10; // edi
  int v11; // edi
  int n6_1; // esi
  int v14; // [esp+Ch] [ebp-14h]
  int n6_2; // [esp+10h] [ebp-10h]
  int v16; // [esp+14h] [ebp-Ch]
  int v17; // [esp+18h] [ebp-8h]

  n2_1 = n2;
  n2_2 = 2;
  if ( n2 >= 2 )
  {
    v6 = a4;
    n6 = *(_DWORD *)(a4 + 8 * n2_1 + 476);
    v8 = *(_DWORD *)(a4 + 8 * n2_1 + 480) - n6;
    if ( v8 >= 0 )
      n2_2 = (a3 - n6) / v8 + 2;
    if ( n2_2 * n2_2 == 4 )
    {
      return ImageRenderPutPixel(buf, a3, n6, *(_DWORD *)(a4 + 8 * n2_1 + 476));
    }
    else
    {
      v10 = n2_2 - 1;
      v17 = v10;
      if ( v10 > 1 )
      {
        v11 = v10 - 1;
        do
        {
          ImageRenderPutPixel(buf, a3, 6, n6);
          ImageRenderPutPixel(buf, a3, n6, 6);
          n6 += v8;
          --v11;
        }
        while ( v11 );
        v10 = v17;
        n2_1 = n2;
        v6 = a4;
      }
      n6_3 = *(_DWORD *)(v6 + 8 * n2_1 + 476);
      n6_2 = n6_3;
      v16 = 0;
      if ( v10 > 0 )
      {
        do
        {
          n6_1 = *(_DWORD *)(v6 + 8 * n2_1 + 476);
          v14 = v10;
          do
          {
            n6_3 = ImageRenderPutPixel(buf, a3, n6_1, n6_2);
            n6_1 += v8;
            --v14;
          }
          while ( v14 );
          v10 = v17;
          v6 = a4;
          n6_2 += v8;
          n2_1 = n2;
          ++v16;
        }
        while ( v16 < v17 );
      }
    }
  }
  return n6_3;
}