SdbpGetNextTagId

INT64 __fastcall SdbpGetNextTagId(INT64 a1, UINT64 a2){
  unsigned int v2; 
  int TagHeadSize; 
  int TagDataSize; 
  v2 = a2;
  if( (SdbGetTagFromTagID(a1, a2) & 0xF000) == 28672 && (unsigned int)SdbGetTagDataSize(a1, v2) == -1 )
  {
    AslLogCallPrintf(1ui64, "SdbpGetNextTagId", 0x4DDui64, "Reading from unfinished list");
    return *(unsigned int *)(a1 + 20);
  }
  TagHeadSize = SdbpGetTagHeadSize(a1, v2);
  if( !TagHeadSize )
    return *(unsigned int *)(a1 + 20);
  TagDataSize = SdbGetTagDataSize(a1, v2);
  if( (*(_DWORD *)(a1 + 1328) & 1) == 0 )
    TagDataSize = (TagDataSize + 1) & 0xFFFFFFFE;
  return v2 + TagHeadSize + TagDataSize;
}

Referenced by:

SdbGetFirstChild
SdbGetNextChild
SdbpGetNextIndexedRecord