SdbGetDatabaseID
__int64 __fastcall SdbGetDatabaseID(__int64 a1, void *a2){
int v2;
unsigned int v3;
unsigned int FirstTag;
unsigned int v7;
int v8;
UINT8 *v9;
v2 = *(_DWORD *)(a1 + 24);
v3 = 0;
if( (v2 & 2) != 0 )
{
v9 = (UINT8 *)(a1 + 28);
}
else
{
FirstTag = SdbFindFirstTag(a1, 0i64, 28673);
if( !FirstTag )
{
AslLogCallPrintf(1ui64, "SdbGetDatabaseID", 0x1B8ui64, "Failed to get root tag");
return v3;
}
v7 = SdbFindFirstTag(a1, FirstTag, 36871);
v8 = v7;
if( !v7 )
{
AslLogCallPrintf(1ui64, "SdbGetDatabaseID", 0x1BEui64, "Failed to get the database id");
return v3;
}
v9 = (UINT8 *)(a1 + 28);
if( !(unsigned int)SdbReadBinaryTag(a1, v7, (void *)(a1 + 28), 0x10u) )
{
AslLogCallPrintf(1ui64, "SdbGetDatabaseID", 0x1C3ui64, "Failed to read database id 0x%lx", v8);
return v3;
}
*(_DWORD *)(a1 + 24) |= 2u;
v2 = *(_DWORD *)(a1 + 24);
}
if( (v2 & 2) != 0 )
{
memmove((UINT8 *)a2, v9, 0x10ui64);
return 1;
}
return v3;
}Referenced by:
SdbReadEntryInformation
SdbpValidateAndApplyCompatFlags