BiExportBcdObjects

NTSTATUS __stdcall BiExportBcdObjects(PVOID StoreHandle, _LIST_ENTRY *IdentifierList){
  _LIST_ENTRY *Flink; 
  NTSTATUS v3; 
  int v6; 
  int v7; 
  NTSTATUS v8; 
  int v9; 
  UINT8 IsPortableWorkspaceBoot; 
  int v11; 
  UINT8 v12; 
  int EfiEntry; 
  int updated; 
  Flink = IdentifierList->Flink;
  v3 = 0;
  if( IdentifierList->Flink == IdentifierList )
    return v3;
  do
  {
    v6 = (int)Flink[3].Flink;
    v7 = v6 & 5;
    if( (v6 & 5) == 0 )
      goto LABEL_24;
    if( (v6 & 0x10) != 0 )
    {
      if( (v6 & 1) == 0 )
        goto LABEL_24;
      v8 = BiDeleteBootEntry(LODWORD(Flink[2].Flink));
      if( v8 >= 0 )
      {
        LODWORD(Flink[3].Flink) &= ~1u;
        goto LABEL_24;
      }
LABEL_9:
      v3 = v8;
      goto LABEL_24;
    }
    if( v7 == 1 )
    {
      v8 = BiDeleteBootEntry(LODWORD(Flink[2].Flink));
      if( v8 >= 0 )
        goto LABEL_24;
      goto LABEL_9;
    }
    if( v7 == 4 )
    {
      v9 = 0;
      IsPortableWorkspaceBoot = BiIsPortableWorkspaceBoot();
      v11 = (int)Flink[3].Flink;
      v12 = IsPortableWorkspaceBoot;
      if( (v11 & 8) != 0 || !IsPortableWorkspaceBoot )
      {
        EfiEntry = BiCreateEfiEntry((__int64)StoreHandle, (__int64)Flink);
        v11 = (int)Flink[3].Flink;
        v9 = EfiEntry;
      }
      if( (v11 & 8) == 0 && !v12 )
      {
        if( v9 < 0 )
          v9 = 0;
        else
          BiAddBootEntryToEfiBootManagerDisplayOrder(StoreHandle, (INT64)Flink);
      }
      if( v9 < 0 )
        v3 = -2143748095;
    }
    else
    {
      updated = BiUpdateEfiEntry((__int64)StoreHandle, (__int64)Flink);
      if( updated < 0 )
      {
        v3 = updated;
        if( ((__int64)Flink[3].Flink & 8) != 0 )
          v3 = -2143748093;
      }
    }
LABEL_24:
    Flink = Flink->Flink;
  }
  while( Flink != IdentifierList );
  if( v3 < 0 )
    BiLogMessage();
  return v3;
}

Referenced by:

BiExportStoreAlterationsToEfi