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