RtlpHpSegLfhVsCommit

NTSTATUS __stdcall RtlpHpSegLfhVsCommit(INT64 a1, UINT64 a2, UINT64 a3){
  __int64 v3; 
  UINT64 v5; 
  unsigned int v6; 
  char v8; 
  UINT64 v9; 
  char v10; 
  char v11; 

  v3 = *(_QWORD *)a1;
  v5 = a2 & *(_QWORD *)a1;
  v6 = a3;
  v8 = *(_BYTE *)(a1 + 8);
  if( (a1 ^ v5 ^ (unsigned __int64)RtlpHpHeapGlobals ^ *(_QWORD *)(v5 + 0x10)) != 0xA2E64EADA2E64EADui64 )
    goto LABEL_8;
  v9 = v5 + 32 * ((unsigned __int64)(unsigned int)(a2 - v5) >> v8);
  if( !v9 )
    goto LABEL_8;
  v10 = *(_BYTE *)(v9 + 24);
  if( (v10 & 1) == 0 )
    goto LABEL_8;
  if( (v10 & 2) == 0 )
  {
    v9 -= 32i64 * *(unsigned __int8 *)(v9 + 31);
    v11 = *(_BYTE *)(v9 + 24);
    if( (v11 & 3) == 3 && (v11 & 0xCu) >= 8 )
      return RtlpHpSegPageRangeCommit(
               (UINT16 *)a1,
               v9,
               ((_DWORD)a2 - (unsigned int)((__int64)(v9 - (v9 & v3)) >> 5 << v8) - ((unsigned int)v9 & (unsigned int)v3)) >> 12,
               v6 >> 12,
               0,
               0i64);
LABEL_8:
    v9 = 0i64;
    return RtlpHpSegPageRangeCommit(
             (UINT16 *)a1,
             v9,
             ((_DWORD)a2 - (unsigned int)((__int64)(v9 - (v9 & v3)) >> 5 << v8) - ((unsigned int)v9 & (unsigned int)v3)) >> 12,
             v6 >> 12,
             0,
             0i64);
  }
  if( (v10 & 0xCu) < 8 && (((1 << v8) - 1) & a2) != 0 )
    goto LABEL_8;
  return RtlpHpSegPageRangeCommit(
           (UINT16 *)a1,
           v9,
           ((_DWORD)a2 - (unsigned int)((__int64)(v9 - (v9 & v3)) >> 5 << v8) - ((unsigned int)v9 & (unsigned int)v3)) >> 12,
           v6 >> 12,
           0,
           0i64);
}

Referenced by:

No references.