int PchFabricErrorCheck()
{
int v0; // eax
int v1; // eax
unsigned __int8 *v2; // esi
int v3; // edi
unsigned int i; // ebp
unsigned int v5; // ecx
unsigned int v6; // edx
unsigned int v7; // ebx
unsigned __int8 v8; // cl
unsigned int v9; // ebx
int v10; // ebx
unsigned int v11; // eax
int result; // eax
int v13; // [esp+0h] [ebp-24h] BYREF
int v14; // [esp+4h] [ebp-20h]
int v15; // [esp+8h] [ebp-1Ch]
_DWORD *v16; // [esp+Ch] [ebp-18h] BYREF
int n10; // [esp+10h] [ebp-14h]
int v18; // [esp+14h] [ebp-10h] BYREF
int v19; // [esp+18h] [ebp-Ch] BYREF
unsigned int v20; // [esp+1Ch] [ebp-8h]
unsigned int v21; // [esp+20h] [ebp-4h]
v13 = 0; /*0xffd80213*/
v0 = sub_FFD8AD54(); /*0xffd80217*/
if ( (*(int (__cdecl **)(int, int, _DWORD **))(*(_DWORD *)v0 + 76))(v0, 4, &v16) ) /*0xffd80226*/
{
v1 = GetReportStatusCodePpi(); /*0xffd80230*/
if ( v1 ) /*0xffd80237*/
(*(void (__cdecl **)(const char *, int, const char *))(v1 + 4))( /*0xffd80248*/
"e:\\hs\\PurleySktPkg\\SouthClusterLbg\\LibraryPrivate\\PeiPchInitLib\\PchInitPreMem.c",
456,
"Status == 0");
}
*v16 = 0; /*0xffd80255*/
v2 = (unsigned __int8 *)&unk_FFD980CC; /*0xffd80258*/
v15 = 0; /*0xffd8025d*/
n10 = 10; /*0xffd80263*/
do
{
v3 = 0; /*0xffd8026b*/
for ( i = 0; i < 0xC00; i += 512 )
{
v5 = 0; /*0xffd80272*/
v6 = i + *((_DWORD *)v2 + 2); /*0xffd80274*/
v14 = 0; /*0xffd80276*/
v21 = v6; /*0xffd8027a*/
if ( v2[v3 + 1] )
{
while ( 1 ) /*0xffd80288*/
{
v7 = v5; /*0xffd80288*/
v8 = *v2; /*0xffd8028e*/
v9 = v6 + 32 * v7; /*0xffd80294*/
v20 = v9; /*0xffd8029b*/
sub_FFD8C2A0(v8, v9, 4, &v18); /*0xffd8029f*/
sub_FFD8C2A0(*v2, v9, 4, &v19); /*0xffd802b0*/
v10 = v18; /*0xffd802b5*/
if ( v18 == v19 ) /*0xffd802c0*/
{
v13 = v18; /*0xffd802dd*/
}
else
{
sub_FFD8C2A0(*v2, v20, 4, &v13); /*0xffd802d0*/
v10 = v13; /*0xffd802d5*/
}
if ( v10 ) /*0xffd802e3*/
break; /*0xffd802e3*/
v11 = v2[v3 + 1]; /*0xffd802e9*/
v5 = v14 + 1; /*0xffd802ee*/
v6 = v21; /*0xffd802ef*/
v14 = v5; /*0xffd802f3*/
if ( v5 >= v11 ) /*0xffd802f9*/
goto LABEL_14; /*0xffd802f9*/
}
*v16 |= (v10 & 7) << v15; /*0xffd80311*/
DebugPrint(0x80000000, (int)"ERROR: Internal fabric error detected!! ");
DebugPrint( /*0xffd80331*/
0x80000000,
(int)"PSF PID:0x%x, RSx/PortGroup:0x%x, Port:0x%x, Channel:0, error bits:0x%x\n",
*v2,
v3,
v14,
v10);
}
LABEL_14:
++v3; /*0xffd8033f*/
}
v15 += 3; /*0xffd8034c*/
v2 += 12; /*0xffd80351*/
--n10; /*0xffd80354*/
}
while ( n10 );
result = sub_FFD8CFB4(&unk_FFD97F6C, 4); /*0xffd8036a*/
if ( !result ) /*0xffd80376*/
{
result = GetReportStatusCodePpi(); /*0xffd80378*/
if ( result ) /*0xffd8037f*/
return (*(int (__cdecl **)(const char *, int, const char *))(result + 4))( /*0xffd80390*/
"e:\\hs\\PurleySktPkg\\SouthClusterLbg\\LibraryPrivate\\PeiPchInitLib\\PchInitPreMem.c",
504,
"HobPtr != 0");
}
return result; /*0xffd80396*/
}