RtlpHpSegLfhVsDecommit

UINT64 __stdcall RtlpHpSegLfhVsDecommit(INT64 a1, UINT64 a2, UINT64 a3){
  unsigned int v3; 
  int v4; 
  UINT64 result; 
  __int64 v7; 
  UINT64 v8; 
  unsigned int v9; 
  __int64 v10; 
  unsigned __int64 v11; 
  unsigned __int64 v12; 
  unsigned __int64 v13; 

  v3 = a3;
  v4 = a2;
  result = RtlpHpSegDescriptorValidate(a1, a2);
  v7 = v3 >> 12;
  v8 = result;
  v9 = (v4
      - (unsigned int)((__int64)(result - (result & *(_QWORD *)a1)) >> 5 << *(_BYTE *)(a1 + 8))
      - ((unsigned int)result & *(_DWORD *)a1)) >> 12;
  if( (*(_BYTE *)(a1 + 13) & 8) != 0 )
    goto LABEL_10;
  v10 = *(__int16 *)(a1 + 22);
  v11 = *(_QWORD *)(v10 + a1 + 8) >> *(_BYTE *)(a1 + 11);
  if( v11 <= 8 )
    v11 = 8i64;
  v12 = *(_QWORD *)(v10 + a1 + 8) >> *(_BYTE *)(a1 + 12);
  if( v12 <= 8 )
    v12 = 8i64;
  if( (v13 = v7 + *(_QWORD *)(v10 + a1 + 16) + *(_QWORD *)(v10 + a1 + 24), v13 > v11)
    && (result = RtlpHpScheduleCompaction(*(_QWORD **)(a1 + 56)), (result & 0x80000000) != 0i64)
    || v13 > v12 )
  {
LABEL_10:
    LODWORD(result) = RtlpHpSegPageRangeCommit((UINT16 *)a1, v8, v9, -(int)v7, 0, 0i64);
  }
  return result;
}

Referenced by:

No references.