RtlpFcBufferManagerUpdateBuffers

INT64 __fastcall RtlpFcBufferManagerUpdateBuffers(_QWORD *a1, INT64 a2, INT64 a3){
  __int64 v4; 
  __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  _QWORD *v9; 
  __int64 v10; 
  char *v11; 
  v4 = *a1 & 1i64;
  v6 = (unsigned int)v4;
  v7 = 3i64;
  v8 = ((_BYTE)v4 - 1) & 1;
  v9 = &a1[9 * v4];
  v10 = (__int64)v9 - a3 + 24;
  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] = a2;
  RtlUpdateSwapReference((INT64)a1, v8);
  a1[v6 + 21] = 0i64;
  return RtlpFcInitializeBuffers((INT64)(v9 + 3));
}

Referenced by:

CmFcManagerStartBootPhase
CmFcManagerStartRuntimePhase
CmFcManagerUpdateFeatureConfigurations
CmFcManagerUpdateFeatureUsageSubscriptions