CmpPrepareDiscardReplacePost
INT64 __fastcall CmpPrepareDiscardReplacePost(UINT64 a1, INT64 a2, INT64 a3){
unsigned int v3;
NTSTATUS v6;
$B9512D9805578D643BEBB89DC99AC162 **v7;
$B9512D9805578D643BEBB89DC99AC162 *v8;
_CM_KEY_CONTROL_BLOCK *CloneKcb;
v3 = 0;
CloneKcb = 0i64;
CmpReferenceKeyControlBlock(a1);
v6 = CmpCloneToUnbackedKcb((_CM_KEY_CONTROL_BLOCK *)a1, &CloneKcb);
if( v6 >= 0 )
{
v7 = *($B9512D9805578D643BEBB89DC99AC162 ***)(a3 + 24);
v8 = &CloneKcb->120;
if( *v7 != ($B9512D9805578D643BEBB89DC99AC162 *)(a3 + 16) )
__fastfail(3u);
v8->KeyBodyListHead.Flink = (_LIST_ENTRY *)(a3 + 16);
v8->KeyBodyListHead.Blink = (_LIST_ENTRY *)v7;
*v7 = v8;
*(_QWORD *)(a3 + 24) = v8;
v6 = 0;
}
*(_DWORD *)(a3 + 8) = v6;
LOBYTE(v3) = v6 < 0;
return v3;
}Referenced by:
CmpPrepareDiscardAndReplaceKcbAndUnbackedHigherLayers