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.