ViPoolLogStackTrace

VOID __stdcall ViPoolLogStackTrace(PVOID Address, UINT64 a2){
  PVOID *v2; 
  BOOL v3; 
  if( VfPoolTraces )
  {
    v2 = (PVOID *)(VfPoolTraces
                 + ((unsigned __int64)(_InterlockedIncrement(&VfPoolTracesIndex) & (unsigned int)(VfPoolTracesLength - 1)) << 7));
    v2[2] = KeGetCurrentThread();
    *v2 = Address;
    v2[1] = (PVOID)a2;
    if( (VfOptionFlags & 2) != 0 )
    {
LABEL_3:
      v2[3] = 0i64;
      return;
    }
    if( KeGetCurrentIrql() > 1u || RtlEnoughStackSpaceForStackCapture() )
    {
      ViPoolLogStackCallout(v2);
    }
    else
    {
      LOBYTE(v3) = 1;
      if( KeExpandKernelStackAndCalloutEx(ViPoolLogStackCallout, v2, 0xE30ui64, v3, 0i64) < 0 )
        goto LABEL_3;
    }
  }
}

Referenced by:

VfAllocPoolNotification
VfFreePoolNotification