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*/
}