PfTReplaceCurrentBuffer
NTSTATUS __stdcall PfTReplaceCurrentBuffer(PFP_BUFFER_MANAGER *BufferMgr){
_QWORD *v1;
__int64 v2;
__int64 v3;
NTSTATUS v4;
_QWORD *v5;
_QWORD *v6;
__int64 v7;
unsigned __int16 v9;
__int64 v10;
v1 = PfTGetFreeBuffer((__int64)BufferMgr);
v4 = 0;
v5 = v1;
if( !v1 )
return -1073741823;
if( (*(_DWORD *)v2 & 0xF) == 1 )
{
v9 = *((_WORD *)v1 + 16) + *(_WORD *)(*(_QWORD *)(v2 + 24) + 36i64);
v10 = 0xFFFF - (unsigned int)v9;
*((_WORD *)v1 + 18) = v9;
if( (unsigned int)v10 < *((_DWORD *)v1 + 8) )
*(_QWORD *)((((unsigned __int64)v1 + 47) & 0xFFFFFFFFFFFFFFF8ui64) + 40 * v10) = -1i64;
}
v6 = (_QWORD *)(v3 + 24);
v7 = *(_QWORD *)(v3 + 24);
if( *(_QWORD *)(v7 + 8) != v3 + 24 )
__fastfail(3u);
*v5 = v7;
v5[1] = v6;
*(_QWORD *)(v7 + 8) = v5;
*v6 = v5;
if( *(_WORD *)(v3 + 10) <= *(_WORD *)(v3 + 8) )
KeSetEvent((PRKEVENT)((char *)&stru_140C4DB30 + 7744), 0, 0);
return v4;
}Referenced by:
PfTAcquireLogEntry
PfpLogPageAccess