# mqqm.dll 22621.963 vs 22621.1555 (CVE-2023-21554, manual pair)

# TOC

* [Visual Chart Diff](#visual-chart-diff)
* [Metadata](#metadata)
	* [Ghidra Diff Engine](#ghidra-diff-engine)
		* [Command Line](#command-line)
	* [Binary Metadata Diff](#binary-metadata-diff)
	* [Program Options](#program-options)
	* [Diff Stats](#diff-stats)
	* [Strings](#strings)
* [Deleted](#deleted)
* [Added](#added)
	* [wil::details::`dynamic_initializer_for_'g_enabledStateManager''](#wildetailsdynamic_initializer_for_g_enabledstatemanager)
	* [wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingSRUMFeatureReporting''](#wildetailsdynamic_initializer_for_g_header_init_initializestagingsrumfeaturereporting)
	* [<lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>](#lambda_aa194dc0bf891154933407eb98fb868alambda_invoker_cdecl)
	* [ChekPtrIsAlligned<wchar_t>](#chekptrisallignedwchar_t)
	* [GetSafeDataAndAdvancePointer<wchar_t>](#getsafedataandadvancepointerwchar_t)
	* [wil::details::unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>](#wildetailsunique_storagewildetailsresource_policyfeature_state_change_subscription_____ptr64void___cdeclfeature_state_change_subscription_____ptr64void___cdecl_wildetailswilapi_unsubscribefeaturestatechangenotificationstruct_feature_state_change_subscription_____ptr64wistdintegral_constantunsigned___int640feature_state_change_subscription_____ptr64feature_state_change_subscription_____ptr640stdnullptr_t_unique_storagewildetailsresource_policyfeature_state_change_subscription_____ptr64void___cdeclfeature_state_change_subscription_____ptr64void___cdecl_wildetailswilapi_unsubscribefeaturestatechangenotificationstruct_feature_state_change_subscription_____ptr64wistdintegral_constantunsigned___int640feature_state_change_subscription_____ptr64feature_state_change_subscription_____ptr640stdnullptr_t_)
	* [wil::details::EnabledStateManager::~EnabledStateManager](#wildetailsenabledstatemanagerenabledstatemanager)
	* [wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges](#wildetailsenabledstatemanagerensuresubscribedtofeatureconfigurationchanges)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_oobrwfixesgetcachedfeatureenabledstate)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCurrentFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_oobrwfixesgetcurrentfeatureenabledstate)
	* [GetNextSectionPtrSafe](#getnextsectionptrsafe)
	* [CEodHeader::GetNextSectionSafe](#ceodheadergetnextsectionsafe)
	* [CSoapSection::GetNextSectionSafe](#csoapsectiongetnextsectionsafe)
	* [wil::details::IsFeatureConfigured](#wildetailsisfeatureconfigured)
	* [wil::details::EnabledStateManager::OnStateChange](#wildetailsenabledstatemanageronstatechange)
	* [wil::details::EnabledStateManager::OnTimer](#wildetailsenabledstatemanagerontimer)
	* [wil::details::EnabledStateManager::QueueBackgroundUsageReporting](#wildetailsenabledstatemanagerqueuebackgroundusagereporting)
	* [wil::details::EnabledStateManager::RecordCachedUsageUnderLock](#wildetailsenabledstatemanagerrecordcachedusageunderlock)
	* [wil::details::RecordFeatureUsageCallback](#wildetailsrecordfeatureusagecallback)
	* [wil::details::RecordSRUMFeatureUsage](#wildetailsrecordsrumfeatureusage)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_oobrwfixesreportusage)
	* [wil::details::ReportUsageToService](#wildetailsreportusagetoservice)
	* [wil::details::ReportUsageToServiceDirect](#wildetailsreportusagetoservicedirect)
	* [SafeAddPointersEx](#safeaddpointersex)
	* [SafeAlignUp4PtrEx](#safealignup4ptrex)
	* [StringCopyWorkerA](#stringcopyworkera)
	* [StringVPrintfWorkerW](#stringvprintfworkerw)
	* [wil::details::WilStringValidateDestA](#wildetailswilstringvalidatedesta)
	* [StringValidateDestW](#stringvalidatedestw)
	* [wil::details::SubscribeFeatureStateCacheToConfigurationChanges](#wildetailssubscribefeaturestatecachetoconfigurationchanges)
	* [wil::details::WilApiImpl_GetFeatureEnabledState](#wildetailswilapiimpl_getfeatureenabledstate)
	* [wil::details::WilApi_GetFeatureEnabledState](#wildetailswilapi_getfeatureenabledstate)
	* [wil::details::WilApi_RecordFeatureUsage](#wildetailswilapi_recordfeatureusage)
	* [wil::details::WilApi_SubscribeFeatureStateChangeNotification](#wildetailswilapi_subscribefeaturestatechangenotification)
	* [wil::details::WilApi_UnsubscribeFeatureStateChangeNotification](#wildetailswilapi_unsubscribefeaturestatechangenotification)
	* [wil::details::WilStringVPrintfWorkerA](#wildetailswilstringvprintfworkera)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_oobrwfixes__private_isenabled)
	* [wil_RtlStagingConfig_QueryFeatureState](#wil_rtlstagingconfig_queryfeaturestate)
	* [wil_StagingConfig_LogStagedFeatureUsage](#wil_stagingconfig_logstagedfeatureusage)
	* [wil_details_FeatureReporting_IncrementOpportunityInCache](#wil_details_featurereporting_incrementopportunityincache)
	* [wil_details_FeatureReporting_IncrementUsageInCache](#wil_details_featurereporting_incrementusageincache)
	* [wil_details_FeatureReporting_RecordUsageInCache](#wil_details_featurereporting_recordusageincache)
	* [wil_details_MapReportingKind](#wil_details_mapreportingkind)
	* [wil_details_RecordCachedUsage](#wil_details_recordcachedusage)
	* [GetSafeDataAndAdvancePointerEx<unsigned_short>](#getsafedataandadvancepointerexunsigned_short)
	* [CheckNullTerminator](#checknullterminator)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_nulltermfixgetcachedfeatureenabledstate)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_oobrfixgetcachedfeatureenabledstate)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_qmvariantsgetcachedfeatureenabledstate)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCurrentFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_nulltermfixgetcurrentfeatureenabledstate)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCurrentFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_oobrfixgetcurrentfeatureenabledstate)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCurrentFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_qmvariantsgetcurrentfeatureenabledstate)
	* [CPropertyHeader::GetNextSectionSafe](#cpropertyheadergetnextsectionsafe)
	* [CSecurityHeader::GetNextSectionSafe](#csecurityheadergetnextsectionsafe)
	* [CUserHeader::GetNextSectionSafe](#cuserheadergetnextsectionsafe)
	* [CUserHeader::QueueSizeSafe](#cuserheaderqueuesizesafe)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_nulltermfixreportusage)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_oobrfixreportusage)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_qmvariantsreportusage)
	* [CMqfSignatureHeader::SectionIsValid](#cmqfsignatureheadersectionisvalid)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_nulltermfix__private_isenabled)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_oobrfix__private_isenabled)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled](#wildetailsfeatureimpl__wilfeaturetraits_feature_msrc76146_msmq_qmvariants__private_isenabled)
	* [wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''](#wildetailsdynamic_atexit_destructor_for_g_enabledstatemanager)
* [Modified](#modified)
	* [CUserHeader::SectionIsValid](#cuserheadersectionisvalid)
	* [CDebugSection::SectionIsValid](#cdebugsectionsectionisvalid)
	* [CBaseMqfHeader::SectionIsValid](#cbasemqfheadersectionisvalid)
	* [CXactHeader::SectionIsValid](#cxactheadersectionisvalid)
	* [wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''](#wildetailsdynamic_initializer_for_g_header_init_initializestagingheaderinternalapi)
	* [wil::details::StringCchPrintfA](#wildetailsstringcchprintfa)
	* [CPropertyHeader::SectionIsValid](#cpropertyheadersectionisvalid)
	* [CQmPacket::CQmPacket](#cqmpacketcqmpacket)
	* [CMsgDeadletterHeader::SectionIsValid](#cmsgdeadletterheadersectionisvalid)
	* [CUserHeader::QueueSize](#cuserheaderqueuesize)
	* [CMsgGroupHeader::SectionIsValid](#cmsggroupheadersectionisvalid)
	* [StringCchVPrintfW](#stringcchvprintfw)
	* [StringCchCopyA](#stringcchcopya)
	* [CSecurityHeader::SectionIsValid](#csecurityheadersectionisvalid)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [KERNEL32.DLL::AcquireSRWLockExclusive](#kernel32dllacquiresrwlockexclusive)
	* [newstr](#newstr)
	* [wil_details_GetNtDllModuleHandle](#wil_details_getntdllmodulehandle)
	* [ReceiveResponseFailed](#receiveresponsefailed)
	* [__GSHandlerCheck](#__gshandlercheck)
	* [atexit](#atexit)
	* [reset](#reset)
	* [GetSafeDataAndAdvancePointer<unsigned_long>](#getsafedataandadvancepointerunsigned_long)
	* [ProcessShutdownInProgress](#processshutdowninprogress)
	* [KERNEL32.DLL::CreateThreadpoolTimer](#kernel32dllcreatethreadpooltimer)
	* [Complete_ReadHandShakeResponse](#complete_readhandshakeresponse)
	* [reset](#reset)
	* [push_back](#push_back)
	* [EnsureCoalescedTimer_SetTimer](#ensurecoalescedtimer_settimer)
	* [wil_details_GetKernelBaseModuleHandle](#wil_details_getkernelbasemodulehandle)
	* [KERNEL32.DLL::GetProcAddress](#kernel32dllgetprocaddress)
	* [~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>](#unique_storagewildetailsresource_policy_rtl_srwlock___ptr64void___cdecl_rtl_srwlock___ptr64void___cdecl_releasesrwlockexclusivestruct__rtl_srwlock___ptr64wistdintegral_constantunsigned___int641_rtl_srwlock___ptr64_rtl_srwlock___ptr640stdnullptr_t_)
	* [~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>](#unique_storagewildetailsresource_policy_tp_timer___ptr64void___cdecl_tp_timer___ptr64public_static_void___cdecl_wildetailsdestroythreadpooltimerstruct_wildetailssystemthreadpoolmethods0destroystruct__tp_timer___ptr64wistdintegral_constantunsigned___int640_tp_timer___ptr64_tp_timer___ptr640stdnullptr_t_)
	* [__GSHandlerCheck_EH4](#__gshandlercheck_eh4)
	* [__security_check_cookie](#__security_check_cookie)

# Visual Chart Diff



```mermaid

flowchart LR

CUserHeaderSectionIsValid-2-old<--Match 9%-->CUserHeaderSectionIsValid-2-new
CDebugSectionSectionIsValid-2-old<--Match 72%-->CDebugSectionSectionIsValid-2-new
CBaseMqfHeaderSectionIsValid-2-old<--Match 68%-->CBaseMqfHeaderSectionIsValid-2-new
CXactHeaderSectionIsValid-2-old<--Match 67%-->CXactHeaderSectionIsValid-2-new
wildetailsdynamic_initializer_for_g_header_init_InitializeStagingHeaderInternalApi-0-old<--Match 78%-->wildetailsdynamic_initializer_for_g_header_init_InitializeStagingHeaderInternalApi-0-new
wildetailsStringCchPrintfA-3-old<--Match 31%-->wildetailsStringCchPrintfA-3-new
CPropertyHeaderSectionIsValid-2-old<--Match 57%-->CPropertyHeaderSectionIsValid-2-new
CQmPacketCQmPacket-7-old<--Match 32%-->CQmPacketCQmPacket-7-new
CMsgDeadletterHeaderSectionIsValid-2-old<--Match 69%-->CMsgDeadletterHeaderSectionIsValid-2-new
CUserHeaderQueueSize-4-old<--Match 89%-->CUserHeaderQueueSize-4-new
CMsgGroupHeaderSectionIsValid-2-old<--Match 69%-->CMsgGroupHeaderSectionIsValid-2-new
StringCchVPrintfW-4-old<--Match 33%-->StringCchVPrintfW-4-new
StringCchCopyA-3-old<--Match 26%-->StringCchCopyA-3-new
CSecurityHeaderSectionIsValid-2-old<--Match 60%-->CSecurityHeaderSectionIsValid-2-new

subgraph mqqm-10.0.22621.1555.dll
    CUserHeaderSectionIsValid-2-new
CDebugSectionSectionIsValid-2-new
CBaseMqfHeaderSectionIsValid-2-new
CXactHeaderSectionIsValid-2-new
wildetailsdynamic_initializer_for_g_header_init_InitializeStagingHeaderInternalApi-0-new
wildetailsStringCchPrintfA-3-new
CPropertyHeaderSectionIsValid-2-new
CQmPacketCQmPacket-7-new
CMsgDeadletterHeaderSectionIsValid-2-new
CUserHeaderQueueSize-4-new
CMsgGroupHeaderSectionIsValid-2-new
StringCchVPrintfW-4-new
StringCchCopyA-3-new
CSecurityHeaderSectionIsValid-2-new
    subgraph Added
direction LR
wil-details-dynamic_initializer_for_g_enabledStateManager
    wil-details-dynamic_initializer_for_g_header_init_InitializeStagingSRUMFeatureReporting
    lambda_aa194dc0bf891154933407eb98fb868a-lambda_invoker_cdecl
    ChekPtrIsAllignedwchar_t
    GetSafeDataAndAdvancePointerwchar_t
    wil-details-unique_storagewil-details-resource_policyFEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr64void___cdeclFEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr64void___cdecl_wil-details-WilApi_UnsubscribeFeatureStateChangeNotificationstruct_FEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr64wistd-integral_constantunsigned___int640FEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr64FEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr640std-nullptr_t_-unique_storagewil-details-resource_policyFEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr64void___cdeclFEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr64void___cdecl_wil-details-WilApi_UnsubscribeFeatureStateChangeNotificationstruct_FEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr64wistd-integral_constantunsigned___int640FEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr64FEATURE_STATE_CHANGE_SUBSCRIPTION_____ptr640std-nullptr_t_
    wil-details-EnabledStateManager-EnabledStateManager
    wil-details-EnabledStateManager-EnsureSubscribedToFeatureConfigurationChanges
    wil-details-FeatureImpl__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes-GetCachedFeatureEnabledState
    wil-details-FeatureImpl__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes-GetCurrentFeatureEnabledState
    GetNextSectionPtrSafe
    CEodHeader-GetNextSectionSafe
    CSoapSection-GetNextSectionSafe
    wil-details-IsFeatureConfigured
    wil-details-EnabledStateManager-OnStateChange
    wil-details-EnabledStateManager-OnTimer
    wil-details-EnabledStateManager-QueueBackgroundUsageReporting
    wil-details-EnabledStateManager-RecordCachedUsageUnderLock
    wil-details-RecordFeatureUsageCallback
    wil-details-RecordSRUMFeatureUsage
    wil-details-FeatureImpl__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes-ReportUsage
    wil-details-ReportUsageToService
    wil-details-ReportUsageToServiceDirect
    SafeAddPointersEx
    SafeAlignUp4PtrEx
    StringCopyWorkerA
    StringVPrintfWorkerW
    39_more_added_funcs_omitted
end
end

subgraph mqqm-10.0.22621.963.dll
    CUserHeaderSectionIsValid-2-old
CDebugSectionSectionIsValid-2-old
CBaseMqfHeaderSectionIsValid-2-old
CXactHeaderSectionIsValid-2-old
wildetailsdynamic_initializer_for_g_header_init_InitializeStagingHeaderInternalApi-0-old
wildetailsStringCchPrintfA-3-old
CPropertyHeaderSectionIsValid-2-old
CQmPacketCQmPacket-7-old
CMsgDeadletterHeaderSectionIsValid-2-old
CUserHeaderQueueSize-4-old
CMsgGroupHeaderSectionIsValid-2-old
StringCchVPrintfW-4-old
StringCchCopyA-3-old
CSecurityHeaderSectionIsValid-2-old
    
end

```


```mermaid
pie showData
    title Function Matches - 99.4965%
"unmatched_funcs_len" : 64
"matched_funcs_len" : 12646
```



```mermaid
pie showData
    title Matched Function Similarity - 99.7074%
"matched_funcs_with_code_changes_len" : 14
"matched_funcs_with_non_code_changes_len" : 23
"matched_funcs_no_changes_len" : 12609
```

# Metadata

## Ghidra Diff Engine

### Command Line

#### Captured Command Line


```
ghidriff --project-location C:\tools\hugo\patchpalooza\ghidriff\CVE-2023-21554\ghidra_projects --project-name CVE-2023-21554 --symbols-path C:\tools\hugo\patchpalooza\ghidriff\CVE-2023-21554\symbols --gzfs-path gzfs --threaded --log-level INFO --file-log-level INFO --log-path ghidriff.log --min-func-len 10 --gdt [] --bsim --max-ram-percent 60.0 --max-section-funcs 200 --md-title mqqm.dll 22621.963 vs 22621.1555 (CVE-2023-21554, manual pair) mqqm-10.0.22621.963.dll mqqm-10.0.22621.1555.dll
```


#### Verbose Args


<details>

```
--old ['C:\\tools\\hugo\\patchpalooza\\ghidriff\\CVE-2023-21554\\mqqm-10.0.22621.963.dll'] --new [['C:\\tools\\hugo\\patchpalooza\\ghidriff\\CVE-2023-21554\\mqqm-10.0.22621.1555.dll']] --engine VersionTrackingDiff --output-path C:\tools\hugo\patchpalooza\ghidriff\CVE-2023-21554\output --summary False --project-location C:\tools\hugo\patchpalooza\ghidriff\CVE-2023-21554\ghidra_projects --project-name CVE-2023-21554 --symbols-path C:\tools\hugo\patchpalooza\ghidriff\CVE-2023-21554\symbols --gzfs-path gzfs --base-address None --program-options None --threaded True --force-analysis False --force-diff False --no-symbols False --log-level INFO --file-log-level INFO --log-path ghidriff.log --va False --min-func-len 10 --use-calling-counts False --gdt [] --bsim True --bsim-full False --max-ram-percent 60.0 --print-flags False --jvm-args None --side-by-side False --max-section-funcs 200 --md-title mqqm.dll 22621.963 vs 22621.1555 (CVE-2023-21554, manual pair)
```


</details>

#### Download Original PEs


```
wget https://msdl.microsoft.com/download/symbols/MQQM.DLL/60F7BC3F153000/MQQM.DLL -O mqqm.dll.x64.10.0.22621.963
wget https://msdl.microsoft.com/download/symbols/MQQM.DLL/20BF8C52155000/MQQM.DLL -O mqqm.dll.x64.10.0.22621.1555
```


## Binary Metadata Diff


```diff
--- mqqm-10.0.22621.963.dll Meta
+++ mqqm-10.0.22621.1555.dll Meta
@@ -1,44 +1,44 @@
-Program Name: mqqm-10.0.22621.963.dll
+Program Name: mqqm-10.0.22621.1555.dll
 Language ID: x86:LE:64:default (4.7)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 180000000
 Maximum Address: ff0000184f
-# of Bytes: 1392848
+# of Bytes: 1401328
 # of Memory Blocks: 8
-# of Instructions: 226339
-# of Defined Data: 15321
-# of Functions: 6322
-# of Symbols: 47692
-# of Data Types: 2854
+# of Instructions: 228842
+# of Defined Data: 15424
+# of Functions: 6388
+# of Symbols: 48216
+# of Data Types: 2899
 # of Data Type Categories: 197
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.1.2
-Date Created: Tue Jul 28 09:42:17 SGT 2026
+Date Created: Tue Jul 28 09:42:27 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /C:/tools/hugo/patchpalooza/ghidriff/CVE-2023-21554/mqqm-10.0.22621.963.dll
-Executable MD5: e965be5447a24c0f7de1a53bce798ae4
-Executable SHA256: c74fe5306c545a445fa7170a443e10ba5754ef8fa59240667940360057872c00
-FSRL: file:///C:/tools/hugo/patchpalooza/ghidriff/CVE-2023-21554/mqqm-10.0.22621.963.dll?MD5=e965be5447a24c0f7de1a53bce798ae4
+Executable Location: /C:/tools/hugo/patchpalooza/ghidriff/CVE-2023-21554/mqqm-10.0.22621.1555.dll
+Executable MD5: 42b3728c5cbbd5cbdbef974cbe1fa710
+Executable SHA256: 67ec905a4e4bbf5d834b8dff579caf762aa575d564c7ea10802c4d65f5576f4b
+FSRL: file:///C:/tools/hugo/patchpalooza/ghidriff/CVE-2023-21554/mqqm-10.0.22621.1555.dll?MD5=42b3728c5cbbd5cbdbef974cbe1fa710
 PDB Age: 1
 PDB File: mqqm.pdb
-PDB GUID: 05b2a80f-6210-d539-9f35-c4c0175e7cc7
+PDB GUID: 619f2a18-6c32-cf1b-8327-7f48a7ed40bf
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: Message Queuing Manager
-PE Property[FileVersion]: 10.0.22621.963 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.22621.1555 (WinBuild.160101.0800)
 PE Property[InternalName]: MQQM.DLL
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: MQQM.DLL
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.22621.963
+PE Property[ProductVersion]: 10.0.22621.1555
 PE Property[Translation]: 4b00409
 Preferred Root Namespace Category: 
 RTTI Found: true
 Relocatable: true
 SectionAlignment: 4096
 Should Ask To Analyze: false

```


## Program Options


<details>
<summary>Ghidra mqqm-10.0.22621.963.dll Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra mqqm-10.0.22621.963.dll Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra mqqm-10.0.22621.963.dll Analyzers Options</summary>


|Analyzers Option|Value|
| :---: | :---: |
|ASCII Strings|true|
|ASCII Strings.Create Strings Containing Existing Strings|true|
|ASCII Strings.Create Strings Containing References|true|
|ASCII Strings.Force Model Reload|false|
|ASCII Strings.Minimum String Length|LEN_5|
|ASCII Strings.Model File|StringModel.sng|
|ASCII Strings.Require Null Termination for String|true|
|ASCII Strings.Search Only in Accessible Memory Blocks|true|
|ASCII Strings.String Start Alignment|ALIGN_1|
|ASCII Strings.String end alignment|4|
|Aggressive Instruction Finder|false|
|Aggressive Instruction Finder.Create Analysis Bookmarks|true|
|Apply Data Archives|true|
|Apply Data Archives.Archive Chooser|[Auto-Detect]|
|Apply Data Archives.Create Analysis Bookmarks|true|
|Apply Data Archives.GDT User File Archive Path|None|
|Apply Data Archives.User Project Archive Path|None|
|Call Convention ID|true|
|Call Convention ID.Analysis Decompiler Timeout (sec)|60|
|Call-Fixup Installer|true|
|Condense Filler Bytes|false|
|Condense Filler Bytes.Filler Value|Auto|
|Condense Filler Bytes.Minimum number of sequential bytes|1|
|Create Address Tables|true|
|Create Address Tables.Allow Offcut References|false|
|Create Address Tables.Auto Label Table|false|
|Create Address Tables.Create Analysis Bookmarks|true|
|Create Address Tables.Maxmimum Pointer Distance|16777215|
|Create Address Tables.Minimum Pointer Address|4132|
|Create Address Tables.Minimum Table Size|2|
|Create Address Tables.Pointer Alignment|1|
|Create Address Tables.Relocation Table Guide|true|
|Create Address Tables.Table Alignment|4|
|Data Reference|true|
|Data Reference.Address Table Alignment|1|
|Data Reference.Address Table Minimum Size|2|
|Data Reference.Align End of Strings|false|
|Data Reference.Ascii String References|true|
|Data Reference.Create Address Tables|true|
|Data Reference.Minimum String Length|5|
|Data Reference.References to Pointers|true|
|Data Reference.Relocation Table Guide|true|
|Data Reference.Respect Execute Flag|true|
|Data Reference.Subroutine References|true|
|Data Reference.Switch Table References|false|
|Data Reference.Unicode String References|true|
|Decompiler Parameter ID|true|
|Decompiler Parameter ID.Analysis Clear Level|ANALYSIS|
|Decompiler Parameter ID.Analysis Decompiler Timeout (sec)|60|
|Decompiler Parameter ID.Commit Data Types|true|
|Decompiler Parameter ID.Commit Void Return Values|false|
|Decompiler Parameter ID.Prototype Evaluation|__fastcall|
|Decompiler Switch Analysis|true|
|Decompiler Switch Analysis.Analysis Decompiler Timeout (sec)|60|
|Demangler Microsoft|true|
|Demangler Microsoft.msdApplyOptions|{
	interpretation: FUNCTION_IF_EXISTS,
	applyCallingConvention: true,
	applySignature: true,
	demangleOnlyKnownPatterns: true,
	doDisassembly: true
}|
|Demangler Microsoft.msdOutputOptions|ghidra.app.util.demangler.microsoft.options.MsdOutputOption@9e5b|
|Disassemble Entry Points|true|
|Disassemble Entry Points.Respect Execute Flag|true|
|Embedded Media|true|
|Embedded Media.Create Analysis Bookmarks|true|
|External Entry References|true|
|Function ID|true|
|Function ID.Always Apply FID Labels|false|
|Function ID.Create Analysis Bookmarks|true|
|Function ID.Instruction Count Threshold|14.6|
|Function ID.Multiple Match Threshold|30.0|
|Function Start Search|true|
|Function Start Search.Bookmark Functions|false|
|Function Start Search.Search Data Blocks|false|
|Non-Returning Functions - Discovered|true|
|Non-Returning Functions - Discovered.Create Analysis Bookmarks|true|
|Non-Returning Functions - Discovered.Function Non-return Threshold|3|
|Non-Returning Functions - Discovered.Repair Flow Damage|true|
|Non-Returning Functions - Known|true|
|Non-Returning Functions - Known.Create Analysis Bookmarks|true|
|PDB MSDIA|false|
|PDB MSDIA.Search untrusted symbol servers|false|
|PDB Universal|true|
|PDB Universal.Import Source Line Info|true|
|PDB Universal.Search untrusted symbol servers|false|
|Reference|true|
|Reference.Address Table Alignment|1|
|Reference.Address Table Minimum Size|2|
|Reference.Align End of Strings|false|
|Reference.Ascii String References|true|
|Reference.Create Address Tables|true|
|Reference.Minimum String Length|5|
|Reference.References to Pointers|true|
|Reference.Relocation Table Guide|true|
|Reference.Respect Execute Flag|true|
|Reference.Subroutine References|true|
|Reference.Switch Table References|false|
|Reference.Unicode String References|true|
|Scalar Operand References|true|
|Scalar Operand References.Relocation Table Guide|true|
|Shared Return Calls|true|
|Shared Return Calls.Allow Conditional Jumps|false|
|Shared Return Calls.Assume Contiguous Functions Only|true|
|Stack|true|
|Stack.Create Local Variables|true|
|Stack.Create Param Variables|false|
|Stack.Max Threads|2|
|Subroutine References|true|
|Subroutine References.Create Thunks Early|true|
|Variadic Function Signature Override|false|
|Variadic Function Signature Override.Create Analysis Bookmarks|false|
|Windows x86 PE Exception Handling|true|
|Windows x86 PE RTTI Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer.Starting Address of the TEB||
|Windows x86 Thread Environment Block (TEB) Analyzer.Windows OS Version|Windows 7|
|WindowsPE x86 Propagate External Parameters|false|
|WindowsResourceReference|true|
|WindowsResourceReference.Create Analysis Bookmarks|true|
|x86 Constant Reference Analyzer|true|
|x86 Constant Reference Analyzer.Create Data from pointer|false|
|x86 Constant Reference Analyzer.Function parameter/return Pointer analysis|true|
|x86 Constant Reference Analyzer.Max Threads|2|
|x86 Constant Reference Analyzer.Min absolute reference|4|
|x86 Constant Reference Analyzer.Require pointer param data type|false|
|x86 Constant Reference Analyzer.Speculative reference max|256|
|x86 Constant Reference Analyzer.Speculative reference min|1024|
|x86 Constant Reference Analyzer.Stored Value Pointer analysis|true|
|x86 Constant Reference Analyzer.Trust values read from writable memory|true|

</details>


<details>
<summary>Ghidra mqqm-10.0.22621.1555.dll Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra mqqm-10.0.22621.1555.dll Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra mqqm-10.0.22621.1555.dll Analyzers Options</summary>


|Analyzers Option|Value|
| :---: | :---: |
|ASCII Strings|true|
|ASCII Strings.Create Strings Containing Existing Strings|true|
|ASCII Strings.Create Strings Containing References|true|
|ASCII Strings.Force Model Reload|false|
|ASCII Strings.Minimum String Length|LEN_5|
|ASCII Strings.Model File|StringModel.sng|
|ASCII Strings.Require Null Termination for String|true|
|ASCII Strings.Search Only in Accessible Memory Blocks|true|
|ASCII Strings.String Start Alignment|ALIGN_1|
|ASCII Strings.String end alignment|4|
|Aggressive Instruction Finder|false|
|Aggressive Instruction Finder.Create Analysis Bookmarks|true|
|Apply Data Archives|true|
|Apply Data Archives.Archive Chooser|[Auto-Detect]|
|Apply Data Archives.Create Analysis Bookmarks|true|
|Apply Data Archives.GDT User File Archive Path|None|
|Apply Data Archives.User Project Archive Path|None|
|Call Convention ID|true|
|Call Convention ID.Analysis Decompiler Timeout (sec)|60|
|Call-Fixup Installer|true|
|Condense Filler Bytes|false|
|Condense Filler Bytes.Filler Value|Auto|
|Condense Filler Bytes.Minimum number of sequential bytes|1|
|Create Address Tables|true|
|Create Address Tables.Allow Offcut References|false|
|Create Address Tables.Auto Label Table|false|
|Create Address Tables.Create Analysis Bookmarks|true|
|Create Address Tables.Maxmimum Pointer Distance|16777215|
|Create Address Tables.Minimum Pointer Address|4132|
|Create Address Tables.Minimum Table Size|2|
|Create Address Tables.Pointer Alignment|1|
|Create Address Tables.Relocation Table Guide|true|
|Create Address Tables.Table Alignment|4|
|Data Reference|true|
|Data Reference.Address Table Alignment|1|
|Data Reference.Address Table Minimum Size|2|
|Data Reference.Align End of Strings|false|
|Data Reference.Ascii String References|true|
|Data Reference.Create Address Tables|true|
|Data Reference.Minimum String Length|5|
|Data Reference.References to Pointers|true|
|Data Reference.Relocation Table Guide|true|
|Data Reference.Respect Execute Flag|true|
|Data Reference.Subroutine References|true|
|Data Reference.Switch Table References|false|
|Data Reference.Unicode String References|true|
|Decompiler Parameter ID|true|
|Decompiler Parameter ID.Analysis Clear Level|ANALYSIS|
|Decompiler Parameter ID.Analysis Decompiler Timeout (sec)|60|
|Decompiler Parameter ID.Commit Data Types|true|
|Decompiler Parameter ID.Commit Void Return Values|false|
|Decompiler Parameter ID.Prototype Evaluation|__fastcall|
|Decompiler Switch Analysis|true|
|Decompiler Switch Analysis.Analysis Decompiler Timeout (sec)|60|
|Demangler Microsoft|true|
|Demangler Microsoft.msdApplyOptions|{
	interpretation: FUNCTION_IF_EXISTS,
	applyCallingConvention: true,
	applySignature: true,
	demangleOnlyKnownPatterns: true,
	doDisassembly: true
}|
|Demangler Microsoft.msdOutputOptions|ghidra.app.util.demangler.microsoft.options.MsdOutputOption@9e5b|
|Disassemble Entry Points|true|
|Disassemble Entry Points.Respect Execute Flag|true|
|Embedded Media|true|
|Embedded Media.Create Analysis Bookmarks|true|
|External Entry References|true|
|Function ID|true|
|Function ID.Always Apply FID Labels|false|
|Function ID.Create Analysis Bookmarks|true|
|Function ID.Instruction Count Threshold|14.6|
|Function ID.Multiple Match Threshold|30.0|
|Function Start Search|true|
|Function Start Search.Bookmark Functions|false|
|Function Start Search.Search Data Blocks|false|
|Non-Returning Functions - Discovered|true|
|Non-Returning Functions - Discovered.Create Analysis Bookmarks|true|
|Non-Returning Functions - Discovered.Function Non-return Threshold|3|
|Non-Returning Functions - Discovered.Repair Flow Damage|true|
|Non-Returning Functions - Known|true|
|Non-Returning Functions - Known.Create Analysis Bookmarks|true|
|PDB MSDIA|false|
|PDB MSDIA.Search untrusted symbol servers|false|
|PDB Universal|true|
|PDB Universal.Import Source Line Info|true|
|PDB Universal.Search untrusted symbol servers|false|
|Reference|true|
|Reference.Address Table Alignment|1|
|Reference.Address Table Minimum Size|2|
|Reference.Align End of Strings|false|
|Reference.Ascii String References|true|
|Reference.Create Address Tables|true|
|Reference.Minimum String Length|5|
|Reference.References to Pointers|true|
|Reference.Relocation Table Guide|true|
|Reference.Respect Execute Flag|true|
|Reference.Subroutine References|true|
|Reference.Switch Table References|false|
|Reference.Unicode String References|true|
|Scalar Operand References|true|
|Scalar Operand References.Relocation Table Guide|true|
|Shared Return Calls|true|
|Shared Return Calls.Allow Conditional Jumps|false|
|Shared Return Calls.Assume Contiguous Functions Only|true|
|Stack|true|
|Stack.Create Local Variables|true|
|Stack.Create Param Variables|false|
|Stack.Max Threads|2|
|Subroutine References|true|
|Subroutine References.Create Thunks Early|true|
|Variadic Function Signature Override|false|
|Variadic Function Signature Override.Create Analysis Bookmarks|false|
|Windows x86 PE Exception Handling|true|
|Windows x86 PE RTTI Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer.Starting Address of the TEB||
|Windows x86 Thread Environment Block (TEB) Analyzer.Windows OS Version|Windows 7|
|WindowsPE x86 Propagate External Parameters|false|
|WindowsResourceReference|true|
|WindowsResourceReference.Create Analysis Bookmarks|true|
|x86 Constant Reference Analyzer|true|
|x86 Constant Reference Analyzer.Create Data from pointer|false|
|x86 Constant Reference Analyzer.Function parameter/return Pointer analysis|true|
|x86 Constant Reference Analyzer.Max Threads|2|
|x86 Constant Reference Analyzer.Min absolute reference|4|
|x86 Constant Reference Analyzer.Require pointer param data type|false|
|x86 Constant Reference Analyzer.Speculative reference max|256|
|x86 Constant Reference Analyzer.Speculative reference min|1024|
|x86 Constant Reference Analyzer.Stored Value Pointer analysis|true|
|x86 Constant Reference Analyzer.Trust values read from writable memory|true|

</details>

## Diff Stats



|Stat|Value|
| :---: | :---: |
|added_funcs_len|64|
|deleted_funcs_len|0|
|modified_funcs_len|37|
|added_symbols_len|18|
|deleted_symbols_len|4|
|diff_time|27.28219985961914|
|deleted_strings_len|1|
|added_strings_len|14|
|match_types|Counter({'SymbolsHash': 6266, 'ExternalsName': 507, 'StructuralGraphHash': 39, 'ExactInstructionsFunctionHasher': 16, 'ExactBytesFunctionHasher': 9, 'SigCallingCalledHasher': 7})|
|items_to_process|123|
|diff_types|Counter({'address': 37, 'refcount': 23, 'calling': 18, 'length': 15, 'code': 14, 'called': 13})|
|unmatched_funcs_len|64|
|total_funcs_len|12710|
|matched_funcs_len|12646|
|matched_funcs_with_code_changes_len|14|
|matched_funcs_with_non_code_changes_len|23|
|matched_funcs_no_changes_len|12609|
|match_func_similarity_percent|99.7074%|
|func_match_overall_percent|99.4965%|
|first_matches|Counter({'SymbolsHash': 6266, 'StructuralGraphHash': 39, 'ExactInstructionsFunctionHasher': 16, 'ExactBytesFunctionHasher': 9, 'SigCallingCalledHasher': 7})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 6266
"ExternalsName" : 507
"ExactBytesFunctionHasher" : 9
"ExactInstructionsFunctionHasher" : 16
"SigCallingCalledHasher" : 7
"StructuralGraphHash" : 39
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 6266
"ExactBytesFunctionHasher" : 9
"ExactInstructionsFunctionHasher" : 16
"SigCallingCalledHasher" : 7
"StructuralGraphHash" : 39
```



```mermaid
pie showData
    title Diff Stats
"added_funcs_len" : 64
"deleted_funcs_len" : 0
"modified_funcs_len" : 37
```



```mermaid
pie showData
    title Symbols
"added_symbols_len" : 18
"deleted_symbols_len" : 4
```

## Strings



```mermaid
pie showData
    title Strings
"deleted_strings_len" : 1
"added_strings_len" : 14
```

### Strings Diff


```diff
--- deleted strings
+++ added strings
@@ -1 +1,14 @@
-s_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef
+s_ChekNullTerminator:_Null_termin
+s_ChekPtrIsAllignedEx:_pointer_is
+s_Content-Type:
+s_DataLength_caused_overflow
+s_GetSafeDataAndAdvancePointerEx:
+s_LogStagedFeatureUsage
+s_Next_section_is_behind_packet
+s_RtlQueryFeatureConfiguration
+s_SafeAddPointersEx_cause_overflo
+s_SafeAlignUp4PtrEx_cause_overflo
+s_buffer_is_too_small_to_add_disk
+s_length_addition_caused_overflow
+s_size_addition_caused_overflow
+u_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef

```


### String References

#### Old



|String|Ref Count|Ref Func|
| :---: | :---: | :---: |
|s_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef_18010d4e0|5|Octet2Base64|

#### New



|String|Ref Count|Ref Func|
| :---: | :---: | :---: |
|s_ChekPtrIsAllignedEx:_pointer_is|1|GetSafeDataAndAdvancePointerEx<unsigned_short>|
|s_ChekNullTerminator:_Null_termin|1|CheckNullTerminator|
|s_length_addition_caused_overflow|1|QueueSizeSafe|
|s_GetSafeDataAndAdvancePointerEx:|1|GetSafeDataAndAdvancePointerEx<unsigned_short>|
|s_SafeAlignUp4PtrEx_cause_overflo|1|SafeAlignUp4PtrEx|
|s_LogStagedFeatureUsage|1|wil_StagingConfig_LogStagedFeatureUsage|
|u_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef_18010f7f0|5|Convert3OctetTo4Base64|
|s_Next_section_is_behind_packet_e|1|GetNextSectionPtrSafe|
|s_buffer_is_too_small_to_add_disk|1|CQmPacket|
|s_DataLength_caused_overflow|2|CQmPacket,GetNextSectionSafe|
|s_size_addition_caused_overflow|1|QueueSizeSafe|
|s_RtlQueryFeatureConfiguration|1|wil_RtlStagingConfig_QueryFeatureState|
|s_Content-Type:_180110bf0|1|ParseHttpMime|
|s_SafeAddPointersEx_cause_overflo|1|SafeAddPointersEx|

# Deleted

# Added

## wil::details::`dynamic_initializer_for_'g_enabledStateManager''

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|`dynamic_initializer_for_'g_enabledStateManager''|
|fullname|wil::details::`dynamic_initializer_for_'g_enabledStateManager''|
|refcount|2|
|length|12|
|called|atexit|
|calling||
|paramcount|0|
|address|1800022f0|
|sig|undefined __fastcall `dynamic_initializer_for_'g_enabledStateManager''(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil::details::`dynamic_initializer_for_'g_enabledStateManager''
+++ wil::details::`dynamic_initializer_for_'g_enabledStateManager''
@@ -0,0 +1,8 @@
+
+void wil::details::_dynamic_initializer_for__g_enabledStateManager__(void)
+
+{
+  atexit(_dynamic_atexit_destructor_for__g_enabledStateManager__);
+  return;
+}
+

```


## wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingSRUMFeatureReporting''

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|`dynamic_initializer_for_'g_header_init_InitializeStagingSRUMFeatureReporting''|
|fullname|wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingSRUMFeatureReporting''|
|refcount|2|
|length|15|
|called||
|calling||
|paramcount|0|
|address|180002440|
|sig|undefined __fastcall `dynamic_initializer_for_'g_header_init_InitializeStagingSRUMFeatureReporting''(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingSRUMFeatureReporting''
+++ wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingSRUMFeatureReporting''
@@ -0,0 +1,9 @@
+
+void wil::details::_dynamic_initializer_for__g_header_init_InitializeStagingSRUMFeatureReporting__
+               (void)
+
+{
+  g_wil_details_RecordSRUMFeatureUsage = RecordSRUMFeatureUsage;
+  return;
+}
+

```


## <lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|<lambda_invoker_cdecl>|
|fullname|<lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>|
|refcount|2|
|length|12|
|called|wil::details::EnabledStateManager::OnTimer|
|calling||
|paramcount|1|
|address|180037410|
|sig|undefined __cdecl <lambda_invoker_cdecl>(void * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- <lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>
+++ <lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>
@@ -0,0 +1,12 @@
+
+/* private: static __cdecl <lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>(void *
+   __ptr64) */
+
+void __cdecl <lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>(void *param_1)
+
+{
+  wil::details::EnabledStateManager::OnTimer
+            ((EnabledStateManager *)&wil::details::g_enabledStateManager);
+  return;
+}
+

```


## ChekPtrIsAlligned<wchar_t>

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|ChekPtrIsAlligned<wchar_t>|
|fullname|ChekPtrIsAlligned<wchar_t>|
|refcount|3|
|length|26|
|called|ReportAndThrow|
|calling|CheckNullTerminator<br>GetSafeDataAndAdvancePointer<wchar_t>|
|paramcount|1|
|address|1800374c0|
|sig|void __cdecl ChekPtrIsAlligned<wchar_t>(uchar * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- ChekPtrIsAlligned<wchar_t>
+++ ChekPtrIsAlligned<wchar_t>
@@ -0,0 +1,13 @@
+
+/* void __cdecl ChekPtrIsAlligned<wchar_t>(unsigned char const * __ptr64) */
+
+void __cdecl ChekPtrIsAlligned<wchar_t>(uchar *param_1)
+
+{
+  if (((ulonglong)param_1 & 1) != 0) {
+                    /* WARNING: Subroutine does not return */
+    ReportAndThrow("ChekPtrIsAlligned: pointer is not alligned for the given poindted type");
+  }
+  return;
+}
+

```


## GetSafeDataAndAdvancePointer<wchar_t>

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetSafeDataAndAdvancePointer<wchar_t>|
|fullname|GetSafeDataAndAdvancePointer<wchar_t>|
|refcount|3|
|length|81|
|called|ChekPtrIsAlligned<wchar_t><br>ReportAndThrow|
|calling|CUserHeader::QueueSize<br>CUserHeader::QueueSizeSafe|
|paramcount|3|
|address|180037574|
|sig|uchar * __cdecl GetSafeDataAndAdvancePointer<wchar_t>(uchar * param_1, uchar * param_2, wchar_t * param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- GetSafeDataAndAdvancePointer<wchar_t>
+++ GetSafeDataAndAdvancePointer<wchar_t>
@@ -0,0 +1,17 @@
+
+/* unsigned char * __ptr64 __cdecl GetSafeDataAndAdvancePointer<wchar_t>(unsigned char const *
+   __ptr64,unsigned char const * __ptr64,wchar_t * __ptr64) */
+
+uchar * __cdecl
+GetSafeDataAndAdvancePointer<wchar_t>(uchar *param_1,uchar *param_2,wchar_t *param_3)
+
+{
+  ChekPtrIsAlligned<wchar_t>(param_1);
+  if ((param_2 != (uchar *)0x0) && (param_2 + -2 < param_1)) {
+                    /* WARNING: Subroutine does not return */
+    ReportAndThrow("GetSafeDataAndAdvancePointer: too small buffer to read from");
+  }
+  *param_3 = *(wchar_t *)param_1;
+  return param_1 + 2;
+}
+

```


## wil::details::unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>|
|fullname|wil::details::unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>|
|refcount|3|
|length|23|
|called|wil::details::WilApi_UnsubscribeFeatureStateChangeNotification|
|calling|wil::details::EnabledStateManager::~EnabledStateManager|
|paramcount|1|
|address|180039044|
|sig|void __thiscall ~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>(unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+++ wil::details::unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
@@ -0,0 +1,30 @@
+
+/* protected: __cdecl wil::details::unique_storage<struct wil::details::resource_policy<struct
+   FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64,void (__cdecl*)(struct
+   FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64),&void __cdecl
+   wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct
+   FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64),struct wistd::integral_constant<unsigned
+   __int64,0>,struct FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64,struct
+   FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64,0,std::nullptr_t> >::~unique_storage<struct
+   wil::details::resource_policy<struct FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64,void
+   (__cdecl*)(struct FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64),&void __cdecl
+   wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct
+   FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64),struct wistd::integral_constant<unsigned
+   __int64,0>,struct FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64,struct
+   FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64,0,std::nullptr_t> >(void) __ptr64 */
+
+void __thiscall
+wil::details::
+unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+::
+~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+          (unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+           *this)
+
+{
+  if (*(FEATURE_STATE_CHANGE_SUBSCRIPTION__ **)this != (FEATURE_STATE_CHANGE_SUBSCRIPTION__ *)0x0) {
+    WilApi_UnsubscribeFeatureStateChangeNotification(*(FEATURE_STATE_CHANGE_SUBSCRIPTION__ **)this);
+  }
+  return;
+}
+

```


## wil::details::EnabledStateManager::~EnabledStateManager

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|~EnabledStateManager|
|fullname|wil::details::EnabledStateManager::~EnabledStateManager|
|refcount|2|
|length|97|
|called|wil::details::EnabledStateManager::RecordCachedUsageUnderLock<br>wil::details::unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_><br>wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_><br>wistd::unique_ptr<void,wil::process_heap_deleter>::reset|
|calling|wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''|
|paramcount|1|
|address|1800391c8|
|sig|void __thiscall ~EnabledStateManager(EnabledStateManager * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::~EnabledStateManager
+++ wil::details::EnabledStateManager::~EnabledStateManager
@@ -0,0 +1,34 @@
+
+/* public: __cdecl wil::details::EnabledStateManager::~EnabledStateManager(void) __ptr64 */
+
+void __thiscall wil::details::EnabledStateManager::~EnabledStateManager(EnabledStateManager *this)
+
+{
+  *this = (EnabledStateManager)0x0;
+  unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>
+  ::reset((unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>
+           *)(this + 0x10),(_TP_TIMER *)0x0);
+  *this = (EnabledStateManager)0x0;
+  RecordCachedUsageUnderLock(this);
+  wistd::unique_ptr<void,wil::process_heap_deleter>::reset
+            ((unique_ptr<void,wil::process_heap_deleter> *)(this + 0x68),(void *)0x0);
+  wistd::unique_ptr<void,wil::process_heap_deleter>::reset
+            ((unique_ptr<void,wil::process_heap_deleter> *)(this + 0x48),(void *)0x0);
+  unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+  ::
+  ~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+            ((unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+              *)(this + 0x28));
+  unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+  ::
+  ~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+            ((unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>
+              *)(this + 0x20));
+  unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>
+  ::
+  ~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>
+            ((unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>
+              *)(this + 0x10));
+  return;
+}
+

```


## wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|EnsureSubscribedToFeatureConfigurationChanges|
|fullname|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges|
|refcount|6|
|length|147|
|called|KERNEL32.DLL::AcquireSRWLockExclusive<br>wil::details::WilApi_SubscribeFeatureStateChangeNotification<br>wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState<br>wil::details::IsFeatureConfigured|
|paramcount|1|
|address|18003a17c|
|sig|uint __thiscall EnsureSubscribedToFeatureConfigurationChanges(EnabledStateManager * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
+++ wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
@@ -0,0 +1,50 @@
+
+/* public: unsigned int __cdecl
+   wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges(void) __ptr64 */
+
+uint __thiscall
+wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
+          (EnabledStateManager *this)
+
+{
+  EnabledStateManager *SRWLock;
+  EnabledStateManager *pEVar1;
+  uint uVar2;
+  EnabledStateManager *local_res8;
+  
+  uVar2 = *(uint *)(this + 0x1c);
+  if ((*(uint *)(this + 0x1c) == 0) && (uVar2 = 0, *this != (EnabledStateManager)0x0)) {
+    SRWLock = this + 8;
+    AcquireSRWLockExclusive((PSRWLOCK)SRWLock);
+    pEVar1 = this + 0x20;
+    local_res8 = SRWLock;
+    if (*(FEATURE_STATE_CHANGE_SUBSCRIPTION__ **)pEVar1 ==
+        (FEATURE_STATE_CHANGE_SUBSCRIPTION__ *)0x0) {
+      *(FEATURE_STATE_CHANGE_SUBSCRIPTION__ **)pEVar1 = (FEATURE_STATE_CHANGE_SUBSCRIPTION__ *)0x0;
+      WilApi_SubscribeFeatureStateChangeNotification
+                ((FEATURE_STATE_CHANGE_SUBSCRIPTION__ **)pEVar1,
+                 <lambda_fee8cea507d2413a58be13acfb66740a>::<lambda_invoker_cdecl>,this);
+      uVar2 = 0;
+      if (*(FEATURE_STATE_CHANGE_SUBSCRIPTION__ **)pEVar1 !=
+          (FEATURE_STATE_CHANGE_SUBSCRIPTION__ *)0x0) {
+        *(undefined4 *)(this + 0x1c) = 1;
+        unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+        ::
+        ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+                  ((unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+                    *)&local_res8);
+        return 1;
+      }
+    }
+    else {
+      uVar2 = *(uint *)(this + 0x1c);
+    }
+    unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+    ::
+    ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+              ((unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+                *)&local_res8);
+  }
+  return uVar2;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetCachedFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState|
|refcount|3|
|length|193|
|called|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCurrentFeatureEnabledState<br>wil::details::SubscribeFeatureStateCacheToConfigurationChanges|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled|
|paramcount|1|
|address|18003a5c4|
|sig|wil_details_FeatureStateCache __thiscall GetCachedFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState
@@ -0,0 +1,63 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState(void) __ptr64
+    */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+GetCachedFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes> *this)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  shutdown_aware_object<wil::details::EnabledStateManager> *this_00;
+  uint uVar4;
+  uint *in_RDX;
+  bool bVar5;
+  int local_res8;
+  uint local_res10 [2];
+  
+  uVar2 = *(uint *)this;
+  *in_RDX = uVar2;
+  if (((byte)uVar2 & 3) != 3) {
+    this_00 = &g_enabledStateManager;
+    uVar1 = EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
+                      ((EnabledStateManager *)&g_enabledStateManager);
+    GetCurrentFeatureEnabledState
+              ((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes> *)this_00,
+               (int *)local_res10);
+    uVar2 = *in_RDX;
+    do {
+      uVar4 = uVar2;
+      *in_RDX = uVar4;
+      uVar3 = uVar4;
+      if ((local_res8 != 0) && ((uVar4 & 1) == 0)) {
+        uVar3 = (uVar4 ^ local_res10[0]) & 0x278 ^ uVar4 | 1;
+        *in_RDX = uVar3;
+      }
+      if ((uVar4 & 2) == 0) {
+        uVar3 = uVar3 ^ (uVar3 ^ local_res10[0]) & 0x100 | 2;
+        *in_RDX = uVar3;
+      }
+      LOCK();
+      uVar2 = *(uint *)this;
+      bVar5 = uVar4 == uVar2;
+      if (bVar5) {
+        *(uint *)this = uVar3;
+        uVar2 = uVar4;
+      }
+      UNLOCK();
+    } while (!bVar5);
+    if ((uVar4 & 2) == 0) {
+      SubscribeFeatureStateCacheToConfigurationChanges
+                ((wil_details_FeatureStateCache *)this,3,uVar1);
+    }
+    if ((*in_RDX & 1) == 0) {
+      *in_RDX = *in_RDX ^ (*in_RDX ^ local_res10[0]) & 0x278;
+    }
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCurrentFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetCurrentFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCurrentFeatureEnabledState|
|refcount|2|
|length|198|
|called|wil::details::WilApi_GetFeatureEnabledState|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState|
|paramcount|2|
|address|18003a854|
|sig|wil_details_FeatureStateCache __thiscall GetCurrentFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes> * this, int * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCurrentFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCurrentFeatureEnabledState
@@ -0,0 +1,36 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCurrentFeatureEnabledState(int *
+   __ptr64) __ptr64 */
+
+int * __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+GetCurrentFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes> *this,int *param_1)
+
+{
+  FEATURE_ENABLED_STATE FVar1;
+  int *in_R8;
+  uint uVar2;
+  uint uVar3;
+  
+  FVar1 = WilApi_GetFeatureEnabledState(0x295e7da,(FEATURE_CHANGE_TIME)param_1,in_R8);
+  uVar3 = 0;
+  param_1[0] = 0;
+  param_1[1] = 0;
+  uVar2 = (FVar1 & 3) << 5 ^
+          (-(uint)((FVar1 & 0x80) != 0) & 0x100 | -(uint)((FVar1 & 0x40) != 0) & 0x200);
+  *param_1 = uVar2;
+  if ((FVar1 & 0xffffff3f) == 0) {
+    uVar2 = uVar2 | 0x10;
+  }
+  else {
+    if ((FVar1 & 0xffffff3f) == 2) {
+      uVar3 = 0x10;
+    }
+    uVar2 = uVar3 | uVar2;
+  }
+  *param_1 = uVar2 >> 1 & 8 ^ uVar2;
+  return param_1;
+}
+

```


## GetNextSectionPtrSafe

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetNextSectionPtrSafe|
|fullname|GetNextSectionPtrSafe|
|refcount|12|
|length|152|
|called|ReportAndThrow<br>SafeAddPointersEx<br>SafeAlignUp4PtrEx|
|calling|CDebugSection::SectionIsValid<br>CEodHeader::GetNextSectionSafe<br>CPropertyHeader::GetNextSectionSafe<br>CQmPacket::CQmPacket<br>CSecurityHeader::GetNextSectionSafe<br>CSoapSection::GetNextSectionSafe<br>CUserHeader::GetNextSectionSafe<br>CXactHeader::SectionIsValid|
|paramcount|4|
|address|18003b290|
|sig|char * __cdecl GetNextSectionPtrSafe(__uint64 param_1, __uint64 param_2, __uint64 param_3, char * param_4)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- GetNextSectionPtrSafe
+++ GetNextSectionPtrSafe
@@ -0,0 +1,33 @@
+
+/* char * __ptr64 __cdecl GetNextSectionPtrSafe(unsigned __int64,unsigned __int64,unsigned
+   __int64,char * __ptr64) */
+
+char * __cdecl
+GetNextSectionPtrSafe(__uint64 param_1,__uint64 param_2,__uint64 param_3,char *param_4)
+
+{
+  __uint64 _Var1;
+  char *pcVar2;
+  bool local_res10 [8];
+  __uint64 local_18;
+  __uint64 local_10;
+  
+  local_res10[0] = false;
+  local_18 = param_2;
+  local_10 = param_3;
+  _Var1 = SafeAddPointersEx(2,&local_18,local_res10);
+  if (((local_res10[0] == false) &&
+      (local_10 = SafeAlignUp4PtrEx(_Var1,local_res10), local_res10[0] == false)) &&
+     (local_18 = param_1, pcVar2 = (char *)SafeAddPointersEx(2,&local_18,local_res10),
+     local_res10[0] == false)) {
+    if ((param_4 != (char *)0x0) && (param_4 < pcVar2)) {
+                    /* WARNING: Subroutine does not return */
+      ReportAndThrow("Next section is behind packet end");
+    }
+  }
+  else {
+    pcVar2 = (char *)0x0;
+  }
+  return pcVar2;
+}
+

```


## CEodHeader::GetNextSectionSafe

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetNextSectionSafe|
|fullname|CEodHeader::GetNextSectionSafe|
|refcount|2|
|length|96|
|called|GetNextSectionPtrSafe<br>SafeAddPointersEx|
|calling|CQmPacket::CQmPacket|
|paramcount|2|
|address|18003b330|
|sig|char * __thiscall GetNextSectionSafe(CEodHeader * this, char * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- CEodHeader::GetNextSectionSafe
+++ CEodHeader::GetNextSectionSafe
@@ -0,0 +1,26 @@
+
+/* public: char * __ptr64 __cdecl CEodHeader::GetNextSectionSafe(char * __ptr64 const)const __ptr64
+    */
+
+char * __thiscall CEodHeader::GetNextSectionSafe(CEodHeader *this,char *param_1)
+
+{
+  __uint64 _Var1;
+  char *pcVar2;
+  bool local_res8 [8];
+  ulonglong local_18;
+  ulonglong local_10;
+  
+  local_18 = (ulonglong)*(uint *)(this + 4);
+  local_10 = (ulonglong)*(uint *)(this + 8);
+  local_res8[0] = false;
+  _Var1 = SafeAddPointersEx(2,&local_18,local_res8);
+  if (local_res8[0] == false) {
+    pcVar2 = GetNextSectionPtrSafe((__uint64)this,0xc,_Var1,param_1);
+  }
+  else {
+    pcVar2 = (char *)0x0;
+  }
+  return pcVar2;
+}
+

```


## CSoapSection::GetNextSectionSafe

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetNextSectionSafe|
|fullname|CSoapSection::GetNextSectionSafe|
|refcount|3|
|length|53|
|called|GetNextSectionPtrSafe<br>ReportAndThrow|
|calling|CQmPacket::CQmPacket|
|paramcount|2|
|address|18003b398|
|sig|char * __thiscall GetNextSectionSafe(CSoapSection * this, char * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- CSoapSection::GetNextSectionSafe
+++ CSoapSection::GetNextSectionSafe
@@ -0,0 +1,18 @@
+
+/* public: char * __ptr64 __cdecl CSoapSection::GetNextSectionSafe(char * __ptr64 const)const
+   __ptr64 */
+
+char * __thiscall CSoapSection::GetNextSectionSafe(CSoapSection *this,char *param_1)
+
+{
+  char *pcVar1;
+  
+  if ((ulonglong)*(uint *)(this + 4) * 2 < 0x100000000) {
+    pcVar1 = GetNextSectionPtrSafe
+                       ((__uint64)this,8,(ulonglong)*(uint *)(this + 4) * 2 & 0xffffffff,param_1);
+    return pcVar1;
+  }
+                    /* WARNING: Subroutine does not return */
+  ReportAndThrow("DataLength caused overflow");
+}
+

```


## wil::details::IsFeatureConfigured

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|IsFeatureConfigured|
|fullname|wil::details::IsFeatureConfigured|
|refcount|2|
|length|220|
|called|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::SubscribeFeatureStateCacheToConfigurationChanges<br>wil_RtlStagingConfig_QueryFeatureState|
|calling|wil::details::WilApiImpl_GetFeatureEnabledState|
|paramcount|5|
|address|18003bc30|
|sig|bool __cdecl IsFeatureConfigured(wil_FeatureState * param_1, uint param_2, bool param_3, wil_FeatureStore param_4, int * param_5)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::IsFeatureConfigured
+++ wil::details::IsFeatureConfigured
@@ -0,0 +1,49 @@
+
+/* bool __cdecl wil::details::IsFeatureConfigured(struct wil_FeatureState * __ptr64,unsigned
+   int,bool,enum wil_FeatureStore,int * __ptr64) */
+
+bool __cdecl
+wil::details::IsFeatureConfigured
+          (wil_FeatureState *param_1,uint param_2,bool param_3,wil_FeatureStore param_4,int *param_5
+          )
+
+{
+  uint uVar1;
+  bool bVar2;
+  uint uVar3;
+  int iVar4;
+  wil_details_FeatureStateCache *pwVar5;
+  int local_res20 [2];
+  
+  pwVar5 = &`bool___cdecl_wil::details::IsFeatureConfigured(wil_FeatureState*___ptr64,unsigned_int,bool,wil_FeatureStore,int*___ptr64)'
+            ::__l2::machineStoreProbe;
+  if (param_4 != 0) {
+    pwVar5 = &`bool___cdecl_wil::details::IsFeatureConfigured(wil_FeatureState*___ptr64,unsigned_int,bool,wil_FeatureStore,int*___ptr64)'
+              ::__l2::userStoreProbe;
+  }
+  if (((byte)*(uint *)pwVar5 & 9) == 1) {
+    bVar2 = false;
+  }
+  else if ((*(uint *)pwVar5 & 1) == 0) {
+    uVar3 = EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
+                      ((EnabledStateManager *)&g_enabledStateManager);
+    local_res20[0] = 0;
+    *param_5 = 1;
+    iVar4 = wil_RtlStagingConfig_QueryFeatureState(param_1,param_2,(uint)param_3,local_res20);
+    bVar2 = iVar4 != 0;
+    LOCK();
+    uVar1 = *(uint *)pwVar5;
+    *(uint *)pwVar5 = (-(uint)(local_res20[0] != 0) & 8) + 3;
+    UNLOCK();
+    if ((local_res20[0] == 0) && ((uVar1 & 2) == 0)) {
+      SubscribeFeatureStateCacheToConfigurationChanges(pwVar5,0,uVar3);
+    }
+  }
+  else {
+    *param_5 = 1;
+    iVar4 = wil_RtlStagingConfig_QueryFeatureState(param_1,param_2,(uint)param_3,(int *)0x0);
+    bVar2 = iVar4 != 0;
+  }
+  return bVar2;
+}
+

```


## wil::details::EnabledStateManager::OnStateChange

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|OnStateChange|
|fullname|wil::details::EnabledStateManager::OnStateChange|
|refcount|2|
|length|133|
|called|KERNEL32.DLL::AcquireSRWLockExclusive<br>wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|
|calling||
|paramcount|1|
|address|18003c82c|
|sig|void __thiscall OnStateChange(EnabledStateManager * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::OnStateChange
+++ wil::details::EnabledStateManager::OnStateChange
@@ -0,0 +1,35 @@
+
+/* public: void __cdecl wil::details::EnabledStateManager::OnStateChange(void) __ptr64 */
+
+void __thiscall wil::details::EnabledStateManager::OnStateChange(EnabledStateManager *this)
+
+{
+  int *piVar1;
+  int iVar2;
+  int *piVar3;
+  EnabledStateManager *local_res8;
+  
+  if (*this != (EnabledStateManager)0x0) {
+    AcquireSRWLockExclusive((PSRWLOCK)(this + 8));
+    piVar1 = *(int **)(this + 0x58);
+    for (piVar3 = *(int **)(this + 0x50); piVar3 != piVar1; piVar3 = piVar3 + 4) {
+      LOCK();
+      **(uint **)(piVar3 + 2) = **(uint **)(piVar3 + 2) & (-(uint)(*piVar3 != 0) & 0x205) - 0x208;
+      UNLOCK();
+    }
+    *(undefined8 *)(this + 0x58) = *(undefined8 *)(this + 0x50);
+    iVar2 = 1;
+    if (*(int *)(this + 0x1c) + 1 != 0) {
+      iVar2 = *(int *)(this + 0x1c) + 1;
+    }
+    *(int *)(this + 0x1c) = iVar2;
+    local_res8 = this + 8;
+    unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+    ::
+    ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+              ((unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+                *)&local_res8);
+  }
+  return;
+}
+

```


## wil::details::EnabledStateManager::OnTimer

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|OnTimer|
|fullname|wil::details::EnabledStateManager::OnTimer|
|refcount|3|
|length|76|
|called|KERNEL32.DLL::AcquireSRWLockExclusive<br>wil::details::EnabledStateManager::RecordCachedUsageUnderLock<br>wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|
|calling|<lambda_0374aa0a5d1201b2358c6bce99369c58>::<lambda_invoker_cdecl><br><lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>|
|paramcount|1|
|address|18003c8b8|
|sig|void __thiscall OnTimer(EnabledStateManager * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::OnTimer
+++ wil::details::EnabledStateManager::OnTimer
@@ -0,0 +1,22 @@
+
+/* public: void __cdecl wil::details::EnabledStateManager::OnTimer(void) __ptr64 */
+
+void __thiscall wil::details::EnabledStateManager::OnTimer(EnabledStateManager *this)
+
+{
+  EnabledStateManager *local_res8;
+  
+  if (*this != (EnabledStateManager)0x0) {
+    AcquireSRWLockExclusive((PSRWLOCK)(this + 8));
+    local_res8 = this + 8;
+    RecordCachedUsageUnderLock(this);
+    this[0x18] = (EnabledStateManager)0x0;
+    unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+    ::
+    ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+              ((unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+                *)&local_res8);
+  }
+  return;
+}
+

```


## wil::details::EnabledStateManager::QueueBackgroundUsageReporting

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|QueueBackgroundUsageReporting|
|fullname|wil::details::EnabledStateManager::QueueBackgroundUsageReporting|
|refcount|2|
|length|207|
|called|KERNEL32.DLL::AcquireSRWLockExclusive<br>KERNEL32.DLL::CreateThreadpoolTimer<br>wil::ProcessShutdownInProgress<br>wil::details::EnsureCoalescedTimer_SetTimer<br>wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_><br>wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details_abi::heap_buffer::push_back|
|calling|wil::details::RecordFeatureUsageCallback|
|paramcount|3|
|address|18003cb0c|
|sig|void __thiscall QueueBackgroundUsageReporting(EnabledStateManager * this, uint param_1, wil_details_FeatureReportingCache * param_2)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::QueueBackgroundUsageReporting
+++ wil::details::EnabledStateManager::QueueBackgroundUsageReporting
@@ -0,0 +1,49 @@
+
+/* public: void __cdecl wil::details::EnabledStateManager::QueueBackgroundUsageReporting(unsigned
+   int,struct wil_details_FeatureReportingCache * __ptr64) __ptr64 */
+
+void __thiscall
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
+          (EnabledStateManager *this,uint param_1,wil_details_FeatureReportingCache *param_2)
+
+{
+  unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>
+  *this_00;
+  bool bVar1;
+  PTP_TIMER p_Var2;
+  EnabledStateManager *local_res8;
+  uint local_18 [2];
+  wil_details_FeatureReportingCache *local_10;
+  
+  if (*this != (EnabledStateManager)0x0) {
+    bVar1 = ProcessShutdownInProgress();
+    if (!bVar1) {
+      AcquireSRWLockExclusive((PSRWLOCK)(this + 8));
+      local_res8 = this + 8;
+      local_18[0] = param_1;
+      local_10 = param_2;
+      details_abi::heap_buffer::push_back((heap_buffer *)(this + 0x30),local_18,0x10);
+      this_00 = (unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>
+                 *)(this + 0x10);
+      if (this[0x18] == (EnabledStateManager)0x0) {
+        if (*(longlong *)this_00 == 0) {
+          p_Var2 = CreateThreadpoolTimer
+                             (<lambda_0374aa0a5d1201b2358c6bce99369c58>::<lambda_invoker_cdecl>,this
+                              ,(PTP_CALLBACK_ENVIRON)0x0);
+          unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>
+          ::reset(this_00,p_Var2);
+        }
+        EnsureCoalescedTimer_SetTimer
+                  ((unique_any_t<wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>_>
+                    *)this_00,(bool *)(this + 0x18),300000);
+      }
+      unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+      ::
+      ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+                ((unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+                  *)&local_res8);
+    }
+  }
+  return;
+}
+

```


## wil::details::EnabledStateManager::RecordCachedUsageUnderLock

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|RecordCachedUsageUnderLock|
|fullname|wil::details::EnabledStateManager::RecordCachedUsageUnderLock|
|refcount|4|
|length|103|
|called|wil::details::WilApi_RecordFeatureUsage<br>wil_details_RecordCachedUsage|
|calling|wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::~EnabledStateManager<br>wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''|
|paramcount|1|
|address|18003cf0c|
|sig|void __thiscall RecordCachedUsageUnderLock(EnabledStateManager * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::RecordCachedUsageUnderLock
+++ wil::details::EnabledStateManager::RecordCachedUsageUnderLock
@@ -0,0 +1,25 @@
+
+/* private: void __cdecl wil::details::EnabledStateManager::RecordCachedUsageUnderLock(void) __ptr64
+    */
+
+void __thiscall
+wil::details::EnabledStateManager::RecordCachedUsageUnderLock(EnabledStateManager *this)
+
+{
+  uint *puVar1;
+  uint *puVar2;
+  _func_void_uint_uint_uint_char_ptr *in_R8;
+  
+  puVar1 = *(uint **)(this + 0x38);
+  puVar2 = *(uint **)(this + 0x30);
+  if (0xf < (ulonglong)((longlong)puVar1 - (longlong)puVar2)) {
+    for (; puVar2 != puVar1; puVar2 = puVar2 + 4) {
+      wil_details_RecordCachedUsage
+                (*puVar2,*(wil_details_FeatureReportingCache **)(puVar2 + 2),in_R8);
+    }
+    *(undefined8 *)(this + 0x38) = *(undefined8 *)(this + 0x30);
+    WilApi_RecordFeatureUsage(0,0xfe,0,(char *)0x0);
+  }
+  return;
+}
+

```


## wil::details::RecordFeatureUsageCallback

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|RecordFeatureUsageCallback|
|fullname|wil::details::RecordFeatureUsageCallback|
|refcount|2|
|length|227|
|called|KERNEL32.DLL::AcquireSRWLockExclusive<br>_guard_xfg_dispatch_icall_nop<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::WilApi_RecordFeatureUsage<br>wil::details::WilApi_SubscribeFeatureStateChangeNotification<br>wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|
|calling|wil::details::ReportUsageToServiceDirect|
|paramcount|5|
|address|18003d158|
|sig|void __cdecl RecordFeatureUsageCallback(uint param_1, wil_details_ServiceReportingKind param_2, uint param_3, wil_details_FeatureReportingCache * param_4, wil_details_RecordUsageResult * param_5)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::RecordFeatureUsageCallback
+++ wil::details::RecordFeatureUsageCallback
@@ -0,0 +1,46 @@
+
+/* WARNING: Function: _guard_xfg_dispatch_icall_nop replaced with injection: guard_dispatch_icall */
+/* void __cdecl wil::details::RecordFeatureUsageCallback(unsigned int,enum
+   wil_details_ServiceReportingKind,unsigned int,struct wil_details_FeatureReportingCache *
+   __ptr64,struct wil_details_RecordUsageResult * __ptr64) */
+
+void __cdecl
+wil::details::RecordFeatureUsageCallback
+          (uint param_1,wil_details_ServiceReportingKind param_2,uint param_3,
+          wil_details_FeatureReportingCache *param_4,wil_details_RecordUsageResult *param_5)
+
+{
+  wil_details_RecordUsageResult *pwVar1;
+  
+  if ((g_wil_details_RecordSRUMFeatureUsage != (_func_void_uint_uint_uint *)0x0) &&
+     ((param_2 == 0 || (param_2 - 100 < 0x32)))) {
+    (*g_wil_details_RecordSRUMFeatureUsage)(param_1,param_2,1);
+  }
+  pwVar1 = param_5;
+  if (*(int *)param_5 != 0) {
+    EnabledStateManager::QueueBackgroundUsageReporting
+              ((EnabledStateManager *)&g_enabledStateManager,param_1,param_4);
+  }
+  if (*(uint *)(pwVar1 + 4) != 0) {
+    WilApi_RecordFeatureUsage(param_1,*(uint *)(pwVar1 + 8),*(uint *)(pwVar1 + 4),(char *)0x0);
+  }
+  if ((*(int *)(pwVar1 + 0x10) == 0) &&
+     (g_enabledStateManager != (shutdown_aware_object<wil::details::EnabledStateManager>)0x0)) {
+    AcquireSRWLockExclusive((PSRWLOCK)&DAT_180131260);
+    param_5 = (wil_details_RecordUsageResult *)&DAT_180131260;
+    if (DAT_180131280 == 0) {
+      DAT_180131280 = 0;
+      WilApi_SubscribeFeatureStateChangeNotification
+                ((FEATURE_STATE_CHANGE_SUBSCRIPTION__ **)&DAT_180131280,
+                 <lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>,
+                 (void *)0xffffffffffffffff);
+    }
+    unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+    ::
+    ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+              ((unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+                *)&param_5);
+  }
+  return;
+}
+

```


## wil::details::RecordSRUMFeatureUsage

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|RecordSRUMFeatureUsage|
|fullname|wil::details::RecordSRUMFeatureUsage|
|refcount|2|
|length|12|
|called|wil::details::WilApi_RecordFeatureUsage|
|calling||
|paramcount|3|
|address|18003d290|
|sig|void __cdecl RecordSRUMFeatureUsage(uint param_1, uint param_2, uint param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::RecordSRUMFeatureUsage
+++ wil::details::RecordSRUMFeatureUsage
@@ -0,0 +1,10 @@
+
+/* void __cdecl wil::details::RecordSRUMFeatureUsage(unsigned int,unsigned int,unsigned int) */
+
+void __cdecl wil::details::RecordSRUMFeatureUsage(uint param_1,uint param_2,uint param_3)
+
+{
+  WilApi_RecordFeatureUsage(param_1,param_2 | 0x40000000,param_3,(char *)0x0);
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|ReportUsage|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage|
|refcount|2|
|length|117|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState<br>wil::details::ReportUsageToService|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled|
|paramcount|4|
|address|18003d9f4|
|sig|void __thiscall ReportUsage(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes> * this, bool param_1, ReportingKind param_2, __uint64 param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage
@@ -0,0 +1,32 @@
+
+/* public: void __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage(bool,enum
+   wil::ReportingKind,unsigned __int64) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes> *this,bool param_1,
+          ReportingKind param_2,__uint64 param_3)
+
+{
+  ulonglong *puVar1;
+  ulonglong uVar2;
+  undefined4 local_res8;
+  undefined1 local_resc;
+  wil_ReportingKind in_stack_ffffffffffffffd8;
+  __uint64 in_stack_ffffffffffffffe0;
+  
+  uVar2 = (ulonglong)*(uint *)this;
+  if ((*(uint *)this & 2) == 0) {
+    puVar1 = (ulonglong *)GetCachedFeatureEnabledState(this);
+    uVar2 = *puVar1;
+  }
+  local_res8 = 0;
+  local_resc = 2;
+  ReportUsageToService
+            ((wil_details_FeatureReportingCache *)(this + 8),0x295e7da,(uint)uVar2 >> 8 & 1,
+             (uint)(uVar2 >> 9) & 1,(FEATURE_LOGGED_TRAITS *)&local_res8,(uint)param_1,
+             in_stack_ffffffffffffffd8,in_stack_ffffffffffffffe0);
+  return;
+}
+

```


## wil::details::ReportUsageToService

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|ReportUsageToService|
|fullname|wil::details::ReportUsageToService|
|refcount|5|
|length|175|
|called|_guard_xfg_dispatch_icall_nop<br>wil::details::ReportUsageToServiceDirect<br>wil_details_MapReportingKind|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage|
|paramcount|8|
|address|18003da70|
|sig|void __cdecl ReportUsageToService(wil_details_FeatureReportingCache * param_1, uint param_2, int param_3, int param_4, FEATURE_LOGGED_TRAITS * param_5, int param_6, wil_ReportingKind param_7, __uint64 param_8)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::ReportUsageToService
+++ wil::details::ReportUsageToService
@@ -0,0 +1,35 @@
+
+/* WARNING: Function: _guard_xfg_dispatch_icall_nop replaced with injection: guard_dispatch_icall */
+/* void __cdecl wil::details::ReportUsageToService(struct wil_details_FeatureReportingCache *
+   __ptr64,unsigned int,int,int,struct FEATURE_LOGGED_TRAITS const * __ptr64,int,enum
+   wil_ReportingKind,unsigned __int64) */
+
+void __cdecl
+wil::details::ReportUsageToService
+          (wil_details_FeatureReportingCache *param_1,uint param_2,int param_3,int param_4,
+          FEATURE_LOGGED_TRAITS *param_5,int param_6,wil_ReportingKind param_7,__uint64 param_8)
+
+{
+  wil_details_ServiceReportingKind wVar1;
+  int iVar2;
+  uint in_stack_ffffffffffffffd0;
+  undefined1 in_stack_ffffffffffffffd8;
+  undefined7 in_stack_ffffffffffffffd9;
+  
+  param_7 = 3;
+  wVar1 = wil_details_MapReportingKind(3,param_6);
+  iVar2 = ReportUsageToServiceDirect
+                    (param_1,param_2,param_3,param_4,wVar1,in_stack_ffffffffffffffd0,
+                     CONCAT71(in_stack_ffffffffffffffd9,in_stack_ffffffffffffffd8),(uchar)param_5[4]
+                    );
+  if ((iVar2 != 0) &&
+     (g_wil_details_pfnFeatureLoggingHook !=
+      (_func_void_uint_FEATURE_LOGGED_TRAITS_ptr_FEATURE_ERROR_ptr_int_wil_ReportingKind_ptr_wil_VariantReportingKind_ptr_uchar___uint64
+       *)0x0)) {
+    (*g_wil_details_pfnFeatureLoggingHook)
+              (param_2,param_5,(FEATURE_ERROR *)0x0,param_6,&param_7,(wil_VariantReportingKind *)0x0
+               ,'\0',1);
+  }
+  return;
+}
+

```


## wil::details::ReportUsageToServiceDirect

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|ReportUsageToServiceDirect|
|fullname|wil::details::ReportUsageToServiceDirect|
|refcount|2|
|length|216|
|called|_guard_xfg_dispatch_icall_nop<br>wil::details::RecordFeatureUsageCallback<br>wil::details::WilApi_RecordFeatureUsage<br>wil_details_FeatureReporting_RecordUsageInCache|
|calling|wil::details::ReportUsageToService|
|paramcount|8|
|address|18003db28|
|sig|int __cdecl ReportUsageToServiceDirect(wil_details_FeatureReportingCache * param_1, uint param_2, int param_3, int param_4, wil_details_ServiceReportingKind param_5, uint param_6, __uint64 param_7, uchar param_8)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::ReportUsageToServiceDirect
+++ wil::details::ReportUsageToServiceDirect
@@ -0,0 +1,41 @@
+
+/* WARNING: Function: _guard_xfg_dispatch_icall_nop replaced with injection: guard_dispatch_icall */
+/* int __cdecl wil::details::ReportUsageToServiceDirect(struct wil_details_FeatureReportingCache *
+   __ptr64,unsigned int,int,int,enum wil_details_ServiceReportingKind,unsigned int,unsigned
+   __int64,unsigned char) */
+
+int __cdecl
+wil::details::ReportUsageToServiceDirect
+          (wil_details_FeatureReportingCache *param_1,uint param_2,int param_3,int param_4,
+          wil_details_ServiceReportingKind param_5,uint param_6,__uint64 param_7,uchar param_8)
+
+{
+  undefined8 *puVar1;
+  wil_details_ServiceReportingKind wVar2;
+  undefined8 local_38;
+  undefined8 uStack_30;
+  undefined8 local_28;
+  wil_details_FeatureReportingCache local_20 [24];
+  
+  wVar2 = param_5;
+  puVar1 = (undefined8 *)
+           wil_details_FeatureReporting_RecordUsageInCache
+                     (local_20,(wil_details_ServiceReportingKind)param_1,param_5,param_4);
+  local_38 = *puVar1;
+  uStack_30 = puVar1[1];
+  local_28 = puVar1[2];
+  RecordFeatureUsageCallback
+            (param_2,param_5,wVar2,param_1,(wil_details_RecordUsageResult *)&local_38);
+  if (param_3 != 0) {
+    wVar2 = param_5 | 0x80000000;
+    if (param_4 == 0) {
+      wVar2 = param_5;
+    }
+    WilApi_RecordFeatureUsage(param_2,wVar2,0,(char *)0x0);
+  }
+  if (g_wil_details_realtimeFeatureUsageHook != (_func_void_uint_uint_uchar *)0x0) {
+    (*g_wil_details_realtimeFeatureUsageHook)(param_2,param_5,param_8);
+  }
+  return (int)((int)local_28 == 0);
+}
+

```


## SafeAddPointersEx

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|SafeAddPointersEx|
|fullname|SafeAddPointersEx|
|refcount|7|
|length|65|
|called|ReportAndThrow|
|calling|CBaseMqfHeader::SectionIsValid<br>CEodHeader::GetNextSectionSafe<br>CPropertyHeader::GetNextSectionSafe<br>CSecurityHeader::GetNextSectionSafe<br>GetNextSectionPtrSafe|
|paramcount|3|
|address|18003deb8|
|sig|__uint64 __cdecl SafeAddPointersEx(int param_1, __uint64 * param_2, bool * param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- SafeAddPointersEx
+++ SafeAddPointersEx
@@ -0,0 +1,31 @@
+
+/* unsigned __int64 __cdecl SafeAddPointersEx(int,unsigned __int64 * __ptr64 const,bool * __ptr64)
+    */
+
+__uint64 __cdecl SafeAddPointersEx(int param_1,__uint64 *param_2,bool *param_3)
+
+{
+  __uint64 _Var1;
+  ulonglong uVar2;
+  __uint64 _Var3;
+  
+  _Var1 = 0;
+  if (param_3 != (bool *)0x0) {
+    *param_3 = false;
+  }
+  _Var3 = _Var1;
+  uVar2 = _Var1;
+  if (0 < param_1) {
+    do {
+      _Var3 = uVar2 + param_2[_Var1];
+      if (_Var3 < uVar2) {
+                    /* WARNING: Subroutine does not return */
+        ReportAndThrow("SafeAddPointersEx cause overflow");
+      }
+      _Var1 = _Var1 + 1;
+      uVar2 = _Var3;
+    } while ((longlong)_Var1 < (longlong)param_1);
+  }
+  return _Var3;
+}
+

```


## SafeAlignUp4PtrEx

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|SafeAlignUp4PtrEx|
|fullname|SafeAlignUp4PtrEx|
|refcount|7|
|length|42|
|called|ReportAndThrow|
|calling|CSecurityHeader::GetNextSectionSafe<br>GetNextSectionPtrSafe|
|paramcount|2|
|address|18003df30|
|sig|__uint64 __cdecl SafeAlignUp4PtrEx(__uint64 param_1, bool * param_2)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- SafeAlignUp4PtrEx
+++ SafeAlignUp4PtrEx
@@ -0,0 +1,19 @@
+
+/* unsigned __int64 __cdecl SafeAlignUp4PtrEx(unsigned __int64,bool * __ptr64) */
+
+__uint64 __cdecl SafeAlignUp4PtrEx(__uint64 param_1,bool *param_2)
+
+{
+  ulonglong uVar1;
+  
+  if (param_2 != (bool *)0x0) {
+    *param_2 = false;
+  }
+  uVar1 = param_1 + 3 & 0xfffffffffffffffc;
+  if (param_1 <= uVar1) {
+    return uVar1;
+  }
+                    /* WARNING: Subroutine does not return */
+  ReportAndThrow("SafeAlignUp4PtrEx cause overflow");
+}
+

```


## StringCopyWorkerA

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|StringCopyWorkerA|
|fullname|StringCopyWorkerA|
|refcount|1|
|length|74|
|called||
|calling|StringCchCopyA|
|paramcount|5|
|address|18003e684|
|sig|HRESULT __stdcall StringCopyWorkerA(STRSAFE_LPSTR pszDest, size_t cchDest, size_t * pcchNewDestLength, STRSAFE_PCNZCH pszSrc, size_t cchToCopy)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- StringCopyWorkerA
+++ StringCopyWorkerA
@@ -0,0 +1,29 @@
+
+HRESULT __stdcall
+StringCopyWorkerA(STRSAFE_LPSTR pszDest,size_t cchDest,size_t *pcchNewDestLength,
+                 STRSAFE_PCNZCH pszSrc,size_t cchToCopy)
+
+{
+  longlong lVar1;
+  char *pcVar2;
+  longlong lVar3;
+  
+  if (cchDest != 0) {
+    lVar1 = 0x7ffffffe;
+    lVar3 = (longlong)pszSrc - (longlong)pszDest;
+    do {
+      if ((lVar1 == 0) || (pszDest[lVar3] == '\0')) break;
+      *pszDest = pszDest[lVar3];
+      lVar1 = lVar1 + -1;
+      pszDest = pszDest + 1;
+      cchDest = cchDest - 1;
+    } while (cchDest != 0);
+  }
+  pcVar2 = pszDest + -1;
+  if (cchDest != 0) {
+    pcVar2 = pszDest;
+  }
+  *pcVar2 = '\0';
+  return ~-(uint)(cchDest != 0) & 0x8007007a;
+}
+

```


## StringVPrintfWorkerW

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|StringVPrintfWorkerW|
|fullname|StringVPrintfWorkerW|
|refcount|2|
|length|93|
|called|MSVCRT.DLL::_vsnwprintf|
|calling|StringCchVPrintfW|
|paramcount|5|
|address|18003e6d8|
|sig|HRESULT __stdcall StringVPrintfWorkerW(STRSAFE_LPWSTR pszDest, size_t cchDest, size_t * pcchNewDestLength, STRSAFE_LPCWSTR pszFormat, va_list argList)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- StringVPrintfWorkerW
+++ StringVPrintfWorkerW
@@ -0,0 +1,27 @@
+
+HRESULT __stdcall
+StringVPrintfWorkerW
+          (STRSAFE_LPWSTR pszDest,size_t cchDest,size_t *pcchNewDestLength,STRSAFE_LPCWSTR pszFormat
+          ,va_list argList)
+
+{
+  ulonglong _Count;
+  int iVar1;
+  HRESULT HVar2;
+  
+  _Count = cchDest - 1;
+  iVar1 = _vsnwprintf(pszDest,_Count,pszFormat,argList);
+  if ((iVar1 < 0) || (_Count < (ulonglong)(longlong)iVar1)) {
+    pszDest[_Count] = L'\0';
+    HVar2 = -0x7ff8ff86;
+  }
+  else {
+    HVar2 = 0;
+    if ((longlong)iVar1 == _Count) {
+      pszDest[_Count] = L'\0';
+      HVar2 = 0;
+    }
+  }
+  return HVar2;
+}
+

```


## wil::details::WilStringValidateDestA

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|WilStringValidateDestA|
|fullname|wil::details::WilStringValidateDestA|
|refcount|2|
|length|22|
|called||
|calling|StringCchCopyA<br>wil::details::StringCchPrintfA|
|paramcount|3|
|address|18003e73c|
|sig|HRESULT __stdcall WilStringValidateDestA(STRSAFE_PCNZCH pszDest, size_t cchDest, size_t cchMax)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil::details::WilStringValidateDestA
+++ wil::details::WilStringValidateDestA
@@ -0,0 +1,14 @@
+
+HRESULT __stdcall
+wil::details::WilStringValidateDestA(STRSAFE_PCNZCH pszDest,size_t cchDest,size_t cchMax)
+
+{
+  HRESULT HVar1;
+  
+  HVar1 = 0;
+  if (0x7ffffffe < cchDest - 1) {
+    HVar1 = -0x7ff8ffa9;
+  }
+  return HVar1;
+}
+

```


## StringValidateDestW

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|StringValidateDestW|
|fullname|StringValidateDestW|
|refcount|1|
|length|22|
|called||
|calling|StringCchVPrintfW|
|paramcount|3|
|address|18003e75c|
|sig|HRESULT __stdcall StringValidateDestW(STRSAFE_PCNZWCH pszDest, size_t cchDest, size_t cchMax)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- StringValidateDestW
+++ StringValidateDestW
@@ -0,0 +1,13 @@
+
+HRESULT __stdcall StringValidateDestW(STRSAFE_PCNZWCH pszDest,size_t cchDest,size_t cchMax)
+
+{
+  HRESULT HVar1;
+  
+  HVar1 = 0;
+  if (0x7ffffffe < cchDest - 1) {
+    HVar1 = -0x7ff8ffa9;
+  }
+  return HVar1;
+}
+

```


## wil::details::SubscribeFeatureStateCacheToConfigurationChanges

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|SubscribeFeatureStateCacheToConfigurationChanges|
|fullname|wil::details::SubscribeFeatureStateCacheToConfigurationChanges|
|refcount|6|
|length|163|
|called|KERNEL32.DLL::AcquireSRWLockExclusive<br>wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_><br>wil::details_abi::heap_buffer::push_back|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState<br>wil::details::IsFeatureConfigured|
|paramcount|3|
|address|18003e77c|
|sig|void __cdecl SubscribeFeatureStateCacheToConfigurationChanges(wil_details_FeatureStateCache * param_1, wil_FeatureChangeTime param_2, uint param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::SubscribeFeatureStateCacheToConfigurationChanges
+++ wil::details::SubscribeFeatureStateCacheToConfigurationChanges
@@ -0,0 +1,35 @@
+
+/* void __cdecl wil::details::SubscribeFeatureStateCacheToConfigurationChanges(union
+   wil_details_FeatureStateCache * __ptr64,enum wil_FeatureChangeTime,unsigned int) */
+
+void __cdecl
+wil::details::SubscribeFeatureStateCacheToConfigurationChanges
+          (wil_details_FeatureStateCache *param_1,wil_FeatureChangeTime param_2,uint param_3)
+
+{
+  bool bVar1;
+  undefined *local_res20;
+  wil_FeatureChangeTime local_18 [2];
+  wil_details_FeatureStateCache *local_10;
+  
+  if (g_enabledStateManager != (shutdown_aware_object<wil::details::EnabledStateManager>)0x0) {
+    AcquireSRWLockExclusive((PSRWLOCK)&DAT_180131260);
+    local_res20 = &DAT_180131260;
+    if (((param_3 == 0) || (param_3 != DAT_180131274)) ||
+       (local_18[0] = param_2, local_10 = param_1,
+       bVar1 = details_abi::heap_buffer::push_back((heap_buffer *)&DAT_1801312a8,local_18,0x10),
+       !bVar1)) {
+      LOCK();
+      *(uint *)param_1 = *(uint *)param_1 & (-(uint)(param_2 != 0) & 0x205) - 0x208;
+      UNLOCK();
+    }
+    unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+    ::
+    ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+              ((unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>
+                *)&local_res20);
+    return;
+  }
+  return;
+}
+

```


## wil::details::WilApiImpl_GetFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|WilApiImpl_GetFeatureEnabledState|
|fullname|wil::details::WilApiImpl_GetFeatureEnabledState|
|refcount|3|
|length|101|
|called|wil::details::IsFeatureConfigured|
|calling||
|paramcount|3|
|address|18003ee90|
|sig|FEATURE_ENABLED_STATE __cdecl WilApiImpl_GetFeatureEnabledState(uint param_1, FEATURE_CHANGE_TIME param_2, int * param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::WilApiImpl_GetFeatureEnabledState
+++ wil::details::WilApiImpl_GetFeatureEnabledState
@@ -0,0 +1,34 @@
+
+/* enum FEATURE_ENABLED_STATE __cdecl wil::details::WilApiImpl_GetFeatureEnabledState(unsigned
+   int,enum FEATURE_CHANGE_TIME,int * __ptr64) */
+
+FEATURE_ENABLED_STATE __cdecl
+wil::details::WilApiImpl_GetFeatureEnabledState
+          (uint param_1,FEATURE_CHANGE_TIME param_2,int *param_3)
+
+{
+  bool bVar1;
+  FEATURE_ENABLED_STATE FVar2;
+  FEATURE_ENABLED_STATE local_28 [10];
+  
+  local_28[0] = 0;
+  local_28[1] = 0;
+  local_28[2] = 0;
+  local_28[3] = 0;
+  local_28[4] = 0;
+  local_28[5] = 0;
+  bVar1 = IsFeatureConfigured((wil_FeatureState *)local_28,param_1,(param_2 & 0xffffff7f) - 2 < 2,
+                              param_2 >> 7 & 1,param_3);
+  FVar2 = 0;
+  if (bVar1) {
+    FVar2 = local_28[0];
+  }
+  if (local_28[4] != 0) {
+    FVar2 = FVar2 | 0x80;
+  }
+  if (local_28[5] != 0) {
+    FVar2 = FVar2 | 0x40;
+  }
+  return FVar2;
+}
+

```


## wil::details::WilApi_GetFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|WilApi_GetFeatureEnabledState|
|fullname|wil::details::WilApi_GetFeatureEnabledState|
|refcount|4|
|length|47|
|called||
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCurrentFeatureEnabledState|
|paramcount|3|
|address|18003f0e8|
|sig|FEATURE_ENABLED_STATE __cdecl WilApi_GetFeatureEnabledState(uint param_1, FEATURE_CHANGE_TIME param_2, int * param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::WilApi_GetFeatureEnabledState
+++ wil::details::WilApi_GetFeatureEnabledState
@@ -0,0 +1,25 @@
+
+/* WARNING: Function: _guard_xfg_dispatch_icall_nop replaced with injection: guard_dispatch_icall */
+/* WARNING: Exceeded maximum restarts with more pending */
+/* enum FEATURE_ENABLED_STATE __cdecl wil::details::WilApi_GetFeatureEnabledState(unsigned int,enum
+   FEATURE_CHANGE_TIME,int * __ptr64) */
+
+FEATURE_ENABLED_STATE __cdecl
+wil::details::WilApi_GetFeatureEnabledState(uint param_1,FEATURE_CHANGE_TIME param_2,int *param_3)
+
+{
+  FEATURE_ENABLED_STATE FVar1;
+  _func_FEATURE_ENABLED_STATE_uint_FEATURE_CHANGE_TIME_int_ptr *p_Var2;
+  
+  p_Var2 = g_wil_details_internalGetFeatureEnabledState;
+  if ((g_wil_details_internalGetFeatureEnabledState ==
+       (_func_FEATURE_ENABLED_STATE_uint_FEATURE_CHANGE_TIME_int_ptr *)0x0) &&
+     (p_Var2 = g_wil_details_apiGetFeatureEnabledState,
+     g_wil_details_apiGetFeatureEnabledState ==
+     (_func_FEATURE_ENABLED_STATE_uint_FEATURE_CHANGE_TIME_int_ptr *)0x0)) {
+    return 0;
+  }
+  FVar1 = (*p_Var2)(param_1,3);
+  return FVar1;
+}
+

```


## wil::details::WilApi_RecordFeatureUsage

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|WilApi_RecordFeatureUsage|
|fullname|wil::details::WilApi_RecordFeatureUsage|
|refcount|6|
|length|67|
|called|_guard_xfg_dispatch_icall_nop|
|calling|wil::details::EnabledStateManager::RecordCachedUsageUnderLock<br>wil::details::RecordFeatureUsageCallback<br>wil::details::RecordSRUMFeatureUsage<br>wil::details::ReportUsageToServiceDirect<br>wil_details_RecordCachedUsage|
|paramcount|4|
|address|18003f120|
|sig|void __cdecl WilApi_RecordFeatureUsage(uint param_1, uint param_2, uint param_3, char * param_4)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::WilApi_RecordFeatureUsage
+++ wil::details::WilApi_RecordFeatureUsage
@@ -0,0 +1,21 @@
+
+/* WARNING: Function: _guard_xfg_dispatch_icall_nop replaced with injection: guard_dispatch_icall */
+/* WARNING: Exceeded maximum restarts with more pending */
+/* void __cdecl wil::details::WilApi_RecordFeatureUsage(unsigned int,unsigned int,unsigned int,char
+   const * __ptr64) */
+
+void __cdecl
+wil::details::WilApi_RecordFeatureUsage(uint param_1,uint param_2,uint param_3,char *param_4)
+
+{
+  if (g_wil_details_internalRecordFeatureUsage == (_func_void_uint_uint_uint_char_ptr *)0x0) {
+    if (g_wil_details_apiRecordFeatureUsage != (_func_void_uint_uint_uint_char_ptr *)0x0) {
+      (*g_wil_details_apiRecordFeatureUsage)();
+    }
+  }
+  else {
+    (*g_wil_details_internalRecordFeatureUsage)();
+  }
+  return;
+}
+

```


## wil::details::WilApi_SubscribeFeatureStateChangeNotification

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|WilApi_SubscribeFeatureStateChangeNotification|
|fullname|wil::details::WilApi_SubscribeFeatureStateChangeNotification|
|refcount|2|
|length|45|
|called||
|calling|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::RecordFeatureUsageCallback|
|paramcount|3|
|address|18003f16c|
|sig|void __cdecl WilApi_SubscribeFeatureStateChangeNotification(FEATURE_STATE_CHANGE_SUBSCRIPTION__ * * param_1, _func_void_void_ptr * param_2, void * param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::WilApi_SubscribeFeatureStateChangeNotification
+++ wil::details::WilApi_SubscribeFeatureStateChangeNotification
@@ -0,0 +1,28 @@
+
+/* WARNING: Function: _guard_xfg_dispatch_icall_nop replaced with injection: guard_dispatch_icall */
+/* WARNING: Exceeded maximum restarts with more pending */
+/* void __cdecl wil::details::WilApi_SubscribeFeatureStateChangeNotification(struct
+   FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64 * __ptr64,void (__cdecl*)(void * __ptr64),void *
+   __ptr64) */
+
+void __cdecl
+wil::details::WilApi_SubscribeFeatureStateChangeNotification
+          (FEATURE_STATE_CHANGE_SUBSCRIPTION__ **param_1,_func_void_void_ptr *param_2,void *param_3)
+
+{
+  _func_void_FEATURE_STATE_CHANGE_SUBSCRIPTION___ptr_ptr__func_void_void_ptr_ptr_void_ptr *p_Var1;
+  
+  p_Var1 = g_wil_details_internalSubscribeFeatureStateChangeNotification;
+  if ((g_wil_details_internalSubscribeFeatureStateChangeNotification ==
+       (_func_void_FEATURE_STATE_CHANGE_SUBSCRIPTION___ptr_ptr__func_void_void_ptr_ptr_void_ptr *)
+       0x0) && (p_Var1 = g_wil_details_apiSubscribeFeatureStateChangeNotification,
+               g_wil_details_apiSubscribeFeatureStateChangeNotification ==
+               (_func_void_FEATURE_STATE_CHANGE_SUBSCRIPTION___ptr_ptr__func_void_void_ptr_ptr_void_ptr
+                *)0x0)) {
+    *param_1 = (FEATURE_STATE_CHANGE_SUBSCRIPTION__ *)0x0;
+    return;
+  }
+  (*p_Var1)();
+  return;
+}
+

```


## wil::details::WilApi_UnsubscribeFeatureStateChangeNotification

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|WilApi_UnsubscribeFeatureStateChangeNotification|
|fullname|wil::details::WilApi_UnsubscribeFeatureStateChangeNotification|
|refcount|2|
|length|70|
|called|_guard_xfg_dispatch_icall_nop|
|calling|wil::details::unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,void_(__cdecl*)(FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),&void___cdecl_wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct_FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64),wistd::integral_constant<unsigned___int64,0>,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,FEATURE_STATE_CHANGE_SUBSCRIPTION__*___ptr64,0,std::nullptr_t>_>|
|paramcount|1|
|address|18003f1a0|
|sig|void __cdecl WilApi_UnsubscribeFeatureStateChangeNotification(FEATURE_STATE_CHANGE_SUBSCRIPTION__ * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::WilApi_UnsubscribeFeatureStateChangeNotification
+++ wil::details::WilApi_UnsubscribeFeatureStateChangeNotification
@@ -0,0 +1,23 @@
+
+/* WARNING: Function: _guard_xfg_dispatch_icall_nop replaced with injection: guard_dispatch_icall */
+/* WARNING: Exceeded maximum restarts with more pending */
+/* void __cdecl wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct
+   FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64) */
+
+void __cdecl
+wil::details::WilApi_UnsubscribeFeatureStateChangeNotification
+          (FEATURE_STATE_CHANGE_SUBSCRIPTION__ *param_1)
+
+{
+  if (g_wil_details_internalUnsubscribeFeatureStateChangeNotification !=
+      (_func_void_FEATURE_STATE_CHANGE_SUBSCRIPTION___ptr *)0x0) {
+    (*g_wil_details_internalUnsubscribeFeatureStateChangeNotification)();
+    return;
+  }
+  if (g_wil_details_apiUnsubscribeFeatureStateChangeNotification !=
+      (_func_void_FEATURE_STATE_CHANGE_SUBSCRIPTION___ptr *)0x0) {
+    (*g_wil_details_apiUnsubscribeFeatureStateChangeNotification)();
+  }
+  return;
+}
+

```


## wil::details::WilStringVPrintfWorkerA

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|WilStringVPrintfWorkerA|
|fullname|wil::details::WilStringVPrintfWorkerA|
|refcount|2|
|length|93|
|called|MSVCRT.DLL::_vsnprintf_s|
|calling|wil::details::StringCchPrintfA|
|paramcount|5|
|address|18003f364|
|sig|undefined8 __fastcall WilStringVPrintfWorkerA(char * param_1, size_t param_2, undefined8 param_3, char * param_4, va_list param_5)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil::details::WilStringVPrintfWorkerA
+++ wil::details::WilStringVPrintfWorkerA
@@ -0,0 +1,23 @@
+
+undefined8
+wil::details::WilStringVPrintfWorkerA
+          (char *param_1,size_t param_2,undefined8 param_3,char *param_4,va_list param_5)
+
+{
+  ulonglong _MaxCount;
+  int iVar1;
+  undefined8 uVar2;
+  
+  _MaxCount = param_2 - 1;
+  uVar2 = 0;
+  iVar1 = _vsnprintf_s(param_1,param_2,_MaxCount,param_4,param_5);
+  if ((iVar1 < 0) || (_MaxCount < (ulonglong)(longlong)iVar1)) {
+    param_1[_MaxCount] = '\0';
+    uVar2 = 0x8007007a;
+  }
+  else if ((longlong)iVar1 == _MaxCount) {
+    param_1[_MaxCount] = '\0';
+  }
+  return uVar2;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|__private_IsEnabled|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled|
|refcount|9|
|length|56|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::ReportUsage|
|calling|CQmPacket::CQmPacket|
|paramcount|1|
|address|18003f584|
|sig|bool __thiscall __private_IsEnabled(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled
@@ -0,0 +1,20 @@
+
+/* public: bool __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled(void) __ptr64 */
+
+bool __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes> *this)
+
+{
+  bool bVar1;
+  ReportingKind in_R8D;
+  __uint64 in_R9;
+  undefined4 local_res10;
+  
+  GetCachedFeatureEnabledState(this);
+  bVar1 = (bool)((byte)(local_res10 >> 3) & 1);
+  ReportUsage(this,bVar1,in_R8D,in_R9);
+  return bVar1;
+}
+

```


## wil_RtlStagingConfig_QueryFeatureState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|wil_RtlStagingConfig_QueryFeatureState|
|fullname|wil_RtlStagingConfig_QueryFeatureState|
|refcount|3|
|length|292|
|called|KERNEL32.DLL::GetProcAddress<br>__security_check_cookie<br>_guard_xfg_dispatch_icall_nop<br>wil_details_GetNtDllModuleHandle|
|calling|wil::details::IsFeatureConfigured|
|paramcount|4|
|address|18003fc90|
|sig|int __cdecl wil_RtlStagingConfig_QueryFeatureState(wil_FeatureState * param_1, uint param_2, int param_3, int * param_4)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil_RtlStagingConfig_QueryFeatureState
+++ wil_RtlStagingConfig_QueryFeatureState
@@ -0,0 +1,53 @@
+
+/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
+/* WARNING: Function: _guard_xfg_dispatch_icall_nop replaced with injection: guard_dispatch_icall */
+/* WARNING: Exceeded maximum restarts with more pending */
+/* int __cdecl wil_RtlStagingConfig_QueryFeatureState(struct wil_FeatureState * __ptr64,unsigned
+   int,int,int * __ptr64) */
+
+int __cdecl
+wil_RtlStagingConfig_QueryFeatureState
+          (wil_FeatureState *param_1,uint param_2,int param_3,int *param_4)
+
+{
+  int iVar1;
+  HINSTANCE__ *hModule;
+  int iVar2;
+  undefined1 auStack_78 [48];
+  undefined1 local_48 [8];
+  undefined8 local_40;
+  undefined4 local_38;
+  ulonglong local_30;
+  
+  local_30 = __security_cookie ^ (ulonglong)auStack_78;
+  iVar2 = 0;
+  local_40 = 0;
+  local_38 = 0;
+  if (g_wil_details_pfnRtlQueryFeatureConfiguration == (FARPROC)0x0) {
+    hModule = wil_details_GetNtDllModuleHandle();
+    g_wil_details_pfnRtlQueryFeatureConfiguration =
+         GetProcAddress(hModule,"RtlQueryFeatureConfiguration");
+    if (g_wil_details_pfnRtlQueryFeatureConfiguration == (FARPROC)0x0) {
+      iVar1 = -0x3ffffec7;
+      iVar2 = 0;
+      goto LAB_18003fd80;
+    }
+  }
+  iVar1 = (*g_wil_details_pfnRtlQueryFeatureConfiguration)(param_2,param_3 == 0,local_48,&local_40);
+  if (iVar1 == 0) {
+    *(uint *)param_1 = local_40._4_4_ >> 4 & 3;
+    param_1[4] = (wil_FeatureState)((byte)((ulonglong)local_40 >> 0x28) & 0x3f);
+    *(undefined4 *)(param_1 + 0xc) = local_38;
+    *(uint *)(param_1 + 8) = local_40._4_4_ >> 0xe & 3;
+    *(uint *)(param_1 + 0x14) = local_40._4_4_ >> 6 & 1;
+  }
+  else if (iVar1 != 0x117) goto LAB_18003fd80;
+  iVar2 = 1;
+  *(uint *)(param_1 + 0x10) = local_40._4_4_ >> 7 & 1;
+LAB_18003fd80:
+  if (param_4 != (int *)0x0) {
+    *param_4 = (uint)(iVar1 != -0x7fffffde);
+  }
+  return iVar2;
+}
+

```


## wil_StagingConfig_LogStagedFeatureUsage

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|wil_StagingConfig_LogStagedFeatureUsage|
|fullname|wil_StagingConfig_LogStagedFeatureUsage|
|refcount|3|
|length|112|
|called|KERNEL32.DLL::GetProcAddress<br>_guard_xfg_dispatch_icall_nop<br>wil_details_GetKernelBaseModuleHandle|
|calling||
|paramcount|3|
|address|18003fdc0|
|sig|void __cdecl wil_StagingConfig_LogStagedFeatureUsage(uint param_1, uint param_2, uchar param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil_StagingConfig_LogStagedFeatureUsage
+++ wil_StagingConfig_LogStagedFeatureUsage
@@ -0,0 +1,21 @@
+
+/* WARNING: Function: _guard_xfg_dispatch_icall_nop replaced with injection: guard_dispatch_icall */
+/* WARNING: Exceeded maximum restarts with more pending */
+/* void __cdecl wil_StagingConfig_LogStagedFeatureUsage(unsigned int,unsigned int,unsigned char) */
+
+void __cdecl wil_StagingConfig_LogStagedFeatureUsage(uint param_1,uint param_2,uchar param_3)
+
+{
+  HINSTANCE__ *hModule;
+  
+  if (g_wil_details_pfnLogStagedFeatureUsage == (FARPROC)0x0) {
+    hModule = wil_details_GetKernelBaseModuleHandle();
+    g_wil_details_pfnLogStagedFeatureUsage = GetProcAddress(hModule,"LogStagedFeatureUsage");
+    if (g_wil_details_pfnLogStagedFeatureUsage == (FARPROC)0x0) {
+      return;
+    }
+  }
+  (*g_wil_details_pfnLogStagedFeatureUsage)(param_1,param_2,param_3);
+  return;
+}
+

```


## wil_details_FeatureReporting_IncrementOpportunityInCache

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|wil_details_FeatureReporting_IncrementOpportunityInCache|
|fullname|wil_details_FeatureReporting_IncrementOpportunityInCache|
|refcount|2|
|length|237|
|called||
|calling|wil_details_FeatureReporting_RecordUsageInCache|
|paramcount|4|
|address|18003fe38|
|sig|void __cdecl wil_details_FeatureReporting_IncrementOpportunityInCache(wil_details_FeatureReportingCache * param_1, wil_details_ServiceReportingKind param_2, uint param_3, wil_details_RecordUsageResult * param_4)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil_details_FeatureReporting_IncrementOpportunityInCache
+++ wil_details_FeatureReporting_IncrementOpportunityInCache
@@ -0,0 +1,61 @@
+
+/* void __cdecl wil_details_FeatureReporting_IncrementOpportunityInCache(struct
+   wil_details_FeatureReportingCache * __ptr64,enum wil_details_ServiceReportingKind,unsigned
+   int,struct wil_details_RecordUsageResult * __ptr64) */
+
+void __cdecl
+wil_details_FeatureReporting_IncrementOpportunityInCache
+          (wil_details_FeatureReportingCache *param_1,wil_details_ServiceReportingKind param_2,
+          uint param_3,wil_details_RecordUsageResult *param_4)
+
+{
+  uint uVar1;
+  uint uVar2;
+  undefined4 uVar3;
+  uint uVar4;
+  uint uVar5;
+  bool bVar6;
+  
+  uVar4 = *(uint *)param_1;
+  do {
+    uVar1 = uVar4;
+    *(undefined4 *)(param_4 + 4) = 0;
+    uVar2 = uVar1 | 1;
+    if ((uVar1 & 0x400000) >> 0x16 != (uint)(param_2 == 5)) {
+      uVar4 = (uVar1 & 0x3f8000) >> 0xf;
+      if (uVar4 != 0) {
+        *(uint *)(param_4 + 4) = uVar4;
+        uVar3 = 5;
+        if (param_2 != 1) {
+          uVar3 = 1;
+        }
+        uVar2 = uVar1 & 0xffc07fff | 1;
+        *(undefined4 *)(param_4 + 8) = uVar3;
+      }
+      uVar4 = 0;
+      if (param_2 == 5) {
+        uVar4 = 0x400000;
+      }
+      uVar2 = uVar4 | uVar2 & 0xffbfffff;
+    }
+    uVar4 = uVar2 >> 0xf & 0x7f;
+    uVar5 = uVar4 + 1;
+    if ((0x7f < uVar5) || (uVar5 < (uVar2 >> 0xf & 0x7f))) {
+      uVar5 = 1;
+      *(wil_details_ServiceReportingKind *)(param_4 + 8) = param_2;
+      *(uint *)(param_4 + 4) = uVar4;
+    }
+    LOCK();
+    uVar4 = *(uint *)param_1;
+    bVar6 = uVar1 == uVar4;
+    if (bVar6) {
+      *(uint *)param_1 = uVar2 ^ (uVar5 << 0xf ^ uVar2) & 0x3f8000;
+      uVar4 = uVar1;
+    }
+    UNLOCK();
+  } while (!bVar6);
+  *(undefined4 *)(param_4 + 0x10) = 0;
+  *(uint *)param_4 = ~uVar1 & 1;
+  return;
+}
+

```


## wil_details_FeatureReporting_IncrementUsageInCache

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|wil_details_FeatureReporting_IncrementUsageInCache|
|fullname|wil_details_FeatureReporting_IncrementUsageInCache|
|refcount|2|
|length|245|
|called||
|calling|wil_details_FeatureReporting_RecordUsageInCache|
|paramcount|4|
|address|18003ff2c|
|sig|void __cdecl wil_details_FeatureReporting_IncrementUsageInCache(wil_details_FeatureReportingCache * param_1, wil_details_ServiceReportingKind param_2, uint param_3, wil_details_RecordUsageResult * param_4)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil_details_FeatureReporting_IncrementUsageInCache
+++ wil_details_FeatureReporting_IncrementUsageInCache
@@ -0,0 +1,56 @@
+
+/* void __cdecl wil_details_FeatureReporting_IncrementUsageInCache(struct
+   wil_details_FeatureReportingCache * __ptr64,enum wil_details_ServiceReportingKind,unsigned
+   int,struct wil_details_RecordUsageResult * __ptr64) */
+
+void __cdecl
+wil_details_FeatureReporting_IncrementUsageInCache
+          (wil_details_FeatureReportingCache *param_1,wil_details_ServiceReportingKind param_2,
+          uint param_3,wil_details_RecordUsageResult *param_4)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  uint uVar4;
+  bool bVar5;
+  
+  uVar4 = *(uint *)param_1;
+  do {
+    uVar1 = uVar4;
+    *(undefined4 *)(param_4 + 4) = 0;
+    uVar2 = uVar1 | 1;
+    if ((uVar1 & 0x4000) >> 0xe != (uint)(param_2 == 4)) {
+      uVar4 = (uVar1 & 0x3fe0) >> 5;
+      if (uVar4 != 0) {
+        *(uint *)(param_4 + 4) = uVar4;
+        *(uint *)(param_4 + 8) = ~-(uint)(param_2 != 0) & 4;
+        uVar2 = uVar1 & 0xffffc01f | 1;
+      }
+      uVar4 = 0;
+      if (param_2 == 4) {
+        uVar4 = 0x4000;
+      }
+      uVar2 = uVar4 | uVar2 & 0xffffbfff;
+    }
+    uVar4 = uVar2 >> 5 & 0x1ff;
+    uVar3 = uVar4 + 1;
+    if ((0x1ff < uVar3) || (uVar3 < (uVar2 >> 5 & 0x1ff))) {
+      uVar3 = 1;
+      *(wil_details_ServiceReportingKind *)(param_4 + 8) = param_2;
+      *(uint *)(param_4 + 4) = uVar4;
+    }
+    LOCK();
+    uVar4 = *(uint *)param_1;
+    bVar5 = uVar1 == uVar4;
+    if (bVar5) {
+      *(uint *)param_1 = uVar2 ^ (uVar3 << 5 ^ uVar2) & 0x3fe0;
+      uVar4 = uVar1;
+    }
+    UNLOCK();
+  } while (!bVar5);
+  *(undefined4 *)(param_4 + 0x10) = 0;
+  *(uint *)param_4 = ~uVar1 & 1;
+  return;
+}
+

```


## wil_details_FeatureReporting_RecordUsageInCache

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|wil_details_FeatureReporting_RecordUsageInCache|
|fullname|wil_details_FeatureReporting_RecordUsageInCache|
|refcount|2|
|length|345|
|called|wil_details_FeatureReporting_IncrementOpportunityInCache<br>wil_details_FeatureReporting_IncrementUsageInCache|
|calling|wil::details::ReportUsageToServiceDirect|
|paramcount|4|
|address|180040028|
|sig|wil_details_RecordUsageResult __cdecl wil_details_FeatureReporting_RecordUsageInCache(wil_details_FeatureReportingCache * param_1, wil_details_ServiceReportingKind param_2, uint param_3, uint param_4)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil_details_FeatureReporting_RecordUsageInCache
+++ wil_details_FeatureReporting_RecordUsageInCache
@@ -0,0 +1,95 @@
+
+/* struct wil_details_RecordUsageResult __cdecl
+   wil_details_FeatureReporting_RecordUsageInCache(struct wil_details_FeatureReportingCache *
+   __ptr64,enum wil_details_ServiceReportingKind,unsigned int,unsigned int) */
+
+wil_details_FeatureReportingCache * __cdecl
+wil_details_FeatureReporting_RecordUsageInCache
+          (wil_details_FeatureReportingCache *param_1,wil_details_ServiceReportingKind param_2,
+          uint param_3,uint param_4)
+
+{
+  uint uVar1;
+  uint uVar2;
+  undefined4 in_register_00000014;
+  wil_details_FeatureReportingCache *pwVar3;
+  uint uVar4;
+  uint uVar5;
+  bool bVar6;
+  
+  pwVar3 = (wil_details_FeatureReportingCache *)CONCAT44(in_register_00000014,param_2);
+  *(undefined8 *)param_1 = 0;
+  *(undefined8 *)(param_1 + 8) = 0;
+  *(undefined8 *)(param_1 + 0x10) = 0;
+  if (param_3 == 0) {
+LAB_180040165:
+    wil_details_FeatureReporting_IncrementUsageInCache
+              (pwVar3,param_3,param_3,(wil_details_RecordUsageResult *)param_1);
+  }
+  else {
+    if (param_3 == 1) {
+LAB_180040155:
+      wil_details_FeatureReporting_IncrementOpportunityInCache
+                (pwVar3,param_3,param_3,(wil_details_RecordUsageResult *)param_1);
+      return param_1;
+    }
+    uVar5 = 0;
+    if ((param_3 != 2) && (param_3 != 3)) {
+      if (param_3 == 4) goto LAB_180040165;
+      if (param_3 == 5) goto LAB_180040155;
+      if ((param_3 != 6) && (param_3 != 7)) {
+        uVar4 = param_3 - 0x140;
+        if (uVar4 < 0x40) {
+          uVar1 = *(uint *)(pwVar3 + 4);
+          do {
+            if (((uVar1 & 0x10) == 0) || (uVar2 = 1, (uVar1 >> 5 & 0x3f) != uVar4)) {
+              uVar2 = uVar5;
+            }
+            *(uint *)(param_1 + 0x10) = uVar2;
+            LOCK();
+            uVar2 = *(uint *)(pwVar3 + 4);
+            bVar6 = uVar1 == uVar2;
+            if (bVar6) {
+              *(uint *)(pwVar3 + 4) = uVar1 & 0xfffff81f | (uVar4 & 0x3f) << 5 | 0x10;
+              uVar2 = uVar1;
+            }
+            uVar1 = uVar2;
+            UNLOCK();
+          } while (!bVar6);
+        }
+        *(uint *)(param_1 + 8) = param_3;
+        *(undefined4 *)(param_1 + 4) = 1;
+        *(undefined4 *)(param_1 + 0xc) = 0;
+        return param_1;
+      }
+    }
+    if (param_3 == 2) {
+      uVar5 = 2;
+    }
+    else if (param_3 == 3) {
+      uVar5 = 8;
+    }
+    else if (param_3 == 6) {
+      uVar5 = 4;
+    }
+    else if (param_3 == 7) {
+      uVar5 = 0x10;
+    }
+    uVar4 = *(uint *)pwVar3;
+    do {
+      LOCK();
+      uVar1 = *(uint *)pwVar3;
+      bVar6 = uVar4 == uVar1;
+      if (bVar6) {
+        *(uint *)pwVar3 = uVar4 | uVar5 | 1;
+        uVar1 = uVar4;
+      }
+      uVar4 = uVar1;
+      UNLOCK();
+    } while (!bVar6);
+    *(uint *)param_1 = ~uVar4 & 1;
+    *(uint *)(param_1 + 0x10) = (uint)((uVar5 & uVar4) == uVar5);
+  }
+  return param_1;
+}
+

```


## wil_details_MapReportingKind

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|wil_details_MapReportingKind|
|fullname|wil_details_MapReportingKind|
|refcount|1|
|length|144|
|called||
|calling|wil::details::ReportUsageToService|
|paramcount|2|
|address|1800401f8|
|sig|wil_details_ServiceReportingKind __cdecl wil_details_MapReportingKind(wil_ReportingKind param_1, int param_2)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil_details_MapReportingKind
+++ wil_details_MapReportingKind
@@ -0,0 +1,37 @@
+
+/* enum wil_details_ServiceReportingKind __cdecl wil_details_MapReportingKind(enum
+   wil_ReportingKind,int) */
+
+wil_details_ServiceReportingKind __cdecl
+wil_details_MapReportingKind(wil_ReportingKind param_1,int param_2)
+
+{
+  byte bVar1;
+  
+  if (param_1 != 0) {
+    if (param_1 == 1) {
+      return ~-(uint)(param_2 != 0) & 4;
+    }
+    if (param_1 == 2) {
+      return (-(uint)(param_2 != 0) & 0xfffffffc) + 5;
+    }
+    if (param_1 == 3) {
+      return (-(uint)(param_2 != 0) & 0xfffffffc) + 6;
+    }
+    if (param_1 == 4) {
+      return (-(uint)(param_2 != 0) & 0xfffffffc) + 7;
+    }
+    if (param_1 == 5) {
+      return (-(uint)(param_2 != 0) & 0xfffffffe) + 10;
+    }
+    if (param_1 == 6) {
+      return (-(uint)(param_2 != 0) & 0xfffffffe) + 0xb;
+    }
+    bVar1 = (char)param_1 + 0x9c;
+    if (bVar1 < 0x32) {
+      return (-(uint)(param_2 != 0) & 0xffffffce) + 0x96 + (uint)bVar1;
+    }
+  }
+  return 0xff;
+}
+

```


## wil_details_RecordCachedUsage

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|wil_details_RecordCachedUsage|
|fullname|wil_details_RecordCachedUsage|
|refcount|2|
|length|332|
|called|__security_check_cookie<br>wil::details::WilApi_RecordFeatureUsage|
|calling|wil::details::EnabledStateManager::RecordCachedUsageUnderLock|
|paramcount|3|
|address|1800403d0|
|sig|void __cdecl wil_details_RecordCachedUsage(uint param_1, wil_details_FeatureReportingCache * param_2, _func_void_uint_uint_uint_char_ptr * param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil_details_RecordCachedUsage
+++ wil_details_RecordCachedUsage
@@ -0,0 +1,104 @@
+
+/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
+/* void __cdecl wil_details_RecordCachedUsage(unsigned int,struct wil_details_FeatureReportingCache
+   * __ptr64,void (__cdecl*)(unsigned int,unsigned int,unsigned int,char const * __ptr64)) */
+
+void __cdecl
+wil_details_RecordCachedUsage
+          (uint param_1,wil_details_FeatureReportingCache *param_2,
+          _func_void_uint_uint_uint_char_ptr *param_3)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  uint uVar4;
+  uint *puVar5;
+  bool bVar6;
+  undefined1 auStack_88 [32];
+  uint local_68 [4];
+  undefined4 local_58;
+  uint local_54;
+  undefined4 local_50;
+  uint local_4c;
+  undefined4 local_48;
+  uint local_44;
+  undefined4 local_40;
+  uint local_3c;
+  undefined4 local_38;
+  uint local_34;
+  undefined4 local_30;
+  uint local_2c;
+  ulonglong local_28;
+  
+  local_28 = __security_cookie ^ (ulonglong)auStack_88;
+  uVar4 = *(uint *)param_2;
+  do {
+    LOCK();
+    uVar3 = *(uint *)param_2;
+    bVar6 = uVar4 == uVar3;
+    if (bVar6) {
+      *(uint *)param_2 = uVar4 & 0xffc0401e;
+      uVar3 = uVar4;
+    }
+    uVar4 = uVar3;
+    UNLOCK();
+  } while (!bVar6);
+  uVar2 = uVar4 >> 1 & 0xf;
+  uVar3 = 0;
+  if (uVar2 != 0) {
+    uVar3 = *(uint *)(param_2 + 4);
+    do {
+      LOCK();
+      uVar1 = *(uint *)(param_2 + 4);
+      bVar6 = uVar3 == uVar1;
+      if (bVar6) {
+        *(uint *)(param_2 + 4) = uVar3 | uVar2;
+        uVar1 = uVar3;
+      }
+      uVar3 = uVar1;
+      UNLOCK();
+    } while (!bVar6);
+    uVar3 = uVar2 & ~uVar3;
+  }
+  local_68[0] = 2;
+  local_68[1] = uVar3 & 1;
+  local_68[2] = 6;
+  local_68[3] = uVar3 >> 1 & 1;
+  local_58 = 3;
+  local_54 = uVar3 >> 2 & 1;
+  local_50 = 7;
+  local_4c = (uint)(7 < uVar3);
+  local_48 = 0;
+  local_40 = 4;
+  if ((uVar4 >> 0xe & 1) == 0) {
+    local_44 = uVar4 >> 5 & 0x1ff;
+    local_3c = 0;
+  }
+  else {
+    local_44 = 0;
+    local_3c = uVar4 >> 5 & 0x1ff;
+  }
+  local_38 = 1;
+  local_30 = 5;
+  if ((uVar4 >> 0x16 & 1) == 0) {
+    local_34 = uVar4 >> 0xf & 0x7f;
+    local_2c = 0;
+  }
+  else {
+    local_34 = 0;
+    local_2c = uVar4 >> 0xf & 0x7f;
+  }
+  uVar4 = 0;
+  puVar5 = local_68;
+  do {
+    uVar3 = (uint)((ulonglong)*(undefined8 *)puVar5 >> 0x20);
+    if (uVar3 != 0) {
+      wil::details::WilApi_RecordFeatureUsage(param_1,*puVar5,uVar3,(char *)0x0);
+    }
+    uVar4 = uVar4 + 1;
+    puVar5 = puVar5 + 2;
+  } while (uVar4 < 8);
+  return;
+}
+

```


## GetSafeDataAndAdvancePointerEx<unsigned_short>

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetSafeDataAndAdvancePointerEx<unsigned_short>|
|fullname|GetSafeDataAndAdvancePointerEx<unsigned_short>|
|refcount|2|
|length|87|
|called|ReportAndThrow|
|calling|CUserHeader::QueueSizeSafe|
|paramcount|4|
|address|180084954|
|sig|uchar * __cdecl GetSafeDataAndAdvancePointerEx<unsigned_short>(uchar * param_1, uchar * param_2, ushort * param_3, bool * param_4)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- GetSafeDataAndAdvancePointerEx<unsigned_short>
+++ GetSafeDataAndAdvancePointerEx<unsigned_short>
@@ -0,0 +1,32 @@
+
+/* unsigned char * __ptr64 __cdecl GetSafeDataAndAdvancePointerEx<unsigned short>(unsigned char
+   const * __ptr64,unsigned char const * __ptr64,unsigned short * __ptr64,bool * __ptr64) */
+
+uchar * __cdecl
+GetSafeDataAndAdvancePointerEx<unsigned_short>
+          (uchar *param_1,uchar *param_2,ushort *param_3,bool *param_4)
+
+{
+  uchar *puVar1;
+  
+  if (param_4 != (bool *)0x0) {
+    *param_4 = false;
+  }
+  if (((ulonglong)param_1 & 1) == 0) {
+    if ((param_4 == (bool *)0x0) || (*param_4 == false)) {
+      if ((param_2 != (uchar *)0x0) && (param_2 + -2 < param_1)) {
+                    /* WARNING: Subroutine does not return */
+        ReportAndThrow("GetSafeDataAndAdvancePointerEx: too small buffer to read from");
+      }
+      *param_3 = *(ushort *)param_1;
+      puVar1 = param_1 + 2;
+    }
+    else {
+      puVar1 = (uchar *)0x0;
+    }
+    return puVar1;
+  }
+                    /* WARNING: Subroutine does not return */
+  ReportAndThrow("ChekPtrIsAllignedEx: pointer is not alligned for the given poindted type");
+}
+

```


## CheckNullTerminator

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|CheckNullTerminator|
|fullname|CheckNullTerminator|
|refcount|3|
|length|68|
|called|ChekPtrIsAlligned<wchar_t><br>ReportAndThrow|
|calling|CMsgDeadletterHeader::SectionIsValid<br>CMsgGroupHeader::SectionIsValid|
|paramcount|2|
|address|1800849b4|
|sig|void __cdecl CheckNullTerminator(uchar * param_1, uchar * param_2)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- CheckNullTerminator
+++ CheckNullTerminator
@@ -0,0 +1,18 @@
+
+/* void __cdecl CheckNullTerminator(unsigned char * __ptr64 const,unsigned char * __ptr64 const) */
+
+void __cdecl CheckNullTerminator(uchar *param_1,uchar *param_2)
+
+{
+  ChekPtrIsAlligned<wchar_t>(param_1);
+  while( true ) {
+    if ((short *)((ulonglong)param_2 & 0xfffffffffffffffe) <= param_1) {
+                    /* WARNING: Subroutine does not return */
+      ReportAndThrow("ChekNullTerminator: Null terminator is not found");
+    }
+    if (*(short *)param_1 == 0) break;
+    param_1 = (uchar *)((longlong)param_1 + 2);
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetCachedFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState|
|refcount|3|
|length|193|
|called|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCurrentFeatureEnabledState<br>wil::details::SubscribeFeatureStateCacheToConfigurationChanges|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled|
|paramcount|1|
|address|180084a00|
|sig|wil_details_FeatureStateCache __thiscall GetCachedFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState
@@ -0,0 +1,63 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState(void)
+   __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::
+GetCachedFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> *this)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  shutdown_aware_object<wil::details::EnabledStateManager> *this_00;
+  uint uVar4;
+  uint *in_RDX;
+  bool bVar5;
+  int local_res8;
+  uint local_res10 [2];
+  
+  uVar2 = *(uint *)this;
+  *in_RDX = uVar2;
+  if (((byte)uVar2 & 3) != 3) {
+    this_00 = &g_enabledStateManager;
+    uVar1 = EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
+                      ((EnabledStateManager *)&g_enabledStateManager);
+    GetCurrentFeatureEnabledState
+              ((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> *)this_00,
+               (int *)local_res10);
+    uVar2 = *in_RDX;
+    do {
+      uVar4 = uVar2;
+      *in_RDX = uVar4;
+      uVar3 = uVar4;
+      if ((local_res8 != 0) && ((uVar4 & 1) == 0)) {
+        uVar3 = (uVar4 ^ local_res10[0]) & 0x278 ^ uVar4 | 1;
+        *in_RDX = uVar3;
+      }
+      if ((uVar4 & 2) == 0) {
+        uVar3 = uVar3 ^ (uVar3 ^ local_res10[0]) & 0x100 | 2;
+        *in_RDX = uVar3;
+      }
+      LOCK();
+      uVar2 = *(uint *)this;
+      bVar5 = uVar4 == uVar2;
+      if (bVar5) {
+        *(uint *)this = uVar3;
+        uVar2 = uVar4;
+      }
+      UNLOCK();
+    } while (!bVar5);
+    if ((uVar4 & 2) == 0) {
+      SubscribeFeatureStateCacheToConfigurationChanges
+                ((wil_details_FeatureStateCache *)this,3,uVar1);
+    }
+    if ((*in_RDX & 1) == 0) {
+      *in_RDX = *in_RDX ^ (*in_RDX ^ local_res10[0]) & 0x278;
+    }
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetCachedFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState|
|refcount|3|
|length|193|
|called|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCurrentFeatureEnabledState<br>wil::details::SubscribeFeatureStateCacheToConfigurationChanges|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled|
|paramcount|1|
|address|180084ac8|
|sig|wil_details_FeatureStateCache __thiscall GetCachedFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState
@@ -0,0 +1,61 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState(void) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::
+GetCachedFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> *this)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  shutdown_aware_object<wil::details::EnabledStateManager> *this_00;
+  uint uVar4;
+  uint *in_RDX;
+  bool bVar5;
+  int local_res8;
+  uint local_res10 [2];
+  
+  uVar2 = *(uint *)this;
+  *in_RDX = uVar2;
+  if (((byte)uVar2 & 3) != 3) {
+    this_00 = &g_enabledStateManager;
+    uVar1 = EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
+                      ((EnabledStateManager *)&g_enabledStateManager);
+    GetCurrentFeatureEnabledState
+              ((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> *)this_00,
+               (int *)local_res10);
+    uVar2 = *in_RDX;
+    do {
+      uVar4 = uVar2;
+      *in_RDX = uVar4;
+      uVar3 = uVar4;
+      if ((local_res8 != 0) && ((uVar4 & 1) == 0)) {
+        uVar3 = (uVar4 ^ local_res10[0]) & 0x278 ^ uVar4 | 1;
+        *in_RDX = uVar3;
+      }
+      if ((uVar4 & 2) == 0) {
+        uVar3 = uVar3 ^ (uVar3 ^ local_res10[0]) & 0x100 | 2;
+        *in_RDX = uVar3;
+      }
+      LOCK();
+      uVar2 = *(uint *)this;
+      bVar5 = uVar4 == uVar2;
+      if (bVar5) {
+        *(uint *)this = uVar3;
+        uVar2 = uVar4;
+      }
+      UNLOCK();
+    } while (!bVar5);
+    if ((uVar4 & 2) == 0) {
+      SubscribeFeatureStateCacheToConfigurationChanges
+                ((wil_details_FeatureStateCache *)this,3,uVar1);
+    }
+    if ((*in_RDX & 1) == 0) {
+      *in_RDX = *in_RDX ^ (*in_RDX ^ local_res10[0]) & 0x278;
+    }
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetCachedFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState|
|refcount|3|
|length|193|
|called|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCurrentFeatureEnabledState<br>wil::details::SubscribeFeatureStateCacheToConfigurationChanges|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled|
|paramcount|1|
|address|180084b90|
|sig|wil_details_FeatureStateCache __thiscall GetCachedFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState
@@ -0,0 +1,63 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState(void) __ptr64
+    */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::
+GetCachedFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *this)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  shutdown_aware_object<wil::details::EnabledStateManager> *this_00;
+  uint uVar4;
+  uint *in_RDX;
+  bool bVar5;
+  int local_res8;
+  uint local_res10 [2];
+  
+  uVar2 = *(uint *)this;
+  *in_RDX = uVar2;
+  if (((byte)uVar2 & 3) != 3) {
+    this_00 = &g_enabledStateManager;
+    uVar1 = EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
+                      ((EnabledStateManager *)&g_enabledStateManager);
+    GetCurrentFeatureEnabledState
+              ((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *)this_00,
+               (int *)local_res10);
+    uVar2 = *in_RDX;
+    do {
+      uVar4 = uVar2;
+      *in_RDX = uVar4;
+      uVar3 = uVar4;
+      if ((local_res8 != 0) && ((uVar4 & 1) == 0)) {
+        uVar3 = (uVar4 ^ local_res10[0]) & 0x278 ^ uVar4 | 1;
+        *in_RDX = uVar3;
+      }
+      if ((uVar4 & 2) == 0) {
+        uVar3 = uVar3 ^ (uVar3 ^ local_res10[0]) & 0x100 | 2;
+        *in_RDX = uVar3;
+      }
+      LOCK();
+      uVar2 = *(uint *)this;
+      bVar5 = uVar4 == uVar2;
+      if (bVar5) {
+        *(uint *)this = uVar3;
+        uVar2 = uVar4;
+      }
+      UNLOCK();
+    } while (!bVar5);
+    if ((uVar4 & 2) == 0) {
+      SubscribeFeatureStateCacheToConfigurationChanges
+                ((wil_details_FeatureStateCache *)this,3,uVar1);
+    }
+    if ((*in_RDX & 1) == 0) {
+      *in_RDX = *in_RDX ^ (*in_RDX ^ local_res10[0]) & 0x278;
+    }
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCurrentFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetCurrentFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCurrentFeatureEnabledState|
|refcount|2|
|length|198|
|called|wil::details::WilApi_GetFeatureEnabledState|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState|
|paramcount|2|
|address|180084c58|
|sig|wil_details_FeatureStateCache __thiscall GetCurrentFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> * this, int * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCurrentFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCurrentFeatureEnabledState
@@ -0,0 +1,36 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCurrentFeatureEnabledState(int *
+   __ptr64) __ptr64 */
+
+int * __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::
+GetCurrentFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> *this,int *param_1)
+
+{
+  FEATURE_ENABLED_STATE FVar1;
+  int *in_R8;
+  uint uVar2;
+  uint uVar3;
+  
+  FVar1 = WilApi_GetFeatureEnabledState(0x273b657,(FEATURE_CHANGE_TIME)param_1,in_R8);
+  uVar3 = 0;
+  param_1[0] = 0;
+  param_1[1] = 0;
+  uVar2 = (FVar1 & 3) << 5 ^
+          (-(uint)((FVar1 & 0x80) != 0) & 0x100 | -(uint)((FVar1 & 0x40) != 0) & 0x200);
+  *param_1 = uVar2;
+  if ((FVar1 & 0xffffff3f) == 0) {
+    uVar2 = uVar2 | 0x10;
+  }
+  else {
+    if ((FVar1 & 0xffffff3f) == 2) {
+      uVar3 = 0x10;
+    }
+    uVar2 = uVar3 | uVar2;
+  }
+  *param_1 = uVar2 >> 1 & 8 ^ uVar2;
+  return param_1;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCurrentFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetCurrentFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCurrentFeatureEnabledState|
|refcount|2|
|length|198|
|called|wil::details::WilApi_GetFeatureEnabledState|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState|
|paramcount|2|
|address|180084d28|
|sig|wil_details_FeatureStateCache __thiscall GetCurrentFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> * this, int * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCurrentFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCurrentFeatureEnabledState
@@ -0,0 +1,36 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCurrentFeatureEnabledState(int * __ptr64)
+   __ptr64 */
+
+int * __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::
+GetCurrentFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> *this,int *param_1)
+
+{
+  FEATURE_ENABLED_STATE FVar1;
+  int *in_R8;
+  uint uVar2;
+  uint uVar3;
+  
+  FVar1 = WilApi_GetFeatureEnabledState(0x27ec491,(FEATURE_CHANGE_TIME)param_1,in_R8);
+  uVar3 = 0;
+  param_1[0] = 0;
+  param_1[1] = 0;
+  uVar2 = (FVar1 & 3) << 5 ^
+          (-(uint)((FVar1 & 0x80) != 0) & 0x100 | -(uint)((FVar1 & 0x40) != 0) & 0x200);
+  *param_1 = uVar2;
+  if ((FVar1 & 0xffffff3f) == 0) {
+    uVar2 = uVar2 | 0x10;
+  }
+  else {
+    if ((FVar1 & 0xffffff3f) == 2) {
+      uVar3 = 0x10;
+    }
+    uVar2 = uVar3 | uVar2;
+  }
+  *param_1 = uVar2 >> 1 & 8 ^ uVar2;
+  return param_1;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCurrentFeatureEnabledState

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetCurrentFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCurrentFeatureEnabledState|
|refcount|2|
|length|198|
|called|wil::details::WilApi_GetFeatureEnabledState|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState|
|paramcount|2|
|address|180084df8|
|sig|wil_details_FeatureStateCache __thiscall GetCurrentFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> * this, int * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCurrentFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCurrentFeatureEnabledState
@@ -0,0 +1,36 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCurrentFeatureEnabledState(int *
+   __ptr64) __ptr64 */
+
+int * __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::
+GetCurrentFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *this,int *param_1)
+
+{
+  FEATURE_ENABLED_STATE FVar1;
+  int *in_R8;
+  uint uVar2;
+  uint uVar3;
+  
+  FVar1 = WilApi_GetFeatureEnabledState(0x2743bdf,(FEATURE_CHANGE_TIME)param_1,in_R8);
+  uVar3 = 0;
+  param_1[0] = 0;
+  param_1[1] = 0;
+  uVar2 = (FVar1 & 3) << 5 ^
+          (-(uint)((FVar1 & 0x80) != 0) & 0x100 | -(uint)((FVar1 & 0x40) != 0) & 0x200);
+  *param_1 = uVar2;
+  if ((FVar1 & 0xffffff3f) == 0) {
+    uVar2 = uVar2 | 0x10;
+  }
+  else {
+    if ((FVar1 & 0xffffff3f) == 2) {
+      uVar3 = 0x10;
+    }
+    uVar2 = uVar3 | uVar2;
+  }
+  *param_1 = uVar2 >> 1 & 8 ^ uVar2;
+  return param_1;
+}
+

```


## CPropertyHeader::GetNextSectionSafe

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetNextSectionSafe|
|fullname|CPropertyHeader::GetNextSectionSafe|
|refcount|2|
|length|122|
|called|GetNextSectionPtrSafe<br>SafeAddPointersEx<br>__security_check_cookie|
|calling|CPropertyHeader::SectionIsValid|
|paramcount|2|
|address|180084ec8|
|sig|char * __thiscall GetNextSectionSafe(CPropertyHeader * this, char * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- CPropertyHeader::GetNextSectionSafe
+++ CPropertyHeader::GetNextSectionSafe
@@ -0,0 +1,32 @@
+
+/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
+/* public: char * __ptr64 __cdecl CPropertyHeader::GetNextSectionSafe(char * __ptr64 const)const
+   __ptr64 */
+
+char * __thiscall CPropertyHeader::GetNextSectionSafe(CPropertyHeader *this,char *param_1)
+
+{
+  __uint64 _Var1;
+  char *pcVar2;
+  undefined1 auStack_58 [32];
+  bool local_38 [8];
+  __uint64 local_30;
+  ulonglong local_28;
+  ulonglong local_20;
+  ulonglong local_18;
+  
+  local_18 = __security_cookie ^ (ulonglong)auStack_58;
+  local_30 = (ulonglong)(byte)this[1] * 2;
+  local_38[0] = false;
+  local_28 = (ulonglong)*(uint *)(this + 0x34);
+  local_20 = (ulonglong)*(uint *)(this + 0x24);
+  _Var1 = SafeAddPointersEx(3,&local_30,local_38);
+  if (local_38[0] == false) {
+    pcVar2 = GetNextSectionPtrSafe((__uint64)this,0x38,_Var1,(char *)0x0);
+  }
+  else {
+    pcVar2 = (char *)0x0;
+  }
+  return pcVar2;
+}
+

```


## CSecurityHeader::GetNextSectionSafe

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetNextSectionSafe|
|fullname|CSecurityHeader::GetNextSectionSafe|
|refcount|2|
|length|261|
|called|GetNextSectionPtrSafe<br>SafeAddPointersEx<br>SafeAlignUp4PtrEx<br>__security_check_cookie|
|calling|CSecurityHeader::SectionIsValid|
|paramcount|2|
|address|180084f4c|
|sig|char * __thiscall GetNextSectionSafe(CSecurityHeader * this, char * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- CSecurityHeader::GetNextSectionSafe
+++ CSecurityHeader::GetNextSectionSafe
@@ -0,0 +1,39 @@
+
+/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
+/* public: char * __ptr64 __cdecl CSecurityHeader::GetNextSectionSafe(char * __ptr64 const)const
+   __ptr64 */
+
+char * __thiscall CSecurityHeader::GetNextSectionSafe(CSecurityHeader *this,char *param_1)
+
+{
+  __uint64 _Var1;
+  __uint64 _Var2;
+  __uint64 _Var3;
+  char *pcVar4;
+  undefined1 auStack_78 [32];
+  bool local_58 [8];
+  __uint64 local_50;
+  __uint64 local_48;
+  __uint64 local_40;
+  __uint64 local_38;
+  __uint64 local_30;
+  ulonglong local_28;
+  
+  local_28 = __security_cookie ^ (ulonglong)auStack_78;
+  local_58[0] = false;
+  _Var1 = SafeAlignUp4PtrEx((ulonglong)*(ushort *)(this + 2),local_58);
+  if ((((local_58[0] == false) &&
+       (_Var2 = SafeAlignUp4PtrEx((ulonglong)*(ushort *)(this + 4),local_58), local_58[0] == false))
+      && (_Var3 = SafeAlignUp4PtrEx((ulonglong)*(ushort *)(this + 6),local_58), local_58[0] == false
+         )) && (((local_38 = SafeAlignUp4PtrEx((ulonglong)*(uint *)(this + 8),local_58),
+                 local_58[0] == false &&
+                 (local_30 = SafeAlignUp4PtrEx((ulonglong)*(uint *)(this + 0xc),local_58),
+                 local_58[0] == false)) &&
+                (local_50 = _Var1, local_48 = _Var2, local_40 = _Var3,
+                _Var1 = SafeAddPointersEx(5,&local_50,local_58), local_58[0] == false)))) {
+    pcVar4 = GetNextSectionPtrSafe((__uint64)this,0x10,_Var1,(char *)0x0);
+    return pcVar4;
+  }
+  return (char *)0x0;
+}
+

```


## CUserHeader::GetNextSectionSafe

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|GetNextSectionSafe|
|fullname|CUserHeader::GetNextSectionSafe|
|refcount|2|
|length|226|
|called|CUserHeader::QueueSizeSafe<br>GetNextSectionPtrSafe|
|calling|CUserHeader::SectionIsValid|
|paramcount|2|
|address|180085058|
|sig|char * __thiscall GetNextSectionSafe(CUserHeader * this, uchar * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- CUserHeader::GetNextSectionSafe
+++ CUserHeader::GetNextSectionSafe
@@ -0,0 +1,35 @@
+
+/* public: char * __ptr64 __cdecl CUserHeader::GetNextSectionSafe(unsigned char * __ptr64
+   const)const __ptr64 */
+
+char * __thiscall CUserHeader::GetNextSectionSafe(CUserHeader *this,uchar *param_1)
+
+{
+  ushort uVar1;
+  ushort uVar2;
+  char *pcVar3;
+  longlong lVar4;
+  bool local_res8 [8];
+  
+  local_res8[0] = false;
+  uVar1 = QueueSizeSafe((bool)((byte)(*(uint *)(this + 0x2c) >> 0x18) & 1),
+                        *(uint *)(this + 0x2c) >> 10 & 7,(uchar *)(this + 0x30),param_1,local_res8);
+  if (local_res8[0] == false) {
+    uVar2 = QueueSizeSafe(false,*(uint *)(this + 0x2c) >> 0xd & 7,
+                          (uchar *)(this + (ulonglong)uVar1 + 0x30),param_1,local_res8);
+    lVar4 = (ulonglong)uVar1 + (ulonglong)uVar2;
+    if (local_res8[0] == false) {
+      uVar1 = QueueSizeSafe(false,*(ushort *)(this + 0x2e) & 7,(uchar *)(this + lVar4 + 0x30),
+                            param_1,local_res8);
+      if (local_res8[0] == false) {
+        pcVar3 = GetNextSectionPtrSafe
+                           ((__uint64)this,0x30,
+                            (ulonglong)(*(uint *)(this + 0x2c) >> 0x12 & 0x10) +
+                            lVar4 + (ulonglong)uVar1,(char *)param_1);
+        return pcVar3;
+      }
+    }
+  }
+  return (char *)0x0;
+}
+

```


## CUserHeader::QueueSizeSafe

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|QueueSizeSafe|
|fullname|CUserHeader::QueueSizeSafe|
|refcount|4|
|length|387|
|called|GetSafeDataAndAdvancePointer<unsigned_long><br>GetSafeDataAndAdvancePointer<wchar_t><br>GetSafeDataAndAdvancePointerEx<unsigned_short><br>ReportAndThrow|
|calling|CUserHeader::GetNextSectionSafe|
|paramcount|5|
|address|1800851dc|
|sig|ushort __cdecl QueueSizeSafe(bool param_1, ulong param_2, uchar * param_3, uchar * param_4, bool * param_5)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- CUserHeader::QueueSizeSafe
+++ CUserHeader::QueueSizeSafe
@@ -0,0 +1,70 @@
+
+/* private: static unsigned short __cdecl CUserHeader::QueueSizeSafe(bool,unsigned long,unsigned
+   char const * __ptr64,unsigned char * __ptr64 const,bool * __ptr64) */
+
+ushort __cdecl
+CUserHeader::QueueSizeSafe(bool param_1,ulong param_2,uchar *param_3,uchar *param_4,bool *param_5)
+
+{
+  wchar_t wVar1;
+  wchar_t wVar2;
+  ulong local_res8 [2];
+  
+  if (param_5 != (bool *)0x0) {
+    *param_5 = false;
+  }
+  if (param_1) {
+    return 8;
+  }
+  if (1 < param_2) {
+    if (param_2 < 5) {
+      GetSafeDataAndAdvancePointer<unsigned_long>(param_3,param_4,local_res8);
+      if (local_res8[0] != 0) {
+        return 4;
+      }
+                    /* WARNING: Subroutine does not return */
+      ReportAndThrow("User section is not valid: Uniquifier can not be 0");
+    }
+    if (param_2 == 5) {
+      return 0x10;
+    }
+    if (param_2 == 6) {
+      if (param_3 + 0x10 < param_3) {
+                    /* WARNING: Subroutine does not return */
+        ReportAndThrow("size addition caused overflow");
+      }
+      GetSafeDataAndAdvancePointer<unsigned_long>(param_3 + 0x10,param_4,local_res8);
+      if (local_res8[0] != 0) {
+        return 0x14;
+      }
+                    /* WARNING: Subroutine does not return */
+      ReportAndThrow("User section is not valid: private queue Uniquifier can not be 0");
+    }
+    if (param_2 == 7) {
+      GetSafeDataAndAdvancePointerEx<unsigned_short>(param_3,param_4,(ushort *)local_res8,param_5);
+      wVar1 = (wchar_t)local_res8[0];
+      if ((param_5 == (bool *)0x0) || (*param_5 == false)) {
+        if ((ushort)(wchar_t)local_res8[0] < 2) {
+                    /* WARNING: Subroutine does not return */
+          ReportAndThrow("User section is not valid: Direct queue format length is incorrect");
+        }
+        if (param_3 <= param_3 + (ushort)(wchar_t)local_res8[0]) {
+          GetSafeDataAndAdvancePointer<wchar_t>
+                    (param_3 + (ushort)(wchar_t)local_res8[0],param_4,(wchar_t *)local_res8);
+          if ((wchar_t)local_res8[0] != L'\0') {
+                    /* WARNING: Subroutine does not return */
+            ReportAndThrow("User section is not valid: Direct queue need to be NULL terminated");
+          }
+          wVar2 = wVar1 + L'\x05' & 0xfffc;
+          if ((ushort)wVar1 <= (ushort)wVar2) {
+            return wVar2;
+          }
+        }
+                    /* WARNING: Subroutine does not return */
+        ReportAndThrow("length addition caused overflow");
+      }
+    }
+  }
+  return 0;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|ReportUsage|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage|
|refcount|2|
|length|117|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState<br>wil::details::ReportUsageToService|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled|
|paramcount|4|
|address|18008536c|
|sig|void __thiscall ReportUsage(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> * this, bool param_1, ReportingKind param_2, __uint64 param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage
@@ -0,0 +1,32 @@
+
+/* public: void __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage(bool,enum
+   wil::ReportingKind,unsigned __int64) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> *this,bool param_1,
+          ReportingKind param_2,__uint64 param_3)
+
+{
+  ulonglong *puVar1;
+  ulonglong uVar2;
+  undefined4 local_res8;
+  undefined1 local_resc;
+  wil_ReportingKind in_stack_ffffffffffffffd8;
+  __uint64 in_stack_ffffffffffffffe0;
+  
+  uVar2 = (ulonglong)*(uint *)this;
+  if ((*(uint *)this & 2) == 0) {
+    puVar1 = (ulonglong *)GetCachedFeatureEnabledState(this);
+    uVar2 = *puVar1;
+  }
+  local_res8 = 0;
+  local_resc = 2;
+  ReportUsageToService
+            ((wil_details_FeatureReportingCache *)(this + 8),0x273b657,(uint)uVar2 >> 8 & 1,
+             (uint)(uVar2 >> 9) & 1,(FEATURE_LOGGED_TRAITS *)&local_res8,(uint)param_1,
+             in_stack_ffffffffffffffd8,in_stack_ffffffffffffffe0);
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|ReportUsage|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage|
|refcount|2|
|length|117|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState<br>wil::details::ReportUsageToService|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled|
|paramcount|4|
|address|1800853e8|
|sig|void __thiscall ReportUsage(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> * this, bool param_1, ReportingKind param_2, __uint64 param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage
@@ -0,0 +1,32 @@
+
+/* public: void __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage(bool,enum
+   wil::ReportingKind,unsigned __int64) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> *this,bool param_1,
+          ReportingKind param_2,__uint64 param_3)
+
+{
+  ulonglong *puVar1;
+  ulonglong uVar2;
+  undefined4 local_res8;
+  undefined1 local_resc;
+  wil_ReportingKind in_stack_ffffffffffffffd8;
+  __uint64 in_stack_ffffffffffffffe0;
+  
+  uVar2 = (ulonglong)*(uint *)this;
+  if ((*(uint *)this & 2) == 0) {
+    puVar1 = (ulonglong *)GetCachedFeatureEnabledState(this);
+    uVar2 = *puVar1;
+  }
+  local_res8 = 0;
+  local_resc = 2;
+  ReportUsageToService
+            ((wil_details_FeatureReportingCache *)(this + 8),0x27ec491,(uint)uVar2 >> 8 & 1,
+             (uint)(uVar2 >> 9) & 1,(FEATURE_LOGGED_TRAITS *)&local_res8,(uint)param_1,
+             in_stack_ffffffffffffffd8,in_stack_ffffffffffffffe0);
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|ReportUsage|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage|
|refcount|2|
|length|117|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState<br>wil::details::ReportUsageToService|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled|
|paramcount|4|
|address|180085464|
|sig|void __thiscall ReportUsage(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> * this, bool param_1, ReportingKind param_2, __uint64 param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage
@@ -0,0 +1,32 @@
+
+/* public: void __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage(bool,enum
+   wil::ReportingKind,unsigned __int64) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *this,bool param_1,
+          ReportingKind param_2,__uint64 param_3)
+
+{
+  ulonglong *puVar1;
+  ulonglong uVar2;
+  undefined4 local_res8;
+  undefined1 local_resc;
+  wil_ReportingKind in_stack_ffffffffffffffd8;
+  __uint64 in_stack_ffffffffffffffe0;
+  
+  uVar2 = (ulonglong)*(uint *)this;
+  if ((*(uint *)this & 2) == 0) {
+    puVar1 = (ulonglong *)GetCachedFeatureEnabledState(this);
+    uVar2 = *puVar1;
+  }
+  local_res8 = 0;
+  local_resc = 2;
+  ReportUsageToService
+            ((wil_details_FeatureReportingCache *)(this + 8),0x2743bdf,(uint)uVar2 >> 8 & 1,
+             (uint)(uVar2 >> 9) & 1,(FEATURE_LOGGED_TRAITS *)&local_res8,(uint)param_1,
+             in_stack_ffffffffffffffd8,in_stack_ffffffffffffffe0);
+  return;
+}
+

```


## CMqfSignatureHeader::SectionIsValid

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|SectionIsValid|
|fullname|CMqfSignatureHeader::SectionIsValid|
|refcount|2|
|length|122|
|called|CMqfSignatureHeader::GetNextSection<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>_CxxThrowException|
|calling|CQmPacket::CQmPacket|
|paramcount|2|
|address|180085c6c|
|sig|void __thiscall SectionIsValid(CMqfSignatureHeader * this, char * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- CMqfSignatureHeader::SectionIsValid
+++ CMqfSignatureHeader::SectionIsValid
@@ -0,0 +1,24 @@
+
+/* public: void __cdecl CMqfSignatureHeader::SectionIsValid(char * __ptr64)const __ptr64 */
+
+void __thiscall CMqfSignatureHeader::SectionIsValid(CMqfSignatureHeader *this,char *param_1)
+
+{
+  char *pcVar1;
+  exception local_28 [32];
+  
+  pcVar1 = GetNextSection(this);
+  if (param_1 < pcVar1) {
+    if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+       ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
+      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x28,
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
+    }
+    LogIllegalPoint(L"verifypacket",0x5fb);
+    exception::exception(local_28);
+                    /* WARNING: Subroutine does not return */
+    _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|__private_IsEnabled|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled|
|refcount|3|
|length|56|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::ReportUsage|
|calling|CMsgDeadletterHeader::SectionIsValid<br>CMsgGroupHeader::SectionIsValid|
|paramcount|1|
|address|180086bc0|
|sig|bool __thiscall __private_IsEnabled(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled
@@ -0,0 +1,20 @@
+
+/* public: bool __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled(void) __ptr64 */
+
+bool __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::
+__private_IsEnabled(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> *this)
+
+{
+  bool bVar1;
+  ReportingKind in_R8D;
+  __uint64 in_R9;
+  undefined4 local_res10;
+  
+  GetCachedFeatureEnabledState(this);
+  bVar1 = (bool)((byte)(local_res10 >> 3) & 1);
+  ReportUsage(this,bVar1,in_R8D,in_R9);
+  return bVar1;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|__private_IsEnabled|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled|
|refcount|2|
|length|56|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::ReportUsage|
|calling|CUserHeader::SectionIsValid|
|paramcount|1|
|address|180086c00|
|sig|bool __thiscall __private_IsEnabled(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled
@@ -0,0 +1,20 @@
+
+/* public: bool __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled(void) __ptr64 */
+
+bool __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> *this)
+
+{
+  bool bVar1;
+  ReportingKind in_R8D;
+  __uint64 in_R9;
+  undefined4 local_res10;
+  
+  GetCachedFeatureEnabledState(this);
+  bVar1 = (bool)((byte)(local_res10 >> 3) & 1);
+  ReportUsage(this,bVar1,in_R8D,in_R9);
+  return bVar1;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|__private_IsEnabled|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled|
|refcount|6|
|length|56|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::ReportUsage|
|calling|CBaseMqfHeader::SectionIsValid<br>CDebugSection::SectionIsValid<br>CPropertyHeader::SectionIsValid<br>CSecurityHeader::SectionIsValid<br>CXactHeader::SectionIsValid|
|paramcount|1|
|address|180086c40|
|sig|bool __thiscall __private_IsEnabled(FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled
@@ -0,0 +1,20 @@
+
+/* public: bool __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled(void) __ptr64 */
+
+bool __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled
+          (FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *this)
+
+{
+  bool bVar1;
+  ReportingKind in_R8D;
+  __uint64 in_R9;
+  undefined4 local_res10;
+  
+  GetCachedFeatureEnabledState(this);
+  bVar1 = (bool)((byte)(local_res10 >> 3) & 1);
+  ReportUsage(this,bVar1,in_R8D,in_R9);
+  return bVar1;
+}
+

```


## wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''

### Function Meta



|Key|mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|name|`dynamic_atexit_destructor_for_'g_enabledStateManager''|
|fullname|wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''|
|refcount|3|
|length|45|
|called|wil::ProcessShutdownInProgress<br>wil::details::EnabledStateManager::RecordCachedUsageUnderLock<br>wil::details::EnabledStateManager::~EnabledStateManager|
|calling||
|paramcount|0|
|address|1800ee040|
|sig|undefined __fastcall `dynamic_atexit_destructor_for_'g_enabledStateManager''(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''
+++ wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''
@@ -0,0 +1,17 @@
+
+void wil::details::_dynamic_atexit_destructor_for__g_enabledStateManager__(void)
+
+{
+  bool bVar1;
+  
+  bVar1 = ProcessShutdownInProgress();
+  if (bVar1) {
+    g_enabledStateManager = (shutdown_aware_object<wil::details::EnabledStateManager>)0x0;
+    EnabledStateManager::RecordCachedUsageUnderLock((EnabledStateManager *)&g_enabledStateManager);
+  }
+  else {
+    EnabledStateManager::~EnabledStateManager((EnabledStateManager *)&g_enabledStateManager);
+  }
+  return;
+}
+

```


# Modified


*Modified functions contain code changes*
## CUserHeader::SectionIsValid

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.8|
|i_ratio|0.21|
|m_ratio|0.99|
|b_ratio|0.09|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|SectionIsValid|SectionIsValid|
|fullname|CUserHeader::SectionIsValid|CUserHeader::SectionIsValid|
|refcount|3|3|
|`length`|1096|1150|
|`called`|CUserHeader::GetNextSection<br>CUserHeader::GetQueue<br>FnIsValidQueueFormat<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>WPP_SF_d<br>_CxxThrowException|CUserHeader::GetNextSection<br>CUserHeader::GetNextSectionSafe<br>CUserHeader::GetQueue<br>FnIsValidQueueFormat<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>WPP_SF_d<br>_CxxThrowException<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled|
|calling|CQmPacket::CQmPacket<br>CSockTransport::ReadUsrHeaderCompleted|CQmPacket::CQmPacket<br>CSockTransport::ReadUsrHeaderCompleted|
|paramcount|2|2|
|`address`|18008426c|1800865f8|
|sig|void __thiscall SectionIsValid(CUserHeader * this, char * param_1)|void __thiscall SectionIsValid(CUserHeader * this, char * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CUserHeader::SectionIsValid Called Diff


```diff
--- CUserHeader::SectionIsValid called
+++ CUserHeader::SectionIsValid called
@@ -1,0 +2 @@
+CUserHeader::GetNextSectionSafe
@@ -8,0 +10 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::__private_IsEnabled
```


### CUserHeader::SectionIsValid Diff


```diff
--- CUserHeader::SectionIsValid
+++ CUserHeader::SectionIsValid
@@ -1,131 +1,140 @@
 
 /* public: void __cdecl CUserHeader::SectionIsValid(char * __ptr64 const)const __ptr64 */
 
 void __thiscall CUserHeader::SectionIsValid(CUserHeader *this,char *param_1)
 
 {
   bool bVar1;
   int iVar2;
   char *pcVar3;
   uint uVar4;
   uint uVar5;
   exception local_48 [24];
   undefined8 local_30;
   undefined8 uStack_28;
   undefined8 local_20;
   undefined8 uStack_18;
   
   uVar5 = *(uint *)(this + 0x2c);
   if ((uVar5 >> 0x18 & 1) != 0) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0xe,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5e1);
     exception::exception(local_48);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
   }
   uVar4 = uVar5 >> 10 & 7;
-  if ((uVar4 != 3) && (2 < uVar4 - 5)) {
+  if ((2 < uVar4 - 5) && (uVar4 != 3)) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_d(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0xf,
-               &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids,uVar4);
+               &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids,uVar4);
     }
     LogIllegalPoint(L"verifypacket",0x5e2);
     exception::exception(local_48);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
   }
   uVar4 = uVar5 >> 0xd & 7;
   if ((uVar4 == 1) || (uVar4 == 4)) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_d(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x10,
-               &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids,uVar4);
+               &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids,uVar4);
     }
     LogIllegalPoint(L"verifypacket",0x5e3);
     exception::exception(local_48);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
   }
   if ((uVar4 == 0) && ((uVar5 & 0x70000) == 0x40000)) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x11,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5e4);
     exception::exception(local_48);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
   }
   if ((uVar5 >> 0x15 & 1) == 0) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x12,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5e5);
     exception::exception(local_48);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
   }
   uVar5 = uVar5 >> 5 & 3;
   if (1 < uVar5) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_d(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x13,
-               &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids,uVar5);
+               &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids,uVar5);
     }
     LogIllegalPoint(L"verifypacket",0x5e6);
     exception::exception(local_48);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
   }
-  pcVar3 = GetNextSection(this,(uchar *)param_1);
+  bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::
+          __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix> *)
+                              &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRFix>::GetImpl(void)'
+                               ::__l2::impl);
+  if (bVar1) {
+    pcVar3 = GetNextSectionSafe(this,(uchar *)param_1);
+  }
+  else {
+    pcVar3 = GetNextSection(this,(uchar *)param_1);
+  }
   if (param_1 < pcVar3) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x14,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5e7);
     exception::exception(local_48);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
   }
   local_30 = 0;
   uStack_28 = 0;
   local_20 = 0;
   uStack_18 = 0;
   iVar2 = GetQueue(this,(uchar *)(this + 0x30),(bool)((byte)(*(uint *)(this + 0x2c) >> 0x18) & 1),
                    *(uint *)(this + 0x2c) >> 10 & 7,(QUEUE_FORMAT *)&local_30);
   if (iVar2 == 0) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x15,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5e8);
     exception::exception(local_48);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
   }
   bVar1 = FnIsValidQueueFormat((QUEUE_FORMAT *)&local_30);
-  if (!bVar1) {
-    if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-       ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
-      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x16,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
-    }
-    LogIllegalPoint(L"verifypacket",0x5e9);
-    exception::exception(local_48);
+  if (bVar1) {
+    return;
+  }
+  if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+     ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
+    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x16,
+            &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
+  }
+  LogIllegalPoint(L"verifypacket",0x5e9);
+  exception::exception(local_48);
                     /* WARNING: Subroutine does not return */
-    _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
-  }
-  return;
+  _CxxThrowException(local_48,(ThrowInfo *)&_TI1_AVexception__);
 }
 

```


## CDebugSection::SectionIsValid

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.43|
|i_ratio|0.32|
|m_ratio|0.82|
|b_ratio|0.72|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|SectionIsValid|SectionIsValid|
|fullname|CDebugSection::SectionIsValid|CDebugSection::SectionIsValid|
|refcount|2|2|
|`length`|224|295|
|`called`|CDebugSection::GetNextSection<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>_CxxThrowException|CDebugSection::GetNextSection<br>GetNextSectionPtrSafe<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>_CxxThrowException<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled|
|calling|CQmPacket::CQmPacket|CQmPacket::CQmPacket|
|paramcount|2|2|
|`address`|1800836d4|1800858f0|
|sig|void __thiscall SectionIsValid(CDebugSection * this, char * param_1)|void __thiscall SectionIsValid(CDebugSection * this, char * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CDebugSection::SectionIsValid Called Diff


```diff
--- CDebugSection::SectionIsValid called
+++ CDebugSection::SectionIsValid called
@@ -1,0 +2 @@
+GetNextSectionPtrSafe
@@ -5,0 +7 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled
```


### CDebugSection::SectionIsValid Diff


```diff
--- CDebugSection::SectionIsValid
+++ CDebugSection::SectionIsValid
@@ -1,35 +1,50 @@
 
 /* public: void __cdecl CDebugSection::SectionIsValid(char * __ptr64)const __ptr64 */
 
 void __thiscall CDebugSection::SectionIsValid(CDebugSection *this,char *param_1)
 
 {
-  char *pcVar1;
-  exception local_28 [40];
+  bool bVar1;
+  char *pcVar2;
+  __uint64 _Var3;
+  exception local_28 [32];
   
   if (1 < ((byte)*this & 3)) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x22,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5f5);
     exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
   }
-  pcVar1 = GetNextSection(this);
-  if (param_1 < pcVar1) {
-    if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-       ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
-      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x23,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+  bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::
+          __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *)
+                              &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetImpl(void)'
+                               ::__l2::impl);
+  _Var3 = 0;
+  if (bVar1) {
+    if (((*(ushort *)this & 3) != 0) && ((*(ushort *)this & 3) == 1)) {
+      _Var3 = 0x10;
     }
-    LogIllegalPoint(L"verifypacket",0x5f6);
-    exception::exception(local_28);
+    pcVar2 = GetNextSectionPtrSafe((__uint64)this,4,_Var3,(char *)0x0);
+  }
+  else {
+    pcVar2 = GetNextSection(this);
+  }
+  if (pcVar2 <= param_1) {
+    return;
+  }
+  if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+     ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
+    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x23,
+            &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
+  }
+  LogIllegalPoint(L"verifypacket",0x5f6);
+  exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
-    _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
-  }
-  return;
+  _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
 }
 

```


## CBaseMqfHeader::SectionIsValid

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.43|
|i_ratio|0.09|
|m_ratio|0.93|
|b_ratio|0.68|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|SectionIsValid|SectionIsValid|
|fullname|CBaseMqfHeader::SectionIsValid|CBaseMqfHeader::SectionIsValid|
|refcount|4|4|
|`length`|519|576|
|`called`|CBaseMqfHeader::GetQueueFormat<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>SafeAddPointers<br>WPP_SF_<br>_CxxThrowException|CBaseMqfHeader::GetQueueFormat<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>SafeAddPointers<br>SafeAddPointersEx<br>WPP_SF_<br>_CxxThrowException<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled|
|calling|CQmPacket::CQmPacket|CQmPacket::CQmPacket|
|paramcount|2|2|
|`address`|1800834c0|1800856a4|
|sig|void __thiscall SectionIsValid(CBaseMqfHeader * this, char * param_1)|void __thiscall SectionIsValid(CBaseMqfHeader * this, char * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CBaseMqfHeader::SectionIsValid Called Diff


```diff
--- CBaseMqfHeader::SectionIsValid called
+++ CBaseMqfHeader::SectionIsValid called
@@ -4,0 +5 @@
+SafeAddPointersEx
@@ -6,0 +8 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled
```


### CBaseMqfHeader::SectionIsValid Diff


```diff
--- CBaseMqfHeader::SectionIsValid
+++ CBaseMqfHeader::SectionIsValid
@@ -1,73 +1,92 @@
 
 /* public: void __cdecl CBaseMqfHeader::SectionIsValid(char * __ptr64) __ptr64 */
 
 void __thiscall CBaseMqfHeader::SectionIsValid(CBaseMqfHeader *this,char *param_1)
 
 {
-  CBaseMqfHeader *pCVar1;
+  bool bVar1;
   CBaseMqfHeader *pCVar2;
+  CBaseMqfHeader *pCVar3;
   CBaseMqfHeader *this_00;
-  uint uVar3;
-  CBaseMqfHeader *local_28;
-  ulonglong local_20;
+  uint uVar4;
+  CBaseMqfHeader *pCVar5;
+  bool local_res8 [8];
+  CBaseMqfHeader *local_38;
+  ulonglong local_30;
   
-  uVar3 = *(uint *)this;
-  local_20 = (ulonglong)uVar3;
-  if (uVar3 != (uVar3 + 3 & 0xfffffffc)) {
+  if (*(uint *)this != (*(uint *)this + 3 & 0xfffffffc)) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x24,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5f7);
-    exception::exception((exception *)&local_28);
+    exception::exception((exception *)&local_38);
                     /* WARNING: Subroutine does not return */
-    _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
+    _CxxThrowException(&local_38,(ThrowInfo *)&_TI1_AVexception__);
   }
+  bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::
+          __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *)
+                              &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetImpl(void)'
+                               ::__l2::impl);
+  local_30 = (ulonglong)*(uint *)this;
+  pCVar5 = (CBaseMqfHeader *)0x0;
   this_00 = (CBaseMqfHeader *)0x2;
-  local_28 = this;
-  pCVar1 = (CBaseMqfHeader *)SafeAddPointers(2,(__uint64 *)&local_28);
-  if (param_1 < pCVar1) {
+  local_38 = this;
+  if (bVar1) {
+    local_res8[0] = false;
+    pCVar2 = (CBaseMqfHeader *)SafeAddPointersEx(2,(__uint64 *)&local_38,local_res8);
+    if (local_res8[0] != false) {
+      pCVar2 = pCVar5;
+    }
+  }
+  else {
+    pCVar2 = (CBaseMqfHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
+  }
+  if (param_1 < pCVar2) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x25,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5f8);
-    exception::exception((exception *)&local_28);
+    exception::exception((exception *)&local_38);
                     /* WARNING: Subroutine does not return */
-    _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
+    _CxxThrowException(&local_38,(ThrowInfo *)&_TI1_AVexception__);
   }
-  uVar3 = 0;
-  pCVar2 = this + 0xc;
+  pCVar3 = this + 0xc;
   if (*(int *)(this + 8) != 0) {
-    if (pCVar2 == pCVar1) {
+    if (pCVar3 == pCVar2) {
       if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x26,
-                &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+                &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
       }
       LogIllegalPoint(L"verifypacket",0x5f9);
-      exception::exception((exception *)&local_28);
+      exception::exception((exception *)&local_38);
                     /* WARNING: Subroutine does not return */
-      _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
+      _CxxThrowException(&local_38,(ThrowInfo *)&_TI1_AVexception__);
     }
-    for (; uVar3 < *(uint *)(this + 8); uVar3 = uVar3 + 1) {
-      if (pCVar1 < pCVar2) {
-        if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-           ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
-          WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x27,
-                  &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+    if (*(int *)(this + 8) != 0) {
+      do {
+        if (pCVar2 < pCVar3) {
+          if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+             ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
+            WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x27,
+                    &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
+          }
+          LogIllegalPoint(L"verifypacket",0x5fa);
+          exception::exception((exception *)&local_38);
+                    /* WARNING: Subroutine does not return */
+          _CxxThrowException(&local_38,(ThrowInfo *)&_TI1_AVexception__);
         }
-        LogIllegalPoint(L"verifypacket",0x5fa);
-        exception::exception((exception *)&local_28);
-                    /* WARNING: Subroutine does not return */
-        _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
-      }
-      pCVar2 = (CBaseMqfHeader *)
-               GetQueueFormat(this_00,(uchar *)pCVar2,(QUEUE_FORMAT *)&local_28,(uchar *)pCVar1);
+        pCVar3 = (CBaseMqfHeader *)
+                 GetQueueFormat(this_00,(uchar *)pCVar3,(QUEUE_FORMAT *)&local_38,(uchar *)pCVar2);
+        uVar4 = (int)pCVar5 + 1;
+        pCVar5 = (CBaseMqfHeader *)(ulonglong)uVar4;
+      } while (uVar4 < *(uint *)(this + 8));
     }
   }
   return;
 }
 

```


## CXactHeader::SectionIsValid

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.4|
|i_ratio|0.26|
|m_ratio|0.85|
|b_ratio|0.67|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|SectionIsValid|SectionIsValid|
|fullname|CXactHeader::SectionIsValid|CXactHeader::SectionIsValid|
|refcount|2|2|
|`length`|242|301|
|`called`|LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>_CxxThrowException|GetNextSectionPtrSafe<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>_CxxThrowException<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled|
|calling|CQmPacket::CQmPacket|CQmPacket::CQmPacket|
|paramcount|2|2|
|`address`|1800846c4|180086a88|
|sig|void __thiscall SectionIsValid(CXactHeader * this, char * param_1)|void __thiscall SectionIsValid(CXactHeader * this, char * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CXactHeader::SectionIsValid Called Diff


```diff
--- CXactHeader::SectionIsValid called
+++ CXactHeader::SectionIsValid called
@@ -0,0 +1 @@
+GetNextSectionPtrSafe
@@ -4,0 +6 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled
```


### CXactHeader::SectionIsValid Diff


```diff
--- CXactHeader::SectionIsValid
+++ CXactHeader::SectionIsValid
@@ -1,33 +1,47 @@
 
 /* public: void __cdecl CXactHeader::SectionIsValid(char * __ptr64 const)const __ptr64 */
 
 void __thiscall CXactHeader::SectionIsValid(CXactHeader *this,char *param_1)
 
 {
-  exception local_28 [40];
+  bool bVar1;
+  CXactHeader *pCVar2;
+  exception local_28 [32];
   
-  if (param_1 < this + ((ulonglong)((*(uint *)this & 1) * 0x10 + 0x17) & 0xfffffffc)) {
-    if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-       ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
-      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x17,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+  bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::
+          __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *)
+                              &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetImpl(void)'
+                               ::__l2::impl);
+  if (bVar1) {
+    pCVar2 = (CXactHeader *)
+             GetNextSectionPtrSafe
+                       ((__uint64)this,0x14,(ulonglong)(*(uint *)this & 1) << 4,(char *)0x0);
+  }
+  else {
+    pCVar2 = this + ((ulonglong)((*(uint *)this & 1) * 0x10 + 0x17) & 0xfffffffc);
+  }
+  if (pCVar2 <= param_1) {
+    if (*(uint *)(this + 0x10) < *(uint *)(this + 0xc)) {
+      return;
     }
-    LogIllegalPoint(L"verifypacket",0x5ea);
-    exception::exception(local_28);
-                    /* WARNING: Subroutine does not return */
-    _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
-  }
-  if (*(uint *)(this + 0xc) <= *(uint *)(this + 0x10)) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x18,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5eb);
     exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
   }
-  return;
+  if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+     ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
+    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x17,
+            &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
+  }
+  LogIllegalPoint(L"verifypacket",0x5ea);
+  exception::exception(local_28);
+                    /* WARNING: Subroutine does not return */
+  _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
 }
 

```


## wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address|
|ratio|0.9|
|i_ratio|0.11|
|m_ratio|0.78|
|b_ratio|0.78|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''|`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''|
|fullname|wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''|wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''|
|refcount|2|2|
|`length`|43|71|
|called|||
|calling|||
|paramcount|0|0|
|`address`|180002680|1800023f0|
|sig|undefined __fastcall `dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''(void)|undefined __fastcall `dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi'' Diff


```diff
--- wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''
+++ wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderInternalApi''
@@ -1,13 +1,15 @@
 
 void wil::details::_dynamic_initializer_for__g_header_init_InitializeStagingHeaderInternalApi__
                (void)
 
 {
+  g_wil_details_internalGetFeatureEnabledState = WilApiImpl_GetFeatureEnabledState;
   g_wil_details_internalRecordFeatureUsage = WilApiImpl_RecordFeatureUsage;
   g_wil_details_internalSubscribeFeatureStateChangeNotification =
        WilApiImpl_SubscribeFeatureStateChangeNotification;
   g_wil_details_internalUnsubscribeFeatureStateChangeNotification =
        WilApiImpl_UnsubscribeFeatureStateChangeNotification;
+  g_wil_details_realtimeFeatureUsageHook = wil_StagingConfig_LogStagedFeatureUsage;
   return;
 }
 

```


## wil::details::StringCchPrintfA

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.38|
|i_ratio|0.17|
|m_ratio|0.68|
|b_ratio|0.31|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|StringCchPrintfA|StringCchPrintfA|
|fullname|wil::details::StringCchPrintfA|wil::details::StringCchPrintfA|
|refcount|2|2|
|`length`|117|69|
|`called`|MSVCRT.DLL::_vsnprintf_s|wil::details::WilStringVPrintfWorkerA<br>wil::details::WilStringValidateDestA|
|calling|wil::ResultException::what|wil::ResultException::what|
|paramcount|3|3|
|`address`|1800595c0|18003e5f8|
|sig|long __cdecl StringCchPrintfA(char * param_1, __uint64 param_2, char * param_3, ...)|long __cdecl StringCchPrintfA(char * param_1, __uint64 param_2, char * param_3, ...)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### wil::details::StringCchPrintfA Called Diff


```diff
--- wil::details::StringCchPrintfA called
+++ wil::details::StringCchPrintfA called
@@ -1 +1,2 @@
-MSVCRT.DLL::_vsnprintf_s
+wil::details::WilStringVPrintfWorkerA
+wil::details::WilStringValidateDestA
```


### wil::details::StringCchPrintfA Diff


```diff
--- wil::details::StringCchPrintfA
+++ wil::details::StringCchPrintfA
@@ -1,38 +1,26 @@
 
 /* long __cdecl wil::details::StringCchPrintfA(char * __ptr64,unsigned __int64,char const *
    __ptr64,...) */
 
 long __cdecl wil::details::StringCchPrintfA(char *param_1,__uint64 param_2,char *param_3,...)
 
 {
-  ulonglong _MaxCount;
-  int iVar1;
-  long lVar2;
+  HRESULT HVar1;
+  undefined8 uVar2;
   undefined8 in_R9;
   undefined8 local_res20;
   
-  if (param_2 - 1 < 0x7fffffff) {
-    _MaxCount = param_2 - 1;
-    local_res20 = in_R9;
-    iVar1 = _vsnprintf_s(param_1,param_2,_MaxCount,param_3,(va_list)&local_res20);
-    if ((iVar1 < 0) || (_MaxCount < (ulonglong)(longlong)iVar1)) {
-      param_1[_MaxCount] = '\0';
-      lVar2 = -0x7ff8ff86;
-    }
-    else {
-      lVar2 = 0;
-      if ((longlong)iVar1 == _MaxCount) {
-        param_1[_MaxCount] = '\0';
-        lVar2 = 0;
-      }
-    }
-  }
-  else {
-    lVar2 = -0x7ff8ffa9;
+  local_res20 = in_R9;
+  HVar1 = WilStringValidateDestA(param_1,param_2,(size_t)param_3);
+  if (HVar1 < 0) {
     if (param_2 != 0) {
       *param_1 = '\0';
     }
   }
-  return lVar2;
+  else {
+    uVar2 = WilStringVPrintfWorkerA(param_1,param_2,param_3,param_3,(va_list)&local_res20);
+    HVar1 = (HRESULT)uVar2;
+  }
+  return HVar1;
 }
 

```


## CPropertyHeader::SectionIsValid

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.54|
|i_ratio|0.26|
|m_ratio|0.93|
|b_ratio|0.58|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|SectionIsValid|SectionIsValid|
|fullname|CPropertyHeader::SectionIsValid|CPropertyHeader::SectionIsValid|
|refcount|2|2|
|`length`|330|376|
|`called`|CPropertyHeader::GetNextSection<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>_CxxThrowException|CPropertyHeader::GetNextSection<br>CPropertyHeader::GetNextSectionSafe<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>_CxxThrowException<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled|
|calling|CQmPacket::CQmPacket|CQmPacket::CQmPacket|
|paramcount|2|2|
|`address`|180083d74|1800860a0|
|sig|void __thiscall SectionIsValid(CPropertyHeader * this, char * param_1)|void __thiscall SectionIsValid(CPropertyHeader * this, char * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CPropertyHeader::SectionIsValid Called Diff


```diff
--- CPropertyHeader::SectionIsValid called
+++ CPropertyHeader::SectionIsValid called
@@ -1,0 +2 @@
+CPropertyHeader::GetNextSectionSafe
@@ -5,0 +7 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled
```


### CPropertyHeader::SectionIsValid Diff


```diff
--- CPropertyHeader::SectionIsValid
+++ CPropertyHeader::SectionIsValid
@@ -1,46 +1,57 @@
 
 /* public: void __cdecl CPropertyHeader::SectionIsValid(char * __ptr64)const __ptr64 */
 
 void __thiscall CPropertyHeader::SectionIsValid(CPropertyHeader *this,char *param_1)
 
 {
-  char *pcVar1;
+  bool bVar1;
+  char *pcVar2;
   exception local_28 [32];
   
   if (0xfa < (byte)this[1]) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x1f,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5f2);
     exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
   }
-  if (*(uint *)(this + 0x24) < *(uint *)(this + 0x20)) {
-    if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-       ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
-      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x20,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+  if (*(uint *)(this + 0x20) <= *(uint *)(this + 0x24)) {
+    pcVar2 = param_1;
+    bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::
+            __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *
+                                )&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetImpl(void)'
+                                  ::__l2::impl);
+    if (bVar1) {
+      pcVar2 = GetNextSectionSafe(this,pcVar2);
     }
-    LogIllegalPoint(L"verifypacket",0x5f3);
-    exception::exception(local_28);
-                    /* WARNING: Subroutine does not return */
-    _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
-  }
-  pcVar1 = GetNextSection(this);
-  if (param_1 < pcVar1) {
+    else {
+      pcVar2 = GetNextSection(this);
+    }
+    if (pcVar2 <= param_1) {
+      return;
+    }
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x21,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5f4);
     exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
   }
-  return;
+  if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+     ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
+    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x20,
+            &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
+  }
+  LogIllegalPoint(L"verifypacket",0x5f3);
+  exception::exception(local_28);
+                    /* WARNING: Subroutine does not return */
+  _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
 }
 

```


## CQmPacket::CQmPacket

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.31|
|i_ratio|0.37|
|m_ratio|0.92|
|b_ratio|0.32|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|CQmPacket|CQmPacket|
|fullname|CQmPacket::CQmPacket|CQmPacket::CQmPacket|
|refcount|26|26|
|`length`|2320|2698|
|`called`|<details><summary>Expand for full list:<br>CBaseHeader::SectionIsValid<br>CBaseHeader::section_cast<CPropertyHeader*___ptr64><br>CBaseHeader::section_cast<CSessionSection*___ptr64><br>CBaseHeader::section_cast<CUserHeader*___ptr64><br>CBaseMqfHeader::SectionIsValid<br>CDebugSection::GetNextSection<br>CDebugSection::SectionIsValid<br>CExtendedAddressHeader::SectionIsValid<br>CMqfSignatureHeader::GetNextSection<br>CMsgDeadletterHeader::SectionIsValid<br>CMsgGroupHeader::SectionIsValid</summary>COnDiskExtensionHeader::SectionIsValid<br>COnWireExtensionHeader::SectionIsValid<br>CPropertyHeader::GetNextSection<br>CPropertyHeader::SectionIsValid<br>CQmPacket::PacketIsValid<br>CSecurityHeader::GetNextSection<br>CSecurityHeader::SectionIsValid<br>CSingelton<CMessageSizeLimit>::get<br>CSubQueueHeader::SectionIsValid<br>CUserHeader::GetNextSection<br>CUserHeader::SectionIsValid<br>CXactHeader::SectionIsValid<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>ReportAndThrow<br>SafeAddPointers<br>WPP_SF_<br>_CxxThrowException<br>memcpy</details>|<details><summary>Expand for full list:<br>CBaseHeader::SectionIsValid<br>CBaseHeader::section_cast<CPropertyHeader*___ptr64><br>CBaseHeader::section_cast<CSessionSection*___ptr64><br>CBaseHeader::section_cast<CUserHeader*___ptr64><br>CBaseMqfHeader::SectionIsValid<br>CDebugSection::GetNextSection<br>CDebugSection::SectionIsValid<br>CEodHeader::GetNextSectionSafe<br>CExtendedAddressHeader::SectionIsValid<br>CMqfSignatureHeader::GetNextSection<br>CMqfSignatureHeader::SectionIsValid</summary>CMsgDeadletterHeader::SectionIsValid<br>CMsgGroupHeader::SectionIsValid<br>COnDiskExtensionHeader::SectionIsValid<br>COnWireExtensionHeader::SectionIsValid<br>CPropertyHeader::GetNextSection<br>CPropertyHeader::SectionIsValid<br>CQmPacket::PacketIsValid<br>CSecurityHeader::GetNextSection<br>CSecurityHeader::SectionIsValid<br>CSingelton<CMessageSizeLimit>::get<br>CSoapSection::GetNextSectionSafe<br>CSubQueueHeader::SectionIsValid<br>CUserHeader::GetNextSection<br>CUserHeader::SectionIsValid<br>CXactHeader::SectionIsValid<br>GetNextSectionPtrSafe<br>ReportAndThrow<br>SafeAddPointers<br>memcpy<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled</details>|
|calling|<details><summary>Expand for full list:<br>CGetPacket2RemoteOv::CompleteStartReceive<br>CMessageMulticastTransport::KeepProceesingPacket<br>CMessageMulticastTransport::RequeuePacketMustSucceed<br>CMessageTransport::CreateDeliveryPacket<br>CNewRemoteRead::ValidatePacket<br>COldRemoteRead::ValidatePacket<br>CProxyTransport::SendEodMdg<br>CProxyTransport::SendSimpleMdg<br>CProxyTransport::SetStoredAck<br>CSockTransport::HandleReceiveUserMsg<br>GetInternalMessageSucceeded</summary>GetMsgSucceeded<br>GetNonactiveMessageSucceeded<br>HandlePutOrderedPacket<br>MpDeserialize<br>PutOrderedPacketFailed<br>PutOrderedPacketSucceeded<br>QMAckPacket<br>QMDeadletterPacket<br>QMpHandleCreatePacket<br>QMpRemoteStartReceive<br>RestorePackets<br>SeqPktTimedOut<br>`CMessageTransport::CreateDeliveryPacket'::__l1::catch$1<br>`GetMsgSucceeded'::__l1::catch$4</details>|<details><summary>Expand for full list:<br>CGetPacket2RemoteOv::CompleteStartReceive<br>CMessageMulticastTransport::KeepProceesingPacket<br>CMessageMulticastTransport::RequeuePacketMustSucceed<br>CMessageTransport::CreateDeliveryPacket<br>CNewRemoteRead::ValidatePacket<br>COldRemoteRead::ValidatePacket<br>CProxyTransport::SendEodMdg<br>CProxyTransport::SendSimpleMdg<br>CProxyTransport::SetStoredAck<br>CSockTransport::HandleReceiveUserMsg<br>GetInternalMessageSucceeded</summary>GetMsgSucceeded<br>GetNonactiveMessageSucceeded<br>HandlePutOrderedPacket<br>MpDeserialize<br>PutOrderedPacketFailed<br>PutOrderedPacketSucceeded<br>QMAckPacket<br>QMDeadletterPacket<br>QMpHandleCreatePacket<br>QMpRemoteStartReceive<br>RestorePackets<br>SeqPktTimedOut<br>`CMessageTransport::CreateDeliveryPacket'::__l1::catch$1<br>`GetMsgSucceeded'::__l1::catch$4</details>|
|paramcount|7|7|
|`address`|1800377d8|1800380ac|
|sig|undefined __thiscall CQmPacket(CQmPacket * this, CBaseHeader * param_1, CPacket * param_2, bool param_3, bool param_4, _TA_ADDRESS * param_5, int param_6)|undefined __thiscall CQmPacket(CQmPacket * this, CBaseHeader * param_1, CPacket * param_2, bool param_3, bool param_4, _TA_ADDRESS * param_5, int param_6)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CQmPacket::CQmPacket Called Diff


```diff
--- CQmPacket::CQmPacket called
+++ CQmPacket::CQmPacket called
@@ -7,0 +8 @@
+CEodHeader::GetNextSectionSafe
@@ -9,0 +11 @@
+CMqfSignatureHeader::SectionIsValid
@@ -19,0 +22 @@
+CSoapSection::GetNextSectionSafe
@@ -24,2 +27 @@
-LogIllegalPoint
-MSVCRT.DLL::exception::exception
+GetNextSectionPtrSafe
@@ -28,2 +29,0 @@
-WPP_SF_
-_CxxThrowException
@@ -30,0 +31 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::__private_IsEnabled
```


### CQmPacket::CQmPacket Diff


```diff
--- CQmPacket::CQmPacket
+++ CQmPacket::CQmPacket
@@ -1,348 +1,437 @@
 
 /* public: __cdecl CQmPacket::CQmPacket(struct CBaseHeader * __ptr64,class CPacket *
    __ptr64,bool,bool,struct _TA_ADDRESS const * __ptr64,int) __ptr64 */
 
 CQmPacket * __thiscall
 CQmPacket::CQmPacket
           (CQmPacket *this,CBaseHeader *param_1,CPacket *param_2,bool param_3,bool param_4,
           _TA_ADDRESS *param_5,int param_6)
 
 {
   CXactHeader *pCVar1;
   CSecurityHeader *pCVar2;
   CDebugSection *pCVar3;
   CBaseMqfHeader *pCVar4;
   CMqfSignatureHeader *pCVar5;
-  COnWireExtensionHeader *pCVar6;
-  CMsgGroupHeader *pCVar7;
-  COnDiskExtensionHeader *pCVar8;
-  CSubQueueHeader *pCVar9;
-  CMsgDeadletterHeader *pCVar10;
-  CExtendedAddressHeader *pCVar11;
-  CMessageSizeLimit *pCVar12;
+  CEodHeader *pCVar6;
+  __uint64 _Var7;
+  char *pcVar8;
+  CSoapSection *pCVar9;
+  COnWireExtensionHeader *pCVar10;
+  CMsgGroupHeader *pCVar11;
+  COnDiskExtensionHeader *pCVar12;
+  CSubQueueHeader *pCVar13;
+  CMsgDeadletterHeader *pCVar14;
+  CExtendedAddressHeader *pCVar15;
+  ulonglong uVar16;
+  bool bVar17;
+  CMessageSizeLimit *pCVar18;
   CUserHeader *this_00;
   CSecurityHeader *this_01;
   CPropertyHeader *this_02;
-  CExtendedAddressHeader *this_03;
-  CBaseMqfHeader *pCVar13;
-  CMqfSignatureHeader *this_04;
-  CBaseHeader *pCVar14;
-  undefined4 *puVar15;
-  CSessionSection *pCVar16;
-  longlong lVar17;
-  CBaseHeader *pCVar18;
-  CExtendedAddressHeader *local_48;
-  ulonglong local_40;
+  CBaseHeader *pCVar19;
+  CBaseMqfHeader *pCVar20;
+  CMqfSignatureHeader *this_03;
+  char *pcVar21;
+  CSoapSection *pCVar22;
+  undefined4 *puVar23;
+  CSessionSection *pCVar24;
+  longlong lVar25;
+  CBaseHeader *pCVar26;
+  CBaseHeader *local_38;
+  ulonglong local_30;
   
   *(CPacket **)(this + 0x20) = param_2;
   *(undefined8 *)(this + 0x30) = 0;
   *(undefined8 *)(this + 0x38) = 0;
   *(undefined8 *)(this + 0x40) = 0;
   *(undefined8 *)(this + 0x48) = 0;
   *(undefined8 *)(this + 0x50) = 0;
   *(undefined8 *)(this + 0x58) = 0;
   *(undefined8 *)(this + 0x60) = 0;
   *(undefined8 *)(this + 0x68) = 0;
   *(undefined8 *)(this + 0x70) = 0;
   *(undefined8 *)(this + 0x78) = 0;
   *(undefined8 *)(this + 0x80) = 0;
   *(undefined8 *)(this + 0x88) = 0;
   *(undefined8 *)(this + 0x90) = 0;
   *(undefined8 *)(this + 0x98) = 0;
   *(undefined8 *)(this + 0xa0) = 0;
   *(undefined8 *)(this + 0xa8) = 0;
   *(undefined8 *)(this + 0xb0) = 0;
   *(undefined8 *)(this + 0xb8) = 0;
   *(undefined8 *)(this + 0xc0) = 0;
   *(undefined8 *)(this + 200) = 0;
   *(undefined8 *)(this + 0xd0) = 0;
   *(undefined8 *)(this + 0xd8) = 0;
   *(undefined8 *)(this + 0xe0) = 0;
   *(CBaseHeader **)(this + 0x28) = param_1;
-  pCVar18 = param_1 + *(uint *)(param_1 + 8);
+  pCVar26 = param_1 + *(uint *)(param_1 + 8);
   if (param_3) {
-    pCVar12 = CSingelton<CMessageSizeLimit>::get();
-    CBaseHeader::SectionIsValid(param_1,*(ulong *)pCVar12,param_4);
+    pCVar18 = CSingelton<CMessageSizeLimit>::get();
+    CBaseHeader::SectionIsValid(param_1,*(ulong *)pCVar18,param_4);
   }
-  pCVar14 = *(CBaseHeader **)(this + 0x28);
-  if (((byte)pCVar14[2] >> 3 & 1) == 0) {
-    this_00 = CBaseHeader::section_cast<CUserHeader*___ptr64>(pCVar14,pCVar14 + 0x10);
+  pCVar19 = *(CBaseHeader **)(this + 0x28);
+  if (((byte)pCVar19[2] >> 3 & 1) == 0) {
+    this_00 = CBaseHeader::section_cast<CUserHeader*___ptr64>(pCVar19,pCVar19 + 0x10);
     *(CUserHeader **)(this + 0x30) = this_00;
     if (param_3) {
-      CUserHeader::SectionIsValid(this_00,(char *)pCVar18);
+      CUserHeader::SectionIsValid(this_00,(char *)pCVar26);
     }
     this_01 = (CSecurityHeader *)
               CUserHeader::GetNextSection(*(CUserHeader **)(this + 0x30),(uchar *)0x0);
-    lVar17 = *(longlong *)(this + 0x30);
-    if ((*(uint *)(lVar17 + 0x2c) & 0x100000) != 0) {
+    lVar25 = *(longlong *)(this + 0x30);
+    if ((*(uint *)(lVar25 + 0x2c) & 0x100000) != 0) {
       pCVar1 = *(CXactHeader **)(this + 0x28);
       if (pCVar1 + *(uint *)(pCVar1 + 8) < (CXactHeader *)(this_01 + 0x14)) goto LAB_0;
       if (this_01 < pCVar1) goto LAB_1;
       *(CSecurityHeader **)(this + 0x38) = this_01;
       if (param_3) {
-        CXactHeader::SectionIsValid((CXactHeader *)this_01,(char *)pCVar18);
-        lVar17 = *(longlong *)(this + 0x30);
+        CXactHeader::SectionIsValid((CXactHeader *)this_01,(char *)pCVar26);
+        lVar25 = *(longlong *)(this + 0x30);
       }
       this_01 = (CSecurityHeader *)
                 (((ulonglong)((**(uint **)(this + 0x38) & 1) * 0x10 + 0x17) & 0xfffffffc) +
                 (longlong)*(uint **)(this + 0x38));
     }
-    if ((*(uint *)(lVar17 + 0x2c) & 0x80000) != 0) {
+    if ((*(uint *)(lVar25 + 0x2c) & 0x80000) != 0) {
       pCVar2 = *(CSecurityHeader **)(this + 0x28);
       if (pCVar2 + *(uint *)(pCVar2 + 8) < this_01 + 0x10) goto LAB_0;
       if (this_01 < pCVar2) goto LAB_1;
       *(CSecurityHeader **)(this + 0x40) = this_01;
       if (param_3) {
-        CSecurityHeader::SectionIsValid(this_01,(char *)pCVar18);
+        CSecurityHeader::SectionIsValid(this_01,(char *)pCVar26);
       }
       this_01 = (CSecurityHeader *)
                 CSecurityHeader::GetNextSection(*(CSecurityHeader **)(this + 0x40));
     }
     this_02 = CBaseHeader::section_cast<CPropertyHeader*___ptr64>
                         (*(CBaseHeader **)(this + 0x28),this_01);
     *(CPropertyHeader **)(this + 0x48) = this_02;
     if (param_3) {
-      CPropertyHeader::SectionIsValid(this_02,(char *)pCVar18);
-    }
-    this_03 = (CExtendedAddressHeader *)
-              CPropertyHeader::GetNextSection(*(CPropertyHeader **)(this + 0x48));
+      CPropertyHeader::SectionIsValid(this_02,(char *)pCVar26);
+    }
+    pCVar19 = (CBaseHeader *)CPropertyHeader::GetNextSection(*(CPropertyHeader **)(this + 0x48));
     pCVar3 = *(CDebugSection **)(this + 0x28);
     if (((byte)pCVar3[2] & 0x20) != 0) {
-      if (pCVar3 + *(uint *)(pCVar3 + 8) < (CDebugSection *)(this_03 + 4)) goto LAB_0;
-      if (this_03 < pCVar3) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0x50) = this_03;
-      if (param_3) {
-        CDebugSection::SectionIsValid((CDebugSection *)this_03,(char *)pCVar18);
-      }
-      this_03 = (CExtendedAddressHeader *)
-                CDebugSection::GetNextSection(*(CDebugSection **)(this + 0x50));
+      if (pCVar3 + *(uint *)(pCVar3 + 8) < (CDebugSection *)(pCVar19 + 4)) goto LAB_0;
+      if (pCVar19 < pCVar3) goto LAB_1;
+      *(CBaseHeader **)(this + 0x50) = pCVar19;
+      if (param_3) {
+        CDebugSection::SectionIsValid((CDebugSection *)pCVar19,(char *)pCVar26);
+      }
+      pCVar19 = (CBaseHeader *)CDebugSection::GetNextSection(*(CDebugSection **)(this + 0x50));
     }
     if ((*(uint *)(*(longlong *)(this + 0x30) + 0x2c) & 0x800000) != 0) {
       if ((param_3) && ((*(byte *)(*(longlong *)(this + 0x28) + 2) & 0x20) == 0)) {
                     /* WARNING: Subroutine does not return */
         ReportAndThrow("Debug section is not included while MQF included");
       }
       pCVar4 = *(CBaseMqfHeader **)(this + 0x28);
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < (CBaseMqfHeader *)(this_03 + 0xc)) goto LAB_0;
-      if (this_03 < pCVar4) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0x58) = this_03;
-      if (param_3) {
-        CBaseMqfHeader::SectionIsValid((CBaseMqfHeader *)this_03,(char *)pCVar18);
-      }
-      local_48 = *(CExtendedAddressHeader **)(this + 0x58);
-      local_40 = (ulonglong)*(uint *)local_48;
-      pCVar13 = (CBaseMqfHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
+      if (pCVar4 + *(uint *)(pCVar4 + 8) < (CBaseMqfHeader *)(pCVar19 + 0xc)) goto LAB_0;
+      if (pCVar19 < pCVar4) goto LAB_1;
+      *(CBaseHeader **)(this + 0x58) = pCVar19;
+      if (param_3) {
+        CBaseMqfHeader::SectionIsValid((CBaseMqfHeader *)pCVar19,(char *)pCVar26);
+      }
+      local_38 = *(CBaseHeader **)(this + 0x58);
+      local_30 = (ulonglong)*(uint *)local_38;
+      pCVar20 = (CBaseMqfHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
       pCVar4 = *(CBaseMqfHeader **)(this + 0x28);
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < pCVar13 + 0xc) goto LAB_0;
-      if (pCVar13 < pCVar4) goto LAB_1;
-      *(CBaseMqfHeader **)(this + 0x60) = pCVar13;
-      if (param_3) {
-        CBaseMqfHeader::SectionIsValid(pCVar13,(char *)pCVar18);
-      }
-      local_48 = *(CExtendedAddressHeader **)(this + 0x60);
-      local_40 = (ulonglong)*(uint *)local_48;
-      pCVar13 = (CBaseMqfHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
+      if (pCVar4 + *(uint *)(pCVar4 + 8) < pCVar20 + 0xc) goto LAB_0;
+      if (pCVar20 < pCVar4) goto LAB_1;
+      *(CBaseMqfHeader **)(this + 0x60) = pCVar20;
+      if (param_3) {
+        CBaseMqfHeader::SectionIsValid(pCVar20,(char *)pCVar26);
+      }
+      local_38 = *(CBaseHeader **)(this + 0x60);
+      local_30 = (ulonglong)*(uint *)local_38;
+      pCVar20 = (CBaseMqfHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
       pCVar4 = *(CBaseMqfHeader **)(this + 0x28);
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < pCVar13 + 0xc) goto LAB_0;
-      if (pCVar13 < pCVar4) goto LAB_1;
-      *(CBaseMqfHeader **)(this + 0x68) = pCVar13;
-      if (param_3) {
-        CBaseMqfHeader::SectionIsValid(pCVar13,(char *)pCVar18);
-      }
-      local_48 = *(CExtendedAddressHeader **)(this + 0x68);
-      local_40 = (ulonglong)*(uint *)local_48;
-      this_04 = (CMqfSignatureHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
+      if (pCVar4 + *(uint *)(pCVar4 + 8) < pCVar20 + 0xc) goto LAB_0;
+      if (pCVar20 < pCVar4) goto LAB_1;
+      *(CBaseMqfHeader **)(this + 0x68) = pCVar20;
+      if (param_3) {
+        CBaseMqfHeader::SectionIsValid(pCVar20,(char *)pCVar26);
+      }
+      local_38 = *(CBaseHeader **)(this + 0x68);
+      local_30 = (ulonglong)*(uint *)local_38;
+      this_03 = (CMqfSignatureHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
       pCVar5 = *(CMqfSignatureHeader **)(this + 0x28);
-      if (pCVar5 + *(uint *)(pCVar5 + 8) < this_04 + 8) goto LAB_0;
-      if (this_04 < pCVar5) goto LAB_1;
-      *(CMqfSignatureHeader **)(this + 0x70) = this_04;
-      if (param_3) {
-        pCVar14 = (CBaseHeader *)CMqfSignatureHeader::GetNextSection(this_04);
-        if (pCVar18 < pCVar14) {
-          if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-             ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
-            WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x28,
-                    &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
-          }
-          LogIllegalPoint(L"verifypacket",0x5fb);
-          exception::exception((exception *)&local_48);
+      if (pCVar5 + *(uint *)(pCVar5 + 8) < this_03 + 8) goto LAB_0;
+      if (this_03 < pCVar5) goto LAB_1;
+      *(CMqfSignatureHeader **)(this + 0x70) = this_03;
+      if (param_3) {
+        CMqfSignatureHeader::SectionIsValid(this_03,(char *)pCVar26);
+      }
+      pCVar19 = (CBaseHeader *)
+                CMqfSignatureHeader::GetNextSection(*(CMqfSignatureHeader **)(this + 0x70));
+    }
+    if ((*(uint *)(*(longlong *)(this + 0x30) + 0x2c) & 0x2000000) != 0) {
+      pCVar6 = *(CEodHeader **)(this + 0x28);
+      if (pCVar6 + *(uint *)(pCVar6 + 8) < (CEodHeader *)(pCVar19 + 8)) goto LAB_0;
+      if (pCVar19 < pCVar6) goto LAB_1;
+      *(CBaseHeader **)(this + 0x78) = pCVar19;
+      bVar17 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+               __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>
+                                    *)&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetImpl(void)'
+                                       ::__l2::impl);
+      _Var7 = *(__uint64 *)(this + 0x78);
+      if ((bVar17) && (param_3)) {
+        uVar16 = (ulonglong)*(uint *)(_Var7 + 4) * 2;
+        if (0xffffffff < uVar16) {
                     /* WARNING: Subroutine does not return */
-          _CxxThrowException(&local_48,(ThrowInfo *)&_TI1_AVexception__);
+          ReportAndThrow("DataLength caused overflow");
         }
-      }
-      this_03 = (CExtendedAddressHeader *)
-                CMqfSignatureHeader::GetNextSection(*(CMqfSignatureHeader **)(this + 0x70));
-    }
-    lVar17 = *(longlong *)(this + 0x30);
-    if ((*(uint *)(lVar17 + 0x2c) & 0x2000000) != 0) {
-      pCVar4 = *(CBaseMqfHeader **)(this + 0x28);
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < (CBaseMqfHeader *)(this_03 + 8)) goto LAB_0;
-      if (this_03 < pCVar4) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0x78) = this_03;
-      pCVar13 = (CBaseMqfHeader *)
-                (this_03 + ((ulonglong)(*(int *)(this_03 + 4) * 2 + 0xb) & 0xfffffffc));
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < pCVar13 + 0x10) goto LAB_0;
-      if (pCVar13 < pCVar4) goto LAB_1;
-      *(CBaseMqfHeader **)(this + 0x80) = pCVar13;
-      this_03 = (CExtendedAddressHeader *)
-                (pCVar13 + ((ulonglong)(*(int *)(pCVar13 + 4) + 0x13) & 0xfffffffc));
-    }
-    if ((*(uint *)(lVar17 + 0x2c) & 0x4000000) != 0) {
-      pCVar4 = *(CBaseMqfHeader **)(this + 0x28);
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < (CBaseMqfHeader *)(this_03 + 0xc)) goto LAB_0;
-      if (this_03 < pCVar4) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0x88) = this_03;
-      this_03 = this_03 + ((ulonglong)(uint)(*(int *)(this_03 + 4) + 0xf + *(int *)(this_03 + 8)) &
-                          0xfffffffc);
-    }
-    if ((*(uint *)(lVar17 + 0x2c) & 0x8000000) != 0) {
-      pCVar4 = *(CBaseMqfHeader **)(this + 0x28);
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < (CBaseMqfHeader *)(this_03 + 0x18)) goto LAB_0;
-      if (this_03 < pCVar4) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0x90) = this_03;
-      this_03 = this_03 + ((ulonglong)(*(int *)(this_03 + 0x14) + 0x1b) & 0xfffffffc);
-    }
-    if ((*(uint *)(lVar17 + 0x2c) & 0x10000000) != 0) {
-      pCVar4 = *(CBaseMqfHeader **)(this + 0x28);
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < (CBaseMqfHeader *)(this_03 + 8)) goto LAB_0;
-      if (this_03 < pCVar4) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0x98) = this_03;
-      pCVar13 = (CBaseMqfHeader *)
-                (this_03 + ((ulonglong)(*(int *)(this_03 + 4) * 2 + 0xb) & 0xfffffffc));
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < pCVar13 + 8) goto LAB_0;
-      if (pCVar13 < pCVar4) goto LAB_1;
-      *(CBaseMqfHeader **)(this + 0xa0) = pCVar13;
-      this_03 = (CExtendedAddressHeader *)
-                (pCVar13 + ((ulonglong)(*(int *)(pCVar13 + 4) * 2 + 0xb) & 0xfffffffc));
-    }
-    if ((*(uint *)(lVar17 + 0x2c) >> 0x1d & 1) != 0) {
-      pCVar4 = *(CBaseMqfHeader **)(this + 0x28);
-      if (pCVar4 + *(uint *)(pCVar4 + 8) < (CBaseMqfHeader *)(this_03 + 0x3a)) goto LAB_0;
-      if (this_03 < pCVar4) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0xa8) = this_03;
-      this_03 = this_03 + 0x3c;
-    }
-    pCVar6 = *(COnWireExtensionHeader **)(this + 0x28);
-    if ((*(ushort *)(pCVar6 + 2) & 0x800) != 0) {
-      if (pCVar6 + *(uint *)(pCVar6 + 8) < (COnWireExtensionHeader *)(this_03 + 0xc))
+        pcVar21 = GetNextSectionPtrSafe(_Var7,8,uVar16 & 0xffffffff,(char *)pCVar26);
+      }
+      else {
+        pcVar21 = (char *)(((ulonglong)(*(int *)(_Var7 + 4) * 2 + 0xb) & 0xfffffffc) + _Var7);
+      }
+      pcVar8 = *(char **)(this + 0x28);
+      if (pcVar8 + *(uint *)(pcVar8 + 8) < pcVar21 + 0x10) goto LAB_0;
+      if (pcVar21 < pcVar8) goto LAB_1;
+      *(char **)(this + 0x80) = pcVar21;
+      bVar17 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+               __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>
+                                    *)&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetImpl(void)'
+                                       ::__l2::impl);
+      _Var7 = *(__uint64 *)(this + 0x80);
+      if ((bVar17) && (param_3)) {
+        pCVar19 = (CBaseHeader *)
+                  GetNextSectionPtrSafe(_Var7,0x10,(ulonglong)*(uint *)(_Var7 + 4),(char *)pCVar26);
+      }
+      else {
+        pCVar19 = (CBaseHeader *)(((ulonglong)(*(int *)(_Var7 + 4) + 0x13) & 0xfffffffc) + _Var7);
+      }
+    }
+    if ((*(uint *)(*(longlong *)(this + 0x30) + 0x2c) & 0x4000000) != 0) {
+      pCVar6 = *(CEodHeader **)(this + 0x28);
+      if (pCVar6 + *(uint *)(pCVar6 + 8) < (CEodHeader *)(pCVar19 + 0xc)) goto LAB_0;
+      if (pCVar19 < pCVar6) goto LAB_1;
+      *(CBaseHeader **)(this + 0x88) = pCVar19;
+      bVar17 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+               __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>
+                                    *)&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetImpl(void)'
+                                       ::__l2::impl);
+      if (bVar17) {
+        pCVar6 = *(CEodHeader **)(this + 0x88);
+        if (param_3) {
+          pCVar19 = (CBaseHeader *)CEodHeader::GetNextSectionSafe(pCVar6,(char *)pCVar26);
+        }
+        else {
+          pCVar19 = (CBaseHeader *)
+                    (pCVar6 + ((ulonglong)(uint)(*(int *)(pCVar6 + 4) + 0xf + *(int *)(pCVar6 + 8))
+                              & 0xfffffffc));
+        }
+      }
+      else {
+        lVar25 = *(longlong *)(this + 0x88);
+        pCVar19 = (CBaseHeader *)
+                  (((ulonglong)(uint)(*(int *)(lVar25 + 4) + 0xf + *(int *)(lVar25 + 8)) &
+                   0xfffffffc) + lVar25);
+      }
+    }
+    if ((*(uint *)(*(longlong *)(this + 0x30) + 0x2c) & 0x8000000) != 0) {
+      pCVar6 = *(CEodHeader **)(this + 0x28);
+      if (pCVar6 + *(uint *)(pCVar6 + 8) < (CEodHeader *)(pCVar19 + 0x18)) goto LAB_0;
+      if (pCVar19 < pCVar6) goto LAB_1;
+      *(CBaseHeader **)(this + 0x90) = pCVar19;
+      bVar17 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+               __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>
+                                    *)&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetImpl(void)'
+                                       ::__l2::impl);
+      _Var7 = *(__uint64 *)(this + 0x90);
+      if ((bVar17) && (param_3)) {
+        pCVar19 = (CBaseHeader *)
+                  GetNextSectionPtrSafe
+                            (_Var7,0x18,(ulonglong)*(uint *)(_Var7 + 0x14),(char *)pCVar26);
+      }
+      else {
+        pCVar19 = (CBaseHeader *)(((ulonglong)(*(int *)(_Var7 + 0x14) + 0x1b) & 0xfffffffc) + _Var7)
+        ;
+      }
+    }
+    if ((*(uint *)(*(longlong *)(this + 0x30) + 0x2c) & 0x10000000) != 0) {
+      pCVar6 = *(CEodHeader **)(this + 0x28);
+      if (pCVar6 + *(uint *)(pCVar6 + 8) < (CEodHeader *)(pCVar19 + 8)) goto LAB_0;
+      if (pCVar19 < pCVar6) goto LAB_1;
+      *(CBaseHeader **)(this + 0x98) = pCVar19;
+      bVar17 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+               __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>
+                                    *)&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetImpl(void)'
+                                       ::__l2::impl);
+      pCVar22 = *(CSoapSection **)(this + 0x98);
+      if ((bVar17) && (param_3)) {
+        pCVar22 = (CSoapSection *)CSoapSection::GetNextSectionSafe(pCVar22,(char *)pCVar26);
+      }
+      else {
+        pCVar22 = pCVar22 + ((ulonglong)(*(int *)(pCVar22 + 4) * 2 + 0xb) & 0xfffffffc);
+      }
+      pCVar9 = *(CSoapSection **)(this + 0x28);
+      if (pCVar9 + *(uint *)(pCVar9 + 8) < pCVar22 + 8) goto LAB_0;
+      if (pCVar22 < pCVar9) goto LAB_1;
+      *(CSoapSection **)(this + 0xa0) = pCVar22;
+      bVar17 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+               __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>
+                                    *)&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetImpl(void)'
+                                       ::__l2::impl);
+      pCVar22 = *(CSoapSection **)(this + 0xa0);
+      if ((bVar17) && (param_3)) {
+        pCVar19 = (CBaseHeader *)CSoapSection::GetNextSectionSafe(pCVar22,(char *)pCVar26);
+      }
+      else {
+        pCVar19 = (CBaseHeader *)
+                  (pCVar22 + ((ulonglong)(*(int *)(pCVar22 + 4) * 2 + 0xb) & 0xfffffffc));
+      }
+    }
+    if ((*(uint *)(*(longlong *)(this + 0x30) + 0x2c) >> 0x1d & 1) != 0) {
+      pCVar6 = *(CEodHeader **)(this + 0x28);
+      if (pCVar6 + *(uint *)(pCVar6 + 8) < (CEodHeader *)(pCVar19 + 0x3a)) goto LAB_0;
+      if (pCVar19 < pCVar6) goto LAB_1;
+      *(CBaseHeader **)(this + 0xa8) = pCVar19;
+      bVar17 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+               __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>
+                                    *)&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetImpl(void)'
+                                       ::__l2::impl);
+      if ((bVar17) && (param_3)) {
+        pCVar19 = (CBaseHeader *)
+                  GetNextSectionPtrSafe(*(__uint64 *)(this + 0xa8),0x3a,0,(char *)pCVar26);
+      }
+      else {
+        pCVar19 = (CBaseHeader *)(*(__uint64 *)(this + 0xa8) + 0x3c);
+      }
+    }
+    pCVar10 = *(COnWireExtensionHeader **)(this + 0x28);
+    if ((*(ushort *)(pCVar10 + 2) & 0x800) != 0) {
+      if (pCVar10 + *(uint *)(pCVar10 + 8) < (COnWireExtensionHeader *)(pCVar19 + 0xc))
       goto LAB_0;
-      if (this_03 < pCVar6) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0xb0) = this_03;
-      if (param_3) {
-        COnWireExtensionHeader::SectionIsValid((COnWireExtensionHeader *)this_03,(char *)pCVar18);
-      }
-      local_48 = *(CExtendedAddressHeader **)(this + 0xb0);
-      local_40 = (ulonglong)*(uint *)local_48;
-      this_03 = (CExtendedAddressHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
+      if (pCVar19 < pCVar10) goto LAB_1;
+      *(CBaseHeader **)(this + 0xb0) = pCVar19;
+      if (param_3) {
+        COnWireExtensionHeader::SectionIsValid((COnWireExtensionHeader *)pCVar19,(char *)pCVar26);
+      }
+      local_38 = *(CBaseHeader **)(this + 0xb0);
+      local_30 = (ulonglong)*(uint *)local_38;
+      pCVar19 = (CBaseHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
     }
     if ((*(longlong *)(this + 0xb0) != 0) && ((*(byte *)(*(longlong *)(this + 0xb0) + 8) & 1) != 0))
     {
-      pCVar7 = *(CMsgGroupHeader **)(this + 0x28);
-      if (pCVar7 + *(uint *)(pCVar7 + 8) < (CMsgGroupHeader *)(this_03 + 8)) goto LAB_0;
-      if (this_03 < pCVar7) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0xb8) = this_03;
-      if (param_3) {
-        CMsgGroupHeader::SectionIsValid((CMsgGroupHeader *)this_03,(char *)pCVar18);
-      }
-      local_48 = *(CExtendedAddressHeader **)(this + 0xb8);
-      local_40 = (ulonglong)*(uint *)local_48;
-      this_03 = (CExtendedAddressHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
-    }
-    pCVar8 = *(COnDiskExtensionHeader **)(this + 0x28);
-    if ((*(ushort *)(pCVar8 + 2) & 0x1000) != 0) {
-      if (pCVar8 + *(uint *)(pCVar8 + 8) < (COnDiskExtensionHeader *)(this_03 + 0xc))
+      pCVar11 = *(CMsgGroupHeader **)(this + 0x28);
+      if (pCVar11 + *(uint *)(pCVar11 + 8) < (CMsgGroupHeader *)(pCVar19 + 8)) goto LAB_0;
+      if (pCVar19 < pCVar11) goto LAB_1;
+      *(CBaseHeader **)(this + 0xb8) = pCVar19;
+      if (param_3) {
+        CMsgGroupHeader::SectionIsValid((CMsgGroupHeader *)pCVar19,(char *)pCVar26);
+      }
+      local_38 = *(CBaseHeader **)(this + 0xb8);
+      local_30 = (ulonglong)*(uint *)local_38;
+      pCVar19 = (CBaseHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
+    }
+    pCVar12 = *(COnDiskExtensionHeader **)(this + 0x28);
+    if ((*(ushort *)(pCVar12 + 2) & 0x1000) != 0) {
+      if (pCVar12 + *(uint *)(pCVar12 + 8) < (COnDiskExtensionHeader *)(pCVar19 + 0xc))
       goto LAB_0;
-      if (this_03 < pCVar8) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0xc0) = this_03;
-      if (param_3) {
-        COnDiskExtensionHeader::SectionIsValid((COnDiskExtensionHeader *)this_03,(char *)pCVar18);
-      }
-      local_48 = *(CExtendedAddressHeader **)(this + 0xc0);
-      local_40 = (ulonglong)*(uint *)local_48;
-      this_03 = (CExtendedAddressHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
+      if (pCVar19 < pCVar12) goto LAB_1;
+      *(CBaseHeader **)(this + 0xc0) = pCVar19;
+      if (param_3) {
+        COnDiskExtensionHeader::SectionIsValid((COnDiskExtensionHeader *)pCVar19,(char *)pCVar26);
+      }
+      local_38 = *(CBaseHeader **)(this + 0xc0);
+      local_30 = (ulonglong)*(uint *)local_38;
+      pCVar19 = (CBaseHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
     }
     if ((*(longlong *)(this + 0xc0) != 0) && ((*(byte *)(*(longlong *)(this + 0xc0) + 8) & 2) != 0))
     {
-      pCVar9 = *(CSubQueueHeader **)(this + 0x28);
-      if (pCVar9 + *(uint *)(pCVar9 + 8) < (CSubQueueHeader *)(this_03 + 0x94)) goto LAB_0;
-      if (this_03 < pCVar9) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 0xd0) = this_03;
-      if (param_3) {
-        CSubQueueHeader::SectionIsValid((CSubQueueHeader *)this_03,(char *)pCVar18);
-      }
-      local_48 = *(CExtendedAddressHeader **)(this + 0xd0);
-      local_40 = (ulonglong)*(uint *)local_48;
-      this_03 = (CExtendedAddressHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
+      pCVar13 = *(CSubQueueHeader **)(this + 0x28);
+      if (pCVar13 + *(uint *)(pCVar13 + 8) < (CSubQueueHeader *)(pCVar19 + 0x94))
+      goto LAB_0;
+      if (pCVar19 < pCVar13) goto LAB_1;
+      *(CBaseHeader **)(this + 0xd0) = pCVar19;
+      if (param_3) {
+        CSubQueueHeader::SectionIsValid((CSubQueueHeader *)pCVar19,(char *)pCVar26);
+      }
+      local_38 = *(CBaseHeader **)(this + 0xd0);
+      local_30 = (ulonglong)*(uint *)local_38;
+      pCVar19 = (CBaseHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
     }
     if ((*(longlong *)(this + 0xc0) != 0) && ((*(byte *)(*(longlong *)(this + 0xc0) + 8) & 1) != 0))
     {
-      pCVar10 = *(CMsgDeadletterHeader **)(this + 0x28);
-      if (pCVar10 + *(uint *)(pCVar10 + 8) < (CMsgDeadletterHeader *)(this_03 + 4))
+      pCVar14 = *(CMsgDeadletterHeader **)(this + 0x28);
+      if (pCVar14 + *(uint *)(pCVar14 + 8) < (CMsgDeadletterHeader *)(pCVar19 + 4))
       goto LAB_0;
-      if (this_03 < pCVar10) goto LAB_1;
-      *(CExtendedAddressHeader **)(this + 200) = this_03;
-      if (param_3) {
-        CMsgDeadletterHeader::SectionIsValid((CMsgDeadletterHeader *)this_03,(char *)pCVar18);
-      }
-      local_48 = *(CExtendedAddressHeader **)(this + 200);
-      local_40 = (ulonglong)*(uint *)local_48;
-      this_03 = (CExtendedAddressHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
+      if (pCVar19 < pCVar14) goto LAB_1;
+      *(CBaseHeader **)(this + 200) = pCVar19;
+      if (param_3) {
+        CMsgDeadletterHeader::SectionIsValid((CMsgDeadletterHeader *)pCVar19,(char *)pCVar26);
+      }
+      local_38 = *(CBaseHeader **)(this + 200);
+      local_30 = (ulonglong)*(uint *)local_38;
+      pCVar19 = (CBaseHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
     }
     if ((*(longlong *)(this + 0xc0) != 0) &&
        ((*(byte *)(*(longlong *)(this + 0xc0) + 8) & 0x10) != 0)) {
-      pCVar11 = *(CExtendedAddressHeader **)(this + 0x28);
-      if (pCVar11 + *(uint *)(pCVar11 + 8) < this_03 + 0x20) {
+      pCVar15 = *(CExtendedAddressHeader **)(this + 0x28);
+      if (pCVar15 + *(uint *)(pCVar15 + 8) < (CExtendedAddressHeader *)(pCVar19 + 0x20)) {
 LAB_0:
                     /* WARNING: Subroutine does not return */
         ReportAndThrow("section_cast: buffer to small for casting");
       }
-      if (this_03 < pCVar11) {
+      if (pCVar19 < pCVar15) {
 LAB_1:
                     /* WARNING: Subroutine does not return */
         ReportAndThrow("section_cast: section is before packet start");
       }
-      *(CExtendedAddressHeader **)(this + 0xd8) = this_03;
-      if (param_3) {
-        CExtendedAddressHeader::SectionIsValid(this_03,(char *)pCVar18);
-      }
-      local_48 = *(CExtendedAddressHeader **)(this + 0xd8);
-      local_40 = (ulonglong)*(uint *)local_48;
-      this_03 = (CExtendedAddressHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
+      *(CBaseHeader **)(this + 0xd8) = pCVar19;
+      if (param_3) {
+        CExtendedAddressHeader::SectionIsValid((CExtendedAddressHeader *)pCVar19,(char *)pCVar26);
+      }
+      local_38 = *(CBaseHeader **)(this + 0xd8);
+      local_30 = (ulonglong)*(uint *)local_38;
+      pCVar19 = (CBaseHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
     }
     if ((param_5 != (_TA_ADDRESS *)0x0) && (param_6 == 0)) {
-      *(undefined8 *)this_03 = 0xc;
-      *(uint *)(this_03 + 8) = 0;
-      *(CExtendedAddressHeader **)(this + 0xc0) = this_03;
-      local_40 = (ulonglong)*(uint *)this_03;
-      local_48 = this_03;
-      puVar15 = (undefined4 *)SafeAddPointers(2,(__uint64 *)&local_48);
-      *(undefined8 *)(puVar15 + 1) = 0;
-      *(undefined8 *)(puVar15 + 3) = 0;
-      *(undefined2 *)(puVar15 + 5) = 0;
-      *(undefined2 *)(puVar15 + 0x15) = 0;
-      *puVar15 = 0x94;
-      *(undefined4 **)(this + 0xd0) = puVar15;
+      bVar17 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::
+               __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>
+                                    *)&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_OOBRWFixes>::GetImpl(void)'
+                                       ::__l2::impl);
+      if ((bVar17) && (pCVar26 < pCVar19)) {
+                    /* WARNING: Subroutine does not return */
+        ReportAndThrow("buffer is too small to add disk extension header");
+      }
+      *(undefined8 *)pCVar19 = 0xc;
+      *(uint *)(pCVar19 + 8) = 0;
+      *(CBaseHeader **)(this + 0xc0) = pCVar19;
+      local_30 = (ulonglong)*(uint *)pCVar19;
+      local_38 = pCVar19;
+      puVar23 = (undefined4 *)SafeAddPointers(2,(__uint64 *)&local_38);
+      *(undefined8 *)(puVar23 + 1) = 0;
+      *(undefined8 *)(puVar23 + 3) = 0;
+      *puVar23 = 0x94;
+      *(undefined2 *)(puVar23 + 5) = 0;
+      *(undefined2 *)(puVar23 + 0x15) = 0;
+      *(undefined4 **)(this + 0xd0) = puVar23;
       *(uint *)(*(longlong *)(this + 0xc0) + 8) = *(uint *)(*(longlong *)(this + 0xc0) + 8) | 2;
-      local_48 = *(CExtendedAddressHeader **)(this + 0xd0);
-      local_40 = (ulonglong)*(uint *)local_48;
-      this_03 = (CExtendedAddressHeader *)SafeAddPointers(2,(__uint64 *)&local_48);
-      memcpy(this_03 + 4,param_5,(ulonglong)*(ushort *)param_5 + 8);
-      *(uint *)this_03 = 0x20;
-      *(CExtendedAddressHeader **)(this + 0xd8) = this_03;
+      local_38 = *(CBaseHeader **)(this + 0xd0);
+      local_30 = (ulonglong)*(uint *)local_38;
+      pCVar19 = (CBaseHeader *)SafeAddPointers(2,(__uint64 *)&local_38);
+      memcpy(pCVar19 + 4,param_5,(ulonglong)*(ushort *)param_5 + 8);
+      *(uint *)pCVar19 = 0x20;
+      *(CBaseHeader **)(this + 0xd8) = pCVar19;
       *(uint *)(*(longlong *)(this + 0xc0) + 8) = *(uint *)(*(longlong *)(this + 0xc0) + 8) | 0x10;
       *(ushort *)(*(longlong *)(this + 0x28) + 2) =
            *(ushort *)(*(longlong *)(this + 0x28) + 2) | 0x1000;
       *(int *)(*(longlong *)(this + 0x28) + 8) = *(int *)(*(longlong *)(this + 0x28) + 8) + 0xc0;
     }
     if (((byte)(*(CBaseHeader **)(this + 0x28))[2] & 0x10) != 0) {
-      pCVar16 = CBaseHeader::section_cast<CSessionSection*___ptr64>
-                          (*(CBaseHeader **)(this + 0x28),this_03);
-      *(CSessionSection **)(this + 0xe0) = pCVar16;
+      pCVar24 = CBaseHeader::section_cast<CSessionSection*___ptr64>
+                          (*(CBaseHeader **)(this + 0x28),pCVar19);
+      *(CSessionSection **)(this + 0xe0) = pCVar24;
     }
   }
   if (param_3) {
     PacketIsValid(this);
   }
   return this;
 }
 

```


## CMsgDeadletterHeader::SectionIsValid

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.41|
|i_ratio|0.23|
|m_ratio|0.93|
|b_ratio|0.69|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|SectionIsValid|SectionIsValid|
|fullname|CMsgDeadletterHeader::SectionIsValid|CMsgDeadletterHeader::SectionIsValid|
|refcount|2|2|
|`length`|273|311|
|`called`|LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>SafeAddPointers<br>WPP_SF_<br>_CxxThrowException<br>mqwcslen|CheckNullTerminator<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>SafeAddPointers<br>WPP_SF_<br>_CxxThrowException<br>mqwcslen<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled|
|calling|CQmPacket::CQmPacket|CQmPacket::CQmPacket|
|paramcount|2|2|
|`address`|180083a0c|180085cf0|
|sig|void __thiscall SectionIsValid(CMsgDeadletterHeader * this, char * param_1)|void __thiscall SectionIsValid(CMsgDeadletterHeader * this, char * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CMsgDeadletterHeader::SectionIsValid Called Diff


```diff
--- CMsgDeadletterHeader::SectionIsValid called
+++ CMsgDeadletterHeader::SectionIsValid called
@@ -0,0 +1 @@
+CheckNullTerminator
@@ -6,0 +8 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled
```


### CMsgDeadletterHeader::SectionIsValid Diff


```diff
--- CMsgDeadletterHeader::SectionIsValid
+++ CMsgDeadletterHeader::SectionIsValid
@@ -1,40 +1,48 @@
 
 /* public: void __cdecl CMsgDeadletterHeader::SectionIsValid(char * __ptr64)const __ptr64 */
 
 void __thiscall CMsgDeadletterHeader::SectionIsValid(CMsgDeadletterHeader *this,char *param_1)
 
 {
-  uint uVar1;
-  char *pcVar2;
+  bool bVar1;
+  uint uVar2;
+  char *pcVar3;
   CMsgDeadletterHeader *local_28;
   ulonglong local_20;
   
-  uVar1 = mqwcslen((wchar_t *)(this + 4));
-  if (param_1 < this + (ulonglong)(uVar1 + 1) * 2) {
-    if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-       ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
-      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x2d,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+  bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::
+          __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> *)
+                              &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetImpl(void)'
+                               ::__l2::impl);
+  if (bVar1) {
+    CheckNullTerminator((uchar *)(this + 4),(uchar *)param_1);
+  }
+  uVar2 = mqwcslen((wchar_t *)(this + 4));
+  if (this + (ulonglong)(uVar2 + 1) * 2 <= param_1) {
+    local_20 = (ulonglong)*(uint *)this;
+    local_28 = this;
+    pcVar3 = (char *)SafeAddPointers(2,(__uint64 *)&local_28);
+    if (pcVar3 <= param_1) {
+      return;
     }
-    LogIllegalPoint(L"verifypacket",0x600);
-    exception::exception((exception *)&local_28);
-                    /* WARNING: Subroutine does not return */
-    _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
-  }
-  local_20 = (ulonglong)*(uint *)this;
-  local_28 = this;
-  pcVar2 = (char *)SafeAddPointers(2,(__uint64 *)&local_28);
-  if (param_1 < pcVar2) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x2e,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x601);
     exception::exception((exception *)&local_28);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
   }
-  return;
+  if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+     ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
+    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x2d,
+            &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
+  }
+  LogIllegalPoint(L"verifypacket",0x600);
+  exception::exception((exception *)&local_28);
+                    /* WARNING: Subroutine does not return */
+  _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
 }
 

```


## CUserHeader::QueueSize

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,calling,called|
|ratio|0.76|
|i_ratio|0.32|
|m_ratio|0.97|
|b_ratio|0.89|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|QueueSize|QueueSize|
|fullname|CUserHeader::QueueSize|CUserHeader::QueueSize|
|refcount|27|27|
|`length`|298|274|
|`called`|GetSafeDataAndAdvancePointer<unsigned_long><br>GetSafeDataAndAdvancePointer<unsigned_short><br>ReportAndThrow|GetSafeDataAndAdvancePointer<unsigned_long><br>GetSafeDataAndAdvancePointer<unsigned_short><br>GetSafeDataAndAdvancePointer<wchar_t><br>ReportAndThrow|
|`calling`|BuildUserHeaderSection<br>CUserHeader::GetAdminQueue<br>CUserHeader::GetNextSection<br>ConnectorHash<br>GetInternalMessageSucceeded<br>ResponseMqfHash<br>VerifySignature10<br>VerifySignature20<br>operator<<<br>operator<<|BuildUserHeaderSection<br>CUserHeader::GetAdminQueue<br>CUserHeader::GetNextSection<br>ConnectorHash<br>GetInternalMessageSucceeded<br>ResponseMqfHash<br>VerifySignature10<br>VerifySignature20<br>operator<<<br>operator<<|
|paramcount|4|4|
|`address`|18003901c|18003cbe4|
|sig|int __cdecl QueueSize(bool param_1, ulong param_2, uchar * param_3, uchar * param_4)|int __cdecl QueueSize(bool param_1, ulong param_2, uchar * param_3, uchar * param_4)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CUserHeader::QueueSize Called Diff


```diff
--- CUserHeader::QueueSize called
+++ CUserHeader::QueueSize called
@@ -2,0 +3 @@
+GetSafeDataAndAdvancePointer<wchar_t>
```


### CUserHeader::QueueSize Calling Diff


```diff

```


### CUserHeader::QueueSize Diff


```diff
--- CUserHeader::QueueSize
+++ CUserHeader::QueueSize
@@ -1,58 +1,51 @@
 
 /* private: static int __cdecl CUserHeader::QueueSize(bool,unsigned long,unsigned char const *
    __ptr64,unsigned char * __ptr64) */
 
 int __cdecl CUserHeader::QueueSize(bool param_1,ulong param_2,uchar *param_3,uchar *param_4)
 
 {
-  short *psVar1;
+  wchar_t wVar1;
   ulong local_res8 [2];
   
   if (param_1) {
     return 8;
   }
   if (1 < param_2) {
     if (param_2 < 5) {
       if ((param_4 != (uchar *)0x0) &&
          (GetSafeDataAndAdvancePointer<unsigned_long>(param_3,param_4,local_res8),
          local_res8[0] == 0)) {
                     /* WARNING: Subroutine does not return */
         ReportAndThrow("User section is not valid: Uniquifier can not be 0");
       }
       return 4;
     }
     if (param_2 == 5) {
       return 0x10;
     }
     if (param_2 == 6) {
       if ((param_4 != (uchar *)0x0) &&
          (GetSafeDataAndAdvancePointer<unsigned_long>(param_3 + 0x10,param_4,local_res8),
          local_res8[0] == 0)) {
                     /* WARNING: Subroutine does not return */
         ReportAndThrow("User section is not valid: private queue Uniquifier can not be 0");
       }
       return 0x14;
     }
     if (param_2 == 7) {
       GetSafeDataAndAdvancePointer<unsigned_short>(param_3,param_4,(ushort *)local_res8);
-      if (param_4 != (uchar *)0x0) {
-        psVar1 = (short *)(param_3 + (ushort)local_res8[0]);
-        if (((ulonglong)psVar1 & 1) != 0) {
+      wVar1 = (wchar_t)local_res8[0];
+      if ((param_4 != (uchar *)0x0) &&
+         (GetSafeDataAndAdvancePointer<wchar_t>
+                    (param_3 + (ushort)(wchar_t)local_res8[0],param_4,(wchar_t *)local_res8),
+         (wchar_t)local_res8[0] != L'\0')) {
                     /* WARNING: Subroutine does not return */
-          ReportAndThrow("ChekPtrIsAlligned: pointer is not alligned for the given poindted type");
-        }
-        if (param_4 + -2 < psVar1) {
-                    /* WARNING: Subroutine does not return */
-          ReportAndThrow("GetSafeDataAndAdvancePointer: too small buffer to read from");
-        }
-        if (*psVar1 != 0) {
-                    /* WARNING: Subroutine does not return */
-          ReportAndThrow("User section is not valid: Direct queue need to be NULL terminated");
-        }
+        ReportAndThrow("User section is not valid: Direct queue need to be NULL terminated");
       }
-      return (ushort)((ushort)local_res8[0] + 2) + 3 & 0xfffffffc;
+      return (ushort)(wVar1 + L'\x02') + 3 & 0xfffffffc;
     }
   }
   return 0;
 }
 

```


## CMsgGroupHeader::SectionIsValid

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.41|
|i_ratio|0.23|
|m_ratio|0.93|
|b_ratio|0.69|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|SectionIsValid|SectionIsValid|
|fullname|CMsgGroupHeader::SectionIsValid|CMsgGroupHeader::SectionIsValid|
|refcount|2|2|
|`length`|273|311|
|`called`|LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>SafeAddPointers<br>WPP_SF_<br>_CxxThrowException<br>mqwcslen|CheckNullTerminator<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>SafeAddPointers<br>WPP_SF_<br>_CxxThrowException<br>mqwcslen<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled|
|calling|CQmPacket::CQmPacket|CQmPacket::CQmPacket|
|paramcount|2|2|
|`address`|180083b28|180085e30|
|sig|void __thiscall SectionIsValid(CMsgGroupHeader * this, char * param_1)|void __thiscall SectionIsValid(CMsgGroupHeader * this, char * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CMsgGroupHeader::SectionIsValid Called Diff


```diff
--- CMsgGroupHeader::SectionIsValid called
+++ CMsgGroupHeader::SectionIsValid called
@@ -0,0 +1 @@
+CheckNullTerminator
@@ -6,0 +8 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::__private_IsEnabled
```


### CMsgGroupHeader::SectionIsValid Diff


```diff
--- CMsgGroupHeader::SectionIsValid
+++ CMsgGroupHeader::SectionIsValid
@@ -1,40 +1,48 @@
 
 /* public: void __cdecl CMsgGroupHeader::SectionIsValid(char * __ptr64)const __ptr64 */
 
 void __thiscall CMsgGroupHeader::SectionIsValid(CMsgGroupHeader *this,char *param_1)
 
 {
-  uint uVar1;
-  char *pcVar2;
+  bool bVar1;
+  uint uVar2;
+  char *pcVar3;
   CMsgGroupHeader *local_28;
   ulonglong local_20;
   
-  uVar1 = mqwcslen((wchar_t *)(this + 8));
-  if (param_1 < this + (ulonglong)(uVar1 + 1) * 2) {
-    if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-       ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
-      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x2a,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+  bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::
+          __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix> *)
+                              &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_NullTermFix>::GetImpl(void)'
+                               ::__l2::impl);
+  if (bVar1) {
+    CheckNullTerminator((uchar *)(this + 8),(uchar *)param_1);
+  }
+  uVar2 = mqwcslen((wchar_t *)(this + 8));
+  if (this + (ulonglong)(uVar2 + 1) * 2 <= param_1) {
+    local_20 = (ulonglong)*(uint *)this;
+    local_28 = this;
+    pcVar3 = (char *)SafeAddPointers(2,(__uint64 *)&local_28);
+    if (pcVar3 <= param_1) {
+      return;
     }
-    LogIllegalPoint(L"verifypacket",0x5fd);
-    exception::exception((exception *)&local_28);
-                    /* WARNING: Subroutine does not return */
-    _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
-  }
-  local_20 = (ulonglong)*(uint *)this;
-  local_28 = this;
-  pcVar2 = (char *)SafeAddPointers(2,(__uint64 *)&local_28);
-  if (param_1 < pcVar2) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x2b,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5fe);
     exception::exception((exception *)&local_28);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
   }
-  return;
+  if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+     ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
+    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x2a,
+            &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
+  }
+  LogIllegalPoint(L"verifypacket",0x5fd);
+  exception::exception((exception *)&local_28);
+                    /* WARNING: Subroutine does not return */
+  _CxxThrowException(&local_28,(ThrowInfo *)&_TI1_AVexception__);
 }
 

```


## StringCchVPrintfW

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.39|
|i_ratio|0.07|
|m_ratio|0.67|
|b_ratio|0.33|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|StringCchVPrintfW|StringCchVPrintfW|
|fullname|StringCchVPrintfW|StringCchVPrintfW|
|refcount|4|4|
|`length`|123|56|
|`called`|MSVCRT.DLL::_vsnwprintf|StringVPrintfWorkerW<br>StringValidateDestW|
|calling|CString::FormatV<br>UtlSprintfAppendInternal<CPreAllocatedResizeBuffer<wchar_t>,wchar_t><br>wil::details::LogStringPrintf|CString::FormatV<br>UtlSprintfAppendInternal<CPreAllocatedResizeBuffer<wchar_t>,wchar_t><br>wil::details::LogStringPrintf|
|paramcount|4|4|
|`address`|18005963c|18003e644|
|sig|long __cdecl StringCchVPrintfW(wchar_t * param_1, __uint64 param_2, wchar_t * param_3, char * param_4)|long __cdecl StringCchVPrintfW(wchar_t * param_1, __uint64 param_2, wchar_t * param_3, char * param_4)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### StringCchVPrintfW Called Diff


```diff
--- StringCchVPrintfW called
+++ StringCchVPrintfW called
@@ -1 +1,2 @@
-MSVCRT.DLL::_vsnwprintf
+StringVPrintfWorkerW
+StringValidateDestW
```


### StringCchVPrintfW Diff


```diff
--- StringCchVPrintfW
+++ StringCchVPrintfW
@@ -1,32 +1,21 @@
 
 /* long __cdecl StringCchVPrintfW(wchar_t * __ptr64,unsigned __int64,wchar_t const * __ptr64,char *
    __ptr64) */
 
 long __cdecl StringCchVPrintfW(wchar_t *param_1,__uint64 param_2,wchar_t *param_3,char *param_4)
 
 {
-  ulonglong _Count;
-  int iVar1;
-  long lVar2;
+  long lVar1;
   
-  if (param_2 - 1 < 0x7fffffff) {
-    _Count = param_2 - 1;
-    lVar2 = 0;
-    iVar1 = _vsnwprintf(param_1,_Count,param_3,param_4);
-    if ((iVar1 < 0) || (_Count < (ulonglong)(longlong)iVar1)) {
-      lVar2 = -0x7ff8ff86;
-    }
-    else if ((longlong)iVar1 != _Count) {
-      return 0;
-    }
-    param_1[_Count] = L'\0';
-  }
-  else {
-    lVar2 = -0x7ff8ffa9;
+  lVar1 = StringValidateDestW(param_1,param_2,(size_t)param_3);
+  if (lVar1 < 0) {
     if (param_2 != 0) {
       *param_1 = L'\0';
     }
   }
-  return lVar2;
+  else {
+    lVar1 = StringVPrintfWorkerW(param_1,param_2,(size_t *)param_3,param_3,param_4);
+  }
+  return lVar1;
 }
 

```


## StringCchCopyA

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,refcount,length,address,called|
|ratio|0.42|
|i_ratio|0.04|
|m_ratio|0.7|
|b_ratio|0.26|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|StringCchCopyA|StringCchCopyA|
|fullname|StringCchCopyA|StringCchCopyA|
|`refcount`|5|6|
|`length`|90|49|
|`called`||StringCopyWorkerA<br>wil::details::WilStringValidateDestA|
|calling|CSessionMgr::GetAndAllocateCharKeyValue<br>ConstructAppIdPe<br>newstr<br>wil::details::GetModuleInformation|CSessionMgr::GetAndAllocateCharKeyValue<br>ConstructAppIdPe<br>newstr<br>wil::details::GetModuleInformation|
|paramcount|3|3|
|`address`|180049ecc|18003e5c0|
|sig|long __cdecl StringCchCopyA(char * param_1, __uint64 param_2, char * param_3)|long __cdecl StringCchCopyA(char * param_1, __uint64 param_2, char * param_3)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### StringCchCopyA Called Diff


```diff
--- StringCchCopyA called
+++ StringCchCopyA called
@@ -0,0 +1,2 @@
+StringCopyWorkerA
+wil::details::WilStringValidateDestA
```


### StringCchCopyA Diff


```diff
--- StringCchCopyA
+++ StringCchCopyA
@@ -1,32 +1,21 @@
 
 /* long __cdecl StringCchCopyA(char * __ptr64,unsigned __int64,char const * __ptr64) */
 
 long __cdecl StringCchCopyA(char *param_1,__uint64 param_2,char *param_3)
 
 {
-  char *pcVar1;
-  longlong lVar2;
-  longlong lVar3;
+  long lVar1;
+  size_t in_stack_ffffffffffffffe8;
   
-  if (0x7ffffffe < param_2 - 1) {
+  lVar1 = wil::details::WilStringValidateDestA(param_1,param_2,(size_t)param_3);
+  if (lVar1 < 0) {
     if (param_2 != 0) {
       *param_1 = '\0';
     }
-    return -0x7ff8ffa9;
   }
-  lVar3 = 0x7ffffffe - param_2;
-  lVar2 = (longlong)param_3 - (longlong)param_1;
-  do {
-    if ((lVar3 + param_2 == 0) || (param_1[lVar2] == '\0')) break;
-    *param_1 = param_1[lVar2];
-    param_1 = param_1 + 1;
-    param_2 = param_2 - 1;
-  } while (param_2 != 0);
-  pcVar1 = param_1 + -1;
-  if (param_2 != 0) {
-    pcVar1 = param_1;
+  else {
+    lVar1 = StringCopyWorkerA(param_1,param_2,(size_t *)param_3,param_3,in_stack_ffffffffffffffe8);
   }
-  *pcVar1 = '\0';
-  return ~-(uint)(param_2 != 0) & 0x8007007a;
+  return lVar1;
 }
 

```


## CSecurityHeader::SectionIsValid

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.77|
|i_ratio|0.22|
|m_ratio|0.98|
|b_ratio|0.6|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|SectionIsValid|SectionIsValid|
|fullname|CSecurityHeader::SectionIsValid|CSecurityHeader::SectionIsValid|
|refcount|2|2|
|`length`|766|812|
|`called`|ADVAPI32.DLL::IsValidSid<br>CSecurityHeader::GetNextSection<br>CSecurityHeader::GetSectionExPtr<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>WPP_SF_d<br>_CxxThrowException<br>pGetSubSectionEx|<details><summary>Expand for full list:<br>ADVAPI32.DLL::IsValidSid<br>CSecurityHeader::GetNextSection<br>CSecurityHeader::GetNextSectionSafe<br>CSecurityHeader::GetSectionExPtr<br>LogIllegalPoint<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>WPP_SF_d<br>_CxxThrowException<br>pGetSubSectionEx<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled</summary></details>|
|calling|CQmPacket::CQmPacket|CQmPacket::CQmPacket|
|paramcount|2|2|
|`address`|180083ec8|180086224|
|sig|void __thiscall SectionIsValid(CSecurityHeader * this, char * param_1)|void __thiscall SectionIsValid(CSecurityHeader * this, char * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CSecurityHeader::SectionIsValid Called Diff


```diff
--- CSecurityHeader::SectionIsValid called
+++ CSecurityHeader::SectionIsValid called
@@ -2,0 +3 @@
+CSecurityHeader::GetNextSectionSafe
@@ -9,0 +11 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::__private_IsEnabled
```


### CSecurityHeader::SectionIsValid Diff


```diff
--- CSecurityHeader::SectionIsValid
+++ CSecurityHeader::SectionIsValid
@@ -1,91 +1,102 @@
 
 /* public: void __cdecl CSecurityHeader::SectionIsValid(char * __ptr64)const __ptr64 */
 
 void __thiscall CSecurityHeader::SectionIsValid(CSecurityHeader *this,char *param_1)
 
 {
-  BOOL BVar1;
-  char *pcVar2;
-  uchar *puVar3;
+  bool bVar1;
+  BOOL BVar2;
+  char *pcVar3;
+  uchar *puVar4;
   exception local_28 [32];
   
   if ((((*(short *)(this + 2) == 0) && (*(short *)(this + 4) == 0)) && (*(short *)(this + 6) == 0))
      && ((*(int *)(this + 8) == 0 && (*(int *)(this + 0xc) == 0)))) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x19,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5ec);
     exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
   }
-  pcVar2 = GetNextSection(this);
-  if (param_1 < pcVar2) {
+  pcVar3 = param_1;
+  bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::
+          __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants> *)
+                              &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_MSRC76146_MSMQ_QMVariants>::GetImpl(void)'
+                               ::__l2::impl);
+  if (bVar1) {
+    pcVar3 = GetNextSectionSafe(this,pcVar3);
+  }
+  else {
+    pcVar3 = GetNextSection(this);
+  }
+  if (param_1 < pcVar3) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x1a,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5ed);
     exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
   }
   if (((*(short *)(this + 6) != 0) && (((byte)*this & 0x40) == 0)) && (*(uint *)(this + 0xc) < 6)) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x1b,
-              &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+              &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
     }
     LogIllegalPoint(L"verifypacket",0x5ee);
     exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
     _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
   }
-  puVar3 = GetSectionExPtr(this);
-  if (puVar3 != (uchar *)0x0) {
-    pGetSubSectionEx(0,puVar3,(uchar *)param_1);
+  puVar4 = GetSectionExPtr(this);
+  if (puVar4 != (uchar *)0x0) {
+    pGetSubSectionEx(0,puVar4,(uchar *)param_1);
   }
   if ((*(ushort *)this & 0xf) == 2) {
     if (*(short *)(this + 2) != 0x10) {
       if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
         WPP_SF_d(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x1c,
-                 &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids,(uint)*(ushort *)(this + 2));
+                 &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids,(uint)*(ushort *)(this + 2));
       }
       LogIllegalPoint(L"verifypacket",0x5ef);
       exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
       _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
     }
   }
   else if ((*(ushort *)this & 0xf) == 1) {
     if (*(short *)(this + 2) == 0) {
       if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x1d,
-                &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+                &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
       }
       LogIllegalPoint(L"verifypacket",0x5f0);
       exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
       _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
     }
-    BVar1 = IsValidSid(this + 0x10);
-    if (BVar1 == 0) {
+    BVar2 = IsValidSid(this + 0x10);
+    if (BVar2 == 0) {
       if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((WPP_GLOBAL_Control[0x6c] & 1) != 0)) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x60),0x1e,
-                &WPP_a42e52f147c9336096d5a05ce72d54ca_Traceguids);
+                &WPP_57b7b81b30ca3d8eee674fe8c1fa7960_Traceguids);
       }
       LogIllegalPoint(L"verifypacket",0x5f1);
       exception::exception(local_28);
                     /* WARNING: Subroutine does not return */
       _CxxThrowException(local_28,(ThrowInfo *)&_TI1_AVexception__);
     }
   }
   return;
 }
 

```


# Modified (No Code Changes)


*Slightly modified functions have no code changes, rather differnces in:*
- refcount
- length
- called
- calling
- name
- fullname

## KERNEL32.DLL::AcquireSRWLockExclusive

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|AcquireSRWLockExclusive|AcquireSRWLockExclusive|
|fullname|KERNEL32.DLL::AcquireSRWLockExclusive|KERNEL32.DLL::AcquireSRWLockExclusive|
|`refcount`|16|22|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br><lambda_d51448ba32f8ef42e59400edd4566183>::<lambda_invoker_cdecl><br>_Init_thread_abort<br>_Init_thread_footer<br>_Init_thread_header<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::WilApiImpl_SubscribeFeatureStateChangeNotification<br>wil::details_abi::FeatureStateData::RecordFeatureUsage</summary>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br><lambda_d51448ba32f8ef42e59400edd4566183>::<lambda_invoker_cdecl><br>_Init_thread_abort<br>_Init_thread_footer<br>_Init_thread_header<br>wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::EnabledStateManager::OnStateChange<br>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting</summary>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::RecordFeatureUsageCallback<br>wil::details::SubscribeFeatureStateCacheToConfigurationChanges<br>wil::details::WilApiImpl_SubscribeFeatureStateChangeNotification<br>wil::details_abi::FeatureStateData::RecordFeatureUsage<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|
|paramcount|1|1|
|`address`|EXTERNAL:0000011d|EXTERNAL:00000113|
|sig|void __stdcall AcquireSRWLockExclusive(PSRWLOCK SRWLock)|void __stdcall AcquireSRWLockExclusive(PSRWLOCK SRWLock)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### KERNEL32.DLL::AcquireSRWLockExclusive Calling Diff


```diff
--- KERNEL32.DLL::AcquireSRWLockExclusive calling
+++ KERNEL32.DLL::AcquireSRWLockExclusive calling
@@ -5,0 +6,4 @@
+wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
+wil::details::EnabledStateManager::OnStateChange
+wil::details::EnabledStateManager::OnTimer
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
@@ -9,0 +14,2 @@
+wil::details::RecordFeatureUsageCallback
+wil::details::SubscribeFeatureStateCacheToConfigurationChanges
```


## newstr

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|length,address|
|ratio|1.0|
|i_ratio|0.58|
|m_ratio|0.96|
|b_ratio|0.96|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|newstr|newstr|
|fullname|newstr|newstr|
|refcount|7|7|
|`length`|68|78|
|called|MmAllocate<br>StringCchCopyA<br>mqstrlen|MmAllocate<br>StringCchCopyA<br>mqstrlen|
|calling|R_ProcessHTTPRequest<br>R_ProcessHTTPRequest$catch$0<br>R_ProcessHTTPRequest$catch$6<br>R_ProcessHTTPRequest$catch$7<br>R_ProcessHTTPRequest$catch$8|R_ProcessHTTPRequest<br>R_ProcessHTTPRequest$catch$0<br>R_ProcessHTTPRequest$catch$6<br>R_ProcessHTTPRequest$catch$7<br>R_ProcessHTTPRequest$catch$8|
|paramcount|1|1|
|`address`|1800a0d48|1800a3208|
|sig|char * __cdecl newstr(char * param_1)|char * __cdecl newstr(char * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

## wil_details_GetNtDllModuleHandle

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.5|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|wil_details_GetNtDllModuleHandle|wil_details_GetNtDllModuleHandle|
|fullname|wil_details_GetNtDllModuleHandle|wil_details_GetNtDllModuleHandle|
|`refcount`|11|12|
|length|47|47|
|called|KERNEL32.DLL::GetModuleHandleW|KERNEL32.DLL::GetModuleHandleW|
|`calling`|wil::details::FeatureStateManager::EnsureSubscribedToStateChangesUnderLock<br>wil::details::FormatNtStatusMsg<br>wil::details::RtlDisownModuleHeapAllocation<br>wil::details::RtlDllShutdownInProgress<br>wil::details::RtlNtStatusToDosErrorNoTeb<br>wil::details::WilApiImpl_RecordFeatureUsage<br>wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_><br>wil_details_NtQueryWnfStateData<br>wil_details_NtUpdateWnfStateData|<details><summary>Expand for full list:<br>wil::details::FeatureStateManager::EnsureSubscribedToStateChangesUnderLock<br>wil::details::FormatNtStatusMsg<br>wil::details::RtlDisownModuleHeapAllocation<br>wil::details::RtlDllShutdownInProgress<br>wil::details::RtlNtStatusToDosErrorNoTeb<br>wil::details::WilApiImpl_RecordFeatureUsage<br>wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_><br>wil_RtlStagingConfig_QueryFeatureState<br>wil_details_NtQueryWnfStateData<br>wil_details_NtUpdateWnfStateData</summary></details>|
|paramcount|0|0|
|`address`|18005b828|1800401c0|
|sig|HINSTANCE__ * __cdecl wil_details_GetNtDllModuleHandle(void)|HINSTANCE__ * __cdecl wil_details_GetNtDllModuleHandle(void)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### wil_details_GetNtDllModuleHandle Calling Diff


```diff
--- wil_details_GetNtDllModuleHandle calling
+++ wil_details_GetNtDllModuleHandle calling
@@ -8,0 +9 @@
+wil_RtlStagingConfig_QueryFeatureState
```


## ReceiveResponseFailed

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.68|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|ReceiveResponseFailed|ReceiveResponseFailed|
|fullname|CMessageTransport::ReceiveResponseFailed|CMessageTransport::ReceiveResponseFailed|
|`refcount`|10|11|
|length|110|110|
|called|CMessageTransport::Shutdown<br>CReference::Release<br>WPP_SF_qD|CMessageTransport::Shutdown<br>CReference::Release<br>WPP_SF_qD|
|calling|||
|paramcount|1|1|
|`address`|1800a75b0|1800a9a70|
|sig|void __cdecl ReceiveResponseFailed(EXOVERLAPPED * param_1)|void __cdecl ReceiveResponseFailed(EXOVERLAPPED * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

## __GSHandlerCheck

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.88|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|__GSHandlerCheck|__GSHandlerCheck|
|fullname|__GSHandlerCheck|__GSHandlerCheck|
|`refcount`|134|136|
|length|29|29|
|called|__GSHandlerCheckCommon|__GSHandlerCheckCommon|
|calling|||
|paramcount|4|4|
|`address`|180004f48|180004f98|
|sig|undefined8 __fastcall __GSHandlerCheck(undefined8 param_1, undefined8 param_2, undefined8 param_3, longlong param_4)|undefined8 __fastcall __GSHandlerCheck(undefined8 param_1, undefined8 param_2, undefined8 param_3, longlong param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## atexit

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.88|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|atexit|atexit|
|fullname|atexit|atexit|
|`refcount`|97|98|
|length|23|23|
|called|_onexit|_onexit|
|`calling`|<details><summary>Expand for full list:<br>CRexCharClass::setExplicitRange<br>QmpFillQoSBuffer<br>`dynamic_atexit_destructor_for_'init_atexit''<br>`dynamic_initializer_for_'Admin''<br>`dynamic_initializer_for_'CQMEnvironmentEventManager::s_eventDescriptors''<br>`dynamic_initializer_for_'CQMEnvironmentEventManager::s_stopEvent''<br>`dynamic_initializer_for_'CRexRegExpr_Impl::DFAStateTable::state0''<br>`dynamic_initializer_for_'CRexRegExpr_Impl::DFAStateTable::state1''<br>`dynamic_initializer_for_'CSessionMgr::m_pszMsmqAppName''<br>`dynamic_initializer_for_'CSessionMgr::m_pszMsmqPolicyLocator''<br>`dynamic_initializer_for_'CSingelton<CHttpDeliveryVesrion>::m_obj''</summary>`dynamic_initializer_for_'CSingelton<CHttpStatusCodeMapper>::m_obj''<br>`dynamic_initializer_for_'CSingelton<CInHttpPerfmon>::m_obj''<br>`dynamic_initializer_for_'CSingelton<CMessageSizeLimit>::m_obj''<br>`dynamic_initializer_for_'CSingelton<CNamespaceToId>::m_obj''<br>`dynamic_initializer_for_'ForeignMachineMap''<br>`dynamic_initializer_for_'PerfApp''<br>`dynamic_initializer_for_'QueueMgr''<br>`dynamic_initializer_for_'SessionMgr''<br>`dynamic_initializer_for_'csLocalMachineNames''<br>`dynamic_initializer_for_'g_CertInfoMap''<br>`dynamic_initializer_for_'g_LQSCS''<br>`dynamic_initializer_for_'g_Logger''<br>`dynamic_initializer_for_'g_MachineSD''<br>`dynamic_initializer_for_'g_MapQmPbKey''<br>`dynamic_initializer_for_'g_NotificationScheduler''<br>`dynamic_initializer_for_'g_OutSeqHash''<br>`dynamic_initializer_for_'g_QMDepClientList''<br>`dynamic_initializer_for_'g_QPrivate''<br>`dynamic_initializer_for_'g_RecKeyCache''<br>`dynamic_initializer_for_'g_RequeuePacketList''<br>`dynamic_initializer_for_'g_SendInfoMap''<br>`dynamic_initializer_for_'g_SendKeyCache''<br>`dynamic_initializer_for_'g_UserAuthzContextMap''<br>`dynamic_initializer_for_'g_critOutSeqHash''<br>`dynamic_initializer_for_'g_critSorter''<br>`dynamic_initializer_for_'g_csGroupMgr''<br>`dynamic_initializer_for_'g_csReadWriteRequests''<br>`dynamic_initializer_for_'g_detectEnv''<br>`dynamic_initializer_for_'g_hUalLib''<br>`dynamic_initializer_for_'g_mapQueuePropertyToIndex''<br>`dynamic_initializer_for_'g_map_QM_HLQS''<br>`dynamic_initializer_for_'g_map_QM_dwQMContext''<br>`dynamic_initializer_for_'g_map_QM_dwpContext''<br>`dynamic_initializer_for_'g_pAD''<br>`dynamic_initializer_for_'g_pListenAddresses''<br>`dynamic_initializer_for_'g_sSystemResourceTracker''<br>`dynamic_initializer_for_'g_szComputerDnsName''<br>`dynamic_initializer_for_'qmcmd_cs''<br>`dynamic_initializer_for_'s_ACAckingCompletedList''<br>`dynamic_initializer_for_'s_ACArmPacketTimerList''<br>`dynamic_initializer_for_'s_ACCreatePacketCompletedList''<br>`dynamic_initializer_for_'s_ACEndGetPacket2RemoteList''<br>`dynamic_initializer_for_'s_ACFreeDetachedPacketList''<br>`dynamic_initializer_for_'s_ACFreeOrDeadletterPacketList''<br>`dynamic_initializer_for_'s_ACFreePacket1List''<br>`dynamic_initializer_for_'s_ACFreePacket2List''<br>`dynamic_initializer_for_'s_ACFreePacketList''<br>`dynamic_initializer_for_'s_ACPutPacketList''<br>`dynamic_initializer_for_'s_ACPutPacketOverlappedList''<br>`dynamic_initializer_for_'s_ACPutRemotePacketList''<br>`dynamic_initializer_for_'s_ACPutRestoredPacketList''<br>`dynamic_initializer_for_'s_ACStorageCompletedList''<br>`dynamic_initializer_for_'s_DeferredInitTimer''<br>`dynamic_initializer_for_'s_DuplicateMessageMap''<br>`dynamic_initializer_for_'s_LookForOnlineDSTimer''<br>`dynamic_initializer_for_'s_MachineCS''<br>`dynamic_initializer_for_'s_MulticastId2Listner''<br>`dynamic_initializer_for_'s_MulticastLock''<br>`dynamic_initializer_for_'s_OnlineInitializationTimer''<br>`dynamic_initializer_for_'s_ProxySetting''<br>`dynamic_initializer_for_'s_Queueformat2MulticastId''<br>`dynamic_initializer_for_'s_ReleaseMessageFileTimer''<br>`dynamic_initializer_for_'s_ResourceManager''<br>`dynamic_initializer_for_'s_SSPICredential''<br>`dynamic_initializer_for_'s_UpdateCacheTimer''<br>`dynamic_initializer_for_'s_UpdateDSSeverListTimer''<br>`dynamic_initializer_for_'s_UpdateDSTimer''<br>`dynamic_initializer_for_'s_bad_alloc''<br>`dynamic_initializer_for_'s_csBindUnbind''<br>`dynamic_initializer_for_'s_csContextMap''<br>`dynamic_initializer_for_'s_csInitialization''<br>`dynamic_initializer_for_'s_hCmRootKey''<br>`dynamic_initializer_for_'s_pQueueAlias''<br>`dynamic_initializer_for_'s_pending_lock''<br>`dynamic_initializer_for_'s_rwlock''<br>`dynamic_initializer_for_'s_rwlock''<br>`dynamic_initializer_for_'s_rwlock''<br>`dynamic_initializer_for_'s_transports''<br>`dynamic_initializer_for_'s_transports''<br>std::`dynamic_initializer_for_'classic_locale''<br>std::`dynamic_initializer_for_'initlocks''<br>std::`dynamic_initializer_for_'initlocks''<br>wil::details::`dynamic_atexit_destructor_for_'g_threadFailureCallbacks''<br>wil::details::`dynamic_initializer_for_'g_featureStateManager''<br>wil::details::`dynamic_initializer_for_'g_processLocalData''</details>|<details><summary>Expand for full list:<br>CRexCharClass::setExplicitRange<br>QmpFillQoSBuffer<br>`dynamic_atexit_destructor_for_'init_atexit''<br>`dynamic_initializer_for_'Admin''<br>`dynamic_initializer_for_'CQMEnvironmentEventManager::s_eventDescriptors''<br>`dynamic_initializer_for_'CQMEnvironmentEventManager::s_stopEvent''<br>`dynamic_initializer_for_'CRexRegExpr_Impl::DFAStateTable::state0''<br>`dynamic_initializer_for_'CRexRegExpr_Impl::DFAStateTable::state1''<br>`dynamic_initializer_for_'CSessionMgr::m_pszMsmqAppName''<br>`dynamic_initializer_for_'CSessionMgr::m_pszMsmqPolicyLocator''<br>`dynamic_initializer_for_'CSingelton<CHttpDeliveryVesrion>::m_obj''</summary>`dynamic_initializer_for_'CSingelton<CHttpStatusCodeMapper>::m_obj''<br>`dynamic_initializer_for_'CSingelton<CInHttpPerfmon>::m_obj''<br>`dynamic_initializer_for_'CSingelton<CMessageSizeLimit>::m_obj''<br>`dynamic_initializer_for_'CSingelton<CNamespaceToId>::m_obj''<br>`dynamic_initializer_for_'ForeignMachineMap''<br>`dynamic_initializer_for_'PerfApp''<br>`dynamic_initializer_for_'QueueMgr''<br>`dynamic_initializer_for_'SessionMgr''<br>`dynamic_initializer_for_'csLocalMachineNames''<br>`dynamic_initializer_for_'g_CertInfoMap''<br>`dynamic_initializer_for_'g_LQSCS''<br>`dynamic_initializer_for_'g_Logger''<br>`dynamic_initializer_for_'g_MachineSD''<br>`dynamic_initializer_for_'g_MapQmPbKey''<br>`dynamic_initializer_for_'g_NotificationScheduler''<br>`dynamic_initializer_for_'g_OutSeqHash''<br>`dynamic_initializer_for_'g_QMDepClientList''<br>`dynamic_initializer_for_'g_QPrivate''<br>`dynamic_initializer_for_'g_RecKeyCache''<br>`dynamic_initializer_for_'g_RequeuePacketList''<br>`dynamic_initializer_for_'g_SendInfoMap''<br>`dynamic_initializer_for_'g_SendKeyCache''<br>`dynamic_initializer_for_'g_UserAuthzContextMap''<br>`dynamic_initializer_for_'g_critOutSeqHash''<br>`dynamic_initializer_for_'g_critSorter''<br>`dynamic_initializer_for_'g_csGroupMgr''<br>`dynamic_initializer_for_'g_csReadWriteRequests''<br>`dynamic_initializer_for_'g_detectEnv''<br>`dynamic_initializer_for_'g_hUalLib''<br>`dynamic_initializer_for_'g_mapQueuePropertyToIndex''<br>`dynamic_initializer_for_'g_map_QM_HLQS''<br>`dynamic_initializer_for_'g_map_QM_dwQMContext''<br>`dynamic_initializer_for_'g_map_QM_dwpContext''<br>`dynamic_initializer_for_'g_pAD''<br>`dynamic_initializer_for_'g_pListenAddresses''<br>`dynamic_initializer_for_'g_sSystemResourceTracker''<br>`dynamic_initializer_for_'g_szComputerDnsName''<br>`dynamic_initializer_for_'qmcmd_cs''<br>`dynamic_initializer_for_'s_ACAckingCompletedList''<br>`dynamic_initializer_for_'s_ACArmPacketTimerList''<br>`dynamic_initializer_for_'s_ACCreatePacketCompletedList''<br>`dynamic_initializer_for_'s_ACEndGetPacket2RemoteList''<br>`dynamic_initializer_for_'s_ACFreeDetachedPacketList''<br>`dynamic_initializer_for_'s_ACFreeOrDeadletterPacketList''<br>`dynamic_initializer_for_'s_ACFreePacket1List''<br>`dynamic_initializer_for_'s_ACFreePacket2List''<br>`dynamic_initializer_for_'s_ACFreePacketList''<br>`dynamic_initializer_for_'s_ACPutPacketList''<br>`dynamic_initializer_for_'s_ACPutPacketOverlappedList''<br>`dynamic_initializer_for_'s_ACPutRemotePacketList''<br>`dynamic_initializer_for_'s_ACPutRestoredPacketList''<br>`dynamic_initializer_for_'s_ACStorageCompletedList''<br>`dynamic_initializer_for_'s_DeferredInitTimer''<br>`dynamic_initializer_for_'s_DuplicateMessageMap''<br>`dynamic_initializer_for_'s_LookForOnlineDSTimer''<br>`dynamic_initializer_for_'s_MachineCS''<br>`dynamic_initializer_for_'s_MulticastId2Listner''<br>`dynamic_initializer_for_'s_MulticastLock''<br>`dynamic_initializer_for_'s_OnlineInitializationTimer''<br>`dynamic_initializer_for_'s_ProxySetting''<br>`dynamic_initializer_for_'s_Queueformat2MulticastId''<br>`dynamic_initializer_for_'s_ReleaseMessageFileTimer''<br>`dynamic_initializer_for_'s_ResourceManager''<br>`dynamic_initializer_for_'s_SSPICredential''<br>`dynamic_initializer_for_'s_UpdateCacheTimer''<br>`dynamic_initializer_for_'s_UpdateDSSeverListTimer''<br>`dynamic_initializer_for_'s_UpdateDSTimer''<br>`dynamic_initializer_for_'s_bad_alloc''<br>`dynamic_initializer_for_'s_csBindUnbind''<br>`dynamic_initializer_for_'s_csContextMap''<br>`dynamic_initializer_for_'s_csInitialization''<br>`dynamic_initializer_for_'s_hCmRootKey''<br>`dynamic_initializer_for_'s_pQueueAlias''<br>`dynamic_initializer_for_'s_pending_lock''<br>`dynamic_initializer_for_'s_rwlock''<br>`dynamic_initializer_for_'s_rwlock''<br>`dynamic_initializer_for_'s_rwlock''<br>`dynamic_initializer_for_'s_transports''<br>`dynamic_initializer_for_'s_transports''<br>std::`dynamic_initializer_for_'classic_locale''<br>std::`dynamic_initializer_for_'initlocks''<br>std::`dynamic_initializer_for_'initlocks''<br>wil::details::`dynamic_atexit_destructor_for_'g_threadFailureCallbacks''<br>wil::details::`dynamic_initializer_for_'g_enabledStateManager''<br>wil::details::`dynamic_initializer_for_'g_featureStateManager''<br>wil::details::`dynamic_initializer_for_'g_processLocalData''</details>|
|paramcount|1|1|
|`address`|1800048ac|1800048fc|
|sig|int __cdecl atexit(_func_5014 * param_1)|int __cdecl atexit(_func_5014 * param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### atexit Calling Diff


```diff
--- atexit calling
+++ atexit calling
@@ -94,0 +95 @@
+wil::details::`dynamic_initializer_for_'g_enabledStateManager''
```


## reset

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.83|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|reset|reset|
|fullname|wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::reset|wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::reset|
|`refcount`|5|7|
|length|87|87|
|called|KERNEL32.DLL::GetLastError<br>wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy<br>wil::last_error_context::~last_error_context|KERNEL32.DLL::GetLastError<br>wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy<br>wil::last_error_context::~last_error_context|
|`calling`|wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::~FeatureStateManager|wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::EnabledStateManager::~EnabledStateManager<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::~FeatureStateManager|
|paramcount|2|2|
|`address`|18005b4a8|18003f9b0|
|sig|void __thiscall reset(unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_> * this, _TP_TIMER * param_1)|void __thiscall reset(unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_> * this, _TP_TIMER * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### reset Calling Diff


```diff
--- wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::reset calling
+++ wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::reset calling
@@ -0,0 +1,2 @@
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
+wil::details::EnabledStateManager::~EnabledStateManager
```


## GetSafeDataAndAdvancePointer<unsigned_long>

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.59|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|GetSafeDataAndAdvancePointer<unsigned_long>|GetSafeDataAndAdvancePointer<unsigned_long>|
|fullname|GetSafeDataAndAdvancePointer<unsigned_long>|GetSafeDataAndAdvancePointer<unsigned_long>|
|`refcount`|5|7|
|length|61|61|
|called|ReportAndThrow|ReportAndThrow|
|`calling`|CBaseMqfHeader::GetQueueFormat<br>CUserHeader::QueueSize|CBaseMqfHeader::GetQueueFormat<br>CUserHeader::QueueSize<br>CUserHeader::QueueSizeSafe|
|paramcount|3|3|
|`address`|180037328|18003752c|
|sig|uchar * __cdecl GetSafeDataAndAdvancePointer<unsigned_long>(uchar * param_1, uchar * param_2, ulong * param_3)|uchar * __cdecl GetSafeDataAndAdvancePointer<unsigned_long>(uchar * param_1, uchar * param_2, ulong * param_3)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### GetSafeDataAndAdvancePointer<unsigned_long> Calling Diff


```diff
--- GetSafeDataAndAdvancePointer<unsigned_long> calling
+++ GetSafeDataAndAdvancePointer<unsigned_long> calling
@@ -2,0 +3 @@
+CUserHeader::QueueSizeSafe
```


## ProcessShutdownInProgress

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.65|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|ProcessShutdownInProgress|ProcessShutdownInProgress|
|fullname|wil::ProcessShutdownInProgress|wil::ProcessShutdownInProgress|
|`refcount`|8|10|
|length|58|58|
|called|_guard_xfg_dispatch_icall_nop|_guard_xfg_dispatch_icall_nop|
|`calling`|wil::details::FeatureStateManager::FlushUsage<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::`dynamic_atexit_destructor_for_'g_featureStateManager''<br>wil::details_abi::ProcessLocalStorage<wil::details_abi::ProcessLocalData>::~ProcessLocalStorage<wil::details_abi::ProcessLocalData><br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::FeatureStateData>::Release|wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureStateManager::FlushUsage<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''<br>wil::details::`dynamic_atexit_destructor_for_'g_featureStateManager''<br>wil::details_abi::ProcessLocalStorage<wil::details_abi::ProcessLocalData>::~ProcessLocalStorage<wil::details_abi::ProcessLocalData><br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::FeatureStateData>::Release|
|paramcount|0|0|
|`address`|180056650|18003c9d0|
|sig|bool __cdecl ProcessShutdownInProgress(void)|bool __cdecl ProcessShutdownInProgress(void)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### ProcessShutdownInProgress Calling Diff


```diff
--- wil::ProcessShutdownInProgress calling
+++ wil::ProcessShutdownInProgress calling
@@ -0,0 +1 @@
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
@@ -4,0 +6 @@
+wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''
```


## KERNEL32.DLL::CreateThreadpoolTimer

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|CreateThreadpoolTimer|CreateThreadpoolTimer|
|fullname|KERNEL32.DLL::CreateThreadpoolTimer|KERNEL32.DLL::CreateThreadpoolTimer|
|`refcount`|3|4|
|length|0|0|
|called|||
|`calling`|wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage|wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage|
|paramcount|3|3|
|`address`|EXTERNAL:0000012a|EXTERNAL:00000120|
|sig|PTP_TIMER __stdcall CreateThreadpoolTimer(PTP_TIMER_CALLBACK pfnti, PVOID pv, PTP_CALLBACK_ENVIRON pcbe)|PTP_TIMER __stdcall CreateThreadpoolTimer(PTP_TIMER_CALLBACK pfnti, PVOID pv, PTP_CALLBACK_ENVIRON pcbe)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### KERNEL32.DLL::CreateThreadpoolTimer Calling Diff


```diff
--- KERNEL32.DLL::CreateThreadpoolTimer calling
+++ KERNEL32.DLL::CreateThreadpoolTimer calling
@@ -0,0 +1 @@
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
```


## Complete_ReadHandShakeResponse

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.58|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|Complete_ReadHandShakeResponse|Complete_ReadHandShakeResponse|
|fullname|CSSlNegotiation::Complete_ReadHandShakeResponse|CSSlNegotiation::Complete_ReadHandShakeResponse|
|`refcount`|4|5|
|length|126|126|
|called|CSSlNegotiation::HankShakeLoop<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>_CxxThrowException|CSSlNegotiation::HankShakeLoop<br>MSVCRT.DLL::exception::exception<br>WPP_SF_<br>_CxxThrowException|
|calling|||
|paramcount|1|1|
|`address`|1800c8c30|1800cb0f0|
|sig|void __cdecl Complete_ReadHandShakeResponse(EXOVERLAPPED * param_1)|void __cdecl Complete_ReadHandShakeResponse(EXOVERLAPPED * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

## reset

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.8|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|reset|reset|
|fullname|wistd::unique_ptr<void,wil::process_heap_deleter>::reset|wistd::unique_ptr<void,wil::process_heap_deleter>::reset|
|`refcount`|17|19|
|length|29|29|
|called|wil::details::FreeProcessHeap|wil::details::FreeProcessHeap|
|`calling`|wil::details::FeatureStateManager::~FeatureStateManager<br>wil::details_abi::RawUsageIndex::RecordUsage<br>wil::details_abi::RawUsageIndex::SetBuffer<br>wil::details_abi::RawUsageIndex::Swap<br>wil::details_abi::RawUsageIndex::~RawUsageIndex<br>wil::details_abi::RecordWnfUsageIndex<br>wil::details_abi::SubscriptionList::~SubscriptionList<br>wil::details_abi::UsageIndexes::~UsageIndexes<br>wil::details_abi::heap_buffer::reserve<br>wil::details_abi::heap_buffer::~heap_buffer|<details><summary>Expand for full list:<br>wil::details::EnabledStateManager::~EnabledStateManager<br>wil::details::FeatureStateManager::~FeatureStateManager<br>wil::details_abi::RawUsageIndex::RecordUsage<br>wil::details_abi::RawUsageIndex::SetBuffer<br>wil::details_abi::RawUsageIndex::Swap<br>wil::details_abi::RawUsageIndex::~RawUsageIndex<br>wil::details_abi::RecordWnfUsageIndex<br>wil::details_abi::SubscriptionList::~SubscriptionList<br>wil::details_abi::UsageIndexes::~UsageIndexes<br>wil::details_abi::heap_buffer::reserve<br>wil::details_abi::heap_buffer::~heap_buffer</summary></details>|
|paramcount|2|2|
|`address`|18005b484|18003f98c|
|sig|void __thiscall reset(unique_ptr<void,wil::process_heap_deleter> * this, void * param_1)|void __thiscall reset(unique_ptr<void,wil::process_heap_deleter> * this, void * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### reset Calling Diff


```diff
--- wistd::unique_ptr<void,wil::process_heap_deleter>::reset calling
+++ wistd::unique_ptr<void,wil::process_heap_deleter>::reset calling
@@ -0,0 +1 @@
+wil::details::EnabledStateManager::~EnabledStateManager
```


## push_back

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.89|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|push_back|push_back|
|fullname|wil::details_abi::heap_buffer::push_back|wil::details_abi::heap_buffer::push_back|
|`refcount`|3|5|
|length|97|97|
|called|MSVCRT.DLL::memcpy_s<br>wil::details_abi::heap_buffer::ensure|MSVCRT.DLL::memcpy_s<br>wil::details_abi::heap_buffer::ensure|
|`calling`|wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details_abi::SubscriptionList::SubscribeUnderLock|wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::SubscribeFeatureStateCacheToConfigurationChanges<br>wil::details_abi::SubscriptionList::SubscribeUnderLock|
|paramcount|3|3|
|`address`|18005b1e0|18003f884|
|sig|bool __thiscall push_back(heap_buffer * this, void * param_1, __uint64 param_2)|bool __thiscall push_back(heap_buffer * this, void * param_1, __uint64 param_2)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### push_back Calling Diff


```diff
--- wil::details_abi::heap_buffer::push_back calling
+++ wil::details_abi::heap_buffer::push_back calling
@@ -0,0 +1 @@
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
@@ -1,0 +3 @@
+wil::details::SubscribeFeatureStateCacheToConfigurationChanges
```


## EnsureCoalescedTimer_SetTimer

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.89|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|EnsureCoalescedTimer_SetTimer|EnsureCoalescedTimer_SetTimer|
|fullname|wil::details::EnsureCoalescedTimer_SetTimer|wil::details::EnsureCoalescedTimer_SetTimer|
|`refcount`|3|4|
|length|65|65|
|called|KERNEL32.DLL::SetThreadpoolTimer|KERNEL32.DLL::SetThreadpoolTimer|
|`calling`|wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage|wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage|
|paramcount|3|3|
|`address`|180051c98|18003a090|
|sig|void __cdecl EnsureCoalescedTimer_SetTimer(unique_any_t<wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>_> * param_1, bool * param_2, __int64 param_3)|void __cdecl EnsureCoalescedTimer_SetTimer(unique_any_t<wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>_> * param_1, bool * param_2, __int64 param_3)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### EnsureCoalescedTimer_SetTimer Calling Diff


```diff
--- wil::details::EnsureCoalescedTimer_SetTimer calling
+++ wil::details::EnsureCoalescedTimer_SetTimer calling
@@ -0,0 +1 @@
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
```


## wil_details_GetKernelBaseModuleHandle

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.5|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|wil_details_GetKernelBaseModuleHandle|wil_details_GetKernelBaseModuleHandle|
|fullname|wil_details_GetKernelBaseModuleHandle|wil_details_GetKernelBaseModuleHandle|
|`refcount`|2|3|
|length|47|47|
|called|KERNEL32.DLL::GetModuleHandleW|KERNEL32.DLL::GetModuleHandleW|
|`calling`|wil::details::MicrosoftInternalNotifyFailure|wil::details::MicrosoftInternalNotifyFailure<br>wil_StagingConfig_LogStagedFeatureUsage|
|paramcount|0|0|
|`address`|18005b7f0|180040188|
|sig|HINSTANCE__ * __cdecl wil_details_GetKernelBaseModuleHandle(void)|HINSTANCE__ * __cdecl wil_details_GetKernelBaseModuleHandle(void)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### wil_details_GetKernelBaseModuleHandle Calling Diff


```diff
--- wil_details_GetKernelBaseModuleHandle calling
+++ wil_details_GetKernelBaseModuleHandle calling
@@ -1,0 +2 @@
+wil_StagingConfig_LogStagedFeatureUsage
```


## KERNEL32.DLL::GetProcAddress

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|GetProcAddress|GetProcAddress|
|fullname|KERNEL32.DLL::GetProcAddress|KERNEL32.DLL::GetProcAddress|
|`refcount`|50|52|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>CActiveDirectoryProvider::LoadDll<br>CLogger::GetLogMgr<br>InitializeKeepAlive<br>MsmqUalStart<br>wil::details::FeatureStateManager::EnsureSubscribedToStateChangesUnderLock<br>wil::details::MicrosoftInternalNotifyFailure<br>wil::details::RtlDisownModuleHeapAllocation<br>wil::details::RtlDllShutdownInProgress<br>wil::details::RtlNtStatusToDosErrorNoTeb<br>wil::details::WilApiImpl_RecordFeatureUsage<br>wil::details::WilDynamicLoadRaiseFailFastException</summary>wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_><br>wil_details_NtQueryWnfStateData<br>wil_details_NtUpdateWnfStateData</details>|<details><summary>Expand for full list:<br>CActiveDirectoryProvider::LoadDll<br>CLogger::GetLogMgr<br>InitializeKeepAlive<br>MsmqUalStart<br>wil::details::FeatureStateManager::EnsureSubscribedToStateChangesUnderLock<br>wil::details::MicrosoftInternalNotifyFailure<br>wil::details::RtlDisownModuleHeapAllocation<br>wil::details::RtlDllShutdownInProgress<br>wil::details::RtlNtStatusToDosErrorNoTeb<br>wil::details::WilApiImpl_RecordFeatureUsage<br>wil::details::WilDynamicLoadRaiseFailFastException</summary>wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64),&void___cdecl_wil::details::UnregisterWilFeatureConfigurationChange(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_><br>wil_RtlStagingConfig_QueryFeatureState<br>wil_StagingConfig_LogStagedFeatureUsage<br>wil_details_NtQueryWnfStateData<br>wil_details_NtUpdateWnfStateData</details>|
|paramcount|2|2|
|`address`|EXTERNAL:00000109|EXTERNAL:00000110|
|sig|FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)|FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### KERNEL32.DLL::GetProcAddress Calling Diff


```diff
--- KERNEL32.DLL::GetProcAddress calling
+++ KERNEL32.DLL::GetProcAddress calling
@@ -13,0 +14,2 @@
+wil_RtlStagingConfig_QueryFeatureState
+wil_StagingConfig_LogStagedFeatureUsage
```


## ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.78|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|
|fullname|wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>|
|`refcount`|14|21|
|length|30|30|
|called|KERNEL32.DLL::ReleaseSRWLockExclusive|KERNEL32.DLL::ReleaseSRWLockExclusive|
|`calling`|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br><lambda_d51448ba32f8ef42e59400edd4566183>::<lambda_invoker_cdecl><br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::WilApiImpl_SubscribeFeatureStateChangeNotification<br>wil::details_abi::FeatureStateData::RecordFeatureUsage<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</summary>wil::unique_any_t<wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>_>::~unique_any_t<wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>_></details>|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br><lambda_d51448ba32f8ef42e59400edd4566183>::<lambda_invoker_cdecl><br>wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::EnabledStateManager::OnStateChange<br>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::RecordFeatureUsageCallback</summary>wil::details::SubscribeFeatureStateCacheToConfigurationChanges<br>wil::details::WilApiImpl_SubscribeFeatureStateChangeNotification<br>wil::details_abi::FeatureStateData::RecordFeatureUsage<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe<br>wil::unique_any_t<wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>_>::~unique_any_t<wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>_></details>|
|paramcount|1|1|
|`address`|18004fb04|18003908c|
|sig|void __thiscall ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>(unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> * this)|void __thiscall ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>(unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> * this)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### ~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> Calling Diff


```diff
--- wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> calling
+++ wil::details::unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_RTL_SRWLOCK*___ptr64,void_(__cdecl*)(_RTL_SRWLOCK*___ptr64),&void___cdecl_ReleaseSRWLockExclusive(struct__RTL_SRWLOCK*___ptr64),wistd::integral_constant<unsigned___int64,1>,_RTL_SRWLOCK*___ptr64,_RTL_SRWLOCK*___ptr64,0,std::nullptr_t>_> calling
@@ -2,0 +3,4 @@
+wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChanges
+wil::details::EnabledStateManager::OnStateChange
+wil::details::EnabledStateManager::OnTimer
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
@@ -6,0 +11,2 @@
+wil::details::RecordFeatureUsageCallback
+wil::details::SubscribeFeatureStateCacheToConfigurationChanges
```


## ~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.71|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>|~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>|
|fullname|wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>|wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>|
|`refcount`|3|4|
|length|22|22|
|called|wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy|wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy|
|`calling`|wil::details::FeatureStateManager::~FeatureStateManager|wil::details::EnabledStateManager::~EnabledStateManager<br>wil::details::FeatureStateManager::~FeatureStateManager|
|paramcount|1|1|
|`address`|18004fb54|1800390dc|
|sig|void __thiscall ~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>(unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_> * this)|void __thiscall ~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>(unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_> * this)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### ~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_> Calling Diff


```diff
--- wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_> calling
+++ wil::details::unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_>::~unique_storage<wil::details::resource_policy<_TP_TIMER*___ptr64,void_(__cdecl*)(_TP_TIMER*___ptr64),&public:_static_void___cdecl_wil::details::DestroyThreadPoolTimer<struct_wil::details::SystemThreadPoolMethods,0>::Destroy(struct__TP_TIMER*___ptr64),wistd::integral_constant<unsigned___int64,0>,_TP_TIMER*___ptr64,_TP_TIMER*___ptr64,0,std::nullptr_t>_> calling
@@ -0,0 +1 @@
+wil::details::EnabledStateManager::~EnabledStateManager
```


## __GSHandlerCheck_EH4

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.92|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|__GSHandlerCheck_EH4|__GSHandlerCheck_EH4|
|fullname|__GSHandlerCheck_EH4|__GSHandlerCheck_EH4|
|`refcount`|253|254|
|length|127|127|
|called|__CxxFrameHandler4<br>__GSHandlerCheckCommon|__CxxFrameHandler4<br>__GSHandlerCheckCommon|
|calling|||
|paramcount|4|4|
|`address`|1800df880|1800e1d40|
|sig|undefined __fastcall __GSHandlerCheck_EH4(longlong param_1, undefined8 param_2, undefined8 param_3, longlong param_4)|undefined __fastcall __GSHandlerCheck_EH4(longlong param_1, undefined8 param_2, undefined8 param_3, longlong param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## __security_check_cookie

### Match Info



|Key|mqqm-10.0.22621.963.dll - mqqm-10.0.22621.1555.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.5|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mqqm-10.0.22621.963.dll|mqqm-10.0.22621.1555.dll|
| :---: | :---: | :---: |
|name|__security_check_cookie|__security_check_cookie|
|fullname|__security_check_cookie|__security_check_cookie|
|`refcount`|452|456|
|length|30|30|
|called|__report_gsfailure|__report_gsfailure|
|`calling`|<details><summary>Expand for full list:<br>ACAssociateQueue<br>ACMoveToSubqueue<br>AcceptIPThread<br>AppGetIncomingPgmSessionPerfmonCounters<br>BuildNotificationMsg<br>BuildPropertyHeaderSection<br>BuildSecurityHeaderSection<br>BuildSenderStreamHeaderSection<br>BuildServerList<br>CAdmin::GetReportQueue<br>CAdmin::Init</summary>CAdmin::SendReportConflict<br>CCache<CCertificateHash,R<CERTINFO>,CNullExpirationHandler<R<CERTINFO>_>_>::ExpireHalfCacheEntries<br>CCache<CCertificateHash,R<CERTINFO>,CNullExpirationHandler<R<CERTINFO>_>_>::ExpirePeriodicCacheEnteries<br>CCache<CCryptKeyHashKey,R<CCryptKey>,CMarkingExpirationHandler<CCryptKey>_>::ExpireHalfCacheEntries<br>CCache<CCryptKeyHashKey,R<CCryptKey>,CMarkingExpirationHandler<CCryptKey>_>::ExpirePeriodicCacheEnteries<br>CCache<_GUID,R<CSendCryptInfo>,CNullExpirationHandler<R<CSendCryptInfo>_>_>::ExpireHalfCacheEntries<br>CCache<_GUID,R<CSendCryptInfo>,CNullExpirationHandler<R<CSendCryptInfo>_>_>::ExpirePeriodicCacheEnteries<br>CCache<_GUID,R<QMPBKEYINFO>,CNullExpirationHandler<R<QMPBKEYINFO>_>_>::ExpireHalfCacheEntries<br>CCache<_GUID,R<QMPBKEYINFO>,CNullExpirationHandler<R<QMPBKEYINFO>_>_>::ExpirePeriodicCacheEnteries<br>CEventReporter::Report<br>CFilesIterator::operator*<br>CInSeqHash::AddSequence<br>CInSeqHash::CleanupDeadSequences<br>CInSeqHash::Destroy<br>CInSeqHash::GetInSequenceInformation<br>CInSeqHash::Load<br>CInSeqHash::Lookup<br>CInSeqHash::Save<br>CInSequence::Load<br>CInSequence::Log<br>CInSequence::Save<br>CLexMap::InsertItem<br>CLexMap::Lookup<br>CLexMap::PrepareURIForLexer<br>CLogger::ChooseFileName<br>CMSMQTrace::MSMQTraceEvent<br>CMessageMap::InsertMessage<br>CMessageMulticastTransport::CMessageMulticastTransport<br>CMessageMulticastTransport::Connect<br>CMessageMulticastTransport::ConnectionFailed<br>CMessageMulticastTransport::ConnectionSucceeded<br>CMessageMulticastTransport::DeliverPacket<br>CMessageMulticastTransport::GetPacketForConnectingSucceeded<br>CMessageMulticastTransport::GetPacketForSendingFailed<br>CMessageMulticastTransport::SendFailed<br>CMessageMulticastTransport::SendSucceeded<br>CMessageTransport::Connect<br>CMessageTransport::DeliverPacket<br>CMessageTransport::GetContentLength<br>CMessageTransport::GetNewLocation<br>CMsmqVssWriter::BackupRegistry<br>CMsmqVssWriter::BackupRegistryKeyInternal<br>CMsmqVssWriter::CleanupDirectory<br>CMsmqVssWriter::ConvertComponentsToNames<br>CMsmqVssWriter::CopyFiles<br>CMsmqVssWriter::CreateDirectoryTree<br>CMsmqVssWriter::DeleteRestoreFiles<br>CMsmqVssWriter::DeleteStorageFiles<br>CMsmqVssWriter::GetFileCount<br>CMsmqVssWriter::GetTriggerResourceName<br>CMsmqVssWriter::HandleRestoreThread<br>CMsmqVssWriter::OnBackupComplete<br>CMsmqVssWriter::OnPreRestore<br>CMsmqVssWriter::PrepareBackupFile<br>CMsmqVssWriter::PrepareServiceConfig<br>CMsmqVssWriter::PrepareWriter<br>CMsmqVssWriter::RestoreRegistry<br>CMulticastListener::AcceptSucceeded<br>CMulticastListener::CMulticastListener<br>CMulticastReceiver::CreatePerfmonInstance<br>CNotificationBody::CNotificationBody<br>CNotificationBody::MarhshalIn<br>CNotificationScheduler::ScheduleNotification<br>CNotify::GetNotifyQueueFormat<br>CNotify::Init<br>COutSequence::UpdateOnHoldStatus<br>CPerf::InitPerf<br>CPgmWinsockConnection::CheckLocalInterfaceIP<br>CPgmWinsockConnection::InitClass<br>CPgmWinsockConnection::SetSocketOptions<br>CPing::CreateIPPingSocket<br>CPing::Select<br>CPing::Send<br>CPingPong::ChooseFileName<br>CPingServer::Run<br>CPropertyHeader::GetNextSection<br>CProxyBlobReader::Read<br>CProxyBlobReader::ReadStr<br>CProxyTransport::Send<br>CQMDSSecureableObject::GetObjectSecurity<br>CQPrivate::GetQueueIdForDirectFormatName<br>CQPrivate::QMCreatePrivateQueue<br>CQPrivate::QMPrivateQueuePathToQueueId<br>CQueueAliasImp::LoadMaps<br>CQueueMgr::CreateACQueue<br>CQueueMgr::CreateDistributionHandle<br>CQueueMgr::CreateQueueObject<br>CQueueMgr::GetDistributionQueueObject<br>CQueueMgr::GetOpenQueuesFormatName<br>CQueueMgr::LookUpQueue<br>CQueueMgr::OpenQueue<br>CQueueMgr::SatisfyDistributionRequest<br>CQueueMgr::SendPacket<br>CQueueMgr::ValidateMachineProperties<br>CQueueMgr::ValidateOpenedQueues<br>CResourceManager::ConnectDTC<br>CResourceManager::EnlistTransaction<br>CResourceManager::EnlistTransactionEx<br>CRexCharClass::escapedChar<br>CRexCharClass::parseCharClass<br>CRexCharClass::setRange<br>CRexRegExpr_Impl::NFAStateTable::construct<br>CRexRegExpr_Impl::NFAStateTable::createNewState<br>CRexRegExpr_Impl::ParseTree::ParseTreeNode::dumpNodeHeader<br>CRexRegExpr_Impl::ParseTree::parse<br>CRexRegExpr_Impl::ParseTree::parseCatNode<br>CRexRegExpr_Impl::ParseTree::parseClosureNode<br>CRexRegExpr_Impl::ParseTree::parseLeafNode<br>CSSlEncryptor::Append<br>CSSlNegotiation::AuthenticateServer<br>CSSlNegotiation::ReadProxyConnectResponseContinute<br>CSSlNegotiation::SendSslProxyConnectRequest<br>CSSlReceiver::TryDecrypteMessage<br>CSecurityHeader::GetNextSection<br>CSendCryptInfo::CreateSymmKey<br>CSenderStreamFactory::Create<br>CSessionMgr::AddWaitingSessions<br>CSessionMgr::GetSessionForDirectQueue<br>CSessionMgr::InitListeningSocket<br>CSessionMgr::MarkAddressAsNotConnecting<br>CSessionMgr::NotifyWaitingQueue<br>CSessionMgr::TryConnect<br>CSockTransport::ConnectSocket<br>CSockTransport::CreateAsyncConnection<br>CSockTransport::CreateAsyncConnectionFirstAttempt<br>CSockTransport::CreateConnection<br>CSockTransport::HandleAckPacket<br>CSockTransport::HandleReceiveUserMsg<br>CSockTransport::NeedAck<br>CSockTransport::NetworkSend<br>CSockTransport::NewSession<br>CSockTransport::WriteUserMsgCompleted<br>CSrmpRequestBuffers::SourceSerializeMessage<br>CTransaction::Save<br>CalcPropHash<br>CheckProps<br>CheckReceivedPacketEndpoints<br>CommitmentReceiptRequestToProps<br>CommitmentReceiptToProps<br>ConnectToDriver<br>ConnectorHash<br>CreateBypassList<br>CreateMachineQueues<br>CreateMappingDirectory<br>CreateNewMsmqConf<br>CreateNewRRQueueObject<br>CreateRRQueueObject<br>CreateSampleFile<br>CreateStorageDirectories<br>DeleteExpressFiles<br>Deserialize<br>DpInsertMessage<br>DpRemoveMessage<br>E2ETraceEvent<br>E2ETraceMessageInQueue<br>E2ETraceNetworkReceive<br>E2ETraceNetworkSend<br>EvRegisterFloodingEvent<br>EvReportWithError<br>EvReportWithErrorAndFrequency<br>EvReportWithErrorAndFrequency<br>EvReportWithFrequency<br>EvReportWithFrequency<br>ExpandRegistryValue<br>ExpirationToProps<br>FailMoveDomain<br>FindBoundarySeperator<br>FindMsmqConfInNewDomain<br>FindMsmqConfInOldDomain<br>FnDirectIDToLocalPathName<br>FnParseGuidString<br>FnpBindDN<br>FnpDomainBindGuid<br>FnpExpandDL<br>FnpGCBindGuid<br>FnpInsert2DLSet<br>FnpServerlessBindDN<br>FnpServerlessBindGuid<br>FnpString2Guid<br>GenerateEnvelope<br>GetCertInfo<br>GetConnectorQueueProperty<br>GetDSQueueProperty<br>GetDefaultStreamReceiptURL<br>GetDirectQueueOrSubqueueProperty<br>GetDsServerList<br>GetFormattedName<br>GetInstanceName<br>GetLargePropertyValueInternal<br>GetLocalSystemQueueName<br>GetMachineAddress<br>GetMachineDNSNames<br>GetMachineProperty<br>GetMsgIdName<br>GetMulticastQueueProperty<br>GetOrderQueueFormat<br>GetPrivateQueueProperty<br>GetPropertyValue<br>GetQueue<br>GetRRQueueProperties<br>GetReadableNextHop<br>GetRecSymmKey<br>GetSessionToNextHop<br>HandleChangeOfJoinStatus<br>HandleGetPrivateQueues<br>HandleGetPropagateFlagMessage<br>HandleGetReportQueueMessage<br>HandlePing<br>HandleQueueNotification<br>HandleSendTestMessage<br>HandleSetReportQueueMessage<br>HeaderToProps<br>InDefaultCommit<br>InitBindingIPAddress<br>InitLogging<br>InitMulticastPrivateQueues<br>InitMulticastPublicQueues<br>InitOnHold<br>InitializeRpcServer<br>InternalVerifyStackAvailable<br>IsBadLQSFile<br>IsLocalDirectQueue<br>IsPermissionGranted<br>IstheCallbackForMe<br>LQSCleanupTemporaryFiles<br>LQSCreateInternal<br>LQSDelete<br>LQSDelete<br>LQSDeleteInternal<br>LQSFileNameToGuid<br>LQSGetFirstInternal<br>LQSGetNextInternal<br>LQSLoadFilenameCache<br>LQSOpen<br>LQSOpen<br>LQSOpen<br>LQSOpenInternal<br>LoadPersistentPackets<br>LookupCertInAD<br>MQpDlToFormatName<br>MQpOpenQueue<br>MQpOpenQueueDep2<br>MQpQueueFormatToFormatName<br>MpDeserialize<br>MqAddTelemetryQueueInfo<br>MqCreateMsmqObj<br>MsmBind<br>MsmpDumpPGMReceiverStats<br>MsmqAdminMqfToProps<br>MsmqDestinationMqfToProps<br>MsmqEodToProps<br>MsmqResponseMqfElementToProps<br>MsmqTTrqProps<br>MsmqToProps<br>MsmqUalLogRpcSession<br>MsmqUalLogTcpSession<br>MsmqUalStart<br>MsmqUalStop<br>MtmDisconnect<br>MtmGetTransport<br>MtmTransportClosed<br>MtmTransportPause<br>MtmpCreateNewTransport<br>NoConnect<br>NoInitialize<br>NoListLocalAddreses<br>OrderAckQueueContent::GetNetbiosOrderQueue<br>ParseOneFormatName<br>PrepareReportTitle<br>PrepareTestMsgTitle<br>PrintSid<br>ProcessPacket<br>ProcessReceivedPacket<br>PropertiesToProps<br>QMCOMMSecurityCallback<br>QMRegisterDynamicEnpoint<br>QMRemoteEndReceiveInternal<br>QMRpcServerUseProtseqEpOnSpecificIp<br>QMWritePoolAllocationEvent<br>QMpGetRemoteQueueOwnerMachineName<br>QMpLocalPathNameToQueueFormat<br>QMpRemoteStartReceive<br>QmRdGetSessionForQueue<br>QmpAbnormalTerminationHandler<br>QmpEnableMSMQTracing<br>QmpInitialize<br>QueryExpandStringSize<br>R_ProcessHTTPRequest<br>RdpGetMachineData<br>RdpGetSiteFrs<br>RdpGetSiteLinks<br>ReceiveNotifications<br>RefreshSiteServersList<br>RegisterFloodingEvent<br>RemoteReadSecurityCallback<br>RemoteRead_v1_0_S_SetUserAcknowledgementClass<br>ReportBadMessage<br>RestorePackets<br>RestrictServicePrivileges<br>STpDumpPGMSenderStats<br>SendXactAck<br>SentAtElementToProps<br>ServiceToProps<br>SignatureToProps<br>SmXpPathToProps<br>StpCreateCredentials<br>StreamReceiptToProps<br>StreamToProps<br>StringToGuid<br>SyncMachineState<br>SyncQueueState<br>TA2StringAddr<br>TrControl::ComposeTraceRegKeyName<br>TrControl::GetTraceFileName<br>TrControl::GetTraceFlag<br>TrControl::IsLoggerRunning<br>TrControl::Stop<br>TrControl::UpdateTraceFlagInRegistry<br>TraceLoggingRegisterEx_EventRegister_EventSetInformation<br>UpdateAllPublicQueuesInCache<br>UriToQueueFormat<br>VerifySignature20<br>WriteProperyString<br>XdsValidateSignature<br>_CreateTheConfigurationObject<br>_PostCreateProcessing<br>_RegisterMachine<br>__GSHandlerCheckCommon<br>_invoke_watson<br>_resetstkoflw_static<br>`CRexCharClass::setExplicitRange'::__l2::ExplicitRangeMap::ExplicitRangeMap<br>operator<<<br>operator<<<br>operator<<<br>operator<<<br>operator<<<br>operator<<<br>operator<<<br>operator<<<CFnSerializeMqf><br>operator<<<QueueFormatUriContent><br>qmcomm2_v1_0_S_rpc_ACReceiveMessageEx<br>qmcomm2_v1_0_S_rpc_ACSendMessageEx<br>qmcomm_v1_0_S_QMQueryQMRegistryInternal<br>qmcomm_v1_0_S_rpc_ACReceiveMessage<br>qmcomm_v1_0_S_rpc_ACSendMessage<br>std::_Tree<std::_Tmap_traits<QUEUE_FORMAT,std::set<_MULTICAST_ID,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>_>,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<QUEUE_FORMAT,std::set<_MULTICAST_ID,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>_>,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_GUID,CNotificationBody,CFunc_CompareGuids,std::allocator<std::pair<_GUID_const_,CNotificationBody>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID,CNotificationBody,CFunc_CompareGuids,std::allocator<std::pair<_GUID_const_,CNotificationBody>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_GUID,std::set<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>_>,std::less<_GUID>,std::allocator<std::pair<_GUID_const_,std::set<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>_>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID,std::set<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>_>,std::less<_GUID>,std::allocator<std::pair<_GUID_const_,std::set<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>_>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,CSite*___ptr64,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,CSite*___ptr64>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,CSite*___ptr64,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,CSite*___ptr64>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,CSite::CNextSiteHop,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,CSite::CNextSiteHop>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,R<CMachine>,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,R<CMachine>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,R<CMachine>,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,R<CMachine>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,R<CMulticastListener>,CFunc_MulticastIdCompare,std::allocator<std::pair<_MULTICAST_ID_const_,R<CMulticastListener>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,R<CMulticastListener>,CFunc_MulticastIdCompare,std::allocator<std::pair<_MULTICAST_ID_const_,R<CMulticastListener>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,R<CMulticastTransport>,CFunc_MulticastIdCompare,std::allocator<std::pair<_MULTICAST_ID_const_,R<CMulticastTransport>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,R<CMulticastTransport>,CFunc_MulticastIdCompare,std::allocator<std::pair<_MULTICAST_ID_const_,R<CMulticastTransport>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,std::set<QUEUE_FORMAT,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>_>,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,std::set<QUEUE_FORMAT,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>_>,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<basic_xstr_t<wchar_t>,List<CNsUriNode,0>*___ptr64,std::less<basic_xstr_t<wchar_t>_>,std::allocator<std::pair<basic_xstr_t<wchar_t>_const_,List<CNsUriNode,0>*___ptr64>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<basic_xstr_t<wchar_t>,List<CNsUriNode,0>*___ptr64,std::less<basic_xstr_t<wchar_t>_>,std::allocator<std::pair<basic_xstr_t<wchar_t>_const_,List<CNsUriNode,0>*___ptr64>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>,int_(__cdecl*)(int),std::less<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_const_,int_(__cdecl*)(int)>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>,int_(__cdecl*)(int),std::less<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_const_,int_(__cdecl*)(int)>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<unsigned_long,CRoutingNode,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,CRoutingNode>_>,1>_>::_Insert<br>std::_Tree<std::_Tmap_traits<unsigned_long,CRoutingNode,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,CRoutingNode>_>,1>_>::erase<br>std::_Tree<std::_Tmap_traits<unsigned_long,R<CGetPacket2RemoteOv>,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,R<CGetPacket2RemoteOv>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<unsigned_long,R<CGetPacket2RemoteOv>,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,R<CGetPacket2RemoteOv>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<unsigned_long,R<CRRCursor>,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,R<CRRCursor>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<unsigned_long,R<CRRCursor>,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,R<CRRCursor>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<unsigned_long,unsigned_long,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,unsigned_long>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<unsigned_long,unsigned_long,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,unsigned_long>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<wchar_t*___ptr64,R<CTransport>,CFunc_wcscmp,std::allocator<std::pair<wchar_t*___ptr64_const,R<CTransport>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<wchar_t*___ptr64,R<CTransport>,CFunc_wcscmp,std::allocator<std::pair<wchar_t*___ptr64_const,R<CTransport>_>_>,0>_>::erase<br>std::_Tree<std::_Tset_traits<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<QUEUE_FORMAT,CFunc_CompareQueueFormat,std::allocator<QUEUE_FORMAT>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<QUEUE_FORMAT,CFunc_CompareQueueFormat,std::allocator<QUEUE_FORMAT>,0>_>::erase<br>std::_Tree<std::_Tset_traits<QUEUE_FORMAT,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<QUEUE_FORMAT,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>,0>_>::erase<br>std::_Tree<std::_Tset_traits<R<CRouteMachine_const_>,CRouteTable::next_hop_less,std::allocator<R<CRouteMachine_const_>_>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<R<CRouteMachine_const_>,CRouteTable::next_hop_less,std::allocator<R<CRouteMachine_const_>_>,0>_>::erase<br>std::_Tree<std::_Tset_traits<_MULTICAST_ID,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<_MULTICAST_ID,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>,0>_>::erase<br>std::_Tree<std::_Tset_traits<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::less<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::less<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>,0>_>::erase<br>std::basic_stringbuf<char,std::char_traits<char>,std::allocator_static<char>_>::str<br>std::basic_stringbuf<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>_>::str<br>std::ctype<char>::ctype<char><br>std::ctype<wchar_t>::_Donarrow<br>std::ctype<wchar_t>::ctype<wchar_t><br>std::ios_base::clear<br>std::list<R<CMulticastReceiver>,std::allocator<R<CMulticastReceiver>_>_>::_Insert<br>std::list<R<CSiteLink_const_>,std::allocator<R<CSiteLink_const_>_>_>::_Insert<br>std::list<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>_>::_Insert<br>std::list<unsigned___int64,std::allocator<unsigned___int64>_>::_Insert<br>std::map<_GUID,CNotificationBody,CFunc_CompareGuids,std::allocator<std::pair<_GUID_const_,CNotificationBody>_>_>::operator[]<br>std::map<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>,int_(__cdecl*)(int),std::less<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_const_,int_(__cdecl*)(int)>_>_>::operator[]<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::_Fput<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::_Getcat<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::_Iput<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::_Fput<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::_Getcat<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::_Iput<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::numpunct<char>::_Getcat<br>std::numpunct<wchar_t>::_Getcat<br>std::operator+<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>_><br>std::vector<CRexRegExpr_Impl::NFAStateTable::NFAState,std::allocator<CRexRegExpr_Impl::NFAStateTable::NFAState>_>::_Insert_n<br>std::vector<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>_>::_Insert_n<br>std::vector<std::pair<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator_static<wchar_t>,class__STL70>_>,std::allocator<std::pair<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator_static<wchar_t>,class__STL70>_>_>_>::_Insert_n<br>wil::GetFailureLogString<br>wil::ResultException::what<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::GetModuleInformation<br>wil::details::ReportFailure_Return<1><br>wil::details::ReportFailure_Return<2><br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::FeatureStateData>::Acquire<br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Acquire<br>wil::details_abi::RecordWnfUsageIndex<br>wil::details_abi::SemaphoreValue::CreateFromValueInternal<br>wil::details_abi::SemaphoreValue::TryGetValueInternal<br>wil::details_abi::UsageIndexes::Record<br>wil_details_WriteSRUMWnfUsageBuffer</details>|<details><summary>Expand for full list:<br>ACAssociateQueue<br>ACMoveToSubqueue<br>AcceptIPThread<br>AppGetIncomingPgmSessionPerfmonCounters<br>BuildNotificationMsg<br>BuildPropertyHeaderSection<br>BuildSecurityHeaderSection<br>BuildSenderStreamHeaderSection<br>BuildServerList<br>CAdmin::GetReportQueue<br>CAdmin::Init</summary>CAdmin::SendReportConflict<br>CCache<CCertificateHash,R<CERTINFO>,CNullExpirationHandler<R<CERTINFO>_>_>::ExpireHalfCacheEntries<br>CCache<CCertificateHash,R<CERTINFO>,CNullExpirationHandler<R<CERTINFO>_>_>::ExpirePeriodicCacheEnteries<br>CCache<CCryptKeyHashKey,R<CCryptKey>,CMarkingExpirationHandler<CCryptKey>_>::ExpireHalfCacheEntries<br>CCache<CCryptKeyHashKey,R<CCryptKey>,CMarkingExpirationHandler<CCryptKey>_>::ExpirePeriodicCacheEnteries<br>CCache<_GUID,R<CSendCryptInfo>,CNullExpirationHandler<R<CSendCryptInfo>_>_>::ExpireHalfCacheEntries<br>CCache<_GUID,R<CSendCryptInfo>,CNullExpirationHandler<R<CSendCryptInfo>_>_>::ExpirePeriodicCacheEnteries<br>CCache<_GUID,R<QMPBKEYINFO>,CNullExpirationHandler<R<QMPBKEYINFO>_>_>::ExpireHalfCacheEntries<br>CCache<_GUID,R<QMPBKEYINFO>,CNullExpirationHandler<R<QMPBKEYINFO>_>_>::ExpirePeriodicCacheEnteries<br>CEventReporter::Report<br>CFilesIterator::operator*<br>CInSeqHash::AddSequence<br>CInSeqHash::CleanupDeadSequences<br>CInSeqHash::Destroy<br>CInSeqHash::GetInSequenceInformation<br>CInSeqHash::Load<br>CInSeqHash::Lookup<br>CInSeqHash::Save<br>CInSequence::Load<br>CInSequence::Log<br>CInSequence::Save<br>CLexMap::InsertItem<br>CLexMap::Lookup<br>CLexMap::PrepareURIForLexer<br>CLogger::ChooseFileName<br>CMSMQTrace::MSMQTraceEvent<br>CMessageMap::InsertMessage<br>CMessageMulticastTransport::CMessageMulticastTransport<br>CMessageMulticastTransport::Connect<br>CMessageMulticastTransport::ConnectionFailed<br>CMessageMulticastTransport::ConnectionSucceeded<br>CMessageMulticastTransport::DeliverPacket<br>CMessageMulticastTransport::GetPacketForConnectingSucceeded<br>CMessageMulticastTransport::GetPacketForSendingFailed<br>CMessageMulticastTransport::SendFailed<br>CMessageMulticastTransport::SendSucceeded<br>CMessageTransport::Connect<br>CMessageTransport::DeliverPacket<br>CMessageTransport::GetContentLength<br>CMessageTransport::GetNewLocation<br>CMsmqVssWriter::BackupRegistry<br>CMsmqVssWriter::BackupRegistryKeyInternal<br>CMsmqVssWriter::CleanupDirectory<br>CMsmqVssWriter::ConvertComponentsToNames<br>CMsmqVssWriter::CopyFiles<br>CMsmqVssWriter::CreateDirectoryTree<br>CMsmqVssWriter::DeleteRestoreFiles<br>CMsmqVssWriter::DeleteStorageFiles<br>CMsmqVssWriter::GetFileCount<br>CMsmqVssWriter::GetTriggerResourceName<br>CMsmqVssWriter::HandleRestoreThread<br>CMsmqVssWriter::OnBackupComplete<br>CMsmqVssWriter::OnPreRestore<br>CMsmqVssWriter::PrepareBackupFile<br>CMsmqVssWriter::PrepareServiceConfig<br>CMsmqVssWriter::PrepareWriter<br>CMsmqVssWriter::RestoreRegistry<br>CMulticastListener::AcceptSucceeded<br>CMulticastListener::CMulticastListener<br>CMulticastReceiver::CreatePerfmonInstance<br>CNotificationBody::CNotificationBody<br>CNotificationBody::MarhshalIn<br>CNotificationScheduler::ScheduleNotification<br>CNotify::GetNotifyQueueFormat<br>CNotify::Init<br>COutSequence::UpdateOnHoldStatus<br>CPerf::InitPerf<br>CPgmWinsockConnection::CheckLocalInterfaceIP<br>CPgmWinsockConnection::InitClass<br>CPgmWinsockConnection::SetSocketOptions<br>CPing::CreateIPPingSocket<br>CPing::Select<br>CPing::Send<br>CPingPong::ChooseFileName<br>CPingServer::Run<br>CPropertyHeader::GetNextSection<br>CPropertyHeader::GetNextSectionSafe<br>CProxyBlobReader::Read<br>CProxyBlobReader::ReadStr<br>CProxyTransport::Send<br>CQMDSSecureableObject::GetObjectSecurity<br>CQPrivate::GetQueueIdForDirectFormatName<br>CQPrivate::QMCreatePrivateQueue<br>CQPrivate::QMPrivateQueuePathToQueueId<br>CQueueAliasImp::LoadMaps<br>CQueueMgr::CreateACQueue<br>CQueueMgr::CreateDistributionHandle<br>CQueueMgr::CreateQueueObject<br>CQueueMgr::GetDistributionQueueObject<br>CQueueMgr::GetOpenQueuesFormatName<br>CQueueMgr::LookUpQueue<br>CQueueMgr::OpenQueue<br>CQueueMgr::SatisfyDistributionRequest<br>CQueueMgr::SendPacket<br>CQueueMgr::ValidateMachineProperties<br>CQueueMgr::ValidateOpenedQueues<br>CResourceManager::ConnectDTC<br>CResourceManager::EnlistTransaction<br>CResourceManager::EnlistTransactionEx<br>CRexCharClass::escapedChar<br>CRexCharClass::parseCharClass<br>CRexCharClass::setRange<br>CRexRegExpr_Impl::NFAStateTable::construct<br>CRexRegExpr_Impl::NFAStateTable::createNewState<br>CRexRegExpr_Impl::ParseTree::ParseTreeNode::dumpNodeHeader<br>CRexRegExpr_Impl::ParseTree::parse<br>CRexRegExpr_Impl::ParseTree::parseCatNode<br>CRexRegExpr_Impl::ParseTree::parseClosureNode<br>CRexRegExpr_Impl::ParseTree::parseLeafNode<br>CSSlEncryptor::Append<br>CSSlNegotiation::AuthenticateServer<br>CSSlNegotiation::ReadProxyConnectResponseContinute<br>CSSlNegotiation::SendSslProxyConnectRequest<br>CSSlReceiver::TryDecrypteMessage<br>CSecurityHeader::GetNextSection<br>CSecurityHeader::GetNextSectionSafe<br>CSendCryptInfo::CreateSymmKey<br>CSenderStreamFactory::Create<br>CSessionMgr::AddWaitingSessions<br>CSessionMgr::GetSessionForDirectQueue<br>CSessionMgr::InitListeningSocket<br>CSessionMgr::MarkAddressAsNotConnecting<br>CSessionMgr::NotifyWaitingQueue<br>CSessionMgr::TryConnect<br>CSockTransport::ConnectSocket<br>CSockTransport::CreateAsyncConnection<br>CSockTransport::CreateAsyncConnectionFirstAttempt<br>CSockTransport::CreateConnection<br>CSockTransport::HandleAckPacket<br>CSockTransport::HandleReceiveUserMsg<br>CSockTransport::NeedAck<br>CSockTransport::NetworkSend<br>CSockTransport::NewSession<br>CSockTransport::WriteUserMsgCompleted<br>CSrmpRequestBuffers::SourceSerializeMessage<br>CTransaction::Save<br>CalcPropHash<br>CheckProps<br>CheckReceivedPacketEndpoints<br>CommitmentReceiptRequestToProps<br>CommitmentReceiptToProps<br>ConnectToDriver<br>ConnectorHash<br>CreateBypassList<br>CreateMachineQueues<br>CreateMappingDirectory<br>CreateNewMsmqConf<br>CreateNewRRQueueObject<br>CreateRRQueueObject<br>CreateSampleFile<br>CreateStorageDirectories<br>DeleteExpressFiles<br>Deserialize<br>DpInsertMessage<br>DpRemoveMessage<br>E2ETraceEvent<br>E2ETraceMessageInQueue<br>E2ETraceNetworkReceive<br>E2ETraceNetworkSend<br>EvRegisterFloodingEvent<br>EvReportWithError<br>EvReportWithErrorAndFrequency<br>EvReportWithErrorAndFrequency<br>EvReportWithFrequency<br>EvReportWithFrequency<br>ExpandRegistryValue<br>ExpirationToProps<br>FailMoveDomain<br>FindBoundarySeperator<br>FindMsmqConfInNewDomain<br>FindMsmqConfInOldDomain<br>FnDirectIDToLocalPathName<br>FnParseGuidString<br>FnpBindDN<br>FnpDomainBindGuid<br>FnpExpandDL<br>FnpGCBindGuid<br>FnpInsert2DLSet<br>FnpServerlessBindDN<br>FnpServerlessBindGuid<br>FnpString2Guid<br>GenerateEnvelope<br>GetCertInfo<br>GetConnectorQueueProperty<br>GetDSQueueProperty<br>GetDefaultStreamReceiptURL<br>GetDirectQueueOrSubqueueProperty<br>GetDsServerList<br>GetFormattedName<br>GetInstanceName<br>GetLargePropertyValueInternal<br>GetLocalSystemQueueName<br>GetMachineAddress<br>GetMachineDNSNames<br>GetMachineProperty<br>GetMsgIdName<br>GetMulticastQueueProperty<br>GetOrderQueueFormat<br>GetPrivateQueueProperty<br>GetPropertyValue<br>GetQueue<br>GetRRQueueProperties<br>GetReadableNextHop<br>GetRecSymmKey<br>GetSessionToNextHop<br>HandleChangeOfJoinStatus<br>HandleGetPrivateQueues<br>HandleGetPropagateFlagMessage<br>HandleGetReportQueueMessage<br>HandlePing<br>HandleQueueNotification<br>HandleSendTestMessage<br>HandleSetReportQueueMessage<br>HeaderToProps<br>InDefaultCommit<br>InitBindingIPAddress<br>InitLogging<br>InitMulticastPrivateQueues<br>InitMulticastPublicQueues<br>InitOnHold<br>InitializeRpcServer<br>InternalVerifyStackAvailable<br>IsBadLQSFile<br>IsLocalDirectQueue<br>IsPermissionGranted<br>IstheCallbackForMe<br>LQSCleanupTemporaryFiles<br>LQSCreateInternal<br>LQSDelete<br>LQSDelete<br>LQSDeleteInternal<br>LQSFileNameToGuid<br>LQSGetFirstInternal<br>LQSGetNextInternal<br>LQSLoadFilenameCache<br>LQSOpen<br>LQSOpen<br>LQSOpen<br>LQSOpenInternal<br>LoadPersistentPackets<br>LookupCertInAD<br>MQpDlToFormatName<br>MQpOpenQueue<br>MQpOpenQueueDep2<br>MQpQueueFormatToFormatName<br>MpDeserialize<br>MqAddTelemetryQueueInfo<br>MqCreateMsmqObj<br>MsmBind<br>MsmpDumpPGMReceiverStats<br>MsmqAdminMqfToProps<br>MsmqDestinationMqfToProps<br>MsmqEodToProps<br>MsmqResponseMqfElementToProps<br>MsmqTTrqProps<br>MsmqToProps<br>MsmqUalLogRpcSession<br>MsmqUalLogTcpSession<br>MsmqUalStart<br>MsmqUalStop<br>MtmDisconnect<br>MtmGetTransport<br>MtmTransportClosed<br>MtmTransportPause<br>MtmpCreateNewTransport<br>NoConnect<br>NoInitialize<br>NoListLocalAddreses<br>OrderAckQueueContent::GetNetbiosOrderQueue<br>ParseOneFormatName<br>PrepareReportTitle<br>PrepareTestMsgTitle<br>PrintSid<br>ProcessPacket<br>ProcessReceivedPacket<br>PropertiesToProps<br>QMCOMMSecurityCallback<br>QMRegisterDynamicEnpoint<br>QMRemoteEndReceiveInternal<br>QMRpcServerUseProtseqEpOnSpecificIp<br>QMWritePoolAllocationEvent<br>QMpGetRemoteQueueOwnerMachineName<br>QMpLocalPathNameToQueueFormat<br>QMpRemoteStartReceive<br>QmRdGetSessionForQueue<br>QmpAbnormalTerminationHandler<br>QmpEnableMSMQTracing<br>QmpInitialize<br>QueryExpandStringSize<br>R_ProcessHTTPRequest<br>RdpGetMachineData<br>RdpGetSiteFrs<br>RdpGetSiteLinks<br>ReceiveNotifications<br>RefreshSiteServersList<br>RegisterFloodingEvent<br>RemoteReadSecurityCallback<br>RemoteRead_v1_0_S_SetUserAcknowledgementClass<br>ReportBadMessage<br>RestorePackets<br>RestrictServicePrivileges<br>STpDumpPGMSenderStats<br>SendXactAck<br>SentAtElementToProps<br>ServiceToProps<br>SignatureToProps<br>SmXpPathToProps<br>StpCreateCredentials<br>StreamReceiptToProps<br>StreamToProps<br>StringToGuid<br>SyncMachineState<br>SyncQueueState<br>TA2StringAddr<br>TrControl::ComposeTraceRegKeyName<br>TrControl::GetTraceFileName<br>TrControl::GetTraceFlag<br>TrControl::IsLoggerRunning<br>TrControl::Stop<br>TrControl::UpdateTraceFlagInRegistry<br>TraceLoggingRegisterEx_EventRegister_EventSetInformation<br>UpdateAllPublicQueuesInCache<br>UriToQueueFormat<br>VerifySignature20<br>WriteProperyString<br>XdsValidateSignature<br>_CreateTheConfigurationObject<br>_PostCreateProcessing<br>_RegisterMachine<br>__GSHandlerCheckCommon<br>_invoke_watson<br>_resetstkoflw_static<br>`CRexCharClass::setExplicitRange'::__l2::ExplicitRangeMap::ExplicitRangeMap<br>operator<<<br>operator<<<br>operator<<<br>operator<<<br>operator<<<br>operator<<<br>operator<<<br>operator<<<CFnSerializeMqf><br>operator<<<QueueFormatUriContent><br>qmcomm2_v1_0_S_rpc_ACReceiveMessageEx<br>qmcomm2_v1_0_S_rpc_ACSendMessageEx<br>qmcomm_v1_0_S_QMQueryQMRegistryInternal<br>qmcomm_v1_0_S_rpc_ACReceiveMessage<br>qmcomm_v1_0_S_rpc_ACSendMessage<br>std::_Tree<std::_Tmap_traits<QUEUE_FORMAT,std::set<_MULTICAST_ID,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>_>,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<QUEUE_FORMAT,std::set<_MULTICAST_ID,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>_>,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_GUID,CNotificationBody,CFunc_CompareGuids,std::allocator<std::pair<_GUID_const_,CNotificationBody>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID,CNotificationBody,CFunc_CompareGuids,std::allocator<std::pair<_GUID_const_,CNotificationBody>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_GUID,std::set<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>_>,std::less<_GUID>,std::allocator<std::pair<_GUID_const_,std::set<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>_>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID,std::set<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>_>,std::less<_GUID>,std::allocator<std::pair<_GUID_const_,std::set<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>_>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,CSite*___ptr64,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,CSite*___ptr64>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,CSite*___ptr64,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,CSite*___ptr64>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,CSite::CNextSiteHop,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,CSite::CNextSiteHop>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,R<CMachine>,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,R<CMachine>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_GUID_const*___ptr64,R<CMachine>,guid_less,std::allocator<std::pair<_GUID_const*___ptr64_const,R<CMachine>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,R<CMulticastListener>,CFunc_MulticastIdCompare,std::allocator<std::pair<_MULTICAST_ID_const_,R<CMulticastListener>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,R<CMulticastListener>,CFunc_MulticastIdCompare,std::allocator<std::pair<_MULTICAST_ID_const_,R<CMulticastListener>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,R<CMulticastTransport>,CFunc_MulticastIdCompare,std::allocator<std::pair<_MULTICAST_ID_const_,R<CMulticastTransport>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,R<CMulticastTransport>,CFunc_MulticastIdCompare,std::allocator<std::pair<_MULTICAST_ID_const_,R<CMulticastTransport>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,std::set<QUEUE_FORMAT,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>_>,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<_MULTICAST_ID,std::set<QUEUE_FORMAT,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>_>,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<basic_xstr_t<wchar_t>,List<CNsUriNode,0>*___ptr64,std::less<basic_xstr_t<wchar_t>_>,std::allocator<std::pair<basic_xstr_t<wchar_t>_const_,List<CNsUriNode,0>*___ptr64>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<basic_xstr_t<wchar_t>,List<CNsUriNode,0>*___ptr64,std::less<basic_xstr_t<wchar_t>_>,std::allocator<std::pair<basic_xstr_t<wchar_t>_const_,List<CNsUriNode,0>*___ptr64>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>,int_(__cdecl*)(int),std::less<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_const_,int_(__cdecl*)(int)>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>,int_(__cdecl*)(int),std::less<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_const_,int_(__cdecl*)(int)>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<unsigned_long,CRoutingNode,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,CRoutingNode>_>,1>_>::_Insert<br>std::_Tree<std::_Tmap_traits<unsigned_long,CRoutingNode,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,CRoutingNode>_>,1>_>::erase<br>std::_Tree<std::_Tmap_traits<unsigned_long,R<CGetPacket2RemoteOv>,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,R<CGetPacket2RemoteOv>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<unsigned_long,R<CGetPacket2RemoteOv>,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,R<CGetPacket2RemoteOv>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<unsigned_long,R<CRRCursor>,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,R<CRRCursor>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<unsigned_long,R<CRRCursor>,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,R<CRRCursor>_>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<unsigned_long,unsigned_long,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,unsigned_long>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<unsigned_long,unsigned_long,std::less<unsigned_long>,std::allocator<std::pair<unsigned_long_const_,unsigned_long>_>,0>_>::erase<br>std::_Tree<std::_Tmap_traits<wchar_t*___ptr64,R<CTransport>,CFunc_wcscmp,std::allocator<std::pair<wchar_t*___ptr64_const,R<CTransport>_>_>,0>_>::_Insert<br>std::_Tree<std::_Tmap_traits<wchar_t*___ptr64,R<CTransport>,CFunc_wcscmp,std::allocator<std::pair<wchar_t*___ptr64_const,R<CTransport>_>_>,0>_>::erase<br>std::_Tree<std::_Tset_traits<CMsgEntry*___ptr64,msg_entry_less,std::allocator<CMsgEntry*___ptr64>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<QUEUE_FORMAT,CFunc_CompareQueueFormat,std::allocator<QUEUE_FORMAT>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<QUEUE_FORMAT,CFunc_CompareQueueFormat,std::allocator<QUEUE_FORMAT>,0>_>::erase<br>std::_Tree<std::_Tset_traits<QUEUE_FORMAT,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<QUEUE_FORMAT,CFunc_QueueFormatCompare,std::allocator<QUEUE_FORMAT>,0>_>::erase<br>std::_Tree<std::_Tset_traits<R<CRouteMachine_const_>,CRouteTable::next_hop_less,std::allocator<R<CRouteMachine_const_>_>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<R<CRouteMachine_const_>,CRouteTable::next_hop_less,std::allocator<R<CRouteMachine_const_>_>,0>_>::erase<br>std::_Tree<std::_Tset_traits<_MULTICAST_ID,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<_MULTICAST_ID,CFunc_MulticastIdCompare,std::allocator<_MULTICAST_ID>,0>_>::erase<br>std::_Tree<std::_Tset_traits<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::less<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>,0>_>::_Insert<br>std::_Tree<std::_Tset_traits<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::less<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>,0>_>::erase<br>std::basic_stringbuf<char,std::char_traits<char>,std::allocator_static<char>_>::str<br>std::basic_stringbuf<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>_>::str<br>std::ctype<char>::ctype<char><br>std::ctype<wchar_t>::_Donarrow<br>std::ctype<wchar_t>::ctype<wchar_t><br>std::ios_base::clear<br>std::list<R<CMulticastReceiver>,std::allocator<R<CMulticastReceiver>_>_>::_Insert<br>std::list<R<CSiteLink_const_>,std::allocator<R<CSiteLink_const_>_>_>::_Insert<br>std::list<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>_>::_Insert<br>std::list<unsigned___int64,std::allocator<unsigned___int64>_>::_Insert<br>std::map<_GUID,CNotificationBody,CFunc_CompareGuids,std::allocator<std::pair<_GUID_const_,CNotificationBody>_>_>::operator[]<br>std::map<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>,int_(__cdecl*)(int),std::less<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_>,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator_static<char>,_STL70>_const_,int_(__cdecl*)(int)>_>_>::operator[]<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::_Fput<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::_Getcat<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::_Iput<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<char,std::ostreambuf_iterator<char,std::char_traits<char>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::_Fput<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::_Getcat<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::_Iput<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::num_put<wchar_t,std::ostreambuf_iterator<wchar_t,std::char_traits<wchar_t>_>_>::do_put<br>std::numpunct<char>::_Getcat<br>std::numpunct<wchar_t>::_Getcat<br>std::operator+<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>_><br>std::vector<CRexRegExpr_Impl::NFAStateTable::NFAState,std::allocator<CRexRegExpr_Impl::NFAStateTable::NFAState>_>::_Insert_n<br>std::vector<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::allocator<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>_>_>::_Insert_n<br>std::vector<std::pair<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator_static<wchar_t>,class__STL70>_>,std::allocator<std::pair<std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator_static<wchar_t>,_STL70>,std::basic_string<wchar_t,struct_std::char_traits<wchar_t>,class_std::allocator_static<wchar_t>,class__STL70>_>_>_>::_Insert_n<br>wil::GetFailureLogString<br>wil::ResultException::what<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::GetModuleInformation<br>wil::details::ReportFailure_Return<1><br>wil::details::ReportFailure_Return<2><br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::FeatureStateData>::Acquire<br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Acquire<br>wil::details_abi::RecordWnfUsageIndex<br>wil::details_abi::SemaphoreValue::CreateFromValueInternal<br>wil::details_abi::SemaphoreValue::TryGetValueInternal<br>wil::details_abi::UsageIndexes::Record<br>wil_RtlStagingConfig_QueryFeatureState<br>wil_details_RecordCachedUsage<br>wil_details_WriteSRUMWnfUsageBuffer</details>|
|paramcount|1|1|
|`address`|180004760|1800047b0|
|sig|void __cdecl __security_check_cookie(uintptr_t _StackCookie)|void __cdecl __security_check_cookie(uintptr_t _StackCookie)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### __security_check_cookie Calling Diff


```diff
--- __security_check_cookie calling
+++ __security_check_cookie calling
@@ -87,0 +88 @@
+CPropertyHeader::GetNextSectionSafe
@@ -125,0 +127 @@
+CSecurityHeader::GetNextSectionSafe
@@ -450,0 +453,2 @@
+wil_RtlStagingConfig_QueryFeatureState
+wil_details_RecordCachedUsage
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-07-28T09:44:03</sub>