PopCalculateHiberFileSize

VOID __stdcall PopCalculateHiberFileSize(UINT64 *HiberFileSize, UINT8 *HiberFileType){
  UINT8 v4; 
  __int64 v5; 
  unsigned int v6; 
  unsigned int v7; 
  __int64 *v8; 
  __int128 v9; 
  unsigned __int64 v10; 
  __int128 v11; 
  __int64 v12; 
  v4 = 2;
  v5 = *(_QWORD *)(*(_QWORD *)qword_140C4E388 + 6928i64);
  v6 = 100;
  if( (unsigned int)PopHiberFileSizePercent >= 0x28 )
  {
    v6 = PopHiberFileSizePercent;
  }
  else
  {
    v4 = 2;
    if( (unsigned int)(PopHiberFileType - 1) <= 1 )
      v4 = PopHiberFileType;
    v7 = 0;
    v8 = &PopHiberFileBucket;
    while( 1 )
    {
      v9 = *(_OWORD *)v8;
      v10 = *v8;
      v12 = v8[2];
      *((_QWORD *)&v11 + 1) = *((_QWORD *)&v9 + 1);
      if( v5 << 12 <= v10 )
        break;
      ++v7;
      v8 += 3;
      if( v7 >= 7 )
        goto LABEL_10;
    }
    if( *((_DWORD *)&v11 + v4 + 2) < 0x64u )
      v6 = *((_DWORD *)&v11 + v4 + 2);
  }
LABEL_10:
  *HiberFileSize = (v5 * (unsigned __int64)v6 / 0x64) << 12;
  if( HiberFileType )
    *HiberFileType = v4;
}

Referenced by:

PopAdjustHiberFile
PopEnableHiberFile
PopHiberInitializeResources
PopSetHiberFileSize
PopSetHiberFileType