WheapGetPreallocatedErrorRecord

_WHEAP_ERROR_RECORD_WRAPPER *__stdcall WheapGetPreallocatedErrorRecord(_WHEAP_ERROR_SOURCE *ErrSrc){
  _WHEAP_ERROR_RECORD_WRAPPER *Records; 
  char v2; 
  unsigned int v3; 

  Records = ErrSrc->Records;
  v2 = 0;
  v3 = 0;
  if( ErrSrc->RecordCount )
  {
    while( Records->InUse == 1 || _InterlockedCompareExchange(&Records->InUse, 1, 0) )
    {
      ++v3;
      Records = (_WHEAP_ERROR_RECORD_WRAPPER *)((char *)Records + Records->Length);
      if( v3 >= ErrSrc->RecordCount )
        return(_WHEAP_ERROR_RECORD_WRAPPER *)((unsigned __int64)Records & -(__int64)(v2 != 0));
    }
    v2 = 1;
  }
  return(_WHEAP_ERROR_RECORD_WRAPPER *)((unsigned __int64)Records & -(__int64)(v2 != 0));
}

Referenced by:

WheapAllocErrorRecord