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