ViFlushZeroMapRegisterBaseWcbs
INT64 __fastcall ViFlushZeroMapRegisterBaseWcbs(INT64 a1){
UINT64 v1;
UINT64 *v2;
unsigned __int8 v4;
unsigned __int64 v5;
_QWORD *v6;
_QWORD *v7;
INT64 result;
__int64 v9;
_QWORD *v10;
v2 = (UINT64 *)(a1 + 144);
KeAcquireSpinLockRaiseToDpc((UINT64 *)(a1 + 144), v1);
v5 = v4;
v6 = *(_QWORD **)(a1 + 128);
while( v6 != (_QWORD *)(a1 + 128) )
{
v7 = v6 - 9;
v6 = (_QWORD *)*v6;
if( !v7[11] && !v7[12] && *((_DWORD *)v7 + 13) == 3 )
{
v9 = v7[9];
v10 = (_QWORD *)v7[10];
if( *(_QWORD **)(v9 + 8) != v7 + 9 || (_QWORD *)*v10 != v7 + 9 )
__fastfail(3u);
*v10 = v9;
*(_QWORD *)(v9 + 8) = v10;
SUBTRACT_MAP_REGISTERS(a1, *((unsigned int *)v7 + 12));
ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)ViHalWaitBlockLookaside, v7);
break;
}
}
KxReleaseSpinLock(v2);
result = (unsigned int)KiIrqlFlags;
__writecr8(v5);
return result;
}Referenced by:
VfPutDmaAdapter