HalpDmaGetNextWcb
INT64 *__stdcall HalpDmaGetNextWcb(INT64 a1){
UINT64 *v1;
unsigned __int8 v3;
INT64 *v4;
INT64 *v5;
unsigned __int64 v6;
INT64 v7;
v1 = (UINT64 *)(a1 + 176);
v3 = KeAcquireSpinLockRaiseToDpc((UINT64 *)(a1 + 176));
*(_QWORD *)(a1 + 352) = 0i64;
v4 = (INT64 *)(a1 + 184);
v5 = *(INT64 **)(a1 + 184);
v6 = v3;
if( v5 == (INT64 *)(a1 + 184) )
{
v5 = 0i64;
*(_BYTE *)(a1 + 216) = 0;
}
else
{
v7 = *v5;
if( (INT64 *)v5[1] != v4 || *(INT64 **)(v7 + 8) != v5 )
__fastfail(3u);
*v4 = v7;
*(_QWORD *)(v7 + 8) = v4;
}
KxReleaseSpinLock(v1);
__writecr8(v6);
return v5;
}Referenced by:
IoFreeAdapterChannelV3