int PchWdtInit()
{
int v0; // eax
int v1; // ebx
__int16 v2; // bp
int v3; // eax
int result; // eax
char v5; // cl
_DWORD *v6; // edi
unsigned int v7; // ebx
unsigned int v8; // ebx
int v9; // eax
int v10; // eax
int v11; // esi
int v12; // eax
int v13; // [esp+14h] [ebp-8h] BYREF
int v14; // [esp+18h] [ebp-4h]
v0 = sub_FFD8EEB6(); /*0xffd87ef4*/
v1 = sub_FFD8CD6B(v0); /*0xffd87f00*/
DebugPrint(64, (int)"(WDT) Readback = 0x%08x\n", v1); /*0xffd87f0a*/
if ( (v1 & 0x4000) != 0 ) /*0xffd87f18*/
{
LOBYTE(v14) = 1; /*0xffd87f1c*/
v2 = (v1 & 0x3FF) + 1; /*0xffd87f27*/
}
else
{
v14 = 0; /*0xffd87f2e*/
v2 = 0; /*0xffd87f32*/
}
v3 = sub_FFD8AD54(); /*0xffd87f34*/
result = (*(int (__cdecl **)(int, int, int, int *))(*(_DWORD *)v3 + 52))(v3, 4, 28, &v13); /*0xffd87f45*/
if ( result >= 0 ) /*0xffd87f4d*/
{
v5 = v14; /*0xffd87f5c*/
v6 = (_DWORD *)(v13 + 8); /*0xffd87f60*/
*(_DWORD *)(v13 + 8) = unk_FFD97F0C; /*0xffd87f63*/
*++v6 = unk_FFD97F10; /*0xffd87f64*/
*++v6 = unk_FFD97F14; /*0xffd87f65*/
v6[1] = unk_FFD97F18; /*0xffd87f66*/
*(_BYTE *)(v13 + 26) = v5; /*0xffd87f75*/
*(_WORD *)(v13 + 24) = v2; /*0xffd87f7c*/
if ( (v1 & 0x3000000) != 0 ) /*0xffd87f82*/
{
DebugPrint(0x80000000, (int)"(WDT) Expiration detected.\n", v1); /*0xffd87f8b*/
v7 = v1 & 0xFC3FFFFF | 0x3800000; /*0xffd87f99*/
}
else
{
if ( (v1 & 0x400000) == 0 || PchWdtIsUnexpectedReset() ) /*0xffd87fa9*/
{
DebugPrint(64, (int)"(WDT) Status OK.\n", v1); /*0xffd87fcf*/
v8 = v1 & 0xFF7FFFFF; /*0xffd87fd7*/
}
else
{
DebugPrint(0x80000000, (int)"(WDT) Unexpected reset detected and ignored.\n"); /*0xffd87fb8*/
v8 = v1 & 0xFF3FFFFF; /*0xffd87fbf*/
}
v7 = v8 | 0x3000000; /*0xffd87fdd*/
}
v9 = sub_FFD8EEB6(); /*0xffd87fdf*/
sub_FFD8CD97(v9, v7); /*0xffd87fe8*/
InstallPpi(&unk_FFD9816C); /*0xffd87ff2*/
v10 = InstallPpi(&unk_FFD98144); /*0xffd87ffc*/
v11 = v10; /*0xffd88001*/
if ( v10 < 0 ) /*0xffd88005*/
{
DebugPrint(0x80000000, (int)"\nASSERT_EFI_ERROR (Status = %r)\n", v10); /*0xffd8800e*/
v12 = GetReportStatusCodePpi(); /*0xffd88016*/
if ( v12 ) /*0xffd8801d*/
(*(void (__cdecl **)(const char *, int, const char *))(v12 + 4))( /*0xffd8802e*/
"e:\\hs\\PurleySktPkg\\SouthClusterLbg\\LibraryPrivate\\PeiPchInitLib\\Wdt.c",
216,
"!EFI_ERROR (Status)");
}
return v11; /*0xffd88034*/
}
return result; /*0xffd88036*/
}