# fdw_8521.dll-fdw_8655.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::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState](#wildetailsfeatureimplstruct___wilfeaturetraits_feature_1973155129getcachedfeatureenabledstate)
	* [wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCurrentFeatureEnabledState](#wildetailsfeatureimplstruct___wilfeaturetraits_feature_1973155129getcurrentfeatureenabledstate)
	* [wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage](#wildetailsfeatureimplstruct___wilfeaturetraits_feature_1973155129reportusage)
	* [wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled](#wildetailsfeatureimplstruct___wilfeaturetraits_feature_1973155129__private_isenabled)
* [Modified](#modified)
	* [CWSDiscoveryProvider::~CWSDiscoveryProvider](#cwsdiscoveryprovidercwsdiscoveryprovider)
	* [CWSDiscoveryProvider::GetWsdSearchParams](#cwsdiscoveryprovidergetwsdsearchparams)
	* [CWSDiscoveryProvider::IsInterestedInMex](#cwsdiscoveryproviderisinterestedinmex)
	* [CWSDiscoveryProvider::IsInterestedInDevice](#cwsdiscoveryproviderisinterestedindevice)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection](#api-ms-win-core-synch-l1-1-0dllentercriticalsection)
	* [GetClientCertificate](#getclientcertificate)
	* [API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive](#api-ms-win-core-synch-l1-1-0dllacquiresrwlockexclusive)
	* [push_back](#push_back)
	* [WPP_SF_sqP](#wpp_sf_sqp)
	* [EnsureSubscribedToFeatureConfigurationChanges](#ensuresubscribedtofeatureconfigurationchanges)
	* [Clone](#clone)
	* [`scalar_deleting_destructor'](#scalar_deleting_destructor)
	* [WilApi_GetFeatureEnabledState](#wilapi_getfeatureenabledstate)
	* [ReportUsageToService](#reportusagetoservice)
	* [API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection](#api-ms-win-core-synch-l1-1-0dllleavecriticalsection)
	* [~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_storagestruct_wildetailsresource_policystruct__rtl_srwlock___ptr64void___cdeclstruct__rtl_srwlock___ptr64void___cdecl_releasesrwlockexclusivestruct__rtl_srwlock___ptr64struct_wistdintegral_constantunsigned___int641struct__rtl_srwlock___ptr64struct__rtl_srwlock___ptr640stdnullptr_t_)

# Visual Chart Diff



```mermaid

flowchart LR

CWSDiscoveryProviderCWSDiscoveryProvider-1-old<--Match 92%-->CWSDiscoveryProviderCWSDiscoveryProvider-1-new
CWSDiscoveryProviderGetWsdSearchParams-2-old<--Match 73%-->CWSDiscoveryProviderGetWsdSearchParams-2-new
CWSDiscoveryProviderIsInterestedInMex-5-old<--Match 89%-->CWSDiscoveryProviderIsInterestedInMex-5-new
CWSDiscoveryProviderIsInterestedInDevice-5-old<--Match 73%-->CWSDiscoveryProviderIsInterestedInDevice-5-new

subgraph fdw_8655.dll
    CWSDiscoveryProviderCWSDiscoveryProvider-1-new
CWSDiscoveryProviderGetWsdSearchParams-2-new
CWSDiscoveryProviderIsInterestedInMex-5-new
CWSDiscoveryProviderIsInterestedInDevice-5-new
    subgraph Added
direction LR
wil-details-FeatureImplstruct___WilFeatureTraits_Feature_1973155129-GetCachedFeatureEnabledState
    wil-details-FeatureImplstruct___WilFeatureTraits_Feature_1973155129-GetCurrentFeatureEnabledState
    wil-details-FeatureImplstruct___WilFeatureTraits_Feature_1973155129-ReportUsage
    wil-details-FeatureImplstruct___WilFeatureTraits_Feature_1973155129-__private_IsEnabled
end
end

subgraph fdw_8521.dll
    CWSDiscoveryProviderCWSDiscoveryProvider-1-old
CWSDiscoveryProviderGetWsdSearchParams-2-old
CWSDiscoveryProviderIsInterestedInMex-5-old
CWSDiscoveryProviderIsInterestedInDevice-5-old
    
end

```


```mermaid
pie showData
    title Function Matches - 99.7640%
"unmatched_funcs_len" : 4
"matched_funcs_len" : 1691
```



```mermaid
pie showData
    title Matched Function Similarity - 99.0538%
"matched_funcs_with_code_changes_len" : 4
"matched_funcs_with_non_code_changes_len" : 12
"matched_funcs_no_changes_len" : 1675
```

# 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 fdw_8521.dll fdw_8655.dll
```


#### Verbose Args


<details>

```
--old ['fdw_8521.dll'] --new [['fdw_8655.dll']] --engine VersionTrackingDiff --output-path fdw_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/FDWSD.dll/42A6445D32000/FDWSD.dll -O fdwsd.dll.x64.10.0.26100.8521
wget https://msdl.microsoft.com/download/symbols/FDWSD.dll/8E5D585932000/FDWSD.dll -O fdwsd.dll.x64.10.0.26100.8655
```


## Binary Metadata Diff


```diff
--- fdw_8521.dll Meta
+++ fdw_8655.dll Meta
@@ -1,44 +1,44 @@
-Program Name: fdw_8521.dll
+Program Name: fdw_8655.dll
 Language ID: x86:LE:64:default (4.6)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 180000000
 Maximum Address: ff0000184f
-# of Bytes: 208048
+# of Bytes: 208080
 # of Memory Blocks: 10
-# of Instructions: 33594
-# of Defined Data: 2024
-# of Functions: 845
-# of Symbols: 6217
-# of Data Types: 791
+# of Instructions: 33934
+# of Defined Data: 2029
+# of Functions: 850
+# of Symbols: 6255
+# of Data Types: 792
 # of Data Type Categories: 46
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.0.4
-Date Created: Sat Aug 22 11:18:45 SGT 2026
+Date Created: Sat Aug 22 11:18:49 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /tmp/fdw/fdw_8521.dll
-Executable MD5: 3bd685f5c2ed00180fdc96517c91fd24
-Executable SHA256: 3d81de5e3cc660c5c5af8c21fa1d2659ed8385549bfd1c0524a495a1315096e4
-FSRL: file:///tmp/fdw/fdw_8521.dll?MD5=3bd685f5c2ed00180fdc96517c91fd24
+Executable Location: /tmp/fdw/fdw_8655.dll
+Executable MD5: ea20dd51a61d1549fa06e204e712e911
+Executable SHA256: 11ecb60ad305be2738d5b3b3e821943385ba9bcba00c146b7517f1f9f3d9741d
+FSRL: file:///tmp/fdw/fdw_8655.dll?MD5=ea20dd51a61d1549fa06e204e712e911
 PDB Age: 1
 PDB File: fdWSD.pdb
-PDB GUID: ff0bd6ac-5549-c7c1-0532-a3ab921f2dd3
+PDB GUID: d61f9da0-cf0a-a252-27ba-2e9d17f36ee6
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: Function Discovery WS Discovery Provider Dll
-PE Property[FileVersion]: 10.0.26100.8521 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.26100.8655 (WinBuild.160101.0800)
 PE Property[InternalName]: FDWSD
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: FDWSD.dll
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.26100.8521
+PE Property[ProductVersion]: 10.0.26100.8655
 PE Property[Translation]: 4b00409
 Preferred Root Namespace Category: 
 RTTI Found: false
 Relocatable: true
 SectionAlignment: 4096
 Should Ask To Analyze: false

```


## Program Options


<details>
<summary>Ghidra fdw_8521.dll Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra fdw_8521.dll Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra fdw_8521.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.Apply Function Calling Conventions|true|
|Demangler Microsoft.Apply Function Signatures|true|
|Demangler Microsoft.C-Style Symbol Interpretation|FUNCTION_IF_EXISTS|
|Demangler Microsoft.Demangle Only Known Mangled Symbols|false|
|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 fdw_8655.dll Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra fdw_8655.dll Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra fdw_8655.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.Apply Function Calling Conventions|true|
|Demangler Microsoft.Apply Function Signatures|true|
|Demangler Microsoft.C-Style Symbol Interpretation|FUNCTION_IF_EXISTS|
|Demangler Microsoft.Demangle Only Known Mangled Symbols|false|
|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|4|
|deleted_funcs_len|0|
|modified_funcs_len|16|
|added_symbols_len|3|
|deleted_symbols_len|1|
|diff_time|2.0757992267608643|
|deleted_strings_len|0|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 842, 'ExternalsName': 190, 'BulkInstructionHash': 1, 'SigCallingCalledHasher': 1})|
|items_to_process|24|
|diff_types|Counter({'refcount': 12, 'address': 11, 'calling': 8, 'length': 5, 'called': 5, 'code': 4})|
|unmatched_funcs_len|4|
|total_funcs_len|1695|
|matched_funcs_len|1691|
|matched_funcs_with_code_changes_len|4|
|matched_funcs_with_non_code_changes_len|12|
|matched_funcs_no_changes_len|1675|
|match_func_similarity_percent|99.0538%|
|func_match_overall_percent|99.7640%|
|first_matches|Counter({'SymbolsHash': 842, 'BulkInstructionHash': 1, 'SigCallingCalledHasher': 1})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 842
"ExternalsName" : 190
"BulkInstructionHash" : 1
"SigCallingCalledHasher" : 1
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 842
"BulkInstructionHash" : 1
"SigCallingCalledHasher" : 1
```



```mermaid
pie showData
    title Diff Stats
"added_funcs_len" : 4
"deleted_funcs_len" : 0
"modified_funcs_len" : 16
```



```mermaid
pie showData
    title Symbols
"added_symbols_len" : 3
"deleted_symbols_len" : 1
```

## Strings


*No string differences found*

# Deleted

# Added

## wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState

### Function Meta



|Key|fdw_8655.dll|
| :---: | :---: |
|name|GetCachedFeatureEnabledState|
|fullname|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState|
|refcount|3|
|length|302|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive<br>wil::details::EnsureSubscribedToFeatureConfigurationChanges<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCurrentFeatureEnabledState<br>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>_><br>wil::details_abi::heap_buffer::push_back|
|calling|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled|
|paramcount|1|
|address|18000af88|
|sig|wil_details_FeatureStateCache __thiscall GetCachedFeatureEnabledState(FeatureImpl<struct___WilFeatureTraits_Feature_1973155129> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState
+++ wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState
@@ -0,0 +1,81 @@
+
+/* WARNING: Removing unreachable block (ram,0x00018000afe3) */
+/* WARNING: Removing unreachable block (ram,0x00018000afe8) */
+/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState(void) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::
+GetCachedFeatureEnabledState(FeatureImpl<struct___WilFeatureTraits_Feature_1973155129> *this)
+
+{
+  uint uVar1;
+  uint uVar2;
+  uint uVar3;
+  uint uVar4;
+  uint *in_RDX;
+  bool bVar5;
+  uint local_res18 [2];
+  undefined *local_res20;
+  undefined4 local_38;
+  undefined4 local_34;
+  undefined4 *local_30;
+  
+  in_RDX[0] = 0;
+  uVar3 = Feature_1973155129__private_cppFeatureState;
+  in_RDX[1] = 0;
+  *in_RDX = Feature_1973155129__private_cppFeatureState;
+  if (((byte)uVar3 & 6) == 6) {
+    return;
+  }
+  uVar2 = EnsureSubscribedToFeatureConfigurationChanges();
+  GetCurrentFeatureEnabledState(this,(int *)local_res18);
+  uVar3 = *in_RDX;
+  do {
+    uVar1 = uVar3;
+    uVar4 = uVar1 | 0x40000;
+    *in_RDX = uVar4;
+    if ((uVar1 & 4) == 0) {
+      uVar4 = uVar1 & 0xfffffbff | 0x40000 | local_res18[0] & 0x400 | 4;
+      *in_RDX = uVar4;
+    }
+    LOCK();
+    bVar5 = uVar1 != Feature_1973155129__private_cppFeatureState;
+    uVar3 = uVar1;
+    if (bVar5) {
+      uVar3 = Feature_1973155129__private_cppFeatureState;
+      uVar4 = Feature_1973155129__private_cppFeatureState;
+    }
+    Feature_1973155129__private_cppFeatureState = uVar4;
+    UNLOCK();
+  } while (bVar5);
+  if (((uVar1 & 4) != 0) || (_g_enabledStateManager == 0)) goto LAB_18000b08f;
+  AcquireSRWLockExclusive((PSRWLOCK)&DAT_18002b2f0);
+  local_res20 = &DAT_18002b2f0;
+  if ((uVar2 == 0) || (uVar2 != DAT_18002b304)) {
+LAB_18000b082:
+    LOCK();
+    Feature_1973155129__private_cppFeatureState =
+         Feature_1973155129__private_cppFeatureState & 0xfffffffb;
+    UNLOCK();
+  }
+  else {
+    local_34 = 0;
+    local_38 = 3;
+    local_30 = &Feature_1973155129__private_cppFeatureState;
+    bVar5 = details_abi::heap_buffer::push_back((heap_buffer *)&DAT_18002b328,&local_38,0x10);
+    if (!bVar5) goto LAB_18000b082;
+  }
+  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>_>
+            ((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>_>
+              *)&local_res20);
+LAB_18000b08f:
+  if ((*in_RDX & 2) == 0) {
+    *in_RDX = *in_RDX & 0xfffff63e | local_res18[0] & 0x9c1;
+  }
+  return;
+}
+

```


## wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCurrentFeatureEnabledState

### Function Meta



|Key|fdw_8655.dll|
| :---: | :---: |
|name|GetCurrentFeatureEnabledState|
|fullname|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCurrentFeatureEnabledState|
|refcount|2|
|length|174|
|called|wil::details::WilApi_GetFeatureEnabledState|
|calling|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState|
|paramcount|2|
|address|18000be88|
|sig|wil_details_FeatureStateCache __thiscall GetCurrentFeatureEnabledState(FeatureImpl<struct___WilFeatureTraits_Feature_1973155129> * this, int * param_1)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCurrentFeatureEnabledState
+++ wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCurrentFeatureEnabledState
@@ -0,0 +1,45 @@
+
+/* private: union wil_details_FeatureStateCache __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_1973155129>::GetCurrentFeatureEnabledState(int * __ptr64) __ptr64 */
+
+int * __thiscall
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::
+GetCurrentFeatureEnabledState
+          (FeatureImpl<struct___WilFeatureTraits_Feature_1973155129> *this,int *param_1)
+
+{
+  bool bVar1;
+  FEATURE_ENABLED_STATE FVar2;
+  uint uVar3;
+  uint uVar4;
+  uint uVar5;
+  uint uVar6;
+  int *in_R8;
+  
+  FVar2 = WilApi_GetFeatureEnabledState(0x3a13803,(FEATURE_CHANGE_TIME)param_1,in_R8);
+  param_1[0] = 0;
+  param_1[1] = 0;
+  uVar5 = -(uint)((FVar2 & 0x40) != 0) & 0x800 | -(uint)((FVar2 & 0x80) != 0) & 0x400;
+  uVar6 = uVar5 | (FVar2 & 3) << 7;
+  *param_1 = uVar6;
+  if ((FVar2 & 0xffffff3f) == 0) {
+    uVar3 = 0x40;
+  }
+  else {
+    uVar3 = 0;
+    if ((FVar2 & 0xffffff3f) == 2) {
+      uVar3 = 0x40;
+    }
+  }
+  bVar1 = false;
+  uVar4 = 1;
+  if ((uVar5 == 0xc00) || (uVar3 != 0)) {
+    bVar1 = true;
+  }
+  if ((uVar3 == 0) || (!bVar1)) {
+    uVar4 = 0;
+  }
+  *param_1 = uVar6 | uVar3 | uVar4;
+  return param_1;
+}
+

```


## wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage

### Function Meta



|Key|fdw_8655.dll|
| :---: | :---: |
|name|ReportUsage|
|fullname|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage|
|refcount|2|
|length|126|
|called|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState<br>wil::details::ReportUsageToService|
|calling|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled|
|paramcount|4|
|address|180011d64|
|sig|void __thiscall ReportUsage(FeatureImpl<struct___WilFeatureTraits_Feature_1973155129> * this, bool param_1, ReportingKind param_2, __uint64 param_3)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage
+++ wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage
@@ -0,0 +1,32 @@
+
+/* public: void __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_1973155129>::ReportUsage(bool,enum wil::ReportingKind,unsigned
+   __int64) __ptr64 */
+
+void __thiscall
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage
+          (FeatureImpl<struct___WilFeatureTraits_Feature_1973155129> *this,bool param_1,
+          ReportingKind param_2,__uint64 param_3)
+
+{
+  ulonglong *puVar1;
+  ulonglong uVar2;
+  undefined4 local_res8;
+  undefined2 local_resc;
+  wil_ReportingKind in_stack_ffffffffffffffd8;
+  __uint64 in_stack_ffffffffffffffe0;
+  
+  uVar2 = (ulonglong)Feature_1973155129__private_cppFeatureState;
+  if ((Feature_1973155129__private_cppFeatureState & 4) == 0) {
+    puVar1 = (ulonglong *)GetCachedFeatureEnabledState(this);
+    uVar2 = *puVar1;
+  }
+  local_res8 = 0;
+  local_resc = 2;
+  ReportUsageToService
+            ((wil_details_FeatureReportingCache *)(this + 8),0x3a13803,(uint)uVar2 >> 10 & 1,
+             (uint)(uVar2 >> 0xb) & 1,(FEATURE_LOGGED_TRAITS *)&local_res8,(uint)param_1,
+             in_stack_ffffffffffffffd8,in_stack_ffffffffffffffe0);
+  return;
+}
+

```


## wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled

### Function Meta



|Key|fdw_8655.dll|
| :---: | :---: |
|name|__private_IsEnabled|
|fullname|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled|
|refcount|6|
|length|53|
|called|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage|
|calling|CWSDiscoveryProvider::GetClientCertificate<br>CWSDiscoveryProvider::GetWsdSearchParams<br>CWSDiscoveryProvider::IsInterestedInDevice<br>CWSDiscoveryProvider::IsInterestedInMex<br>CWSDiscoveryProvider::~CWSDiscoveryProvider|
|paramcount|1|
|address|180013fc4|
|sig|bool __thiscall __private_IsEnabled(FeatureImpl<struct___WilFeatureTraits_Feature_1973155129> * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled
+++ wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled
@@ -0,0 +1,18 @@
+
+/* public: bool __cdecl wil::details::FeatureImpl<struct
+   __WilFeatureTraits_Feature_1973155129>::__private_IsEnabled(void) __ptr64 */
+
+bool __thiscall
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled
+          (FeatureImpl<struct___WilFeatureTraits_Feature_1973155129> *this)
+
+{
+  ReportingKind in_R8D;
+  __uint64 in_R9;
+  undefined1 local_res10;
+  
+  GetCachedFeatureEnabledState(this);
+  ReportUsage(this,(bool)(local_res10 & 1),in_R8D,in_R9);
+  return (bool)(local_res10 & 1);
+}
+

```


# Modified


*Modified functions contain code changes*
## CWSDiscoveryProvider::~CWSDiscoveryProvider

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|code,length,called|
|ratio|0.88|
|i_ratio|0.8|
|m_ratio|0.92|
|b_ratio|0.92|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|~CWSDiscoveryProvider|~CWSDiscoveryProvider|
|fullname|CWSDiscoveryProvider::~CWSDiscoveryProvider|CWSDiscoveryProvider::~CWSDiscoveryProvider|
|refcount|3|3|
|`length`|593|688|
|`called`|<details><summary>Expand for full list:<br>API-MS-WIN-CORE-COM-L1-1-0.DLL::CoTaskMemFree<br>API-MS-WIN-CORE-COM-L1-1-0.DLL::PropVariantClear<br>API-MS-WIN-CORE-HANDLE-L1-1-0.DLL::CloseHandle<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::DeleteCriticalSection<br>ATL::CComAutoDeleteCriticalSection::~CComAutoDeleteCriticalSection<br>CCoMemString::~CCoMemString<br>CContextTable::~CContextTable<br>CPnpxProviderBase::~CPnpxProviderBase<br>CRYPT32.DLL::CertFreeCertificateContext<br>CWSDiscoveryProvider::EndQuery<br>CWsdSearchParams::`scalar_deleting_destructor'</summary>ReleaseFdphost<br>WPP_SF_sq<br>operator_delete[]</details>|<details><summary>Expand for full list:<br>API-MS-WIN-CORE-COM-L1-1-0.DLL::CoTaskMemFree<br>API-MS-WIN-CORE-COM-L1-1-0.DLL::PropVariantClear<br>API-MS-WIN-CORE-HANDLE-L1-1-0.DLL::CloseHandle<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::DeleteCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection<br>ATL::CComAutoDeleteCriticalSection::~CComAutoDeleteCriticalSection<br>CCoMemString::~CCoMemString<br>CContextTable::~CContextTable<br>CPnpxProviderBase::~CPnpxProviderBase<br>CRYPT32.DLL::CertFreeCertificateContext</summary>CWSDiscoveryProvider::EndQuery<br>CWsdSearchParams::`scalar_deleting_destructor'<br>ReleaseFdphost<br>WPP_SF_sq<br>operator_delete[]<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled</details>|
|calling|ATL::CComAggObject<class_CWSDiscoveryProvider>::~CComAggObject<class_CWSDiscoveryProvider><br>ATL::CComObject<class_CWSDiscoveryProvider>::~CComObject<class_CWSDiscoveryProvider>|ATL::CComAggObject<class_CWSDiscoveryProvider>::~CComAggObject<class_CWSDiscoveryProvider><br>ATL::CComObject<class_CWSDiscoveryProvider>::~CComObject<class_CWSDiscoveryProvider>|
|paramcount|1|1|
|address|1800079a0|1800079a0|
|sig|void __thiscall ~CWSDiscoveryProvider(CWSDiscoveryProvider * this)|void __thiscall ~CWSDiscoveryProvider(CWSDiscoveryProvider * this)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CWSDiscoveryProvider::~CWSDiscoveryProvider Called Diff


```diff
--- CWSDiscoveryProvider::~CWSDiscoveryProvider called
+++ CWSDiscoveryProvider::~CWSDiscoveryProvider called
@@ -4,0 +5,2 @@
+API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection
+API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection
@@ -14,0 +17 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled
```


### CWSDiscoveryProvider::~CWSDiscoveryProvider Diff


```diff
--- CWSDiscoveryProvider::~CWSDiscoveryProvider
+++ CWSDiscoveryProvider::~CWSDiscoveryProvider
@@ -1,85 +1,101 @@
 
 /* public: __cdecl CWSDiscoveryProvider::~CWSDiscoveryProvider(void) __ptr64 */
 
 void __thiscall CWSDiscoveryProvider::~CWSDiscoveryProvider(CWSDiscoveryProvider *this)
 
 {
   CContextTable *this_00;
+  bool bVar1;
   uint in_EDX;
   
   if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      (3 < (byte)WPP_GLOBAL_Control[0x19])) {
     in_EDX = 0xc;
     WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0xc,
-              &WPP_5d599eaa34fe3b0d4bedfe591b7b7abc_Traceguids);
+              &WPP_a67d4433caf939df88466131d913278f_Traceguids);
   }
   if (*(int *)(this + 0xf0) != 0) {
     EndQuery(this);
     *(undefined4 *)(this + 0xf0) = 0;
   }
-  if (*(CWsdSearchParams **)(this + 0x98) != (CWsdSearchParams *)0x0) {
+  bVar1 = wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::
+          __private_IsEnabled(&`private:_static_class_wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>&___ptr64___cdecl_wil::Feature<struct___WilFeatureTraits_Feature_1973155129>::GetImpl(void)'
+                               ::__l2::impl);
+  if (bVar1) {
+    if (*(int *)(this + 0xf4) != 0) {
+      EnterCriticalSection((LPCRITICAL_SECTION)(this + 0x128));
+    }
+    if (*(CWsdSearchParams **)(this + 0x98) != (CWsdSearchParams *)0x0) {
+      CWsdSearchParams::_scalar_deleting_destructor_(*(CWsdSearchParams **)(this + 0x98),in_EDX);
+      *(undefined8 *)(this + 0x98) = 0;
+    }
+    if (*(int *)(this + 0xf4) != 0) {
+      LeaveCriticalSection((LPCRITICAL_SECTION)(this + 0x128));
+    }
+  }
+  else if (*(CWsdSearchParams **)(this + 0x98) != (CWsdSearchParams *)0x0) {
     CWsdSearchParams::_scalar_deleting_destructor_(*(CWsdSearchParams **)(this + 0x98),in_EDX);
     *(undefined8 *)(this + 0x98) = 0;
   }
   if (*(LPVOID *)(this + 0xa0) != (LPVOID)0x0) {
     CoTaskMemFree(*(LPVOID *)(this + 0xa0));
     *(undefined8 *)(this + 0xa0) = 0;
   }
   if (*(LPVOID *)(this + 0xa8) != (LPVOID)0x0) {
     CoTaskMemFree(*(LPVOID *)(this + 0xa8));
     *(undefined8 *)(this + 0xa8) = 0;
   }
   if (*(PCCERT_CONTEXT *)(this + 200) != (PCCERT_CONTEXT)0x0) {
     CertFreeCertificateContext(*(PCCERT_CONTEXT *)(this + 200));
     *(undefined8 *)(this + 200) = 0;
   }
   if (*(LPVOID *)(this + 0xd0) != (LPVOID)0x0) {
     CoTaskMemFree(*(LPVOID *)(this + 0xd0));
     *(undefined8 *)(this + 0xd0) = 0;
     *(undefined4 *)(this + 0xd8) = 0;
   }
   if (*(LPVOID *)(this + 0xe0) != (LPVOID)0x0) {
     CoTaskMemFree(*(LPVOID *)(this + 0xe0));
     *(undefined8 *)(this + 0xe0) = 0;
   }
   if (*(LPVOID *)(this + 0xe8) != (LPVOID)0x0) {
     CoTaskMemFree(*(LPVOID *)(this + 0xe8));
     *(undefined8 *)(this + 0xe8) = 0;
   }
   this_00 = *(CContextTable **)(this + 0x118);
   if (this_00 != (CContextTable *)0x0) {
     CContextTable::~CContextTable(this_00);
     operator_delete__(this_00);
     *(undefined8 *)(this + 0x118) = 0;
   }
   if (*(int *)(this + 0xf4) != 0) {
     DeleteCriticalSection((LPCRITICAL_SECTION)(this + 0x128));
     ((LPCRITICAL_SECTION)(this + 0x128))->DebugInfo = (PRTL_CRITICAL_SECTION_DEBUG)0x0;
     *(undefined8 *)(this + 0x130) = 0;
     *(undefined8 *)(this + 0x138) = 0;
     *(undefined8 *)(this + 0x140) = 0;
     *(undefined8 *)(this + 0x148) = 0;
     DeleteCriticalSection((LPCRITICAL_SECTION)(this + 0x160));
     ((LPCRITICAL_SECTION)(this + 0x160))->DebugInfo = (PRTL_CRITICAL_SECTION_DEBUG)0x0;
     *(undefined8 *)(this + 0x168) = 0;
     *(undefined8 *)(this + 0x170) = 0;
     *(undefined8 *)(this + 0x178) = 0;
     *(undefined8 *)(this + 0x180) = 0;
     CloseHandle(*(HANDLE *)(this + 0x158));
     *(undefined8 *)(this + 0x158) = 0;
   }
   PropVariantClear((PROPVARIANT *)(this + 0x100));
   ReleaseFdphost();
   if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      (3 < (byte)WPP_GLOBAL_Control[0x19])) {
     WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0xd,
-              &WPP_5d599eaa34fe3b0d4bedfe591b7b7abc_Traceguids);
+              &WPP_a67d4433caf939df88466131d913278f_Traceguids);
   }
   CCoMemString::~CCoMemString((CCoMemString *)(this + 0xb8));
   CCoMemString::~CCoMemString((CCoMemString *)(this + 0xb0));
   CPnpxProviderBase::~CPnpxProviderBase((CPnpxProviderBase *)(this + 0x40));
   ATL::CComAutoDeleteCriticalSection::~CComAutoDeleteCriticalSection
             ((CComAutoDeleteCriticalSection *)(this + 0x10));
   return;
 }
 

```


## CWSDiscoveryProvider::GetWsdSearchParams

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.38|
|i_ratio|0.43|
|m_ratio|0.75|
|b_ratio|0.73|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|GetWsdSearchParams|GetWsdSearchParams|
|fullname|CWSDiscoveryProvider::GetWsdSearchParams|CWSDiscoveryProvider::GetWsdSearchParams|
|refcount|4|4|
|`length`|189|332|
|`called`|CWsdSearchParams::Clone<br>WPP_SF_sq<br>WPP_SF_sqd|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection<br>CWsdSearchParams::Clone<br>WPP_SF_sq<br>WPP_SF_sqd<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled|
|calling|CSourceList::AddSearch<br>CSourceList::RemoveSearch<br>CSourceList::SearchSingleSource|CSourceList::AddSearch<br>CSourceList::RemoveSearch<br>CSourceList::SearchSingleSource|
|paramcount|2|2|
|`address`|18000dce4|18000dfa4|
|sig|long __thiscall GetWsdSearchParams(CWSDiscoveryProvider * this, CWsdSearchParams * * param_1)|long __thiscall GetWsdSearchParams(CWSDiscoveryProvider * this, CWsdSearchParams * * param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CWSDiscoveryProvider::GetWsdSearchParams Called Diff


```diff
--- CWSDiscoveryProvider::GetWsdSearchParams called
+++ CWSDiscoveryProvider::GetWsdSearchParams called
@@ -0,0 +1,2 @@
+API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection
+API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection
@@ -3,0 +6 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled
```


### CWSDiscoveryProvider::GetWsdSearchParams Diff


```diff
--- CWSDiscoveryProvider::GetWsdSearchParams
+++ CWSDiscoveryProvider::GetWsdSearchParams
@@ -1,35 +1,64 @@
 
 /* public: long __cdecl CWSDiscoveryProvider::GetWsdSearchParams(class CWsdSearchParams * __ptr64 *
    __ptr64) __ptr64 */
 
 long __thiscall
 CWSDiscoveryProvider::GetWsdSearchParams(CWSDiscoveryProvider *this,CWsdSearchParams **param_1)
 
 {
+  LPCRITICAL_SECTION lpCriticalSection;
   long lVar1;
-  bool bVar2;
+  undefined2 uVar2;
+  bool bVar3;
   
   if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      (3 < (byte)WPP_GLOBAL_Control[0x19])) {
-    WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x4d,
-              &WPP_5d599eaa34fe3b0d4bedfe591b7b7abc_Traceguids);
+    WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x4e,
+              &WPP_a67d4433caf939df88466131d913278f_Traceguids);
   }
   if (param_1 == (CWsdSearchParams **)0x0) {
     lVar1 = -0x7fffbffd;
+LAB_0:
+    bVar3 = (byte)WPP_GLOBAL_Control[0x19] < 2;
   }
   else {
-    lVar1 = CWsdSearchParams::Clone(*(CWsdSearchParams **)(this + 0x98),param_1);
-    if (lVar1 == 0) {
-      bVar2 = (byte)WPP_GLOBAL_Control[0x19] < 4;
-      goto LAB_0;
+    bVar3 = wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::
+            __private_IsEnabled(&`private:_static_class_wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>&___ptr64___cdecl_wil::Feature<struct___WilFeatureTraits_Feature_1973155129>::GetImpl(void)'
+                                 ::__l2::impl);
+    if (bVar3) {
+      lpCriticalSection = (LPCRITICAL_SECTION)(this + 0x128);
+      EnterCriticalSection(lpCriticalSection);
+      if (*(CWsdSearchParams **)(this + 0x98) == (CWsdSearchParams *)0x0) {
+        LeaveCriticalSection(lpCriticalSection);
+        lVar1 = -0x7fffbffb;
+        if ((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
+          return -0x7fffbffb;
+        }
+        if ((byte)WPP_GLOBAL_Control[0x19] < 2) {
+          return -0x7fffbffb;
+        }
+        uVar2 = 0x4f;
+        goto LAB_1;
+      }
+      lVar1 = CWsdSearchParams::Clone(*(CWsdSearchParams **)(this + 0x98),param_1);
+      LeaveCriticalSection(lpCriticalSection);
     }
+    else {
+      lVar1 = CWsdSearchParams::Clone(*(CWsdSearchParams **)(this + 0x98),param_1);
+    }
+    if (lVar1 != 0) goto LAB_0;
+    bVar3 = (byte)WPP_GLOBAL_Control[0x19] < 4;
   }
-  bVar2 = (byte)WPP_GLOBAL_Control[0x19] < 2;
-LAB_0:
-  if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) && (!bVar2)) {
-    WPP_SF_sqd(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x4e,
-               &WPP_5d599eaa34fe3b0d4bedfe591b7b7abc_Traceguids);
+  if ((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
+    return lVar1;
   }
+  if (bVar3) {
+    return lVar1;
+  }
+  uVar2 = 0x50;
+LAB_1:
+  WPP_SF_sqd(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),uVar2,
+             &WPP_a67d4433caf939df88466131d913278f_Traceguids);
   return lVar1;
 }
 

```


## CWSDiscoveryProvider::IsInterestedInMex

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.55|
|i_ratio|0.47|
|m_ratio|0.91|
|b_ratio|0.89|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|IsInterestedInMex|IsInterestedInMex|
|fullname|CWSDiscoveryProvider::IsInterestedInMex|CWSDiscoveryProvider::IsInterestedInMex|
|refcount|3|3|
|`length`|459|566|
|`called`|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection<br>API-MS-WIN-CRT-PRIVATE-L1-1-0.DLL::_o__wcsicmp<br>WPP_SF_sq<br>WPP_SF_sqP<br>WPP_SF_sqS|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection<br>API-MS-WIN-CRT-PRIVATE-L1-1-0.DLL::_o__wcsicmp<br>WPP_SF_sq<br>WPP_SF_sqP<br>WPP_SF_sqS<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled|
|calling|CWsdWorker::IsMatchingQuery|CWsdWorker::IsMatchingQuery|
|paramcount|5|5|
|`address`|18000ee20|18000f208|
|sig|int __thiscall IsInterestedInMex(CWSDiscoveryProvider * this, ushort * param_1, int param_2, int param_3, ushort * param_4)|int __thiscall IsInterestedInMex(CWSDiscoveryProvider * this, ushort * param_1, int param_2, int param_3, ushort * param_4)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CWSDiscoveryProvider::IsInterestedInMex Called Diff


```diff
--- CWSDiscoveryProvider::IsInterestedInMex called
+++ CWSDiscoveryProvider::IsInterestedInMex called
@@ -6,0 +7 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled
```


### CWSDiscoveryProvider::IsInterestedInMex Diff


```diff
--- CWSDiscoveryProvider::IsInterestedInMex
+++ CWSDiscoveryProvider::IsInterestedInMex
@@ -1,71 +1,86 @@
 
 /* public: int __cdecl CWSDiscoveryProvider::IsInterestedInMex(unsigned short const *
    __ptr64,int,int,unsigned short const * __ptr64) __ptr64 */
 
 int __thiscall
 CWSDiscoveryProvider::IsInterestedInMex
           (CWSDiscoveryProvider *this,ushort *param_1,int param_2,int param_3,ushort *param_4)
 
 {
-  int iVar1;
-  uint uVar2;
+  LPCRITICAL_SECTION lpCriticalSection;
+  bool bVar1;
+  int iVar2;
+  uint uVar3;
   
-  uVar2 = 0;
+  uVar3 = 0;
   if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      (3 < (byte)WPP_GLOBAL_Control[0x19])) {
     WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x41,
-              &WPP_5d599eaa34fe3b0d4bedfe591b7b7abc_Traceguids);
+              &WPP_a67d4433caf939df88466131d913278f_Traceguids);
   }
   if (param_1 == (ushort *)0x0) {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        (3 < (byte)WPP_GLOBAL_Control[0x19])) {
       WPP_SF_sqP(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x42,
-                 &WPP_5d599eaa34fe3b0d4bedfe591b7b7abc_Traceguids);
+                 &WPP_a67d4433caf939df88466131d913278f_Traceguids);
     }
+    goto LAB_0;
   }
-  else if ((param_3 == 0) || (*(int *)(*(longlong *)(this + 0x98) + 0x20) != 0)) {
+  if (param_3 == 0) {
+LAB_1:
     if ((*(int *)(this + 0xc4) == 2) && (param_2 == 0)) {
-      if (param_3 == 0) {
-        return 0;
-      }
+      if (param_3 == 0) goto LAB_0;
       if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          (3 < (byte)WPP_GLOBAL_Control[0x19])) {
         WPP_SF_sqS(*(undefined8 *)(WPP_GLOBAL_Control + 0x10));
       }
     }
     if (*(longlong *)(this + 0xb0) == 0) {
       if (*(int *)(this + 0xc0) == 0) {
-        uVar2 = 1;
+        uVar3 = 1;
       }
       else {
         EnterCriticalSection((LPCRITICAL_SECTION)(this + 0x128));
         if (*(longlong *)(this + 0xb8) == 0) {
           if ((param_4 != (ushort *)0x0) &&
-             (iVar1 = _o__wcsicmp(param_4,*(undefined8 *)(this + 0xa0)), iVar1 == 0)) {
-            uVar2 = 1;
+             (iVar2 = _o__wcsicmp(param_4,*(undefined8 *)(this + 0xa0)), iVar2 == 0)) {
+            uVar3 = 1;
           }
         }
         else {
-          iVar1 = _o__wcsicmp(*(longlong *)(this + 0xb8),param_1);
-          uVar2 = (uint)(iVar1 == 0);
+          iVar2 = _o__wcsicmp(*(longlong *)(this + 0xb8),param_1);
+          uVar3 = (uint)(iVar2 == 0);
         }
         LeaveCriticalSection((LPCRITICAL_SECTION)(this + 0x128));
       }
     }
     else {
-      iVar1 = _o__wcsicmp(*(longlong *)(this + 0xb0),param_1);
-      uVar2 = (uint)(iVar1 == 0);
+      iVar2 = _o__wcsicmp(*(longlong *)(this + 0xb0),param_1);
+      uVar3 = (uint)(iVar2 == 0);
     }
-    if ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) {
-      if (3 < (byte)WPP_GLOBAL_Control[0x19]) {
-        WPP_SF_sqP(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x44,
-                   &WPP_5d599eaa34fe3b0d4bedfe591b7b7abc_Traceguids);
-        return uVar2;
+    if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+       (3 < (byte)WPP_GLOBAL_Control[0x19])) {
+      WPP_SF_sqP(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x44,
+                 &WPP_a67d4433caf939df88466131d913278f_Traceguids);
+    }
+  }
+  else {
+    bVar1 = wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::
+            __private_IsEnabled(&`private:_static_class_wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>&___ptr64___cdecl_wil::Feature<struct___WilFeatureTraits_Feature_1973155129>::GetImpl(void)'
+                                 ::__l2::impl);
+    if (bVar1) {
+      lpCriticalSection = (LPCRITICAL_SECTION)(this + 0x128);
+      EnterCriticalSection(lpCriticalSection);
+      if ((*(longlong *)(this + 0x98) != 0) && (*(int *)(*(longlong *)(this + 0x98) + 0x20) != 0)) {
+        LeaveCriticalSection(lpCriticalSection);
+        goto LAB_1;
       }
-      return uVar2;
+      LeaveCriticalSection(lpCriticalSection);
     }
-    return uVar2;
+    else if (*(int *)(*(longlong *)(this + 0x98) + 0x20) != 0) goto LAB_1;
+LAB_0:
+    uVar3 = 0;
   }
-  return 0;
+  return uVar3;
 }
 

```


## CWSDiscoveryProvider::IsInterestedInDevice

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.35|
|i_ratio|0.37|
|m_ratio|0.81|
|b_ratio|0.73|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|IsInterestedInDevice|IsInterestedInDevice|
|fullname|CWSDiscoveryProvider::IsInterestedInDevice|CWSDiscoveryProvider::IsInterestedInDevice|
|refcount|2|2|
|`length`|283|436|
|`called`|API-MS-WIN-CRT-PRIVATE-L1-1-0.DLL::_o__wcsicmp<br>WPP_SF_sq<br>WPP_SF_sqP|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection<br>API-MS-WIN-CRT-PRIVATE-L1-1-0.DLL::_o__wcsicmp<br>WPP_SF_sq<br>WPP_SF_sqP<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled|
|calling|CWsdWorker::WorkerAddDevice|CWsdWorker::WorkerAddDevice|
|paramcount|5|5|
|`address`|18000ecfc|18000f04c|
|sig|int __thiscall IsInterestedInDevice(CWSDiscoveryProvider * this, int param_1, int param_2, int param_3, ushort * param_4)|int __thiscall IsInterestedInDevice(CWSDiscoveryProvider * this, int param_1, int param_2, int param_3, ushort * param_4)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### CWSDiscoveryProvider::IsInterestedInDevice Called Diff


```diff
--- CWSDiscoveryProvider::IsInterestedInDevice called
+++ CWSDiscoveryProvider::IsInterestedInDevice called
@@ -0,0 +1,2 @@
+API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection
+API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection
@@ -3,0 +6 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled
```


### CWSDiscoveryProvider::IsInterestedInDevice Diff


```diff
--- CWSDiscoveryProvider::IsInterestedInDevice
+++ CWSDiscoveryProvider::IsInterestedInDevice
@@ -1,37 +1,59 @@
 
 /* public: int __cdecl CWSDiscoveryProvider::IsInterestedInDevice(int,int,int,unsigned short const *
    __ptr64) __ptr64 */
 
 int __thiscall
 CWSDiscoveryProvider::IsInterestedInDevice
           (CWSDiscoveryProvider *this,int param_1,int param_2,int param_3,ushort *param_4)
 
 {
-  int iVar1;
+  LPCRITICAL_SECTION lpCriticalSection;
+  bool bVar1;
   int iVar2;
+  int iVar3;
   
   if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      (3 < (byte)WPP_GLOBAL_Control[0x19])) {
     WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x45,
-              &WPP_5d599eaa34fe3b0d4bedfe591b7b7abc_Traceguids);
+              &WPP_a67d4433caf939df88466131d913278f_Traceguids);
   }
-  iVar1 = 0;
-  if ((((param_3 != 1) || (iVar2 = 0, *(int *)(*(longlong *)(this + 0x98) + 0x20) != 0)) &&
-      ((iVar2 = iVar1, *(int *)(this + 0xc4) != 1 && *(int *)(this + 0xc4) != 2 || (param_1 != 0))))
-     && ((((*(int *)(this + 0xc4) != 2 || (param_2 != 0)) || (param_3 != 0)) &&
-         ((iVar2 = 1, param_4 != (ushort *)0x0 && (iVar2 = iVar1, *(longlong *)(this + 0xa0) != 0)))
-         ))) {
-    iVar1 = _o__wcsicmp();
-    iVar2 = 0;
-    if (iVar1 == 0) {
-      iVar2 = 1;
+  bVar1 = wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::
+          __private_IsEnabled(&`private:_static_class_wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>&___ptr64___cdecl_wil::Feature<struct___WilFeatureTraits_Feature_1973155129>::GetImpl(void)'
+                               ::__l2::impl);
+  iVar3 = 0;
+  if (bVar1) {
+    lpCriticalSection = (LPCRITICAL_SECTION)(this + 0x128);
+    EnterCriticalSection(lpCriticalSection);
+    if (*(longlong *)(this + 0x98) == 0) {
+      LeaveCriticalSection(lpCriticalSection);
+      if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+         (3 < (byte)WPP_GLOBAL_Control[0x19])) {
+        WPP_SF_sqP(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x46,
+                   &WPP_a67d4433caf939df88466131d913278f_Traceguids);
+      }
+      return 0;
+    }
+    iVar2 = *(int *)(*(longlong *)(this + 0x98) + 0x20);
+    LeaveCriticalSection(lpCriticalSection);
+  }
+  else {
+    iVar2 = *(int *)(*(longlong *)(this + 0x98) + 0x20);
+  }
+  if ((((param_3 != 1) || (iVar2 != 0)) &&
+      ((*(int *)(this + 0xc4) != 1 && *(int *)(this + 0xc4) != 2 || (param_1 != 0)))) &&
+     ((((*(int *)(this + 0xc4) != 2 || (param_2 != 0)) || (param_3 != 0)) &&
+      ((iVar3 = 1, param_4 != (ushort *)0x0 && (iVar3 = 0, *(longlong *)(this + 0xa0) != 0)))))) {
+    iVar2 = _o__wcsicmp();
+    iVar3 = 0;
+    if (iVar2 == 0) {
+      iVar3 = 1;
     }
   }
   if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      (3 < (byte)WPP_GLOBAL_Control[0x19])) {
-    WPP_SF_sqP(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x46,
-               &WPP_5d599eaa34fe3b0d4bedfe591b7b7abc_Traceguids);
+    WPP_SF_sqP(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x47,
+               &WPP_a67d4433caf939df88466131d913278f_Traceguids);
   }
-  return iVar2;
+  return iVar3;
 }
 

```


# Modified (No Code Changes)


*Slightly modified functions have no code changes, rather differnces in:*
- refcount
- length
- called
- calling
- name
- fullname

## API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|EnterCriticalSection|EnterCriticalSection|
|fullname|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection|
|`refcount`|79|84|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>ATL::AtlModuleGetClassObject<br>ATL::CRegObject::AddReplacement<br>ATL::CRegObject::ClearReplacements<br>ATL::CRegObject::StrFromMap<br>AddRefFdphost<br>CPnpxProviderBase::CPnpxProviderBase<br>CPnpxProviderBase::ReleaseProviderTokens<br>CPnpxProviderBase::~CPnpxProviderBase<br>CSourceList::Add<br>CSourceList::AddQuerySpecificSource<br>CSourceList::AddSearch</summary>CSourceList::CleanupProxyProvider<br>CSourceList::CleanupSources<br>CSourceList::InitProxyProvider<br>CSourceList::PruneProxySources<br>CSourceList::Remove<br>CSourceList::RemoveSearch<br>CWSDiscoveryProvider::AddDevice<br>CWSDiscoveryProvider::CreateQueryTag<br>CWSDiscoveryProvider::EndQuery<br>CWSDiscoveryProvider::GetCertHashForServerAuth<br>CWSDiscoveryProvider::GetClientCertFromQuery<br>CWSDiscoveryProvider::GetServerCertHash<br>CWSDiscoveryProvider::IncreaseSearchCompleteCount<br>CWSDiscoveryProvider::Initialize<br>CWSDiscoveryProvider::InstanceQueryService<br>CWSDiscoveryProvider::InstanceReleased<br>CWSDiscoveryProvider::IsInterestedInMex<br>CWSDiscoveryProvider::OnError<br>CWSDiscoveryProvider::Query<br>CWSDiscoveryProvider::RemoveDevice<br>CWSDiscoveryProvider::SignalWorkItemCompletion<br>CWsdWorker::AddQuery<br>CWsdWorker::DispatchAddressChangeNotification<br>CWsdWorker::FindProviderByTag<br>CWsdWorker::FreeQueryList<br>CWsdWorker::IsDirectedDiscoveryResponse<br>CWsdWorker::IsMatchingQuery<br>CWsdWorker::MarkAddWorkItemReady<br>CWsdWorker::QueuePendingWorkItem<br>CWsdWorker::QueueWorkItem<br>CWsdWorker::RemoveQuery<br>CWsdWorker::SearchComplete<br>CWsdWorker::WorkerAddDevice<br>CWsdWorker::WorkerMain<br>CWsdWorker::WorkerRemoveDevice<br>CWsdWorker::WorkerStart<br>CWsdWorker::~CWsdWorker<br>FdphostSetComContext<br>FdphostSetSharedService<br>ReleaseFdphost<br>_Init_thread_footer<br>_Init_thread_header<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|<details><summary>Expand for full list:<br>ATL::AtlModuleGetClassObject<br>ATL::CRegObject::AddReplacement<br>ATL::CRegObject::ClearReplacements<br>ATL::CRegObject::StrFromMap<br>AddRefFdphost<br>CPnpxProviderBase::CPnpxProviderBase<br>CPnpxProviderBase::ReleaseProviderTokens<br>CPnpxProviderBase::~CPnpxProviderBase<br>CSourceList::Add<br>CSourceList::AddQuerySpecificSource<br>CSourceList::AddSearch</summary>CSourceList::CleanupProxyProvider<br>CSourceList::CleanupSources<br>CSourceList::InitProxyProvider<br>CSourceList::PruneProxySources<br>CSourceList::Remove<br>CSourceList::RemoveSearch<br>CWSDiscoveryProvider::AddDevice<br>CWSDiscoveryProvider::CreateQueryTag<br>CWSDiscoveryProvider::EndQuery<br>CWSDiscoveryProvider::GetCertHashForServerAuth<br>CWSDiscoveryProvider::GetClientCertFromQuery<br>CWSDiscoveryProvider::GetClientCertificate<br>CWSDiscoveryProvider::GetServerCertHash<br>CWSDiscoveryProvider::GetWsdSearchParams<br>CWSDiscoveryProvider::IncreaseSearchCompleteCount<br>CWSDiscoveryProvider::Initialize<br>CWSDiscoveryProvider::InstanceQueryService<br>CWSDiscoveryProvider::InstanceReleased<br>CWSDiscoveryProvider::IsInterestedInDevice<br>CWSDiscoveryProvider::IsInterestedInMex<br>CWSDiscoveryProvider::OnError<br>CWSDiscoveryProvider::Query<br>CWSDiscoveryProvider::RemoveDevice<br>CWSDiscoveryProvider::SignalWorkItemCompletion<br>CWSDiscoveryProvider::~CWSDiscoveryProvider<br>CWsdWorker::AddQuery<br>CWsdWorker::DispatchAddressChangeNotification<br>CWsdWorker::FindProviderByTag<br>CWsdWorker::FreeQueryList<br>CWsdWorker::IsDirectedDiscoveryResponse<br>CWsdWorker::IsMatchingQuery<br>CWsdWorker::MarkAddWorkItemReady<br>CWsdWorker::QueuePendingWorkItem<br>CWsdWorker::QueueWorkItem<br>CWsdWorker::RemoveQuery<br>CWsdWorker::SearchComplete<br>CWsdWorker::WorkerAddDevice<br>CWsdWorker::WorkerMain<br>CWsdWorker::WorkerRemoveDevice<br>CWsdWorker::WorkerStart<br>CWsdWorker::~CWsdWorker<br>FdphostSetComContext<br>FdphostSetSharedService<br>ReleaseFdphost<br>_Init_thread_footer<br>_Init_thread_header<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|
|paramcount|1|1|
|address|EXTERNAL:0000005a|EXTERNAL:0000005a|
|sig|void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)|void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection Calling Diff


```diff
--- API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection calling
+++ API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection calling
@@ -22,0 +23 @@
+CWSDiscoveryProvider::GetClientCertificate
@@ -23,0 +25 @@
+CWSDiscoveryProvider::GetWsdSearchParams
@@ -27,0 +30 @@
+CWSDiscoveryProvider::IsInterestedInDevice
@@ -32,0 +36 @@
+CWSDiscoveryProvider::~CWSDiscoveryProvider
```


## GetClientCertificate

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,length,address,called|
|ratio|0.28|
|i_ratio|0.14|
|m_ratio|0.28|
|b_ratio|0.23|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|GetClientCertificate|GetClientCertificate|
|fullname|CWSDiscoveryProvider::GetClientCertificate|CWSDiscoveryProvider::GetClientCertificate|
|`refcount`|3|4|
|`length`|22|149|
|`called`||API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection<br>API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection<br>CRYPT32.DLL::CertDuplicateCertificateContext<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled|
|calling|CSourceList::CreateSource<br>CWsdWorker::IsMatchingQuery|CSourceList::CreateSource<br>CWsdWorker::IsMatchingQuery|
|paramcount|1|1|
|`address`|18000ba28|18000bbc0|
|sig|_CERT_CONTEXT * __thiscall GetClientCertificate(CWSDiscoveryProvider * this)|_CERT_CONTEXT * __thiscall GetClientCertificate(CWSDiscoveryProvider * this)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### GetClientCertificate Called Diff


```diff
--- CWSDiscoveryProvider::GetClientCertificate called
+++ CWSDiscoveryProvider::GetClientCertificate called
@@ -0,0 +1,4 @@
+API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::EnterCriticalSection
+API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection
+CRYPT32.DLL::CertDuplicateCertificateContext
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::__private_IsEnabled
```


## API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::AcquireSRWLockExclusive

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.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`|33|34|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br><lambda_d51448ba32f8ef42e59400edd4566183>::<lambda_invoker_cdecl><br>CContextTable::AddContext<br>CContextTable::Initialize<br>CContextTable::RemoveContext<br>CFDProviderHelper::Initialize<br>CPnpxProviderBase::ReleaseProviderTokens<br>CWSDiscoveryProvider::Initialize<br>wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl<br>wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush<br>wil::details::EnabledStateManager::OnStateChange</summary>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::ProcessShutdown<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::EnsureSubscribedToProcessWideUsageFlushUnderLock<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToEnabledStateChanges<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::IsFeatureConfigured<br>wil::details_abi::FeatureStateData::RecordFeatureUsage<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br><lambda_d51448ba32f8ef42e59400edd4566183>::<lambda_invoker_cdecl><br>CContextTable::AddContext<br>CContextTable::Initialize<br>CContextTable::RemoveContext<br>CFDProviderHelper::Initialize<br>CPnpxProviderBase::ReleaseProviderTokens<br>CWSDiscoveryProvider::Initialize<br>wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl<br>wil::details::EnabledStateManager::EnsureSubscribedToUsageFlush<br>wil::details::EnabledStateManager::OnStateChange</summary>wil::details::EnabledStateManager::OnTimer<br>wil::details::EnabledStateManager::ProcessShutdown<br>wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::EnsureSubscribedToProcessWideUsageFlushUnderLock<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToEnabledStateChanges<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::IsFeatureConfigured<br>wil::details_abi::FeatureStateData::RecordFeatureUsage<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|
|paramcount|1|1|
|address|EXTERNAL:00000069|EXTERNAL:00000069|
|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
@@ -14,0 +15 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState
```


## push_back

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.89|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|push_back|push_back|
|fullname|wil::details_abi::heap_buffer::push_back|wil::details_abi::heap_buffer::push_back|
|`refcount`|9|10|
|length|90|90|
|called|memcpy_s<br>wil::details_abi::heap_buffer::ensure|memcpy_s<br>wil::details_abi::heap_buffer::ensure|
|`calling`|wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::IsFeatureConfigured<br>wil::details_abi::SubscriptionList::SubscribeUnderLock|wil::details::EnabledStateManager::QueueBackgroundUsageReporting<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::IsFeatureConfigured<br>wil::details_abi::SubscriptionList::SubscribeUnderLock|
|paramcount|3|3|
|`address`|180013cfc|180014218|
|sig|bool __thiscall push_back(heap_buffer * this, void * param_1, __uint64 param_2)|bool __thiscall push_back(heap_buffer * this, void * param_1, __uint64 param_2)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### push_back Calling Diff


```diff
--- wil::details_abi::heap_buffer::push_back calling
+++ wil::details_abi::heap_buffer::push_back calling
@@ -1,0 +2 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState
```


## WPP_SF_sqP

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.96|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|WPP_SF_sqP|WPP_SF_sqP|
|fullname|WPP_SF_sqP|WPP_SF_sqP|
|`refcount`|37|38|
|length|111|111|
|called|API-MS-WIN-EVENTING-CLASSICPROVIDER-L1-1-0.DLL::TraceMessage|API-MS-WIN-EVENTING-CLASSICPROVIDER-L1-1-0.DLL::TraceMessage|
|calling|<details><summary>Expand for full list:<br>CDiscoveryCallbackShim::AddRef<br>CDiscoveryCallbackShim::Release<br>CSourceList::AddRef<br>CSourceList::Release<br>CWSDiscoveryProvider::CheckTypeConstraint<br>CWSDiscoveryProvider::GetQueryTag<br>CWSDiscoveryProvider::IsDirectedResponse<br>CWSDiscoveryProvider::IsInterestedInDevice<br>CWSDiscoveryProvider::IsInterestedInMex<br>CWsdLocalizationInfo::AddRef<br>CWsdLocalizationInfo::Release</summary>CWsdWorker::AddDeviceInWork<br>CWsdWorker::AddRef<br>CWsdWorker::FindProviderByTag<br>CWsdWorker::GetIpAddressFromRemoteAddress<br>CWsdWorker::GetPendingWorkItem<br>CWsdWorker::GetWorkItem<br>CWsdWorker::IsDeviceComputer<br>CWsdWorker::IsDirectedDiscoveryResponse<br>CWsdWorker::IsInPendingQueue<br>CWsdWorker::IsMatchingQuery<br>CWsdWorker::IsMexTransportSecure<br>CWsdWorker::MarkAddWorkItemReady<br>CWsdWorker::MarkWorkItemsForDeletion<br>CWsdWorker::MarkWorkItemsForNotification<br>CWsdWorker::Release</details>|<details><summary>Expand for full list:<br>CDiscoveryCallbackShim::AddRef<br>CDiscoveryCallbackShim::Release<br>CSourceList::AddRef<br>CSourceList::Release<br>CWSDiscoveryProvider::CheckTypeConstraint<br>CWSDiscoveryProvider::GetQueryTag<br>CWSDiscoveryProvider::IsDirectedResponse<br>CWSDiscoveryProvider::IsInterestedInDevice<br>CWSDiscoveryProvider::IsInterestedInMex<br>CWsdLocalizationInfo::AddRef<br>CWsdLocalizationInfo::Release</summary>CWsdWorker::AddDeviceInWork<br>CWsdWorker::AddRef<br>CWsdWorker::FindProviderByTag<br>CWsdWorker::GetIpAddressFromRemoteAddress<br>CWsdWorker::GetPendingWorkItem<br>CWsdWorker::GetWorkItem<br>CWsdWorker::IsDeviceComputer<br>CWsdWorker::IsDirectedDiscoveryResponse<br>CWsdWorker::IsInPendingQueue<br>CWsdWorker::IsMatchingQuery<br>CWsdWorker::IsMexTransportSecure<br>CWsdWorker::MarkAddWorkItemReady<br>CWsdWorker::MarkWorkItemsForDeletion<br>CWsdWorker::MarkWorkItemsForNotification<br>CWsdWorker::Release</details>|
|paramcount|3|3|
|`address`|18001448c|1800149a8|
|sig|undefined __fastcall WPP_SF_sqP(undefined8 param_1, undefined2 param_2, undefined8 param_3)|undefined __fastcall WPP_SF_sqP(undefined8 param_1, undefined2 param_2, undefined8 param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## EnsureSubscribedToFeatureConfigurationChanges

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.78|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|EnsureSubscribedToFeatureConfigurationChanges|EnsureSubscribedToFeatureConfigurationChanges|
|fullname|wil::details::EnsureSubscribedToFeatureConfigurationChanges|wil::details::EnsureSubscribedToFeatureConfigurationChanges|
|`refcount`|6|7|
|length|32|32|
|called|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl|wil::details::EnabledStateManager::EnsureSubscribedToFeatureConfigurationChangesImpl|
|`calling`|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCachedFeatureEnabledState<br>wil::details::IsFeatureConfigured|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCachedFeatureEnabledState<br>wil::details::IsFeatureConfigured|
|paramcount|0|0|
|`address`|18000a478|18000a4d8|
|sig|uint __cdecl EnsureSubscribedToFeatureConfigurationChanges(void)|uint __cdecl EnsureSubscribedToFeatureConfigurationChanges(void)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### EnsureSubscribedToFeatureConfigurationChanges Calling Diff


```diff
--- wil::details::EnsureSubscribedToFeatureConfigurationChanges calling
+++ wil::details::EnsureSubscribedToFeatureConfigurationChanges calling
@@ -0,0 +1 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState
```


## Clone

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.79|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|Clone|Clone|
|fullname|CWsdSearchParams::Clone|CWsdSearchParams::Clone|
|`refcount`|2|3|
|length|366|366|
|called|CWsdSearchParams::CopyString<br>CWsdSearchParams::`scalar_deleting_destructor'<br>WPP_SF_s<br>WPP_SF_sd<br>WSDAPI.DLL::WSDCopyNameList<br>operator_new|CWsdSearchParams::CopyString<br>CWsdSearchParams::`scalar_deleting_destructor'<br>WPP_SF_s<br>WPP_SF_sd<br>WSDAPI.DLL::WSDCopyNameList<br>operator_new|
|calling|CWSDiscoveryProvider::GetWsdSearchParams|CWSDiscoveryProvider::GetWsdSearchParams|
|paramcount|2|2|
|`address`|18001ddc4|18001e2d4|
|sig|long __cdecl Clone(CWsdSearchParams * param_1, CWsdSearchParams * * param_2)|long __cdecl Clone(CWsdSearchParams * param_1, CWsdSearchParams * * param_2)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

## `scalar_deleting_destructor'

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.91|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|`scalar_deleting_destructor'|`scalar_deleting_destructor'|
|fullname|CWsdSearchParams::`scalar_deleting_destructor'|CWsdSearchParams::`scalar_deleting_destructor'|
|`refcount`|10|11|
|length|36|36|
|called|CWsdSearchParams::~CWsdSearchParams<br>operator_delete[]|CWsdSearchParams::~CWsdSearchParams<br>operator_delete[]|
|calling|CSourceList::AddSearch<br>CSourceList::RemoveSearch<br>CSourceList::SearchSingleSource<br>CWSDiscoveryProvider::Query<br>CWSDiscoveryProvider::~CWSDiscoveryProvider<br>CWsdSearchParams::Clone<br>CWsdSearchParams::CreateSearchByAddress<br>CWsdSearchParams::CreateSearchById<br>CWsdSearchParams::CreateSearchByType|CSourceList::AddSearch<br>CSourceList::RemoveSearch<br>CSourceList::SearchSingleSource<br>CWSDiscoveryProvider::Query<br>CWSDiscoveryProvider::~CWSDiscoveryProvider<br>CWsdSearchParams::Clone<br>CWsdSearchParams::CreateSearchByAddress<br>CWsdSearchParams::CreateSearchById<br>CWsdSearchParams::CreateSearchByType|
|paramcount|2|2|
|`address`|180007f64|180007fc4|
|sig|void * __thiscall `scalar_deleting_destructor'(CWsdSearchParams * this, uint param_1)|void * __thiscall `scalar_deleting_destructor'(CWsdSearchParams * this, uint param_1)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

## WilApi_GetFeatureEnabledState

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.33|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|WilApi_GetFeatureEnabledState|WilApi_GetFeatureEnabledState|
|fullname|wil::details::WilApi_GetFeatureEnabledState|wil::details::WilApi_GetFeatureEnabledState|
|`refcount`|4|5|
|length|35|35|
|called|_guard_dispatch_icall$thunk$10345483385596137414|_guard_dispatch_icall$thunk$10345483385596137414|
|`calling`|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCurrentFeatureEnabledState|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCurrentFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCurrentFeatureEnabledState|
|paramcount|3|3|
|`address`|180013748|180013c28|
|sig|FEATURE_ENABLED_STATE __cdecl WilApi_GetFeatureEnabledState(uint param_1, FEATURE_CHANGE_TIME param_2, int * param_3)|FEATURE_ENABLED_STATE __cdecl WilApi_GetFeatureEnabledState(uint param_1, FEATURE_CHANGE_TIME param_2, int * param_3)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### WilApi_GetFeatureEnabledState Calling Diff


```diff
--- wil::details::WilApi_GetFeatureEnabledState calling
+++ wil::details::WilApi_GetFeatureEnabledState calling
@@ -0,0 +1 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCurrentFeatureEnabledState
```


## ReportUsageToService

### Match Info



|Key|fdw_8521.dll - fdw_8655.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|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|ReportUsageToService|ReportUsageToService|
|fullname|wil::details::ReportUsageToService|wil::details::ReportUsageToService|
|`refcount`|5|6|
|length|164|164|
|called|_guard_dispatch_icall$thunk$10345483385596137414<br>wil::details::ReportUsageToServiceDirect<br>wil_details_MapReportingKind|_guard_dispatch_icall$thunk$10345483385596137414<br>wil::details::ReportUsageToServiceDirect<br>wil_details_MapReportingKind|
|`calling`|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::ReportUsage<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::ReportUsage<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::ReportUsage<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::ReportUsage|wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::ReportUsage<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::ReportUsage<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::ReportUsage<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::ReportUsage|
|paramcount|8|8|
|`address`|180011b34|18001200c|
|sig|void __cdecl ReportUsageToService(wil_details_FeatureReportingCache * param_1, uint param_2, int param_3, int param_4, FEATURE_LOGGED_TRAITS * param_5, int param_6, wil_ReportingKind param_7, __uint64 param_8)|void __cdecl ReportUsageToService(wil_details_FeatureReportingCache * param_1, uint param_2, int param_3, int param_4, FEATURE_LOGGED_TRAITS * param_5, int param_6, wil_ReportingKind param_7, __uint64 param_8)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### ReportUsageToService Calling Diff


```diff
--- wil::details::ReportUsageToService calling
+++ wil::details::ReportUsageToService calling
@@ -0,0 +1 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::ReportUsage
```


## API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|LeaveCriticalSection|LeaveCriticalSection|
|fullname|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection|
|`refcount`|82|90|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>ATL::AtlModuleGetClassObject<br>ATL::CRegObject::AddReplacement<br>ATL::CRegObject::ClearReplacements<br>ATL::CRegObject::StrFromMap<br>AddRefFdphost<br>CPnpxProviderBase::CPnpxProviderBase<br>CPnpxProviderBase::~CPnpxProviderBase<br>CSourceList::Add<br>CSourceList::AddQuerySpecificSource<br>CSourceList::AddSearch<br>CSourceList::CleanupProxyProvider</summary>CSourceList::CleanupSources<br>CSourceList::InitProxyProvider<br>CSourceList::PruneProxySources<br>CSourceList::Remove<br>CSourceList::RemoveSearch<br>CWSDiscoveryProvider::AddDevice<br>CWSDiscoveryProvider::CreateQueryTag<br>CWSDiscoveryProvider::EndQuery<br>CWSDiscoveryProvider::GetCertHashForServerAuth<br>CWSDiscoveryProvider::GetClientCertFromQuery<br>CWSDiscoveryProvider::GetServerCertHash<br>CWSDiscoveryProvider::IncreaseSearchCompleteCount<br>CWSDiscoveryProvider::Initialize<br>CWSDiscoveryProvider::InstanceQueryService<br>CWSDiscoveryProvider::InstanceReleased<br>CWSDiscoveryProvider::IsInterestedInMex<br>CWSDiscoveryProvider::OnError<br>CWSDiscoveryProvider::Query<br>CWSDiscoveryProvider::RemoveDevice<br>CWSDiscoveryProvider::SignalWorkItemCompletion<br>CWsdWorker::AddQuery<br>CWsdWorker::DispatchAddressChangeNotification<br>CWsdWorker::FindProviderByTag<br>CWsdWorker::FreeQueryList<br>CWsdWorker::IsDirectedDiscoveryResponse<br>CWsdWorker::IsMatchingQuery<br>CWsdWorker::MarkAddWorkItemReady<br>CWsdWorker::QueuePendingWorkItem<br>CWsdWorker::QueueWorkItem<br>CWsdWorker::RemoveQuery<br>CWsdWorker::SearchComplete<br>CWsdWorker::WorkerAddDevice<br>CWsdWorker::WorkerMain<br>CWsdWorker::WorkerRemoveDevice<br>CWsdWorker::WorkerStart<br>CWsdWorker::~CWsdWorker<br>ReleaseFdphost<br>_Init_thread_footer<br>_Init_thread_wait_v2<br>wil::details::unique_storage<struct_wil::details::resource_policy<struct__RTL_CRITICAL_SECTION*___ptr64,void_(__cdecl*)(struct__RTL_CRITICAL_SECTION*___ptr64),&void___cdecl_LeaveCriticalSection(struct__RTL_CRITICAL_SECTION*___ptr64),struct_wistd::integral_constant<unsigned___int64,1>,struct__RTL_CRITICAL_SECTION*___ptr64,struct__RTL_CRITICAL_SECTION*___ptr64,0,std::nullptr_t>_>::~unique_storage<struct_wil::details::resource_policy<struct__RTL_CRITICAL_SECTION*___ptr64,void_(__cdecl*)(struct__RTL_CRITICAL_SECTION*___ptr64),&void___cdecl_LeaveCriticalSection(struct__RTL_CRITICAL_SECTION*___ptr64),struct_wistd::integral_constant<unsigned___int64,1>,struct__RTL_CRITICAL_SECTION*___ptr64,struct__RTL_CRITICAL_SECTION*___ptr64,0,std::nullptr_t>_></details>|<details><summary>Expand for full list:<br>ATL::AtlModuleGetClassObject<br>ATL::CRegObject::AddReplacement<br>ATL::CRegObject::ClearReplacements<br>ATL::CRegObject::StrFromMap<br>AddRefFdphost<br>CPnpxProviderBase::CPnpxProviderBase<br>CPnpxProviderBase::~CPnpxProviderBase<br>CSourceList::Add<br>CSourceList::AddQuerySpecificSource<br>CSourceList::AddSearch<br>CSourceList::CleanupProxyProvider</summary>CSourceList::CleanupSources<br>CSourceList::InitProxyProvider<br>CSourceList::PruneProxySources<br>CSourceList::Remove<br>CSourceList::RemoveSearch<br>CWSDiscoveryProvider::AddDevice<br>CWSDiscoveryProvider::CreateQueryTag<br>CWSDiscoveryProvider::EndQuery<br>CWSDiscoveryProvider::GetCertHashForServerAuth<br>CWSDiscoveryProvider::GetClientCertFromQuery<br>CWSDiscoveryProvider::GetClientCertificate<br>CWSDiscoveryProvider::GetServerCertHash<br>CWSDiscoveryProvider::GetWsdSearchParams<br>CWSDiscoveryProvider::IncreaseSearchCompleteCount<br>CWSDiscoveryProvider::Initialize<br>CWSDiscoveryProvider::InstanceQueryService<br>CWSDiscoveryProvider::InstanceReleased<br>CWSDiscoveryProvider::IsInterestedInDevice<br>CWSDiscoveryProvider::IsInterestedInMex<br>CWSDiscoveryProvider::OnError<br>CWSDiscoveryProvider::Query<br>CWSDiscoveryProvider::RemoveDevice<br>CWSDiscoveryProvider::SignalWorkItemCompletion<br>CWSDiscoveryProvider::~CWSDiscoveryProvider<br>CWsdWorker::AddQuery<br>CWsdWorker::DispatchAddressChangeNotification<br>CWsdWorker::FindProviderByTag<br>CWsdWorker::FreeQueryList<br>CWsdWorker::IsDirectedDiscoveryResponse<br>CWsdWorker::IsMatchingQuery<br>CWsdWorker::MarkAddWorkItemReady<br>CWsdWorker::QueuePendingWorkItem<br>CWsdWorker::QueueWorkItem<br>CWsdWorker::RemoveQuery<br>CWsdWorker::SearchComplete<br>CWsdWorker::WorkerAddDevice<br>CWsdWorker::WorkerMain<br>CWsdWorker::WorkerRemoveDevice<br>CWsdWorker::WorkerStart<br>CWsdWorker::~CWsdWorker<br>ReleaseFdphost<br>_Init_thread_footer<br>_Init_thread_wait_v2<br>wil::details::unique_storage<struct_wil::details::resource_policy<struct__RTL_CRITICAL_SECTION*___ptr64,void_(__cdecl*)(struct__RTL_CRITICAL_SECTION*___ptr64),&void___cdecl_LeaveCriticalSection(struct__RTL_CRITICAL_SECTION*___ptr64),struct_wistd::integral_constant<unsigned___int64,1>,struct__RTL_CRITICAL_SECTION*___ptr64,struct__RTL_CRITICAL_SECTION*___ptr64,0,std::nullptr_t>_>::~unique_storage<struct_wil::details::resource_policy<struct__RTL_CRITICAL_SECTION*___ptr64,void_(__cdecl*)(struct__RTL_CRITICAL_SECTION*___ptr64),&void___cdecl_LeaveCriticalSection(struct__RTL_CRITICAL_SECTION*___ptr64),struct_wistd::integral_constant<unsigned___int64,1>,struct__RTL_CRITICAL_SECTION*___ptr64,struct__RTL_CRITICAL_SECTION*___ptr64,0,std::nullptr_t>_></details>|
|paramcount|1|1|
|address|EXTERNAL:0000005f|EXTERNAL:0000005f|
|sig|void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)|void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection Calling Diff


```diff
--- API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection calling
+++ API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::LeaveCriticalSection calling
@@ -21,0 +22 @@
+CWSDiscoveryProvider::GetClientCertificate
@@ -22,0 +24 @@
+CWSDiscoveryProvider::GetWsdSearchParams
@@ -26,0 +29 @@
+CWSDiscoveryProvider::IsInterestedInDevice
@@ -31,0 +35 @@
+CWSDiscoveryProvider::~CWSDiscoveryProvider
```


## ~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>_>

### Match Info



|Key|fdw_8521.dll - fdw_8655.dll|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|fdw_8521.dll|fdw_8655.dll|
| :---: | :---: | :---: |
|name|~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>_>|
|fullname|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>_>|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>_>|
|`refcount`|24|25|
|length|29|29|
|called|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive|API-MS-WIN-CORE-SYNCH-L1-1-0.DLL::ReleaseSRWLockExclusive|
|`calling`|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br><lambda_d51448ba32f8ef42e59400edd4566183>::<lambda_invoker_cdecl><br>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<struct___WilFeatureTraits_Feature_2532511035>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::EnsureSubscribedToProcessWideUsageFlushUnderLock<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToEnabledStateChanges<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::IsFeatureConfigured<br>wil::details_abi::FeatureStateData::RecordFeatureUsage<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|<details><summary>Expand for full list:<br><lambda_5035b992506f4af81a770c5842624510>::<lambda_invoker_cdecl><br><lambda_d51448ba32f8ef42e59400edd4566183>::<lambda_invoker_cdecl><br>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<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_2532511035>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_3651663162>::GetCachedFeatureEnabledState</summary>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_4210232632>::GetCachedFeatureEnabledState<br>wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_731641147>::GetCachedFeatureEnabledState<br>wil::details::FeatureStateManager::EnsureStateData<br>wil::details::FeatureStateManager::EnsureSubscribedToProcessWideUsageFlushUnderLock<br>wil::details::FeatureStateManager::QueueBackgroundSRUMUsageReporting<br>wil::details::FeatureStateManager::RecordFeatureUsage<br>wil::details::FeatureStateManager::SubscribeToEnabledStateChanges<br>wil::details::FeatureStateManager::SubscribeToUsageFlush<br>wil::details::IsFeatureConfigured<br>wil::details_abi::FeatureStateData::RecordFeatureUsage<br>wil::details_abi::FeatureStateData::RecordUsage<br>wil::details_abi::SubscriptionList::OnSignaled<br>wil::details_abi::SubscriptionList::Unsubscribe</details>|
|paramcount|1|1|
|address|180007854|180007854|
|sig|void __thiscall ~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>_> * this)|void __thiscall ~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>_> * this)|
|sym_type|Function|Function|
|sym_source|ANALYSIS|ANALYSIS|
|external|False|False|

### ~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>_> Calling Diff


```diff
--- 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>_> calling
+++ 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>_> calling
@@ -8,0 +9 @@
+wil::details::FeatureImpl<struct___WilFeatureTraits_Feature_1973155129>::GetCachedFeatureEnabledState
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-08-22T11:19:15</sub>