HalpMceRecoveryMemoryErrorAmd
INT64 __fastcall HalpMceRecoveryMemoryErrorAmd(INT64 a1){
__int64 v1;
CHAR v2;
__int64 v3;
__int64 v4;
int v5;
v1 = *(_QWORD *)(a1 + 20);
v2 = 0;
v3 = *(_QWORD *)(a1 + 40);
v4 = 0i64;
v5 = -1073741637;
if( (v1 & 3) != 1 && ((v3 & 0x80000000000i64) != 0 || (v1 & 3) == 0) )
{
if( (v3 & 0x400000000000000i64) != 0 )
{
v2 = 1;
v4 = *(_QWORD *)(a1 + 48) & ~((1i64 << (HIBYTE(*(_QWORD *)(a1 + 48)) & 0x3F)) - 1) & 0xFFFFFFFFFFFFFFi64;
}
if( !HalpHvWheaEnlightenedCpuManager )
return(unsigned int)HalpMceMemoryErrorRecovery(1, v2, v4);
v5 = HalpHvMceConsumedMemoryErrorRecovery(*(unsigned int *)(a1 + 16), v4, v3, (v1 & 2) != 0, v1 & 1);
if( v5 < 0 )
return(unsigned int)HalpMceMemoryErrorRecovery(1, v2, v4);
}
return(unsigned int)v5;
}Referenced by:
HalpMceRecoveryRequired