Newer
Older
AMI-Aptio-BIOS-Reversed / PurleySktPkg / SouthClusterLbg / SiInit / Pei / SiInitPreMem / decompiled / ffd806ac.c
@Ajax Dong Ajax Dong 7 days ago 1 KB Recovering names
int __thiscall sub_FFD806AC(char *this)
{
  char *this_1; // ebx
  unsigned int v2; // ebp
  int v3; // eax
  unsigned int n3; // esi
  unsigned int v5; // edi
  _DWORD *v6; // ebx
  int v7; // edx
  int v10; // [esp+18h] [ebp-Ch]
  int v11; // [esp+1Ch] [ebp-8h]
  int v12; // [esp+20h] [ebp-4h]

  v10 = 0; /*0xffd806b9*/
  this_1 = this; /*0xffd806ba*/
  v11 = 0; /*0xffd806c0*/
  v12 = 0; /*0xffd806c1*/
  v2 = (unsigned __int8)sub_FFD8BFFD(); /*0xffd806c7*/
  if ( (v2 & 0xFFFFFFF8) > 0x18 ) /*0xffd806d2*/
  {
    v3 = GetReportStatusCodePpi(); /*0xffd806d4*/
    if ( v3 ) /*0xffd806db*/
      (*(void (__cdecl **)(const char *, int, const char *))(v3 + 4))( /*0xffd806ec*/
        "e:\\hs\\PurleySktPkg\\SouthClusterLbg\\LibraryPrivate\\PeiPchInitLib\\PchInitPreMem.c",
        958,
        "(MaxPciePortNum / 8) <= 3");
  }
  n3 = 0; /*0xffd806f2*/
  v5 = 0; /*0xffd806f4*/
  if ( v2 ) /*0xffd806f8*/
  {
    v6 = this_1 + 28; /*0xffd806fa*/
    do /*0xffd8072a*/
    {
      if ( (*v6 & 0x800) != 0 ) /*0xffd80705*/
        v7 = (unsigned __int16)*v6 >> 12; /*0xffd8070a*/
      else
        v7 = 0; /*0xffd8070f*/
      v6 += 25; /*0xffd8071e*/
      *(&v10 + (v5 >> 3)) |= v7 << (4 * (v5 & 7)); /*0xffd80723*/
      ++v5; /*0xffd80727*/
    }
    while ( v5 < v2 ); /*0xffd8072a*/
    this_1 = this; /*0xffd8072c*/
  }
  v12 |= (*(_DWORD *)(this_1 + 2755) & 0xFFFFFF80) << 21; /*0xffd80747*/
  DebugPrint(64, (int)"DRCRM: 0x%08x 0x%08x 0x%08x\n", v10, v11, v12);
  do /*0xffd80779*/
    sub_FFD8C497(4, *(&v10 + n3++)); /*0xffd8076e*/
  while ( n3 < 3 ); /*0xffd80779*/
  return sub_FFD8C578(-1, -2147254272); /*0xffd8078e*/
}