HalpGenInitialRead

CHAR __fastcall HalpGenInitialRead(INT64 a1){
  INT64 v1; 
  INT64 ***v2; 
  INT64 *GhesEntry; 
  int v4; 
  __int64 v5; 
  _QWORD v7[5]; 
  v1 = *(unsigned int *)(a1 + 28);
  v7[0] = &HalpGenericPeiErrorSourceListHead;
  v2 = (INT64 ***)v7;
  v7[1] = &HalpGenericNmiErrorSourceListHead;
  v7[2] = &HalpGenericSeaErrorSourceListHead;
  v7[3] = &HalpGenericSdeiErrorSourceListHead;
  v7[4] = &HalpGenericSeiErrorSourceListHead;
  while( 1 )
  {
    GhesEntry = HalpFindGhesEntry(v1, *v2);
    if( GhesEntry )
      break;
    v2 = (INT64 ***)(v5 + 8);
    if( (unsigned int)(v4 + 1) >= 5 )
      return(char)GhesEntry;
  }
  LOBYTE(GhesEntry) = HalpCheckAndReportGhes((INT64)GhesEntry);
  return(char)GhesEntry;
}

Referenced by:

HalpInitializeGenericErrorSource