HalpVerifySratEntryLengthAndFlag

NTSTATUS __stdcall HalpVerifySratEntryLengthAndFlag(_ACPI_SRAT_ENTRY *SratEntry){
  char v1; 
  NTSTATUS result; 
  unsigned int v4; 
  char v5; 
  bool v6; 

  if( !SratEntry->Type )
  {
    result = SratEntry->X2ApicAffinity.ProximityDomain;
    v4 = 16;
LABEL_11:
    v5 = 1;
    v6 = (result & 1) == 0;
    goto LABEL_12;
  }
  if( SratEntry->Type != 1 )
  {
    if( SratEntry->Type == 2 )
    {
      result = SratEntry->MemoryAffinity.Base.anonymous_0.HighPart;
      v4 = v1 != 0 ? 24 : 16;
    }
    else
    {
      if( SratEntry->Type != 3 )
      {
        LOBYTE(result) = 0;
        return result;
      }
      result = (NTSTATUS)SratEntry->GiccAffinity.Flags;
      v4 = 18;
    }
    goto LABEL_11;
  }
  v5 = 1;
  v4 = 40;
  if( (*((_BYTE *)&SratEntry->GiccAffinity + 26) & 1) != 0 )
  {
    v6 = SratEntry->MemoryAffinity.Length == 0;
LABEL_12:
    if( !v6 )
    {
      result = SratEntry->Length;
      if( result >= v4 )
        goto LABEL_15;
    }
  }
  v5 = 0;
LABEL_15:
  LOBYTE(result) = v5;
  return result;
}

Referenced by:

HalpGetNumaProcMemoryCount
HalpNumaInitializeStaticConfiguration