# tdx_7920.sys-tdx_8246.sys 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)
	* [Feature_2411928891__private_IsEnabledDeviceUsageNoInline](#feature_2411928891__private_isenableddeviceusagenoinline)
	* [Feature_2411928891__private_IsEnabledFallback](#feature_2411928891__private_isenabledfallback)
	* [Feature_490931514__private_IsEnabledDeviceUsageNoInline](#feature_490931514__private_isenableddeviceusagenoinline)
	* [Feature_490931514__private_IsEnabledFallback](#feature_490931514__private_isenabledfallback)
* [Modified](#modified)
	* [wil_details_IsEnabledFallback](#wil_details_isenabledfallback)
	* [TdxIssueQueryAddressRequest](#tdxissuequeryaddressrequest)
	* [TdxIssueListenRequest](#tdxissuelistenrequest)
	* [wil_details_FeatureReporting_ReportUsageToServiceDirect](#wil_details_featurereporting_reportusagetoservicedirect)
	* [TdxDeactivateTransportAddress](#tdxdeactivatetransportaddress)
	* [TdxIssueIoControlRequest](#tdxissueiocontrolrequest)
	* [wil_details_FeatureReporting_ReportUsageToService](#wil_details_featurereporting_reportusagetoservice)
	* [Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback](#feature_servicing_racyaccessinnetiotdisession__private_isenabledfallback)
	* [wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath](#wil_details_featurestatecache_tryenabledeviceusagefastpath)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [__GSHandlerCheck](#__gshandlercheck)
	* [DbgTdxDereferenceConnection](#dbgtdxdereferenceconnection)
	* [TdxDecrementTlEndpointReference](#tdxdecrementtlendpointreference)
	* [NTOSKRNL.EXE::KeDelayExecutionThread](#ntoskrnlexekedelayexecutionthread)
	* [DbgTdxReferenceConnection](#dbgtdxreferenceconnection)
	* [__security_check_cookie](#__security_check_cookie)
	* [NETIO.SYS::RtlCopyBufferToMdl](#netiosysrtlcopybuffertomdl)
	* [WPP_SF_q](#wpp_sf_q)
	* [NTOSKRNL.EXE::IoAcquireCancelSpinLock](#ntoskrnlexeioacquirecancelspinlock)
	* [WPP_SF_qs](#wpp_sf_qs)
	* [NTOSKRNL.EXE::RtlGetCallersAddress](#ntoskrnlexertlgetcallersaddress)
	* [TdxCleanupObjectHeader](#tdxcleanupobjectheader)
	* [WPP_SF_qdssD](#wpp_sf_qdssd)
	* [WPP_SF_sq](#wpp_sf_sq)
	* [TdxCloseConnectionEndpointTlRequestComplete](#tdxcloseconnectionendpointtlrequestcomplete)
	* [NTOSKRNL.EXE::ExFreePoolWithTag](#ntoskrnlexeexfreepoolwithtag)
	* [IN6_IS_ADDR_UNSPECIFIED](#in6_is_addr_unspecified)
	* [NTOSKRNL.EXE::KeReleaseSpinLock](#ntoskrnlexekereleasespinlock)
	* [TdxShutdownEndpointConnection](#tdxshutdownendpointconnection)
	* [INETADDR_ISV4MAPPED](#inetaddr_isv4mapped)
	* [NTOSKRNL.EXE::IoReleaseCancelSpinLock](#ntoskrnlexeioreleasecancelspinlock)
	* [NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc](#ntoskrnlexekeacquirespinlockraisetodpc)
	* [NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel](#ntoskrnlexekereleasespinlockfromdpclevel)
	* [NTOSKRNL.EXE::RtlLogUnexpectedCodepath](#ntoskrnlexertllogunexpectedcodepath)
	* [NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel](#ntoskrnlexekeacquirespinlockatdpclevel)

# Visual Chart Diff



```mermaid

flowchart LR

wil_details_IsEnabledFallback-2-old<--Match 94%-->wil_details_IsEnabledFallback-2-new
TdxIssueQueryAddressRequest-3-old<--Match 4%-->TdxIssueQueryAddressRequest-3-new
TdxIssueListenRequest-2-old<--Match 56%-->TdxIssueListenRequest-2-new
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-old<--Match 95%-->wil_details_FeatureReporting_ReportUsageToServiceDirect-3-new
TdxDeactivateTransportAddress-1-old<--Match 17%-->TdxDeactivateTransportAddress-1-new
TdxIssueIoControlRequest-3-old<--Match 76%-->TdxIssueIoControlRequest-3-new
wil_details_FeatureReporting_ReportUsageToService-3-old<--Match 94%-->wil_details_FeatureReporting_ReportUsageToService-3-new
Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback-2-old<--Match 89%-->Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback-2-new
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-old<--Match 90%-->wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-new

subgraph tdx_8246.sys
    wil_details_IsEnabledFallback-2-new
TdxIssueQueryAddressRequest-3-new
TdxIssueListenRequest-2-new
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-new
TdxDeactivateTransportAddress-1-new
TdxIssueIoControlRequest-3-new
wil_details_FeatureReporting_ReportUsageToService-3-new
Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback-2-new
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-new
    subgraph Added
direction LR
Feature_2411928891__private_IsEnabledDeviceUsageNoInline
    Feature_2411928891__private_IsEnabledFallback
    Feature_490931514__private_IsEnabledDeviceUsageNoInline
    Feature_490931514__private_IsEnabledFallback
end
end

subgraph tdx_7920.sys
    wil_details_IsEnabledFallback-2-old
TdxIssueQueryAddressRequest-3-old
TdxIssueListenRequest-2-old
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-old
TdxDeactivateTransportAddress-1-old
TdxIssueIoControlRequest-3-old
wil_details_FeatureReporting_ReportUsageToService-3-old
Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback-2-old
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-old
    
end

```


```mermaid
pie showData
    title Function Matches - 99.4819%
"unmatched_funcs_len" : 4
"matched_funcs_len" : 768
```



```mermaid
pie showData
    title Matched Function Similarity - 94.9219%
"matched_funcs_with_code_changes_len" : 9
"matched_funcs_with_non_code_changes_len" : 30
"matched_funcs_no_changes_len" : 729
```

# 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 tdx_7920.sys tdx_8246.sys
```


#### Verbose Args


<details>

```
--old ['tdx_7920.sys'] --new [['tdx_8246.sys']] --engine VersionTrackingDiff --output-path tdx_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/tdx.sys/0F9245EE2B000/tdx.sys -O tdx.sys.x64.10.0.26100.7920
wget https://msdl.microsoft.com/download/symbols/tdx.sys/2D86BED52A000/tdx.sys -O tdx.sys.x64.10.0.26100.8246
```


## Binary Metadata Diff


```diff
--- tdx_7920.sys Meta
+++ tdx_8246.sys Meta
@@ -1,44 +1,44 @@
-Program Name: tdx_7920.sys
+Program Name: tdx_8246.sys
 Language ID: x86:LE:64:default (4.6)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 140000000
 Maximum Address: ff0000184f
-# of Bytes: 182352
+# of Bytes: 178256
 # of Memory Blocks: 13
-# of Instructions: 23482
-# of Defined Data: 1474
-# of Functions: 384
-# of Symbols: 3370
+# of Instructions: 23261
+# of Defined Data: 1470
+# of Functions: 388
+# of Symbols: 3387
 # of Data Types: 147
 # of Data Type Categories: 12
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.0.4
-Date Created: Sat Aug 22 11:57:26 SGT 2026
+Date Created: Sat Aug 22 11:57:29 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /tmp/tdx/tdx_7920.sys
-Executable MD5: 45f33a63848990fe6bac433aa7495e28
-Executable SHA256: 3ee62af83c33d6bfb99d2bf3a45b3c279f4882b98d72188de2b6bca7491c2d17
-FSRL: file:///tmp/tdx/tdx_7920.sys?MD5=45f33a63848990fe6bac433aa7495e28
+Executable Location: /tmp/tdx/tdx_8246.sys
+Executable MD5: e77b0f30be9667483f1954c8ed4f73a5
+Executable SHA256: cbc81b0ffd9acf938c0a439ac8aa59a95415b68092676bab300b1c6c359447bb
+FSRL: file:///tmp/tdx/tdx_8246.sys?MD5=e77b0f30be9667483f1954c8ed4f73a5
 PDB Age: 1
 PDB File: tdx.pdb
-PDB GUID: 83f437d0-67fe-4f3a-45c2-23a65c796098
+PDB GUID: f9141852-db2f-1c9c-09a8-2c44bc0818ec
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: TDI Translation Driver
-PE Property[FileVersion]: 10.0.26100.7920 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.26100.8246 (WinBuild.160101.0800)
 PE Property[InternalName]: tdx.sys
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: tdx.sys
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.26100.7920
+PE Property[ProductVersion]: 10.0.26100.8246
 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 tdx_7920.sys Decompiler Options</summary>


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

</details>


<details>
<summary>Ghidra tdx_7920.sys Specification extensions Options</summary>


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

</details>


<details>
<summary>Ghidra tdx_7920.sys 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 tdx_8246.sys Decompiler Options</summary>


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

</details>


<details>
<summary>Ghidra tdx_8246.sys Specification extensions Options</summary>


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

</details>


<details>
<summary>Ghidra tdx_8246.sys 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|39|
|added_symbols_len|10|
|deleted_symbols_len|3|
|diff_time|2.6093759536743164|
|deleted_strings_len|0|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 379, 'ExternalsName': 115, 'ExactInstructionsFunctionHasher': 2, 'ExactBytesFunctionHasher': 1})|
|items_to_process|56|
|diff_types|Counter({'refcount': 33, 'address': 32, 'calling': 25, 'code': 9, 'length': 9, 'sig': 7, 'called': 5, 'name': 1, 'fullname': 1})|
|unmatched_funcs_len|4|
|total_funcs_len|772|
|matched_funcs_len|768|
|matched_funcs_with_code_changes_len|9|
|matched_funcs_with_non_code_changes_len|30|
|matched_funcs_no_changes_len|729|
|match_func_similarity_percent|94.9219%|
|func_match_overall_percent|99.4819%|
|first_matches|Counter({'SymbolsHash': 379, 'ExactInstructionsFunctionHasher': 2, 'ExactBytesFunctionHasher': 1})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 379
"ExternalsName" : 115
"ExactBytesFunctionHasher" : 1
"ExactInstructionsFunctionHasher" : 2
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 379
"ExactBytesFunctionHasher" : 1
"ExactInstructionsFunctionHasher" : 2
```



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



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

## Strings


*No string differences found*

# Deleted

# Added

## Feature_2411928891__private_IsEnabledDeviceUsageNoInline

### Function Meta



|Key|tdx_8246.sys|
| :---: | :---: |
|name|Feature_2411928891__private_IsEnabledDeviceUsageNoInline|
|fullname|Feature_2411928891__private_IsEnabledDeviceUsageNoInline|
|refcount|3|
|length|49|
|called|Feature_2411928891__private_IsEnabledFallback|
|calling|TdxDeactivateTransportAddress<br>TdxIssueIoControlRequest|
|paramcount|0|
|address|140014468|
|sig|ulonglong __fastcall Feature_2411928891__private_IsEnabledDeviceUsageNoInline(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_2411928891__private_IsEnabledDeviceUsageNoInline
+++ Feature_2411928891__private_IsEnabledDeviceUsageNoInline
@@ -0,0 +1,17 @@
+
+ulonglong Feature_2411928891__private_IsEnabledDeviceUsageNoInline(void)
+
+{
+  ulonglong uVar1;
+  undefined8 local_res8;
+  
+  local_res8 = (ulonglong)Feature_2411928891__private_featureState;
+  if ((Feature_2411928891__private_featureState & 0x10) == 0) {
+    uVar1 = Feature_2411928891__private_IsEnabledFallback(local_res8,3);
+  }
+  else {
+    uVar1 = (ulonglong)(Feature_2411928891__private_featureState & 1);
+  }
+  return uVar1;
+}
+

```


## Feature_2411928891__private_IsEnabledFallback

### Function Meta



|Key|tdx_8246.sys|
| :---: | :---: |
|name|Feature_2411928891__private_IsEnabledFallback|
|fullname|Feature_2411928891__private_IsEnabledFallback|
|refcount|2|
|length|21|
|called|wil_details_IsEnabledFallback|
|calling|Feature_2411928891__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|
|address|1400144a0|
|sig|undefined __fastcall Feature_2411928891__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_2411928891__private_IsEnabledFallback
+++ Feature_2411928891__private_IsEnabledFallback
@@ -0,0 +1,8 @@
+
+void Feature_2411928891__private_IsEnabledFallback(ulonglong param_1,int param_2)
+
+{
+  wil_details_IsEnabledFallback(param_1,param_2,&Feature_2411928891__private_descriptor);
+  return;
+}
+

```


## Feature_490931514__private_IsEnabledDeviceUsageNoInline

### Function Meta



|Key|tdx_8246.sys|
| :---: | :---: |
|name|Feature_490931514__private_IsEnabledDeviceUsageNoInline|
|fullname|Feature_490931514__private_IsEnabledDeviceUsageNoInline|
|refcount|4|
|length|49|
|called|Feature_490931514__private_IsEnabledFallback|
|calling|TdxIssueListenRequest<br>TdxIssueQueryAddressRequest|
|paramcount|0|
|address|140017e50|
|sig|ulonglong __fastcall Feature_490931514__private_IsEnabledDeviceUsageNoInline(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_490931514__private_IsEnabledDeviceUsageNoInline
+++ Feature_490931514__private_IsEnabledDeviceUsageNoInline
@@ -0,0 +1,17 @@
+
+ulonglong Feature_490931514__private_IsEnabledDeviceUsageNoInline(void)
+
+{
+  ulonglong uVar1;
+  undefined8 local_res8;
+  
+  local_res8 = (ulonglong)Feature_490931514__private_featureState;
+  if ((Feature_490931514__private_featureState & 0x10) == 0) {
+    uVar1 = Feature_490931514__private_IsEnabledFallback(local_res8,3);
+  }
+  else {
+    uVar1 = (ulonglong)(Feature_490931514__private_featureState & 1);
+  }
+  return uVar1;
+}
+

```


## Feature_490931514__private_IsEnabledFallback

### Function Meta



|Key|tdx_8246.sys|
| :---: | :---: |
|name|Feature_490931514__private_IsEnabledFallback|
|fullname|Feature_490931514__private_IsEnabledFallback|
|refcount|2|
|length|21|
|called|wil_details_IsEnabledFallback|
|calling|Feature_490931514__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|
|address|140017e88|
|sig|undefined __fastcall Feature_490931514__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_490931514__private_IsEnabledFallback
+++ Feature_490931514__private_IsEnabledFallback
@@ -0,0 +1,8 @@
+
+void Feature_490931514__private_IsEnabledFallback(ulonglong param_1,int param_2)
+
+{
+  wil_details_IsEnabledFallback(param_1,param_2,&Feature_490931514__private_descriptor);
+  return;
+}
+

```


# Modified


*Modified functions contain code changes*
## wil_details_IsEnabledFallback

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|code,refcount,length,sig,address,calling|
|ratio|0.48|
|i_ratio|0.43|
|m_ratio|0.96|
|b_ratio|0.94|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|fullname|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|`refcount`|2|4|
|`length`|135|140|
|called|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|`calling`|Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback|Feature_2411928891__private_IsEnabledFallback<br>Feature_490931514__private_IsEnabledFallback<br>Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback|
|paramcount|2|3|
|`address`|140016128|140015b74|
|`sig`|uint __fastcall wil_details_IsEnabledFallback(undefined4 * param_1, uint param_2)|uint __fastcall wil_details_IsEnabledFallback(ulonglong param_1, int param_2, undefined8 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_IsEnabledFallback Calling Diff


```diff
--- wil_details_IsEnabledFallback calling
+++ wil_details_IsEnabledFallback calling
@@ -0,0 +1,2 @@
+Feature_2411928891__private_IsEnabledFallback
+Feature_490931514__private_IsEnabledFallback
```


### wil_details_IsEnabledFallback Diff


```diff
--- wil_details_IsEnabledFallback
+++ wil_details_IsEnabledFallback
@@ -1,26 +1,22 @@
 
-uint wil_details_IsEnabledFallback(undefined4 *param_1,uint param_2)
+uint wil_details_IsEnabledFallback(ulonglong param_1,int param_2,undefined8 *param_3)
 
 {
   uint uVar1;
-  undefined4 *puVar2;
-  ulonglong local_res18;
+  ulonglong local_res8;
   
   uVar1 = (uint)param_1;
-  local_res18 = (ulonglong)param_1 & 0xffffffff;
-  if (((ulonglong)param_1 & 2) == 0) {
-    puVar2 = &Feature_Servicing_RacyAccessInNetioTdiSession__private_featureState;
-    local_res18 = wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState
-                            (&Feature_Servicing_RacyAccessInNetioTdiSession__private_featureState,
-                             (ulonglong)param_1,0x14001f3d8);
-    param_1 = puVar2;
-    uVar1 = (uint)local_res18;
+  local_res8 = param_1 & 0xffffffff;
+  if ((param_1 & 2) == 0) {
+    local_res8 = wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState
+                           ((uint *)*param_3,param_1,(longlong)param_3);
+    uVar1 = (uint)local_res8;
   }
   if ((param_2 != 0) &&
-     (wil_details_FeatureReporting_ReportUsageToService(param_1,local_res18,param_2),
-     param_2 - 3 < 2)) {
-    wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath((uint)local_res18,param_2);
+     (wil_details_FeatureReporting_ReportUsageToService((longlong)param_3,local_res8,param_2),
+     param_2 - 3U < 2)) {
+    wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath((uint)local_res8,param_2,param_3);
   }
   return uVar1 & 1;
 }
 

```


## TdxIssueQueryAddressRequest

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|code,refcount,length,sig,address,called|
|ratio|0.08|
|i_ratio|0.11|
|m_ratio|0.76|
|b_ratio|0.04|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|TdxIssueQueryAddressRequest|TdxIssueQueryAddressRequest|
|fullname|TdxIssueQueryAddressRequest|TdxIssueQueryAddressRequest|
|`refcount`|13|8|
|`length`|2172|1246|
|`called`|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceTransportAddress<br>IN6_IS_ADDR_UNSPECIFIED<br>INETADDR_ISV4MAPPED<br>NETIO.SYS::RtlCopyBufferToMdl<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IofCompleteRequest</summary>NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel<br>NTOSKRNL.EXE::RtlGetCallersAddress<br>TdxIncrementTlEndpointReference<br>TdxShutdownEndpointConnection<br>WPP_SF_qdssD<br>WPP_SF_sq<br>__security_check_cookie<br>_guard_dispatch_icall<br>memcpy</details>|<details><summary>Expand for full list:<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransportAddress<br>Feature_490931514__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>TdxDecrementTlEndpointReference<br>TdxIncrementTlEndpointReference<br>TdxQueryAddressComplete<br>WPP_SF_sq</summary>_guard_dispatch_icall</details>|
|calling|TdxQueryInformationConnection<br>TdxQueryInformationTransportAddress<br>TdxTdiDispatchInternalDeviceControl|TdxQueryInformationConnection<br>TdxQueryInformationTransportAddress<br>TdxTdiDispatchInternalDeviceControl|
|paramcount|3|3|
|`address`|140007790|140004cf0|
|`sig`|undefined8 __fastcall TdxIssueQueryAddressRequest(uint * param_1, longlong param_2, ulonglong param_3)|undefined8 __fastcall TdxIssueQueryAddressRequest(uint * param_1, longlong param_2, uint param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### TdxIssueQueryAddressRequest Called Diff


```diff
--- TdxIssueQueryAddressRequest called
+++ TdxIssueQueryAddressRequest called
@@ -1 +0,0 @@
-DbgTdxDereferenceConnection
@@ -2,0 +2 @@
+DbgTdxReferenceConnection
@@ -4,3 +4 @@
-IN6_IS_ADDR_UNSPECIFIED
-INETADDR_ISV4MAPPED
-NETIO.SYS::RtlCopyBufferToMdl
+Feature_490931514__private_IsEnabledDeviceUsageNoInline
@@ -8,5 +5,0 @@
-NTOSKRNL.EXE::ExFreePoolWithTag
-NTOSKRNL.EXE::IoAcquireCancelSpinLock
-NTOSKRNL.EXE::IoReleaseCancelSpinLock
-NTOSKRNL.EXE::IofCompleteRequest
-NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel
@@ -15,2 +8 @@
-NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel
-NTOSKRNL.EXE::RtlGetCallersAddress
+TdxDecrementTlEndpointReference
@@ -18,2 +10 @@
-TdxShutdownEndpointConnection
-WPP_SF_qdssD
+TdxQueryAddressComplete
@@ -21 +11,0 @@
-__security_check_cookie
@@ -23 +12,0 @@
-memcpy
```


### TdxIssueQueryAddressRequest Diff


```diff
--- TdxIssueQueryAddressRequest
+++ TdxIssueQueryAddressRequest
@@ -1,362 +1,198 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
-/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 
-undefined8 TdxIssueQueryAddressRequest(uint *param_1,longlong param_2,ulonglong param_3)
+undefined8 TdxIssueQueryAddressRequest(uint *param_1,longlong param_2,uint param_3)
 
 {
   undefined8 *puVar1;
   byte *pbVar2;
-  uint uVar3;
-  short sVar4;
-  uint *puVar5;
-  short *psVar6;
-  longlong lVar7;
-  longlong *plVar8;
-  code *pcVar9;
-  bool bVar10;
-  byte bVar11;
-  undefined1 uVar12;
-  int iVar13;
-  longlong lVar14;
-  ulonglong uVar15;
-  short *psVar16;
-  ulonglong uVar17;
-  undefined8 uVar18;
-  longlong *plVar19;
-  longlong *plVar20;
-  undefined1 *puVar21;
-  undefined1 *puVar22;
-  undefined8 uVar23;
-  ulonglong uVar24;
-  ushort uVar25;
-  undefined1 auStackY_1a8 [8];
-  undefined1 auStackY_1a0 [24];
-  undefined8 in_stack_fffffffffffffe78;
-  undefined4 uVar26;
-  undefined1 local_168 [8];
-  longlong *local_160;
-  longlong *local_158;
-  uint *local_150;
-  ulonglong local_148 [2];
-  code *local_138;
-  undefined8 *local_130;
-  undefined8 local_128;
-  ulonglong local_120;
-  undefined8 local_118;
-  undefined8 local_110;
-  longlong local_108;
-  undefined8 local_100;
-  longlong local_f8;
-  undefined8 local_f0;
-  undefined8 local_e8;
-  undefined8 local_e0;
-  undefined4 local_d8;
-  undefined4 local_d4;
-  undefined4 local_d0;
-  short local_cc;
-  undefined4 local_ca;
-  undefined8 local_c6;
-  ulonglong local_48;
+  longlong *plVar3;
+  code *pcVar4;
+  bool bVar5;
+  undefined1 uVar6;
+  uint uVar7;
+  longlong lVar8;
+  ulonglong uVar9;
+  undefined8 uVar10;
+  undefined1 *puVar11;
+  uint *puVar12;
+  undefined8 uVar13;
+  undefined1 auStack_b8 [8];
+  undefined1 auStack_b0 [24];
+  uint *local_98;
+  longlong *local_88;
+  longlong *local_80;
+  code *local_78;
+  undefined8 *local_70;
+  undefined8 local_68;
+  undefined8 local_60;
+  undefined8 local_58;
+  undefined8 local_50;
+  longlong local_48;
+  undefined8 local_40;
+  longlong local_38;
+  undefined8 local_30;
   
-  uVar26 = (undefined4)((ulonglong)in_stack_fffffffffffffe78 >> 0x20);
-  puVar22 = auStackY_1a8;
-  puVar21 = auStackY_1a8;
-  local_48 = __security_cookie ^ (ulonglong)auStackY_1a8;
-  plVar20 = (longlong *)(param_3 & 0xff);
-  local_168[0] = (undefined1)param_3;
-  local_128 = 0;
-  local_120 = (ulonglong)(uint)local_120;
-  local_f8 = 0;
-  local_f0 = 0;
+  uVar7 = param_3 & 0xff;
+  puVar12 = param_1;
   if (param_1[1] == 2) {
-    puVar22 = auStackY_1a8;
-    if ((*(longlong *)(param_1 + 0x48) != 0) && (puVar22 = auStackY_1a8, -1 < (char)*param_1)) {
-      bVar10 = true;
-      local_150 = param_1;
-LAB_0:
-      puVar5 = local_150;
-      uVar18 = 0x80;
-      uVar23 = 0x49786454;
-      lVar14 = ExAllocatePool2(0x40);
-      if (lVar14 == 0) {
-        KeReleaseSpinLock(param_1 + 2,param_3 & 0xff);
-        uVar18 = 0xc0000017;
-        goto LAB_1;
+    puVar11 = auStack_b8;
+    if ((*(longlong *)(param_1 + 0x48) == 0) || (puVar11 = auStack_b8, (char)*param_1 < '\0'))
+    goto LAB_0;
+    bVar5 = true;
+  }
+  else {
+    bVar5 = false;
+    puVar11 = auStack_b8;
+    if ((*param_1 & 4) == 0) goto LAB_0;
+    if (((*param_1 & 0x40) != 0) &&
+       (puVar12 = *(uint **)(param_1 + 0x80), *(uint **)(param_1 + 0x80) == (uint *)0x0)) {
+      KeReleaseSpinLock(param_1 + 2,param_3 & 0xff);
+      return 0xc0000141;
+    }
+    if ((*puVar12 & 0x10) != 0) {
+      if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+          (2 < (byte)WPP_GLOBAL_Control[0x29])) &&
+         ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
+        local_98 = param_1;
+        WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),10,
+                  &WPP_15646967347f39177e3f7c112ae07cdc_Traceguids,"TdxIssueQueryAddressRequest");
       }
-      puVar1 = (undefined8 *)(param_2 + 0x78);
-      *puVar1 = param_1;
-      *(longlong *)(param_2 + 0x80) = param_2;
-      *(undefined8 *)(param_2 + 0x88) = 0;
-      *(longlong *)(param_2 + 0x90) = lVar14;
-      if (bVar10) {
-        TdxIncrementTlEndpointReference((longlong)param_1,uVar18,uVar23);
-        bVar11 = KeAcquireSpinLockRaiseToDpc(param_1 + 0x5c);
-        plVar20 = (longlong *)(ulonglong)bVar11;
-        local_148[0] = 0;
-        local_e8 = param_1 + (ulonglong)param_1[0x9e] * 8 + 0x5e;
-        local_e8[6] = param_1[4] + 1;
-        local_e8[2] = 699;
-        *(char **)local_e8 = "TdxIssueQueryAddressRequest";
-        RtlGetCallersAddress(local_148,local_e8 + 4);
-        param_1[0x9e] = param_1[0x9e] + 1 & 7;
-        plVar19 = plVar20;
-        KeReleaseSpinLock(param_1 + 0x5c);
-        if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-            (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
-           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
-          WPP_SF_qdssD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),plVar19,uVar23,param_1,
-                       CONCAT44(uVar26,local_e8[6]),"++","TdxIssueQueryAddressRequest");
+      KeReleaseSpinLock(param_1 + 2,uVar7);
+      return 0x80000011;
+    }
+  }
+  uVar10 = 0x80;
+  uVar13 = 0x49786454;
+  lVar8 = ExAllocatePool2(0x40);
+  if (lVar8 == 0) {
+    KeReleaseSpinLock(param_1 + 2,uVar7);
+    return 0xc0000017;
+  }
+  puVar1 = (undefined8 *)(param_2 + 0x78);
+  *puVar1 = param_1;
+  *(longlong *)(param_2 + 0x80) = param_2;
+  *(undefined8 *)(param_2 + 0x88) = 0;
+  *(longlong *)(param_2 + 0x90) = lVar8;
+  if (bVar5) {
+    TdxIncrementTlEndpointReference((longlong)param_1,uVar10,uVar13);
+    DbgTdxReferenceConnection((longlong)param_1,"TdxIssueQueryAddressRequest",0x2d7);
+    plVar3 = *(longlong **)(param_1 + 0x52);
+    if ((uint *)*plVar3 == param_1 + 0x50) {
+      local_88 = (longlong *)(param_2 + 0xa8);
+      *plVar3 = (longlong)&local_88;
+      *(longlong ***)(param_1 + 0x52) = &local_88;
+      *local_88 = (longlong)(param_1 + 0x50);
+      *(longlong ***)(param_2 + 0xb0) = &local_88;
+      *(longlong **)(param_1 + 0x52) = local_88;
+      local_80 = plVar3;
+LAB_1:
+      KeReleaseSpinLock(param_1 + 2,uVar7);
+      pbVar2 = (byte *)(*(longlong *)(param_2 + 0xb8) + 3);
+      *pbVar2 = *pbVar2 | 1;
+      LOCK();
+      *(code **)(param_2 + 0x68) = TdxQueryInformationCancelRoutine;
+      UNLOCK();
+      local_68 = 0;
+      local_78 = TdxQueryAddressComplete;
+      local_60 = 0x10;
+      local_38 = 0;
+      local_30 = 0;
+      local_58 = 0;
+      local_50 = 0;
+      local_40 = 0x80;
+      local_70 = puVar1;
+      local_48 = lVar8;
+      if (bVar5) {
+        uVar7 = (**(code **)(*(longlong *)(param_1 + 0x42) + 8))(*(undefined8 *)(param_1 + 0x48));
+        TdxDecrementTlEndpointReference(param_1,0,0);
+      }
+      else {
+        if ((Feature_490931514__private_featureState & 0x10) == 0) {
+          uVar9 = Feature_490931514__private_IsEnabledDeviceUsageNoInline();
+          uVar7 = (uint)uVar9;
         }
-        LOCK();
-        param_1[4] = param_1[4] + 1;
-        UNLOCK();
-        plVar19 = *(longlong **)(param_1 + 0x52);
-        if ((uint *)*plVar19 == param_1 + 0x50) {
-          local_160 = (longlong *)(param_2 + 0xa8);
-          *plVar19 = (longlong)&local_160;
-          *(longlong ***)(param_1 + 0x52) = &local_160;
-          *local_160 = (longlong)(param_1 + 0x50);
-          *(longlong ***)(param_2 + 0xb0) = &local_160;
-          *(longlong **)(param_1 + 0x52) = local_160;
-          local_158 = plVar19;
-LAB_2:
-          plVar20 = (longlong *)(param_2 + 0xa8);
-          KeReleaseSpinLock(param_1 + 2,local_168[0]);
-          puVar5 = local_150;
-          pbVar2 = (byte *)(*(longlong *)(param_2 + 0xb8) + 3);
-          *pbVar2 = *pbVar2 | 1;
-          LOCK();
-          *(code **)(param_2 + 0x68) = TdxQueryInformationCancelRoutine;
-          UNLOCK();
-          local_128 = 0;
-          local_138 = TdxQueryAddressComplete;
-          local_120 = 0x10;
-          local_f8 = 0;
-          local_f0 = 0;
-          local_118 = 0;
-          local_110 = 0;
-          local_100 = 0x80;
-          local_130 = puVar1;
-          local_108 = lVar14;
-          if (bVar10) {
-            iVar13 = (**(code **)(*(longlong *)(param_1 + 0x42) + 8))
-                               (*(undefined8 *)(param_1 + 0x48),&local_138);
-            LOCK();
-            puVar5 = param_1 + 0x12;
-            uVar3 = *puVar5;
-            *puVar5 = *puVar5 - 1;
-            UNLOCK();
-            if (uVar3 == 1) {
-              uVar12 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
-              TdxShutdownEndpointConnection(param_1,uVar12);
+        else {
+          uVar7 = Feature_490931514__private_featureState & 1;
+        }
+        if (uVar7 == 0) {
+          lVar8 = *(longlong *)(puVar12 + 0x52);
+          if (lVar8 == 0) {
+            lVar8 = *(longlong *)(puVar12 + 0x54);
+          }
+          uVar7 = (**(code **)(lVar8 + 8))(*(undefined8 *)(puVar12 + 0x50),&local_78);
+        }
+        else {
+          uVar6 = KeAcquireSpinLockRaiseToDpc(puVar12 + 2);
+          if (((byte)*puVar12 & 0x14) == 4) {
+            puVar12[0x88] = puVar12[0x88] + 1;
+            KeReleaseSpinLock();
+            lVar8 = *(longlong *)(puVar12 + 0x52);
+            if (lVar8 == 0) {
+              lVar8 = *(longlong *)(puVar12 + 0x54);
             }
-            DbgTdxDereferenceConnection((longlong)param_1,"TdxDecrementTlEndpointReference",0x170);
+            uVar7 = (**(code **)(lVar8 + 8))(*(undefined8 *)(puVar12 + 0x50),&local_78);
+            uVar6 = KeAcquireSpinLockRaiseToDpc(puVar12 + 2);
+            puVar12[0x88] = puVar12[0x88] - 1;
+            KeReleaseSpinLock(puVar12 + 2,uVar6);
           }
           else {
-            lVar14 = *(longlong *)(local_150 + 0x52);
-            if (lVar14 == 0) {
-              lVar14 = *(longlong *)(local_150 + 0x54);
-            }
-            iVar13 = (**(code **)(lVar14 + 8))(*(undefined8 *)(local_150 + 0x50));
-            if (puVar5 != param_1) {
-              DbgTdxDereferenceTransportAddress
-                        ((longlong)puVar5,"minio\\netio\\session\\tdi\\request.c",0x2eb);
-            }
-          }
-          uVar12 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
-          if (iVar13 == 0x103) {
-            if ((local_f8 != 0) && (local_160 == plVar20)) {
-              *(longlong *)(param_2 + 0x88) = local_f8;
-            }
-            if (((longlong **)local_160[1] != &local_160) || ((longlong **)*local_158 != &local_160)
-               ) goto LAB_3;
-            *local_158 = (longlong)local_160;
-            local_160[1] = (longlong)local_158;
-            KeReleaseSpinLock(param_1 + 2,uVar12);
-LAB_4:
-            uVar18 = 0x103;
-            puVar21 = auStackY_1a8;
-            goto LAB_1;
-          }
-          if (((longlong **)local_160[1] == &local_160) && ((longlong **)*local_158 == &local_160))
-          {
-            *local_158 = (longlong)local_160;
-            local_160[1] = (longlong)local_158;
-            KeReleaseSpinLock(param_1 + 2,uVar12);
-            puVar5 = (uint *)*puVar1;
-            lVar14 = *(longlong *)(param_2 + 0x80);
-            psVar6 = *(short **)(param_2 + 0x90);
-            uVar12 = KeAcquireSpinLockRaiseToDpc(puVar5 + 2);
-            plVar19 = (longlong *)(lVar14 + 0xa8);
-            lVar7 = *plVar19;
-            if ((*(longlong **)(lVar7 + 8) == plVar19) &&
-               (plVar8 = *(longlong **)(lVar14 + 0xb0), (longlong *)*plVar8 == plVar19)) {
-              uVar24 = 0;
-              *plVar8 = lVar7;
-              *(longlong **)(lVar7 + 8) = plVar8;
-              LOCK();
-              lVar7 = *(longlong *)(lVar14 + 0x68);
-              *(longlong *)(lVar14 + 0x68) = 0;
-              UNLOCK();
-              if (lVar7 == 0) {
-                local_168[0] = 0;
-                KeReleaseSpinLockFromDpcLevel(puVar5 + 2);
-                IoAcquireCancelSpinLock(local_168);
-                IoReleaseCancelSpinLock(local_168[0]);
-                KeAcquireSpinLockAtDpcLevel(puVar5 + 2);
-              }
-              if (puVar5[1] == 1) {
-                bVar11 = (byte)(*puVar5 >> 6);
-              }
-              else {
-                bVar11 = (byte)(*puVar5 >> 0xb);
-              }
-              bVar11 = bVar11 & 1;
-              KeReleaseSpinLock(puVar5 + 2,uVar12);
-              *(undefined8 *)(lVar14 + 0x38) = 0;
-              if (iVar13 == 0) {
-                local_d8 = 0;
-                if (bVar11 == 0) {
-LAB_5:
-                  sVar4 = *psVar6;
-                  if (sVar4 == 0x23) {
-LAB_6:
-                    uVar25 = 0xe;
-                  }
-                  else {
-                    if (sVar4 != 0x17) {
-                      if (sVar4 != 2) goto LAB_7;
-                      goto LAB_6;
-                    }
-                    uVar25 = 0xe;
-                    if (bVar11 == 0) {
-                      uVar25 = 0x1a;
-                    }
-                  }
-                  local_d4 = 1;
-                  if (bVar11 == 0) {
-                    local_d0 = CONCAT22(*psVar6,uVar25);
-                    memcpy(&local_cc,psVar6 + 1,(ulonglong)uVar25);
-                  }
-                  else {
-                    local_d0 = CONCAT22(2,uVar25);
-                    local_cc = psVar6[1];
-                    psVar16 = psVar6 + 10;
-                    if (*psVar6 != 0x17) {
-                      psVar16 = psVar6 + 8;
-                    }
-                    local_ca = *(undefined4 *)psVar16;
-                    local_c6 = 0;
-                  }
-                  uVar24 = (ulonglong)uVar25 + 8;
-                }
-                else {
-                  if ((*psVar6 != 0x17) ||
-                     (uVar18 = IN6_IS_ADDR_UNSPECIFIED(psVar6 + 4), (char)uVar18 == '\0')) {
-                    if (bVar11 != 0) {
-                      uVar17 = INETADDR_ISV4MAPPED(psVar6);
-                      uVar15 = (ulonglong)bVar11;
-                      if ((char)uVar17 == '\0') {
-                        uVar15 = uVar24;
-                      }
-                      bVar11 = (byte)uVar15;
-                    }
-                    goto LAB_5;
-                  }
-                  local_e0 = 0;
-                  local_e8 = (uint *)(ulonglong)CONCAT22(psVar6[1],2);
-                  local_d4 = 1;
-                  local_d0 = 0x2000e;
-                  memcpy(&local_cc,(void *)((longlong)&local_e8 + 2),0xe);
-                  uVar24 = 0x16;
-                }
-LAB_7:
-                uVar15 = 0x86;
-                local_148[0] = uVar24;
-                if (uVar24 == 0) {
-                  iVar13 = -0x3fffffdd;
-                }
-                else {
-                  RtlCopyBufferToMdl(&local_d8,*(undefined8 *)(lVar14 + 8),0,uVar24 + 4);
-                  uVar15 = local_148[0];
-                  iVar13 = 0;
-                }
-                *(ulonglong *)(lVar14 + 0x38) = uVar15;
-              }
-              *(int *)(lVar14 + 0x30) = iVar13;
-              if (puVar5[1] == 2) {
-                DbgTdxDereferenceConnection((longlong)puVar5,"TdxQueryAddressComplete",0x1c9);
-              }
-              else {
-                DbgTdxDereferenceTransportAddress
-                          ((longlong)puVar5,"minio\\netio\\session\\tdi\\request.c",0x1cb);
-              }
-              ExFreePoolWithTag(psVar6,0x49786454);
-              IofCompleteRequest(lVar14,0);
-              goto LAB_4;
-            }
+            KeReleaseSpinLock(puVar12 + 2,uVar6);
+            uVar7 = 0x80000011;
           }
         }
-      }
-      else {
-        DbgTdxReferenceTransportAddress
-                  ((longlong)param_1,"minio\\netio\\session\\tdi\\request.c",0x2c0);
-        plVar19 = *(longlong **)(param_1 + 0x84);
-        if ((uint *)*plVar19 == param_1 + 0x82) {
-          local_160 = (longlong *)(param_2 + 0xa8);
-          *plVar19 = (longlong)&local_160;
-          *(longlong ***)(param_1 + 0x84) = &local_160;
-          *local_160 = (longlong)(param_1 + 0x82);
-          *(longlong ***)(param_2 + 0xb0) = &local_160;
-          *(longlong **)(param_1 + 0x84) = local_160;
-          local_158 = plVar19;
-          if (puVar5 != param_1) {
-            DbgTdxReferenceTransportAddress
-                      ((longlong)puVar5,"minio\\netio\\session\\tdi\\request.c",0x2c5);
-          }
-          goto LAB_2;
+        if (puVar12 != param_1) {
+          DbgTdxDereferenceTransportAddress
+                    ((longlong)puVar12,"minio\\netio\\session\\tdi\\request.c",0x328);
         }
       }
-LAB_3:
-      param_1 = (uint *)0x3;
-      pcVar9 = (code *)swi(0x29);
-      (*pcVar9)(3);
-      puVar22 = auStackY_1a0;
+      uVar6 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
+      if (uVar7 == 0x103) {
+        if ((local_38 != 0) && (local_88 == (longlong *)(param_2 + 0xa8))) {
+          *(longlong *)(param_2 + 0x88) = local_38;
+        }
+        if (((longlong **)local_88[1] == &local_88) && ((longlong **)*local_80 == &local_88)) {
+          *local_80 = (longlong)local_88;
+          local_88[1] = (longlong)local_80;
+          KeReleaseSpinLock(param_1 + 2,uVar6);
+          return 0x103;
+        }
+      }
+      else if (((longlong **)local_88[1] == &local_88) && ((longlong **)*local_80 == &local_88)) {
+        *local_80 = (longlong)local_88;
+        local_88[1] = (longlong)local_80;
+        KeReleaseSpinLock(param_1 + 2,uVar6);
+        TdxQueryAddressComplete(puVar1,uVar7);
+        return 0x103;
+      }
     }
   }
   else {
-    bVar10 = false;
-    if ((*param_1 & 4) != 0) {
-      local_150 = param_1;
-      if (((*param_1 & 0x40) != 0) &&
-         (local_150 = *(uint **)(param_1 + 0x80), local_150 == (uint *)0x0)) {
-        KeReleaseSpinLock(param_1 + 2,param_3 & 0xff);
-        uVar18 = 0xc0000141;
-        puVar21 = auStackY_1a8;
-        goto LAB_1;
+    DbgTdxReferenceTransportAddress((longlong)param_1,"minio\\netio\\session\\tdi\\request.c",0x2dc)
+    ;
+    plVar3 = *(longlong **)(param_1 + 0x84);
+    if ((uint *)*plVar3 == param_1 + 0x82) {
+      local_88 = (longlong *)(param_2 + 0xa8);
+      *plVar3 = (longlong)&local_88;
+      *(longlong ***)(param_1 + 0x84) = &local_88;
+      *local_88 = (longlong)(param_1 + 0x82);
+      *(longlong ***)(param_2 + 0xb0) = &local_88;
+      *(longlong **)(param_1 + 0x84) = local_88;
+      local_80 = plVar3;
+      if (puVar12 != param_1) {
+        DbgTdxReferenceTransportAddress
+                  ((longlong)puVar12,"minio\\netio\\session\\tdi\\request.c",0x2e1);
       }
-      if ((*local_150 & 0x10) != 0) {
-        if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-            (2 < (byte)WPP_GLOBAL_Control[0x29])) &&
-           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
-          WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),10,
-                    &WPP_cb226b30604f3d6eadaf597b1f1e15e4_Traceguids,"TdxIssueQueryAddressRequest");
-        }
-        KeReleaseSpinLock(param_1 + 2,param_3 & 0xff);
-        uVar18 = 0x80000011;
-        puVar21 = auStackY_1a8;
-        goto LAB_1;
-      }
-      goto LAB_0;
+      goto LAB_1;
     }
   }
-  *(undefined8 *)(puVar22 + -8) = 0x140007ffe;
-  KeReleaseSpinLock(param_1 + 2,(ulonglong)plVar20 & 0xff);
-  uVar18 = 0xc000000d;
-  puVar21 = puVar22;
-LAB_1:
-  *(undefined8 *)(puVar21 + -8) = 0x140007c1a;
-  return uVar18;
+  param_1 = (uint *)0x3;
+  pcVar4 = (code *)swi(0x29);
+  (*pcVar4)(3);
+  puVar11 = auStack_b0;
+LAB_0:
+  *(undefined8 *)(puVar11 + -8) = 0x1400051c3;
+  KeReleaseSpinLock(param_1 + 2,uVar7 & 0xff);
+  return 0xc000000d;
 }
 

```


## TdxIssueListenRequest

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.19|
|i_ratio|0.27|
|m_ratio|0.74|
|b_ratio|0.57|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|TdxIssueListenRequest|TdxIssueListenRequest|
|fullname|TdxIssueListenRequest|TdxIssueListenRequest|
|refcount|3|3|
|`length`|349|588|
|`called`|DbgTdxDereferenceTransport<br>DbgTdxReferenceTransportAddress<br>NTOSKRNL.EXE::KeInitializeEvent<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>TdxListenRequestComplete<br>TdxLockedObjectHeaderToTransport<br>_guard_dispatch_icall<br>memset|<details><summary>Expand for full list:<br>DbgTdxDereferenceTransport<br>DbgTdxReferenceTransportAddress<br>Feature_490931514__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeDelayExecutionThread<br>NTOSKRNL.EXE::KeInitializeEvent<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::RtlLogUnexpectedCodepath<br>TdxListenRequestComplete<br>TdxLockedObjectHeaderToTransport<br>__security_check_cookie</summary>_guard_dispatch_icall<br>memset</details>|
|calling|TdxListenTransportAddress<br>TdxTdiDispatchInternalDeviceControl|TdxListenTransportAddress<br>TdxTdiDispatchInternalDeviceControl|
|paramcount|2|2|
|`address`|14000b028|140012194|
|sig|undefined __fastcall TdxIssueListenRequest(uint * param_1, undefined1 param_2)|undefined __fastcall TdxIssueListenRequest(uint * param_1, undefined1 param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### TdxIssueListenRequest Called Diff


```diff
--- TdxIssueListenRequest called
+++ TdxIssueListenRequest called
@@ -2,0 +3,3 @@
+Feature_490931514__private_IsEnabledDeviceUsageNoInline
+NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc
+NTOSKRNL.EXE::KeDelayExecutionThread
@@ -4,0 +8 @@
+NTOSKRNL.EXE::RtlLogUnexpectedCodepath
@@ -6,0 +11 @@
+__security_check_cookie
```


### TdxIssueListenRequest Diff


```diff
--- TdxIssueListenRequest
+++ TdxIssueListenRequest
@@ -1,58 +1,108 @@
 
+/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 
 void TdxIssueListenRequest(uint *param_1,undefined1 param_2)
 
 {
-  int iVar1;
-  longlong lVar2;
-  undefined8 local_98;
-  undefined8 uStack_90;
-  undefined8 local_88;
-  code *local_78;
+  bool bVar1;
+  uint uVar2;
+  int iVar3;
+  longlong lVar4;
+  ulonglong uVar5;
+  uint uVar6;
+  undefined1 auStack_f8 [32];
+  undefined8 local_d8;
+  undefined8 local_d0;
+  undefined8 uStack_c8;
+  undefined8 local_c0;
+  code *local_b8;
+  uint *local_b0;
+  undefined4 local_a8;
+  undefined8 local_a0;
+  uint *local_78;
   uint *local_70;
-  undefined4 local_68;
-  undefined8 local_60;
-  uint *local_38;
-  uint *local_30;
-  undefined8 local_28;
-  undefined **local_20;
-  undefined8 local_18;
+  undefined8 local_68;
+  undefined **local_60;
+  undefined8 local_58;
+  undefined4 local_48;
+  undefined4 local_44;
+  undefined4 local_40;
+  ulonglong local_38;
   
-  memset(&local_78,0,0x68);
-  DbgTdxReferenceTransportAddress((longlong)param_1,"minio\\netio\\session\\tdi\\request.c",0xaa);
-  lVar2 = TdxLockedObjectHeaderToTransport((longlong)param_1);
-  if (lVar2 == 0) {
+  local_38 = __security_cookie ^ (ulonglong)auStack_f8;
+  memset(&local_b8,0,0x68);
+  uVar6 = 0;
+  bVar1 = false;
+  DbgTdxReferenceTransportAddress((longlong)param_1,"minio\\netio\\session\\tdi\\request.c",0xac);
+  lVar4 = TdxLockedObjectHeaderToTransport((longlong)param_1);
+  if (lVar4 == 0) {
     KeReleaseSpinLock(param_1 + 2,param_2);
-    iVar1 = -0x3ffffff0;
+    iVar3 = -0x3ffffff0;
   }
   else {
-    local_88 = 0;
-    local_98 = 0;
-    uStack_90 = 0;
-    KeInitializeEvent(&local_98,1,0);
-    local_78 = TdxListenRequestComplete;
-    local_68 = 0x80000000;
+    local_c0 = 0;
+    local_d0 = 0;
+    uStack_c8 = 0;
+    KeInitializeEvent(&local_d0,1,0);
+    local_b8 = TdxListenRequestComplete;
+    local_a8 = 0x80000000;
     if ((*param_1 & 0x20) != 0) {
-      local_68 = 0x80000001;
+      local_a8 = 0x80000001;
     }
-    local_60 = *(undefined8 *)(param_1 + 0x50);
-    param_1[0x50] = 0;
-    param_1[0x51] = 0;
-    local_38 = param_1 + 0x30;
+    local_a0 = *(undefined8 *)(param_1 + 0x50);
+    local_b0 = param_1;
+    if ((Feature_490931514__private_featureState & 0x10) == 0) {
+      uVar5 = Feature_490931514__private_IsEnabledDeviceUsageNoInline();
+      uVar2 = (uint)uVar5;
+    }
+    else {
+      uVar2 = Feature_490931514__private_featureState & 1;
+    }
+    if (uVar2 == 0) {
+      param_1[0x50] = 0;
+      param_1[0x51] = 0;
+    }
+    local_78 = param_1 + 0x30;
+    local_60 = &TdxTransportAddressListenDispatch;
+    local_70 = param_1;
+    if ((Feature_490931514__private_featureState & 0x10) == 0) {
+      uVar5 = Feature_490931514__private_IsEnabledDeviceUsageNoInline();
+      uVar2 = (uint)uVar5;
+    }
+    else {
+      uVar2 = Feature_490931514__private_featureState & 1;
+    }
+    if (uVar2 != 0) {
+      uVar2 = param_1[0x88];
+      while (uVar2 != 0) {
+        KeReleaseSpinLock(param_1 + 2,param_2);
+        local_d8 = 0xffffffffffffd8f0;
+        KeDelayExecutionThread(0,0,&local_d8);
+        param_2 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
+        uVar6 = uVar6 + 1;
+        if ((9999 < uVar6) && (!bVar1)) {
+          local_40 = 0;
+          bVar1 = true;
+          local_48 = 0x39d0ecd;
+          local_44 = 1;
+          RtlLogUnexpectedCodepath(&local_48);
+        }
+        uVar2 = param_1[0x88];
+      }
+      param_1[0x50] = 0;
+      param_1[0x51] = 0;
+    }
     *param_1 = *param_1 | 0x10;
-    local_20 = &TdxTransportAddressListenDispatch;
-    local_70 = param_1;
-    local_30 = param_1;
-    KeReleaseSpinLock(param_1 + 2,CONCAT71(0x800000,param_2));
-    iVar1 = (**(code **)(*(longlong *)(lVar2 + 0x50) + 0x20))
-                      (*(undefined8 *)(lVar2 + 0x48),&local_78);
-    DbgTdxDereferenceTransport(lVar2,"minio\\netio\\session\\tdi\\request.c",0xcc);
-    if (iVar1 == 0x103) {
+    KeReleaseSpinLock(param_1 + 2,param_2);
+    iVar3 = (**(code **)(*(longlong *)(lVar4 + 0x50) + 0x20))
+                      (*(undefined8 *)(lVar4 + 0x48),&local_b8);
+    DbgTdxDereferenceTransport(lVar4,"minio\\netio\\session\\tdi\\request.c",0xe7);
+    if (iVar3 == 0x103) {
       return;
     }
   }
-  TdxListenRequestComplete(param_1,iVar1,local_28,local_18);
+  TdxListenRequestComplete(param_1,iVar3,local_68,local_58);
   return;
 }
 

```


## wil_details_FeatureReporting_ReportUsageToServiceDirect

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.35|
|i_ratio|0.53|
|m_ratio|0.95|
|b_ratio|0.95|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|wil_details_FeatureReporting_ReportUsageToServiceDirect|wil_details_FeatureReporting_ReportUsageToServiceDirect|
|fullname|wil_details_FeatureReporting_ReportUsageToServiceDirect|wil_details_FeatureReporting_ReportUsageToServiceDirect|
|refcount|2|2|
|`length`|226|232|
|called|NTOSKRNL.EXE::RtlNotifyFeatureUsage<br>__security_check_cookie<br>_guard_dispatch_icall<br>wil_details_FeatureReporting_RecordUsageInCache|NTOSKRNL.EXE::RtlNotifyFeatureUsage<br>__security_check_cookie<br>_guard_dispatch_icall<br>wil_details_FeatureReporting_RecordUsageInCache|
|calling|wil_details_FeatureReporting_ReportUsageToService|wil_details_FeatureReporting_ReportUsageToService|
|paramcount|3|3|
|`address`|140015d78|1400157b0|
|`sig`|bool __fastcall wil_details_FeatureReporting_ReportUsageToServiceDirect(undefined8 param_1, undefined8 param_2, ulonglong param_3)|bool __fastcall wil_details_FeatureReporting_ReportUsageToServiceDirect(longlong param_1, undefined8 param_2, ulonglong param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_FeatureReporting_ReportUsageToServiceDirect Diff


```diff
--- wil_details_FeatureReporting_ReportUsageToServiceDirect
+++ wil_details_FeatureReporting_ReportUsageToServiceDirect
@@ -1,49 +1,46 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 
 bool wil_details_FeatureReporting_ReportUsageToServiceDirect
-               (undefined8 param_1,undefined8 param_2,ulonglong param_3)
+               (longlong param_1,undefined8 param_2,ulonglong param_3)
 
 {
   uint6 uVar1;
   uint *puVar2;
-  undefined1 auStack_88 [32];
-  uint *local_68;
-  undefined8 local_58;
-  uint local_50 [6];
-  uint local_38;
-  uint uStack_34;
-  uint uStack_30;
-  uint uStack_2c;
-  undefined8 local_28;
-  ulonglong local_20;
+  undefined1 auStack_98 [32];
+  uint *local_78;
+  undefined8 local_68;
+  uint local_60 [6];
+  uint local_48;
+  uint uStack_44;
+  uint uStack_40;
+  uint uStack_3c;
+  undefined8 local_38;
+  ulonglong local_30;
   
-  local_20 = __security_cookie ^ (ulonglong)auStack_88;
+  local_30 = __security_cookie ^ (ulonglong)auStack_98;
   puVar2 = wil_details_FeatureReporting_RecordUsageInCache
-                     (local_50,(uint *)&
-                                       Feature_Servicing_RacyAccessInNetioTdiSession__private_reporting
-                      ,param_3,(uint)((ulonglong)param_2 >> 0x20));
-  local_38 = *puVar2;
-  uStack_34 = puVar2[1];
-  uStack_30 = puVar2[2];
-  uStack_2c = puVar2[3];
-  local_28 = *(undefined8 *)(puVar2 + 4);
+                     (local_60,*(uint **)(param_1 + 8),param_3,(uint)((ulonglong)param_2 >> 0x20));
+  local_48 = *puVar2;
+  uStack_44 = puVar2[1];
+  uStack_40 = puVar2[2];
+  uStack_3c = puVar2[3];
+  local_38 = *(undefined8 *)(puVar2 + 4);
   if (g_wil_details_recordFeatureUsage != (code *)0x0) {
-    local_68 = &local_38;
+    local_78 = &local_48;
     (*g_wil_details_recordFeatureUsage)
-              (0x3958182,param_3 & 0xffffffff,1,
-               &Feature_Servicing_RacyAccessInNetioTdiSession__private_reporting);
+              (*(undefined4 *)(param_1 + 0x18),param_3 & 0xffffffff,1,*(undefined8 *)(param_1 + 8));
   }
   if ((((uint)param_2 >> 10 & 1) != 0) && ((int)param_3 != 0xfe)) {
-    local_58._0_6_ = CONCAT24((short)(param_3 & 0xffffffff),0x3958182);
-    uVar1 = (uint6)local_58;
-    local_58 = (ulonglong)(uint6)local_58;
+    local_68._0_6_ = CONCAT24((short)(param_3 & 0xffffffff),*(undefined4 *)(param_1 + 0x18));
+    uVar1 = (uint6)local_68;
+    local_68 = (ulonglong)(uint6)local_68;
     if (((uint)param_2 >> 0xb & 1) != 0) {
-      local_58 = CONCAT26(1,uVar1);
+      local_68 = CONCAT26(1,uVar1);
     }
-    RtlNotifyFeatureUsage(&local_58);
+    RtlNotifyFeatureUsage(&local_68);
   }
-  return (int)local_28 == 0;
+  return (int)local_38 == 0;
 }
 

```


## TdxDeactivateTransportAddress

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|code,refcount,length,address,called|
|ratio|0.18|
|i_ratio|0.11|
|m_ratio|0.85|
|b_ratio|0.17|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|TdxDeactivateTransportAddress|TdxDeactivateTransportAddress|
|fullname|TdxDeactivateTransportAddress|TdxDeactivateTransportAddress|
|`refcount`|13|3|
|`length`|3583|2470|
|`called`|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransportAddress<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeInitializeEvent<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel<br>NTOSKRNL.EXE::KeWaitForSingleObject</summary>NTOSKRNL.EXE::RtlGetCallersAddress<br>TdxCleanupObjectHeader<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxReissueConnectWhileListenRequests<br>TdxShutdownEndpointConnection<br>WPP_SF_q<br>WPP_SF_qdssD<br>WPP_SF_qs<br>WPP_SF_sq<br>_guard_dispatch_icall</details>|<details><summary>Expand for full list:<br>DbgTdxDereferenceTransportAddress<br>Feature_2411928891__private_IsEnabledDeviceUsageNoInline<br>Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeDelayExecutionThread<br>NTOSKRNL.EXE::KeInitializeEvent<br>NTOSKRNL.EXE::KeReleaseSpinLock</summary>NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel<br>NTOSKRNL.EXE::KeWaitForSingleObject<br>NTOSKRNL.EXE::RtlGetCallersAddress<br>NTOSKRNL.EXE::RtlLogUnexpectedCodepath<br>TdxDecrementTlEndpointReference<br>TdxDisassociateConnectionFromTransportAddress<br>TdxReissueConnectWhileListenRequests<br>TdxShutdownEndpointConnection<br>WPP_SF_q<br>WPP_SF_qdssD<br>WPP_SF_qs<br>WPP_SF_sq<br>__security_check_cookie<br>_guard_dispatch_icall</details>|
|calling|TdxDeactivateTransport<br>TdxDeleteTransportAddress|TdxDeactivateTransport<br>TdxDeleteTransportAddress|
|paramcount|1|1|
|`address`|1400085f0|14000e2c0|
|sig|undefined __fastcall TdxDeactivateTransportAddress(uint * param_1)|undefined __fastcall TdxDeactivateTransportAddress(uint * param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### TdxDeactivateTransportAddress Called Diff


```diff
--- TdxDeactivateTransportAddress called
+++ TdxDeactivateTransportAddress called
@@ -1 +0,0 @@
-DbgTdxDereferenceConnection
@@ -2,0 +2,2 @@
+Feature_2411928891__private_IsEnabledDeviceUsageNoInline
+Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledDeviceUsageNoInline
@@ -7,0 +9 @@
+NTOSKRNL.EXE::KeDelayExecutionThread
@@ -13,2 +15,3 @@
-TdxCleanupObjectHeader
-TdxCloseConnectionEndpointTlRequestComplete
+NTOSKRNL.EXE::RtlLogUnexpectedCodepath
+TdxDecrementTlEndpointReference
+TdxDisassociateConnectionFromTransportAddress
@@ -20,0 +24 @@
+__security_check_cookie
```


### TdxDeactivateTransportAddress Diff


```diff
--- TdxDeactivateTransportAddress
+++ TdxDeactivateTransportAddress
@@ -1,488 +1,393 @@
 
+/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
-/* WARNING: Type propagation algorithm not settling */
 
 void TdxDeactivateTransportAddress(uint *param_1)
 
 {
-  longlong *******ppppppplVar1;
-  longlong ******pppppplVar2;
-  longlong *plVar3;
+  longlong ******pppppplVar1;
+  longlong *****ppppplVar2;
+  uint *puVar3;
   longlong ******pppppplVar4;
-  longlong *******ppppppplVar5;
-  code *pcVar6;
-  bool bVar7;
-  undefined1 uVar8;
+  code *pcVar5;
+  bool bVar6;
+  undefined1 uVar7;
+  byte bVar8;
   byte bVar9;
-  int iVar10;
-  uint uVar11;
-  undefined8 *puVar12;
-  longlong *******ppppppplVar13;
-  ulonglong uVar14;
-  uint *puVar15;
+  uint uVar10;
+  int iVar11;
+  ulonglong uVar12;
+  undefined8 *puVar13;
+  longlong ******pppppplVar14;
+  undefined8 uVar15;
   undefined1 *puVar16;
   undefined1 *puVar17;
-  longlong lVar18;
-  longlong *******ppppppplVar19;
-  undefined *puVar20;
-  uint *puVar21;
+  uint uVar18;
+  longlong lVar19;
+  longlong ******pppppplVar20;
+  longlong lVar21;
   uint *puVar22;
-  uint *local_res8;
-  undefined1 local_res10 [8];
-  uint *local_res18;
-  undefined8 local_res20;
+  char *pcVar23;
   undefined1 auStackY_118 [8];
   undefined1 auStackY_110 [24];
   char *in_stack_ffffffffffffff08;
-  longlong *******local_d8;
-  longlong *******local_d0;
-  longlong *******local_c8;
-  longlong *******ppppppplStack_c0;
-  code *local_b8;
-  undefined8 **ppuStack_b0;
-  undefined8 local_a8;
-  undefined8 local_a0;
+  undefined1 local_d8 [8];
+  longlong *****local_d0;
+  longlong *****ppppplStack_c8;
+  longlong *****local_c0;
+  longlong *****local_b8;
+  longlong local_b0;
+  code *local_a8;
+  undefined8 **ppuStack_a0;
   undefined8 local_98;
-  code *local_90;
-  uint *puStack_88;
+  undefined8 local_90;
+  undefined8 local_88;
   undefined8 local_80;
-  undefined8 uStack_78;
-  undefined8 local_70;
-  undefined8 *local_68;
-  undefined8 local_60;
-  undefined8 uStack_58;
-  undefined8 local_50;
+  undefined8 local_78;
+  undefined8 uStack_70;
+  undefined8 local_68;
+  undefined8 *local_60;
+  undefined8 local_58;
+  undefined8 uStack_50;
+  undefined8 local_48;
+  undefined4 local_40;
+  undefined8 local_3c;
+  ulonglong local_30;
   
+  puVar17 = auStackY_118;
   puVar16 = auStackY_118;
-  puVar17 = auStackY_118;
-  local_70 = 0;
-  local_50 = 0;
-  local_b8 = (code *)0x0;
-  ppuStack_b0 = (undefined8 **)0x0;
-  local_80 = 0;
-  uStack_78 = 0;
-  local_60 = 0;
-  uStack_58 = 0;
-  local_c8 = (longlong *******)0x0;
-  ppppppplStack_c0 = (longlong *******)0x0;
-  uVar8 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
-  puVar22 = *(uint **)(param_1 + 0x86);
-  uVar11 = *param_1;
+  local_30 = __security_cookie ^ (ulonglong)auStackY_118;
+  uVar18 = 0;
+  local_68 = 0;
+  local_48 = 0;
+  local_a8 = (code *)0x0;
+  ppuStack_a0 = (undefined8 **)0x0;
+  bVar6 = false;
+  local_78 = 0;
+  uStack_70 = 0;
+  local_58 = 0;
+  uStack_50 = 0;
+  local_d0 = (longlong *****)0x0;
+  ppppplStack_c8 = (longlong *****)0x0;
+  uVar7 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
+  lVar21 = *(longlong *)(param_1 + 0x86);
   param_1[0x86] = 0;
   param_1[0x87] = 0;
-  local_res8 = puVar22;
-  if ((uVar11 & 4) == 0) {
-    KeReleaseSpinLock(param_1 + 2,uVar8);
-    return;
-  }
-  *param_1 = uVar11 & 0xfffffffb;
-  if ((uVar11 & 0x20) == 0) {
-    if ((uVar11 & 0x40) != 0) {
-      lVar18 = *(longlong *)(param_1 + 0x80);
-      goto LAB_0;
+  local_b0 = lVar21;
+  if ((*param_1 & 4) == 0) {
+    KeReleaseSpinLock(param_1 + 2,uVar7);
+    goto LAB_0;
+  }
+  if ((Feature_2411928891__private_featureState & 0x10) == 0) {
+    uVar12 = Feature_2411928891__private_IsEnabledDeviceUsageNoInline();
+    uVar10 = (uint)uVar12;
+  }
+  else {
+    uVar10 = Feature_2411928891__private_featureState & 1;
+  }
+  if (uVar10 != 0) {
+    uVar10 = param_1[0x88];
+    while (uVar10 != 0) {
+      KeReleaseSpinLock(param_1 + 2,uVar7);
+      local_98 = 0xffffffffffffd8f0;
+      KeDelayExecutionThread(0,0);
+      uVar7 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
+      uVar18 = uVar18 + 1;
+      if ((9999 < uVar18) && (!bVar6)) {
+        local_40 = 0x39baeb0;
+        bVar6 = true;
+        local_3c = 1;
+        RtlLogUnexpectedCodepath(&local_40);
+      }
+      uVar10 = param_1[0x88];
+    }
+  }
+  uVar18 = *param_1;
+  pcVar23 = "minio\\netio\\session\\tdi\\address.c";
+  *param_1 = uVar18 & 0xfffffffb;
+  if ((uVar18 & 0x20) == 0) {
+    if ((uVar18 & 0x40) != 0) {
+      lVar19 = *(longlong *)(param_1 + 0x80);
+      goto LAB_1;
     }
     param_1[0x7e] = 0;
     param_1[0x7f] = 0;
     param_1[0x80] = 0;
     param_1[0x81] = 0;
+LAB_2:
+    KeReleaseSpinLock(param_1 + 2,uVar7);
+  }
+  else {
+    lVar19 = *(longlong *)(param_1 + 0x7e);
 LAB_1:
-    KeReleaseSpinLock(param_1 + 2,uVar8);
-  }
-  else {
-    lVar18 = *(longlong *)(param_1 + 0x7e);
-LAB_0:
     param_1[0x7e] = 0;
     param_1[0x7f] = 0;
     param_1[0x80] = 0;
     param_1[0x81] = 0;
-    if (lVar18 == 0) goto LAB_1;
+    if (lVar19 == 0) goto LAB_2;
     KeReleaseSpinLockFromDpcLevel(param_1 + 2);
-    KeAcquireSpinLockAtDpcLevel(lVar18 + 8);
-    *(undefined8 *)(lVar18 + 0x1f8) = 0;
-    *(undefined8 *)(lVar18 + 0x200) = 0;
-    KeReleaseSpinLock(lVar18 + 8,uVar8);
-    DbgTdxDereferenceTransportAddress(lVar18,"minio\\netio\\session\\tdi\\address.c",0x46b);
+    KeAcquireSpinLockAtDpcLevel(lVar19 + 8);
+    *(undefined8 *)(lVar19 + 0x1f8) = 0;
+    *(undefined8 *)(lVar19 + 0x200) = 0;
+    KeReleaseSpinLock(lVar19 + 8,uVar7);
+    DbgTdxDereferenceTransportAddress(lVar19,"minio\\netio\\session\\tdi\\address.c",0x484);
     DbgTdxDereferenceTransportAddress
-              ((longlong)param_1,"minio\\netio\\session\\tdi\\address.c",0x46c);
-  }
-  local_68 = &local_80;
-  puVar20 = (undefined *)0x0;
-  KeInitializeEvent(&local_80,1);
+              ((longlong)param_1,"minio\\netio\\session\\tdi\\address.c",0x485);
+  }
+  local_60 = &local_78;
+  pppppplVar20 = (longlong ******)0x0;
+  KeInitializeEvent(&local_78,1);
   if (*(longlong *)(param_1 + 0x50) != 0) {
     if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
         (3 < (byte)WPP_GLOBAL_Control[0x29])) &&
        ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
-      puVar20 = &WPP_8a0aa536b495371b7fe02a304b260ac6_Traceguids;
+      pppppplVar20 = (longlong ******)&WPP_27d1365e011434addaeab2d18128684e_Traceguids;
       WPP_SF_q(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x16,
-               &WPP_8a0aa536b495371b7fe02a304b260ac6_Traceguids,*(longlong *)(param_1 + 0x50));
-    }
-    local_b8 = TdxSynchronousTlRequestComplete;
-    ppuStack_b0 = &local_68;
+               &WPP_27d1365e011434addaeab2d18128684e_Traceguids,*(longlong *)(param_1 + 0x50));
+    }
+    local_a8 = TdxSynchronousTlRequestComplete;
+    ppuStack_a0 = &local_60;
     if ((*param_1 & 2) == 0) {
-      if (((*param_1 & 0x20) != 0) && (*(longlong *)(param_1 + 0x54) == 0)) goto LAB_2;
-      puVar12 = *(undefined8 **)(param_1 + 0x54);
-      if (puVar12 == (undefined8 *)0x0) goto LAB_3;
+      if (((*param_1 & 0x20) != 0) && (*(longlong *)(param_1 + 0x54) == 0)) goto LAB_3;
+      puVar13 = *(undefined8 **)(param_1 + 0x54);
+      if (puVar13 == (undefined8 *)0x0) goto LAB_4;
     }
     else {
+LAB_4:
+      puVar13 = *(undefined8 **)(param_1 + 0x52);
+    }
+    iVar11 = (*(code *)*puVar13)(*(undefined8 *)(param_1 + 0x50),&local_a8);
+    if (iVar11 == 0x103) {
+      pppppplVar20 = (longlong ******)0x0;
+      in_stack_ffffffffffffff08 = (char *)0x0;
+      KeWaitForSingleObject(local_60,0);
+    }
+  }
 LAB_3:
-      puVar12 = *(undefined8 **)(param_1 + 0x52);
-    }
-    iVar10 = (*(code *)*puVar12)(*(undefined8 *)(param_1 + 0x50),&local_b8);
-    if (iVar10 == 0x103) {
-      puVar20 = (undefined *)0x0;
-      in_stack_ffffffffffffff08 = (char *)0x0;
-      KeWaitForSingleObject(local_68,0,0,0);
-    }
-  }
-LAB_2:
   if ((*param_1 & 2) == 0) {
-    local_d0 = (longlong *******)&local_d8;
-    local_d8 = (longlong *******)&local_d8;
-    uVar8 = KeAcquireSpinLockRaiseToDpc();
-    while (puVar22 = *(uint **)(param_1 + 0x5e), puVar22 != param_1 + 0x5e) {
-      puVar15 = puVar22 + -0x44;
-      KeAcquireSpinLockAtDpcLevel(puVar22 + -0x42);
-      bVar9 = KeAcquireSpinLockRaiseToDpc(puVar22 + 0x18);
-      local_res18 = puVar22 + (ulonglong)puVar22[0x5a] * 8 + 0x1a;
-      local_res20 = 0;
-      local_res18[6] = puVar22[-0x40] + 1;
-      local_res18[2] = 0x4f5;
-      *(char **)local_res18 = "TdxDeactivateTransportAddress";
-      RtlGetCallersAddress(&local_res20,local_res18 + 4);
-      uVar14 = (ulonglong)bVar9;
-      puVar22[0x5a] = puVar22[0x5a] + 1 & 7;
-      KeReleaseSpinLock(puVar22 + 0x18);
+    local_b8 = (longlong *****)&local_c0;
+    local_c0 = (longlong *****)&local_c0;
+    bVar8 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
+    while (puVar3 = *(uint **)(param_1 + 0x5e), puVar3 != param_1 + 0x5e) {
+      puVar22 = puVar3 + -0x44;
+      KeAcquireSpinLockAtDpcLevel(puVar3 + -0x42);
+      bVar9 = KeAcquireSpinLockRaiseToDpc(puVar3 + 0x18);
+      uVar18 = puVar3[0x5a];
+      local_88 = 0;
+      puVar22[(ulonglong)uVar18 * 8 + 100] = puVar3[-0x40] + 1;
+      *(char **)(puVar22 + (ulonglong)uVar18 * 8 + 0x5e) = "TdxDeactivateTransportAddress";
+      puVar22[(ulonglong)uVar18 * 8 + 0x60] = 0x50e;
+      RtlGetCallersAddress(&local_88,puVar22 + (ulonglong)uVar18 * 8 + 0x62);
+      uVar12 = (ulonglong)bVar9;
+      puVar3[0x5a] = puVar3[0x5a] + 1 & 7;
+      KeReleaseSpinLock(puVar3 + 0x18);
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
         in_stack_ffffffffffffff08 =
-             (char *)CONCAT44((int)((ulonglong)in_stack_ffffffffffffff08 >> 0x20),local_res18[6]);
-        WPP_SF_qdssD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar14,puVar20,puVar15,
+             (char *)CONCAT44((int)((ulonglong)in_stack_ffffffffffffff08 >> 0x20),
+                              puVar22[(ulonglong)uVar18 * 8 + 100]);
+        WPP_SF_qdssD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar12,pppppplVar20,puVar22,
                      in_stack_ffffffffffffff08,"++","TdxDeactivateTransportAddress");
       }
       LOCK();
-      puVar22[-0x40] = puVar22[-0x40] + 1;
+      puVar3[-0x40] = puVar3[-0x40] + 1;
       UNLOCK();
       KeReleaseSpinLockFromDpcLevel(param_1 + 2);
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
+        pppppplVar20 = (longlong ******)&WPP_94fae5e923bd3847028966076edd0eb6_Traceguids;
         in_stack_ffffffffffffff08 = "TdxDeactivateTransportAddress";
-        puVar20 = &WPP_94fae5e923bd3847028966076edd0eb6_Traceguids;
         WPP_SF_qs(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0xb,
-                  &WPP_94fae5e923bd3847028966076edd0eb6_Traceguids,puVar15,
+                  &WPP_94fae5e923bd3847028966076edd0eb6_Traceguids,puVar22,
                   "TdxDeactivateTransportAddress");
       }
-      if (((*puVar15 >> 9 & 1) == 0) && (*(longlong *)(puVar22 + 4) != 0)) {
-        *puVar15 = *puVar15 | 0x200;
-        LOCK();
-        puVar21 = puVar22 + -0x32;
-        uVar11 = *puVar21;
-        *puVar21 = *puVar21 - 1;
-        UNLOCK();
-        if (uVar11 == 1) {
-          TdxShutdownEndpointConnection(puVar15,uVar8);
-        }
-        else {
-          KeReleaseSpinLock(puVar22 + -0x42);
-        }
-        bVar9 = KeAcquireSpinLockRaiseToDpc(puVar22 + 0x18);
-        uVar11 = puVar22[0x5a];
-        local_a8 = 0;
-        puVar15[(ulonglong)uVar11 * 8 + 100] = puVar22[-0x40] - 1;
-        *(char **)(puVar15 + (ulonglong)uVar11 * 8 + 0x5e) = "TdxDecrementTlEndpointReference";
-        puVar15[(ulonglong)uVar11 * 8 + 0x60] = 0x170;
-        RtlGetCallersAddress(&local_a8,puVar15 + (ulonglong)uVar11 * 8 + 0x62);
-        uVar14 = (ulonglong)bVar9;
-        puVar22[0x5a] = puVar22[0x5a] + 1 & 7;
-        KeReleaseSpinLock(puVar22 + 0x18);
-        if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-            (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
-           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
-          in_stack_ffffffffffffff08 =
-               (char *)CONCAT44((int)((ulonglong)in_stack_ffffffffffffff08 >> 0x20),
-                                puVar15[(ulonglong)uVar11 * 8 + 100]);
-          WPP_SF_qdssD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar14,puVar20,puVar15,
-                       in_stack_ffffffffffffff08,"--","TdxDecrementTlEndpointReference");
-        }
-        LOCK();
-        puVar21 = puVar22 + -0x40;
-        uVar11 = *puVar21;
-        *puVar21 = *puVar21 - 1;
-        UNLOCK();
-        if (uVar11 == 1) {
-          TdxCleanupObjectHeader((longlong)puVar15);
-        }
+      if (((*puVar22 >> 9 & 1) == 0) && (*(longlong *)(puVar3 + 4) != 0)) {
+        *puVar22 = *puVar22 | 0x200;
+        TdxDecrementTlEndpointReference
+                  (puVar22,bVar8,CONCAT71((int7)((ulonglong)pppppplVar20 >> 8),1));
       }
       else {
         if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
            ((3 < (byte)WPP_GLOBAL_Control[0x29] &&
             ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)))) {
-          in_stack_ffffffffffffff08 = (char *)puVar15;
+          in_stack_ffffffffffffff08 = (char *)puVar22;
           WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x17,
-                    &WPP_8a0aa536b495371b7fe02a304b260ac6_Traceguids,"TdxDeactivateTransportAddress"
+                    &WPP_27d1365e011434addaeab2d18128684e_Traceguids,"TdxDeactivateTransportAddress"
                    );
         }
-        local_90 = (code *)0x0;
-        puStack_88 = (uint *)0x0;
-        if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-            (3 < (byte)WPP_GLOBAL_Control[0x29])) &&
-           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
-          in_stack_ffffffffffffff08 = (char *)puVar15;
-          WPP_SF_sq(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x36,
-                    &WPP_94fae5e923bd3847028966076edd0eb6_Traceguids,"TdxShutdownEndpointConnection"
-                   );
-        }
-        uVar11 = *puVar15;
-        puVar20 = (undefined *)(ulonglong)uVar11;
-        if (((char)uVar11 < '\0') || (puVar22[-0x31] < 2)) {
-          KeReleaseSpinLock(puVar22 + -0x42,uVar8);
-        }
-        else if (puVar22[-0x31] - 2 < 2) {
-          puVar20 = (undefined *)(ulonglong)(uVar11 | 0x40);
-          *puVar15 = uVar11 | 0x40;
-          KeReleaseSpinLock(puVar22 + -0x42,uVar8);
-        }
-        else if (puVar22[-0x32] == (~(uVar11 >> 9) & 1)) {
-          puVar20 = (undefined *)(ulonglong)(uVar11 | 0x80);
-          *puVar15 = uVar11 | 0x80;
-          KeReleaseSpinLock();
-          local_90 = TdxCloseConnectionEndpointTlRequestComplete;
-          puStack_88 = puVar15;
-          uVar11 = (*(code *)**(undefined8 **)(puVar22 + -2))
-                             (*(undefined8 *)(puVar22 + 4),&local_90);
-          if (uVar11 != 0x103) {
-            TdxCloseConnectionEndpointTlRequestComplete(puVar15,uVar11);
-          }
-        }
-        else {
-          KeReleaseSpinLock(puVar22 + -0x42,uVar8);
-        }
-      }
-      bVar7 = false;
-      if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-          (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
-         ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
-        in_stack_ffffffffffffff08 = "TdxDisassociateConnectionFromTransportAddress";
-        puVar20 = &WPP_94fae5e923bd3847028966076edd0eb6_Traceguids;
-        WPP_SF_qs(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0xb,
-                  &WPP_94fae5e923bd3847028966076edd0eb6_Traceguids,puVar15,
-                  "TdxDisassociateConnectionFromTransportAddress");
-      }
-      uVar8 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
-      local_res18 = (uint *)CONCAT71(local_res18._1_7_,uVar8);
-      KeAcquireSpinLockAtDpcLevel(puVar22 + -0x42);
-      if (*(uint **)(puVar22 + -0x2e) == param_1) {
-        lVar18 = *(longlong *)puVar22;
-        if ((*(uint **)(lVar18 + 8) != puVar22) ||
-           (plVar3 = *(longlong **)(puVar22 + 2), (uint *)*plVar3 != puVar22)) goto LAB_4;
-        *plVar3 = lVar18;
-        *(longlong **)(lVar18 + 8) = plVar3;
-        *puVar15 = *puVar15 & 0xfffff7ff;
-        puVar22[-0x2e] = 0;
-        puVar22[-0x2d] = 0;
-        while (ppppppplVar19 = *(longlong ********)(puVar22 + 8),
-              ppppppplVar19 != (longlong *******)(puVar22 + 8)) {
-          LOCK();
-          pppppplVar2 = ppppppplVar19[-8];
-          ppppppplVar19[-8] = (longlong ******)0x0;
-          UNLOCK();
-          pppppplVar4 = *ppppppplVar19;
-          if (pppppplVar2 == (longlong ******)0x0) {
-            bVar7 = true;
-          }
-          if (((longlong *******)pppppplVar4[1] != ppppppplVar19) ||
-             (pppppplVar2 = ppppppplVar19[1], (longlong *******)*pppppplVar2 != ppppppplVar19))
-          goto LAB_4;
-          *pppppplVar2 = (longlong *****)pppppplVar4;
-          pppppplVar4[1] = (longlong *****)pppppplVar2;
-          ppppppplVar5 = ppppppplVar19 + -6;
-          pppppplVar2 = *ppppppplVar5;
-          if (((longlong *******)pppppplVar2[1] != ppppppplVar5) ||
-             (pppppplVar4 = ppppppplVar19[-5], (longlong *******)*pppppplVar4 != ppppppplVar5))
-          goto LAB_4;
-          *pppppplVar4 = (longlong *****)pppppplVar2;
-          pppppplVar2[1] = (longlong *****)pppppplVar4;
-          DbgTdxDereferenceConnection
-                    ((longlong)puVar15,"TdxDisassociateConnectionFromTransportAddress",0xd08);
-          puVar20 = (undefined *)0xd09;
-          DbgTdxDereferenceTransportAddress
-                    ((longlong)param_1,"minio\\netio\\session\\tdi\\address.c",0xd09);
-          if ((longlong ********)*local_d0 != &local_d8) goto LAB_4;
-          ppppppplVar19[1] = (longlong ******)local_d0;
-          *ppppppplVar19 = (longlong ******)&local_d8;
-          *local_d0 = (longlong ******)ppppppplVar19;
-          local_d0 = ppppppplVar19;
-        }
-        if (puVar22[-0x31] == 1) {
-          puVar22[-0x31] = 0;
-        }
-        if (bVar7) {
-          local_res10[0] = 0;
-          KeReleaseSpinLockFromDpcLevel(puVar22 + -0x42);
-          KeReleaseSpinLockFromDpcLevel(param_1 + 2);
-          IoAcquireCancelSpinLock(local_res10);
-          IoReleaseCancelSpinLock(local_res10[0]);
-          KeAcquireSpinLockAtDpcLevel(param_1 + 2);
-          KeAcquireSpinLockAtDpcLevel(puVar22 + -0x42);
-        }
-        KeReleaseSpinLockFromDpcLevel(puVar22 + -0x42);
-        KeReleaseSpinLock(param_1 + 2,(ulonglong)local_res18 & 0xff);
-        bVar9 = KeAcquireSpinLockRaiseToDpc(puVar22 + 0x18);
-        uVar11 = puVar22[0x5a];
-        local_a0 = 0;
-        puVar15[(ulonglong)uVar11 * 8 + 100] = puVar22[-0x40] - 1;
-        *(char **)(puVar15 + (ulonglong)uVar11 * 8 + 0x5e) =
-             "TdxDisassociateConnectionFromTransportAddress";
-        puVar15[(ulonglong)uVar11 * 8 + 0x60] = 0xd35;
-        RtlGetCallersAddress(&local_a0,puVar15 + (ulonglong)uVar11 * 8 + 0x62);
-        uVar14 = (ulonglong)bVar9;
-        puVar22[0x5a] = puVar22[0x5a] + 1 & 7;
-        KeReleaseSpinLock(puVar22 + 0x18);
-        if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-            (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
-           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
-          in_stack_ffffffffffffff08 =
-               (char *)CONCAT44((int)((ulonglong)in_stack_ffffffffffffff08 >> 0x20),
-                                puVar15[(ulonglong)uVar11 * 8 + 100]);
-          WPP_SF_qdssD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar14,puVar20,puVar15,
-                       in_stack_ffffffffffffff08,"--",
-                       "TdxDisassociateConnectionFromTransportAddress");
-        }
-        LOCK();
-        puVar21 = puVar22 + -0x40;
-        uVar11 = *puVar21;
-        *puVar21 = *puVar21 - 1;
-        UNLOCK();
-        if (uVar11 == 1) {
-          TdxCleanupObjectHeader((longlong)puVar15);
-        }
-        puVar20 = (undefined *)0xd36;
-        DbgTdxDereferenceTransportAddress
-                  ((longlong)param_1,"minio\\netio\\session\\tdi\\address.c",0xd36);
-      }
-      else {
-        KeReleaseSpinLockFromDpcLevel(puVar22 + -0x42);
-        KeReleaseSpinLock(param_1 + 2,uVar8);
-      }
-      puVar21 = param_1 + 2;
-      bVar9 = KeAcquireSpinLockRaiseToDpc(puVar22 + 0x18);
-      uVar11 = puVar22[0x5a];
-      local_98 = 0;
-      puVar15[(ulonglong)uVar11 * 8 + 100] = puVar22[-0x40] - 1;
-      *(char **)(puVar15 + (ulonglong)uVar11 * 8 + 0x5e) = "TdxDeactivateTransportAddress";
-      puVar15[(ulonglong)uVar11 * 8 + 0x60] = 0x50c;
-      RtlGetCallersAddress(&local_98,puVar15 + (ulonglong)uVar11 * 8 + 0x62);
-      uVar14 = (ulonglong)bVar9;
-      puVar22[0x5a] = puVar22[0x5a] + 1 & 7;
-      KeReleaseSpinLock(puVar22 + 0x18);
+        TdxShutdownEndpointConnection(puVar22,bVar8);
+      }
+      pppppplVar20 = &local_c0;
+      TdxDisassociateConnectionFromTransportAddress
+                ((longlong)param_1,puVar22,(longlong)pppppplVar20);
+      bVar8 = KeAcquireSpinLockRaiseToDpc(puVar3 + 0x18);
+      pcVar23 = (char *)0x0;
+      uVar18 = puVar3[0x5a];
+      local_80 = 0;
+      puVar22[(ulonglong)uVar18 * 8 + 100] = puVar3[-0x40] - 1;
+      *(char **)(puVar22 + (ulonglong)uVar18 * 8 + 0x5e) = "TdxDeactivateTransportAddress";
+      puVar22[(ulonglong)uVar18 * 8 + 0x60] = 0x525;
+      RtlGetCallersAddress(&local_80,puVar22 + (ulonglong)uVar18 * 8 + 0x62);
+      uVar12 = (ulonglong)bVar8;
+      puVar3[0x5a] = puVar3[0x5a] + 1 & 7;
+      KeReleaseSpinLock(puVar3 + 0x18);
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
         in_stack_ffffffffffffff08 =
              (char *)CONCAT44((int)((ulonglong)in_stack_ffffffffffffff08 >> 0x20),
-                              puVar15[(ulonglong)uVar11 * 8 + 100]);
-        WPP_SF_qdssD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar14,puVar20,puVar15,
+                              puVar22[(ulonglong)uVar18 * 8 + 100]);
+        WPP_SF_qdssD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar12,pppppplVar20,puVar22,
                      in_stack_ffffffffffffff08,"--","TdxDeactivateTransportAddress");
       }
       LOCK();
-      puVar22 = puVar22 + -0x40;
-      uVar11 = *puVar22;
+      puVar22 = puVar3 + -0x40;
+      uVar18 = *puVar22;
       *puVar22 = *puVar22 - 1;
       UNLOCK();
-      if (uVar11 == 1) {
-        TdxCleanupObjectHeader((longlong)puVar15);
-      }
-      while (ppppppplVar19 = local_d8, (longlong ********)local_d8 != &local_d8) {
-        puVar22 = puVar21;
-        if (((longlong ********)local_d8[1] != &local_d8) ||
-           (ppppppplVar5 = (longlong *******)*local_d8,
-           (longlong *******)ppppppplVar5[1] != local_d8)) goto LAB_4;
-        ppppppplVar5[1] = (longlong ******)&local_d8;
-        ppppppplVar13 = local_d8 + -0x15;
-        ppppppplVar1 = local_d8 + -0xf;
-        local_d8 = ppppppplVar5;
-        *(undefined4 *)ppppppplVar1 = 0xc0000120;
-        ppppppplVar19[-0xe] = (longlong ******)0x0;
-        IofCompleteRequest(ppppppplVar13,CONCAT71((int7)((ulonglong)&local_d8 >> 8),2));
-      }
-      uVar8 = KeAcquireSpinLockRaiseToDpc(puVar21);
-    }
-    puVar15 = param_1 + 0x56;
-    while (puVar21 = *(uint **)puVar15, puVar21 != puVar15) {
-      if ((*(uint **)(puVar21 + 2) != puVar15) ||
-         (lVar18 = *(longlong *)puVar21, *(uint **)(lVar18 + 8) != puVar21)) goto LAB_4;
-      *(longlong *)puVar15 = lVar18;
-      *(uint **)(lVar18 + 8) = puVar15;
-      KeReleaseSpinLock(param_1 + 2,uVar8);
-      puVar21[-0x1e] = 0xc0000120;
-      puVar21[-0x1c] = 0;
-      puVar21[-0x1b] = 0;
-      IofCompleteRequest(puVar21 + -0x2a,2);
-      uVar8 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
-    }
-    KeReleaseSpinLock(param_1 + 2,uVar8);
-    puVar22 = local_res8;
-  }
-  else {
-    uVar8 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
-    bVar7 = false;
-    local_c8 = (longlong *******)&local_c8;
-    ppppppplVar19 = *(longlong ********)(param_1 + 0x54);
-    ppppppplStack_c0 = (longlong *******)&local_c8;
-    while (ppppppplVar5 = ppppppplVar19, ppppppplVar5 != (longlong *******)(param_1 + 0x54)) {
-      ppppppplVar19 = (longlong *******)*ppppppplVar5;
+      if (uVar18 != 1) goto LAB_5;
+      pppppplVar14 = *(longlong *******)(puVar3 + -0x38);
+      if (pppppplVar14 == (longlong ******)0x0) goto LAB_5;
+      *(undefined4 *)(pppppplVar14 + 6) = 0;
+      uVar15 = 0;
+      pppppplVar14[7] = (longlong *****)0x0;
+      puVar3[-0x38] = 0;
+      puVar3[-0x37] = 0;
+      while( true ) {
+        IofCompleteRequest(pppppplVar14,uVar15);
+LAB_5:
+        ppppplVar2 = local_c0;
+        if ((longlong ******)local_c0 == &local_c0) break;
+        if (((longlong ******)local_c0[1] != &local_c0) ||
+           (pppppplVar4 = (longlong ******)*local_c0, pppppplVar4[1] != local_c0))
+        goto LAB_6;
+        pppppplVar4[1] = (longlong *****)&local_c0;
+        pppppplVar14 = (longlong ******)(local_c0 + -0x15);
+        pppppplVar1 = (longlong ******)(local_c0 + -0xf);
+        local_c0 = (longlong *****)pppppplVar4;
+        *(undefined4 *)pppppplVar1 = 0xc0000120;
+        uVar15 = CONCAT71((int7)((ulonglong)&local_c0 >> 8),2);
+        ppppplVar2[-0xe] = (longlong ****)0x0;
+      }
+      bVar8 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
+    }
+    puVar3 = param_1 + 0x56;
+    while( true ) {
+      pcVar23 = (char *)(ulonglong)bVar8;
+      puVar22 = *(uint **)puVar3;
+      if (puVar22 == puVar3) break;
+      if ((*(uint **)(puVar22 + 2) != puVar3) ||
+         (lVar21 = *(longlong *)puVar22, *(uint **)(lVar21 + 8) != puVar22)) goto LAB_6;
+      *(longlong *)puVar3 = lVar21;
+      *(uint **)(lVar21 + 8) = puVar3;
+      KeReleaseSpinLock(param_1 + 2,pcVar23);
+      puVar22[-0x1e] = 0xc0000120;
+      puVar22[-0x1c] = 0;
+      puVar22[-0x1b] = 0;
+      IofCompleteRequest(puVar22 + -0x2a,2);
+      bVar8 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
+    }
+    goto LAB_7;
+  }
+  uVar7 = KeAcquireSpinLockRaiseToDpc();
+  bVar6 = false;
+  local_d0 = (longlong *****)&local_d0;
+  pppppplVar20 = *(longlong *******)(param_1 + 0x54);
+  ppppplStack_c8 = (longlong *****)&local_d0;
+  while (pppppplVar14 = pppppplVar20, pppppplVar14 != (longlong ******)(param_1 + 0x54)) {
+    pppppplVar20 = (longlong ******)*pppppplVar14;
+    LOCK();
+    ppppplVar2 = pppppplVar14[-8];
+    pppppplVar14[-8] = (longlong *****)0x0;
+    UNLOCK();
+    *(uint *)(pppppplVar14 + -0xf) = 0xc0000120;
+    pppppplVar14[-0xe] = (longlong *****)0x0;
+    if (ppppplVar2 == (longlong *****)0x0) {
+      bVar6 = true;
+    }
+    if ((longlong ******)*ppppplStack_c8 != &local_d0) goto LAB_6;
+    pppppplVar14[1] = ppppplStack_c8;
+    *pppppplVar14 = (longlong *****)&local_d0;
+    *ppppplStack_c8 = (longlong ****)pppppplVar14;
+    ppppplStack_c8 = (longlong *****)pppppplVar14;
+  }
+  puVar3 = param_1 + 0x54;
+  *(uint **)(param_1 + 0x56) = puVar3;
+  *(uint **)puVar3 = puVar3;
+  if (bVar6) {
+    local_d8[0] = 0;
+    KeReleaseSpinLockFromDpcLevel(param_1 + 2);
+    IoAcquireCancelSpinLock(local_d8);
+    IoReleaseCancelSpinLock(local_d8[0]);
+    KeAcquireSpinLockAtDpcLevel(param_1 + 2);
+  }
+  KeReleaseSpinLock(param_1 + 2,uVar7);
+  puVar17 = auStackY_118;
+  pppppplVar20 = (longlong ******)local_d0;
+  if ((longlong ******)local_d0 != &local_d0) {
+    do {
+      pppppplVar14 = (longlong ******)*pppppplVar20;
+      IofCompleteRequest(pppppplVar20 + -0x15,2);
+      uVar7 = KeAcquireSpinLockRaiseToDpc(param_1 + 0x8a);
+      uVar18 = param_1[0xcc];
+      if ((Feature_Servicing_RacyAccessInNetioTdiSession__private_featureState & 0x10) == 0) {
+        Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledDeviceUsageNoInline();
+      }
+      param_1[(ulonglong)uVar18 * 8 + 0x92] = param_1[4] - 1;
+      local_90 = 0;
+      *(char **)(param_1 + (ulonglong)uVar18 * 8 + 0x8c) = "minio\\netio\\session\\tdi\\address.c";
+      param_1[(ulonglong)uVar18 * 8 + 0x8e] = 0x4f2;
+      RtlGetCallersAddress(&local_90,param_1 + (ulonglong)uVar18 * 8 + 0x90);
+      param_1[0xcc] = param_1[0xcc] + 1 & 7;
+      KeReleaseSpinLock(param_1 + 0x8a,uVar7);
       LOCK();
-      pppppplVar2 = ppppppplVar5[-8];
-      ppppppplVar5[-8] = (longlong ******)0x0;
+      puVar3 = param_1 + 4;
+      uVar18 = *puVar3;
+      *puVar3 = *puVar3 - 1;
       UNLOCK();
-      *(uint *)(ppppppplVar5 + -0xf) = 0xc0000120;
-      ppppppplVar5[-0xe] = (longlong ******)0x0;
-      if (pppppplVar2 == (longlong ******)0x0) {
-        bVar7 = true;
-      }
-      if ((longlong ********)*ppppppplStack_c0 != &local_c8) goto LAB_4;
-      ppppppplVar5[1] = (longlong ******)ppppppplStack_c0;
-      *ppppppplVar5 = (longlong ******)&local_c8;
-      *ppppppplStack_c0 = (longlong ******)ppppppplVar5;
-      ppppppplStack_c0 = ppppppplVar5;
-    }
-    puVar15 = param_1 + 0x54;
-    *(uint **)(param_1 + 0x56) = puVar15;
-    *(uint **)puVar15 = puVar15;
-    if (bVar7) {
-      local_res8 = (uint *)((ulonglong)local_res8 & 0xffffffffffffff00);
-      KeReleaseSpinLockFromDpcLevel(param_1 + 2);
-      IoAcquireCancelSpinLock(&local_res8);
-      IoReleaseCancelSpinLock((ulonglong)local_res8 & 0xff);
-      KeAcquireSpinLockAtDpcLevel(param_1 + 2);
-    }
-    KeReleaseSpinLock(param_1 + 2,uVar8);
-    ppppppplVar19 = local_c8;
-    if ((longlong ********)local_c8 != &local_c8) {
-      do {
-        ppppppplVar5 = ppppppplVar19 + -0x15;
-        ppppppplVar19 = (longlong *******)*ppppppplVar19;
-        IofCompleteRequest(ppppppplVar5,2);
-        DbgTdxDereferenceTransportAddress
-                  ((longlong)param_1,"minio\\netio\\session\\tdi\\address.c",0x4d9);
-      } while ((longlong ********)ppppppplVar19 != &local_c8);
-    }
-  }
-  if (puVar22 == (uint *)0x0) goto LAB_5;
+      if (uVar18 == 1) {
+        if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+            (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
+           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
+          WPP_SF_q(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x11,
+                   &WPP_27d1365e011434addaeab2d18128684e_Traceguids,param_1);
+        }
+        lVar21 = *(longlong *)(param_1 + 0xc);
+        if (lVar21 != 0) {
+          *(undefined4 *)(lVar21 + 0x30) = 0;
+          *(undefined8 *)(lVar21 + 0x38) = 0;
+          param_1[0xc] = 0;
+          param_1[0xd] = 0;
+          IofCompleteRequest(lVar21,0);
+        }
+      }
+      puVar17 = auStackY_118;
+      pppppplVar20 = pppppplVar14;
+      lVar21 = local_b0;
+    } while (pppppplVar14 != &local_d0);
+  }
+  goto LAB_8;
 LAB_6:
-  *(undefined8 *)(puVar17 + -8) = 0x1400093eb;
-  TdxReissueConnectWhileListenRequests((longlong)puVar22,(longlong)param_1);
-  puVar16 = puVar17;
-LAB_5:
-  *(undefined8 *)(puVar16 + -8) = 0x140008d32;
-  DbgTdxDereferenceTransportAddress((longlong)param_1,"minio\\netio\\session\\tdi\\address.c",0x53e)
+  pcVar5 = (code *)swi(0x29);
+  (*pcVar5)(3);
+  puVar16 = auStackY_110;
+LAB_7:
+  *(undefined8 *)(puVar16 + -8) = 0x14000ec08;
+  KeReleaseSpinLock(param_1 + 2,(ulonglong)pcVar23 & 0xff);
+  puVar17 = puVar16;
+  lVar21 = local_b0;
+LAB_8:
+  if (lVar21 != 0) {
+    *(undefined8 *)(puVar17 + -8) = 0x14000ec28;
+    TdxReissueConnectWhileListenRequests(lVar21,(longlong)param_1);
+  }
+  *(undefined8 *)(puVar17 + -8) = 0x14000ec39;
+  DbgTdxDereferenceTransportAddress((longlong)param_1,"minio\\netio\\session\\tdi\\address.c",0x557)
   ;
+LAB_0:
+  *(undefined8 *)(puVar17 + -8) = 0x14000ec45;
   return;
-LAB_4:
-  pcVar6 = (code *)swi(0x29);
-  (*pcVar6)(3);
-  puVar17 = auStackY_110;
-  goto LAB_6;
 }
 

```


## TdxIssueIoControlRequest

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.53|
|i_ratio|0.37|
|m_ratio|0.92|
|b_ratio|0.76|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|TdxIssueIoControlRequest|TdxIssueIoControlRequest|
|fullname|TdxIssueIoControlRequest|TdxIssueIoControlRequest|
|refcount|9|9|
|`length`|1094|1297|
|`called`|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransportAddress<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeInitializeEvent<br>NTOSKRNL.EXE::KeLowerIrql<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::KeWaitForSingleObject<br>NTOSKRNL.EXE::RtlLogUnexpectedCodepath<br>TdxDecrementTlEndpointReference</summary>TdxIncrementTlEndpointReference<br>TdxSelectTlRequestTransportAddress<br>WPP_SF_qdd<br>WPP_SF_sqdd<br>WPP_SF_sqddD<br>WPP_SF_sqddDs<br>__security_check_cookie<br>_guard_dispatch_icall</details>|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransportAddress<br>Feature_2411928891__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeInitializeEvent<br>NTOSKRNL.EXE::KeLowerIrql<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::KeWaitForSingleObject<br>NTOSKRNL.EXE::RtlLogUnexpectedCodepath</summary>TdxDecrementTlEndpointReference<br>TdxIncrementTlEndpointReference<br>TdxSelectTlRequestTransportAddress<br>WPP_SF_qdd<br>WPP_SF_sqdd<br>WPP_SF_sqddD<br>WPP_SF_sqddDs<br>__security_check_cookie<br>_guard_dispatch_icall</details>|
|calling|TdxConnectTransportAddress<br>TdxDisconnectTransportAddress<br>TdxTcpSetInformationEx<br>TdxTcpSetInformationTransportAddressEx<br>TdxTdiDispatchDeviceControl|TdxConnectTransportAddress<br>TdxDisconnectTransportAddress<br>TdxTcpSetInformationEx<br>TdxTcpSetInformationTransportAddressEx<br>TdxTdiDispatchDeviceControl|
|paramcount|3|3|
|`address`|1400107b0|14000fd70|
|sig|int __fastcall TdxIssueIoControlRequest(uint * param_1, longlong param_2, int * param_3)|int __fastcall TdxIssueIoControlRequest(uint * param_1, longlong param_2, int * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### TdxIssueIoControlRequest Called Diff


```diff
--- TdxIssueIoControlRequest called
+++ TdxIssueIoControlRequest called
@@ -4,0 +5 @@
+Feature_2411928891__private_IsEnabledDeviceUsageNoInline
```


### TdxIssueIoControlRequest Diff


```diff
--- TdxIssueIoControlRequest
+++ TdxIssueIoControlRequest
@@ -1,184 +1,215 @@
 
 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 
 int TdxIssueIoControlRequest(uint *param_1,longlong param_2,int *param_3)
 
 {
-  uint uVar1;
-  uint *puVar2;
-  bool bVar3;
-  undefined1 uVar4;
+  uint *puVar1;
+  bool bVar2;
+  undefined1 uVar3;
+  uint uVar4;
   int iVar5;
   uint *puVar6;
-  longlong lVar7;
-  int *piVar8;
+  ulonglong uVar7;
+  longlong lVar8;
+  int *piVar9;
   undefined1 auStack_128 [32];
   uint *local_108;
   uint local_100;
   int local_f8;
   char *local_e8;
   code *local_d8;
   undefined8 **local_d0;
   undefined8 local_c8;
   uint local_c0;
   undefined4 local_bc;
   undefined8 local_b8;
   ulonglong local_b0;
   undefined8 local_a8;
   ulonglong local_a0;
   undefined8 local_98;
   undefined8 local_90;
   undefined8 *local_88;
   undefined8 local_80;
   undefined8 local_78;
   undefined8 local_70;
   undefined8 local_68;
   undefined8 uStack_60;
   undefined8 local_58;
   undefined4 local_50;
   int local_4c;
   undefined4 local_48;
   ulonglong local_40;
   
   local_40 = __security_cookie ^ (ulonglong)auStack_128;
   puVar6 = (uint *)0x0;
   local_58 = 0;
   local_80 = 0;
   local_68 = 0;
   uStack_60 = 0;
   local_78 = 0;
   local_70 = 0;
   local_c8 = 0;
   local_bc = 0;
   local_98 = 0;
   local_90 = 0;
-  lVar7 = param_2;
-  piVar8 = param_3;
-  uVar4 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
+  lVar8 = param_2;
+  piVar9 = param_3;
+  uVar3 = KeAcquireSpinLockRaiseToDpc(param_1 + 2);
   if (param_1[1] == 2) {
-    bVar3 = true;
+    bVar2 = true;
     if ((*(longlong *)(param_1 + 0x42) == 0) || ((char)*param_1 < '\0')) {
       if ((*param_1 & 0x1000) == 0) {
-        KeReleaseSpinLock(param_1 + 2,uVar4);
+        KeReleaseSpinLock(param_1 + 2,uVar3);
         if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
             (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
            ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
           local_f8 = param_3[2];
           local_100 = param_3[1];
           local_108 = param_1;
-          WPP_SF_sqddD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0xd,piVar8,
+          WPP_SF_sqddD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0xd,piVar9,
                        "TdxIssueIoControlRequest");
         }
         return -0x3ffffff0;
       }
       KeReleaseSpinLock();
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
         local_f8 = param_3[2];
         local_100 = param_3[1];
         local_108 = param_1;
-        WPP_SF_sqdd(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0xc,piVar8,"TdxIssueIoControlRequest"
+        WPP_SF_sqdd(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0xc,piVar9,"TdxIssueIoControlRequest"
                    );
       }
       return 0;
     }
-    TdxIncrementTlEndpointReference((longlong)param_1,lVar7,piVar8);
-    DbgTdxReferenceConnection((longlong)param_1,"TdxIssueIoControlRequest",0x341);
-    puVar2 = param_1;
-  }
-  else {
-    bVar3 = false;
+    TdxIncrementTlEndpointReference((longlong)param_1,lVar8,piVar9);
+    DbgTdxReferenceConnection((longlong)param_1,"TdxIssueIoControlRequest",0x37e);
+    puVar1 = param_1;
+  }
+  else {
+    bVar2 = false;
     if ((*param_1 & 4) == 0) {
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
         local_e8 = "FALSE";
         local_f8 = param_3[2];
         local_100 = param_3[1];
         local_108 = param_1;
-        WPP_SF_sqddDs(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0xb,piVar8,
+        WPP_SF_sqddDs(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0xb,piVar9,
                       "TdxIssueIoControlRequest");
       }
-      KeReleaseSpinLock(param_1 + 2,uVar4);
+      KeReleaseSpinLock(param_1 + 2,uVar3);
       return -0x3ffffff3;
     }
-    DbgTdxReferenceTransportAddress((longlong)param_1,"minio\\netio\\session\\tdi\\request.c",0x36a)
+    DbgTdxReferenceTransportAddress((longlong)param_1,"minio\\netio\\session\\tdi\\request.c",0x3a7)
     ;
     puVar6 = TdxSelectTlRequestTransportAddress(param_1,'\x01');
-    puVar2 = puVar6;
+    puVar1 = puVar6;
     if (puVar6 == (uint *)0x0) {
-      KeLowerIrql(uVar4);
+      KeLowerIrql(uVar3);
       return -0x3ffffebf;
     }
   }
-  KeReleaseSpinLock(puVar2 + 2,uVar4);
+  KeReleaseSpinLock(puVar1 + 2,uVar3);
   KeInitializeEvent(&local_68,1);
   iVar5 = *param_3;
   local_88 = &local_68;
   local_d8 = TdxSynchronousTlIoRequestComplete;
   local_d0 = &local_88;
   local_c8 = CONCAT44(local_c8._4_4_,iVar5);
-  if (iVar5 != 0) {
-    if ((iVar5 == 1) || (local_4c = iVar5 + -2, local_4c == 0)) {
-      uVar1 = param_3[1];
-      local_c0 = param_3[2];
-      local_c8 = CONCAT44(uVar1,iVar5);
-      if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-         ((4 < (byte)WPP_GLOBAL_Control[0x29] &&
-          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)))) {
-        local_108 = (uint *)CONCAT44(local_108._4_4_,uVar1);
-        local_100 = local_c0;
-        WPP_SF_qdd(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),(ulonglong)uVar1,(ulonglong)local_c0,
-                   param_1);
+  if (iVar5 == 0) {
+LAB_0:
+    local_c0 = param_3[2];
+  }
+  else {
+    if ((iVar5 != 1) && (local_4c = iVar5 + -2, local_4c != 0)) {
+      if ((local_4c == 1) && (*(char *)(param_2 + 0x40) != '\0')) {
+        if (param_3[2] == -0x77ffffe6) {
+          return -0x3fffff45;
+        }
+        if (param_3[2] == -0x77fffff5) {
+          local_50 = 0x3636e41;
+          local_48 = 0xc00000bb;
+          RtlLogUnexpectedCodepath(&local_50);
+          return -0x3fffff45;
+        }
       }
       goto LAB_0;
     }
-    if ((local_4c == 1) && (*(char *)(param_2 + 0x40) != '\0')) {
-      if (param_3[2] == -0x77ffffe6) {
-        return -0x3fffff45;
-      }
-      if (param_3[2] == -0x77fffff5) {
-        local_50 = 0x3636e41;
-        local_48 = 0xc00000bb;
-        RtlLogUnexpectedCodepath(&local_50);
-        return -0x3fffff45;
-      }
-    }
-  }
-  local_c0 = param_3[2];
-LAB_0:
+    uVar4 = param_3[1];
+    local_c0 = param_3[2];
+    local_c8 = CONCAT44(uVar4,iVar5);
+    if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+        (4 < (byte)WPP_GLOBAL_Control[0x29])) &&
+       ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x200) != 0)) {
+      local_108 = (uint *)CONCAT44(local_108._4_4_,uVar4);
+      local_100 = local_c0;
+      WPP_SF_qdd(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),(ulonglong)uVar4,(ulonglong)local_c0,
+                 param_1);
+    }
+  }
   local_b8 = *(undefined8 *)(param_3 + 4);
   local_b0 = (ulonglong)(uint)param_3[6];
   local_a8 = *(undefined8 *)(param_3 + 8);
   local_a0 = (ulonglong)(uint)param_3[10];
-  if (bVar3) {
-    iVar5 = (**(code **)(*(longlong *)(param_1 + 0x42) + 8))(*(undefined8 *)(param_1 + 0x48));
-    TdxDecrementTlEndpointReference(param_1,0,0);
-  }
-  else {
-    lVar7 = *(longlong *)(puVar6 + 0x52);
-    if (lVar7 == 0) {
-      lVar7 = *(longlong *)(puVar6 + 0x54);
-    }
-    iVar5 = (**(code **)(lVar7 + 8))(*(undefined8 *)(puVar6 + 0x50));
-  }
-  if (iVar5 == 0x103) {
-    local_108 = (uint *)0x0;
-    KeWaitForSingleObject(&local_68,0,0,0);
-    local_90 = local_78;
-    iVar5 = (int)local_80;
-  }
-  if (bVar3) {
-    DbgTdxDereferenceConnection((longlong)param_1,"TdxIssueIoControlRequest",0x3b6);
-  }
-  else {
-    DbgTdxDereferenceTransportAddress
-              ((longlong)puVar6,"minio\\netio\\session\\tdi\\request.c",0x3b8);
-  }
+  if ((Feature_2411928891__private_featureState & 0x10) == 0) {
+    uVar7 = Feature_2411928891__private_IsEnabledDeviceUsageNoInline();
+    uVar4 = (uint)uVar7;
+  }
+  else {
+    uVar4 = Feature_2411928891__private_featureState & 1;
+  }
+  if (uVar4 == 0) {
+    if (bVar2) goto LAB_1;
+    lVar8 = *(longlong *)(puVar6 + 0x52);
+    if (lVar8 == 0) {
+      lVar8 = *(longlong *)(puVar6 + 0x54);
+    }
+    iVar5 = (**(code **)(lVar8 + 8))(*(undefined8 *)(puVar6 + 0x50),&local_d8);
+LAB_2:
+    if (iVar5 == 0x103) {
+      local_108 = (uint *)0x0;
+      KeWaitForSingleObject(&local_68,0,0,0);
+      local_90 = local_78;
+      iVar5 = (int)local_80;
+    }
+    if (bVar2) {
+      DbgTdxDereferenceConnection((longlong)param_1,"TdxIssueIoControlRequest",0x417);
+      goto LAB_3;
+    }
+  }
+  else {
+    if (bVar2) {
+LAB_1:
+      iVar5 = (**(code **)(*(longlong *)(param_1 + 0x42) + 8))(*(undefined8 *)(param_1 + 0x48));
+      TdxDecrementTlEndpointReference(param_1,0,0);
+      goto LAB_2;
+    }
+    uVar3 = KeAcquireSpinLockRaiseToDpc(puVar6 + 2);
+    if (((byte)*puVar6 & 0x14) == 4) {
+      puVar6[0x88] = puVar6[0x88] + 1;
+      KeReleaseSpinLock();
+      lVar8 = *(longlong *)(puVar6 + 0x52);
+      if (lVar8 == 0) {
+        lVar8 = *(longlong *)(puVar6 + 0x54);
+      }
+      iVar5 = (**(code **)(lVar8 + 8))(*(undefined8 *)(puVar6 + 0x50),&local_d8);
+      uVar3 = KeAcquireSpinLockRaiseToDpc(puVar6 + 2);
+      puVar6[0x88] = puVar6[0x88] - 1;
+      KeReleaseSpinLock(puVar6 + 2,uVar3);
+      goto LAB_2;
+    }
+    KeReleaseSpinLock(puVar6 + 2,uVar3);
+    iVar5 = -0x7fffffef;
+  }
+  DbgTdxDereferenceTransportAddress((longlong)puVar6,"minio\\netio\\session\\tdi\\request.c",0x419);
+LAB_3:
   *(undefined8 *)(param_2 + 0x38) = local_90;
   *(int *)(param_2 + 0x30) = iVar5;
   return iVar5;
 }
 

```


## wil_details_FeatureReporting_ReportUsageToService

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.62|
|i_ratio|0.5|
|m_ratio|0.94|
|b_ratio|0.94|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|wil_details_FeatureReporting_ReportUsageToService|wil_details_FeatureReporting_ReportUsageToService|
|fullname|wil_details_FeatureReporting_ReportUsageToService|wil_details_FeatureReporting_ReportUsageToService|
|refcount|2|2|
|`length`|114|125|
|called|_guard_dispatch_icall<br>wil_details_FeatureReporting_ReportUsageToServiceDirect<br>wil_details_MapReportingKind|_guard_dispatch_icall<br>wil_details_FeatureReporting_ReportUsageToServiceDirect<br>wil_details_MapReportingKind|
|calling|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|paramcount|3|3|
|`address`|140015cfc|14001572c|
|`sig`|undefined __fastcall wil_details_FeatureReporting_ReportUsageToService(undefined8 param_1, undefined8 param_2, uint param_3)|undefined __fastcall wil_details_FeatureReporting_ReportUsageToService(longlong param_1, undefined8 param_2, int param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_FeatureReporting_ReportUsageToService Diff


```diff
--- wil_details_FeatureReporting_ReportUsageToService
+++ wil_details_FeatureReporting_ReportUsageToService
@@ -1,28 +1,26 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 
 void wil_details_FeatureReporting_ReportUsageToService
-               (undefined8 param_1,undefined8 param_2,uint param_3)
+               (longlong param_1,undefined8 param_2,int param_3)
 
 {
   bool bVar1;
   uint uVar2;
   undefined7 extraout_var;
-  ulonglong uVar3;
-  uint uVar4;
-  uint local_res18 [4];
+  uint uVar3;
+  int local_res18 [4];
   
-  uVar4 = (uint)param_2 & 1;
-  uVar3 = (ulonglong)param_3;
+  uVar3 = (uint)param_2 & 1;
   local_res18[0] = param_3;
-  uVar2 = wil_details_MapReportingKind(param_3,uVar4);
-  bVar1 = wil_details_FeatureReporting_ReportUsageToServiceDirect(uVar3,param_2,(ulonglong)uVar2);
+  uVar2 = wil_details_MapReportingKind(param_3,uVar3);
+  bVar1 = wil_details_FeatureReporting_ReportUsageToServiceDirect(param_1,param_2,(ulonglong)uVar2);
   if (((int)CONCAT71(extraout_var,bVar1) != 0) &&
      (g_wil_details_pfnFeatureLoggingHook != (code *)0x0)) {
     (*g_wil_details_pfnFeatureLoggingHook)
-              (0x3958182,&Feature_Servicing_RacyAccessInNetioTdiSession_logged_traits,0,uVar4,
-               local_res18,0,0,1);
+              (*(undefined4 *)(param_1 + 0x18),*(undefined8 *)(param_1 + 0x10),0,uVar3,local_res18,0
+               ,0,1);
   }
   return;
 }
 

```


## Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.73|
|i_ratio|0.67|
|m_ratio|0.89|
|b_ratio|0.89|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback|Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback|
|fullname|Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback|Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback|
|refcount|2|2|
|`length`|14|21|
|called|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|calling|Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledDeviceUsageNoInline|Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|2|
|`address`|140014ad0|1400144f4|
|`sig`|undefined __fastcall Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback(undefined4 * param_1, uint param_2)|undefined __fastcall Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback Diff


```diff
--- Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback
+++ Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback
@@ -1,9 +1,10 @@
 
 void Feature_Servicing_RacyAccessInNetioTdiSession__private_IsEnabledFallback
-               (undefined4 *param_1,uint param_2)
+               (ulonglong param_1,int param_2)
 
 {
-  wil_details_IsEnabledFallback(param_1,param_2);
+  wil_details_IsEnabledFallback
+            (param_1,param_2,&Feature_Servicing_RacyAccessInNetioTdiSession__private_descriptor);
   return;
 }
 

```


## wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.4|
|i_ratio|0.37|
|m_ratio|0.9|
|b_ratio|0.9|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|fullname|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|refcount|2|2|
|`length`|76|91|
|called|||
|calling|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|paramcount|2|3|
|`address`|140015f74|1400159b0|
|`sig`|undefined __fastcall wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath(uint param_1, int param_2)|undefined __fastcall wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath(uint param_1, int param_2, undefined8 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath Diff


```diff
--- wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath
+++ wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath
@@ -1,41 +1,52 @@
 
-void wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath(uint param_1,int param_2)
+void wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath
+               (uint param_1,int param_2,undefined8 *param_3)
 
 {
-  uint uVar1;
+  uint *puVar1;
   uint uVar2;
   uint uVar3;
-  bool bVar4;
+  uint uVar4;
+  bool bVar5;
   
+  puVar1 = (uint *)*param_3;
   if (param_2 == 3) {
-    uVar3 = 0x10;
+    uVar4 = 0x10;
   }
   else {
     if (param_2 != 4) {
       return;
     }
-    uVar3 = 0x20;
+    uVar4 = 0x20;
   }
-  if ((Feature_Servicing_RacyAccessInNetioTdiSession__private_featureState & 2) != 0) {
-    uVar2 = Feature_Servicing_RacyAccessInNetioTdiSession__private_featureState;
-    while ((uVar2 & 1) == (param_1 & 1)) {
-      LOCK();
-      bVar4 = uVar2 == Feature_Servicing_RacyAccessInNetioTdiSession__private_featureState;
-      uVar1 = uVar3 | uVar2;
-      if (!bVar4) {
-        uVar2 = Feature_Servicing_RacyAccessInNetioTdiSession__private_featureState;
-        uVar1 = Feature_Servicing_RacyAccessInNetioTdiSession__private_featureState;
-      }
-      Feature_Servicing_RacyAccessInNetioTdiSession__private_featureState = uVar1;
-      UNLOCK();
-      if (bVar4) {
-        return;
-      }
-      if ((uVar2 & 2) == 0) {
-        return;
+  if ((*(char *)((longlong)param_3 + 0x1e) == '\0') && (*(char *)((longlong)param_3 + 0x1d) == '\0')
+     ) {
+    if ((*puVar1 & 2) != 0) {
+      uVar3 = *puVar1;
+      while ((uVar3 & 1) == (param_1 & 1)) {
+        LOCK();
+        uVar2 = *puVar1;
+        bVar5 = uVar3 == uVar2;
+        if (bVar5) {
+          *puVar1 = uVar4 | uVar3;
+          uVar2 = uVar3;
+        }
+        UNLOCK();
+        if (bVar5) {
+          return;
+        }
+        uVar3 = uVar2;
+        if ((uVar2 & 2) == 0) {
+          return;
+        }
       }
     }
+  }
+  else {
+    LOCK();
+    *puVar1 = *puVar1 | uVar4;
+    UNLOCK();
   }
   return;
 }
 

```


# Modified (No Code Changes)


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

## __GSHandlerCheck

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.88|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|__GSHandlerCheck|__GSHandlerCheck|
|fullname|__GSHandlerCheck|__GSHandlerCheck|
|`refcount`|24|25|
|length|29|29|
|called|__GSHandlerCheckCommon|__GSHandlerCheckCommon|
|calling|||
|paramcount|4|4|
|`address`|140019608|1400190b8|
|sig|undefined8 __fastcall __GSHandlerCheck(undefined8 param_1, undefined8 param_2, undefined8 param_3, longlong param_4)|undefined8 __fastcall __GSHandlerCheck(undefined8 param_1, undefined8 param_2, undefined8 param_3, longlong param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## DbgTdxDereferenceConnection

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.82|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|DbgTdxDereferenceConnection|DbgTdxDereferenceConnection|
|fullname|DbgTdxDereferenceConnection|DbgTdxDereferenceConnection|
|`refcount`|35|32|
|length|324|324|
|called|NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::RtlGetCallersAddress<br>WPP_SF_qdssD|NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::RtlGetCallersAddress<br>WPP_SF_qdssD|
|`calling`|<details><summary>Expand for full list:<br>TdxCancelIoRequestComplete<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransportAddress<br>TdxDereferenceObjectHeader<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectOrSendConnectionTlAbortRequestComplete<br>TdxEventAbortConnection</summary>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventDisconnectConnection<br>TdxIssueIoControlEndpointRequest<br>TdxIssueIoControlRequest<br>TdxIssueQueryAddressRequest<br>TdxListenConnection<br>TdxListenTransportAddressCancelRoutine<br>TdxListenTransportAddressComplete<br>TdxQueryAddressComplete<br>TdxQueryConnectionInfoComplete<br>TdxReceiveConnectionCancelRoutine<br>TdxReceiveConnectionTlFlushRequestComplete<br>TdxReissueConnectWhileListenRequests<br>TdxSetOptionsConnection<br>TdxTdiDispatchCreate<br>TdxTlIoRequestEndpointComplete</details>|<details><summary>Expand for full list:<br>TdxCancelIoRequestComplete<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxDereferenceObjectHeader<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectOrSendConnectionTlAbortRequestComplete<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress</summary>TdxEventConnectConnection<br>TdxEventDisconnectConnection<br>TdxIssueIoControlEndpointRequest<br>TdxIssueIoControlRequest<br>TdxListenConnection<br>TdxListenTransportAddressCancelRoutine<br>TdxListenTransportAddressComplete<br>TdxQueryAddressComplete<br>TdxQueryConnectionInfoComplete<br>TdxReceiveConnectionCancelRoutine<br>TdxReceiveConnectionTlFlushRequestComplete<br>TdxReissueConnectWhileListenRequests<br>TdxSetOptionsConnection<br>TdxTdiDispatchCreate<br>TdxTlIoRequestEndpointComplete</details>|
|paramcount|3|3|
|`address`|140009400|140008780|
|sig|undefined __fastcall DbgTdxDereferenceConnection(longlong param_1, char * param_2, undefined8 param_3)|undefined __fastcall DbgTdxDereferenceConnection(longlong param_1, char * param_2, undefined8 param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### DbgTdxDereferenceConnection Calling Diff


```diff
--- DbgTdxDereferenceConnection calling
+++ DbgTdxDereferenceConnection calling
@@ -5 +4,0 @@
-TdxDeactivateTransportAddress
@@ -17 +15,0 @@
-TdxIssueQueryAddressRequest
```


## TdxDecrementTlEndpointReference

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.74|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|TdxDecrementTlEndpointReference|TdxDecrementTlEndpointReference|
|fullname|TdxDecrementTlEndpointReference|TdxDecrementTlEndpointReference|
|`refcount`|10|12|
|length|378|378|
|called|NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::RtlGetCallersAddress<br>TdxCleanupObjectHeader<br>TdxShutdownEndpointConnection<br>WPP_SF_qdssD|NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::RtlGetCallersAddress<br>TdxCleanupObjectHeader<br>TdxShutdownEndpointConnection<br>WPP_SF_qdssD|
|`calling`|TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxEventConnectConnection<br>TdxEventDisconnectConnection<br>TdxIssueIoControlRequest<br>TdxQueryConnectionInfo<br>TdxReceiveConnectionCancelRoutine|<details><summary>Expand for full list:<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxEventConnectConnection<br>TdxEventDisconnectConnection<br>TdxIssueIoControlRequest<br>TdxIssueQueryAddressRequest<br>TdxQueryConnectionInfo<br>TdxReceiveConnectionCancelRoutine</summary></details>|
|paramcount|3|3|
|`address`|140007360|140007d80|
|sig|undefined __fastcall TdxDecrementTlEndpointReference(uint * param_1, undefined1 param_2, undefined8 param_3)|undefined __fastcall TdxDecrementTlEndpointReference(uint * param_1, undefined1 param_2, undefined8 param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### TdxDecrementTlEndpointReference Calling Diff


```diff
--- TdxDecrementTlEndpointReference calling
+++ TdxDecrementTlEndpointReference calling
@@ -2,0 +3 @@
+TdxDeactivateTransportAddress
@@ -7,0 +9 @@
+TdxIssueQueryAddressRequest
```


## NTOSKRNL.EXE::KeDelayExecutionThread

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|KeDelayExecutionThread|KeDelayExecutionThread|
|fullname|NTOSKRNL.EXE::KeDelayExecutionThread|NTOSKRNL.EXE::KeDelayExecutionThread|
|`refcount`|2|4|
|length|0|0|
|called|||
|`calling`|TdxNaRegisterChangeHandler|TdxDeactivateTransportAddress<br>TdxIssueListenRequest<br>TdxNaRegisterChangeHandler|
|paramcount|0|0|
|`address`|EXTERNAL:00000020|EXTERNAL:00000038|
|sig|undefined KeDelayExecutionThread(void)|undefined KeDelayExecutionThread(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::KeDelayExecutionThread Calling Diff


```diff
--- NTOSKRNL.EXE::KeDelayExecutionThread calling
+++ NTOSKRNL.EXE::KeDelayExecutionThread calling
@@ -0,0 +1,2 @@
+TdxDeactivateTransportAddress
+TdxIssueListenRequest
```


## DbgTdxReferenceConnection

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.83|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|DbgTdxReferenceConnection|DbgTdxReferenceConnection|
|fullname|DbgTdxReferenceConnection|DbgTdxReferenceConnection|
|`refcount`|23|24|
|length|279|279|
|called|NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::RtlGetCallersAddress<br>WPP_SF_qdssD|NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::RtlGetCallersAddress<br>WPP_SF_qdssD|
|`calling`|<details><summary>Expand for full list:<br>TdxCallConnectionHandler<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxDisconnectConnection<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventDisconnectConnection<br>TdxIssueIoControlEndpointRequest</summary>TdxIssueIoControlRequest<br>TdxListenConnection<br>TdxQueryConnectionInfo<br>TdxQueryInformationCancelRoutine<br>TdxReceiveConnectionCancelRoutine<br>TdxSetOptionsConnection</details>|<details><summary>Expand for full list:<br>TdxCallConnectionHandler<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxDisconnectConnection<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventDisconnectConnection<br>TdxIssueIoControlEndpointRequest</summary>TdxIssueIoControlRequest<br>TdxIssueQueryAddressRequest<br>TdxListenConnection<br>TdxQueryConnectionInfo<br>TdxQueryInformationCancelRoutine<br>TdxReceiveConnectionCancelRoutine<br>TdxSetOptionsConnection</details>|
|paramcount|3|3|
|`address`|140003ba0|1400038b0|
|sig|undefined __fastcall DbgTdxReferenceConnection(longlong param_1, char * param_2, undefined4 param_3)|undefined __fastcall DbgTdxReferenceConnection(longlong param_1, char * param_2, undefined4 param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### DbgTdxReferenceConnection Calling Diff


```diff
--- DbgTdxReferenceConnection calling
+++ DbgTdxReferenceConnection calling
@@ -12,0 +13 @@
+TdxIssueQueryAddressRequest
```


## __security_check_cookie

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.5|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|__security_check_cookie|__security_check_cookie|
|fullname|__security_check_cookie|__security_check_cookie|
|`refcount`|28|29|
|length|30|30|
|called|__report_gsfailure|__report_gsfailure|
|`calling`|<details><summary>Expand for full list:<br>Ipv6UnicastAddressScope<br>TdxAcceptConnection<br>TdxCallConnectionHandler<br>TdxConnectTransportAddress<br>TdxCreateAndRegisterDeviceObject<br>TdxCreateAndRegisterNetAddress<br>TdxDisconnectConnection<br>TdxEventReceiveConnection<br>TdxEventReceiveMessagesTransportAddress<br>TdxIsPrematureConnectIndDisabled<br>TdxIsV6RegistryDisabled</summary>TdxIssueIoControlRequest<br>TdxIssueQueryAddressRequest<br>TdxPnpEventNotification<br>TdxProcessAddressChangeRoutine<br>TdxProcessInterfaceChangeRoutine<br>TdxQueryAddressComplete<br>TdxQueryInformationControlChannel<br>TdxSetOptionsConnection<br>TdxTcpQueryInformationEx<br>TdxTcpSetInformationEx<br>__GSHandlerCheckCommon<br>wil_RtlStagingConfig_QueryFeatureState<br>wil_details_FeatureReporting_ReportUsageToServiceDirect<br>wil_details_PopulateInitialConfiguredFeatureStates<br>wil_details_RecordCachedUsage<br>wil_details_UpdateFeatureConfiguredStates</details>|<details><summary>Expand for full list:<br>Ipv6UnicastAddressScope<br>TdxAcceptConnection<br>TdxCallConnectionHandler<br>TdxConnectTransportAddress<br>TdxCreateAndRegisterDeviceObject<br>TdxCreateAndRegisterNetAddress<br>TdxDeactivateTransportAddress<br>TdxDisconnectConnection<br>TdxEventReceiveConnection<br>TdxEventReceiveMessagesTransportAddress<br>TdxIsPrematureConnectIndDisabled</summary>TdxIsV6RegistryDisabled<br>TdxIssueIoControlRequest<br>TdxIssueListenRequest<br>TdxPnpEventNotification<br>TdxProcessAddressChangeRoutine<br>TdxProcessInterfaceChangeRoutine<br>TdxQueryAddressComplete<br>TdxQueryInformationControlChannel<br>TdxSetOptionsConnection<br>TdxTcpQueryInformationEx<br>TdxTcpSetInformationEx<br>__GSHandlerCheckCommon<br>wil_RtlStagingConfig_QueryFeatureState<br>wil_details_FeatureReporting_ReportUsageToServiceDirect<br>wil_details_PopulateInitialConfiguredFeatureStates<br>wil_details_RecordCachedUsage<br>wil_details_UpdateFeatureConfiguredStates</details>|
|paramcount|1|1|
|`address`|140019730|1400191e0|
|sig|void __cdecl __security_check_cookie(uintptr_t _StackCookie)|void __cdecl __security_check_cookie(uintptr_t _StackCookie)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### __security_check_cookie Calling Diff


```diff
--- __security_check_cookie calling
+++ __security_check_cookie calling
@@ -6,0 +7 @@
+TdxDeactivateTransportAddress
@@ -13 +14 @@
-TdxIssueQueryAddressRequest
+TdxIssueListenRequest
```


## NETIO.SYS::RtlCopyBufferToMdl

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|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|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|RtlCopyBufferToMdl|RtlCopyBufferToMdl|
|fullname|NETIO.SYS::RtlCopyBufferToMdl|NETIO.SYS::RtlCopyBufferToMdl|
|`refcount`|16|15|
|length|0|0|
|called|||
|`calling`|TdxIssueQueryAddressRequest<br>TdxQueryAddressComplete<br>TdxQueryConnectionInfoComplete<br>TdxQueryInformationControlChannel<br>TdxTcpQueryInformationEx|TdxQueryAddressComplete<br>TdxQueryConnectionInfoComplete<br>TdxQueryInformationControlChannel<br>TdxTcpQueryInformationEx|
|paramcount|0|0|
|address|EXTERNAL:0000005a|EXTERNAL:0000005a|
|sig|undefined RtlCopyBufferToMdl(void)|undefined RtlCopyBufferToMdl(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NETIO.SYS::RtlCopyBufferToMdl Calling Diff


```diff
--- NETIO.SYS::RtlCopyBufferToMdl calling
+++ NETIO.SYS::RtlCopyBufferToMdl calling
@@ -1 +0,0 @@
-TdxIssueQueryAddressRequest
```


## WPP_SF_q

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.85|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|WPP_SF_q|WPP_SF_q|
|fullname|WPP_SF_q|WPP_SF_q|
|`refcount`|14|15|
|length|58|58|
|called|_guard_dispatch_icall|_guard_dispatch_icall|
|calling|DbgTdxDereferenceTransportAddress<br>TdxActivateTransportAddress<br>TdxCallConnectionHandler<br>TdxCreateTransportAddress<br>TdxDeactivateTransportAddress<br>TdxProcessIfMediaStateChangeRoutine<br>TdxProcessInterfaceChangeRoutine<br>TdxUpdateDeviceObjectState|DbgTdxDereferenceTransportAddress<br>TdxActivateTransportAddress<br>TdxCallConnectionHandler<br>TdxCreateTransportAddress<br>TdxDeactivateTransportAddress<br>TdxProcessIfMediaStateChangeRoutine<br>TdxProcessInterfaceChangeRoutine<br>TdxUpdateDeviceObjectState|
|paramcount|4|4|
|`address`|1400153f8|140014e28|
|sig|undefined __fastcall WPP_SF_q(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined8 param_4)|undefined __fastcall WPP_SF_q(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined8 param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## NTOSKRNL.EXE::IoAcquireCancelSpinLock

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|IoAcquireCancelSpinLock|IoAcquireCancelSpinLock|
|fullname|NTOSKRNL.EXE::IoAcquireCancelSpinLock|NTOSKRNL.EXE::IoAcquireCancelSpinLock|
|`refcount`|15|13|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransportAddress<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnectionTlRequestComplete<br>TdxEventAbortConnection<br>TdxEventConnectConnection<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress<br>TdxIssueQueryAddressRequest<br>TdxQueryAddressComplete</summary>TdxReceiveConnectionTlRequestComplete<br>TdxSendConnectionTlRequestComplete</details>|<details><summary>Expand for full list:<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransportAddress<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnectionTlRequestComplete<br>TdxEventAbortConnection<br>TdxEventConnectConnection<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress<br>TdxQueryAddressComplete<br>TdxReceiveConnectionTlRequestComplete</summary>TdxSendConnectionTlRequestComplete</details>|
|paramcount|0|0|
|`address`|EXTERNAL:00000038|EXTERNAL:00000036|
|sig|undefined IoAcquireCancelSpinLock(void)|undefined IoAcquireCancelSpinLock(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::IoAcquireCancelSpinLock Calling Diff


```diff
--- NTOSKRNL.EXE::IoAcquireCancelSpinLock calling
+++ NTOSKRNL.EXE::IoAcquireCancelSpinLock calling
@@ -10 +9,0 @@
-TdxIssueQueryAddressRequest
```


## WPP_SF_qs

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.78|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|WPP_SF_qs|WPP_SF_qs|
|fullname|WPP_SF_qs|WPP_SF_qs|
|`refcount`|14|13|
|length|122|122|
|called|_guard_dispatch_icall|_guard_dispatch_icall|
|calling|<details><summary>Expand for full list:<br>TdxAssociateConnectionWithTransportAddress<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransportAddress<br>TdxDisassociateConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxProcessInterfaceChangeRoutine<br>TdxSetOptionsConnection<br>TdxTdiDispatchInternalDeviceControl</summary>TdxTraceConnectionRoutine</details>|<details><summary>Expand for full list:<br>TdxAssociateConnectionWithTransportAddress<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransportAddress<br>TdxDisassociateConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxProcessInterfaceChangeRoutine<br>TdxSetOptionsConnection<br>TdxTdiDispatchInternalDeviceControl</summary>TdxTraceConnectionRoutine</details>|
|paramcount|5|5|
|`address`|140016d28|140016778|
|sig|undefined __fastcall WPP_SF_qs(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined8 param_4, char * param_5)|undefined __fastcall WPP_SF_qs(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined8 param_4, char * param_5)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## NTOSKRNL.EXE::RtlGetCallersAddress

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|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|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|RtlGetCallersAddress|RtlGetCallersAddress|
|fullname|NTOSKRNL.EXE::RtlGetCallersAddress|NTOSKRNL.EXE::RtlGetCallersAddress|
|`refcount`|41|39|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransport<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransport<br>DbgTdxReferenceTransportAddress<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxConnectConnectionTlRequestComplete<br>TdxCreateTransportAddress<br>TdxDeactivateTransportAddress</summary>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDisassociateConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxEventReceiveMessagesTransportAddress<br>TdxIncrementTlEndpointReference<br>TdxIssueIoControlEndpointRequest<br>TdxIssueQueryAddressRequest<br>TdxReceiveConnection<br>TdxReceiveConnectionTlRequestComplete<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxSendTransportAddress<br>TdxTdiDispatchCreate</details>|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransport<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransport<br>DbgTdxReferenceTransportAddress<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxConnectConnectionTlRequestComplete<br>TdxCreateTransportAddress<br>TdxDeactivateTransportAddress</summary>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDisassociateConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxEventReceiveMessagesTransportAddress<br>TdxIncrementTlEndpointReference<br>TdxIssueIoControlEndpointRequest<br>TdxReceiveConnection<br>TdxReceiveConnectionTlRequestComplete<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxSendTransportAddress<br>TdxTdiDispatchCreate</details>|
|paramcount|0|0|
|address|EXTERNAL:0000004e|EXTERNAL:0000004e|
|sig|undefined RtlGetCallersAddress(void)|undefined RtlGetCallersAddress(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::RtlGetCallersAddress Calling Diff


```diff
--- NTOSKRNL.EXE::RtlGetCallersAddress calling
+++ NTOSKRNL.EXE::RtlGetCallersAddress calling
@@ -21 +20,0 @@
-TdxIssueQueryAddressRequest
```


## TdxCleanupObjectHeader

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.85|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|TdxCleanupObjectHeader|TdxCleanupObjectHeader|
|fullname|TdxCleanupObjectHeader|TdxCleanupObjectHeader|
|`refcount`|15|12|
|length|46|46|
|called|NTOSKRNL.EXE::IofCompleteRequest|NTOSKRNL.EXE::IofCompleteRequest|
|`calling`|<details><summary>Expand for full list:<br>TdxDeactivateTransportAddress<br>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDereferenceControlChannel<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnectionTlRequestComplete<br>TdxReceiveConnection<br>TdxReceiveConnectionTlRequestComplete<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxTdiDispatchCreate</summary></details>|TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDereferenceControlChannel<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnectionTlRequestComplete<br>TdxReceiveConnection<br>TdxReceiveConnectionTlRequestComplete<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxTdiDispatchCreate|
|paramcount|1|1|
|`address`|1400074f0|140007f10|
|sig|undefined __fastcall TdxCleanupObjectHeader(longlong param_1)|undefined __fastcall TdxCleanupObjectHeader(longlong param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### TdxCleanupObjectHeader Calling Diff


```diff
--- TdxCleanupObjectHeader calling
+++ TdxCleanupObjectHeader calling
@@ -1 +0,0 @@
-TdxDeactivateTransportAddress
```


## WPP_SF_qdssD

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.83|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|WPP_SF_qdssD|WPP_SF_qdssD|
|fullname|WPP_SF_qdssD|WPP_SF_qdssD|
|`refcount`|27|24|
|length|253|253|
|called|_guard_dispatch_icall|_guard_dispatch_icall|
|`calling`|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxReferenceConnection<br>TdxAssociateConnectionWithTransportAddress<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransportAddress<br>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxIncrementTlEndpointReference</summary>TdxIssueQueryAddressRequest<br>TdxReceiveConnection<br>TdxReceiveConnectionTlRequestComplete<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxTdiDispatchCreate</details>|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxReferenceConnection<br>TdxAssociateConnectionWithTransportAddress<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransportAddress<br>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxIncrementTlEndpointReference</summary>TdxReceiveConnection<br>TdxReceiveConnectionTlRequestComplete<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxTdiDispatchCreate</details>|
|paramcount|7|7|
|`address`|140016c24|140016674|
|sig|undefined __fastcall WPP_SF_qdssD(undefined8 param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4, undefined8 param_5, char * param_6, char * param_7)|undefined __fastcall WPP_SF_qdssD(undefined8 param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4, undefined8 param_5, char * param_6, char * param_7)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### WPP_SF_qdssD Calling Diff


```diff
--- WPP_SF_qdssD calling
+++ WPP_SF_qdssD calling
@@ -12 +11,0 @@
-TdxIssueQueryAddressRequest
```


## WPP_SF_sq

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.76|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|WPP_SF_sq|WPP_SF_sq|
|fullname|WPP_SF_sq|WPP_SF_sq|
|`refcount`|21|20|
|length|112|112|
|called|_guard_dispatch_icall|_guard_dispatch_icall|
|calling|<details><summary>Expand for full list:<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDeleteConnection<br>TdxDisassociateConnection<br>TdxDisconnectConnection<br>TdxEventAbortConnection<br>TdxEventConnectConnection<br>TdxEventDisconnectConnection<br>TdxIssueQueryAddressRequest<br>TdxListenConnection</summary>TdxShutdownEndpointConnection<br>TdxTdiDispatchCreate</details>|<details><summary>Expand for full list:<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDeleteConnection<br>TdxDisassociateConnection<br>TdxDisconnectConnection<br>TdxEventAbortConnection<br>TdxEventConnectConnection<br>TdxEventDisconnectConnection<br>TdxIssueQueryAddressRequest<br>TdxListenConnection</summary>TdxShutdownEndpointConnection<br>TdxTdiDispatchCreate</details>|
|paramcount|4|4|
|`address`|14001588c|1400152bc|
|sig|undefined __fastcall WPP_SF_sq(undefined8 param_1, undefined2 param_2, undefined8 param_3, char * param_4)|undefined __fastcall WPP_SF_sq(undefined8 param_1, undefined2 param_2, undefined8 param_3, char * param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## TdxCloseConnectionEndpointTlRequestComplete

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.74|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|TdxCloseConnectionEndpointTlRequestComplete|TdxCloseConnectionEndpointTlRequestComplete|
|fullname|TdxCloseConnectionEndpointTlRequestComplete|TdxCloseConnectionEndpointTlRequestComplete|
|`refcount`|16|13|
|length|993|993|
|called|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransportAddress<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel</summary>WPP_SF_qs<br>_guard_dispatch_icall<br>memset</details>|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransportAddress<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel<br>NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc<br>NTOSKRNL.EXE::KeReleaseSpinLock<br>NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel</summary>WPP_SF_qs<br>_guard_dispatch_icall<br>memset</details>|
|`calling`|TdxDeactivateTransportAddress<br>TdxDeleteConnection<br>TdxShutdownEndpointConnection|TdxDeleteConnection<br>TdxShutdownEndpointConnection|
|paramcount|2|2|
|`address`|140009f00|1400010b0|
|sig|undefined __fastcall TdxCloseConnectionEndpointTlRequestComplete(uint * param_1, uint param_2)|undefined __fastcall TdxCloseConnectionEndpointTlRequestComplete(uint * param_1, uint param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### TdxCloseConnectionEndpointTlRequestComplete Calling Diff


```diff
--- TdxCloseConnectionEndpointTlRequestComplete calling
+++ TdxCloseConnectionEndpointTlRequestComplete calling
@@ -1 +0,0 @@
-TdxDeactivateTransportAddress
```


## NTOSKRNL.EXE::ExFreePoolWithTag

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|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|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|ExFreePoolWithTag|ExFreePoolWithTag|
|fullname|NTOSKRNL.EXE::ExFreePoolWithTag|NTOSKRNL.EXE::ExFreePoolWithTag|
|`refcount`|44|43|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>DbgTdxDereferenceTransport<br>NetioShutdownWorkQueue<br>TdxAllocateTransportCleanupContext<br>TdxCleanupTransportWorkerRoutine<br>TdxCreateAndRegisterDeviceObject<br>TdxCreateAndRegisterNetAddress<br>TdxCreateTransportAddress<br>TdxDereferenceControlChannel<br>TdxDereferenceDeviceObjectContext<br>TdxEventErrorTransportAddress<br>TdxInitializeModule</summary>TdxInitializeModule$fin$0<br>TdxInitializeTransport<br>TdxIssueQueryAddressRequest<br>TdxMessageTlRequestComplete<br>TdxNaNotifyAttachProvider<br>TdxPnpEventNotification<br>TdxPnpEventNotifyAttachProvider<br>TdxPnpEventNotifyCleanupProviderContext<br>TdxProcessAddressChangeRoutine<br>TdxProcessInterfaceChangeRoutine<br>TdxQueryAddressComplete<br>TdxQueryConnectionInfoComplete<br>TdxSendDatagramTransportAddress<br>TdxShutdownModule<br>TdxShutdownNaClientModule<br>TdxShutdownTransportModule<br>TdxTcpQueryInformationEx<br>TdxTcpSetInformationEx<br>TdxTdiDispatchClose<br>TdxTdiDispatchDeviceControl<br>TdxTlNotifyActivateTransportWorkerRoutine<br>TdxTlNotifyAttachProvider<br>TdxTlNotifyCleanupProviderContext<br>TdxTlNotifyDeleteTransportWorkerRoutine<br>TdxTlNotifyDetachProvider</details>|<details><summary>Expand for full list:<br>DbgTdxDereferenceTransport<br>NetioShutdownWorkQueue<br>TdxAllocateTransportCleanupContext<br>TdxCleanupTransportWorkerRoutine<br>TdxCreateAndRegisterDeviceObject<br>TdxCreateAndRegisterNetAddress<br>TdxCreateTransportAddress<br>TdxDereferenceControlChannel<br>TdxDereferenceDeviceObjectContext<br>TdxEventErrorTransportAddress<br>TdxInitializeModule</summary>TdxInitializeModule$fin$0<br>TdxInitializeTransport<br>TdxMessageTlRequestComplete<br>TdxNaNotifyAttachProvider<br>TdxNaNotifyCleanupProviderContext<br>TdxNsiNotifyCleanupClientContext<br>TdxPnpEventNotification<br>TdxPnpEventNotifyAttachProvider<br>TdxProcessAddressChangeRoutine<br>TdxProcessInterfaceChangeRoutine<br>TdxQueryAddressComplete<br>TdxQueryConnectionInfoComplete<br>TdxSendDatagramTransportAddress<br>TdxShutdownModule<br>TdxShutdownNaClientModule<br>TdxShutdownTransportModule<br>TdxTcpQueryInformationEx<br>TdxTcpSetInformationEx<br>TdxTdiDispatchClose<br>TdxTdiDispatchDeviceControl<br>TdxTlNotifyActivateTransportWorkerRoutine<br>TdxTlNotifyAttachProvider<br>TdxTlNotifyDeleteTransportWorkerRoutine<br>TdxTlNotifyDetachProvider</details>|
|paramcount|0|0|
|address|EXTERNAL:0000003d|EXTERNAL:0000003d|
|sig|undefined ExFreePoolWithTag(void)|undefined ExFreePoolWithTag(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::ExFreePoolWithTag Calling Diff


```diff
--- NTOSKRNL.EXE::ExFreePoolWithTag calling
+++ NTOSKRNL.EXE::ExFreePoolWithTag calling
@@ -14 +13,0 @@
-TdxIssueQueryAddressRequest
@@ -16,0 +16,2 @@
+TdxNaNotifyCleanupProviderContext
+TdxNsiNotifyCleanupClientContext
@@ -19 +19,0 @@
-TdxPnpEventNotifyCleanupProviderContext
@@ -34 +33,0 @@
-TdxTlNotifyCleanupProviderContext
```


## IN6_IS_ADDR_UNSPECIFIED

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.6|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|IN6_IS_ADDR_UNSPECIFIED|IN6_IS_ADDR_UNSPECIFIED|
|fullname|IN6_IS_ADDR_UNSPECIFIED|IN6_IS_ADDR_UNSPECIFIED|
|`refcount`|5|4|
|length|53|53|
|called|||
|`calling`|SockAddrEqualsTaList<br>TdxIssueQueryAddressRequest<br>TdxQueryAddressComplete|SockAddrEqualsTaList<br>TdxQueryAddressComplete|
|paramcount|1|1|
|`address`|1400112d8|140010968|
|sig|undefined8 __fastcall IN6_IS_ADDR_UNSPECIFIED(short * param_1)|undefined8 __fastcall IN6_IS_ADDR_UNSPECIFIED(short * param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### IN6_IS_ADDR_UNSPECIFIED Calling Diff


```diff
--- IN6_IS_ADDR_UNSPECIFIED calling
+++ IN6_IS_ADDR_UNSPECIFIED calling
@@ -2 +1,0 @@
-TdxIssueQueryAddressRequest
```


## NTOSKRNL.EXE::KeReleaseSpinLock

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|KeReleaseSpinLock|KeReleaseSpinLock|
|fullname|NTOSKRNL.EXE::KeReleaseSpinLock|NTOSKRNL.EXE::KeReleaseSpinLock|
|`refcount`|249|247|
|length|0|0|
|called|||
|calling|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransport<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransport<br>DbgTdxReferenceTransportAddress<br>TdxAcceptConnection<br>TdxActivateTransport<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxAttachObjectToTransport</summary>TdxCallConnectionHandler<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionCancelRoutine<br>TdxConnectConnectionTlRequestComplete<br>TdxConnectTransportAddress<br>TdxCreateAndRegisterNetAddress<br>TdxCreateTransportAddress<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDeleteControlChannel<br>TdxDeleteTransport<br>TdxDeleteTransportAddress<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxDisconnectTransportAddress<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventConnectTransportAddress<br>TdxEventDisconnectConnection<br>TdxEventErrorTransportAddress<br>TdxEventInspectTransportAddress<br>TdxEventReceiveConnection<br>TdxEventReceiveMessagesTransportAddress<br>TdxIncrementTlEndpointReference<br>TdxInitializeTransport<br>TdxIssueIoControlEndpointRequest<br>TdxIssueIoControlRequest<br>TdxIssueListenRequest<br>TdxIssueQueryAddressRequest<br>TdxListenConnection<br>TdxListenTransportAddress<br>TdxListenTransportAddressCancelRoutine<br>TdxListenTransportAddressComplete<br>TdxLocateAndReferenceTransport<br>TdxNaDeregisterChangeHandler<br>TdxNaNotifyDetachProvider<br>TdxNaRegisterChangeHandler<br>TdxObjectHeaderToTransport<br>TdxPnpEventNotification<br>TdxProcessAddressChangeRoutine<br>TdxQueryAddressComplete<br>TdxQueryConnectionInfo<br>TdxQueryInformationCancelRoutine<br>TdxQueryInformationConnection<br>TdxQueryInformationTransportAddress<br>TdxReceiveConnection<br>TdxReceiveConnectionCancelRoutine<br>TdxReceiveConnectionTlRequestComplete<br>TdxReceiveDatagramTransportAddress<br>TdxReceiveDatagramTransportAddressCancelRoutine<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxSendDatagramTransportAddress<br>TdxSendTransportAddress<br>TdxSetOptionsConnection<br>TdxShutdownEndpointConnection<br>TdxTdiDispatchCreate<br>TdxTdiDispatchInternalDeviceControl</details>|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransport<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransport<br>DbgTdxReferenceTransportAddress<br>TdxAcceptConnection<br>TdxActivateTransport<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxAttachObjectToTransport</summary>TdxCallConnectionHandler<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionCancelRoutine<br>TdxConnectConnectionTlRequestComplete<br>TdxConnectTransportAddress<br>TdxCreateAndRegisterNetAddress<br>TdxCreateTransportAddress<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDeleteControlChannel<br>TdxDeleteTransport<br>TdxDeleteTransportAddress<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxDisconnectTransportAddress<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventConnectTransportAddress<br>TdxEventDisconnectConnection<br>TdxEventErrorTransportAddress<br>TdxEventInspectTransportAddress<br>TdxEventReceiveConnection<br>TdxEventReceiveMessagesTransportAddress<br>TdxIncrementTlEndpointReference<br>TdxInitializeTransport<br>TdxIssueIoControlEndpointRequest<br>TdxIssueIoControlRequest<br>TdxIssueListenRequest<br>TdxIssueQueryAddressRequest<br>TdxListenConnection<br>TdxListenTransportAddress<br>TdxListenTransportAddressCancelRoutine<br>TdxListenTransportAddressComplete<br>TdxLocateAndReferenceTransport<br>TdxNaDeregisterChangeHandler<br>TdxNaNotifyDetachProvider<br>TdxNaRegisterChangeHandler<br>TdxObjectHeaderToTransport<br>TdxPnpEventNotification<br>TdxProcessAddressChangeRoutine<br>TdxQueryAddressComplete<br>TdxQueryConnectionInfo<br>TdxQueryInformationCancelRoutine<br>TdxQueryInformationConnection<br>TdxQueryInformationTransportAddress<br>TdxReceiveConnection<br>TdxReceiveConnectionCancelRoutine<br>TdxReceiveConnectionTlRequestComplete<br>TdxReceiveDatagramTransportAddress<br>TdxReceiveDatagramTransportAddressCancelRoutine<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxSendDatagramTransportAddress<br>TdxSendTransportAddress<br>TdxSetOptionsConnection<br>TdxShutdownEndpointConnection<br>TdxTdiDispatchCreate<br>TdxTdiDispatchInternalDeviceControl</details>|
|paramcount|0|0|
|address|EXTERNAL:0000004d|EXTERNAL:0000004d|
|sig|undefined KeReleaseSpinLock(void)|undefined KeReleaseSpinLock(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

## TdxShutdownEndpointConnection

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.7|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|TdxShutdownEndpointConnection|TdxShutdownEndpointConnection|
|fullname|TdxShutdownEndpointConnection|TdxShutdownEndpointConnection|
|`refcount`|14|13|
|length|324|324|
|called|NTOSKRNL.EXE::KeReleaseSpinLock<br>TdxCloseConnectionEndpointTlRequestComplete<br>WPP_SF_sq<br>_guard_dispatch_icall|NTOSKRNL.EXE::KeReleaseSpinLock<br>TdxCloseConnectionEndpointTlRequestComplete<br>WPP_SF_sq<br>_guard_dispatch_icall|
|`calling`|<details><summary>Expand for full list:<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDisconnectConnection<br>TdxEventAbortConnection<br>TdxEventConnectConnection<br>TdxIssueIoControlEndpointRequest<br>TdxIssueQueryAddressRequest<br>TdxReceiveConnection</summary>TdxSendConnection</details>|<details><summary>Expand for full list:<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDisconnectConnection<br>TdxEventAbortConnection<br>TdxEventConnectConnection<br>TdxIssueIoControlEndpointRequest<br>TdxReceiveConnection<br>TdxSendConnection</summary></details>|
|paramcount|2|2|
|`address`|14000a950|14000e0a0|
|sig|undefined8 __fastcall TdxShutdownEndpointConnection(uint * param_1, undefined1 param_2)|undefined8 __fastcall TdxShutdownEndpointConnection(uint * param_1, undefined1 param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### TdxShutdownEndpointConnection Calling Diff


```diff
--- TdxShutdownEndpointConnection calling
+++ TdxShutdownEndpointConnection calling
@@ -10 +9,0 @@
-TdxIssueQueryAddressRequest
```


## INETADDR_ISV4MAPPED

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.67|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|INETADDR_ISV4MAPPED|INETADDR_ISV4MAPPED|
|fullname|INETADDR_ISV4MAPPED|INETADDR_ISV4MAPPED|
|`refcount`|9|8|
|length|61|61|
|called|||
|`calling`|SockAddrEqualsTaList<br>SockAddrToTaList<br>TdxCallConnectionHandler<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress<br>TdxIssueQueryAddressRequest<br>TdxQueryAddressComplete<br>TdxSelectTdiEventTransportAddress|SockAddrEqualsTaList<br>SockAddrToTaList<br>TdxCallConnectionHandler<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress<br>TdxQueryAddressComplete<br>TdxSelectTdiEventTransportAddress|
|paramcount|1|1|
|`address`|140001da0|140002630|
|sig|ulonglong __fastcall INETADDR_ISV4MAPPED(short * param_1)|ulonglong __fastcall INETADDR_ISV4MAPPED(short * param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### INETADDR_ISV4MAPPED Calling Diff


```diff
--- INETADDR_ISV4MAPPED calling
+++ INETADDR_ISV4MAPPED calling
@@ -6 +5,0 @@
-TdxIssueQueryAddressRequest
```


## NTOSKRNL.EXE::IoReleaseCancelSpinLock

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|IoReleaseCancelSpinLock|IoReleaseCancelSpinLock|
|fullname|NTOSKRNL.EXE::IoReleaseCancelSpinLock|NTOSKRNL.EXE::IoReleaseCancelSpinLock|
|`refcount`|21|19|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnectionCancelRoutine<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransportAddress<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxEventAbortConnection<br>TdxEventConnectConnection<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress</summary>TdxIssueQueryAddressRequest<br>TdxListenTransportAddressCancelRoutine<br>TdxQueryAddressComplete<br>TdxQueryInformationCancelRoutine<br>TdxReceiveConnectionCancelRoutine<br>TdxReceiveConnectionTlRequestComplete<br>TdxReceiveDatagramTransportAddressCancelRoutine<br>TdxSendConnectionTlRequestComplete</details>|<details><summary>Expand for full list:<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnectionCancelRoutine<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransportAddress<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxEventAbortConnection<br>TdxEventConnectConnection<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress</summary>TdxListenTransportAddressCancelRoutine<br>TdxQueryAddressComplete<br>TdxQueryInformationCancelRoutine<br>TdxReceiveConnectionCancelRoutine<br>TdxReceiveConnectionTlRequestComplete<br>TdxReceiveDatagramTransportAddressCancelRoutine<br>TdxSendConnectionTlRequestComplete</details>|
|paramcount|0|0|
|`address`|EXTERNAL:00000037|EXTERNAL:00000035|
|sig|undefined IoReleaseCancelSpinLock(void)|undefined IoReleaseCancelSpinLock(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::IoReleaseCancelSpinLock Calling Diff


```diff
--- NTOSKRNL.EXE::IoReleaseCancelSpinLock calling
+++ NTOSKRNL.EXE::IoReleaseCancelSpinLock calling
@@ -12 +11,0 @@
-TdxIssueQueryAddressRequest
```


## NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|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|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|KeAcquireSpinLockRaiseToDpc|KeAcquireSpinLockRaiseToDpc|
|fullname|NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc|NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc|
|`refcount`|131|132|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransport<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransport<br>DbgTdxReferenceTransportAddress<br>TdxAcceptConnection<br>TdxActivateTransport<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxAttachObjectToTransport</summary>TdxCallConnectionHandler<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxConnectTransportAddress<br>TdxCreateAndRegisterNetAddress<br>TdxCreateTransportAddress<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDeleteControlChannel<br>TdxDeleteTransport<br>TdxDeleteTransportAddress<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectTransportAddress<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventConnectTransportAddress<br>TdxEventDisconnectConnection<br>TdxEventErrorTransportAddress<br>TdxEventInspectTransportAddress<br>TdxEventReceiveConnection<br>TdxEventReceiveMessagesTransportAddress<br>TdxIncrementTlEndpointReference<br>TdxInitializeTransport<br>TdxIssueIoControlEndpointRequest<br>TdxIssueIoControlRequest<br>TdxIssueQueryAddressRequest<br>TdxListenConnection<br>TdxListenRequestComplete<br>TdxListenTransportAddress<br>TdxLocateAndReferenceTransport<br>TdxNaDeregisterChangeHandler<br>TdxNaNotifyDetachProvider<br>TdxNaRegisterChangeHandler<br>TdxObjectHeaderToTransport<br>TdxPnpEventNotification<br>TdxProcessAddressChangeRoutine<br>TdxQueryAddressComplete<br>TdxQueryConnectionInfo<br>TdxQueryInformationConnection<br>TdxQueryInformationTransportAddress<br>TdxReceiveConnection<br>TdxReceiveConnectionTlRequestComplete<br>TdxReceiveDatagramTransportAddress<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxSendDatagramTransportAddress<br>TdxSendTransportAddress<br>TdxTdiDispatchCreate<br>TdxTdiDispatchInternalDeviceControl</details>|<details><summary>Expand for full list:<br>DbgTdxDereferenceConnection<br>DbgTdxDereferenceTransport<br>DbgTdxDereferenceTransportAddress<br>DbgTdxReferenceConnection<br>DbgTdxReferenceTransport<br>DbgTdxReferenceTransportAddress<br>TdxAcceptConnection<br>TdxActivateTransport<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxAttachObjectToTransport</summary>TdxCallConnectionHandler<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxConnectTransportAddress<br>TdxCreateAndRegisterNetAddress<br>TdxCreateTransportAddress<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDecrementTlEndpointReference<br>TdxDeleteConnection<br>TdxDeleteControlChannel<br>TdxDeleteTransport<br>TdxDeleteTransportAddress<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnection<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectTransportAddress<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventConnectTransportAddress<br>TdxEventDisconnectConnection<br>TdxEventErrorTransportAddress<br>TdxEventInspectTransportAddress<br>TdxEventReceiveConnection<br>TdxEventReceiveMessagesTransportAddress<br>TdxIncrementTlEndpointReference<br>TdxInitializeTransport<br>TdxIssueIoControlEndpointRequest<br>TdxIssueIoControlRequest<br>TdxIssueListenRequest<br>TdxIssueQueryAddressRequest<br>TdxListenConnection<br>TdxListenRequestComplete<br>TdxListenTransportAddress<br>TdxLocateAndReferenceTransport<br>TdxNaDeregisterChangeHandler<br>TdxNaNotifyDetachProvider<br>TdxNaRegisterChangeHandler<br>TdxObjectHeaderToTransport<br>TdxPnpEventNotification<br>TdxProcessAddressChangeRoutine<br>TdxQueryAddressComplete<br>TdxQueryConnectionInfo<br>TdxQueryInformationConnection<br>TdxQueryInformationTransportAddress<br>TdxReceiveConnection<br>TdxReceiveConnectionTlRequestComplete<br>TdxReceiveDatagramTransportAddress<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnection<br>TdxSendConnectionTlRequestComplete<br>TdxSendDatagramTransportAddress<br>TdxSendTransportAddress<br>TdxTdiDispatchCreate<br>TdxTdiDispatchInternalDeviceControl</details>|
|paramcount|0|0|
|address|EXTERNAL:0000004c|EXTERNAL:0000004c|
|sig|undefined KeAcquireSpinLockRaiseToDpc(void)|undefined KeAcquireSpinLockRaiseToDpc(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc Calling Diff


```diff
--- NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc calling
+++ NTOSKRNL.EXE::KeAcquireSpinLockRaiseToDpc calling
@@ -44,0 +45 @@
+TdxIssueListenRequest
```


## NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|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|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|KeReleaseSpinLockFromDpcLevel|KeReleaseSpinLockFromDpcLevel|
|fullname|NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel|NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel|
|`refcount`|68|63|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>TdxAcceptConnection<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection</summary>TdxDisconnectConnectionTlRequestComplete<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress<br>TdxHashRemoveIrp<br>TdxIssueIoControlEndpointRequest<br>TdxIssueQueryAddressRequest<br>TdxListenTransportAddress<br>TdxListenTransportAddressCancelRoutine<br>TdxListenTransportAddressComplete<br>TdxLocateMatchingListenRequest<br>TdxQueryAddressComplete<br>TdxReceiveConnectionTlRequestComplete<br>TdxSelectTdiEventTransportAddress<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnectionTlRequestComplete<br>TdxSendTransportAddress</details>|<details><summary>Expand for full list:<br>TdxAcceptConnection<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnectionFromTransportAddress<br>TdxDisconnectConnection</summary>TdxDisconnectConnectionTlRequestComplete<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress<br>TdxHashRemoveIrp<br>TdxIssueIoControlEndpointRequest<br>TdxListenTransportAddress<br>TdxListenTransportAddressCancelRoutine<br>TdxListenTransportAddressComplete<br>TdxLocateMatchingListenRequest<br>TdxQueryAddressComplete<br>TdxReceiveConnectionTlRequestComplete<br>TdxSelectTdiEventTransportAddress<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnectionTlRequestComplete<br>TdxSendTransportAddress</details>|
|paramcount|0|0|
|address|EXTERNAL:00000049|EXTERNAL:00000049|
|sig|undefined KeReleaseSpinLockFromDpcLevel(void)|undefined KeReleaseSpinLockFromDpcLevel(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel Calling Diff


```diff
--- NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel calling
+++ NTOSKRNL.EXE::KeReleaseSpinLockFromDpcLevel calling
@@ -20 +19,0 @@
-TdxIssueQueryAddressRequest
```


## NTOSKRNL.EXE::RtlLogUnexpectedCodepath

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|RtlLogUnexpectedCodepath|RtlLogUnexpectedCodepath|
|fullname|NTOSKRNL.EXE::RtlLogUnexpectedCodepath|NTOSKRNL.EXE::RtlLogUnexpectedCodepath|
|`refcount`|2|4|
|length|0|0|
|called|||
|`calling`|TdxIssueIoControlRequest|TdxDeactivateTransportAddress<br>TdxIssueIoControlRequest<br>TdxIssueListenRequest|
|paramcount|0|0|
|`address`|EXTERNAL:00000023|EXTERNAL:00000037|
|sig|undefined RtlLogUnexpectedCodepath(void)|undefined RtlLogUnexpectedCodepath(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::RtlLogUnexpectedCodepath Calling Diff


```diff
--- NTOSKRNL.EXE::RtlLogUnexpectedCodepath calling
+++ NTOSKRNL.EXE::RtlLogUnexpectedCodepath calling
@@ -0,0 +1 @@
+TdxDeactivateTransportAddress
@@ -1,0 +3 @@
+TdxIssueListenRequest
```


## NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel

### Match Info



|Key|tdx_7920.sys - tdx_8246.sys|
| :---: | :---: |
|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|tdx_7920.sys|tdx_8246.sys|
| :---: | :---: | :---: |
|name|KeAcquireSpinLockAtDpcLevel|KeAcquireSpinLockAtDpcLevel|
|fullname|NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel|NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel|
|`refcount`|55|51|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>TdxAcceptConnection<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionCancelRoutine<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnectionFromTransportAddress</summary>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress<br>TdxHashRemoveIrp<br>TdxIssueIoControlEndpointRequest<br>TdxIssueQueryAddressRequest<br>TdxListenTransportAddress<br>TdxListenTransportAddressCancelRoutine<br>TdxListenTransportAddressComplete<br>TdxLocateMatchingListenRequest<br>TdxQueryAddressComplete<br>TdxQueryInformationCancelRoutine<br>TdxReceiveConnectionCancelRoutine<br>TdxReceiveConnectionTlRequestComplete<br>TdxReceiveDatagramTransportAddressCancelRoutine<br>TdxSelectTdiEventTransportAddress<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnectionTlRequestComplete<br>TdxSendTransportAddress</details>|<details><summary>Expand for full list:<br>TdxAcceptConnection<br>TdxActivateTransportAddress<br>TdxAssociateConnectionWithTransportAddress<br>TdxCloseConnectionEndpointTlRequestComplete<br>TdxConnectConnection<br>TdxConnectConnectionCancelRoutine<br>TdxConnectConnectionTlRequestComplete<br>TdxDeactivateTransport<br>TdxDeactivateTransportAddress<br>TdxDetachObjectFromTransport<br>TdxDisassociateConnectionFromTransportAddress</summary>TdxDisconnectConnection<br>TdxDisconnectConnectionTlRequestComplete<br>TdxDisconnectOrSendConnectionCancelRoutine<br>TdxEventAbortConnection<br>TdxEventAbortTransportAddress<br>TdxEventConnectConnection<br>TdxEventInspectTransportAddress<br>TdxEventReceiveMessagesTransportAddress<br>TdxHashRemoveIrp<br>TdxIssueIoControlEndpointRequest<br>TdxListenTransportAddress<br>TdxListenTransportAddressCancelRoutine<br>TdxListenTransportAddressComplete<br>TdxLocateMatchingListenRequest<br>TdxQueryAddressComplete<br>TdxQueryInformationCancelRoutine<br>TdxReceiveConnectionCancelRoutine<br>TdxReceiveConnectionTlRequestComplete<br>TdxReceiveDatagramTransportAddressCancelRoutine<br>TdxSelectTdiEventTransportAddress<br>TdxSelectTlRequestTransportAddress<br>TdxSendConnectionTlRequestComplete<br>TdxSendTransportAddress</details>|
|paramcount|0|0|
|address|EXTERNAL:00000048|EXTERNAL:00000048|
|sig|undefined KeAcquireSpinLockAtDpcLevel(void)|undefined KeAcquireSpinLockAtDpcLevel(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel Calling Diff


```diff
--- NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel calling
+++ NTOSKRNL.EXE::KeAcquireSpinLockAtDpcLevel calling
@@ -22 +21,0 @@
-TdxIssueQueryAddressRequest
```




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