BiTranslateObjectIdentifier

NTSTATUS __stdcall BiTranslateObjectIdentifier(LIST_ENTRY *IdentifierList, GUID *ObjectIdentifier, UINT64 *BootEntryId){
  _LIST_ENTRY *Flink; 
  NTSTATUS v5; 
  int v6; 
  unsigned __int64 v7; 
  Flink = IdentifierList->Flink;
  if( IdentifierList->Flink == IdentifierList )
    return -1073741275;
  v5 = 0;
  while( 1 )
  {
    v6 = (int)Flink[3].Flink;
    if( (v6 & 4) != 0 )
    {
      v7 = *(_QWORD *)&ObjectIdentifier->Data1 - (unsigned __int64)Flink[1].Flink;
      if( *(_LIST_ENTRY **)&ObjectIdentifier->Data1 == Flink[1].Flink )
        v7 = *(_QWORD *)ObjectIdentifier->Data4 - (unsigned __int64)Flink[1].Blink;
      if( !v7 )
        break;
    }
    Flink = Flink->Flink;
    if( Flink == IdentifierList )
      return -1073741275;
  }
  if( (v6 & 3) == 0 )
    return -1073741275;
  if( (v6 & 0x10) != 0 )
  {
    BiLogMessage();
    return -1073741788;
  }
  else
  {
    *(_DWORD *)BootEntryId = Flink[2].Flink;
  }
  return v5;
}

Referenced by:

BiExportEfiBootManager
BiHandleFirmwareDefaultEntry
BiTranslateDisplayOrder