# mfds-06.dll-mfds-07.dll Diff

# 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)
	* [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](#wildetailsunique_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_reset)
	* [wil::details::EnabledStateManager::~EnabledStateManager](#wildetailsenabledstatemanagerenabledstatemanager)
	* [wil::details::EnabledStateManager::ProcessShutdown](#wildetailsenabledstatemanagerprocessshutdown)
	* [wil::details::EnabledStateManager::EnabledStateManager](#wildetailsenabledstatemanagerenabledstatemanager)
	* [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>_>](#wildetailsunique_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_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_)
	* [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_)
	* [<lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>](#lambda_aa194dc0bf891154933407eb98fb868alambda_invoker_cdecl)
	* [wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>](#wildetailsensurecoalescedtimerwildetailsenabledstatemanager)
	* [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>_>](#wildetailsunique_storagewildetailsresource_policy_rtl_srwlock___ptr64void___cdecl_rtl_srwlock___ptr64void___cdecl_releasesrwlockexclusivestruct__rtl_srwlock___ptr64wistdintegral_constantunsigned___int641_rtl_srwlock___ptr64_rtl_srwlock___ptr640stdnullptr_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_)
	* [wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy](#wildetailsdestroythreadpooltimerwildetailssystemthreadpoolmethods0destroy)
	* [wil::details::EnsureSubscribedToFeatureConfigurationChanges](#wildetailsensuresubscribedtofeatureconfigurationchanges)
	* [wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl](#wildetailsenabledstatemanagerensuresubscribedtofeatureconfigurationchangesimpl)
	* [wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush](#wildetailsenabledstatemanagerensuresubscribedtousageflush)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_1136894267getcachedfeatureenabledstate)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCurrentFeatureEnabledState](#wildetailsfeatureimpl__wilfeaturetraits_feature_1136894267getcurrentfeatureenabledstate)
	* [wil::details::GetFeatureEnabledStateHelper](#wildetailsgetfeatureenabledstatehelper)
	* [wil::details::EnabledStateManager::OnStateChange](#wildetailsenabledstatemanageronstatechange)
	* [wil::details::EnabledStateManager::OnTimer](#wildetailsenabledstatemanagerontimer)
	* [wil::details::EnabledStateManager::QueueBackgroundUsageReporting](#wildetailsenabledstatemanagerqueuebackgroundusagereporting)
	* [wil::details::EnabledStateManager::RecordCachedUsageUnderLock](#wildetailsenabledstatemanagerrecordcachedusageunderlock)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::ReportUsage](#wildetailsfeatureimpl__wilfeaturetraits_feature_1136894267reportusage)
	* [wil::details::ReportUsageToServiceDirect](#wildetailsreportusagetoservicedirect)
	* [wil::details::WilApi_RecordFeatureUsage](#wildetailswilapi_recordfeatureusage)
	* [wil::details::WilApi_RecordFeatureUsageReports](#wildetailswilapi_recordfeatureusagereports)
	* [wil::details::WilApi_UnsubscribeFeatureStateChangeNotification](#wildetailswilapi_unsubscribefeaturestatechangenotification)
	* [wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled](#wildetailsfeatureimpl__wilfeaturetraits_feature_1136894267__private_isenabled)
	* [wil::details_abi::heap_buffer::push_back](#wildetails_abiheap_bufferpush_back)
	* [wil::details_abi::heap_buffer::reserve](#wildetails_abiheap_bufferreserve)
	* [ReferencePictureSet::setDeltaPOC](#referencepicturesetsetdeltapoc)
	* [wil_HasFeatureTestState](#wil_hasfeatureteststate)
	* [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)
	* [wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''](#wildetailsdynamic_atexit_destructor_for_g_enabledstatemanager)
	* [API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::WaitForThreadpoolTimerCallbacks](#api-ms-win-core-threadpool-l1-2-0dllwaitforthreadpooltimercallbacks)
	* [API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::SetThreadpoolTimer](#api-ms-win-core-threadpool-l1-2-0dllsetthreadpooltimer)
	* [API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::CreateThreadpoolTimer](#api-ms-win-core-threadpool-l1-2-0dllcreatethreadpooltimer)
* [Modified](#modified)
	* [wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''](#wildetailsdynamic_initializer_for_g_header_init_initializestagingheaderapi)
	* [CHEVCParser::CHEVCParser](#chevcparserchevcparser)
	* [CHEVCParser::parseShortTermRefPicSet](#chevcparserparseshorttermrefpicset)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [ProcessShutdownInProgress](#processshutdowninprogress)
	* [last_error_context](#last_error_context)
	* [API-MS-WIN-CORE-SYSINFO-L1-1-0.DLL::GetTickCount](#api-ms-win-core-sysinfo-l1-1-0dllgettickcount)
	* [ProcessHeapAlloc](#processheapalloc)
	* [__GSHandlerCheck](#__gshandlercheck)
	* [API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive](#api-ms-win-core-synch-l1-1-0dllacquiresrwlockexclusive)
	* [atexit](#atexit)
	* [~last_error_context](#last_error_context)
	* [__security_check_cookie](#__security_check_cookie)
	* [API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive](#api-ms-win-core-synch-l1-1-0dllreleasesrwlockexclusive)

# Visual Chart Diff



```mermaid

flowchart LR

wildetailsdynamic_initializer_for_g_header_init_InitializeStagingHeaderApi-0-old<--Match 78%-->wildetailsdynamic_initializer_for_g_header_init_InitializeStagingHeaderApi-0-new
CHEVCParserCHEVCParser-3-old<--Match 72%-->CHEVCParserCHEVCParser-3-new
CHEVCParserparseShortTermRefPicSet-5-old<--Match 42%-->CHEVCParserparseShortTermRefPicSet-5-new

subgraph mfds-07.dll
    wildetailsdynamic_initializer_for_g_header_init_InitializeStagingHeaderApi-0-new
CHEVCParserCHEVCParser-3-new
CHEVCParserparseShortTermRefPicSet-5-new
    subgraph Added
direction LR
wil-details-dynamic_initializer_for_g_enabledStateManager
    wil-details-dynamic_initializer_for_g_header_init_InitializeStagingSRUMFeatureReporting
    wil-details-unique_storagewil-details-resource_policy_TP_TIMER___ptr64void___cdecl_TP_TIMER___ptr64public_static_void___cdecl_wil-details-DestroyThreadPoolTimerstruct_wil-details-SystemThreadPoolMethods0-Destroystruct__TP_TIMER___ptr64wistd-integral_constantunsigned___int640_TP_TIMER___ptr64_TP_TIMER___ptr640std-nullptr_t_-reset
    wil-details-EnabledStateManager-EnabledStateManager
    wil-details-EnabledStateManager-ProcessShutdown
    wil-details-EnabledStateManager-EnabledStateManager
    wil-details-unique_storagewil-details-resource_policy_TP_TIMER___ptr64void___cdecl_TP_TIMER___ptr64public_static_void___cdecl_wil-details-DestroyThreadPoolTimerstruct_wil-details-SystemThreadPoolMethods0-Destroystruct__TP_TIMER___ptr64wistd-integral_constantunsigned___int640_TP_TIMER___ptr64_TP_TIMER___ptr640std-nullptr_t_-unique_storagewil-details-resource_policy_TP_TIMER___ptr64void___cdecl_TP_TIMER___ptr64public_static_void___cdecl_wil-details-DestroyThreadPoolTimerstruct_wil-details-SystemThreadPoolMethods0-Destroystruct__TP_TIMER___ptr64wistd-integral_constantunsigned___int640_TP_TIMER___ptr64_TP_TIMER___ptr640std-nullptr_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_
    lambda_aa194dc0bf891154933407eb98fb868a-lambda_invoker_cdecl
    wil-details-EnsureCoalescedTimerwil-details-EnabledStateManager
    wil-details-unique_storagewil-details-resource_policy_RTL_SRWLOCK___ptr64void___cdecl_RTL_SRWLOCK___ptr64void___cdecl_ReleaseSRWLockExclusivestruct__RTL_SRWLOCK___ptr64wistd-integral_constantunsigned___int641_RTL_SRWLOCK___ptr64_RTL_SRWLOCK___ptr640std-nullptr_t_-unique_storagewil-details-resource_policy_RTL_SRWLOCK___ptr64void___cdecl_RTL_SRWLOCK___ptr64void___cdecl_ReleaseSRWLockExclusivestruct__RTL_SRWLOCK___ptr64wistd-integral_constantunsigned___int641_RTL_SRWLOCK___ptr64_RTL_SRWLOCK___ptr640std-nullptr_t_
    wil-details-DestroyThreadPoolTimerwil-details-SystemThreadPoolMethods0-Destroy
    wil-details-EnsureSubscribedToFeatureConfigurationChanges
    wil-details-EnabledStateManager-EnsureSubscribedToFeatureConfigurationChangesImpl
    wil-details-EnabledStateManager-EnsureSubscribedToUsageFlush
    wil-details-FeatureImpl__WilFeatureTraits_Feature_1136894267-GetCachedFeatureEnabledState
    wil-details-FeatureImpl__WilFeatureTraits_Feature_1136894267-GetCurrentFeatureEnabledState
    wil-details-GetFeatureEnabledStateHelper
    wil-details-EnabledStateManager-OnStateChange
    wil-details-EnabledStateManager-OnTimer
    wil-details-EnabledStateManager-QueueBackgroundUsageReporting
    wil-details-EnabledStateManager-RecordCachedUsageUnderLock
    wil-details-FeatureImpl__WilFeatureTraits_Feature_1136894267-ReportUsage
    wil-details-ReportUsageToServiceDirect
    wil-details-WilApi_RecordFeatureUsage
    wil-details-WilApi_RecordFeatureUsageReports
    wil-details-WilApi_UnsubscribeFeatureStateChangeNotification
    16_more_added_funcs_omitted
end
end

subgraph mfds-06.dll
    wildetailsdynamic_initializer_for_g_header_init_InitializeStagingHeaderApi-0-old
CHEVCParserCHEVCParser-3-old
CHEVCParserparseShortTermRefPicSet-5-old
    
end

```


```mermaid
pie showData
    title Function Matches - 99.4337%
"unmatched_funcs_len" : 41
"matched_funcs_len" : 7199
```



```mermaid
pie showData
    title Matched Function Similarity - 98.7498%
"matched_funcs_with_code_changes_len" : 3
"matched_funcs_with_non_code_changes_len" : 87
"matched_funcs_no_changes_len" : 7109
```

# Metadata

## Ghidra Diff Engine

### Command Line

#### Captured Command Line


```
ghidriff --project-location ghidra_projects --project-name ghidriff --symbols-path symbols --gzfs-path gzfs --threaded --log-level INFO --file-log-level INFO --log-path ghidriff.log --min-func-len 10 --gdt [] --max-ram-percent 60.0 --max-section-funcs 200 mfds-06.dll mfds-07.dll
```


#### Verbose Args


<details>

```
--old ['mfds-06.dll'] --new [['mfds-07.dll']] --engine VersionTrackingDiff --output-path out --summary False --project-location ghidra_projects --project-name ghidriff --symbols-path 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 False --bsim-full False --max-ram-percent 60.0 --print-flags False --jvm-args None --side-by-side False --max-section-funcs 200 --md-title None
```


</details>

#### Download Original PEs


```
wget https://msdl.microsoft.com/download/symbols/mfds.dll/5E749C49FC000/mfds.dll -O mfds.dll.x64.10.0.26100.8328
wget https://msdl.microsoft.com/download/symbols/mfds.dll/9E82DD4CFD000/mfds.dll -O mfds.dll.x64.10.0.26100.8875
```


## Binary Metadata Diff


```diff
--- mfds-06.dll Meta
+++ mfds-07.dll Meta
@@ -1,44 +1,44 @@
-Program Name: mfds-06.dll
+Program Name: mfds-07.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: 1034832
+# of Bytes: 1039152
 # of Memory Blocks: 10
-# of Instructions: 191963
-# of Defined Data: 12595
-# of Functions: 3598
-# of Symbols: 28088
-# of Data Types: 2302
+# of Instructions: 193286
+# of Defined Data: 12678
+# of Functions: 3642
+# of Symbols: 28345
+# of Data Types: 2329
 # of Data Type Categories: 94
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.1.2
-Date Created: Fri Aug 28 15:45:05 SGT 2026
+Date Created: Fri Aug 28 15:45:10 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /C:/Users/Jacob/Downloads/pdbs/mfds-06.dll
-Executable MD5: 909800078fc303c14df1e3e0589dd906
-Executable SHA256: 6f5a484f1971aae128fa20cf7f024ef11d9768ff9614ac262a054f30e0b31237
-FSRL: file:///C:/Users/Jacob/Downloads/pdbs/mfds-06.dll?MD5=909800078fc303c14df1e3e0589dd906
+Executable Location: /C:/Users/Jacob/Downloads/pdbs/mfds-07.dll
+Executable MD5: d61fc24d5b61631be151240f6c3da2a6
+Executable SHA256: 19641f0aaa775981663d538b508c56e4d5a8ef1122d412a6c15ac7f2802c93d4
+FSRL: file:///C:/Users/Jacob/Downloads/pdbs/mfds-07.dll?MD5=d61fc24d5b61631be151240f6c3da2a6
 PDB Age: 1
 PDB File: MFDS.pdb
-PDB GUID: 4338d7f9-de71-c836-0be6-ba95c9590d04
+PDB GUID: 6af8eaae-ea77-ad0d-670c-8e81f6cf655f
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: Media Foundation Direct Show wrapper DLL
-PE Property[FileVersion]: 10.0.26100.8328 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.26100.8875 (WinBuild.160101.0800)
 PE Property[InternalName]: Media Foundation Direct Show wrapper DLL
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: mfds.dll
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.26100.8328
+PE Property[ProductVersion]: 10.0.26100.8875
 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 mfds-06.dll Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra mfds-06.dll Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra mfds-06.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 mfds-07.dll Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra mfds-07.dll Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra mfds-07.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|41|
|deleted_funcs_len|0|
|modified_funcs_len|90|
|added_symbols_len|44|
|deleted_symbols_len|24|
|diff_time|18.776496171951294|
|deleted_strings_len|1|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 3410, 'ExternalsName': 259, 'BulkBasicBlockMnemonicHash': 195, 'SigCallingCalledHasher': 61, 'ExactInstructionsFunctionHasher': 42, 'ExactBytesFunctionHasher': 12})|
|items_to_process|199|
|diff_types|Counter({'address': 90, 'refcount': 83, 'fullname': 74, 'sig': 74, 'parent': 73, 'calling': 64, 'name': 47, 'called': 37, 'length': 23, 'code': 3})|
|unmatched_funcs_len|41|
|total_funcs_len|7240|
|matched_funcs_len|7199|
|matched_funcs_with_code_changes_len|3|
|matched_funcs_with_non_code_changes_len|87|
|matched_funcs_no_changes_len|7109|
|match_func_similarity_percent|98.7498%|
|func_match_overall_percent|99.4337%|
|first_matches|Counter({'SymbolsHash': 3410, 'BulkBasicBlockMnemonicHash': 195, 'SigCallingCalledHasher': 61, 'ExactInstructionsFunctionHasher': 42, 'ExactBytesFunctionHasher': 12})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 3410
"ExternalsName" : 259
"ExactBytesFunctionHasher" : 12
"ExactInstructionsFunctionHasher" : 42
"SigCallingCalledHasher" : 61
"BulkBasicBlockMnemonicHash" : 195
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 3410
"ExactBytesFunctionHasher" : 12
"ExactInstructionsFunctionHasher" : 42
"SigCallingCalledHasher" : 61
"BulkBasicBlockMnemonicHash" : 195
```



```mermaid
pie showData
    title Diff Stats
"added_funcs_len" : 41
"deleted_funcs_len" : 0
"modified_funcs_len" : 90
```



```mermaid
pie showData
    title Symbols
"added_symbols_len" : 44
"deleted_symbols_len" : 24
```

## Strings



```mermaid
pie showData
    title Strings
"deleted_strings_len" : 1
"added_strings_len" : 0
```

### Strings Diff


```diff
--- deleted strings
+++ added strings
@@ -1 +0,0 @@
-s_ctBase

```


### String References

#### Old



|String|Ref Count|Ref Func|
| :---: | :---: | :---: |
|s_ctBase_1800d5202|1|SendSampleEvent|

#### New



|String|Ref Count|Ref Func|
| :---: | :---: | :---: |

# Deleted

# Added

## wil::details::`dynamic_initializer_for_'g_enabledStateManager''

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|`dynamic_initializer_for_'g_enabledStateManager''|
|fullname|wil::details::`dynamic_initializer_for_'g_enabledStateManager''|
|refcount|3|
|length|32|
|called|atexit<br>wil::details::EnabledStateManager::EnabledStateManager|
|calling||
|paramcount|0|
|address|180001480|
|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,9 @@
+
+void wil::details::_dynamic_initializer_for__g_enabledStateManager__(void)
+
+{
+  EnabledStateManager::EnabledStateManager((EnabledStateManager *)&g_enabledStateManager);
+  atexit(_dynamic_atexit_destructor_for__g_enabledStateManager__);
+  return;
+}
+

```


## wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingSRUMFeatureReporting''

### Function Meta



|Key|mfds-07.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|180001510|
|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;
+}
+

```


## 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

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|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|
|refcount|4|
|length|76|
|called|wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy<br>wil::last_error_context::last_error_context<br>wil::last_error_context::~last_error_context|
|calling|wil::details::EnabledStateManager::ProcessShutdown<br>wil::details::EnabledStateManager::~EnabledStateManager<br>wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>|
|paramcount|2|
|address|18004c33c|
|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)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```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
+++ 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
@@ -0,0 +1,28 @@
+
+/* public: void __cdecl wil::details::unique_storage<struct wil::details::resource_policy<struct
+   _TP_TIMER * __ptr64,void (__cdecl*)(struct _TP_TIMER * __ptr64),&public: static void __cdecl
+   wil::details::DestroyThreadPoolTimer<struct
+   wil::details::SystemThreadPoolMethods,0>::Destroy(struct _TP_TIMER * __ptr64),struct
+   wistd::integral_constant<unsigned __int64,0>,struct _TP_TIMER * __ptr64,struct _TP_TIMER *
+   __ptr64,0,std::nullptr_t> >::reset(struct _TP_TIMER * __ptr64) __ptr64 */
+
+void __thiscall
+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(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)
+
+{
+  _TP_TIMER *p_Var1;
+  last_error_context local_res8 [8];
+  
+  p_Var1 = *(_TP_TIMER **)this;
+  if (p_Var1 != (_TP_TIMER *)0x0) {
+    last_error_context::last_error_context(local_res8);
+    DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy(p_Var1);
+    last_error_context::~last_error_context(local_res8);
+  }
+  *(_TP_TIMER **)this = param_1;
+  return;
+}
+

```


## wil::details::EnabledStateManager::~EnabledStateManager

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|~EnabledStateManager|
|fullname|wil::details::EnabledStateManager::~EnabledStateManager|
|refcount|2|
|length|113|
|called|wil::details::EnabledStateManager::ProcessShutdown<br>wil::details::FreeProcessHeap<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>_>|
|calling|wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''|
|paramcount|1|
|address|18004c72c|
|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,41 @@
+
+/* public: __cdecl wil::details::EnabledStateManager::~EnabledStateManager(void) __ptr64 */
+
+void __thiscall wil::details::EnabledStateManager::~EnabledStateManager(EnabledStateManager *this)
+
+{
+  void *pvVar1;
+  
+  *(undefined4 *)this = 0;
+  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);
+  ProcessShutdown(this);
+  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 + 0x68));
+  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 + 0x60));
+  pvVar1 = *(void **)(this + 0x58);
+  *(undefined8 *)(this + 0x58) = 0;
+  if (pvVar1 != (void *)0x0) {
+    FreeProcessHeap(pvVar1);
+  }
+  pvVar1 = *(void **)(this + 0x38);
+  *(undefined8 *)(this + 0x38) = 0;
+  if (pvVar1 != (void *)0x0) {
+    FreeProcessHeap(pvVar1);
+  }
+  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::ProcessShutdown

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|ProcessShutdown|
|fullname|wil::details::EnabledStateManager::ProcessShutdown|
|refcount|3|
|length|108|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.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>_><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>_>|
|calling|wil::details::EnabledStateManager::~EnabledStateManager<br>wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''|
|paramcount|1|
|address|18004c8fc|
|sig|void __thiscall ProcessShutdown(EnabledStateManager * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::ProcessShutdown
+++ wil::details::EnabledStateManager::ProcessShutdown
@@ -0,0 +1,33 @@
+
+/* public: void __cdecl wil::details::EnabledStateManager::ProcessShutdown(void) __ptr64 */
+
+void __thiscall wil::details::EnabledStateManager::ProcessShutdown(EnabledStateManager *this)
+
+{
+  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>_>_>
+  *in_RDX;
+  undefined8 local_res8;
+  EnabledStateManager *local_res10;
+  
+  *(undefined4 *)this = 0;
+  local_res8 = *(undefined8 *)(this + 0x10);
+  *(undefined8 *)(this + 0x10) = 0;
+  AcquireSRWLockExclusive((PSRWLOCK)(this + 8));
+  local_res10 = this + 8;
+  RecordCachedUsageUnderLock(this,in_RDX);
+  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_res10);
+  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>_>
+           *)&local_res8,(_TP_TIMER *)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>_>
+  ::
+  ~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>_>
+              *)&local_res8);
+  return;
+}
+

```


## wil::details::EnabledStateManager::EnabledStateManager

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|EnabledStateManager|
|fullname|wil::details::EnabledStateManager::EnabledStateManager|
|refcount|1|
|length|70|
|called||
|calling|wil::details::`dynamic_initializer_for_'g_enabledStateManager''|
|paramcount|1|
|address|1800528f8|
|sig|undefined __thiscall EnabledStateManager(EnabledStateManager * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::EnabledStateManager
+++ wil::details::EnabledStateManager::EnabledStateManager
@@ -0,0 +1,26 @@
+
+/* public: __cdecl wil::details::EnabledStateManager::EnabledStateManager(void) __ptr64 */
+
+EnabledStateManager * __thiscall
+wil::details::EnabledStateManager::EnabledStateManager(EnabledStateManager *this)
+
+{
+  *(undefined4 *)this = 0;
+  *(undefined8 *)(this + 8) = 0;
+  *(undefined8 *)(this + 0x10) = 0;
+  this[0x18] = (EnabledStateManager)0x0;
+  *(undefined4 *)(this + 0x1c) = 0;
+  *(undefined8 *)(this + 0x20) = 0;
+  *(undefined8 *)(this + 0x28) = 0;
+  *(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;
+  *(undefined4 *)this = 1;
+  return this;
+}
+

```


## 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>_>

### Function Meta



|Key|mfds-07.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>_>|
|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>_>|
|refcount|3|
|length|22|
|called|wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy|
|calling|wil::details::EnabledStateManager::ProcessShutdown<br>wil::details::EnabledStateManager::~EnabledStateManager|
|paramcount|1|
|address|180053c48|
|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)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```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>_>
+++ 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>_>
@@ -0,0 +1,28 @@
+
+/* public: __cdecl wil::details::unique_storage<struct wil::details::resource_policy<struct
+   _TP_TIMER * __ptr64,void (__cdecl*)(struct _TP_TIMER * __ptr64),&public: static void __cdecl
+   wil::details::DestroyThreadPoolTimer<struct
+   wil::details::SystemThreadPoolMethods,0>::Destroy(struct _TP_TIMER * __ptr64),struct
+   wistd::integral_constant<unsigned __int64,0>,struct _TP_TIMER * __ptr64,struct _TP_TIMER *
+   __ptr64,0,std::nullptr_t> >::~unique_storage<struct wil::details::resource_policy<struct
+   _TP_TIMER * __ptr64,void (__cdecl*)(struct _TP_TIMER * __ptr64),&public: static void __cdecl
+   wil::details::DestroyThreadPoolTimer<struct
+   wil::details::SystemThreadPoolMethods,0>::Destroy(struct _TP_TIMER * __ptr64),struct
+   wistd::integral_constant<unsigned __int64,0>,struct _TP_TIMER * __ptr64,struct _TP_TIMER *
+   __ptr64,0,std::nullptr_t> >(void) __ptr64 */
+
+void __thiscall
+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>_>
+          (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)
+
+{
+  if (*(_TP_TIMER **)this != (_TP_TIMER *)0x0) {
+    DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy(*(_TP_TIMER **)this);
+  }
+  return;
+}
+

```


## 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|mfds-07.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|22|
|called|wil::details::WilApi_UnsubscribeFeatureStateChangeNotification|
|calling|wil::details::EnabledStateManager::~EnabledStateManager|
|paramcount|1|
|address|180053c94|
|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 @@
+
+/* public: __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;
+}
+

```


## <lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|<lambda_invoker_cdecl>|
|fullname|<lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>|
|refcount|2|
|length|12|
|called|wil::details::EnabledStateManager::OnTimer|
|calling||
|paramcount|1|
|address|18009a240|
|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;
+}
+

```


## wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|EnsureCoalescedTimer<wil::details::EnabledStateManager>|
|fullname|wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>|
|refcount|2|
|length|159|
|called|API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::CreateThreadpoolTimer<br>API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::SetThreadpoolTimer<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::last_error_context::last_error_context<br>wil::last_error_context::~last_error_context|
|calling|wil::details::EnabledStateManager::QueueBackgroundUsageReporting|
|paramcount|3|
|address|18009a28c|
|sig|void __cdecl EnsureCoalescedTimer<wil::details::EnabledStateManager>(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, EnabledStateManager * param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>
+++ wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>
@@ -0,0 +1,40 @@
+
+/* void __cdecl wil::details::EnsureCoalescedTimer<class wil::details::EnabledStateManager>(class
+   wil::unique_any_t<class wil::details::unique_storage<struct wil::details::resource_policy<struct
+   _TP_TIMER * __ptr64,void (__cdecl*)(struct _TP_TIMER * __ptr64),&public: static void __cdecl
+   wil::details::DestroyThreadPoolTimer<struct
+   wil::details::SystemThreadPoolMethods,0>::Destroy(struct _TP_TIMER * __ptr64),struct
+   wistd::integral_constant<unsigned __int64,0>,struct _TP_TIMER * __ptr64,struct _TP_TIMER *
+   __ptr64,0,std::nullptr_t> > > & __ptr64,bool & __ptr64,class wil::details::EnabledStateManager *
+   __ptr64) */
+
+void __cdecl
+wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>
+          (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,EnabledStateManager *param_3)
+
+{
+  PTP_TIMER p_Var1;
+  _FILETIME local_res10;
+  
+  if (*param_2 == false) {
+    if (*(longlong *)param_1 == 0) {
+      last_error_context::last_error_context((last_error_context *)&local_res10);
+      p_Var1 = CreateThreadpoolTimer
+                         (<lambda_0374aa0a5d1201b2358c6bce99369c58>::<lambda_invoker_cdecl>,param_3,
+                          (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((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,p_Var1);
+      last_error_context::~last_error_context((last_error_context *)&local_res10);
+    }
+    if (*(PTP_TIMER *)param_1 != (PTP_TIMER)0x0) {
+      local_res10.dwLowDateTime = 0x4d2fa200;
+      local_res10.dwHighDateTime = 0xffffffff;
+      SetThreadpoolTimer(*(PTP_TIMER *)param_1,&local_res10,0,75000);
+      *param_2 = true;
+    }
+  }
+  return;
+}
+

```


## 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>_>

### Function Meta



|Key|mfds-07.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>_>|
|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>_>|
|refcount|8|
|length|29|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive|
|calling|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl<br>wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush<br>wil::details::EnabledStateManager::OnStateChange<br>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::ProcessShutdown<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState|
|paramcount|1|
|address|18009b6ac|
|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)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```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>_>
+++ 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>_>
@@ -0,0 +1,25 @@
+
+/* public: __cdecl wil::details::unique_storage<struct wil::details::resource_policy<struct
+   _RTL_SRWLOCK * __ptr64,void (__cdecl*)(struct _RTL_SRWLOCK * __ptr64),&void __cdecl
+   ReleaseSRWLockExclusive(struct _RTL_SRWLOCK * __ptr64),struct wistd::integral_constant<unsigned
+   __int64,1>,struct _RTL_SRWLOCK * __ptr64,struct _RTL_SRWLOCK * __ptr64,0,std::nullptr_t>
+   >::~unique_storage<struct wil::details::resource_policy<struct _RTL_SRWLOCK * __ptr64,void
+   (__cdecl*)(struct _RTL_SRWLOCK * __ptr64),&void __cdecl ReleaseSRWLockExclusive(struct
+   _RTL_SRWLOCK * __ptr64),struct wistd::integral_constant<unsigned __int64,1>,struct _RTL_SRWLOCK *
+   __ptr64,struct _RTL_SRWLOCK * __ptr64,0,std::nullptr_t> >(void) __ptr64 */
+
+void __thiscall
+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>_>
+          (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)
+
+{
+  if (*(PSRWLOCK *)this != (PSRWLOCK)0x0) {
+    ReleaseSRWLockExclusive(*(PSRWLOCK *)this);
+  }
+  return;
+}
+

```


## wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|Destroy|
|fullname|wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy|
|refcount|3|
|length|64|
|called|API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::SetThreadpoolTimer<br>API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::WaitForThreadpoolTimerCallbacks|
|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<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>_>|
|paramcount|1|
|address|18009d084|
|sig|void __cdecl Destroy(_TP_TIMER * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy
+++ wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy
@@ -0,0 +1,17 @@
+
+/* public: static void __cdecl wil::details::DestroyThreadPoolTimer<struct
+   wil::details::SystemThreadPoolMethods,0>::Destroy(struct _TP_TIMER * __ptr64) */
+
+void __cdecl
+wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy
+          (_TP_TIMER *param_1)
+
+{
+  SetThreadpoolTimer(param_1,(PFILETIME)0x0,0,0);
+  WaitForThreadpoolTimerCallbacks(param_1,1);
+                    /* WARNING: Could not recover jumptable at 0x00018009d0bd. Too many branches */
+                    /* WARNING: Treating indirect jump as call */
+  CloseThreadpoolTimer(param_1);
+  return;
+}
+

```


## wil::details::EnsureSubscribedToFeatureConfigurationChanges

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|EnsureSubscribedToFeatureConfigurationChanges|
|fullname|wil::details::EnsureSubscribedToFeatureConfigurationChanges|
|refcount|2|
|length|32|
|called|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState|
|paramcount|0|
|address|18009d0d0|
|sig|uint __cdecl EnsureSubscribedToFeatureConfigurationChanges(void)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnsureSubscribedToFeatureConfigurationChanges
+++ wil::details::EnsureSubscribedToFeatureConfigurationChanges
@@ -0,0 +1,16 @@
+
+/* unsigned int __cdecl wil::details::EnsureSubscribedToFeatureConfigurationChanges(void) */
+
+uint __cdecl wil::details::EnsureSubscribedToFeatureConfigurationChanges(void)
+
+{
+  uint uVar1;
+  
+  uVar1 = DAT_1800ef1fc;
+  if (DAT_1800ef1fc == 0) {
+    uVar1 = EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl
+                      ((EnabledStateManager *)&g_enabledStateManager);
+  }
+  return uVar1;
+}
+

```


## wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|EnsureSubscribedToFeatureConfigurationChangesImpl|
|fullname|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl|
|refcount|2|
|length|151|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive<br>_guard_dispatch_icall$thunk$10345483385596137414<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::EnsureSubscribedToFeatureConfigurationChanges|
|paramcount|1|
|address|18009d0f8|
|sig|uint __thiscall EnsureSubscribedToFeatureConfigurationChangesImpl(EnabledStateManager * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl
+++ wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl
@@ -0,0 +1,54 @@
+
+/* WARNING: Function: _guard_dispatch_icall$thunk$10345483385596137414 replaced with injection:
+   guard_dispatch_icall */
+/* private: unsigned int __cdecl
+   wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl(void)
+   __ptr64 */
+
+uint __thiscall
+wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl
+          (EnabledStateManager *this)
+
+{
+  EnabledStateManager *SRWLock;
+  EnabledStateManager *pEVar1;
+  uint uVar2;
+  code *pcVar3;
+  EnabledStateManager *local_res8;
+  
+  if (*(int *)this == 0) {
+    uVar2 = 0;
+  }
+  else {
+    SRWLock = this + 8;
+    AcquireSRWLockExclusive((PSRWLOCK)SRWLock);
+    pEVar1 = this + 0x60;
+    local_res8 = SRWLock;
+    if (*(longlong *)pEVar1 == 0) {
+      *(longlong *)pEVar1 = 0;
+      pcVar3 = g_wil_details_internalSubscribeFeatureStateChangeNotification;
+      if ((g_wil_details_internalSubscribeFeatureStateChangeNotification != (code *)0x0) ||
+         (pcVar3 = g_wil_details_apiSubscribeFeatureStateChangeNotification,
+         g_wil_details_apiSubscribeFeatureStateChangeNotification != (code *)0x0)) {
+        (*pcVar3)(pEVar1,<lambda_fee8cea507d2413a58be13acfb66740a>::<lambda_invoker_cdecl>,this);
+      }
+      if (*(longlong *)pEVar1 == 0) {
+        uVar2 = 0;
+      }
+      else {
+        uVar2 = 1;
+        *(undefined4 *)(this + 0x1c) = 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::EnabledStateManager::EnsureSubscribedToUsageFlush

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|EnsureSubscribedToUsageFlush|
|fullname|wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush|
|refcount|2|
|length|127|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive<br>_guard_dispatch_icall$thunk$10345483385596137414<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|2|
|address|18009d198|
|sig|void __thiscall EnsureSubscribedToUsageFlush(EnabledStateManager * this, _func_void_void_ptr * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush
+++ wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush
@@ -0,0 +1,39 @@
+
+/* WARNING: Function: _guard_dispatch_icall$thunk$10345483385596137414 replaced with injection:
+   guard_dispatch_icall */
+/* public: void __cdecl wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush(void
+   (__cdecl*)(void * __ptr64)) __ptr64 */
+
+void __thiscall
+wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush
+          (EnabledStateManager *this,_func_void_void_ptr *param_1)
+
+{
+  EnabledStateManager *SRWLock;
+  EnabledStateManager *pEVar1;
+  code *pcVar2;
+  EnabledStateManager *local_res8;
+  
+  if (*(int *)this != 0) {
+    SRWLock = this + 8;
+    AcquireSRWLockExclusive((PSRWLOCK)SRWLock);
+    pEVar1 = this + 0x68;
+    local_res8 = SRWLock;
+    if (*(longlong *)pEVar1 == 0) {
+      *(longlong *)pEVar1 = 0;
+      pcVar2 = g_wil_details_internalSubscribeFeatureStateChangeNotification;
+      if ((g_wil_details_internalSubscribeFeatureStateChangeNotification != (code *)0x0) ||
+         (pcVar2 = g_wil_details_apiSubscribeFeatureStateChangeNotification,
+         g_wil_details_apiSubscribeFeatureStateChangeNotification != (code *)0x0)) {
+        (*pcVar2)(pEVar1,param_1,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>_>
+                *)&local_res8);
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|GetCachedFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState|
|refcount|3|
|length|296|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive<br>wil::details::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCurrentFeatureEnabledState<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_1136894267>::ReportUsage<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled|
|paramcount|1|
|address|18009dc94|
|sig|wil_details_FeatureStateCache __thiscall GetCachedFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_1136894267> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState
@@ -0,0 +1,83 @@
+
+/* WARNING: Removing unreachable block (ram,0x00018009dcef) */
+/* WARNING: Removing unreachable block (ram,0x00018009dcf4) */
+/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState(void) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_1136894267> *this)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  uint uVar4;
+  uint *in_RDX;
+  __uint64 _Var5;
+  bool bVar6;
+  uint local_res18 [2];
+  undefined *local_res20;
+  undefined4 local_38;
+  undefined4 local_34;
+  undefined4 *local_30;
+  
+  in_RDX[0] = 0;
+  uVar3 = Feature_1136894267__private_cppFeatureState;
+  in_RDX[1] = 0;
+  *in_RDX = Feature_1136894267__private_cppFeatureState;
+  if (((byte)uVar3 & 6) == 6) {
+    return;
+  }
+  uVar2 = EnsureSubscribedToFeatureConfigurationChanges();
+  GetCurrentFeatureEnabledState(this,(int *)local_res18);
+  uVar3 = *in_RDX;
+  do {
+    uVar1 = uVar3;
+    _Var5 = (__uint64)uVar1;
+    uVar4 = uVar1 | 0x40000;
+    *in_RDX = uVar4;
+    if ((uVar1 & 4) == 0) {
+      uVar4 = uVar1 & 0xfffffbff | 0x40000 | local_res18[0] & 0x400 | 4;
+      *in_RDX = uVar4;
+    }
+    LOCK();
+    bVar6 = uVar1 != Feature_1136894267__private_cppFeatureState;
+    uVar3 = uVar1;
+    if (bVar6) {
+      uVar3 = Feature_1136894267__private_cppFeatureState;
+      uVar4 = Feature_1136894267__private_cppFeatureState;
+    }
+    Feature_1136894267__private_cppFeatureState = uVar4;
+    UNLOCK();
+  } while (bVar6);
+  if (((uVar1 & 4) != 0) || (_g_enabledStateManager == 0)) goto LAB_18009dd95;
+  AcquireSRWLockExclusive((PSRWLOCK)&DAT_1800ef1e8);
+  local_res20 = &DAT_1800ef1e8;
+  if ((uVar2 == 0) || (uVar2 != DAT_1800ef1fc)) {
+LAB_18009dd88:
+    LOCK();
+    Feature_1136894267__private_cppFeatureState =
+         Feature_1136894267__private_cppFeatureState & 0xfffffffb;
+    UNLOCK();
+  }
+  else {
+    local_34 = 0;
+    local_38 = 3;
+    local_30 = &Feature_1136894267__private_cppFeatureState;
+    bVar6 = details_abi::heap_buffer::push_back((heap_buffer *)&DAT_1800ef220,&local_38,_Var5);
+    if (!bVar6) goto LAB_18009dd88;
+  }
+  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);
+LAB_18009dd95:
+  if ((*in_RDX & 2) == 0) {
+    *in_RDX = *in_RDX & 0xfffff63e | local_res18[0] & 0x9c1;
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCurrentFeatureEnabledState

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|GetCurrentFeatureEnabledState|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCurrentFeatureEnabledState|
|refcount|2|
|length|195|
|called|_guard_dispatch_icall$thunk$10345483385596137414|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState|
|paramcount|2|
|address|18009df58|
|sig|wil_details_FeatureStateCache __thiscall GetCurrentFeatureEnabledState(FeatureImpl<__WilFeatureTraits_Feature_1136894267> * this, int * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCurrentFeatureEnabledState
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCurrentFeatureEnabledState
@@ -0,0 +1,51 @@
+
+/* WARNING: Function: _guard_dispatch_icall$thunk$10345483385596137414 replaced with injection:
+   guard_dispatch_icall */
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_1136894267>::GetCurrentFeatureEnabledState(int * __ptr64) __ptr64 */
+
+int * __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCurrentFeatureEnabledState
+          (FeatureImpl<__WilFeatureTraits_Feature_1136894267> *this,int *param_1)
+
+{
+  uint uVar1;
+  bool bVar2;
+  uint uVar3;
+  code *pcVar4;
+  uint uVar5;
+  
+  pcVar4 = g_wil_details_internalGetFeatureEnabledState;
+  if ((g_wil_details_internalGetFeatureEnabledState == (code *)0x0) &&
+     (pcVar4 = g_wil_details_apiGetFeatureEnabledState,
+     g_wil_details_apiGetFeatureEnabledState == (code *)0x0)) {
+    uVar3 = 0;
+  }
+  else {
+    uVar3 = (*pcVar4)(0x3b4ae8e,3);
+  }
+  param_1[0] = 0;
+  param_1[1] = 0;
+  uVar1 = (((uVar3 & 3) << 2 | uVar3 & 0x40) << 2 | uVar3 & 0x80) * 8;
+  *param_1 = uVar1;
+  if ((uVar3 & 0xffffff3f) == 0) {
+    uVar5 = 0x40;
+  }
+  else {
+    uVar5 = 0;
+    if ((uVar3 & 0xffffff3f) == 2) {
+      uVar5 = 0x40;
+    }
+  }
+  bVar2 = false;
+  uVar3 = 1;
+  if (((uVar1 & 0xc00) == 0xc00) || (uVar5 != 0)) {
+    bVar2 = true;
+  }
+  if ((uVar5 == 0) || (!bVar2)) {
+    uVar3 = 0;
+  }
+  *param_1 = uVar5 | uVar1 | uVar3;
+  return param_1;
+}
+

```


## wil::details::GetFeatureEnabledStateHelper

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|GetFeatureEnabledStateHelper|
|fullname|wil::details::GetFeatureEnabledStateHelper|
|refcount|3|
|length|60|
|called|wil_HasFeatureTestState|
|calling||
|paramcount|3|
|address|18009e340|
|sig|FEATURE_ENABLED_STATE __cdecl GetFeatureEnabledStateHelper(uint param_1, FEATURE_CHANGE_TIME param_2, int * param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::GetFeatureEnabledStateHelper
+++ wil::details::GetFeatureEnabledStateHelper
@@ -0,0 +1,26 @@
+
+/* enum FEATURE_ENABLED_STATE __cdecl wil::details::GetFeatureEnabledStateHelper(unsigned int,enum
+   FEATURE_CHANGE_TIME,int * __ptr64) */
+
+FEATURE_ENABLED_STATE __cdecl
+wil::details::GetFeatureEnabledStateHelper(uint param_1,FEATURE_CHANGE_TIME param_2,int *param_3)
+
+{
+  FEATURE_ENABLED_STATE FVar1;
+  undefined8 uVar2;
+  undefined4 in_register_0000000c;
+  FEATURE_ENABLED_STATE local_res20 [2];
+  
+  local_res20[0] = 0;
+  uVar2 = wil_HasFeatureTestState(CONCAT44(in_register_0000000c,param_1),local_res20);
+  if ((int)uVar2 != 0) {
+    *param_3 = 0;
+    return local_res20[0];
+  }
+  *param_3 = 1;
+                    /* WARNING: Could not recover jumptable at 0x00018009e376. Too many branches */
+                    /* WARNING: Treating indirect jump as call */
+  FVar1 = GetFeatureEnabledState();
+  return FVar1;
+}
+

```


## wil::details::EnabledStateManager::OnStateChange

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|OnStateChange|
|fullname|wil::details::EnabledStateManager::OnStateChange|
|refcount|2|
|length|133|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.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|1800a1d9c|
|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 (*(int *)this != 0) {
+    AcquireSRWLockExclusive((PSRWLOCK)(this + 8));
+    piVar1 = *(int **)(this + 0x48);
+    for (piVar3 = *(int **)(this + 0x40); piVar3 != piVar1; piVar3 = piVar3 + 4) {
+      LOCK();
+      **(uint **)(piVar3 + 2) = **(uint **)(piVar3 + 2) & (-(uint)(*piVar3 != 0) & 0x83a) - 0x83f;
+      UNLOCK();
+    }
+    *(undefined8 *)(this + 0x48) = *(undefined8 *)(this + 0x40);
+    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|mfds-07.dll|
| :---: | :---: |
|name|OnTimer|
|fullname|wil::details::EnabledStateManager::OnTimer|
|refcount|3|
|length|82|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.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|1800a1e28|
|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,28 @@
+
+/* public: void __cdecl wil::details::EnabledStateManager::OnTimer(void) __ptr64 */
+
+void __thiscall wil::details::EnabledStateManager::OnTimer(EnabledStateManager *this)
+
+{
+  EnabledStateManager *SRWLock;
+  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>_>_>
+  *in_RDX;
+  EnabledStateManager *local_res8;
+  
+  if (*(int *)this != 0) {
+    SRWLock = this + 8;
+    AcquireSRWLockExclusive((PSRWLOCK)SRWLock);
+    local_res8 = SRWLock;
+    if (*(int *)this != 0) {
+      RecordCachedUsageUnderLock(this,in_RDX);
+      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|mfds-07.dll|
| :---: | :---: |
|name|QueueBackgroundUsageReporting|
|fullname|wil::details::EnabledStateManager::QueueBackgroundUsageReporting|
|refcount|2|
|length|145|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive<br>wil::ProcessShutdownInProgress<br>wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager><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::ReportUsageToServiceDirect|
|paramcount|3|
|address|1800a2814|
|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,45 @@
+
+/* 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)
+
+{
+  EnabledStateManager *SRWLock;
+  bool bVar1;
+  wil_details_FeatureReportingCache *pwVar2;
+  EnabledStateManager *local_res8;
+  undefined8 local_18;
+  wil_details_FeatureReportingCache *local_10;
+  
+  if (*(int *)this != 0) {
+    pwVar2 = param_2;
+    bVar1 = ProcessShutdownInProgress();
+    if (!bVar1) {
+      SRWLock = this + 8;
+      AcquireSRWLockExclusive((PSRWLOCK)SRWLock);
+      local_res8 = SRWLock;
+      if (*(int *)this != 0) {
+        bVar1 = ProcessShutdownInProgress();
+        if (!bVar1) {
+          local_18 = 0x3b4ae8e;
+          local_10 = param_2;
+          details_abi::heap_buffer::push_back
+                    ((heap_buffer *)(this + 0x20),&local_18,(__uint64)pwVar2);
+          EnsureCoalescedTimer<wil::details::EnabledStateManager>
+                    ((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 + 0x10),(bool *)(this + 0x18),this);
+        }
+      }
+      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|mfds-07.dll|
| :---: | :---: |
|name|RecordCachedUsageUnderLock|
|fullname|wil::details::EnabledStateManager::RecordCachedUsageUnderLock|
|refcount|3|
|length|99|
|called|wil::details::WilApi_RecordFeatureUsage<br>wil_details_RecordCachedUsage|
|calling|wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::ProcessShutdown|
|paramcount|2|
|address|1800a28ac|
|sig|void __thiscall RecordCachedUsageUnderLock(EnabledStateManager * this, 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>_>_> * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::EnabledStateManager::RecordCachedUsageUnderLock
+++ wil::details::EnabledStateManager::RecordCachedUsageUnderLock
@@ -0,0 +1,31 @@
+
+/* private: void __cdecl wil::details::EnabledStateManager::RecordCachedUsageUnderLock(class
+   wil::unique_any_t<class wil::details::unique_storage<struct wil::details::resource_policy<struct
+   _RTL_SRWLOCK * __ptr64,void (__cdecl*)(struct _RTL_SRWLOCK * __ptr64),&void __cdecl
+   ReleaseSRWLockExclusive(struct _RTL_SRWLOCK * __ptr64),struct wistd::integral_constant<unsigned
+   __int64,1>,struct _RTL_SRWLOCK * __ptr64,struct _RTL_SRWLOCK * __ptr64,0,std::nullptr_t> > >
+   const & __ptr64) __ptr64 */
+
+void __thiscall
+wil::details::EnabledStateManager::RecordCachedUsageUnderLock
+          (EnabledStateManager *this,
+          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>_>_>
+          *param_1)
+
+{
+  undefined4 *puVar1;
+  undefined4 *puVar2;
+  char *in_R9;
+  
+  puVar1 = *(undefined4 **)(this + 0x28);
+  puVar2 = *(undefined4 **)(this + 0x20);
+  if (0xf < (ulonglong)((longlong)puVar1 - (longlong)puVar2)) {
+    for (; puVar2 != puVar1; puVar2 = puVar2 + 4) {
+      wil_details_RecordCachedUsage(*puVar2,*(uint **)(puVar2 + 2));
+    }
+    *(undefined8 *)(this + 0x28) = *(undefined8 *)(this + 0x20);
+    WilApi_RecordFeatureUsage(0,0xfe,0,in_R9);
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::ReportUsage

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|ReportUsage|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::ReportUsage|
|refcount|2|
|length|219|
|called|_guard_dispatch_icall$thunk$10345483385596137414<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState<br>wil::details::ReportUsageToServiceDirect<br>wil_details_MapReportingKind|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled|
|paramcount|4|
|address|1800a2b70|
|sig|void __thiscall ReportUsage(FeatureImpl<__WilFeatureTraits_Feature_1136894267> * this, bool param_1, ReportingKind param_2, __uint64 param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::ReportUsage
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::ReportUsage
@@ -0,0 +1,49 @@
+
+/* WARNING: Function: _guard_dispatch_icall$thunk$10345483385596137414 replaced with injection:
+   guard_dispatch_icall */
+/* public: void __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_1136894267>::ReportUsage(bool,enum wil::ReportingKind,unsigned
+   __int64) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::ReportUsage
+          (FeatureImpl<__WilFeatureTraits_Feature_1136894267> *this,bool param_1,
+          ReportingKind param_2,__uint64 param_3)
+
+{
+  wil_details_ServiceReportingKind wVar1;
+  int iVar2;
+  ulonglong *puVar3;
+  uint uVar4;
+  ulonglong uVar5;
+  undefined4 local_res8;
+  undefined2 local_resc;
+  undefined4 local_res18 [2];
+  __uint64 local_res20;
+  uint in_stack_ffffffffffffffb0;
+  undefined1 in_stack_ffffffffffffffb8;
+  undefined7 in_stack_ffffffffffffffb9;
+  
+  local_res18[0] = CONCAT31(local_res18[0]._1_3_,(char)param_2);
+  uVar5 = (ulonglong)Feature_1136894267__private_cppFeatureState;
+  local_res20 = param_3;
+  if ((Feature_1136894267__private_cppFeatureState & 4) == 0) {
+    puVar3 = (ulonglong *)GetCachedFeatureEnabledState(this);
+    local_res20 = *puVar3;
+    uVar5 = local_res20 & 0xffffffff;
+  }
+  local_resc = 2;
+  local_res8 = 0;
+  local_res18[0] = 3;
+  uVar4 = (uint)param_1;
+  wVar1 = wil_details_MapReportingKind(3,uVar4);
+  iVar2 = ReportUsageToServiceDirect
+                    ((wil_details_FeatureReportingCache *)(this + 8),uVar4,(uint)uVar5 >> 10 & 1,
+                     (uint)(uVar5 >> 0xb) & 1,wVar1,in_stack_ffffffffffffffb0,
+                     CONCAT71(in_stack_ffffffffffffffb9,in_stack_ffffffffffffffb8),'\x02');
+  if ((iVar2 != 0) && (g_wil_details_pfnFeatureLoggingHook != (code *)0x0)) {
+    (*g_wil_details_pfnFeatureLoggingHook)(0x3b4ae8e,&local_res8,0,param_1,local_res18,0,0,1);
+  }
+  return;
+}
+

```


## wil::details::ReportUsageToServiceDirect

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|ReportUsageToServiceDirect|
|fullname|wil::details::ReportUsageToServiceDirect|
|refcount|2|
|length|315|
|called|_guard_dispatch_icall$thunk$10345483385596137414<br>wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::WilApi_RecordFeatureUsage<br>wil_details_FeatureReporting_RecordUsageInCache|
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::ReportUsage|
|paramcount|8|
|address|1800a2c54|
|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,72 @@
+
+/* WARNING: Function: _guard_dispatch_icall$thunk$10345483385596137414 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 uVar1;
+  uint uVar2;
+  uint uVar3;
+  uint uVar4;
+  uint *puVar5;
+  wil_details_ServiceReportingKind wVar6;
+  int iVar8;
+  int iVar9;
+  undefined4 in_register_0000008c;
+  int local_28;
+  uint local_20 [6];
+  wil_details_FeatureReportingCache *pwVar7;
+  
+  pwVar7 = param_1;
+  iVar9 = param_4;
+  puVar5 = wil_details_FeatureReporting_RecordUsageInCache
+                     (local_20,(uint *)param_1,(ulonglong)param_5);
+  wVar6 = (wil_details_ServiceReportingKind)pwVar7;
+  iVar8 = 1;
+  uVar2 = *puVar5;
+  uVar3 = puVar5[1];
+  uVar4 = puVar5[2];
+  uVar1 = *(undefined8 *)(puVar5 + 4);
+  if ((g_wil_details_RecordSRUMFeatureUsage != (code *)0x0) &&
+     ((param_5 == 0 || (param_5 - 100 < 0x32)))) {
+    wVar6 = param_5;
+    (*g_wil_details_RecordSRUMFeatureUsage)(0x3b4ae8e,param_5,1);
+  }
+  if (uVar2 != 0) {
+    EnabledStateManager::QueueBackgroundUsageReporting
+              ((EnabledStateManager *)&g_enabledStateManager,wVar6,param_1);
+  }
+  if (uVar3 != 0) {
+    WilApi_RecordFeatureUsage(0x3b4ae8e,uVar4,uVar3,(char *)CONCAT44(in_register_0000008c,iVar9));
+  }
+  local_28 = (int)uVar1;
+  if (local_28 == 0) {
+    EnabledStateManager::EnsureSubscribedToUsageFlush
+              ((EnabledStateManager *)&g_enabledStateManager,
+               <lambda_aa194dc0bf891154933407eb98fb868a>::<lambda_invoker_cdecl>);
+  }
+  if (param_3 != 0) {
+    wVar6 = param_5 | 0x80000000;
+    if (param_4 == 0) {
+      wVar6 = param_5;
+    }
+    WilApi_RecordFeatureUsage(0x3b4ae8e,wVar6,0,(char *)CONCAT44(in_register_0000008c,iVar9));
+  }
+  if (local_28 == 0) {
+    if (g_wil_details_realtimeFeatureUsageHook != (code *)0x0) {
+      (*g_wil_details_realtimeFeatureUsageHook)(0x3b4ae8e,param_5,param_8);
+    }
+  }
+  else {
+    iVar8 = 0;
+  }
+  return iVar8;
+}
+

```


## wil::details::WilApi_RecordFeatureUsage

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|WilApi_RecordFeatureUsage|
|fullname|wil::details::WilApi_RecordFeatureUsage|
|refcount|6|
|length|41|
|called|_guard_dispatch_icall$thunk$10345483385596137414|
|calling|wil::details::EnabledStateManager::RecordCachedUsageUnderLock<br>wil::details::RecordSRUMFeatureUsage<br>wil::details::ReportUsageToServiceDirect<br>wil::details::WilApi_RecordFeatureUsageReports|
|paramcount|4|
|address|1800a3490|
|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_dispatch_icall$thunk$10345483385596137414 replaced with injection:
+   guard_dispatch_icall */
+/* 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)
+
+{
+  code *pcVar1;
+  
+  pcVar1 = g_wil_details_internalRecordFeatureUsage;
+  if ((g_wil_details_internalRecordFeatureUsage != (code *)0x0) ||
+     (pcVar1 = g_wil_details_apiRecordFeatureUsage,
+     g_wil_details_apiRecordFeatureUsage != (code *)0x0)) {
+    (*pcVar1)();
+  }
+  return;
+}
+

```


## wil::details::WilApi_RecordFeatureUsageReports

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|WilApi_RecordFeatureUsageReports|
|fullname|wil::details::WilApi_RecordFeatureUsageReports|
|refcount|2|
|length|59|
|called|wil::details::WilApi_RecordFeatureUsage|
|calling|wil_details_RecordCachedUsage|
|paramcount|2|
|address|1800a34c0|
|sig|void __cdecl WilApi_RecordFeatureUsageReports(__WIL_RTL_FEATURE_USAGE_DATA * param_1, __uint64 param_2)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::WilApi_RecordFeatureUsageReports
+++ wil::details::WilApi_RecordFeatureUsageReports
@@ -0,0 +1,25 @@
+
+/* void __cdecl wil::details::WilApi_RecordFeatureUsageReports(struct __WIL_RTL_FEATURE_USAGE_DATA *
+   __ptr64,unsigned __int64) */
+
+void __cdecl
+wil::details::WilApi_RecordFeatureUsageReports
+          (__WIL_RTL_FEATURE_USAGE_DATA *param_1,__uint64 param_2)
+
+{
+  __WIL_RTL_FEATURE_USAGE_DATA *p_Var1;
+  char *in_R9;
+  
+  if (param_2 != 0) {
+    p_Var1 = param_1 + 4;
+    do {
+      WilApi_RecordFeatureUsage
+                (*(uint *)(p_Var1 + -4),(uint)*(ushort *)p_Var1,(uint)*(ushort *)(p_Var1 + 2),in_R9)
+      ;
+      p_Var1 = p_Var1 + 8;
+      param_2 = param_2 - 1;
+    } while (param_2 != 0);
+  }
+  return;
+}
+

```


## wil::details::WilApi_UnsubscribeFeatureStateChangeNotification

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|WilApi_UnsubscribeFeatureStateChangeNotification|
|fullname|wil::details::WilApi_UnsubscribeFeatureStateChangeNotification|
|refcount|2|
|length|38|
|called|_guard_dispatch_icall$thunk$10345483385596137414|
|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|1800a3504|
|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,22 @@
+
+/* WARNING: Function: _guard_dispatch_icall$thunk$10345483385596137414 replaced with injection:
+   guard_dispatch_icall */
+/* void __cdecl wil::details::WilApi_UnsubscribeFeatureStateChangeNotification(struct
+   FEATURE_STATE_CHANGE_SUBSCRIPTION__ * __ptr64) */
+
+void __cdecl
+wil::details::WilApi_UnsubscribeFeatureStateChangeNotification
+          (FEATURE_STATE_CHANGE_SUBSCRIPTION__ *param_1)
+
+{
+  code *pcVar1;
+  
+  pcVar1 = g_wil_details_internalUnsubscribeFeatureStateChangeNotification;
+  if ((g_wil_details_internalUnsubscribeFeatureStateChangeNotification != (code *)0x0) ||
+     (pcVar1 = g_wil_details_apiUnsubscribeFeatureStateChangeNotification,
+     g_wil_details_apiUnsubscribeFeatureStateChangeNotification != (code *)0x0)) {
+    (*pcVar1)();
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|__private_IsEnabled|
|fullname|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled|
|refcount|5|
|length|78|
|called|API-MS-WIN-CORE-SYSINFO-L1-1-0.DLL::GetTickCount<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::ReportUsage|
|calling|CHEVCParser::CHEVCParser<br>CHEVCParser::parseShortTermRefPicSet<br>ReferencePictureSet::setDeltaPOC|
|paramcount|1|
|address|1800a36b4|
|sig|bool __thiscall __private_IsEnabled(FeatureImpl<__WilFeatureTraits_Feature_1136894267> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled
+++ wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled
@@ -0,0 +1,19 @@
+
+/* public: bool __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_1136894267>::__private_IsEnabled(void) __ptr64 */
+
+bool __thiscall
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled
+          (FeatureImpl<__WilFeatureTraits_Feature_1136894267> *this)
+
+{
+  ReportingKind in_R8D;
+  __uint64 in_R9;
+  undefined1 local_res10;
+  
+  GetCachedFeatureEnabledState(this);
+  ReportUsage(this,(bool)(local_res10 & 1),in_R8D,in_R9);
+  Feature_1136894267__private_lastUsedTickCount = GetTickCount();
+  return (bool)(local_res10 & 1);
+}
+

```


## wil::details_abi::heap_buffer::push_back

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|push_back|
|fullname|wil::details_abi::heap_buffer::push_back|
|refcount|3|
|length|150|
|called|memcpy_s<br>wil::details_abi::heap_buffer::reserve|
|calling|wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState|
|paramcount|3|
|address|1800a406c|
|sig|bool __thiscall push_back(heap_buffer * this, void * param_1, __uint64 param_2)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details_abi::heap_buffer::push_back
+++ wil::details_abi::heap_buffer::push_back
@@ -0,0 +1,32 @@
+
+/* public: bool __cdecl wil::details_abi::heap_buffer::push_back(void const * __ptr64,unsigned
+   __int64) __ptr64 */
+
+bool __thiscall
+wil::details_abi::heap_buffer::push_back(heap_buffer *this,void *param_1,__uint64 param_2)
+
+{
+  void *_Dst;
+  ulonglong uVar1;
+  bool bVar2;
+  __uint64 _Var3;
+  
+  if ((ulonglong)(*(longlong *)(this + 0x10) - *(longlong *)this) <=
+      (*(longlong *)(this + 8) - *(longlong *)this) + 0x10U) {
+    uVar1 = (*(longlong *)(this + 0x10) - *(longlong *)this) * 2;
+    _Var3 = 0x10;
+    if (0x10 < uVar1) {
+      _Var3 = uVar1;
+    }
+    bVar2 = reserve(this,_Var3);
+    if (!bVar2) {
+      return bVar2;
+    }
+  }
+  _Dst = *(void **)(this + 8);
+  memcpy_s(_Dst,-(ulonglong)(_Dst < *(void **)(this + 0x10)) &
+                *(longlong *)(this + 0x10) - (longlong)_Dst,param_1,0x10);
+  *(longlong *)(this + 8) = *(longlong *)(this + 8) + 0x10;
+  return true;
+}
+

```


## wil::details_abi::heap_buffer::reserve

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|reserve|
|fullname|wil::details_abi::heap_buffer::reserve|
|refcount|2|
|length|183|
|called|memcpy_s<br>wil::details::FreeProcessHeap<br>wil::details::ProcessHeapAlloc<br>wil::last_error_context::last_error_context<br>wil::last_error_context::~last_error_context|
|calling|wil::details_abi::heap_buffer::push_back|
|paramcount|2|
|address|1800a411c|
|sig|bool __thiscall reserve(heap_buffer * this, __uint64 param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details_abi::heap_buffer::reserve
+++ wil::details_abi::heap_buffer::reserve
@@ -0,0 +1,37 @@
+
+/* public: bool __cdecl wil::details_abi::heap_buffer::reserve(unsigned __int64) __ptr64 */
+
+bool __thiscall wil::details_abi::heap_buffer::reserve(heap_buffer *this,__uint64 param_1)
+
+{
+  longlong lVar1;
+  longlong lVar2;
+  void *pvVar3;
+  void *_Dst;
+  __uint64 _DstSize;
+  last_error_context local_res8 [8];
+  
+  if ((ulonglong)(*(longlong *)(this + 0x10) - *(longlong *)this) < param_1) {
+    last_error_context::last_error_context(local_res8);
+    _DstSize = (param_1 & 0xffffffffffffffc0) + 0x40;
+    _Dst = details::ProcessHeapAlloc(0,_DstSize);
+    if (_Dst == (void *)0x0) {
+      last_error_context::~last_error_context(local_res8);
+      return false;
+    }
+    lVar1 = *(longlong *)(this + 8);
+    lVar2 = *(longlong *)this;
+    memcpy_s(_Dst,_DstSize,*(void **)this,lVar1 - lVar2);
+    pvVar3 = *(void **)(this + 0x18);
+    *(void **)(this + 0x18) = _Dst;
+    if (pvVar3 != (void *)0x0) {
+      details::FreeProcessHeap(pvVar3);
+    }
+    *(void **)this = _Dst;
+    *(longlong *)(this + 8) = (lVar1 - lVar2) + (longlong)_Dst;
+    *(__uint64 *)(this + 0x10) = (longlong)_Dst + _DstSize;
+    last_error_context::~last_error_context(local_res8);
+  }
+  return true;
+}
+

```


## ReferencePictureSet::setDeltaPOC

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|setDeltaPOC|
|fullname|ReferencePictureSet::setDeltaPOC|
|refcount|4|
|length|65|
|called|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled|
|calling|CHEVCParser::parseShortTermRefPicSet|
|paramcount|3|
|address|1800a4230|
|sig|void __thiscall setDeltaPOC(ReferencePictureSet * this, int param_1, int param_2)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- ReferencePictureSet::setDeltaPOC
+++ ReferencePictureSet::setDeltaPOC
@@ -0,0 +1,18 @@
+
+/* public: void __cdecl ReferencePictureSet::setDeltaPOC(int,int) __ptr64 */
+
+void __thiscall ReferencePictureSet::setDeltaPOC(ReferencePictureSet *this,int param_1,int param_2)
+
+{
+  bool bVar1;
+  
+  bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled
+                    ((FeatureImpl<__WilFeatureTraits_Feature_1136894267> *)
+                     &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_1136894267>::GetImpl(void)'
+                      ::__l2::impl);
+  if ((!bVar1) || ((uint)param_1 < 0x10)) {
+    *(int *)(this + (longlong)param_1 * 4 + 0x20) = param_2;
+  }
+  return;
+}
+

```


## wil_HasFeatureTestState

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|wil_HasFeatureTestState|
|fullname|wil_HasFeatureTestState|
|refcount|1|
|length|11|
|called||
|calling|wil::details::GetFeatureEnabledStateHelper|
|paramcount|2|
|address|1800a485c|
|sig|undefined8 __fastcall wil_HasFeatureTestState(undefined8 param_1, undefined4 * param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil_HasFeatureTestState
+++ wil_HasFeatureTestState
@@ -0,0 +1,10 @@
+
+undefined8 wil_HasFeatureTestState(undefined8 param_1,undefined4 *param_2)
+
+{
+  if (param_2 != (undefined4 *)0x0) {
+    *param_2 = 0;
+  }
+  return 0;
+}
+

```


## wil_details_FeatureReporting_IncrementOpportunityInCache

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|wil_details_FeatureReporting_IncrementOpportunityInCache|
|fullname|wil_details_FeatureReporting_IncrementOpportunityInCache|
|refcount|2|
|length|218|
|called||
|calling|wil_details_FeatureReporting_RecordUsageInCache|
|paramcount|4|
|address|1800a4870|
|sig|undefined __fastcall wil_details_FeatureReporting_IncrementOpportunityInCache(uint * param_1, uint param_2, undefined8 param_3, uint * param_4)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil_details_FeatureReporting_IncrementOpportunityInCache
+++ wil_details_FeatureReporting_IncrementOpportunityInCache
@@ -0,0 +1,54 @@
+
+void wil_details_FeatureReporting_IncrementOpportunityInCache
+               (uint *param_1,uint param_2,undefined8 param_3,uint *param_4)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  uint uVar4;
+  bool bVar5;
+  
+  uVar3 = *param_1;
+  do {
+    uVar1 = uVar3;
+    param_4[1] = 0;
+    uVar2 = uVar1 | 1;
+    if ((uVar1 & 0x400000) >> 0x16 != (uint)(param_2 == 5)) {
+      uVar3 = (uVar1 & 0x3f8000) >> 0xf;
+      if (uVar3 != 0) {
+        param_4[1] = uVar3;
+        uVar3 = 5;
+        if (param_2 != 1) {
+          uVar3 = 1;
+        }
+        uVar2 = uVar1 & 0xffc07fff | 1;
+        param_4[2] = uVar3;
+      }
+      uVar3 = 0;
+      if (param_2 == 5) {
+        uVar3 = 0x400000;
+      }
+      uVar2 = uVar3 | uVar2 & 0xffbfffff;
+    }
+    uVar3 = uVar2 >> 0xf & 0x7f;
+    uVar4 = uVar3 + 1;
+    if ((0x7f < uVar4) || (uVar4 < uVar3)) {
+      uVar4 = 1;
+      param_4[2] = param_2;
+      param_4[1] = uVar3;
+    }
+    LOCK();
+    uVar3 = *param_1;
+    bVar5 = uVar1 == uVar3;
+    if (bVar5) {
+      *param_1 = uVar2 ^ (uVar4 << 0xf ^ uVar2) & 0x3f8000;
+      uVar3 = uVar1;
+    }
+    UNLOCK();
+  } while (!bVar5);
+  param_4[4] = 0;
+  *param_4 = ~uVar1 & 1;
+  return;
+}
+

```


## wil_details_FeatureReporting_IncrementUsageInCache

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|wil_details_FeatureReporting_IncrementUsageInCache|
|fullname|wil_details_FeatureReporting_IncrementUsageInCache|
|refcount|2|
|length|230|
|called||
|calling|wil_details_FeatureReporting_RecordUsageInCache|
|paramcount|4|
|address|1800a4954|
|sig|undefined __fastcall wil_details_FeatureReporting_IncrementUsageInCache(uint * param_1, uint param_2, undefined8 param_3, uint * param_4)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil_details_FeatureReporting_IncrementUsageInCache
+++ wil_details_FeatureReporting_IncrementUsageInCache
@@ -0,0 +1,50 @@
+
+void wil_details_FeatureReporting_IncrementUsageInCache
+               (uint *param_1,uint param_2,undefined8 param_3,uint *param_4)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  uint uVar4;
+  bool bVar5;
+  
+  uVar4 = *param_1;
+  do {
+    uVar1 = uVar4;
+    param_4[1] = 0;
+    uVar2 = uVar1 | 1;
+    if ((uVar1 & 0x4000) >> 0xe != (uint)(param_2 == 4)) {
+      uVar4 = (uVar1 & 0x3fe0) >> 5;
+      if (uVar4 != 0) {
+        param_4[1] = uVar4;
+        param_4[2] = ~-(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 < uVar4)) {
+      uVar3 = 1;
+      param_4[2] = param_2;
+      param_4[1] = uVar4;
+    }
+    LOCK();
+    uVar4 = *param_1;
+    bVar5 = uVar1 == uVar4;
+    if (bVar5) {
+      *param_1 = uVar2 ^ (uVar3 << 5 ^ uVar2) & 0x3fe0;
+      uVar4 = uVar1;
+    }
+    UNLOCK();
+  } while (!bVar5);
+  param_4[4] = 0;
+  *param_4 = ~uVar1 & 1;
+  return;
+}
+

```


## wil_details_FeatureReporting_RecordUsageInCache

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|wil_details_FeatureReporting_RecordUsageInCache|
|fullname|wil_details_FeatureReporting_RecordUsageInCache|
|refcount|2|
|length|369|
|called|wil_details_FeatureReporting_IncrementOpportunityInCache<br>wil_details_FeatureReporting_IncrementUsageInCache|
|calling|wil::details::ReportUsageToServiceDirect|
|paramcount|3|
|address|1800a4a44|
|sig|uint * __fastcall wil_details_FeatureReporting_RecordUsageInCache(uint * param_1, uint * param_2, undefined8 param_3)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil_details_FeatureReporting_RecordUsageInCache
+++ wil_details_FeatureReporting_RecordUsageInCache
@@ -0,0 +1,101 @@
+
+uint * wil_details_FeatureReporting_RecordUsageInCache
+                 (uint *param_1,uint *param_2,undefined8 param_3)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  uint uVar4;
+  uint uVar5;
+  bool bVar6;
+  
+  uVar3 = (uint)param_3;
+  param_1[0] = 0;
+  param_1[1] = 0;
+  param_1[2] = 0;
+  param_1[3] = 0;
+  param_1[4] = 0;
+  param_1[5] = 0;
+  if (uVar3 == 0) {
+LAB_1800a4b99:
+    wil_details_FeatureReporting_IncrementUsageInCache(param_2,uVar3,param_3,param_1);
+  }
+  else {
+    if (uVar3 == 1) {
+LAB_1800a4b89:
+      wil_details_FeatureReporting_IncrementOpportunityInCache(param_2,uVar3,param_3,param_1);
+      return param_1;
+    }
+    if ((uVar3 != 2) && (uVar3 != 3)) {
+      if (uVar3 == 4) goto LAB_1800a4b99;
+      if (uVar3 == 5) goto LAB_1800a4b89;
+      if ((uVar3 != 6) && (uVar3 != 7)) {
+        uVar5 = uVar3 - 0x140;
+        if ((int)uVar5 < 0x40) {
+          uVar4 = param_2[1];
+          do {
+            if (((uVar4 & 0x10) == 0) || (uVar2 = 1, (uVar4 >> 5 & 0x3f) != uVar5)) {
+              uVar2 = 0;
+            }
+            param_1[4] = uVar2;
+            LOCK();
+            uVar2 = param_2[1];
+            bVar6 = uVar4 == uVar2;
+            if (bVar6) {
+              param_2[1] = (uVar5 * 0x20 ^ uVar4) & 0x7e0 ^ uVar4 | 0x10;
+              uVar2 = uVar4;
+            }
+            uVar4 = uVar2;
+            UNLOCK();
+          } while (!bVar6);
+          if (param_1[4] != 0) {
+            return param_1;
+          }
+        }
+        param_1[3] = 0;
+        param_1[2] = uVar3;
+        param_1[1] = 1;
+        return param_1;
+      }
+    }
+    uVar5 = 0;
+    if (uVar3 == 2) {
+      uVar5 = 2;
+    }
+    else if (uVar3 == 3) {
+      uVar5 = 8;
+    }
+    else if (uVar3 == 6) {
+      uVar5 = 4;
+    }
+    else if (uVar3 == 7) {
+      uVar5 = 0x10;
+    }
+    uVar4 = 1;
+    uVar3 = *param_2;
+    do {
+      uVar1 = uVar3;
+      uVar3 = uVar5 | uVar1;
+      param_1[4] = (uint)(uVar3 == uVar1);
+      uVar2 = uVar3 | 1;
+      if (uVar3 == uVar1) {
+        uVar2 = uVar3;
+      }
+      LOCK();
+      uVar3 = *param_2;
+      bVar6 = uVar1 == uVar3;
+      if (bVar6) {
+        *param_2 = uVar2;
+        uVar3 = uVar1;
+      }
+      UNLOCK();
+    } while (!bVar6);
+    if (((uVar2 & 1) == 0) || ((uVar1 & 1) != 0)) {
+      uVar4 = 0;
+    }
+    *param_1 = uVar4;
+  }
+  return param_1;
+}
+

```


## wil_details_MapReportingKind

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|wil_details_MapReportingKind|
|fullname|wil_details_MapReportingKind|
|refcount|1|
|length|144|
|called||
|calling|wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::ReportUsage|
|paramcount|2|
|address|1800a4bbc|
|sig|uint __fastcall wil_details_MapReportingKind(int param_1, int param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil_details_MapReportingKind
+++ wil_details_MapReportingKind
@@ -0,0 +1,33 @@
+
+uint wil_details_MapReportingKind(int 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|mfds-07.dll|
| :---: | :---: |
|name|wil_details_RecordCachedUsage|
|fullname|wil_details_RecordCachedUsage|
|refcount|2|
|length|324|
|called|__security_check_cookie<br>wil::details::WilApi_RecordFeatureUsageReports|
|calling|wil::details::EnabledStateManager::RecordCachedUsageUnderLock|
|paramcount|2|
|address|1800a4c5c|
|sig|undefined __fastcall wil_details_RecordCachedUsage(undefined4 param_1, uint * param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- wil_details_RecordCachedUsage
+++ wil_details_RecordCachedUsage
@@ -0,0 +1,90 @@
+
+/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
+
+void wil_details_RecordCachedUsage(undefined4 param_1,uint *param_2)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  uint uVar4;
+  undefined4 *puVar5;
+  __uint64 _Var6;
+  bool bVar7;
+  undefined1 auStack_68 [32];
+  undefined4 local_48;
+  short local_44 [2];
+  undefined4 local_40 [10];
+  ulonglong local_18;
+  
+  local_18 = __security_cookie ^ (ulonglong)auStack_68;
+  uVar2 = *param_2;
+  do {
+    LOCK();
+    uVar4 = *param_2;
+    bVar7 = uVar2 == uVar4;
+    if (bVar7) {
+      *param_2 = uVar2 & 0xffc0401e;
+      uVar4 = uVar2;
+    }
+    uVar2 = uVar4;
+    UNLOCK();
+  } while (!bVar7);
+  uVar3 = uVar2 >> 1 & 0xf;
+  uVar4 = 0;
+  if (uVar3 != 0) {
+    uVar4 = param_2[1];
+    do {
+      LOCK();
+      uVar1 = param_2[1];
+      bVar7 = uVar4 == uVar1;
+      if (bVar7) {
+        param_2[1] = uVar4 | uVar3;
+        uVar1 = uVar4;
+      }
+      uVar4 = uVar1;
+      UNLOCK();
+    } while (!bVar7);
+    uVar4 = uVar3 & ~uVar4;
+  }
+  puVar5 = &local_48;
+  if ((uVar4 & 1) != 0) {
+    puVar5 = local_40;
+    local_44[0] = 2;
+    local_44[1] = 1;
+    local_48 = param_1;
+  }
+  if ((uVar4 & 2) != 0) {
+    *puVar5 = param_1;
+    puVar5[1] = 0x10006;
+    puVar5 = puVar5 + 2;
+  }
+  if ((uVar4 & 4) != 0) {
+    *puVar5 = param_1;
+    puVar5[1] = 0x10003;
+    puVar5 = puVar5 + 2;
+  }
+  if (7 < uVar4) {
+    *puVar5 = param_1;
+    puVar5[1] = 0x10007;
+    puVar5 = puVar5 + 2;
+  }
+  if ((uVar2 >> 5 & 0x1ff) != 0) {
+    *puVar5 = param_1;
+    *(ushort *)((longlong)puVar5 + 6) = (ushort)(uVar2 >> 5) & 0x1ff;
+    *(ushort *)(puVar5 + 1) = ((ushort)(uVar2 >> 0xe) & 1) << 2;
+    puVar5 = puVar5 + 2;
+  }
+  if ((uVar2 >> 0xf & 0x7f) != 0) {
+    *puVar5 = param_1;
+    *(ushort *)((longlong)puVar5 + 6) = (ushort)(uVar2 >> 0xf) & 0x7f;
+    *(ushort *)(puVar5 + 1) = ((ushort)(uVar2 >> 0x16) & 1) * 4 + 1;
+    puVar5 = puVar5 + 2;
+  }
+  _Var6 = (longlong)puVar5 - (longlong)&local_48 >> 3;
+  if (0 < (longlong)_Var6) {
+    wil::details::WilApi_RecordFeatureUsageReports((__WIL_RTL_FEATURE_USAGE_DATA *)&local_48,_Var6);
+  }
+  return;
+}
+

```


## wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|`dynamic_atexit_destructor_for_'g_enabledStateManager''|
|fullname|wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''|
|refcount|3|
|length|38|
|called|wil::ProcessShutdownInProgress<br>wil::details::EnabledStateManager::ProcessShutdown<br>wil::details::EnabledStateManager::~EnabledStateManager|
|calling||
|paramcount|0|
|address|1800cbe50|
|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,15 @@
+
+void wil::details::_dynamic_atexit_destructor_for__g_enabledStateManager__(void)
+
+{
+  bool bVar1;
+  
+  bVar1 = ProcessShutdownInProgress();
+  if (bVar1) {
+    EnabledStateManager::ProcessShutdown((EnabledStateManager *)&g_enabledStateManager);
+    return;
+  }
+  EnabledStateManager::~EnabledStateManager((EnabledStateManager *)&g_enabledStateManager);
+  return;
+}
+

```


## API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::WaitForThreadpoolTimerCallbacks

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|WaitForThreadpoolTimerCallbacks|
|fullname|API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::WaitForThreadpoolTimerCallbacks|
|refcount|2|
|length|0|
|called||
|calling|wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy|
|paramcount|2|
|address|EXTERNAL:000000af|
|sig|void __stdcall WaitForThreadpoolTimerCallbacks(PTP_TIMER pti, BOOL fCancelPendingCallbacks)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|True|


*No code available for API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::WaitForThreadpoolTimerCallbacks*
## API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::SetThreadpoolTimer

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|SetThreadpoolTimer|
|fullname|API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::SetThreadpoolTimer|
|refcount|3|
|length|0|
|called||
|calling|wil::details::DestroyThreadPoolTimer<wil::details::SystemThreadPoolMethods,0>::Destroy<br>wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>|
|paramcount|4|
|address|EXTERNAL:000000ae|
|sig|void __stdcall SetThreadpoolTimer(PTP_TIMER pti, PFILETIME pftDueTime, DWORD msPeriod, DWORD msWindowLength)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|True|


*No code available for API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::SetThreadpoolTimer*
## API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::CreateThreadpoolTimer

### Function Meta



|Key|mfds-07.dll|
| :---: | :---: |
|name|CreateThreadpoolTimer|
|fullname|API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::CreateThreadpoolTimer|
|refcount|2|
|length|0|
|called||
|calling|wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>|
|paramcount|3|
|address|EXTERNAL:000000b3|
|sig|PTP_TIMER __stdcall CreateThreadpoolTimer(PTP_TIMER_CALLBACK pfnti, PVOID pv, PTP_CALLBACK_ENVIRON pcbe)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|True|


*No code available for API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL::CreateThreadpoolTimer*
# Modified


*Modified functions contain code changes*
## wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''

### Match Info



|Key|mfds-06.dll - mfds-07.dll|
| :---: | :---: |
|diff_type|code,length,address|
|ratio|0.6|
|i_ratio|0.11|
|m_ratio|0.78|
|b_ratio|0.78|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''|`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''|
|fullname|wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''|wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''|
|refcount|2|2|
|`length`|43|71|
|called|||
|calling|||
|paramcount|0|0|
|`address`|180001430|1800013b0|
|sig|undefined __fastcall `dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''(void)|undefined __fastcall `dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi'' Diff


```diff
--- wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''
+++ wil::details::`dynamic_initializer_for_'g_header_init_InitializeStagingHeaderApi''
@@ -1,14 +1,14 @@
-
-/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
 
 void wil::details::_dynamic_initializer_for__g_header_init_InitializeStagingHeaderApi__(void)
 
 {
-  _g_wil_details_apiRecordFeatureUsage = RecordFeatureUsage_exref;
-  _g_wil_details_apiSubscribeFeatureStateChangeNotification =
+  g_wil_details_apiGetFeatureEnabledState = GetFeatureEnabledStateHelper;
+  g_wil_details_apiRecordFeatureUsage = RecordFeatureUsage_exref;
+  g_wil_details_apiSubscribeFeatureStateChangeNotification =
        SubscribeFeatureStateChangeNotification_exref;
-  _g_wil_details_apiUnsubscribeFeatureStateChangeNotification =
+  g_wil_details_apiUnsubscribeFeatureStateChangeNotification =
        UnsubscribeFeatureStateChangeNotification_exref;
+  g_wil_details_realtimeFeatureUsageHook = CMpeg2NonVersionedPSIParse::PSICurSectionAborted;
   return;
 }
 

```


## CHEVCParser::CHEVCParser

### Match Info



|Key|mfds-06.dll - mfds-07.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.58|
|i_ratio|0.32|
|m_ratio|0.91|
|b_ratio|0.72|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|CHEVCParser|CHEVCParser|
|fullname|CHEVCParser::CHEVCParser|CHEVCParser::CHEVCParser|
|refcount|2|2|
|`length`|156|180|
|`called`|`vector_constructor_iterator'<br>memset|`vector_constructor_iterator'<br>memset<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled|
|calling|CCodecInfo2MT::InitHEVCStream_|CCodecInfo2MT::InitHEVCStream_|
|paramcount|3|3|
|`address`|18009a5b8|18009a8e0|
|sig|undefined __thiscall CHEVCParser(CHEVCParser * this, uchar * param_1, ulong param_2)|undefined __thiscall CHEVCParser(CHEVCParser * this, uchar * param_1, ulong param_2)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CHEVCParser::CHEVCParser Called Diff


```diff
--- CHEVCParser::CHEVCParser called
+++ CHEVCParser::CHEVCParser called
@@ -2,0 +3 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled
```


### CHEVCParser::CHEVCParser Diff


```diff
--- CHEVCParser::CHEVCParser
+++ CHEVCParser::CHEVCParser
@@ -1,21 +1,34 @@
 
 /* public: __cdecl CHEVCParser::CHEVCParser(unsigned char const * __ptr64,unsigned long) __ptr64 */
 
 CHEVCParser * __thiscall CHEVCParser::CHEVCParser(CHEVCParser *this,uchar *param_1,ulong param_2)
 
 {
+  bool bVar1;
+  size_t _Size;
+  
   _vector_constructor_iterator_(this + 0x10,0x140,0x40,ReferencePictureSet::ReferencePictureSet);
   *(undefined4 *)(this + 0x5030) = 0xffffffff;
   *(undefined4 *)(this + 0x5034) = 0;
+  *(undefined4 *)this = 0;
+  *(undefined4 *)(this + 4) = 0;
+  *(undefined4 *)(this + 8) = 0;
+  *(undefined4 *)(this + 0xc) = 0;
   *(uchar **)(this + 0x5038) = param_1;
   *(ulong *)(this + 0x5040) = param_2;
-  *(undefined8 *)this = 0;
-  *(undefined8 *)(this + 8) = 0;
-  memset(this + 0x10,0,0x140);
+  bVar1 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled
+                    ((FeatureImpl<__WilFeatureTraits_Feature_1136894267> *)
+                     &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_1136894267>::GetImpl(void)'
+                      ::__l2::impl);
+  _Size = 0x5000;
+  if (!bVar1) {
+    _Size = 0x140;
+  }
+  memset(this + 0x10,0,_Size);
   *(undefined8 *)(this + 0x5010) = 0;
   *(undefined8 *)(this + 0x5018) = 0;
   *(undefined8 *)(this + 0x5020) = 0;
   *(undefined8 *)(this + 0x5028) = 0;
   return this;
 }
 

```


## CHEVCParser::parseShortTermRefPicSet

### Match Info



|Key|mfds-06.dll - mfds-07.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.24|
|i_ratio|0.23|
|m_ratio|0.94|
|b_ratio|0.42|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|parseShortTermRefPicSet|parseShortTermRefPicSet|
|fullname|CHEVCParser::parseShortTermRefPicSet|CHEVCParser::parseShortTermRefPicSet|
|refcount|2|2|
|`length`|764|842|
|`called`|CHEVCParser::GetBitsNalu<br>CHEVCParser::GetBitsNalu_uev<br>ReferencePictureSet::sortDeltaPOC|CHEVCParser::GetBitsNalu<br>CHEVCParser::GetBitsNalu_uev<br>ReferencePictureSet::setDeltaPOC<br>ReferencePictureSet::sortDeltaPOC<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled|
|calling|CHEVCParser::GetSeqParameterSetHEVC|CHEVCParser::GetSeqParameterSetHEVC|
|paramcount|5|5|
|`address`|1800a2ca4|1800a393c|
|sig|bool __thiscall parseShortTermRefPicSet(CHEVCParser * this, ReferencePictureSet * param_1, ulong param_2, ulong param_3, ulong param_4)|bool __thiscall parseShortTermRefPicSet(CHEVCParser * this, ReferencePictureSet * param_1, ulong param_2, ulong param_3, ulong param_4)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CHEVCParser::parseShortTermRefPicSet Called Diff


```diff
--- CHEVCParser::parseShortTermRefPicSet called
+++ CHEVCParser::parseShortTermRefPicSet called
@@ -2,0 +3 @@
+ReferencePictureSet::setDeltaPOC
@@ -3,0 +5 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled
```


### CHEVCParser::parseShortTermRefPicSet Diff


```diff
--- CHEVCParser::parseShortTermRefPicSet
+++ CHEVCParser::parseShortTermRefPicSet
@@ -1,161 +1,178 @@
 
 /* private: bool __cdecl CHEVCParser::parseShortTermRefPicSet(struct ReferencePictureSet *
    __ptr64,unsigned long,unsigned long,unsigned long) __ptr64 */
 
 bool __thiscall
 CHEVCParser::parseShortTermRefPicSet
           (CHEVCParser *this,ReferencePictureSet *param_1,ulong param_2,ulong param_3,ulong param_4)
 
 {
   ReferencePictureSet *pRVar1;
   ReferencePictureSet *pRVar2;
-  int iVar3;
-  int iVar4;
-  bool bVar5;
-  ulong uVar6;
-  int iVar7;
+  bool bVar3;
+  uint uVar4;
+  ulong uVar5;
+  int iVar6;
+  ulong uVar7;
   int iVar8;
-  uint uVar9;
-  uint uVar10;
-  ulonglong uVar11;
-  int iVar12;
-  int iVar13;
-  ReferencePictureSet *pRVar14;
+  ulong uVar9;
+  ReferencePictureSet *pRVar10;
+  uint uVar11;
+  ulonglong uVar12;
   ulong local_res18 [2];
-  undefined8 local_38;
+  ulong local_38;
+  int local_34;
   CHEVCParser *local_30;
   
-  iVar13 = 0;
   if (param_2 == 0) {
     *(undefined4 *)param_1 = 0;
   }
   else {
-    bVar5 = GetBitsNalu(this,1,(ulong *)param_1);
-    if (!bVar5) {
+    bVar3 = GetBitsNalu(this,1,(ulong *)param_1);
+    if (!bVar3) {
       return false;
     }
   }
   if (*(int *)param_1 == 0) {
     pRVar1 = param_1 + 4;
     *(ulong *)pRVar1 = 0;
-    bVar5 = GetBitsNalu_uev(this,(ulong *)pRVar1);
-    if ((bVar5) && (*(uint *)pRVar1 < 0x11)) {
+    bVar3 = GetBitsNalu_uev(this,(ulong *)pRVar1);
+    if ((bVar3) && (*(uint *)pRVar1 < 0x11)) {
       pRVar2 = param_1 + 8;
       *(ulong *)pRVar2 = 0;
-      bVar5 = GetBitsNalu_uev(this,(ulong *)pRVar2);
-      if ((bVar5) && (*(ulong *)pRVar1 + *(ulong *)pRVar2 < 0x11)) {
-        local_38 = param_1 + 0xa0;
-        iVar12 = 0;
-        while( true ) {
-          uVar11 = (ulonglong)(int)*(ulong *)pRVar1;
-          if ((int)*(ulong *)pRVar1 <= iVar13) {
-            iVar13 = 0;
-            pRVar14 = param_1 + uVar11 * 4 + 0xa0;
-            while( true ) {
-              iVar12 = (int)uVar11;
-              if ((int)(*(ulong *)pRVar1 + *(ulong *)pRVar2) <= iVar12) {
-                *(ulong *)(param_1 + 0xc) = *(ulong *)pRVar1 + *(ulong *)pRVar2;
-                return true;
-              }
-              local_res18[0] = 0;
-              bVar5 = GetBitsNalu_uev(this,local_res18);
-              if (!bVar5) break;
-              *(undefined4 *)pRVar14 = 0;
-              iVar13 = local_res18[0] + 1 + iVar13;
-              *(int *)(pRVar14 + -0x80) = iVar13;
-              bVar5 = GetBitsNalu(this,1,(ulong *)(param_1 + ((longlong)iVar12 + 0x28) * 4));
-              if (!bVar5) {
-                return false;
-              }
-              uVar11 = (ulonglong)(iVar12 + 1);
-              pRVar14 = pRVar14 + 4;
+      bVar3 = GetBitsNalu_uev(this,(ulong *)pRVar2);
+      if ((bVar3) && (uVar5 = *(ulong *)pRVar1, *(ulong *)pRVar2 + uVar5 < 0x11)) {
+        param_4 = 0;
+        iVar8 = 0;
+        if (0 < (int)uVar5) {
+          pRVar10 = param_1 + 0xa0;
+          do {
+            local_res18[0] = 0;
+            bVar3 = GetBitsNalu_uev(this,local_res18);
+            if (!bVar3) {
+              return false;
             }
-            return false;
-          }
-          local_res18[0] = 0;
-          bVar5 = GetBitsNalu_uev(this,local_res18);
-          pRVar14 = local_38;
-          if (!bVar5) {
-            return false;
-          }
-          iVar12 = (iVar12 - local_res18[0]) + -1;
-          *(undefined4 *)local_38 = 0;
-          *(int *)(local_38 + -0x80) = iVar12;
-          bVar5 = GetBitsNalu(this,1,(ulong *)(param_1 + ((longlong)iVar13 + 0x28) * 4));
-          if (!bVar5) break;
-          iVar13 = iVar13 + 1;
-          local_38 = pRVar14 + 4;
+            param_4 = (param_4 - local_res18[0]) - 1;
+            ReferencePictureSet::setDeltaPOC(param_1,iVar8,param_4);
+            *(undefined4 *)pRVar10 = 0;
+            bVar3 = GetBitsNalu(this,1,(ulong *)(param_1 + ((longlong)iVar8 + 0x28) * 4));
+            if (!bVar3) {
+              return false;
+            }
+            uVar5 = *(ulong *)pRVar1;
+            iVar8 = iVar8 + 1;
+            pRVar10 = pRVar10 + 4;
+          } while (iVar8 < (int)uVar5);
         }
-        return false;
+        uVar9 = *(ulong *)pRVar2;
+        iVar8 = 0;
+        if ((int)uVar5 < (int)(uVar9 + uVar5)) {
+          pRVar10 = param_1 + ((longlong)(int)uVar5 + 0x28) * 4;
+          uVar7 = uVar5;
+          do {
+            local_res18[0] = 0;
+            bVar3 = GetBitsNalu_uev(this,local_res18);
+            if (!bVar3) {
+              return false;
+            }
+            iVar8 = local_res18[0] + 1 + iVar8;
+            ReferencePictureSet::setDeltaPOC(param_1,uVar7,iVar8);
+            *(undefined4 *)pRVar10 = 0;
+            bVar3 = GetBitsNalu(this,1,(ulong *)(param_1 + ((longlong)(int)uVar7 + 0x28) * 4));
+            if (!bVar3) {
+              return false;
+            }
+            uVar9 = *(ulong *)pRVar2;
+            uVar7 = uVar7 + 1;
+            uVar5 = *(ulong *)pRVar1;
+            pRVar10 = pRVar10 + 4;
+          } while ((int)uVar7 < (int)(uVar9 + uVar5));
+        }
+        *(ulong *)(param_1 + 0xc) = uVar9 + uVar5;
+        return true;
       }
     }
   }
   else {
     local_res18[0] = 0;
-    uVar6 = 0;
+    uVar5 = 0;
     if ((param_2 != param_3) ||
-       (bVar5 = GetBitsNalu_uev(this,local_res18), uVar6 = local_res18[0], bVar5)) {
+       (bVar3 = GetBitsNalu_uev(this,local_res18), uVar5 = local_res18[0], bVar3)) {
+      uVar4 = (param_2 - uVar5) - 1;
+      *(uint *)(param_1 + 0x1c) = uVar4;
+      uVar12 = 0;
+      iVar8 = 0;
+      uVar5 = 0;
+      param_4 = 0;
       local_res18[0] = 0;
-      uVar9 = (param_2 - uVar6) - 1;
-      iVar12 = 0;
-      *(uint *)(param_1 + 0x1c) = uVar9;
-      param_4 = 0;
-      local_30 = this + (ulonglong)uVar9 * 0x140 + 0x10;
-      bVar5 = GetBitsNalu(this,1,&param_4);
-      if (bVar5) {
-        local_38 = (ReferencePictureSet *)((ulonglong)local_38._4_4_ << 0x20);
-        bVar5 = GetBitsNalu_uev(this,(ulong *)&local_38);
-        if (bVar5) {
-          uVar9 = *(uint *)(this + (ulonglong)uVar9 * 0x140 + 0x10 + 0xc);
-          iVar3 = param_4 * -2;
-          iVar7 = (ulong)local_38 + 1;
-          uVar10 = 0;
-          while( true ) {
-            if (uVar9 < uVar10) {
-              *(ulong *)(param_1 + 0xc) = local_res18[0];
-              *(int *)(param_1 + 4) = iVar13;
-              *(int *)(param_1 + 8) = iVar12;
+      local_30 = this + (ulonglong)uVar4 * 0x140 + 0x10;
+      bVar3 = GetBitsNalu(this,1,&param_4);
+      if (bVar3) {
+        local_38 = 0;
+        bVar3 = GetBitsNalu_uev(this,&local_38);
+        if (bVar3) {
+          local_34 = (param_4 * -2 + 1) * (local_38 + 1);
+          local_38 = *(ulong *)(this + (ulonglong)uVar4 * 0x140 + 0x10 + 0xc);
+          uVar4 = 0;
+          do {
+            param_4 = 0;
+            bVar3 = GetBitsNalu(this,1,&param_4);
+            if (!bVar3) {
+              return false;
+            }
+            uVar9 = param_4;
+            if (param_4 == 0) {
+              param_4 = 0;
+              bVar3 = GetBitsNalu(this,1,&param_4);
+              if (!bVar3) {
+                return false;
+              }
+              uVar9 = param_4 * 2;
+            }
+            if (uVar9 - 1 < 2) {
+              bVar3 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::
+                      __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_1136894267> *)
+                                          &`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_1136894267>::GetImpl(void)'
+                                           ::__l2::impl);
+              uVar11 = (uint)uVar12;
+              if ((bVar3) && (0xf < uVar11)) {
+                return false;
+              }
+              if ((local_38 <= uVar4) ||
+                 ((bVar3 = wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::
+                           __private_IsEnabled((FeatureImpl<__WilFeatureTraits_Feature_1136894267> *
+                                               )&`private:_static_class_wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>&___ptr64___cdecl_wil::Feature<__WilFeatureTraits_Feature_1136894267>::GetImpl(void)'
+                                                 ::__l2::impl), bVar3 && (0xf < uVar4)))) {
+                iVar6 = 0;
+              }
+              else {
+                iVar6 = *(int *)(local_30 + (longlong)(int)uVar4 * 4 + 0x20);
+              }
+              iVar6 = local_34 + iVar6;
+              ReferencePictureSet::setDeltaPOC(param_1,uVar11,iVar6);
+              *(uint *)(param_1 + uVar12 * 4 + 0xa0) = (uint)(uVar9 == 1);
+              if (iVar6 < 0) {
+                iVar8 = iVar8 + 1;
+              }
+              else {
+                local_res18[0] = local_res18[0] + 1;
+              }
+              uVar12 = (ulonglong)(uVar11 + 1);
+              uVar5 = local_res18[0];
+            }
+            uVar4 = uVar4 + 1;
+            if (local_38 < uVar4) {
+              *(int *)(param_1 + 0xc) = (int)uVar12;
+              *(int *)(param_1 + 4) = iVar8;
+              *(ulong *)(param_1 + 8) = uVar5;
               ReferencePictureSet::sortDeltaPOC(param_1);
               return true;
             }
-            param_4 = 0;
-            bVar5 = GetBitsNalu(this,1,&param_4);
-            if (!bVar5) break;
-            uVar6 = param_4;
-            if (param_4 == 0) {
-              param_4 = 0;
-              bVar5 = GetBitsNalu(this,1,&param_4);
-              if (!bVar5) {
-                return false;
-              }
-              uVar6 = param_4 * 2;
-            }
-            iVar4 = iVar13;
-            if (uVar6 - 1 < 2) {
-              if (uVar10 < uVar9) {
-                iVar8 = *(int *)(local_30 + (longlong)(int)uVar10 * 4 + 0x20);
-              }
-              else {
-                iVar8 = 0;
-              }
-              iVar8 = iVar8 + (iVar3 + 1) * iVar7;
-              *(int *)(param_1 + (longlong)(int)local_res18[0] * 4 + 0x20) = iVar8;
-              *(uint *)(param_1 + (ulonglong)local_res18[0] * 4 + 0xa0) = (uint)(uVar6 == 1);
-              local_res18[0] = local_res18[0] + 1;
-              iVar4 = iVar13 + 1;
-              if (-1 < iVar8) {
-                iVar4 = iVar13;
-                iVar12 = iVar12 + 1;
-              }
-            }
-            iVar13 = iVar4;
-            uVar10 = uVar10 + 1;
-          }
-          return false;
+          } while( true );
         }
       }
     }
   }
   return false;
 }
 

```


# Modified (No Code Changes)


*Slightly modified functions have no code changes, rather differnces in:*
- refcount
- length
- called
- calling
- name
- fullname

## ProcessShutdownInProgress

### Match Info



|Key|mfds-06.dll - mfds-07.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.62|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|ProcessShutdownInProgress|ProcessShutdownInProgress|
|fullname|wil::ProcessShutdownInProgress|wil::ProcessShutdownInProgress|
|`refcount`|2|5|
|length|47|47|
|called|_guard_dispatch_icall$thunk$10345483385596137414|_guard_dispatch_icall$thunk$10345483385596137414|
|`calling`|wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Release|wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''<br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Release|
|paramcount|0|0|
|`address`|18004a54c|18004a5ac|
|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,2 @@
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
+wil::details::`dynamic_atexit_destructor_for_'g_enabledStateManager''
```


## last_error_context

### Match Info



|Key|mfds-06.dll - mfds-07.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.91|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|last_error_context|last_error_context|
|fullname|wil::last_error_context::last_error_context|wil::last_error_context::last_error_context|
|`refcount`|3|6|
|length|36|36|
|called|API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError|API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::GetLastError|
|`calling`|wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64)_noexcept,&void___cdecl_wil::details::CloseHandle(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Release|wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager><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<void*___ptr64,void_(__cdecl*)(void*___ptr64)_noexcept,&void___cdecl_wil::details::CloseHandle(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Release<br>wil::details_abi::heap_buffer::reserve|
|paramcount|1|1|
|`address`|18009b1ec|18009b52c|
|sig|undefined __thiscall last_error_context(last_error_context * this)|undefined __thiscall last_error_context(last_error_context * this)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### last_error_context Calling Diff


```diff
--- wil::last_error_context::last_error_context calling
+++ wil::last_error_context::last_error_context calling
@@ -0,0 +1,2 @@
+wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>
+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
@@ -2,0 +5 @@
+wil::details_abi::heap_buffer::reserve
```


## API-MS-WIN-CORE-SYSINFO-L1-1-0.DLL::GetTickCount

### Match Info



|Key|mfds-06.dll - mfds-07.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|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|GetTickCount|GetTickCount|
|fullname|API-MS-WIN-CORE-SYSINFO-L1-1-0.DLL::GetTickCount|API-MS-WIN-CORE-SYSINFO-L1-1-0.DLL::GetTickCount|
|`refcount`|6|7|
|length|0|0|
|called|||
|`calling`|CMPEG2PushClock::NewPCRValue<br>CMpeg2PESStreamParser::ProcessBuffer_<br>CStreamParser::CopyStream<br>CTClockSubordinate<__int64,__int64>::OnMasterTime<br>CTransportStreamMapper::Process|CMPEG2PushClock::NewPCRValue<br>CMpeg2PESStreamParser::ProcessBuffer_<br>CStreamParser::CopyStream<br>CTClockSubordinate<__int64,__int64>::OnMasterTime<br>CTransportStreamMapper::Process<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled|
|paramcount|0|0|
|`address`|EXTERNAL:000000a3|EXTERNAL:000000a1|
|sig|DWORD __stdcall GetTickCount(void)|DWORD __stdcall GetTickCount(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### API-MS-WIN-CORE-SYSINFO-L1-1-0.DLL::GetTickCount Calling Diff


```diff
--- API-MS-WIN-CORE-SYSINFO-L1-1-0.DLL::GetTickCount calling
+++ API-MS-WIN-CORE-SYSINFO-L1-1-0.DLL::GetTickCount calling
@@ -5,0 +6 @@
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::__private_IsEnabled
```


## ProcessHeapAlloc

### Match Info



|Key|mfds-06.dll - mfds-07.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.61|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|ProcessHeapAlloc|ProcessHeapAlloc|
|fullname|wil::details::ProcessHeapAlloc|wil::details::ProcessHeapAlloc|
|`refcount`|4|5|
|length|182|182|
|called|API-MS-WIN-CORE-HEAP-L1-1-0.DLL::GetProcessHeap<br>API-MS-WIN-CORE-HEAP-L1-1-0.DLL::HeapAlloc<br>API-MS-WIN-CORE-LIBRARYLOADER-L1-2-0.DLL::GetModuleHandleW<br>API-MS-WIN-CORE-LIBRARYLOADER-L1-2-0.DLL::GetProcAddress<br>_guard_dispatch_icall$thunk$10345483385596137414|API-MS-WIN-CORE-HEAP-L1-1-0.DLL::GetProcessHeap<br>API-MS-WIN-CORE-HEAP-L1-1-0.DLL::HeapAlloc<br>API-MS-WIN-CORE-LIBRARYLOADER-L1-2-0.DLL::GetModuleHandleW<br>API-MS-WIN-CORE-LIBRARYLOADER-L1-2-0.DLL::GetProcAddress<br>_guard_dispatch_icall$thunk$10345483385596137414|
|`calling`|wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::MakeAndInitialize<br>wil::details_abi::ThreadLocalData::SetLastError<br>wil::details_abi::ThreadLocalFailureInfo::Set|wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::MakeAndInitialize<br>wil::details_abi::ThreadLocalData::SetLastError<br>wil::details_abi::ThreadLocalFailureInfo::Set<br>wil::details_abi::heap_buffer::reserve|
|paramcount|2|2|
|`address`|1800a1c88|1800a24c8|
|sig|void * __cdecl ProcessHeapAlloc(ulong param_1, __uint64 param_2)|void * __cdecl ProcessHeapAlloc(ulong param_1, __uint64 param_2)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### ProcessHeapAlloc Calling Diff


```diff
--- wil::details::ProcessHeapAlloc calling
+++ wil::details::ProcessHeapAlloc calling
@@ -3,0 +4 @@
+wil::details_abi::heap_buffer::reserve
```


## __GSHandlerCheck

### Match Info



|Key|mfds-06.dll - mfds-07.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|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|__GSHandlerCheck|__GSHandlerCheck|
|fullname|__GSHandlerCheck|__GSHandlerCheck|
|`refcount`|252|253|
|length|29|29|
|called|__GSHandlerCheckCommon|__GSHandlerCheckCommon|
|calling|||
|paramcount|4|4|
|`address`|1800c9f04|1800cb2e4|
|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|

## API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive

### Match Info



|Key|mfds-06.dll - mfds-07.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|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|AcquireSRWLockExclusive|AcquireSRWLockExclusive|
|fullname|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive|
|`refcount`|10|17|
|length|0|0|
|called|||
|`calling`|CDShowTransInputPin::QueueOutputSample<br>CDShowTransform::ProcessOutput<br>CMFSRWLock::LockExclusive<br>CSurfaceProducer::~CSurfaceProducer<br>CSurfaceQueue::Clone<br>CSurfaceQueue::OpenConsumer<br>CSurfaceQueue::OpenProducer<br>CSurfaceQueue::RemoveConsumer<br>CThreadSafeAtlList<IMFSample*___ptr64>::RemoveHead|<details><summary>Expand for full list:<br>CDShowTransInputPin::QueueOutputSample<br>CDShowTransform::ProcessOutput<br>CMFSRWLock::LockExclusive<br>CSurfaceProducer::~CSurfaceProducer<br>CSurfaceQueue::Clone<br>CSurfaceQueue::OpenConsumer<br>CSurfaceQueue::OpenProducer<br>CSurfaceQueue::RemoveConsumer<br>CThreadSafeAtlList<IMFSample*___ptr64>::RemoveHead<br>wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl<br>wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush</summary>wil::details::EnabledStateManager::OnStateChange<br>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::ProcessShutdown<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState</details>|
|paramcount|1|1|
|`address`|EXTERNAL:0000004f|EXTERNAL:00000040|
|sig|void __stdcall AcquireSRWLockExclusive(PSRWLOCK SRWLock)|void __stdcall AcquireSRWLockExclusive(PSRWLOCK SRWLock)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive Calling Diff


```diff
--- API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive calling
+++ API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive calling
@@ -9,0 +10,7 @@
+wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl
+wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush
+wil::details::EnabledStateManager::OnStateChange
+wil::details::EnabledStateManager::OnTimer
+wil::details::EnabledStateManager::ProcessShutdown
+wil::details::EnabledStateManager::QueueBackgroundUsageReporting
+wil::details::FeatureImpl<__WilFeatureTraits_Feature_1136894267>::GetCachedFeatureEnabledState
```


## atexit

### Match Info



|Key|mfds-06.dll - mfds-07.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|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|atexit|atexit|
|fullname|atexit|atexit|
|`refcount`|9|10|
|length|23|23|
|called|_onexit|_onexit|
|`calling`|ATL::`dynamic_initializer_for_'_AtlBaseModule''<br>ATL::`dynamic_initializer_for_'_AtlComModule''<br>ATL::`dynamic_initializer_for_'_AtlWinModule''<br>__scrt_initialize_thread_safe_statics<br>`dynamic_initializer_for_'_Module''<br>`dynamic_initializer_for_'s_disabledContext''<br>wil::details::`dynamic_atexit_destructor_for_'g_threadFailureCallbacks''<br>wil::details::`dynamic_initializer_for_'g_processLocalData''|ATL::`dynamic_initializer_for_'_AtlBaseModule''<br>ATL::`dynamic_initializer_for_'_AtlComModule''<br>ATL::`dynamic_initializer_for_'_AtlWinModule''<br>__scrt_initialize_thread_safe_statics<br>`dynamic_initializer_for_'_Module''<br>`dynamic_initializer_for_'s_disabledContext''<br>wil::details::`dynamic_atexit_destructor_for_'g_threadFailureCallbacks''<br>wil::details::`dynamic_initializer_for_'g_enabledStateManager''<br>wil::details::`dynamic_initializer_for_'g_processLocalData''|
|paramcount|1|1|
|`address`|180054948|180054b88|
|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
@@ -7,0 +8 @@
+wil::details::`dynamic_initializer_for_'g_enabledStateManager''
```


## ~last_error_context

### Match Info



|Key|mfds-06.dll - mfds-07.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.75|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|~last_error_context|~last_error_context|
|fullname|wil::last_error_context::~last_error_context|wil::last_error_context::~last_error_context|
|`refcount`|3|7|
|length|29|29|
|called|API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::SetLastError|API-MS-WIN-CORE-ERRORHANDLING-L1-1-0.DLL::SetLastError|
|`calling`|wil::details::unique_storage<wil::details::resource_policy<void*___ptr64,void_(__cdecl*)(void*___ptr64)_noexcept,&void___cdecl_wil::details::CloseHandle(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Release|wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager><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<void*___ptr64,void_(__cdecl*)(void*___ptr64)_noexcept,&void___cdecl_wil::details::CloseHandle(void*___ptr64),wistd::integral_constant<unsigned___int64,0>,void*___ptr64,void*___ptr64,0,std::nullptr_t>_>::reset<br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Release<br>wil::details_abi::heap_buffer::reserve|
|paramcount|1|1|
|`address`|18009b5cc|18009b930|
|sig|void __thiscall ~last_error_context(last_error_context * this)|void __thiscall ~last_error_context(last_error_context * this)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### ~last_error_context Calling Diff


```diff
--- wil::last_error_context::~last_error_context calling
+++ wil::last_error_context::~last_error_context calling
@@ -0,0 +1,2 @@
+wil::details::EnsureCoalescedTimer<wil::details::EnabledStateManager>
+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
@@ -2,0 +5 @@
+wil::details_abi::heap_buffer::reserve
```


## __security_check_cookie

### Match Info



|Key|mfds-06.dll - mfds-07.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|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|__security_check_cookie|__security_check_cookie|
|fullname|__security_check_cookie|__security_check_cookie|
|`refcount`|318|319|
|length|30|30|
|called|__report_gsfailure|__report_gsfailure|
|`calling`|<details><summary>Expand for full list:<br>AMovieDllRegisterServer2<br>AMovieSetupRegisterServer<br>AMovieSetupUnregisterServer<br>ATL::AtlRegisterClassCategoriesHelper<br>ATL::CAtlModule::UpdateRegistryFromResourceS<br>ATL::CAtlModule::UpdateRegistryFromResourceS<br>ATL::CRegKey::RecurseDeleteKey<br>ATL::CRegObject::RegisterFromResource<br>ATL::CRegParser::AddValue<br>ATL::CRegParser::PreProcessBuffer<br>ATL::CRegParser::RegisterBuffer</summary>ATL::CRegParser::RegisterSubkeys<br>ATL::CRegParser::SkipAssignment<br>BufferWriter::CBufferWriter::CreateInstance<br>CBDAMPEG2Demux::CreatePin<br>CBDAMPEG2Demux::CreateTopology<br>CBDAMPEG2Demux::DeletePin<br>CBDAMPEG2Demux::GetControlNode<br>CBDAMPEG2Demux::SetMediaType<br>CBaseOutputPin::DecideAllocator<br>CCodecInfo2MT::InitAC3AudioStream_<br>CCodecInfo2MT::InitBDAVLPCMAudioStream_<br>CCodecInfo2MT::InitDDPlusAudioStream_<br>CCodecInfo2MT::InitMpeg1VideoStream_<br>CCodecInfo2MT::InitMpeg2VideoStream_<br>CDSSampleSinkInputPin::ConvertDShowAttribToMF<br>CDSSampleSinkInputPin::Receive<br>CDSSampleSinkInputPin::ReceiveConnection<br>CDSSampleSinkInputPin::ReceiveSampleFromCPInternal<br>CDSSampleSinkInputPin::SetMediaTypeFromCPInternal<br>CDShowMPEG2Demux::SetOutputPinMediaType<br>CDShowSBEWrapper::BeginStart<br>CDShowSBEWrapper::CDShowSBEWrapper<br>CDShowSBEWrapper::ConnectSBEFilter<br>CDShowSBEWrapper::ConnectToSampleSinkPin<br>CDShowSBEWrapper::CreateGraph<br>CDShowSBEWrapper::FinalizeGraph<br>CDShowSBEWrapper::FireEx<br>CDShowSBEWrapper::GetCharacteristics<br>CDShowSBEWrapper::GetDuration<br>CDShowSBEWrapper::HookupGraphEventService<br>CDShowSBEWrapper::Initialize<br>CDShowSBEWrapper::RegisterForBroadcastEvents<br>CDShowSBEWrapper::SetPosition<br>CDShowSBEWrapper::UnRegisterForBroadcastEvents<br>CDShowSource::AdjustWrapperToPDSelections<br>CDShowSource::AdvisePeriodic<br>CDShowSource::AdviseTime<br>CDShowSource::BlockAllStreams<br>CDShowSource::BuildStreamInfo<br>CDShowSource::CDShowSource<br>CDShowSource::CreatePresentationDescriptor<br>CDShowSource::DoPause<br>CDShowSource::DoSetRate<br>CDShowSource::DoStart<br>CDShowSource::DoStop<br>CDShowSource::FireEOP<br>CDShowSource::GetCharacteristics<br>CDShowSource::GetFastestRate<br>CDShowSource::GetFullPathNameW<br>CDShowSource::GetInputTrustAuthority<br>CDShowSource::GetPresentationClock<br>CDShowSource::GetRate<br>CDShowSource::GetService<br>CDShowSource::GetSession<br>CDShowSource::GetShellPropertyStore<br>CDShowSource::GetSlowestRate<br>CDShowSource::InitializePlayReady<br>CDShowSource::IsRateSupported<br>CDShowSource::OnDShowWrapperPause<br>CDShowSource::OnDShowWrapperSetRate<br>CDShowSource::OnDShowWrapperStart<br>CDShowSource::OnDShowWrapperStop<br>CDShowSource::Pause<br>CDShowSource::SetD3DManager<br>CDShowSource::SetPresentationClock<br>CDShowSource::SetRate<br>CDShowSource::Shutdown<br>CDShowSource::Start<br>CDShowSource::Stop<br>CDShowSource::UnblockAllStreams<br>CDShowStream::IsAudioStream<br>CDShowStream::WaitForSampleRequest<br>CDShowTransInputPin::QueueOutputSample<br>CDShowTransPin::GoActive<br>CDShowWrapper::AddBlockedFilters<br>CDShowWrapper::AddPSIFilterToGraph<br>CDShowWrapper::BeginPause<br>CDShowWrapper::BeginSetRate<br>CDShowWrapper::BeginStart<br>CDShowWrapper::BeginStop<br>CDShowWrapper::CollectMediaTypes<br>CDShowWrapper::ConfigureDemux<br>CDShowWrapper::ConnectFromSampleSinkPool<br>CDShowWrapper::ConnectNewDSSampleSink<br>CDShowWrapper::ConnectPin<br>CDShowWrapper::ConnectSinkPool<br>CDShowWrapper::ConnectSourceToDemux<br>CDShowWrapper::ConnectSplittersAndDecryptors<br>CDShowWrapper::ConnectToSampleSinkPin<br>CDShowWrapper::ConnectUnconnectedPins<br>CDShowWrapper::CreateCustomDSSampleSink<br>CDShowWrapper::CreateDVDGraph<br>CDShowWrapper::CreateGraph<br>CDShowWrapper::CreateOutputSample<br>CDShowWrapper::CreatePreferredDecoderFilters<br>CDShowWrapper::CreatePreferredDemuxFilters<br>CDShowWrapper::CreatePreferredFilters<br>CDShowWrapper::D3D9ToD311Surface<br>CDShowWrapper::DestroyPreferredFilters<br>CDShowWrapper::DisconnectAndReconnectEVR<br>CDShowWrapper::DoRender<br>CDShowWrapper::EndPause<br>CDShowWrapper::EndSetRate<br>CDShowWrapper::EndStart<br>CDShowWrapper::EndStop<br>CDShowWrapper::FinalizeGraph<br>CDShowWrapper::GetCharacteristics<br>CDShowWrapper::GetContainerFormat<br>CDShowWrapper::GetDuration<br>CDShowWrapper::GetFastestRate<br>CDShowWrapper::GetSlowestRate<br>CDShowWrapper::Initialize<br>CDShowWrapper::InitializeSurfaceQueue<br>CDShowWrapper::InsertPreferredFilters<br>CDShowWrapper::NotifyFilterGraphEvent<br>CDShowWrapper::RebuildGraph<br>CDShowWrapper::RegisterServiceProviders<br>CDShowWrapper::RemoveAllFilters<br>CDShowWrapper::RemoveConnectedSinksFromPool<br>CDShowWrapper::RemoveUnusedPreferredFilters<br>CDShowWrapper::RemoveUnwantedBranches<br>CDShowWrapper::RunAndWaitForPSIGraph<br>CDShowWrapper::SelectSampleSink<br>CDShowWrapper::SetD3D11Resources<br>CDShowWrapper::SetDShowRate<br>CDShowWrapper::SetDXGIManager<br>CDShowWrapper::SetDolbyBinding<br>CDShowWrapper::SetPosition<br>CDShowWrapper::SetupDemux<br>CDShowWrapper::SetupFilterScreening<br>CDShowWrapper::SetupMFBytestreamSource<br>CDShowWrapper::SetupThreadpoolWait<br>CDShowWrapper::ShouldConnectPin<br>CDShowWrapper::StopGraph<br>CDShowWrapper::VerifyDvdPackage<br>CDemuxRender::RenderDemuxAudioVideoPins<br>CDemuxRender::RenderDemuxPSAudioVideoPins<br>CDisp::CDisp<br>CDisp::DumpPin<br>CEnumMediaTypes::Next<br>CEnumMediaTypes::Skip<br>CFilterPolice::BlockFilter<br>CFilterPolice::GetFileVersion<br>CFilterPolice::GetFilterFilename<br>CFilterPolice::IsBlockedFilter<br>CFilterPolice::SelectedFilter<br>CFilterPolice::UnblockFilter<br>CHEVCParser::GetSeqParameterSetHEVC<br>CHEVCParser::profile_tier_level<br>CMFAttributesImpl<IMFAttributes,CMFCSLock>::_Compare<br>CMFAttributesImpl<IMFAttributes,CWin32AttributeLock>::_Compare<br>CMFAttributesTrace::AppendPropVariant<br>CMFAttributesTrace::GetString<br>CMFEventTraceClassName::CMFEventTraceClassName<br>CMFPropVariant::Clear<br>CMFPropVariant::GetElementDataAsVariant<br>CMFSourceBufferingSupport::_ConfigureBuffering<br>CMFSourceBufferingSupport::_GetMaxBitrateFromDLNAProfileID<br>CMFSourceFilter::GetByteStreamMetadata<br>CMFSourceFilter::GetDuration<br>CMFSourceFilter::Load<br>CMFSourceFilter::Load<br>CMFSourceFilter::OnObjectCreated<br>CMFSourceFilter::StopBackgroundTransfer<br>CMFSourceFilter::StopBuffering<br>CMFSourceFilter::_CheckBytes<br>CMFSourceFilter::_CheckIfMPEG2TS<br>CMFSourceFilter::_GetMediaTypeStream<br>CMFSourceFilter::_ShouldUsePushMode<br>CMFSourceMPEG2TSPin::ARIBDemux_ReadARIBPacket<br>CMFSourceMPEG2TSPin::ARIBDemux_SyncRead<br>CMFSourceMPEG2TSPin::Active<br>CMFSourceMPEG2TSPin::DecideBufferSize<br>CMFSourceMPEG2TSPin::DoBufferProcessingLoop<br>CMFSourceMPEG2TSPin::FillBuffer<br>CMFSourceMPEG2TSPin::Length<br>CMFSourceMPEG2TSPin::OnBufferedRead<br>CMFSourceMPEG2TSPin::OnEvent<br>CMFSourceMPEG2TSPin::OnSyncRead<br>CMFSourceMPEG2TSPin::OnThreadCreate<br>CMFSourceMPEG2TSPin::SetUseCircularBuffer<br>CMFSourceMPEG2TSPin::SyncRead<br>CMFSourceMPEG2TSPin::ThreadProc<br>CMFSourceMPEG2TSPin::_BufferedSyncReadNoLock<br>CMFSourceMPEG2TSPin::_EnableBuffering<br>CMFSourceMPEG2TSPin::_GetBitrate<br>CMFSourceMPEG2TSPin::_SyncRead<br>CMFSourceOutputPin::Active<br>CMFSourceOutputPin::BeginFlush<br>CMFSourceOutputPin::Length<br>CMFSourceOutputPin::OnAsyncRead<br>CMFSourceOutputPin::OnEvent<br>CMFSourceOutputPin::OnFilterAbortOperation<br>CMFSourceOutputPin::OnSyncReadAsyncCallback::Invoke<br>CMFSourceOutputPin::Request<br>CMFSourceOutputPin::RequestAllocator<br>CMFSourceOutputPin::SyncRead<br>CMFSourceOutputPin::SyncReadAligned<br>CMFSourceOutputPin::_AsyncRead<br>CMFSourceOutputPin::_CompleteAsyncReadCallback<br>CMFSourceOutputPin::_EnableBuffering<br>CMFSourceOutputPin::_GetBitrate<br>CMFSourceOutputPin::_SyncRead<br>CMPEG2Controller::GetPayloadParser_<br>CMPEG2Controller::InitPullModeStream<br>CMPEG2Controller::MapStream<br>CMPEG2Demultiplexer::CreateStreamMap_<br>CMPEG2Demultiplexer::PersistOutputPin_<br>CMPEG2Demultiplexer::PersistPinStreamIdMaps_<br>CMPEG2Demultiplexer::ProcessMediaSampleLocked<br>CMPEG2Demultiplexer::RestoreOutputPin_<br>CMPEG2Demultiplexer::RestorePinStreamIdMaps_<br>CMPEG2DemuxOutputPin::DecideAllocator<br>CMPEG2DemuxOutputPin::DecideBufferSize<br>CMPEG2DemuxOutputPin::InternalSendInbandSpanningEvent<br>CMPEG2DemuxOutputPin::SendSample<br>CMPEG2PushClock::MediaSampleTimesFromPTS<br>CMacroVision::MakeMVFilterList<br>CMediaSampleCopyBuffer::CMediaSampleCopyBuffer<br>CMediaSampleCopyBuffer::CompleteCopyBuffer<br>CMediaSampleCopyBuffer::SendSample<br>CMp2PullPin::Connect<br>CMp2PullPin::Process<br>CMpeg2DemuxMediaSeekingCOM::IsUsingTimeFormat<br>CMpeg2PCRParser::ProcessSysBuffer<br>CMpeg2ProgramStreamAnalyzer::AnalyzePESPacket_<br>CMpeg2PullTransportStreamAnalyzer::AnalyzeTSPacket_<br>CMpeg2SCRParser::ProcessSysBuffer<br>CMpeg2Stats::Initialize<br>CPATProcessor::MapPmtPid<br>CPATProcessor::UnmapPmtPid<br>CPATProcessor::store<br>CPMTProcessor::store<br>CPbdaTagTableHandler::AssembleTagAttribute<br>CPersistStream::Save<br>CPsiParserInputPin::Receive<br>CSampleRequestQueueProtected::FireCPEventsIfNeeded<br>CSourceStream::CheckMediaType<br>CSurfaceQueueDeviceD3D9::CopySurface<br>CSurfaceQueueDeviceDXGI::CopySurface<br>CSurfaceQueueDeviceDXGI::CreateCopyResource<br>CSurfaceQueueDeviceDXGI::CreateSharedSurface<br>CSurfaceQueueDeviceDXGI::Initialize<br>CTAGPacket::IsPBDA_TAG_Packet<br>CTransportStreamMapper::ProcessTSPacket_<br>CUri::GetKnownScheme<br>CWTVByteStreamPlugin::RecordingTypeFromSignature<br>CreateBindingBlob<br>CreateBufferWriterEvent<br>D3DPresentEngine::CheckFormat<br>D3DPresentEngine::CreateD3DDevice<br>D3DPresentEngine::UpdateDestRect<br>EVRCustomPresenter::CalculateDisplayRectangle<br>EVRCustomPresenter::CalculateOutputRectangle<br>EVRCustomPresenter::ConfigureMixer<br>EVRCustomPresenter::CreateOptimalVideoType<br>EVRCustomPresenter::IsMediaTypeSupported<br>EVRCustomPresenter::SetVideoPosition<br>EliminateSubKey<br>FindFirstAc3Frame<br>FormCaptureFilename<br>GetFourCC<br>GetPCRFromTSPacket<br>GetPinDirection<br>GetStreamTypeForMFMediaType<br>HashToString<br>InitMpeg1VideoStream_<br>MFDSUtils::FindSpecificPin<br>MFDSUtils::GetConnectionInfo<br>MFDSUtils::IsOrphaned<br>MFDSUtils::RemoveFilter<br>MFDSUtils::RemoveLeafNodeAndExclusiveParents<br>McTemplateU0pd_EventWriteTransfer<br>McTemplateU0pdds_EventWriteTransfer<br>McTemplateU0pdpd_EventWriteTransfer<br>McTemplateU0pdpi_EventWriteTransfer<br>McTemplateU0pdpid_EventWriteTransfer<br>McTemplateU0pdppdd_EventWriteTransfer<br>McTemplateU0piiiiiiiidd_EventWriteTransfer<br>McTemplateU0ppd_EventWriteTransfer<br>McTemplateU0s4pu_EventWriteTransfer<br>McTemplateU0s4pupippqqi_EventWriteTransfer<br>MediaSubTypeTransform<br>Mpg2DemuxInit<br>ParseDDPLUSHeader<br>PerflogReadModuleLevel<br>SymCryptRc4Init<br>TraceLoggingRegisterEx_EventRegister_EventSetInformation<br>TracingFailureCache::Add<br>TracingFailureCache::FindMatch<br>TracingFailureCache::TraceFailure<br>_GetDemuxFilterFromPin<br>_GetDemuxOutputPinByMajorType<br>_MFGetService<br>_RenderDemuxPSPin<br>_RenderDemuxPin<br>__GSHandlerCheckCommon<br>_tlgWriteTemplate<long___cdecl(_tlgProvider_t_const*___ptr64,void_const*___ptr64,_GUID_const*___ptr64,_GUID_const*___ptr64,unsigned_int,_EVENT_DATA_DESCRIPTOR*___ptr64),&long___cdecl__tlgWriteTransfer_EventWriteTransfer(struct__tlgProvider_t_const*___ptr64,void_const*___ptr64,struct__GUID_const*___ptr64,struct__GUID_const*___ptr64,unsigned_int,struct__EVENT_DATA_DESCRIPTOR*___ptr64),_GUID_const*___ptr64,_GUID_const*___ptr64>::Write<_tlgWrapperByRef<16>,_tlgWrapperByVal<4>,_tlgWrapperByVal<4>,_tlgWrapperByVal<4>,_tlgWrapperByVal<4>_><br>crcCheck<br>wil::GetFailureLogString<br>wil::details::GetModuleInformation<br>wil::details::ReportFailure_Return<1><br>wil::details::ReportFailure_Return<2><br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Acquire<br>wil::details_abi::SemaphoreValue::CreateFromValueInternal<br>wil::details_abi::SemaphoreValue::TryGetValueInternal</details>|<details><summary>Expand for full list:<br>AMovieDllRegisterServer2<br>AMovieSetupRegisterServer<br>AMovieSetupUnregisterServer<br>ATL::AtlRegisterClassCategoriesHelper<br>ATL::CAtlModule::UpdateRegistryFromResourceS<br>ATL::CAtlModule::UpdateRegistryFromResourceS<br>ATL::CRegKey::RecurseDeleteKey<br>ATL::CRegObject::RegisterFromResource<br>ATL::CRegParser::AddValue<br>ATL::CRegParser::PreProcessBuffer<br>ATL::CRegParser::RegisterBuffer</summary>ATL::CRegParser::RegisterSubkeys<br>ATL::CRegParser::SkipAssignment<br>BufferWriter::CBufferWriter::CreateInstance<br>CBDAMPEG2Demux::CreatePin<br>CBDAMPEG2Demux::CreateTopology<br>CBDAMPEG2Demux::DeletePin<br>CBDAMPEG2Demux::GetControlNode<br>CBDAMPEG2Demux::SetMediaType<br>CBaseOutputPin::DecideAllocator<br>CCodecInfo2MT::InitAC3AudioStream_<br>CCodecInfo2MT::InitBDAVLPCMAudioStream_<br>CCodecInfo2MT::InitDDPlusAudioStream_<br>CCodecInfo2MT::InitMpeg1VideoStream_<br>CCodecInfo2MT::InitMpeg2VideoStream_<br>CDSSampleSinkInputPin::ConvertDShowAttribToMF<br>CDSSampleSinkInputPin::Receive<br>CDSSampleSinkInputPin::ReceiveConnection<br>CDSSampleSinkInputPin::ReceiveSampleFromCPInternal<br>CDSSampleSinkInputPin::SetMediaTypeFromCPInternal<br>CDShowMPEG2Demux::SetOutputPinMediaType<br>CDShowSBEWrapper::BeginStart<br>CDShowSBEWrapper::CDShowSBEWrapper<br>CDShowSBEWrapper::ConnectSBEFilter<br>CDShowSBEWrapper::ConnectToSampleSinkPin<br>CDShowSBEWrapper::CreateGraph<br>CDShowSBEWrapper::FinalizeGraph<br>CDShowSBEWrapper::FireEx<br>CDShowSBEWrapper::GetCharacteristics<br>CDShowSBEWrapper::GetDuration<br>CDShowSBEWrapper::HookupGraphEventService<br>CDShowSBEWrapper::Initialize<br>CDShowSBEWrapper::RegisterForBroadcastEvents<br>CDShowSBEWrapper::SetPosition<br>CDShowSBEWrapper::UnRegisterForBroadcastEvents<br>CDShowSource::AdjustWrapperToPDSelections<br>CDShowSource::AdvisePeriodic<br>CDShowSource::AdviseTime<br>CDShowSource::BlockAllStreams<br>CDShowSource::BuildStreamInfo<br>CDShowSource::CDShowSource<br>CDShowSource::CreatePresentationDescriptor<br>CDShowSource::DoPause<br>CDShowSource::DoSetRate<br>CDShowSource::DoStart<br>CDShowSource::DoStop<br>CDShowSource::FireEOP<br>CDShowSource::GetCharacteristics<br>CDShowSource::GetFastestRate<br>CDShowSource::GetFullPathNameW<br>CDShowSource::GetInputTrustAuthority<br>CDShowSource::GetPresentationClock<br>CDShowSource::GetRate<br>CDShowSource::GetService<br>CDShowSource::GetSession<br>CDShowSource::GetShellPropertyStore<br>CDShowSource::GetSlowestRate<br>CDShowSource::InitializePlayReady<br>CDShowSource::IsRateSupported<br>CDShowSource::OnDShowWrapperPause<br>CDShowSource::OnDShowWrapperSetRate<br>CDShowSource::OnDShowWrapperStart<br>CDShowSource::OnDShowWrapperStop<br>CDShowSource::Pause<br>CDShowSource::SetD3DManager<br>CDShowSource::SetPresentationClock<br>CDShowSource::SetRate<br>CDShowSource::Shutdown<br>CDShowSource::Start<br>CDShowSource::Stop<br>CDShowSource::UnblockAllStreams<br>CDShowStream::IsAudioStream<br>CDShowStream::WaitForSampleRequest<br>CDShowTransInputPin::QueueOutputSample<br>CDShowTransPin::GoActive<br>CDShowWrapper::AddBlockedFilters<br>CDShowWrapper::AddPSIFilterToGraph<br>CDShowWrapper::BeginPause<br>CDShowWrapper::BeginSetRate<br>CDShowWrapper::BeginStart<br>CDShowWrapper::BeginStop<br>CDShowWrapper::CollectMediaTypes<br>CDShowWrapper::ConfigureDemux<br>CDShowWrapper::ConnectFromSampleSinkPool<br>CDShowWrapper::ConnectNewDSSampleSink<br>CDShowWrapper::ConnectPin<br>CDShowWrapper::ConnectSinkPool<br>CDShowWrapper::ConnectSourceToDemux<br>CDShowWrapper::ConnectSplittersAndDecryptors<br>CDShowWrapper::ConnectToSampleSinkPin<br>CDShowWrapper::ConnectUnconnectedPins<br>CDShowWrapper::CreateCustomDSSampleSink<br>CDShowWrapper::CreateDVDGraph<br>CDShowWrapper::CreateGraph<br>CDShowWrapper::CreateOutputSample<br>CDShowWrapper::CreatePreferredDecoderFilters<br>CDShowWrapper::CreatePreferredDemuxFilters<br>CDShowWrapper::CreatePreferredFilters<br>CDShowWrapper::D3D9ToD311Surface<br>CDShowWrapper::DestroyPreferredFilters<br>CDShowWrapper::DisconnectAndReconnectEVR<br>CDShowWrapper::DoRender<br>CDShowWrapper::EndPause<br>CDShowWrapper::EndSetRate<br>CDShowWrapper::EndStart<br>CDShowWrapper::EndStop<br>CDShowWrapper::FinalizeGraph<br>CDShowWrapper::GetCharacteristics<br>CDShowWrapper::GetContainerFormat<br>CDShowWrapper::GetDuration<br>CDShowWrapper::GetFastestRate<br>CDShowWrapper::GetSlowestRate<br>CDShowWrapper::Initialize<br>CDShowWrapper::InitializeSurfaceQueue<br>CDShowWrapper::InsertPreferredFilters<br>CDShowWrapper::NotifyFilterGraphEvent<br>CDShowWrapper::RebuildGraph<br>CDShowWrapper::RegisterServiceProviders<br>CDShowWrapper::RemoveAllFilters<br>CDShowWrapper::RemoveConnectedSinksFromPool<br>CDShowWrapper::RemoveUnusedPreferredFilters<br>CDShowWrapper::RemoveUnwantedBranches<br>CDShowWrapper::RunAndWaitForPSIGraph<br>CDShowWrapper::SelectSampleSink<br>CDShowWrapper::SetD3D11Resources<br>CDShowWrapper::SetDShowRate<br>CDShowWrapper::SetDXGIManager<br>CDShowWrapper::SetDolbyBinding<br>CDShowWrapper::SetPosition<br>CDShowWrapper::SetupDemux<br>CDShowWrapper::SetupFilterScreening<br>CDShowWrapper::SetupMFBytestreamSource<br>CDShowWrapper::SetupThreadpoolWait<br>CDShowWrapper::ShouldConnectPin<br>CDShowWrapper::StopGraph<br>CDShowWrapper::VerifyDvdPackage<br>CDemuxRender::RenderDemuxAudioVideoPins<br>CDemuxRender::RenderDemuxPSAudioVideoPins<br>CDisp::CDisp<br>CDisp::DumpPin<br>CEnumMediaTypes::Next<br>CEnumMediaTypes::Skip<br>CFilterPolice::BlockFilter<br>CFilterPolice::GetFileVersion<br>CFilterPolice::GetFilterFilename<br>CFilterPolice::IsBlockedFilter<br>CFilterPolice::SelectedFilter<br>CFilterPolice::UnblockFilter<br>CHEVCParser::GetSeqParameterSetHEVC<br>CHEVCParser::profile_tier_level<br>CMFAttributesImpl<IMFAttributes,CMFCSLock>::_Compare<br>CMFAttributesImpl<IMFAttributes,CWin32AttributeLock>::_Compare<br>CMFAttributesTrace::AppendPropVariant<br>CMFAttributesTrace::GetString<br>CMFEventTraceClassName::CMFEventTraceClassName<br>CMFPropVariant::Clear<br>CMFPropVariant::GetElementDataAsVariant<br>CMFSourceBufferingSupport::_ConfigureBuffering<br>CMFSourceBufferingSupport::_GetMaxBitrateFromDLNAProfileID<br>CMFSourceFilter::GetByteStreamMetadata<br>CMFSourceFilter::GetDuration<br>CMFSourceFilter::Load<br>CMFSourceFilter::Load<br>CMFSourceFilter::OnObjectCreated<br>CMFSourceFilter::StopBackgroundTransfer<br>CMFSourceFilter::StopBuffering<br>CMFSourceFilter::_CheckBytes<br>CMFSourceFilter::_CheckIfMPEG2TS<br>CMFSourceFilter::_GetMediaTypeStream<br>CMFSourceFilter::_ShouldUsePushMode<br>CMFSourceMPEG2TSPin::ARIBDemux_ReadARIBPacket<br>CMFSourceMPEG2TSPin::ARIBDemux_SyncRead<br>CMFSourceMPEG2TSPin::Active<br>CMFSourceMPEG2TSPin::DecideBufferSize<br>CMFSourceMPEG2TSPin::DoBufferProcessingLoop<br>CMFSourceMPEG2TSPin::FillBuffer<br>CMFSourceMPEG2TSPin::Length<br>CMFSourceMPEG2TSPin::OnBufferedRead<br>CMFSourceMPEG2TSPin::OnEvent<br>CMFSourceMPEG2TSPin::OnSyncRead<br>CMFSourceMPEG2TSPin::OnThreadCreate<br>CMFSourceMPEG2TSPin::SetUseCircularBuffer<br>CMFSourceMPEG2TSPin::SyncRead<br>CMFSourceMPEG2TSPin::ThreadProc<br>CMFSourceMPEG2TSPin::_BufferedSyncReadNoLock<br>CMFSourceMPEG2TSPin::_EnableBuffering<br>CMFSourceMPEG2TSPin::_GetBitrate<br>CMFSourceMPEG2TSPin::_SyncRead<br>CMFSourceOutputPin::Active<br>CMFSourceOutputPin::BeginFlush<br>CMFSourceOutputPin::Length<br>CMFSourceOutputPin::OnAsyncRead<br>CMFSourceOutputPin::OnEvent<br>CMFSourceOutputPin::OnFilterAbortOperation<br>CMFSourceOutputPin::OnSyncReadAsyncCallback::Invoke<br>CMFSourceOutputPin::Request<br>CMFSourceOutputPin::RequestAllocator<br>CMFSourceOutputPin::SyncRead<br>CMFSourceOutputPin::SyncReadAligned<br>CMFSourceOutputPin::_AsyncRead<br>CMFSourceOutputPin::_CompleteAsyncReadCallback<br>CMFSourceOutputPin::_EnableBuffering<br>CMFSourceOutputPin::_GetBitrate<br>CMFSourceOutputPin::_SyncRead<br>CMPEG2Controller::GetPayloadParser_<br>CMPEG2Controller::InitPullModeStream<br>CMPEG2Controller::MapStream<br>CMPEG2Demultiplexer::CreateStreamMap_<br>CMPEG2Demultiplexer::PersistOutputPin_<br>CMPEG2Demultiplexer::PersistPinStreamIdMaps_<br>CMPEG2Demultiplexer::ProcessMediaSampleLocked<br>CMPEG2Demultiplexer::RestoreOutputPin_<br>CMPEG2Demultiplexer::RestorePinStreamIdMaps_<br>CMPEG2DemuxOutputPin::DecideAllocator<br>CMPEG2DemuxOutputPin::DecideBufferSize<br>CMPEG2DemuxOutputPin::InternalSendInbandSpanningEvent<br>CMPEG2DemuxOutputPin::SendSample<br>CMPEG2PushClock::MediaSampleTimesFromPTS<br>CMacroVision::MakeMVFilterList<br>CMediaSampleCopyBuffer::CMediaSampleCopyBuffer<br>CMediaSampleCopyBuffer::CompleteCopyBuffer<br>CMediaSampleCopyBuffer::SendSample<br>CMp2PullPin::Connect<br>CMp2PullPin::Process<br>CMpeg2DemuxMediaSeekingCOM::IsUsingTimeFormat<br>CMpeg2PCRParser::ProcessSysBuffer<br>CMpeg2ProgramStreamAnalyzer::AnalyzePESPacket_<br>CMpeg2PullTransportStreamAnalyzer::AnalyzeTSPacket_<br>CMpeg2SCRParser::ProcessSysBuffer<br>CMpeg2Stats::Initialize<br>CPATProcessor::MapPmtPid<br>CPATProcessor::UnmapPmtPid<br>CPATProcessor::store<br>CPMTProcessor::store<br>CPbdaTagTableHandler::AssembleTagAttribute<br>CPersistStream::Save<br>CPsiParserInputPin::Receive<br>CSampleRequestQueueProtected::FireCPEventsIfNeeded<br>CSourceStream::CheckMediaType<br>CSurfaceQueueDeviceD3D9::CopySurface<br>CSurfaceQueueDeviceDXGI::CopySurface<br>CSurfaceQueueDeviceDXGI::CreateCopyResource<br>CSurfaceQueueDeviceDXGI::CreateSharedSurface<br>CSurfaceQueueDeviceDXGI::Initialize<br>CTAGPacket::IsPBDA_TAG_Packet<br>CTransportStreamMapper::ProcessTSPacket_<br>CUri::GetKnownScheme<br>CWTVByteStreamPlugin::RecordingTypeFromSignature<br>CreateBindingBlob<br>CreateBufferWriterEvent<br>D3DPresentEngine::CheckFormat<br>D3DPresentEngine::CreateD3DDevice<br>D3DPresentEngine::UpdateDestRect<br>EVRCustomPresenter::CalculateDisplayRectangle<br>EVRCustomPresenter::CalculateOutputRectangle<br>EVRCustomPresenter::ConfigureMixer<br>EVRCustomPresenter::CreateOptimalVideoType<br>EVRCustomPresenter::IsMediaTypeSupported<br>EVRCustomPresenter::SetVideoPosition<br>EliminateSubKey<br>FindFirstAc3Frame<br>FormCaptureFilename<br>GetFourCC<br>GetPCRFromTSPacket<br>GetPinDirection<br>GetStreamTypeForMFMediaType<br>HashToString<br>InitMpeg1VideoStream_<br>MFDSUtils::FindSpecificPin<br>MFDSUtils::GetConnectionInfo<br>MFDSUtils::IsOrphaned<br>MFDSUtils::RemoveFilter<br>MFDSUtils::RemoveLeafNodeAndExclusiveParents<br>McTemplateU0pd_EventWriteTransfer<br>McTemplateU0pdds_EventWriteTransfer<br>McTemplateU0pdpd_EventWriteTransfer<br>McTemplateU0pdpi_EventWriteTransfer<br>McTemplateU0pdpid_EventWriteTransfer<br>McTemplateU0pdppdd_EventWriteTransfer<br>McTemplateU0piiiiiiiidd_EventWriteTransfer<br>McTemplateU0ppd_EventWriteTransfer<br>McTemplateU0s4pu_EventWriteTransfer<br>McTemplateU0s4pupippqqi_EventWriteTransfer<br>MediaSubTypeTransform<br>Mpg2DemuxInit<br>ParseDDPLUSHeader<br>PerflogReadModuleLevel<br>SymCryptRc4Init<br>TraceLoggingRegisterEx_EventRegister_EventSetInformation<br>TracingFailureCache::Add<br>TracingFailureCache::FindMatch<br>TracingFailureCache::TraceFailure<br>_GetDemuxFilterFromPin<br>_GetDemuxOutputPinByMajorType<br>_MFGetService<br>_RenderDemuxPSPin<br>_RenderDemuxPin<br>__GSHandlerCheckCommon<br>_tlgWriteTemplate<long___cdecl(_tlgProvider_t_const*___ptr64,void_const*___ptr64,_GUID_const*___ptr64,_GUID_const*___ptr64,unsigned_int,_EVENT_DATA_DESCRIPTOR*___ptr64),&long___cdecl__tlgWriteTransfer_EventWriteTransfer(struct__tlgProvider_t_const*___ptr64,void_const*___ptr64,struct__GUID_const*___ptr64,struct__GUID_const*___ptr64,unsigned_int,struct__EVENT_DATA_DESCRIPTOR*___ptr64),_GUID_const*___ptr64,_GUID_const*___ptr64>::Write<_tlgWrapperByRef<16>,_tlgWrapperByVal<4>,_tlgWrapperByVal<4>,_tlgWrapperByVal<4>,_tlgWrapperByVal<4>_><br>crcCheck<br>wil::GetFailureLogString<br>wil::details::GetModuleInformation<br>wil::details::ReportFailure_Return<1><br>wil::details::ReportFailure_Return<2><br>wil::details_abi::ProcessLocalStorageData<wil::details_abi::ProcessLocalData>::Acquire<br>wil::details_abi::SemaphoreValue::CreateFromValueInternal<br>wil::details_abi::SemaphoreValue::TryGetValueInternal<br>wil_details_RecordCachedUsage</details>|
|paramcount|1|1|
|`address`|180054290|1800544d0|
|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
@@ -317,0 +318 @@
+wil_details_RecordCachedUsage
```


## API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive

### Match Info



|Key|mfds-06.dll - mfds-07.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|mfds-06.dll|mfds-07.dll|
| :---: | :---: | :---: |
|name|ReleaseSRWLockExclusive|ReleaseSRWLockExclusive|
|fullname|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive|
|`refcount`|13|14|
|length|0|0|
|called|||
|`calling`|CDShowTransInputPin::QueueOutputSample<br>CDShowTransform::ProcessOutput<br>CReadWriteLock::CAcquireExclusiveLock::~CAcquireExclusiveLock<br>CSurfaceProducer::~CSurfaceProducer<br>CSurfaceQueue::Clone<br>CSurfaceQueue::OpenConsumer<br>CSurfaceQueue::OpenProducer<br>CSurfaceQueue::RemoveConsumer<br>CThreadSafeAtlList<IMFSample*___ptr64>::RemoveHead|CDShowTransInputPin::QueueOutputSample<br>CDShowTransform::ProcessOutput<br>CReadWriteLock::CAcquireExclusiveLock::~CAcquireExclusiveLock<br>CSurfaceProducer::~CSurfaceProducer<br>CSurfaceQueue::Clone<br>CSurfaceQueue::OpenConsumer<br>CSurfaceQueue::OpenProducer<br>CSurfaceQueue::RemoveConsumer<br>CThreadSafeAtlList<IMFSample*___ptr64>::RemoveHead<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>_>|
|paramcount|1|1|
|`address`|EXTERNAL:00000050|EXTERNAL:00000041|
|sig|void __stdcall ReleaseSRWLockExclusive(PSRWLOCK SRWLock)|void __stdcall ReleaseSRWLockExclusive(PSRWLOCK SRWLock)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive Calling Diff


```diff
--- API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive calling
+++ API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive calling
@@ -9,0 +10 @@
+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>_>
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-08-28T15:46:24</sub>