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