ViDevObjAdd

UINT8 __stdcall ViDevObjAdd(_DEVICE_OBJECT *DeviceObject){
  UINT8 v1; 
  _VF_AVL_TREE_NODE *v2; 
  _VF_AVL_TREE_NODE *v3; 
  _VF_AVL_LOCK_CONTEXT Context[4]; 

  v1 = 1;
  *(_OWORD *)Context = 0i64;
  if( ViDevObjInitialized )
  {
    v2 = VfAvlReserveNode(&ViDevObjAvl, DeviceObject, 0x150ui64);
    if( v2 )
    {
      LODWORD(v2[1].p) = 0;
      VfAvlInitializeLockContext(Context, Exclusive);
      VfAvlInsertReservedTreeNode(&ViDevObjAvl, Context, v3);
      VfAvlCleanupLockContext(Context);
      return v1;
    }
    _InterlockedExchange(&ViDevObjAllocationFailures, 1);
  }
  return 0;
}

Referenced by:

VerifierIoCreateDevice