HalpReadExtendedMcaRegistersIntel

NTSTATUS __stdcall HalpReadExtendedMcaRegistersIntel(
        WHEA_ERROR_SOURCE_DESCRIPTOR *ErrorSource,
        _WHEA_ERROR_PACKET_V2 *ErrorPacket,
        WHEA_ERROR_RECORD *ErrorRecord,
        PVOID Context){
  unsigned __int8 v5; 
  __int64 v7; 
  unsigned int v8; 
  unsigned int v9; 
  __int64 *v10; 
  v5 = BYTE2(ErrorSource);
  LODWORD(v7) = ((__int64(__fastcall *)(WHEA_ERROR_RECORD *, __int64, _QWORD))HalpWheaReadMsr)(
                  ErrorRecord,
                  378i64,
                  0i64);
  if( (v7 & 4) != 0 )
  {
    LODWORD(v7) = 24;
    v8 = v5;
    if( v8 > 0x18 )
      v8 = 24;
    *((_DWORD *)Context + 16) = v8;
    if( v8 > 8 )
    {
      v7 = ((__int64(__fastcall *)(WHEA_ERROR_RECORD *, __int64, _QWORD))HalpWheaReadMsr)(ErrorRecord, 392i64, 0i64);
      v9 = 0;
      if( v7 )
      {
        v10 = (__int64 *)((char *)Context + 72);
        do
        {
          v7 = ((__int64(__fastcall *)(WHEA_ERROR_RECORD *, _QWORD, _QWORD))HalpWheaReadMsr)(
                 ErrorRecord,
                 v9 + 384,
                 0i64);
          ++v9;
          *v10++ = v7;
        }
        while( v9 < v8 );
      }
    }
  }
  return v7;
}

Referenced by:

HalpMcaPopulateErrorData