ViTargetWMIDeregister

VOID __stdcall ViTargetWMIDeregister(_DEVICE_OBJECT *DeviceObject, VOID *CallerAddress){
  int v3; 
  VOID *v4; 
  _VF_AVL_TREE_NODE *v5; 
  _VF_AVL_TREE *v6; 
  unsigned __int64 RangeSize; 
  _VF_AVL_LOCK_CONTEXT Context[4]; 

  *(_OWORD *)Context = 0i64;
  VfAvlInitializeLockContext(Context, Exclusive);
  v5 = VfAvlLookupTreeNode(&ViTargetDriversAvl, Context, v4, (unsigned int)(v3 + 1));
  if( v5 && (RangeSize = v5[3].RangeSize) != 0 && *(_DEVICE_OBJECT **)(RangeSize + 8) == DeviceObject )
  {
    *(_QWORD *)(RangeSize + 8) = 0i64;
  }
  else
  {
    ++ViTargetWMIRegistrationMismatches;
    VfAvlEnumerateNodes(
      v6,
      Context,
      (UINT64 *)ViTargetWMIDeregisterCallback,
      (_VF_AVL_TREE_NODE *)DeviceObject,
      *(VOID **)Context,
      *(VOID **)&Context[2]);
  }
  VfAvlCleanupLockContext(Context);
}

Referenced by:

VerifierIoWMIRegistrationControl