PopSetHiberFileType

NTSTATUS __stdcall PopSetHiberFileType(UINT64 HiberFileType, 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)PopHiberFileSizePercent >= 0x28 && (_DWORD)HiberFileType != 2
    || (unsigned int)(HiberFileType - 1) > 1 )
  {
    return -1073741811;
  }
  v3 = PopHiberFileType;
  PopHiberFileType = HiberFileType;
  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
    || (v6 = PopOpenKey(&Handle, (WCHAR *)L"Control\\Power", 0x20006ui64), v6 < 0)
    || (RtlInitUnicodeString(DestinationString, L"HiberFileType"),
        LODWORD(DataSizea) = 4,
        v6 = ZwSetValueKey(Handle, DestinationString, 0i64, 4ui64, &PopHiberFileType, DataSizea),
        ZwClose((_HANDLE)Handle),
        v6 < 0) )
  {
    PopHiberFileType = v3;
  }
  else
  {
    PopHiberFileTypeReg = PopHiberFileType;
    if( HiberFileSize )
      *HiberFileSize = v4;
  }
  return v6;
}

Referenced by:

NtPowerInformation
PopSetHiberFileSize