PopSetHiberFileType

INT64 __stdcall PopSetHiberFileType(UINT64 HiberFileType, UINT64 *HiberFileSize){
  int v3; 
  UINT64 v4; 
  int v5; 
  WCHAR v6; 
  UINT64 DataSize; 
  struct _UNICODE_STRING DestinationString; 
  HANDLE KeyHandle; 
  UINT64 HiberFileSizea; 
  HiberFileSizea = 0i64;
  KeyHandle = 0i64;
  DestinationString = 0i64;
  if( ((unsigned int)PopHiberFileSizePercent < 0x28 || (_DWORD)HiberFileType == 2)
    && (unsigned int)(HiberFileType - 1) <= 1 )
  {
    v3 = PopHiberFileType;
    PopHiberFileType = HiberFileType;
    PopCalculateHiberFileSize(&HiberFileSizea, 0i64);
    v4 = HiberFileSizea;
    v5 = PopValidateHiberFileSize(HiberFileSizea, 0i64);
    if( v5 < 0
      || (v5 = PopOpenKey(&KeyHandle, (PWCHAR)L"Control\\Power", 0x20006ui64), v5 < 0)
      || (RtlInitUnicodeString(&DestinationString, L"HiberFileType", v6),
          LODWORD(DataSize) = 4,
          v5 = ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 4ui64, &PopHiberFileType, DataSize),
          ZwClose(KeyHandle),
          v5 < 0) )
    {
      PopHiberFileType = v3;
    }
    else
    {
      PopHiberFileTypeReg = PopHiberFileType;
      if( HiberFileSize )
        *HiberFileSize = v4;
    }
  }
  else
  {
    return(unsigned int)-1073741811;
  }
  return(unsigned int)v5;
}

Referenced by:

NtPowerInformation
PopSetHiberFileSize