PopSetHiberFileSize

NTSTATUS __stdcall PopSetHiberFileSize(UINT64 Percent, UINT64 *HiberFileSize){
  int v3; 
  UINT64 v4; 
  INT64 v5; 
  int v6; 
  VOID *Data; 
  INT64 DataSize; 
  UINT64 DataSizea; 
  _UNICODE_STRING DestinationString[2]; 
  VOID *Handle; 
  UINT64 HiberFileSizea; 

  HiberFileSizea = 0i64;
  Handle = 0i64;
  DestinationString[0] = 0i64;
  if( (unsigned int)Percent > 0x64 )
    return -1073741811;
  v3 = PopHiberFileSizePercent;
  PopHiberFileSizePercent = Percent;
  PopCalculateHiberFileSize(&HiberFileSizea, 0i64);
  v4 = HiberFileSizea;
  v6 = PopValidateHiberFileSize(
         HiberFileSizea,
         0i64,
         0i64,
         v5,
         (INT64)Data,
         DataSize,
         *(INT64 *)&DestinationString[0].Length,
         (INT64)DestinationString[0].Buffer);
  if( v6 < 0
    || (unsigned int)PopHiberFileSizePercent >= 0x28 && (v6 = PopSetHiberFileType(2ui64, 0i64), v6 < 0)
    || (v6 = PopOpenKey(&Handle, (WCHAR *)L"Control\\Power", 0x20006ui64), v6 < 0)
    || (RtlInitUnicodeString(DestinationString, L"HiberFileSizePercent"),
        LODWORD(DataSizea) = 4,
        v6 = ZwSetValueKey(Handle, DestinationString, 0i64, 4ui64, &PopHiberFileSizePercent, DataSizea),
        ZwClose((_HANDLE)Handle),
        v6 < 0) )
  {
    PopHiberFileSizePercent = v3;
  }
  else if( HiberFileSize )
  {
    *HiberFileSize = v4;
  }
  return v6;
}

Referenced by:

NtPowerInformation