EmpAllocatePool

NTSTATUS __stdcall EmpAllocatePool(_SIZE_T NumberOfBytes){
  __int64 *v1; 
  _DWORD *v2; 
  __int64 v3; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 

  v3 = *v1;
  v4 = (*(_QWORD *)&NumberOfBytes + 7i64) & 0xFFFFFFFFFFFFFFF8ui64;
  if( *v1 && (v5 = (unsigned int)*v2, v5 >= v4) )
  {
    *v1 = v3 + v4;
    *v2 = v5 - v4;
  }
  else
  {
    LODWORD(v3) = (unsigned int)ExAllocatePoolWithTag(1ui64, *(UINT64 *)&NumberOfBytes, 1986350405i64);
  }
  return v3;
}

Referenced by:

EmpEvaluateNodeLink
EmpEvaluateTargetRule