InitOnceScanIndexes
INT64 __fastcall InitOnceScanIndexes(PRTL_RUN_ONCE RunOnce, PVOID Parameter, PVOID *Context){
unsigned int v3;
char *v6;
unsigned int FirstChild;
unsigned int v8;
unsigned int i;
unsigned int v10;
unsigned int FirstTag;
unsigned int v12;
unsigned int v13;
int v14;
__int64 v15;
v3 = 0;
if( !Parameter )
{
AslLogCallPrintf(1ui64, "InitOnceScanIndexes", 0x3ACui64, "PDB was not supplied for InitOnceScanIndexes");
return 0i64;
}
if( !Context )
{
AslLogCallPrintf(1ui64, "InitOnceScanIndexes", 0x3B2ui64, "No return context was supplied for InitOnceScanIndexes");
return 0i64;
}
v6 = (char *)Parameter + 48;
memset((INT64)Parameter + 48, 0i64);
FirstChild = SdbGetFirstChild((INT64)Parameter, 0i64);
v8 = FirstChild;
if( FirstChild )
{
if( (unsigned __int16)SdbGetTagFromTagID((__int64)Parameter, FirstChild) == 30722 )
{
*((_DWORD *)Parameter + 339) = 0;
for( i = SdbFindFirstTag((INT64)Parameter, v8, 30723); ; i = SdbFindNextTag((__int64)Parameter, v8, v10) )
{
v10 = i;
if( !i )
{
*Context = v6;
return 1;
}
if( *((_DWORD *)Parameter + 339) == 32 )
break;
FirstTag = SdbFindFirstTag((INT64)Parameter, i, 14338);
if( !FirstTag )
{
AslLogCallPrintf(1ui64, "InitOnceScanIndexes", 0x3DCui64, "Index missing TAG_INDEX_TAG");
return v3;
}
*((_WORD *)Parameter + 20 * *((unsigned int *)Parameter + 339) + 26) = SdbReadWORDTag(
(__int64)Parameter,
FirstTag,
0);
v12 = SdbFindFirstTag((INT64)Parameter, v10, 14339);
if( !v12 )
{
AslLogCallPrintf(1ui64, "InitOnceScanIndexes", 0x3E5ui64, "Index missing TAG_INDEX_KEY");
return v3;
}
*((_WORD *)Parameter + 20 * *((unsigned int *)Parameter + 339) + 27) = SdbReadWORDTag(
(__int64)Parameter,
v12,
0);
v13 = SdbFindFirstTag((INT64)Parameter, v10, 16406);
if( v13 )
*((_DWORD *)Parameter + 10 * *((unsigned int *)Parameter + 339) + 20) = SdbReadDWORDTag(
(INT64)Parameter,
v13,
0i64);
else
*((_DWORD *)Parameter + 10 * *((unsigned int *)Parameter + 339) + 20) = 0;
v14 = SdbFindFirstTag((INT64)Parameter, v10, 38913);
v15 = *((unsigned int *)Parameter + 339);
if( !v14 )
{
*((_WORD *)Parameter + 20 * v15 + 26) = 0;
AslLogCallPrintf(1ui64, "InitOnceScanIndexes", 0x3F6ui64, "Index missing TAG_INDEX_BITS");
return v3;
}
*((_DWORD *)Parameter + 10 * v15 + 12) = v14;
++*((_DWORD *)Parameter + 339);
}
AslLogCallPrintf(
1ui64,
"InitOnceScanIndexes",
0x3D5ui64,
"Too many indexes in file: recompile and increase SDB_MAX_INDEXES");
}
else
{
AslLogCallPrintf(1ui64, "InitOnceScanIndexes", 0x3C6ui64, "Root child tag is not index tagid 0x%lx", v8);
}
}
else
{
AslLogCallPrintf(1ui64, "InitOnceScanIndexes", 0x3C1ui64, "Failed to get the child index from root");
}
return v3;
}Referenced by:
No references.