FsRtlpHeatRegisterVolume

NTSTATUS __stdcall FsRtlpHeatRegisterVolume(_GUID *VolumeGuid, _GUID *ActivityId, UINT64 *VolumeIdHash){
  __int64 *i; 
  __int64 v7; 
  VOID **PoolWithTag; 
  NTSTATUS v9; 
  VOID **v10; 
  __int64 v11; 
  _GUID v12; 
  VOID ***v13; 
  INT64 v14; 
  INT64 v15; 
  INT64 v17; 
  UINT64 v18; 
  UINT64 v19; 

  ExAcquireResourceExclusiveLite((UINT64)&unk_140C47450, 1, (INT64)VolumeIdHash);
  for( i = (__int64 *)qword_140C47440; i != &qword_140C47440; i = (__int64 *)*i )
  {
    v7 = *(__int64 *)((char *)i + 20) - *(_QWORD *)&VolumeGuid->Data1;
    if( !v7 )
      v7 = *(__int64 *)((char *)i + 28) - *(_QWORD *)VolumeGuid->Data4;
    if( !v7 )
    {
      ++*((_DWORD *)i + 4);
      *(_DWORD *)VolumeIdHash = *((_DWORD *)i + 9);
      goto LABEL_20;
    }
  }
  PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x28ui64, 1752453958i64);
  if( !PoolWithTag )
  {
    v9 = -1073741670;
    goto LABEL_21;
  }
  v10 = (VOID **)qword_140C47440;
  v11 = VolumeGuid->Data1 ^ (VolumeGuid->Data3 | (VolumeGuid->Data2 << 16)) ^ (VolumeGuid->Data4[7] | (VolumeGuid->Data4[2] << 24));
  while( v10 != &qword_140C47440 )
  {
    if( *((_DWORD *)v10 + 9) == (_DWORD)v11 )
    {
      v11 = (unsigned int)(v11 + 1);
      if( !(_DWORD)v11 )
        v10 = (VOID **)&qword_140C47440;
    }
    else if( *((_DWORD *)v10 + 9) > (unsigned int)v11 )
    {
      break;
    }
    v10 = (VOID **)*v10;
  }
  *(_OWORD *)PoolWithTag = 0i64;
  *((_OWORD *)PoolWithTag + 1) = 0i64;
  PoolWithTag[4] = 0i64;
  v12 = *VolumeGuid;
  *((_DWORD *)PoolWithTag + 9) = v11;
  *((_DWORD *)PoolWithTag + 4) = 1;
  *(_GUID *)((char *)PoolWithTag + 20) = v12;
  v13 = (VOID ***)v10[1];
  if( *v13 != v10 )
    __fastfail(3u);
  PoolWithTag[1] = v13;
  *PoolWithTag = v10;
  *v13 = PoolWithTag;
  v10[1] = PoolWithTag;
  *(_DWORD *)VolumeIdHash = v11;
  McGenEventRegister_EtwRegister(
    (_LPCGUID)MS_StorageTiering_Provider,
    v11,
    MS_StorageTiering_Provider_Context,
    MS_StorageTiering_Provider_Context);
LABEL_20:
  v9 = 0;
LABEL_21:
  ExReleaseResourceLite(&unk_140C47450);
  if( v9 >= 0 )
  {
    if( (byte_140C474B8 & 1) != 0 )
    {
      LODWORD(v17) = *(_DWORD *)VolumeIdHash;
      McTemplateK0jq_EtwWriteTransfer(v15, v14, ActivityId, (INT64)VolumeGuid, v17);
    }
    LODWORD(v19) = 0;
    LODWORD(v18) = 0;
    ZwUpdateWnfStateData(&WNF_FSRL_TIERED_VOLUME_DETECTED, 0i64, 0i64, 0i64, 0i64, v18, v19);
  }
  return v9;
}

Referenced by:

FsRtlHeatInit