PsAcquireSiloHardReference

NTSTATUS __stdcall PsAcquireSiloHardReference(PVOID Object){
  signed __int64 v2; 
  unsigned __int64 i; 
  signed __int64 v4; 
  if( !Object )
    return 0;
  if( (*((_DWORD *)Object + 330) & 0x40000000) == 0 )
    __int2c();
  _m_prefetchw((char *)Object + 1520);
  v2 = *((_QWORD *)Object + 190);
  for( i = v2 + 1; i > 1; i = v2 + 1 )
  {
    v4 = v2;
    v2 = _InterlockedCompareExchange64((volatile signed __int64 *)Object + 190, i, v2);
    if( v4 == v2 )
    {
      ObfReferenceObjectWithTag(Object, 0x486C6953u);
      return 0;
    }
  }
  if( i != 1 )
    __fastfail(0xEu);
  return -1073741558;
}

Referenced by:

IopAllocateFoExtensionsOnCreate
IopParseDevice