RtlpLfhIncrementDataSlot

NTSTATUS __stdcall RtlpLfhIncrementDataSlot(){
  _ETHREAD *CurrentThread; 
  unsigned __int16 HeapData_high; 
  __int16 v2; 
  __int16 v3; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  HeapData_high = (unsigned __int8)HIWORD(CurrentThread->HeapData);
  if( HeapData_high == HIBYTE(HIWORD(CurrentThread->HeapData)) )
  {
    v2 = ExGenRandom(ExGenRandomDomainUserVisible);
    v3 = (v2 << 8) | (unsigned __int8)(v2 + 1);
  }
  else
  {
    v3 = (unsigned __int8)(HIWORD(CurrentThread->HeapData) ^ (HeapData_high + 1)) ^ HIWORD(CurrentThread->HeapData);
  }
  HIWORD(CurrentThread->HeapData) = v3;
  return HeapData_high;
}

Referenced by:

RtlpHpLfhSlotAllocate