PfSnCleanupPrefetchSectionInfo

void __fastcall PfSnCleanupPrefetchSectionInfo(__int64 a1, __int64 a2, char a3){
  int v5; 
  _ADAPTER_OBJECT *v6; 
  _ADAPTER_OBJECT *v7; 

  if( a3 )
  {
    v5 = *(_DWORD *)(a1 + 48);
    if( (v5 & 1) != 0 )
    {
      HalPutDmaAdapter(*(PADAPTER_OBJECT *)(a1 + 32));
      *(_QWORD *)(a1 + 32) = 0i64;
      *(_DWORD *)(a1 + 48) &= ~1u;
      v5 = *(_DWORD *)(a1 + 48);
    }
    if( (v5 & 2) != 0 )
    {
      HalPutDmaAdapter(*(PADAPTER_OBJECT *)(a1 + 40));
      *(_QWORD *)(a1 + 40) = 0i64;
      *(_DWORD *)(a1 + 48) &= ~2u;
      v5 = *(_DWORD *)(a1 + 48);
    }
    if( (v5 & 4) != 0 )
    {
      PfpOpenHandleClose((_QWORD *)a1, *(_QWORD *)(a2 + 8));
      *(_QWORD *)a1 = 0i64;
      *(_QWORD *)(a1 + 8) = 0i64;
      *(_QWORD *)(a1 + 16) = 0i64;
      *(_QWORD *)(a1 + 24) = 0x200000000i64;
      *(_DWORD *)(a1 + 48) &= ~4u;
    }
  }
  else
  {
    v6 = *(_ADAPTER_OBJECT **)(a1 + 32);
    if( v6 )
      HalPutDmaAdapter(v6);
    v7 = *(_ADAPTER_OBJECT **)(a1 + 40);
    if( v7 )
      HalPutDmaAdapter(v7);
    if( (*(_QWORD *)(a1 + 24) & 0x400000000i64) != 0 )
      PfpOpenHandleClose((_QWORD *)a1, *(_QWORD *)(a2 + 8));
  }
}

Referenced by:

PfSnPopulateReadList
PfSnSectionInfoCleanupWorkItem