RtlpFcBufferManagerUpdateBuffers
NTSTATUS __fastcall RtlpFcBufferManagerUpdateBuffers(_EX_PUSH_LOCK *a1, __int64 a2, __int64 a3){
__int64 v4;
__int64 v6;
__int64 v7;
__int64 v8;
_EX_PUSH_LOCK *v9;
__int64 v10;
char *v11;
v4 = a1->_bf_0 & 1;
v6 = (unsigned int)v4;
v7 = 3i64;
v8 = ((_BYTE)v4 - 1) & 1;
v9 = &a1[9 * v4];
v10 = (__int64)&v9[3] - a3;
v11 = (char *)&a1[8 * v8 + 3 + v8] - a3;
do
{
if( *(_QWORD *)a3 )
{
*(_OWORD *)&v11[a3] = *(_OWORD *)a3;
*(_QWORD *)&v11[a3 + 16] = *(_QWORD *)(a3 + 16);
*(_OWORD *)a3 = *(_OWORD *)(a3 + v10);
*(_QWORD *)(a3 + 16) = *(_QWORD *)(a3 + v10 + 16);
}
else
{
*(_OWORD *)&v11[a3] = *(_OWORD *)(a3 + v10);
*(_QWORD *)&v11[a3 + 16] = *(_QWORD *)(a3 + v10 + 16);
}
a3 += 24i64;
--v7;
}
while( v7 );
a1[v8 + 21]._bf_0 = a2;
RtlUpdateSwapReference(a1, v8);
a1[v6 + 21]._bf_0 = 0i64;
return RtlpFcInitializeBuffers((INT64)&v9[3]);
}Referenced by:
CmFcManagerStartBootPhase
CmFcManagerStartRuntimePhase
CmFcManagerUpdateFeatureConfigurations
CmFcManagerUpdateFeatureUsageSubscriptions