EtwpCovSampImageNotify

VOID __stdcall EtwpCovSampImageNotify(PUNICODE_STRING FullImageName, HANDLE ProcessId, PIMAGE_INFO ImageInfo){
  PVOID *v3; 
  ULONG *p_ImageSectionNumber; 
  _ETHREAD *CurrentThread; 
  INT64 v9; 
  INT64 v10; 
  INT64 v11; 
  __int64 v12; 
  v3 = 0i64;
  v11 = 0i64;
  v12 = 0i64;
  if( (ImageInfo->Properties & 0x400) == 0 )
    return;
  p_ImageSectionNumber = &ImageInfo[-1].ImageSectionNumber;
  if( (int)EtwpCovSampAcquireSamplerRundown(&v12) >= 0 )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    v3 = (PVOID *)(qword_140C196B8 + 16);
    v9 = *((_QWORD *)CurrentThread + 23);
    if( ProcessId )
    {
      if( ProcessId == *(HANDLE *)(v9 + 1088)
        && (int)EtwpCovSampProcessEnsureContext(*((_QWORD *)CurrentThread + 23)) >= 0 )
      {
        v10 = *(_QWORD *)(v9 + 2544);
        goto LABEL_9;
      }
    }
    else if( (ImageInfo->Properties & 0x100) != 0 )
    {
      v10 = qword_140C196B8 + 752;
LABEL_9:
      if( (int)EtwpCovSampContextGetModule((INT64)v3, v9, v10, FullImageName, (INT64)p_ImageSectionNumber, &v11) >= 0 )
        EtwpCovSampProcessAddModule(v10, v3, v11, (UINT64)ImageInfo->ImageBase);
    }
  }
  if( v11 )
    EtwpCovSampModuleDereference((INT64)v3, v11);
  if( v12 )
  {
    ExReleaseRundownProtection((PEX_RUNDOWN_REF)&stru_140C196C0);
    KeLeaveCriticalRegion();
  }
}

Referenced by:

EtwpCovSampEnumerateDriver
EtwpCovSampEnumerateProcess