Newer
Older
AMI-Aptio-BIOS-Reversed / RegAccessPeim / decompiled / RegAccessLookupTablePointer.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Init
// RegAccessLookupTablePointer - addr:0xffdaf559
int __cdecl RegAccessLookupTablePointer(int a1)
{
  int Size; // [esp+Ch] [ebp-Ch]
  int v3; // [esp+10h] [ebp-8h]
  int Ptr; // [esp+14h] [ebp-4h]

  if ( *(_DWORD *)(a1 + 12) )
  {
    v3 = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * (unsigned __int16)*(_DWORD *)(a1 + 4) + 255544);
    Ptr = *(_DWORD *)(*(_DWORD *)(a1 + 12) + 4 * (unsigned __int16)*(_DWORD *)(a1 + 4) + 255560);
  }
  else
  {
    Size = PcdGetSize((void *)6);
    if ( *(_DWORD *)(Size + 4) )
    {
      v3 = *(_DWORD *)(Size + 16 * (unsigned __int16)*(_DWORD *)(a1 + 4) + 20);
      Ptr = *(_DWORD *)(Size + 16 * (unsigned __int16)*(_DWORD *)(a1 + 4) + 16);
    }
    else
    {
      PcdInitRegAccessData(dword_FFDB0A08, 8);
      v3 = dword_FFDB0A1C[4 * (unsigned __int16)*(_DWORD *)(a1 + 4)];
      Ptr = dword_FFDB0A18[4 * (unsigned __int16)*(_DWORD *)(a1 + 4)];
      if ( !Ptr && !v3 )
      {
        Ptr = PcdGetPtr((void *)5);
        v3 = 0;
      }
    }
  }
  if ( !Ptr && !v3 )
    return PcdGetPtr((void *)5);
  return Ptr;
}