CmpAbortRollbackPacket
INT64 __fastcall CmpAbortRollbackPacket(INT64 a1){
int v2;
unsigned int v3;
INT64 v5;
int v6;
v2 = 0;
v3 = 0;
if( *(_DWORD *)a1 )
{
while( 1 )
{
v5 = *(_QWORD *)(*(_QWORD *)(a1 + 8) + 8i64 * v3);
if( v5 )
break;
LABEL_16:
if( ++v3 >= *(_DWORD *)a1 )
return(unsigned int)v2;
}
if( (v5 & 1) != 0 )
{
v6 = CmpRollbackLightWeightTransaction(v5 & 0xFFFFFFFFFFFFFFFEui64);
if( v6 < 0 )
goto LABEL_10;
CmpTransDereferenceTransaction(v5);
}
else
{
v6 = TmRollbackEnlistment(*(PKENLISTMENT *)(*(_QWORD *)(a1 + 8) + 8i64 * v3), 0i64);
if( v6 < 0 )
goto LABEL_10;
HalPutDmaAdapter((PADAPTER_OBJECT)v5);
}
*(_QWORD *)(*(_QWORD *)(a1 + 8) + 8i64 * v3) = 0i64;
LABEL_10:
if( ((v6 + 1072103405) & 0xFFFFFFFC) == 0 && v6 != -1072103404 )
v6 = 0;
if( v2 >= 0 && v6 < 0 )
v2 = v6;
goto LABEL_16;
}
return(unsigned int)v2;
}Referenced by:
CmRenameKey
CmRestoreKey
CmSetKeyFlags
CmSetLastWriteTimeKey
CmpPerformUnloadKey
CmpSaveBootControlSet
CmpTryToRundownHive