RtlpRemoveUCRBlock
UINT64 __stdcall RtlpRemoveUCRBlock(PVOID HeapHandle, PVOID BaseAddress){
char *v2;
UINT64 result;
INT64 *v5;
INT64 v6;
INT64 v7;
void **v8;
INT64 v9;
PVOID v10;
v2 = (char *)BaseAddress + 16;
result = *((_QWORD *)BaseAddress + 2);
v5 = (INT64 *)*((_QWORD *)BaseAddress + 3);
v6 = *(_QWORD *)(result + 8);
v7 = *v5;
if( *v5 == v6 && (char *)v7 == v2 )
{
*v5 = result;
*(_QWORD *)(result + 8) = v5;
}
else
{
RtlpLogHeapFailure(13i64, 0i64, (UINT64)v2, v6, v7, 0i64);
}
if( *((_QWORD *)BaseAddress + 5) )
{
result = *(_QWORD *)BaseAddress;
v8 = (void **)*((_QWORD *)BaseAddress + 1);
v9 = *(_QWORD *)(*(_QWORD *)BaseAddress + 8i64);
v10 = *v8;
if( *v8 == (void *)v9 && v10 == BaseAddress )
{
*v8 = (void *)result;
*(_QWORD *)(result + 8) = v8;
}
else
{
RtlpLogHeapFailure(13i64, 0i64, (UINT64)BaseAddress, v9, (INT64)v10, 0i64);
}
}
return result;
}Referenced by:
RtlpDeCommitFreeBlock
RtlpFindAndCommitPages