HalpGetMcaExtendedLogStatusBlock

_DWORD *__fastcall HalpGetMcaExtendedLogStatusBlock(INT64 a1){
  _DWORD *v1; 
  unsigned __int64 v3; 
  __int64 v4; 
  unsigned __int64 v5; 
  int v7; 
  v7 = 0;
  v1 = 0i64;
  if( HalpMcaExtendedLoggingSupported )
  {
    if( qword_140CF6228 )
    {
      if( ((int(__fastcall *)(_QWORD, int *, _QWORD))off_140C007C8[0])(*(unsigned int *)(a1 + 16), &v7, 0i64) >= 0 )
      {
        v3 = (unsigned int)(*(_DWORD *)(a1 + 36) + v7 * dword_140CF6238);
        if( v3 < qword_140CF6230 )
        {
          v4 = *(_QWORD *)(qword_140CF6228 + 8 * v3 + 64);
          if( v4 < 0 )
          {
            v5 = v4 & 0x7FFFFFFFFFFFFFFFi64;
            if( v5 >= qword_140CF6240 && v5 + 4096 <= qword_140CF6240 + qword_140CF6250 )
            {
              v1 = (char *)qword_140CF6248 + v5 - qword_140CF6240;
              if( !*v1 )
                return 0i64;
              if( (int)HalpVerifyGenericError((_QWORD *)a1, (char *)qword_140CF6248 + v5 - qword_140CF6240) < 0 )
              {
                *v1 = 0;
                return 0i64;
              }
            }
          }
        }
      }
    }
  }
  return v1;
}

Referenced by:

HalpAddMcaExtendedLogToMemoryErrorSection