VfIrpDatabaseEntryInsertAndLock

_LIST_ENTRY *__stdcall VfIrpDatabaseEntryInsertAndLock(UINT64 a1, INT64 a2, INT64 a3){
  _QWORD *v4; 
  __int64 v6; 
  _QWORD *v7; 
  __int64 v8; 
  _LIST_ENTRY *result; 
  INT64 OldIrql; 

  OldIrql = a2;
  v4 = (_QWORD *)(a3 + 32);
  *(_QWORD *)a3 = a1;
  LOBYTE(OldIrql) = 0;
  *(_QWORD *)(a3 + 8) = 0i64;
  *(_QWORD *)(a3 + 24) = 1i64;
  *(_DWORD *)(a3 + 20) = 1;
  *(_QWORD *)(a3 + 48) = ViPacketNotificationCallback;
  *(_QWORD *)(a3 + 40) = a3 + 32;
  *(_QWORD *)(a3 + 32) = a3 + 32;
  ViIrpDatabaseAcquireLockExclusive((UINT8 *)&OldIrql);
  v6 = 16i64 * (unsigned __int8)(-125 * (a1 >> 12));
  v7 = (_QWORD *)(v6 + ViIrpDatabase);
  v8 = *(_QWORD *)(v6 + ViIrpDatabase);
  if( *(_QWORD *)(v8 + 8) != v6 + ViIrpDatabase )
    __fastfail(3u);
  v4[1] = v7;
  *v4 = v8;
  *(_QWORD *)(v8 + 8) = v4;
  *v7 = v4;
  VfUtilAddressRangeAdd((_VF_ADDRESS_RANGE *)(v6 + ViIrpDatabaseAddressRanges), (UINT8 *)a1, 0xD0ui64);
  ViIrpDatabaseReleaseLockExclusive(OldIrql);
  result = (_LIST_ENTRY *)VfIrpDatabaseEntryFindAndLock((_IRP *)a1);
  _InterlockedDecrement((volatile signed __int32 *)(a3 + 20));
  --*(_DWORD *)(a3 + 24);
  return result;
}

Referenced by:

VfPacketCreateAndLock