IopCheckGetQuotaBufferValidity

INT64 __stdcall IopCheckGetQuotaBufferValidity(
        FILE_GET_QUOTA_INFORMATION *QuotaBuffer,
        UINT64 QuotaLength,
        UINT64 *ErrorOffset){
  int v4; 
  int v5; 
  FILE_GET_QUOTA_INFORMATION *v6; 
  int v7; 
  __int64 NextEntryOffset; 
  int v9; 
  v4 = QuotaLength;
  v5 = (int)QuotaBuffer;
  v6 = QuotaBuffer;
  if( (int)QuotaLength >= 20 )
  {
    while( RtlValidSid(&v6->Sid) )
    {
      v7 = RtlLengthSid(&v6->Sid);
      NextEntryOffset = v6->NextEntryOffset;
      v9 = v7 + 8;
      if( !(_DWORD)NextEntryOffset )
      {
        if( v4 - v9 < 0 )
          break;
        return 0i64;
      }
      if( v9 <= (int)NextEntryOffset && (NextEntryOffset & 3) == 0 )
      {
        v4 -= NextEntryOffset;
        if( v4 >= 0 )
        {
          v6 = (FILE_GET_QUOTA_INFORMATION *)((char *)v6 + NextEntryOffset);
          if( v4 >= 20 )
            continue;
        }
      }
      break;
    }
  }
  *ErrorOffset = (unsigned int)((_DWORD)v6 - v5);
  return 3221226086i64;
}

Referenced by:

NtQueryQuotaInformationFile