CmpPrepareDiscardReplacePost

__int64 __fastcall CmpPrepareDiscardReplacePost(void *a1, __int64 a2, __int64 a3){
  unsigned int v3; 
  int v6; 
  _QWORD *v7; 
  _QWORD *v8; 
  UINT64 v10; 

  v3 = 0;
  v10 = 0i64;
  CmpReferenceKeyControlBlock(a1);
  v6 = CmpCloneToUnbackedKcb((INT64)a1, &v10);
  if( v6 >= 0 )
  {
    v7 = *(_QWORD **)(a3 + 24);
    v8 = (_QWORD *)(v10 + 120);
    if( *v7 != a3 + 16 )
      __fastfail(3u);
    *v8 = a3 + 16;
    v8[1] = v7;
    *v7 = v8;
    *(_QWORD *)(a3 + 24) = v8;
    v6 = 0;
  }
  *(_DWORD *)(a3 + 8) = v6;
  LOBYTE(v3) = v6 < 0;
  return v3;
}

Referenced by:

CmpPrepareDiscardAndReplaceKcbAndUnbackedHigherLayers