SdbpGetStringTableItemFromStringRef
NTSTATUS __stdcall SdbpGetStringTableItemFromStringRef(PVOID Parameter){
int v1;
_DWORD *v2;
_QWORD *v3;
PVOID v4;
_QWORD *v5;
_DWORD *v6;
int v7;
int v9;
PVOID v10;
NTSTATUS v11;
int v12;
int v13;
bool v14;
int v15;
unsigned int v16;
NTSTATUS result;
NTSTATUS v18;
int *v19;
v4 = 0i64;
v5 = v3;
v6 = v2;
v7 = v1;
v9 = 0;
v10 = 0i64;
v19 = 0i64;
if( *((_DWORD *)Parameter + 4) )
{
if( !*((_QWORD *)Parameter + 170) )
{
AslLogCallPrintf(1ui64, "SdbpGetStringTableItemFromStringRef", 0x2EFui64, "No stringtable in DB");
v12 = -1073741275;
goto LABEL_8;
}
v10 = (PVOID)*((_QWORD *)Parameter + 170);
v13 = 6;
}
else
{
v11 = RtlRunOnceExecuteOnce(
(PRTL_RUN_ONCE)Parameter + 168,
(PRTL_RUN_ONCE_INIT_FN)InitOnceGetStringTableOffset,
Parameter,
(PVOID *)&v19);
v12 = v11;
if( v11 < 0 )
{
v18 = v11;
AslLogCallPrintf(
1ui64,
"SdbpGetStringTableItemFromStringRef",
0x303ui64,
"RtlRunOnceExecuteOnce failed for InitOnceGetStringTableOffset [%x]",
v18);
goto LABEL_8;
}
if( !v19 || (v13 = *v19) == 0 )
{
AslLogCallPrintf(
1ui64,
"SdbpGetStringTableItemFromStringRef",
0x313ui64,
"InitOnceGetStringTableOffset succeeded but failed to find string table");
v12 = -1073741271;
goto LABEL_8;
}
v10 = Parameter;
}
v9 = v13 + v7;
if( (unsigned __int16)SdbGetTagFromTagID((__int64)v10, (unsigned int)(v13 + v7)) == 0x8801 )
{
v12 = 0;
}
else
{
AslLogCallPrintf(1ui64, "SdbpGetStringTableItemFromStringRef", 0x321ui64, "Pulled out a non-stringtable item");
v12 = -1073741788;
}
LABEL_8:
v14 = v12 < 0;
v15 = 0;
v16 = ~v12;
if( !v14 )
{
v15 = v9;
v4 = v10;
}
*v6 = v15;
result = v16 >> 31;
*v5 = v4;
return result;
}Referenced by:
SdbpGetMappedStringFromTable