# afd.sys CVE-2026-21236 KB5074109 vs KB5077181

# 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)
	* [AFDETW_TRACECLOSE](#afdetw_traceclose)
	* [NTOSKRNL.EXE::RtlLogUnexpectedCodepath](#ntoskrnlexertllogunexpectedcodepath)
* [Modified](#modified)
	* [AfdBReceive](#afdbreceive)
	* [AfdNotifyPostEvents](#afdnotifypostevents)
	* [AfdFastDatagramReceive](#afdfastdatagramreceive)
	* [AfdTdiCreateAO](#afdtdicreateao)
	* [AfdNotifyDestroyContext](#afdnotifydestroycontext)
	* [AfdCleanupCore](#afdcleanupcore)
	* [AfdTransmitPackets](#afdtransmitpackets)
	* [AfdBCommonChainedReceiveEventHandler](#afdbcommonchainedreceiveeventhandler)
	* [AfdSuperAccept](#afdsuperaccept)
	* [AfdSanConnectHandler](#afdsanconnecthandler)
	* [AfdRestartSuperAcceptGetAddress](#afdrestartsuperacceptgetaddress)
	* [AfdCloseCore](#afdclosecore)
	* [AfdReceiveDatagram](#afdreceivedatagram)
	* [AfdSanAcceptCore](#afdsanacceptcore)
	* [AfdNotifyProcessRegistration](#afdnotifyprocessregistration)
	* [AfdExtractAfdSendMsgInfo](#afdextractafdsendmsginfo)
	* [AfdCompleteBufferedSendsUnlock](#afdcompletebufferedsendsunlock)
	* [AfdFastConnectionSend](#afdfastconnectionsend)
	* [AfdFastConnectionReceive](#afdfastconnectionreceive)
	* [AfdQueryHandles](#afdqueryhandles)
	* [AfdBind](#afdbind)
	* [AfdFastDatagramSend](#afdfastdatagramsend)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [NTOSKRNL.EXE::MmMapLockedPages](#ntoskrnlexemmmaplockedpages)
	* [memcpy](#memcpy)
	* [wil_details_IsEnabledFallback](#wil_details_isenabledfallback)
	* [__security_check_cookie](#__security_check_cookie)
	* [__GSHandlerCheck_SEH](#__gshandlercheck_seh)
	* [NTOSKRNL.EXE::ExFreePoolWithTag](#ntoskrnlexeexfreepoolwithtag)

# Visual Chart Diff



```mermaid

flowchart LR

AfdBReceive-6-old<--Match 81%-->AfdBReceive-6-new
AfdNotifyPostEvents-3-old<--Match 89%-->AfdNotifyPostEvents-3-new
AfdFastDatagramReceive-4-old<--Match 77%-->AfdFastDatagramReceive-4-new
AfdTdiCreateAO-10-old<--Match 97%-->AfdTdiCreateAO-10-new
AfdNotifyDestroyContext-2-old<--Match 73%-->AfdNotifyDestroyContext-2-new
AfdCleanupCore-2-old<--Match 99%-->AfdCleanupCore-2-new
AfdTransmitPackets-2-old<--Match 79%-->AfdTransmitPackets-2-new
AfdBCommonChainedReceiveEventHandler-4-old<--Match 95%-->AfdBCommonChainedReceiveEventHandler-4-new
AfdSuperAccept-2-old<--Match 88%-->AfdSuperAccept-2-new
AfdSanConnectHandler-4-old<--Match 77%-->AfdSanConnectHandler-4-new
AfdRestartSuperAcceptGetAddress-3-old<--Match 98%-->AfdRestartSuperAcceptGetAddress-3-new
AfdCloseCore-1-old<--Match 46%-->AfdCloseCore-1-new
AfdReceiveDatagram-2-old<--Match 84%-->AfdReceiveDatagram-2-new
AfdSanAcceptCore-4-old<--Match 55%-->AfdSanAcceptCore-4-new
AfdNotifyProcessRegistration-4-old<--Match 23%-->AfdNotifyProcessRegistration-4-new
AfdExtractAfdSendMsgInfo-3-old<--Match 95%-->AfdExtractAfdSendMsgInfo-3-new
AfdCompleteBufferedSendsUnlock-2-old<--Match 75%-->AfdCompleteBufferedSendsUnlock-2-new
AfdFastConnectionSend-3-old<--Match 59%-->AfdFastConnectionSend-3-new
AfdFastConnectionReceive-4-old<--Match 82%-->AfdFastConnectionReceive-4-new
AfdQueryHandles-8-old<--Match 80%-->AfdQueryHandles-8-new
AfdBind-2-old<--Match 95%-->AfdBind-2-new
AfdFastDatagramSend-5-old<--Match 84%-->AfdFastDatagramSend-5-new

subgraph afd-10.0.26100.7824 (WinBuild.160101.0800).sys
    AfdBReceive-6-new
AfdNotifyPostEvents-3-new
AfdFastDatagramReceive-4-new
AfdTdiCreateAO-10-new
AfdNotifyDestroyContext-2-new
AfdCleanupCore-2-new
AfdTransmitPackets-2-new
AfdBCommonChainedReceiveEventHandler-4-new
AfdSuperAccept-2-new
AfdSanConnectHandler-4-new
AfdRestartSuperAcceptGetAddress-3-new
AfdCloseCore-1-new
AfdReceiveDatagram-2-new
AfdSanAcceptCore-4-new
AfdNotifyProcessRegistration-4-new
AfdExtractAfdSendMsgInfo-3-new
AfdCompleteBufferedSendsUnlock-2-new
AfdFastConnectionSend-3-new
AfdFastConnectionReceive-4-new
AfdQueryHandles-8-new
AfdBind-2-new
AfdFastDatagramSend-5-new
    subgraph Added
direction LR
AFDETW_TRACECLOSE
    NTOSKRNLEXE-RtlLogUnexpectedCodepath
end
end

subgraph afd-10.0.26100.7623 (WinBuild.160101.0800).sys
    AfdBReceive-6-old
AfdNotifyPostEvents-3-old
AfdFastDatagramReceive-4-old
AfdTdiCreateAO-10-old
AfdNotifyDestroyContext-2-old
AfdCleanupCore-2-old
AfdTransmitPackets-2-old
AfdBCommonChainedReceiveEventHandler-4-old
AfdSuperAccept-2-old
AfdSanConnectHandler-4-old
AfdRestartSuperAcceptGetAddress-3-old
AfdCloseCore-1-old
AfdReceiveDatagram-2-old
AfdSanAcceptCore-4-old
AfdNotifyProcessRegistration-4-old
AfdExtractAfdSendMsgInfo-3-old
AfdCompleteBufferedSendsUnlock-2-old
AfdFastConnectionSend-3-old
AfdFastConnectionReceive-4-old
AfdQueryHandles-8-old
AfdBind-2-old
AfdFastDatagramSend-5-old
    
end

```


```mermaid
pie showData
    title Function Matches - 99.9372%
"unmatched_funcs_len" : 2
"matched_funcs_len" : 3182
```



```mermaid
pie showData
    title Matched Function Similarity - 98.7744%
"matched_funcs_with_code_changes_len" : 22
"matched_funcs_with_non_code_changes_len" : 17
"matched_funcs_no_changes_len" : 3143
```

# Metadata

## Ghidra Diff Engine

### Command Line

#### Captured Command Line


```
ghidriff --project-location C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-21236\ghidra_projects --project-name CVE-2026-21236 --symbols-path C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-21236\symbols --gzfs-path gzfs --threaded --log-level INFO --file-log-level INFO --log-path ghidriff.log --min-func-len 10 --gdt [] --bsim --max-ram-percent 60.0 --max-section-funcs 200 --md-title afd.sys CVE-2026-21236 KB5074109 vs KB5077181 afd-10.0.26100.7623 (WinBuild.160101.0800).sys afd-10.0.26100.7824 (WinBuild.160101.0800).sys
```


#### Verbose Args


<details>

```
--old ['C:\\tools\\hugo\\patchpalooza\\ghidriff\\CVE-2026-21236\\afd-10.0.26100.7623 (WinBuild.160101.0800).sys'] --new [['C:\\tools\\hugo\\patchpalooza\\ghidriff\\CVE-2026-21236\\afd-10.0.26100.7824 (WinBuild.160101.0800).sys']] --engine VersionTrackingDiff --output-path C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-21236\output --summary False --project-location C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-21236\ghidra_projects --project-name CVE-2026-21236 --symbols-path C:\tools\hugo\patchpalooza\ghidriff\CVE-2026-21236\symbols --gzfs-path gzfs --base-address None --program-options None --threaded True --force-analysis False --force-diff False --no-symbols False --log-level INFO --file-log-level INFO --log-path ghidriff.log --va False --min-func-len 10 --use-calling-counts False --gdt [] --bsim True --bsim-full False --max-ram-percent 60.0 --print-flags False --jvm-args None --side-by-side False --max-section-funcs 200 --md-title afd.sys CVE-2026-21236 KB5074109 vs KB5077181
```


</details>

#### Download Original PEs


```
wget https://msdl.microsoft.com/download/symbols/afd.sys/5D088826B3000/afd.sys -O afd.sys.x64.10.0.26100.7623
wget https://msdl.microsoft.com/download/symbols/afd.sys/3FBD2AEEB4000/afd.sys -O afd.sys.x64.10.0.26100.7824
```


## Binary Metadata Diff


```diff
--- afd-10.0.26100.7623 (WinBuild.160101.0800).sys Meta
+++ afd-10.0.26100.7824 (WinBuild.160101.0800).sys Meta
@@ -1,44 +1,44 @@
-Program Name: afd-10.0.26100.7623 (WinBuild.160101.0800).sys
+Program Name: afd-10.0.26100.7824 (WinBuild.160101.0800).sys
 Language ID: x86:LE:64:default (4.7)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 140000000
 Maximum Address: ff0000184f
-# of Bytes: 735592
+# of Bytes: 739704
 # of Memory Blocks: 15
-# of Instructions: 114593
-# of Defined Data: 11284
-# of Functions: 1590
-# of Symbols: 14161
+# of Instructions: 115115
+# of Defined Data: 11329
+# of Functions: 1594
+# of Symbols: 14199
 # of Data Types: 398
 # of Data Type Categories: 24
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.1.2
-Date Created: Fri Jul 24 14:07:40 SGT 2026
+Date Created: Fri Jul 24 14:07:46 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /C:/tools/hugo/patchpalooza/ghidriff/CVE-2026-21236/afd-10.0.26100.7623 (WinBuild.160101.0800).sys
-Executable MD5: 1932f74bdbe80699ce0a9f56c8b70a01
-Executable SHA256: 8970f344bf8621f5a29db47a71fc3384a8f0124038807e77af680d59035f18b7
-FSRL: file:///C:/tools/hugo/patchpalooza/ghidriff/CVE-2026-21236/afd-10.0.26100.7623 (WinBuild.160101.0800).sys?MD5=1932f74bdbe80699ce0a9f56c8b70a01
+Executable Location: /C:/tools/hugo/patchpalooza/ghidriff/CVE-2026-21236/afd-10.0.26100.7824 (WinBuild.160101.0800).sys
+Executable MD5: 80fb56d0890df92c800ace513f1f75b2
+Executable SHA256: 00793b62c568a3361366bdf34a1fb67bf186fe57c0d856e12033af87c3182944
+FSRL: file:///C:/tools/hugo/patchpalooza/ghidriff/CVE-2026-21236/afd-10.0.26100.7824 (WinBuild.160101.0800).sys?MD5=80fb56d0890df92c800ace513f1f75b2
 PDB Age: 1
 PDB File: afd.pdb
-PDB GUID: 7bb240d0-60ab-fc99-e112-bf98429107bd
+PDB GUID: ba53c53c-26c6-1dd7-26eb-9bc9ff3ddbea
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: Ancillary Function Driver for WinSock
-PE Property[FileVersion]: 10.0.26100.7623 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.26100.7824 (WinBuild.160101.0800)
 PE Property[InternalName]: afd.sys
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: afd.sys
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.26100.7623
+PE Property[ProductVersion]: 10.0.26100.7824
 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 afd-10.0.26100.7623 (WinBuild.160101.0800).sys Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra afd-10.0.26100.7623 (WinBuild.160101.0800).sys Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra afd-10.0.26100.7623 (WinBuild.160101.0800).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.msdApplyOptions|{
	interpretation: FUNCTION_IF_EXISTS,
	applyCallingConvention: true,
	applySignature: true,
	demangleOnlyKnownPatterns: true,
	doDisassembly: true
}|
|Demangler Microsoft.msdOutputOptions|ghidra.app.util.demangler.microsoft.options.MsdOutputOption@9e5b|
|Disassemble Entry Points|true|
|Disassemble Entry Points.Respect Execute Flag|true|
|Embedded Media|true|
|Embedded Media.Create Analysis Bookmarks|true|
|External Entry References|true|
|Function ID|true|
|Function ID.Always Apply FID Labels|false|
|Function ID.Create Analysis Bookmarks|true|
|Function ID.Instruction Count Threshold|14.6|
|Function ID.Multiple Match Threshold|30.0|
|Function Start Search|true|
|Function Start Search.Bookmark Functions|false|
|Function Start Search.Search Data Blocks|false|
|Non-Returning Functions - Discovered|true|
|Non-Returning Functions - Discovered.Create Analysis Bookmarks|true|
|Non-Returning Functions - Discovered.Function Non-return Threshold|3|
|Non-Returning Functions - Discovered.Repair Flow Damage|true|
|Non-Returning Functions - Known|true|
|Non-Returning Functions - Known.Create Analysis Bookmarks|true|
|PDB MSDIA|false|
|PDB MSDIA.Search untrusted symbol servers|false|
|PDB Universal|true|
|PDB Universal.Import Source Line Info|true|
|PDB Universal.Search untrusted symbol servers|false|
|Reference|true|
|Reference.Address Table Alignment|1|
|Reference.Address Table Minimum Size|2|
|Reference.Align End of Strings|false|
|Reference.Ascii String References|true|
|Reference.Create Address Tables|true|
|Reference.Minimum String Length|5|
|Reference.References to Pointers|true|
|Reference.Relocation Table Guide|true|
|Reference.Respect Execute Flag|true|
|Reference.Subroutine References|true|
|Reference.Switch Table References|false|
|Reference.Unicode String References|true|
|Scalar Operand References|true|
|Scalar Operand References.Relocation Table Guide|true|
|Shared Return Calls|true|
|Shared Return Calls.Allow Conditional Jumps|false|
|Shared Return Calls.Assume Contiguous Functions Only|true|
|Stack|true|
|Stack.Create Local Variables|true|
|Stack.Create Param Variables|false|
|Stack.Max Threads|2|
|Subroutine References|true|
|Subroutine References.Create Thunks Early|true|
|Variadic Function Signature Override|false|
|Variadic Function Signature Override.Create Analysis Bookmarks|false|
|Windows x86 PE Exception Handling|true|
|Windows x86 PE RTTI Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer.Starting Address of the TEB||
|Windows x86 Thread Environment Block (TEB) Analyzer.Windows OS Version|Windows 7|
|WindowsPE x86 Propagate External Parameters|false|
|WindowsResourceReference|true|
|WindowsResourceReference.Create Analysis Bookmarks|true|
|x86 Constant Reference Analyzer|true|
|x86 Constant Reference Analyzer.Create Data from pointer|false|
|x86 Constant Reference Analyzer.Function parameter/return Pointer analysis|true|
|x86 Constant Reference Analyzer.Max Threads|2|
|x86 Constant Reference Analyzer.Min absolute reference|4|
|x86 Constant Reference Analyzer.Require pointer param data type|false|
|x86 Constant Reference Analyzer.Speculative reference max|256|
|x86 Constant Reference Analyzer.Speculative reference min|1024|
|x86 Constant Reference Analyzer.Stored Value Pointer analysis|true|
|x86 Constant Reference Analyzer.Trust values read from writable memory|true|

</details>


<details>
<summary>Ghidra afd-10.0.26100.7824 (WinBuild.160101.0800).sys Decompiler Options</summary>


|Decompiler Option|Value|
| :---: | :---: |
|Prototype Evaluation|__fastcall|

</details>


<details>
<summary>Ghidra afd-10.0.26100.7824 (WinBuild.160101.0800).sys Specification extensions Options</summary>


|Specification extensions Option|Value|
| :---: | :---: |
|FormatVersion|0|
|VersionCounter|0|

</details>


<details>
<summary>Ghidra afd-10.0.26100.7824 (WinBuild.160101.0800).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.msdApplyOptions|{
	interpretation: FUNCTION_IF_EXISTS,
	applyCallingConvention: true,
	applySignature: true,
	demangleOnlyKnownPatterns: true,
	doDisassembly: true
}|
|Demangler Microsoft.msdOutputOptions|ghidra.app.util.demangler.microsoft.options.MsdOutputOption@9e5b|
|Disassemble Entry Points|true|
|Disassemble Entry Points.Respect Execute Flag|true|
|Embedded Media|true|
|Embedded Media.Create Analysis Bookmarks|true|
|External Entry References|true|
|Function ID|true|
|Function ID.Always Apply FID Labels|false|
|Function ID.Create Analysis Bookmarks|true|
|Function ID.Instruction Count Threshold|14.6|
|Function ID.Multiple Match Threshold|30.0|
|Function Start Search|true|
|Function Start Search.Bookmark Functions|false|
|Function Start Search.Search Data Blocks|false|
|Non-Returning Functions - Discovered|true|
|Non-Returning Functions - Discovered.Create Analysis Bookmarks|true|
|Non-Returning Functions - Discovered.Function Non-return Threshold|3|
|Non-Returning Functions - Discovered.Repair Flow Damage|true|
|Non-Returning Functions - Known|true|
|Non-Returning Functions - Known.Create Analysis Bookmarks|true|
|PDB MSDIA|false|
|PDB MSDIA.Search untrusted symbol servers|false|
|PDB Universal|true|
|PDB Universal.Import Source Line Info|true|
|PDB Universal.Search untrusted symbol servers|false|
|Reference|true|
|Reference.Address Table Alignment|1|
|Reference.Address Table Minimum Size|2|
|Reference.Align End of Strings|false|
|Reference.Ascii String References|true|
|Reference.Create Address Tables|true|
|Reference.Minimum String Length|5|
|Reference.References to Pointers|true|
|Reference.Relocation Table Guide|true|
|Reference.Respect Execute Flag|true|
|Reference.Subroutine References|true|
|Reference.Switch Table References|false|
|Reference.Unicode String References|true|
|Scalar Operand References|true|
|Scalar Operand References.Relocation Table Guide|true|
|Shared Return Calls|true|
|Shared Return Calls.Allow Conditional Jumps|false|
|Shared Return Calls.Assume Contiguous Functions Only|true|
|Stack|true|
|Stack.Create Local Variables|true|
|Stack.Create Param Variables|false|
|Stack.Max Threads|2|
|Subroutine References|true|
|Subroutine References.Create Thunks Early|true|
|Variadic Function Signature Override|false|
|Variadic Function Signature Override.Create Analysis Bookmarks|false|
|Windows x86 PE Exception Handling|true|
|Windows x86 PE RTTI Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer.Starting Address of the TEB||
|Windows x86 Thread Environment Block (TEB) Analyzer.Windows OS Version|Windows 7|
|WindowsPE x86 Propagate External Parameters|false|
|WindowsResourceReference|true|
|WindowsResourceReference.Create Analysis Bookmarks|true|
|x86 Constant Reference Analyzer|true|
|x86 Constant Reference Analyzer.Create Data from pointer|false|
|x86 Constant Reference Analyzer.Function parameter/return Pointer analysis|true|
|x86 Constant Reference Analyzer.Max Threads|2|
|x86 Constant Reference Analyzer.Min absolute reference|4|
|x86 Constant Reference Analyzer.Require pointer param data type|false|
|x86 Constant Reference Analyzer.Speculative reference max|256|
|x86 Constant Reference Analyzer.Speculative reference min|1024|
|x86 Constant Reference Analyzer.Stored Value Pointer analysis|true|
|x86 Constant Reference Analyzer.Trust values read from writable memory|true|

</details>

## Diff Stats



|Stat|Value|
| :---: | :---: |
|added_funcs_len|2|
|deleted_funcs_len|0|
|modified_funcs_len|39|
|added_symbols_len|27|
|deleted_symbols_len|19|
|diff_time|21.359684467315674|
|deleted_strings_len|0|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 1583, 'ExternalsName': 323, 'BulkBasicBlockMnemonicHash': 24})|
|items_to_process|87|
|diff_types|Counter({'address': 38, 'called': 32, 'code': 22, 'length': 22, 'refcount': 17, 'calling': 13, 'sig': 12, 'name': 10, 'fullname': 10})|
|unmatched_funcs_len|2|
|total_funcs_len|3184|
|matched_funcs_len|3182|
|matched_funcs_with_code_changes_len|22|
|matched_funcs_with_non_code_changes_len|17|
|matched_funcs_no_changes_len|3143|
|match_func_similarity_percent|98.7744%|
|func_match_overall_percent|99.9372%|
|first_matches|Counter({'SymbolsHash': 1583, 'BulkBasicBlockMnemonicHash': 24})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 1583
"ExternalsName" : 323
"BulkBasicBlockMnemonicHash" : 24
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 1583
"BulkBasicBlockMnemonicHash" : 24
```



```mermaid
pie showData
    title Diff Stats
"added_funcs_len" : 2
"deleted_funcs_len" : 0
"modified_funcs_len" : 39
```



```mermaid
pie showData
    title Symbols
"added_symbols_len" : 27
"deleted_symbols_len" : 19
```

## Strings


*No string differences found*

# Deleted

# Added

## AFDETW_TRACECLOSE

### Function Meta



|Key|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|name|AFDETW_TRACECLOSE|
|fullname|AFDETW_TRACECLOSE|
|refcount|2|
|length|188|
|called|AFDETW_TRACESTATUS<br>EtwEx_tidActivityInfo<br>__security_check_cookie|
|calling|AfdCloseCore|
|paramcount|3|
|address|140012180|
|sig|undefined __fastcall AFDETW_TRACECLOSE(int param_1, undefined4 param_2, short * param_3)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- AFDETW_TRACECLOSE
+++ AFDETW_TRACECLOSE
@@ -0,0 +1,36 @@
+
+/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
+
+void AFDETW_TRACECLOSE(int param_1,undefined4 param_2,short *param_3)
+
+{
+  undefined8 *puVar1;
+  undefined1 auStack_68 [32];
+  int local_48;
+  undefined8 local_38;
+  ulonglong uStack_30;
+  short *local_28;
+  undefined8 local_20;
+  ulonglong local_18;
+  
+  local_18 = __security_cookie ^ (ulonglong)auStack_68;
+  if (g_AfdEtwTraceEnable != 0) {
+    local_20 = 0;
+    uStack_30 = 0;
+    if (param_3 != (short *)0x0) {
+      uStack_30 = (ulonglong)(*param_3 != -0x502f) + 1;
+    }
+    uStack_30 = uStack_30 | 0x8000000000000004;
+    puVar1 = &local_38;
+    local_38 = 0x3e90f04100003e9;
+    local_28 = param_3;
+    AFDETW_TRACESTATUS(puVar1,param_1,param_2,(longlong)param_3);
+    if (((param_3 != (short *)0x0) && (param_1 == 1)) &&
+       (Microsoft_Windows_Networking_CorrelationEnabled != 0)) {
+      local_48 = param_1;
+      EtwEx_tidActivityInfo(puVar1,&ActivityStop,&local_28);
+    }
+  }
+  return;
+}
+

```


## NTOSKRNL.EXE::RtlLogUnexpectedCodepath

### Function Meta



|Key|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|name|RtlLogUnexpectedCodepath|
|fullname|NTOSKRNL.EXE::RtlLogUnexpectedCodepath|
|refcount|2|
|length|0|
|called||
|calling|AfdBind|
|paramcount|0|
|address|EXTERNAL:00000004|
|sig|undefined RtlLogUnexpectedCodepath(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|True|


*No code available for NTOSKRNL.EXE::RtlLogUnexpectedCodepath*
# Modified


*Modified functions contain code changes*
## AfdBReceive

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.63|
|i_ratio|0.56|
|m_ratio|0.97|
|b_ratio|0.81|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdBReceive|AfdBReceive|
|fullname|AfdBReceive|AfdBReceive|
|refcount|2|2|
|`length`|6962|7280|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACEABORT<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACERECV<br>AfdBInitDrainBytesInTransport<br>AfdBPostDrainReceive<br>AfdBeginAbort<br>AfdGetReceiveBuffer<br>AfdIndicateEventSelectEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdRemoveConnectionFromTimerWheel</summary>AfdReturnBuffer<br>AfdTLPostUserReceive<br>NETIO.SYS::RtlCopyMdlToMdl<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmMapLockedPagesSpecifyCache<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_qL<br>_guard_dispatch_icall</details>|<details><summary>Expand for full list:<br>AFDETW_TRACEABORT<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACERECV<br>AfdBInitDrainBytesInTransport<br>AfdBPostDrainReceive<br>AfdBeginAbort<br>AfdGetReceiveBuffer<br>AfdIndicateEventSelectEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdRemoveConnectionFromTimerWheel</summary>AfdReturnBuffer<br>AfdTLPostUserReceive<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NETIO.SYS::RtlCopyMdlToMdl<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmMapLockedPagesSpecifyCache<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_qL<br>_guard_dispatch_icall</details>|
|calling|AfdReceive|AfdReceive|
|paramcount|6|6|
|`address`|14003f640|14003e810|
|sig|ulonglong __fastcall AfdBReceive(short * param_1, ulonglong param_2, uint param_3, ulonglong param_4, uint param_5, undefined4 param_6)|ulonglong __fastcall AfdBReceive(short * param_1, ulonglong param_2, uint param_3, ulonglong param_4, uint param_5, undefined4 param_6)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdBReceive Called Diff


```diff
--- AfdBReceive called
+++ AfdBReceive called
@@ -13,0 +14 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
@@ -15,0 +17 @@
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdBReceive Diff


```diff
--- AfdBReceive
+++ AfdBReceive
@@ -1,1297 +1,1376 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 
 ulonglong AfdBReceive(short *param_1,ulonglong param_2,uint param_3,ulonglong param_4,uint param_5,
                      undefined4 param_6)
 
 {
   ushort *puVar1;
-  longlong *******ppppppplVar2;
+  longlong *****ppppplVar2;
   undefined4 uVar3;
   ushort *puVar4;
-  longlong ******pppppplVar5;
+  longlong ****pppplVar5;
   undefined8 uVar6;
   undefined8 uVar7;
   undefined8 uVar8;
-  longlong *****ppppplVar9;
-  longlong ******pppppplVar10;
-  longlong ****pppplVar11;
+  longlong ***ppplVar9;
+  longlong ****pppplVar10;
+  longlong **pplVar11;
   code *pcVar12;
   undefined1 uVar13;
   undefined1 *puVar14;
   char cVar15;
   ushort uVar16;
   ushort uVar17;
   int iVar18;
   longlong lVar19;
   void *pvVar20;
-  longlong *plVar21;
-  longlong *******ppppppplVar22;
-  ulonglong uVar23;
+  ulonglong uVar21;
+  longlong *plVar22;
+  longlong *****ppppplVar23;
   uint uVar24;
   longlong *plVar25;
   undefined1 *puVar26;
-  longlong *******ppppppplVar27;
-  uint uVar28;
-  ulonglong uVar29;
-  ushort uVar30;
-  ushort uVar32;
+  longlong *****ppppplVar27;
+  ushort uVar28;
+  longlong *****ppppplVar30;
+  ushort uVar31;
+  uint uVar32;
   uint uVar33;
-  longlong *******ppppppplVar34;
+  ulonglong uVar34;
   bool bVar35;
   byte local_res18;
   undefined8 uStackY_160;
   undefined1 auStackY_158 [32];
   undefined8 local_108;
   undefined8 uStack_100;
   undefined8 local_f8;
   undefined8 local_e8;
   uint local_d4;
-  longlong ******local_d0;
-  longlong ******local_c8;
+  longlong ****local_d0;
+  longlong ****local_c8;
   undefined8 local_c0;
   undefined8 local_b8;
   undefined8 uStack_b0;
   undefined8 local_a8;
   ulonglong local_a0;
   code *local_98;
   undefined8 local_90;
   undefined4 local_88;
   undefined4 local_84;
   undefined4 local_80;
   undefined8 local_7c;
   undefined8 local_74;
   undefined8 local_6c;
   undefined8 local_64;
   undefined8 local_5c;
   undefined4 local_54;
   undefined4 uStack_50;
   undefined4 local_4c;
-  short *psVar31;
+  short *psVar29;
   
   puVar26 = auStackY_158;
   local_f8 = 0;
-  ppppppplVar22 = (longlong *******)0x0;
-  local_c8 = (longlong ******)&local_d0;
+  ppppplVar23 = (longlong *****)0x0;
+  local_c8 = (longlong ****)&local_d0;
   local_e8 = 0;
-  local_d0 = (longlong ******)&local_d0;
+  local_d0 = (longlong ****)&local_d0;
   local_108 = 0;
   uStack_100 = 0;
-  ppppppplVar27 = (longlong *******)0x0;
+  ppppplVar27 = (longlong *****)0x0;
   cVar15 = '\x01';
-  ppppppplVar34 = (longlong *******)0x0;
+  ppppplVar30 = (longlong *****)0x0;
   puVar4 = *(ushort **)(*(longlong *)(param_2 + 0x30) + 0x18);
   local_c0 = CONCAT44(local_c0._4_4_,param_3) & 0xffffffff00000080;
-  uVar33 = param_3 | 0x8000000;
+  uVar32 = param_3 | 0x8000000;
   if ((param_4 & 4) == 0) {
-    uVar33 = param_3;
-  }
-  if ((uVar33 >> 0xe & 1) == 0) {
+    uVar32 = param_3;
+  }
+  if ((uVar32 >> 0xe & 1) == 0) {
 LAB_0:
     if ((puVar4[2] & 0x10) == 0) {
       local_res18 = 1;
     }
     else {
-      local_res18 = (byte)uVar33 >> 4 & 1;
+      local_res18 = (byte)uVar32 >> 4 & 1;
     }
     *(undefined4 *)(param_2 + 0x10) = 0;
     param_1[0x1c] = 0;
     param_1[0x1d] = 0;
     param_1[0x1e] = 0;
     param_1[0x1f] = 0;
     if ((char)*(undefined4 *)(puVar4 + 4) < '\0') {
-      uVar33 = uVar33 | 0x60;
+      uVar32 = uVar32 | 0x60;
     }
-    local_d4 = uVar33;
+    local_d4 = uVar32;
     KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,&local_108);
     if ((*(uint *)(puVar4 + 4) & 0x800) == 0) {
       if (((*puVar4 & 0xafd2) == 0xafd2) &&
-         (ppppppplVar22 = *(longlong ********)(puVar4 + 0x60),
-         ppppppplVar22 != (longlong *******)0x0)) {
-        if ((((uVar33 >> 0xe & 1) != 0) && (*(uint *)(ppppppplVar22 + 0x12) < param_5)) &&
-           ((*(uint *)(puVar4 + 4) >> 8 & 1) == 0)) {
-          *(uint *)(ppppppplVar22 + 0x12) = param_5 + 1;
+         (ppppplVar23 = *(longlong ******)(puVar4 + 0x60), ppppplVar23 != (longlong *****)0x0)) {
+        if (((uVar32 >> 0xe & 1) != 0) &&
+           ((*(uint *)(ppppplVar23 + 0x12) < param_5 && ((*(uint *)(puVar4 + 4) >> 8 & 1) == 0)))) {
+          *(uint *)(ppppplVar23 + 0x12) = param_5 + 1;
         }
-        if (((ulonglong)*ppppppplVar22 & 0x1000000000) == 0) {
-          if ((uVar33 & 0x40) != 0) {
+        if (((ulonglong)*ppppplVar23 & 0x1000000000) == 0) {
+          if ((uVar32 & 0x40) != 0) {
             *(uint *)(puVar4 + 0x24) = *(uint *)(puVar4 + 0x24) & 0xfffffffd;
           }
-          if ((uVar33 & 0x20) != 0) {
+          if ((uVar32 & 0x20) != 0) {
             if (*(longlong *)(puVar4 + 0xbc) != 0) {
               puVar1 = (ushort *)(*(longlong *)(puVar4 + 0xbc) + 100);
               *puVar1 = *puVar1 & 0xfffe;
             }
             *(uint *)(puVar4 + 0x24) = *(uint *)(puVar4 + 0x24) & 0xfffffffe;
           }
           if ((DAT_1 & 0x10) != 0) {
             WPP_SF_qL(10,&WPP_4baf20d1201f32f413bac65b914e826e_Traceguids,puVar4,
                       *(undefined4 *)(puVar4 + 0x24));
           }
           AFDETW_TRACERECV(0,0x100b,(short *)puVar4,0,param_6,*(undefined8 *)(param_1 + 4),param_5,0
                            ,param_1,'\x01');
-          ppppppplVar27 =
-               (longlong *******)
-               AfdGetReceiveBuffer((longlong)ppppppplVar22,uVar33,(undefined8 *)0x0);
+          ppppplVar27 = (longlong *****)
+                        AfdGetReceiveBuffer((longlong)ppppplVar23,uVar32,(undefined8 *)0x0);
           puVar14 = auStackY_158;
-          if (ppppppplVar27 != (longlong *******)0x0) {
+          if (ppppplVar27 != (longlong *****)0x0) {
 LAB_2:
             plVar25 = *(longlong **)(param_1 + 4);
-            plVar21 = (longlong *)0xffff;
+            plVar22 = (longlong *)0xffff;
             if (plVar25 == (longlong *)0x0) {
-              uVar23 = 0;
-              bVar35 = *(int *)(ppppppplVar27 + 8) != 0;
-              uVar29 = 0;
+              uVar21 = 0;
+              bVar35 = *(int *)(ppppplVar27 + 8) != 0;
+              uVar34 = 0;
             }
             else {
               if (*(int *)(param_2 + 0x10) == 0) {
                 do {
                   if ((*(byte *)((longlong)plVar25 + 10) & 5) == 0) {
                     *(undefined4 *)(puVar26 + 0x28) = 0x40000000;
                     *(undefined4 *)(puVar26 + 0x20) = 0;
-                    *(undefined8 *)(puVar26 + -8) = 0x14003f9b4;
-                    plVar21 = plVar25;
+                    *(undefined8 *)(puVar26 + -8) = 0x14003eb84;
+                    plVar22 = plVar25;
                     lVar19 = MmMapLockedPagesSpecifyCache(plVar25,0,1);
                   }
                   else {
                     lVar19 = plVar25[3];
                   }
                   if (lVar19 == 0) {
                     bVar35 = false;
-                    uVar29 = 0xc000009a;
+                    uVar34 = 0xc000009a;
                     local_b8 = 0;
                     uStack_b0 = 0;
                     local_a8 = 0;
                     if (*(longlong *)(puVar4 + 0xbc) != 0) {
-                      *(undefined8 *)(puVar26 + -8) = 0x14003fbe2;
+                      *(undefined8 *)(puVar26 + -8) = 0x14003edb2;
                       cVar15 = ExAcquireRundownProtection(puVar4 + 0xc0);
                       if (cVar15 != '\0') {
                         lVar19 = *(longlong *)(puVar4 + 0xbc);
                         bVar35 = true;
-                        uVar30 = *(ushort *)(lVar19 + 0x6a);
+                        uVar28 = *(ushort *)(lVar19 + 0x6a);
                         uVar6 = *(undefined8 *)(lVar19 + 0x40);
-                        if ((uVar30 & 2) == 0) {
-                          uVar16 = uVar30 | 2;
+                        if ((uVar28 & 2) == 0) {
+                          uVar16 = uVar28 | 2;
                           *(ushort *)(lVar19 + 0x6a) = uVar16;
-                          goto joined_r0x00014003fc1d;
+                          goto joined_r0x00014003eded;
                         }
                       }
                     }
-                    *(undefined8 *)(puVar26 + -8) = 0x14003fdcf;
+                    *(undefined8 *)(puVar26 + -8) = 0x14003efcb;
                     KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
                     if (!bVar35) goto LAB_3;
                     goto LAB_4;
                   }
                   plVar25 = (longlong *)*plVar25;
                 } while (plVar25 != (longlong *)0x0);
               }
-              pppppplVar5 = ppppppplVar27[7];
-              *(undefined8 *)(puVar26 + -8) = 0x14003f9d9;
-              AFDETW_TRACEBUFFER(plVar21,(longlong)param_1,(longlong)pppppplVar5,0);
-              uVar29 = (ulonglong)*(uint *)(ppppppplVar27 + 8);
-              uVar3 = *(undefined4 *)(ppppppplVar27 + 2);
+              pppplVar5 = ppppplVar27[7];
+              *(undefined8 *)(puVar26 + -8) = 0x14003eba9;
+              AFDETW_TRACEBUFFER(plVar22,(longlong)param_1,(longlong)pppplVar5,0);
+              uVar34 = (ulonglong)*(uint *)(ppppplVar27 + 8);
+              uVar3 = *(undefined4 *)(ppppplVar27 + 2);
               uVar6 = *(undefined8 *)(param_1 + 4);
-              pppppplVar5 = ppppppplVar27[7];
+              pppplVar5 = ppppplVar27[7];
               *(ulonglong **)(puVar26 + 0x28) = &local_a0;
-              *(ulonglong *)(puVar26 + 0x20) = uVar29;
+              *(ulonglong *)(puVar26 + 0x20) = uVar34;
               local_a0 = 0;
-              *(undefined8 *)(puVar26 + -8) = 0x14003fa09;
-              RtlCopyMdlToMdl(pppppplVar5,uVar3,uVar6);
-              bVar35 = local_a0 < uVar29;
-              uVar23 = local_a0;
-            }
-            cVar15 = (char)uVar29;
-            uVar28 = -(uint)bVar35 & 0x80000005;
-            uVar29 = (ulonglong)uVar28;
-            ppppppplVar34 = (longlong *******)0x0;
-            uVar30 = *(ushort *)((longlong)ppppppplVar27 + 0x4c) & 4;
-            psVar31 = (short *)(ulonglong)uVar30;
-            iVar18 = (int)uVar23;
+              *(undefined8 *)(puVar26 + -8) = 0x14003ebd9;
+              RtlCopyMdlToMdl(pppplVar5,uVar3,uVar6);
+              bVar35 = local_a0 < uVar34;
+              uVar21 = local_a0;
+            }
+            cVar15 = (char)uVar34;
+            uVar33 = -(uint)bVar35 & 0x80000005;
+            uVar34 = (ulonglong)uVar33;
+            ppppplVar30 = (longlong *****)0x0;
+            uVar28 = *(ushort *)((longlong)ppppplVar27 + 0x4c) & 4;
+            psVar29 = (short *)(ulonglong)uVar28;
+            iVar18 = (int)uVar21;
             if ((int)local_c0 == 0) {
-              uVar16 = *(ushort *)((longlong)ppppppplVar27 + 0x4c) & 1;
-              if (uVar28 == 0) {
+              uVar16 = *(ushort *)((longlong)ppppplVar27 + 0x4c) & 1;
+              if (uVar33 == 0) {
                 if (uVar16 == 0) {
-                  *(int *)(ppppppplVar22 + 0xb) = *(int *)(ppppppplVar22 + 0xb) - iVar18;
-                  *(short *)(ppppppplVar22 + 0xc) = *(short *)(ppppppplVar22 + 0xc) + -1;
+                  *(int *)(ppppplVar23 + 0xb) = *(int *)(ppppplVar23 + 0xb) - iVar18;
+                  *(short *)(ppppplVar23 + 0xc) = *(short *)(ppppplVar23 + 0xc) + -1;
                 }
                 else {
-                  *(int *)((longlong)ppppppplVar22 + 0x5c) =
-                       *(int *)((longlong)ppppppplVar22 + 0x5c) - iVar18;
-                  *(short *)((longlong)ppppppplVar22 + 0x62) =
-                       *(short *)((longlong)ppppppplVar22 + 0x62) + -1;
-                  *(ushort *)((longlong)ppppppplVar27 + 0x4c) =
-                       *(ushort *)((longlong)ppppppplVar27 + 0x4c) & 0xfffe;
-                }
-                pppppplVar5 = *ppppppplVar27;
-                if (((longlong *******)pppppplVar5[1] != ppppppplVar27) ||
-                   (pppppplVar10 = ppppppplVar27[1],
-                   (longlong *******)*pppppplVar10 != ppppppplVar27)) goto LAB_5;
-                *pppppplVar10 = (longlong *****)pppppplVar5;
-                pppppplVar5[1] = (longlong *****)pppppplVar10;
+                  *(int *)((longlong)ppppplVar23 + 0x5c) =
+                       *(int *)((longlong)ppppplVar23 + 0x5c) - iVar18;
+                  *(short *)((longlong)ppppplVar23 + 0x62) =
+                       *(short *)((longlong)ppppplVar23 + 0x62) + -1;
+                  *(ushort *)((longlong)ppppplVar27 + 0x4c) =
+                       *(ushort *)((longlong)ppppplVar27 + 0x4c) & 0xfffe;
+                }
+                pppplVar5 = *ppppplVar27;
+                if (((longlong *****)pppplVar5[1] != ppppplVar27) ||
+                   (pppplVar10 = ppppplVar27[1], (longlong *****)*pppplVar10 != ppppplVar27))
+                goto LAB_5;
+                *pppplVar10 = (longlong ***)pppplVar5;
+                pppplVar5[1] = (longlong ***)pppplVar10;
                 LOCK();
-                ppppppplVar2 = ppppppplVar27 + 3;
-                pppppplVar5 = *ppppppplVar2;
-                *ppppppplVar2 = (longlong ******)((longlong)*ppppppplVar2 + -1);
+                ppppplVar2 = ppppplVar27 + 3;
+                pppplVar5 = *ppppplVar2;
+                *ppppplVar2 = (longlong ****)((longlong)*ppppplVar2 + -1);
                 UNLOCK();
-                if ((longlong)pppppplVar5 < 2) {
-                  if (pppppplVar5 == (longlong ******)0x1) {
-                    if ((longlong *******)*local_c8 != &local_d0) goto LAB_5;
-                    ppppppplVar27[1] = local_c8;
-                    *ppppppplVar27 = (longlong ******)&local_d0;
-                    *local_c8 = (longlong *****)ppppppplVar27;
-                    local_c8 = (longlong ******)ppppppplVar27;
+                if ((longlong)pppplVar5 < 2) {
+                  if (pppplVar5 == (longlong ****)0x1) {
+                    if ((longlong *****)*local_c8 != &local_d0) goto LAB_5;
+                    ppppplVar27[1] = local_c8;
+                    *ppppplVar27 = (longlong ****)&local_d0;
+                    *local_c8 = (longlong ***)ppppplVar27;
+                    local_c8 = (longlong ****)ppppplVar27;
                   }
                   else {
                     pcVar12 = (code *)swi(0x29);
                     (*pcVar12)(0xe);
                     puVar26 = puVar26 + 8;
                   }
                 }
               }
               else {
                 if (uVar16 == 0) {
-                  *(int *)(ppppppplVar22 + 0xb) = *(int *)(ppppppplVar22 + 0xb) - iVar18;
+                  *(int *)(ppppplVar23 + 0xb) = *(int *)(ppppplVar23 + 0xb) - iVar18;
                 }
                 else {
-                  *(int *)((longlong)ppppppplVar22 + 0x5c) =
-                       *(int *)((longlong)ppppppplVar22 + 0x5c) - iVar18;
-                }
-                *(int *)(ppppppplVar27 + 2) = *(int *)(ppppppplVar27 + 2) + iVar18;
-                *(int *)(ppppppplVar27 + 8) = *(int *)(ppppppplVar27 + 8) - iVar18;
-                ppppppplVar34 = ppppppplVar27;
-              }
-              ppppppplVar27 = ppppppplVar34;
-              if (((*(int *)((longlong)ppppppplVar22 + 100) != 0) &&
-                  (*(uint *)(ppppppplVar22 + 0xb) < *(uint *)(ppppppplVar22 + 0x12))) &&
-                 (*(int *)(ppppppplVar22 + 0x11) == 0)) {
-                *(undefined8 *)(puVar26 + -8) = 0x14003fb2f;
-                pvVar20 = AfdBInitDrainBytesInTransport((longlong)ppppppplVar22,(longlong)puVar4);
+                  *(int *)((longlong)ppppplVar23 + 0x5c) =
+                       *(int *)((longlong)ppppplVar23 + 0x5c) - iVar18;
+                }
+                *(int *)(ppppplVar27 + 2) = *(int *)(ppppplVar27 + 2) + iVar18;
+                *(int *)(ppppplVar27 + 8) = *(int *)(ppppplVar27 + 8) - iVar18;
+                ppppplVar30 = ppppplVar27;
+              }
+              ppppplVar27 = ppppplVar30;
+              if (((*(int *)((longlong)ppppplVar23 + 100) != 0) &&
+                  (*(uint *)(ppppplVar23 + 0xb) < *(uint *)(ppppplVar23 + 0x12))) &&
+                 (*(int *)(ppppplVar23 + 0x11) == 0)) {
+                *(undefined8 *)(puVar26 + -8) = 0x14003ecff;
+                pvVar20 = AfdBInitDrainBytesInTransport((longlong)ppppplVar23,(longlong)puVar4);
                 *(void **)(puVar26 + 0x70) = pvVar20;
               }
             }
-            uVar33 = local_d4;
+            uVar32 = local_d4;
             uVar24 = *(int *)(param_2 + 0x10) + iVar18;
             *(uint *)(param_2 + 0x10) = uVar24;
-            *(undefined8 *)(puVar26 + -8) = 0x14003fb53;
-            ppppppplVar27 =
-                 (longlong *******)AfdGetReceiveBuffer((longlong)ppppppplVar22,uVar33,ppppppplVar27)
-            ;
-            if ((((puVar4[2] & 0x10) == 0) || (uVar30 != 0)) && (uVar28 != 0x80000005)) {
+            *(undefined8 *)(puVar26 + -8) = 0x14003ed23;
+            ppppplVar27 = (longlong *****)
+                          AfdGetReceiveBuffer((longlong)ppppplVar23,uVar32,ppppplVar27);
+            if ((((puVar4[2] & 0x10) == 0) || (uVar28 != 0)) && (uVar33 != 0x80000005)) {
               puVar14 = puVar26;
               if (local_res18 == 0) {
-                if (ppppppplVar27 == (longlong *******)0x0) goto LAB_6;
+                if (ppppplVar27 == (longlong *****)0x0) goto LAB_6;
                 goto LAB_2;
               }
               if (param_5 != uVar24) {
-                if (ppppppplVar27 == (longlong *******)0x0) {
-                  if ((uVar33 >> 0xe & 1) == 0) goto LAB_7;
+                if (ppppplVar27 == (longlong *****)0x0) {
+                  if ((uVar32 >> 0xe & 1) == 0) goto LAB_7;
                   goto LAB_6;
                 }
                 goto LAB_2;
               }
             }
 LAB_7:
-            if ((uVar33 & 0x20) != 0) {
-              if (((ulonglong)*ppppppplVar22 & 0x100000000) == 0) {
-                bVar35 = *(short *)(ppppppplVar22 + 0xc) == 0;
-              }
-              else if (((longlong)ppppppplVar22[9] + (longlong)ppppppplVar22[8] <
-                        (longlong)ppppppplVar22[7]) ||
-                      (*(char *)((longlong)ppppppplVar22 + 0x69) != '\0')) {
+            if ((uVar32 & 0x20) != 0) {
+              if (((ulonglong)*ppppplVar23 & 0x100000000) == 0) {
+                bVar35 = *(short *)(ppppplVar23 + 0xc) == 0;
+              }
+              else if (((longlong)ppppplVar23[9] + (longlong)ppppplVar23[8] <
+                        (longlong)ppppplVar23[7]) ||
+                      (*(char *)((longlong)ppppplVar23 + 0x69) != '\0')) {
                 bVar35 = false;
               }
               else {
                 bVar35 = true;
               }
               if (bVar35) {
                 if ((*(uint *)(puVar4 + 4) & 0x10) == 0) {
                   *(undefined1 *)((longlong)puVar4 + 0x21) = 1;
                 }
               }
               else {
                 if (*(longlong *)(puVar4 + 0xbc) != 0) {
                   puVar1 = (ushort *)(*(longlong *)(puVar4 + 0xbc) + 100);
                   *puVar1 = *puVar1 | 1;
                 }
-                *(undefined8 *)(puVar26 + -8) = 0x14003fe9c;
+                *(undefined8 *)(puVar26 + -8) = 0x14003f099;
                 AfdIndicateEventSelectEvent((short *)puVar4,1,0);
               }
             }
-            if ((uVar33 & 0x40) != 0) {
-              if (((ulonglong)*ppppppplVar22 & 0x100000000) == 0) {
-                if (*(short *)((longlong)ppppppplVar22 + 0x62) != 0) goto LAB_8;
-              }
-              else if ((longlong)ppppppplVar22[0xc] + (longlong)ppppppplVar22[0xb] <
-                       (longlong)ppppppplVar22[10]) {
+            if ((uVar32 & 0x40) != 0) {
+              if (((ulonglong)*ppppplVar23 & 0x100000000) == 0) {
+                if (*(short *)((longlong)ppppplVar23 + 0x62) != 0) goto LAB_8;
+              }
+              else if ((longlong)ppppplVar23[0xc] + (longlong)ppppplVar23[0xb] <
+                       (longlong)ppppplVar23[10]) {
 LAB_8:
                 if (((char)*(undefined4 *)(puVar4 + 4) < '\0') &&
                    (*(longlong *)(puVar4 + 0xbc) != 0)) {
                   puVar1 = (ushort *)(*(longlong *)(puVar4 + 0xbc) + 100);
                   *puVar1 = *puVar1 | 1;
                 }
-                uVar33 = *(uint *)(puVar4 + 4);
-                *(undefined8 *)(puVar26 + -8) = 0x14003fefe;
+                uVar32 = *(uint *)(puVar4 + 4);
+                *(undefined8 *)(puVar26 + -8) = 0x14003f0fb;
                 AfdIndicateEventSelectEvent
-                          ((short *)puVar4,(ulonglong)(2 - ((uVar33 & 0x80) != 0)),0);
+                          ((short *)puVar4,(ulonglong)(2 - ((uVar32 & 0x80) != 0)),0);
               }
             }
             bVar35 = false;
             local_a8 = 0;
             local_b8 = 0;
             uStack_b0 = 0;
             if (*(longlong *)(puVar4 + 0xbc) != 0) {
-              *(undefined8 *)(puVar26 + -8) = 0x14003ff29;
+              *(undefined8 *)(puVar26 + -8) = 0x14003f126;
               cVar15 = ExAcquireRundownProtection(puVar4 + 0xc0);
               if (cVar15 != '\0') {
                 lVar19 = *(longlong *)(puVar4 + 0xbc);
                 bVar35 = true;
                 uVar16 = *(ushort *)(lVar19 + 0x6a);
                 local_c0 = *(ulonglong *)(lVar19 + 0x40);
                 if ((uVar16 & 2) == 0) {
-                  uVar32 = uVar16 | 2;
-                  *(ushort *)(lVar19 + 0x6a) = uVar32;
-                  goto joined_r0x00014003ff64;
-                }
-              }
-            }
-            *(undefined8 *)(puVar26 + -8) = 0x14004011c;
+                  uVar31 = uVar16 | 2;
+                  *(ushort *)(lVar19 + 0x6a) = uVar31;
+                  goto joined_r0x00014003f161;
+                }
+              }
+            }
+            *(undefined8 *)(puVar26 + -8) = 0x14003f33f;
             KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
             if (!bVar35) goto LAB_9;
             goto LAB_10;
           }
 LAB_6:
           puVar26 = puVar14;
           cVar15 = (char)param_5;
-          if (((ulonglong)*ppppppplVar22 & 0x100000000) == 0) {
-            bVar35 = *(short *)(ppppppplVar22 + 0xc) == 0;
+          if (((ulonglong)*ppppplVar23 & 0x100000000) == 0) {
+            bVar35 = *(short *)(ppppplVar23 + 0xc) == 0;
           }
-          else if (((longlong)ppppppplVar22[9] + (longlong)ppppppplVar22[8] <
-                    (longlong)ppppppplVar22[7]) ||
-                  (*(char *)((longlong)ppppppplVar22 + 0x69) != '\0')) {
+          else if (((longlong)ppppplVar23[9] + (longlong)ppppplVar23[8] < (longlong)ppppplVar23[7])
+                  || (*(char *)((longlong)ppppplVar23 + 0x69) != '\0')) {
             bVar35 = false;
           }
           else {
             bVar35 = true;
           }
           if ((bVar35) && (AfdDoNotHoldNICBuffers == 0)) {
-            *(undefined8 *)(puVar26 + -8) = 0x14004020e;
-            AfdRemoveConnectionFromTimerWheel((longlong)ppppppplVar22);
+            *(undefined8 *)(puVar26 + -8) = 0x14003f434;
+            AfdRemoveConnectionFromTimerWheel((longlong)ppppplVar23);
           }
-          *(uint *)(param_2 + 0x18) = uVar33;
+          *(uint *)(param_2 + 0x18) = uVar32;
           *(uint *)(param_2 + 8) = param_5;
           *(undefined8 *)(param_2 + 0x20) = 0;
           if (*(int *)(param_2 + 0x10) != 0) {
 LAB_11:
             if (((((*(uint *)(puVar4 + 4) >> 8 & 1) == 0) ||
-                 (((((*(uint *)((longlong)ppppppplVar22 + 4) & 0x50000000) != 0 ||
-                    (*(int *)(ppppppplVar22 + 0x11) < 0)) ||
-                   ((int)*(uint *)((longlong)ppppppplVar22 + 4) < 0)) ||
-                  (((longlong *******)ppppppplVar22[7] != ppppppplVar22 + 7 || (param_5 == 0))))))
-                || ((char)(byte)uVar33 < '\0')) || (((byte)uVar33 & 0x60) == 0x40)) {
+                 (((((*(uint *)((longlong)ppppplVar23 + 4) & 0x50000000) != 0 ||
+                    (*(int *)(ppppplVar23 + 0x11) < 0)) ||
+                   ((int)*(uint *)((longlong)ppppplVar23 + 4) < 0)) ||
+                  (((longlong *****)ppppplVar23[7] != ppppplVar23 + 7 || (param_5 == 0)))))) ||
+                ((char)(byte)uVar32 < '\0')) || (((byte)uVar32 & 0x60) == 0x40)) {
               *(uint *)(param_2 + 0x18) = *(uint *)(param_2 + 0x18) & 0xefffffff;
-              pppppplVar10 = ppppppplVar22[8];
-              pppppplVar5 = (longlong ******)(param_1 + 0x54);
-              uVar29 = param_2;
-              psVar31 = param_1;
-              if ((longlong *******)*pppppplVar10 != ppppppplVar22 + 7) {
+              pppplVar10 = ppppplVar23[8];
+              pppplVar5 = (longlong ****)(param_1 + 0x54);
+              psVar29 = param_1;
+              uVar34 = param_2;
+              if ((longlong *****)*pppplVar10 != ppppplVar23 + 7) {
 LAB_5:
                 pcVar12 = (code *)swi(0x29);
                 (*pcVar12)(3);
                 puVar26 = puVar26 + 8;
                 goto LAB_12;
               }
-              *pppppplVar5 = (longlong *****)(ppppppplVar22 + 7);
-              *(longlong *******)(param_1 + 0x58) = pppppplVar10;
-              *pppppplVar10 = (longlong *****)pppppplVar5;
-              ppppppplVar22[8] = pppppplVar5;
+              *pppplVar5 = (longlong ***)(ppppplVar23 + 7);
+              *(longlong *****)(param_1 + 0x58) = pppplVar10;
+              *pppplVar10 = (longlong ***)pppplVar5;
+              ppppplVar23[8] = pppplVar5;
               param_1[0x18] = 0;
               param_1[0x19] = 0;
               LOCK();
               *(code **)(param_1 + 0x34) = AfdCancelReceive;
               UNLOCK();
               if ((char)param_1[0x22] != '\0') {
-                ppppplVar9 = *pppppplVar5;
-                if (((longlong ******)ppppplVar9[1] != pppppplVar5) ||
-                   (pppplVar11 = *(longlong *****)(param_1 + 0x58),
-                   (longlong ******)*pppplVar11 != pppppplVar5)) goto LAB_5;
-                *pppplVar11 = (longlong ***)ppppplVar9;
-                ppppplVar9[1] = pppplVar11;
+                ppplVar9 = *pppplVar5;
+                if (((longlong ****)ppplVar9[1] != pppplVar5) ||
+                   (pplVar11 = *(longlong ***)(param_1 + 0x58),
+                   (longlong ****)*pplVar11 != pppplVar5)) goto LAB_5;
+                *pplVar11 = (longlong *)ppplVar9;
+                ppplVar9[1] = pplVar11;
                 LOCK();
                 lVar19 = *(longlong *)(param_1 + 0x34);
                 *(longlong *)(param_1 + 0x34) = 0;
                 UNLOCK();
                 if (lVar19 == 0) {
-                  *pppppplVar5 = (longlong *****)0x0;
+                  *pppplVar5 = (longlong ***)0x0;
                   goto LAB_13;
                 }
                 bVar35 = false;
                 local_a8 = 0;
                 local_b8 = 0;
                 uStack_b0 = 0;
                 if (*(longlong *)(puVar4 + 0xbc) == 0) {
 LAB_14:
-                  *(undefined8 *)(puVar26 + -8) = 0x140040dbe;
+                  *(undefined8 *)(puVar26 + -8) = 0x14004009d;
                   KeReleaseInStackQueuedSpinLock();
                   if (bVar35) goto LAB_15;
                 }
                 else {
-                  *(undefined8 *)(puVar26 + -8) = 0x140040bd8;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003fe8b;
                   cVar15 = ExAcquireRundownProtection(puVar4 + 0xc0);
                   if (cVar15 == '\0') goto LAB_14;
                   lVar19 = *(longlong *)(puVar4 + 0xbc);
                   bVar35 = true;
-                  uVar30 = *(ushort *)(lVar19 + 0x6a);
+                  uVar28 = *(ushort *)(lVar19 + 0x6a);
                   uVar6 = *(undefined8 *)(lVar19 + 0x40);
-                  if ((uVar30 & 2) != 0) goto LAB_14;
-                  uVar16 = uVar30 | 2;
+                  if ((uVar28 & 2) != 0) goto LAB_14;
+                  uVar16 = uVar28 | 2;
                   *(ushort *)(lVar19 + 0x6a) = uVar16;
-                  while ((uVar30 & 1) == 0) {
-                    *(undefined8 *)(puVar26 + -8) = 0x140040c1d;
-                    uVar32 = AfdNotifyComputeEvents(lVar19);
-                    uVar30 = *(ushort *)(lVar19 + 0x68);
+                  while ((uVar28 & 1) == 0) {
+                    *(undefined8 *)(puVar26 + -8) = 0x14003fed0;
+                    uVar31 = AfdNotifyComputeEvents(lVar19);
+                    uVar28 = *(ushort *)(lVar19 + 0x68);
                     *(undefined2 *)(lVar19 + 0x66) = *(undefined2 *)(lVar19 + 100);
-                    if (uVar32 == uVar30) {
+                    if (uVar31 == uVar28) {
                       if ((*(byte *)(lVar19 + 99) & 1) != 0) {
                         uVar16 = uVar16 | 4;
                       }
 LAB_16:
                       *(ushort *)(lVar19 + 0x6a) = uVar16 & 0xfffd;
                       goto LAB_17;
                     }
-                    if ((uVar30 & uVar32) != 0) goto LAB_16;
-                    if (uVar30 == 0) {
-                      *(ushort *)(lVar19 + 0x68) = uVar32;
-                      *(undefined8 *)(puVar26 + -8) = 0x140040cd0;
+                    if ((uVar28 & uVar31) != 0) goto LAB_16;
+                    if (uVar28 == 0) {
+                      *(ushort *)(lVar19 + 0x68) = uVar31;
+                      *(undefined8 *)(puVar26 + -8) = 0x14003ff83;
                       KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-                      *(undefined8 *)(puVar26 + -8) = 0x140040cdf;
+                      *(undefined8 *)(puVar26 + -8) = 0x14003ff92;
                       ObfReferenceObject(uVar6);
                       uVar7 = *(undefined8 *)(lVar19 + 0x58);
                       uVar8 = *(undefined8 *)(lVar19 + 0x50);
                       puVar26[0x40] = AfdPriorityBoost;
                       puVar26[0x38] = 0;
                       *(longlong *)(puVar26 + 0x30) = lVar19;
                       puVar26[0x28] = 0;
-                      *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar32;
-                      *(undefined8 *)(puVar26 + -8) = 0x140040d18;
+                      *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar31;
+                      *(undefined8 *)(puVar26 + -8) = 0x14003ffcb;
                       IoSetIoCompletionEx3(uVar8,uVar7,0);
-                      *(undefined8 *)(puVar26 + -8) = 0x140040d2d;
+                      *(undefined8 *)(puVar26 + -8) = 0x14003ffe0;
                       KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                     }
                     else {
-                      *(undefined8 *)(puVar26 + -8) = 0x140040c4f;
+                      *(undefined8 *)(puVar26 + -8) = 0x14003ff02;
                       KeReleaseInStackQueuedSpinLock();
                       uVar7 = *(undefined8 *)(lVar19 + 0x50);
-                      *(undefined8 *)(puVar26 + -8) = 0x140040c62;
+                      *(undefined8 *)(puVar26 + -8) = 0x14003ff15;
                       cVar15 = IoCancelMiniCompletionPacket(uVar7,lVar19);
                       if (cVar15 == '\0') {
-                        *(undefined8 *)(puVar26 + -8) = 0x140040c7b;
+                        *(undefined8 *)(puVar26 + -8) = 0x14003ff2e;
                         KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                         if (*(short *)(lVar19 + 0x68) != 0) {
                           *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
                           goto LAB_17;
                         }
                       }
                       else {
-                        *(undefined8 *)(puVar26 + -8) = 0x140040ca3;
+                        *(undefined8 *)(puVar26 + -8) = 0x14003ff56;
                         ObfDereferenceObject(uVar6);
-                        *(undefined8 *)(puVar26 + -8) = 0x140040cb8;
+                        *(undefined8 *)(puVar26 + -8) = 0x14003ff6b;
                         KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                         *(undefined2 *)(lVar19 + 0x68) = 0;
                       }
                     }
                     uVar16 = *(ushort *)(lVar19 + 0x6a);
-                    uVar30 = uVar16;
+                    uVar28 = uVar16;
                   }
                   puVar4[0xbc] = 0;
                   puVar4[0xbd] = 0;
                   puVar4[0xbe] = 0;
                   puVar4[0xbf] = 0;
                   *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
-                  *(undefined8 *)(puVar26 + -8) = 0x140040d5f;
+                  *(undefined8 *)(puVar26 + -8) = 0x140040012;
                   KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-                  *(undefined8 *)(puVar26 + -8) = 0x140040d6f;
+                  *(undefined8 *)(puVar26 + -8) = 0x140040022;
                   AfdNotifyDestroyContext(uVar6,lVar19);
-                  *(undefined8 *)(puVar26 + -8) = 0x140040d7f;
+                  if ((Feature_447951161__private_featureState & 0x10) == 0) {
+                    *(undefined8 *)(puVar26 + -8) = 0x140040062;
+                    uVar34 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+                    uVar32 = (uint)uVar34;
+                  }
+                  else {
+                    uVar32 = Feature_447951161__private_featureState & 1;
+                  }
+                  if (uVar32 != 0) {
+                    *(undefined8 *)(puVar26 + -8) = 0x140040075;
+                    ExFreePoolWithTag(lVar19,0x4e646641);
+                  }
+                  *(undefined8 *)(puVar26 + -8) = 0x14004008a;
                   KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
 LAB_17:
-                  *(undefined8 *)(puVar26 + -8) = 0x140040dab;
+                  *(undefined8 *)(puVar26 + -8) = 0x140040056;
                   KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
 LAB_15:
-                  *(undefined8 *)(puVar26 + -8) = 0x140040dd6;
+                  *(undefined8 *)(puVar26 + -8) = 0x1400400b5;
                   ExReleaseRundownProtection();
                 }
                 if ((*(int *)(param_2 + 0x10) == 0) || ((*(uint *)(puVar4 + 4) >> 0xb & 1) != 0)) {
                   puVar26[0x48] = 1;
                   *(short **)(puVar26 + 0x40) = param_1;
-                  uVar29 = 0xc0000120;
+                  uVar34 = 0xc0000120;
                   *(undefined4 *)(puVar26 + 0x38) = 0xc0000120;
                   *(undefined4 *)(puVar26 + 0x30) = 0;
                   *(undefined8 *)(puVar26 + 0x28) = *(undefined8 *)(param_1 + 4);
                   *(undefined4 *)(puVar26 + 0x20) = param_6;
-                  *(undefined8 *)(puVar26 + -8) = 0x140040e88;
+                  *(undefined8 *)(puVar26 + -8) = 0x140040168;
                   AFDETW_TRACERECV(1,0x1010,(short *)puVar4,0,*(undefined4 *)(puVar26 + 0x20),
                                    *(undefined8 *)(puVar26 + 0x28),*(undefined4 *)(puVar26 + 0x30),
                                    *(undefined4 *)(puVar26 + 0x38),*(short **)(puVar26 + 0x40),
                                    puVar26[0x48]);
                   cVar15 = '\x01';
                 }
                 else {
-                  uVar33 = *(uint *)(param_2 + 0x10);
+                  uVar32 = *(uint *)(param_2 + 0x10);
                   puVar26[0x48] = 1;
-                  uVar29 = 0;
+                  uVar34 = 0;
                   *(short **)(puVar26 + 0x40) = param_1;
                   *(undefined4 *)(puVar26 + 0x38) = 0;
-                  *(uint *)(puVar26 + 0x30) = uVar33;
-                  *(ulonglong *)(param_1 + 0x1c) = (ulonglong)uVar33;
+                  *(uint *)(puVar26 + 0x30) = uVar32;
+                  *(ulonglong *)(param_1 + 0x1c) = (ulonglong)uVar32;
                   *(undefined8 *)(puVar26 + 0x28) = *(undefined8 *)(param_1 + 4);
                   *(undefined4 *)(puVar26 + 0x20) = param_6;
-                  *(undefined8 *)(puVar26 + -8) = 0x140040e3b;
+                  *(undefined8 *)(puVar26 + -8) = 0x14004011a;
                   AFDETW_TRACERECV(1,0x1011,(short *)puVar4,0,*(undefined4 *)(puVar26 + 0x20),
                                    *(undefined8 *)(puVar26 + 0x28),*(undefined4 *)(puVar26 + 0x30),
                                    *(undefined4 *)(puVar26 + 0x38),*(short **)(puVar26 + 0x40),
                                    puVar26[0x48]);
                   cVar15 = '\x01';
                 }
                 goto LAB_18;
               }
 LAB_13:
               bVar35 = false;
               local_b8 = 0;
               uStack_b0 = 0;
               *(byte *)(*(longlong *)(param_1 + 0x5c) + 3) =
                    *(byte *)(*(longlong *)(param_1 + 0x5c) + 3) | 1;
               local_a8 = 0;
               if (*(longlong *)(puVar4 + 0xbc) == 0) {
 LAB_19:
-                *(undefined8 *)(puVar26 + -8) = 0x1400410ae;
+                *(undefined8 *)(puVar26 + -8) = 0x1400403bb;
                 KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
                 if (bVar35) goto LAB_20;
               }
               else {
-                *(undefined8 *)(puVar26 + -8) = 0x140040ec8;
+                *(undefined8 *)(puVar26 + -8) = 0x1400401a9;
                 cVar15 = ExAcquireRundownProtection(puVar4 + 0xc0);
                 if (cVar15 == '\0') goto LAB_19;
                 lVar19 = *(longlong *)(puVar4 + 0xbc);
                 bVar35 = true;
-                uVar30 = *(ushort *)(lVar19 + 0x6a);
+                uVar28 = *(ushort *)(lVar19 + 0x6a);
                 uVar6 = *(undefined8 *)(lVar19 + 0x40);
-                if ((uVar30 & 2) != 0) goto LAB_19;
-                uVar16 = uVar30 | 2;
+                if ((uVar28 & 2) != 0) goto LAB_19;
+                uVar16 = uVar28 | 2;
                 *(ushort *)(lVar19 + 0x6a) = uVar16;
-                while ((uVar30 & 1) == 0) {
-                  *(undefined8 *)(puVar26 + -8) = 0x140040f0d;
-                  uVar32 = AfdNotifyComputeEvents(lVar19);
-                  uVar30 = *(ushort *)(lVar19 + 0x68);
+                while ((uVar28 & 1) == 0) {
+                  *(undefined8 *)(puVar26 + -8) = 0x1400401ee;
+                  uVar31 = AfdNotifyComputeEvents(lVar19);
+                  uVar28 = *(ushort *)(lVar19 + 0x68);
                   *(undefined2 *)(lVar19 + 0x66) = *(undefined2 *)(lVar19 + 100);
-                  if (uVar32 == uVar30) {
+                  if (uVar31 == uVar28) {
                     if ((*(byte *)(lVar19 + 99) & 1) != 0) {
                       uVar16 = uVar16 | 4;
                     }
 LAB_21:
                     *(ushort *)(lVar19 + 0x6a) = uVar16 & 0xfffd;
                     goto LAB_22;
                   }
-                  if ((uVar30 & uVar32) != 0) goto LAB_21;
-                  if (uVar30 == 0) {
-                    *(ushort *)(lVar19 + 0x68) = uVar32;
-                    *(undefined8 *)(puVar26 + -8) = 0x140040fc0;
+                  if ((uVar28 & uVar31) != 0) goto LAB_21;
+                  if (uVar28 == 0) {
+                    *(ushort *)(lVar19 + 0x68) = uVar31;
+                    *(undefined8 *)(puVar26 + -8) = 0x1400402a1;
                     KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-                    *(undefined8 *)(puVar26 + -8) = 0x140040fcf;
+                    *(undefined8 *)(puVar26 + -8) = 0x1400402b0;
                     ObfReferenceObject(uVar6);
                     uVar7 = *(undefined8 *)(lVar19 + 0x58);
                     uVar8 = *(undefined8 *)(lVar19 + 0x50);
                     puVar26[0x40] = AfdPriorityBoost;
                     puVar26[0x38] = 0;
                     *(longlong *)(puVar26 + 0x30) = lVar19;
                     puVar26[0x28] = 0;
-                    *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar32;
-                    *(undefined8 *)(puVar26 + -8) = 0x140041008;
+                    *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar31;
+                    *(undefined8 *)(puVar26 + -8) = 0x1400402e9;
                     IoSetIoCompletionEx3(uVar8,uVar7,0,0);
-                    *(undefined8 *)(puVar26 + -8) = 0x14004101d;
+                    *(undefined8 *)(puVar26 + -8) = 0x1400402fe;
                     KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                   }
                   else {
-                    *(undefined8 *)(puVar26 + -8) = 0x140040f3f;
+                    *(undefined8 *)(puVar26 + -8) = 0x140040220;
                     KeReleaseInStackQueuedSpinLock();
                     uVar7 = *(undefined8 *)(lVar19 + 0x50);
-                    *(undefined8 *)(puVar26 + -8) = 0x140040f52;
+                    *(undefined8 *)(puVar26 + -8) = 0x140040233;
                     cVar15 = IoCancelMiniCompletionPacket(uVar7,lVar19);
                     if (cVar15 == '\0') {
-                      *(undefined8 *)(puVar26 + -8) = 0x140040f6b;
+                      *(undefined8 *)(puVar26 + -8) = 0x14004024c;
                       KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                       if (*(short *)(lVar19 + 0x68) != 0) {
                         *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
                         goto LAB_22;
                       }
                     }
                     else {
-                      *(undefined8 *)(puVar26 + -8) = 0x140040f93;
+                      *(undefined8 *)(puVar26 + -8) = 0x140040274;
                       ObfDereferenceObject(uVar6);
-                      *(undefined8 *)(puVar26 + -8) = 0x140040fa8;
+                      *(undefined8 *)(puVar26 + -8) = 0x140040289;
                       KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                       *(undefined2 *)(lVar19 + 0x68) = 0;
                     }
                   }
                   uVar16 = *(ushort *)(lVar19 + 0x6a);
-                  uVar30 = uVar16;
+                  uVar28 = uVar16;
                 }
                 puVar4[0xbc] = 0;
                 puVar4[0xbd] = 0;
                 puVar4[0xbe] = 0;
                 puVar4[0xbf] = 0;
                 *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
-                *(undefined8 *)(puVar26 + -8) = 0x14004104f;
+                *(undefined8 *)(puVar26 + -8) = 0x140040330;
                 KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-                *(undefined8 *)(puVar26 + -8) = 0x14004105f;
+                *(undefined8 *)(puVar26 + -8) = 0x140040340;
                 AfdNotifyDestroyContext(uVar6,lVar19);
-                *(undefined8 *)(puVar26 + -8) = 0x14004106f;
+                if ((Feature_447951161__private_featureState & 0x10) == 0) {
+                  *(undefined8 *)(puVar26 + -8) = 0x140040380;
+                  uVar34 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+                  uVar32 = (uint)uVar34;
+                }
+                else {
+                  uVar32 = Feature_447951161__private_featureState & 1;
+                }
+                if (uVar32 != 0) {
+                  *(undefined8 *)(puVar26 + -8) = 0x140040393;
+                  ExFreePoolWithTag(lVar19,0x4e646641);
+                }
+                *(undefined8 *)(puVar26 + -8) = 0x1400403a8;
                 KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
 LAB_22:
-                *(undefined8 *)(puVar26 + -8) = 0x14004109b;
+                *(undefined8 *)(puVar26 + -8) = 0x140040374;
                 KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
 LAB_20:
-                *(undefined8 *)(puVar26 + -8) = 0x1400410c6;
+                *(undefined8 *)(puVar26 + -8) = 0x1400403d3;
                 ExReleaseRundownProtection(puVar4 + 0xc0);
               }
               cVar15 = '\0';
-              uVar29 = 0x103;
+              uVar34 = 0x103;
               goto LAB_18;
             }
-            *(int *)(ppppppplVar22 + 0x11) = *(int *)(ppppppplVar22 + 0x11) + 1;
+            *(int *)(ppppplVar23 + 0x11) = *(int *)(ppppplVar23 + 0x11) + 1;
             LOCK();
-            ppppppplVar27 = ppppppplVar22 + 6;
-            pppppplVar5 = *ppppppplVar27;
-            *ppppppplVar27 = (longlong ******)((longlong)*ppppppplVar27 + 1);
+            ppppplVar27 = ppppplVar23 + 6;
+            pppplVar5 = *ppppplVar27;
+            *ppppplVar27 = (longlong ****)((longlong)*ppppplVar27 + 1);
             UNLOCK();
-            if ((longlong)pppppplVar5 + 1 < 2) {
+            if ((longlong)pppplVar5 + 1 < 2) {
               pcVar12 = (code *)swi(0x29);
               (*pcVar12)(0xe);
               puVar26 = puVar26 + 8;
             }
             bVar35 = false;
             local_a8 = 0;
             local_b8 = 0;
             uStack_b0 = 0;
             if (*(longlong *)(puVar4 + 0xbc) == 0) {
 LAB_23:
-              *(undefined8 *)(puVar26 + -8) = 0x1400409f1;
+              *(undefined8 *)(puVar26 + -8) = 0x14003fc9e;
               KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
               if (bVar35) goto LAB_24;
             }
             else {
-              *(undefined8 *)(puVar26 + -8) = 0x14004080a;
+              *(undefined8 *)(puVar26 + -8) = 0x14003fa90;
               cVar15 = ExAcquireRundownProtection(puVar4 + 0xc0);
               if (cVar15 == '\0') goto LAB_23;
               lVar19 = *(longlong *)(puVar4 + 0xbc);
               bVar35 = true;
-              uVar30 = *(ushort *)(lVar19 + 0x6a);
+              uVar28 = *(ushort *)(lVar19 + 0x6a);
               uVar6 = *(undefined8 *)(lVar19 + 0x40);
-              if ((uVar30 & 2) != 0) goto LAB_23;
-              uVar16 = uVar30 | 2;
+              if ((uVar28 & 2) != 0) goto LAB_23;
+              uVar16 = uVar28 | 2;
               *(ushort *)(lVar19 + 0x6a) = uVar16;
-              while ((uVar30 & 1) == 0) {
-                *(undefined8 *)(puVar26 + -8) = 0x140040858;
-                uVar32 = AfdNotifyComputeEvents(lVar19);
-                uVar30 = *(ushort *)(lVar19 + 0x68);
+              while ((uVar28 & 1) == 0) {
+                *(undefined8 *)(puVar26 + -8) = 0x14003fad9;
+                uVar31 = AfdNotifyComputeEvents(lVar19);
+                uVar28 = *(ushort *)(lVar19 + 0x68);
                 *(undefined2 *)(lVar19 + 0x66) = *(undefined2 *)(lVar19 + 100);
-                if (uVar32 == uVar30) {
+                if (uVar31 == uVar28) {
                   if ((*(byte *)(lVar19 + 99) & 1) != 0) {
                     uVar16 = uVar16 | 4;
                   }
 LAB_25:
                   *(ushort *)(lVar19 + 0x6a) = uVar16 & 0xfffd;
                   goto LAB_26;
                 }
-                if ((uVar30 & uVar32) != 0) goto LAB_25;
-                if (uVar30 == 0) {
-                  *(ushort *)(lVar19 + 0x68) = uVar32;
-                  *(undefined8 *)(puVar26 + -8) = 0x14004090b;
+                if ((uVar31 & uVar28) != 0) goto LAB_25;
+                if (uVar28 == 0) {
+                  *(ushort *)(lVar19 + 0x68) = uVar31;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003fb8c;
                   KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-                  *(undefined8 *)(puVar26 + -8) = 0x14004091b;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003fb9c;
                   ObfReferenceObject(uVar6);
                   uVar7 = *(undefined8 *)(lVar19 + 0x58);
                   uVar8 = *(undefined8 *)(lVar19 + 0x50);
                   puVar26[0x40] = AfdPriorityBoost;
                   puVar26[0x38] = 0;
                   *(longlong *)(puVar26 + 0x30) = lVar19;
                   puVar26[0x28] = 0;
-                  *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar32;
-                  *(undefined8 *)(puVar26 + -8) = 0x140040954;
+                  *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar31;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003fbd5;
                   IoSetIoCompletionEx3(uVar8,uVar7,0,0);
-                  *(undefined8 *)(puVar26 + -8) = 0x140040969;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003fbea;
                   KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                 }
                 else {
-                  *(undefined8 *)(puVar26 + -8) = 0x14004088d;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003fb0e;
                   KeReleaseInStackQueuedSpinLock();
                   uVar7 = *(undefined8 *)(lVar19 + 0x50);
-                  *(undefined8 *)(puVar26 + -8) = 0x1400408a0;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003fb21;
                   cVar15 = IoCancelMiniCompletionPacket(uVar7,lVar19);
                   if (cVar15 == '\0') {
-                    *(undefined8 *)(puVar26 + -8) = 0x1400408b9;
+                    *(undefined8 *)(puVar26 + -8) = 0x14003fb3a;
                     KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                     if (*(short *)(lVar19 + 0x68) != 0) {
                       *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
                       goto LAB_26;
                     }
                   }
                   else {
-                    *(undefined8 *)(puVar26 + -8) = 0x1400408dd;
+                    *(undefined8 *)(puVar26 + -8) = 0x14003fb5e;
                     ObfDereferenceObject(uVar6);
-                    *(undefined8 *)(puVar26 + -8) = 0x1400408f2;
+                    *(undefined8 *)(puVar26 + -8) = 0x14003fb73;
                     KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                     *(undefined2 *)(lVar19 + 0x68) = 0;
                   }
                 }
                 uVar16 = *(ushort *)(lVar19 + 0x6a);
-                uVar30 = uVar16;
+                uVar28 = uVar16;
               }
               puVar4[0xbc] = 0;
               puVar4[0xbd] = 0;
               puVar4[0xbe] = 0;
               puVar4[0xbf] = 0;
               *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
-              *(undefined8 *)(puVar26 + -8) = 0x140040996;
+              *(undefined8 *)(puVar26 + -8) = 0x14003fc17;
               KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-              *(undefined8 *)(puVar26 + -8) = 0x1400409a7;
+              *(undefined8 *)(puVar26 + -8) = 0x14003fc28;
               AfdNotifyDestroyContext(uVar6,lVar19);
-              *(undefined8 *)(puVar26 + -8) = 0x1400409b7;
+              if ((Feature_447951161__private_featureState & 0x10) == 0) {
+                *(undefined8 *)(puVar26 + -8) = 0x14003fc63;
+                uVar34 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+                uVar32 = (uint)uVar34;
+              }
+              else {
+                uVar32 = Feature_447951161__private_featureState & 1;
+              }
+              if (uVar32 != 0) {
+                *(undefined8 *)(puVar26 + -8) = 0x14003fc76;
+                ExFreePoolWithTag(lVar19,0x4e646641);
+              }
+              *(undefined8 *)(puVar26 + -8) = 0x14003fc8b;
               KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
 LAB_26:
-              *(undefined8 *)(puVar26 + -8) = 0x1400409de;
+              *(undefined8 *)(puVar26 + -8) = 0x14003fc57;
               KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
 LAB_24:
-              *(undefined8 *)(puVar26 + -8) = 0x140040a09;
+              *(undefined8 *)(puVar26 + -8) = 0x14003fcb6;
               ExReleaseRundownProtection(puVar4 + 0xc0);
             }
-            *(undefined8 *)(puVar26 + -8) = 0x140040a1d;
-            uVar33 = AfdTLPostUserReceive((longlong)ppppppplVar22,param_1);
+            *(undefined8 *)(puVar26 + -8) = 0x14003fcca;
+            uVar32 = AfdTLPostUserReceive((longlong)ppppplVar23,param_1);
             cVar15 = '\0';
-            uVar29 = (ulonglong)uVar33;
+            uVar34 = (ulonglong)uVar32;
             if ((((*(uint *)(puVar4 + 4) >> 0xb & 1) != 0) &&
-                (((ulonglong)*ppppppplVar22 & 0x1000000000) == 0)) &&
-               (0 < *(int *)(ppppppplVar22 + 0x11))) {
+                (((ulonglong)*ppppplVar23 & 0x1000000000) == 0)) &&
+               (0 < *(int *)(ppppplVar23 + 0x11))) {
               local_84 = 0xfffd;
               local_90 = 0;
               local_98 = _guard_check_icall;
               local_7c = 0;
               local_74 = 0;
               local_6c = 0;
               local_64 = 0;
               local_5c = 0;
               local_54 = 0;
               uStack_50 = 0;
               local_4c = 0;
               local_88 = 0;
-              pppppplVar5 = ppppppplVar22[2];
+              pppplVar5 = ppppplVar23[2];
               local_80 = 4;
-              ppppplVar9 = ppppppplVar22[3][1];
-              *(undefined8 *)(puVar26 + -8) = 0x140040a9b;
-              iVar18 = (*(code *)ppppplVar9)(pppppplVar5,&local_98);
+              ppplVar9 = ppppplVar23[3][1];
+              *(undefined8 *)(puVar26 + -8) = 0x14003fd48;
+              iVar18 = (*(code *)ppplVar9)(pppplVar5,&local_98);
               uVar6 = local_90;
               pcVar12 = local_98;
               if (iVar18 != 0x103) {
                 uVar7 = CONCAT44(local_4c,uStack_50);
                 if (iVar18 == -0x3ffffdfa) {
                   iVar18 = -0x3fffffdd;
                 }
-                *(undefined8 *)(puVar26 + -8) = 0x140040ac5;
+                *(undefined8 *)(puVar26 + -8) = 0x14003fd72;
                 (*pcVar12)(uVar6,iVar18,uVar7);
               }
               if (iVar18 < 0) {
-                *(undefined8 *)(puVar26 + -8) = 0x140040ae0;
+                *(undefined8 *)(puVar26 + -8) = 0x14003fd8d;
                 AFDETW_TRACEABORT(2,0x1f4e,(short *)puVar4,1);
-                *(undefined8 *)(puVar26 + -8) = 0x140040ae8;
-                AfdBeginAbort((undefined2 *)ppppppplVar22);
+                *(undefined8 *)(puVar26 + -8) = 0x14003fd95;
+                AfdBeginAbort((undefined2 *)ppppplVar23);
               }
               cVar15 = '\0';
             }
             goto LAB_18;
           }
-          if (((ulonglong)*ppppppplVar22 & 0x10000000000) == 0) {
+          if (((ulonglong)*ppppplVar23 & 0x10000000000) == 0) {
             if (((*(uint *)(puVar4 + 4) & 0x10) == 0) || ((param_4 & 2) != 0)) goto LAB_11;
             bVar35 = false;
             local_a8 = 0;
             local_b8 = 0;
             uStack_b0 = 0;
             if (*(longlong *)(puVar4 + 0xbc) == 0) {
 LAB_27:
-              *(undefined8 *)(puVar26 + -8) = 0x1400406ec;
+              *(undefined8 *)(puVar26 + -8) = 0x14003f971;
               KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
               if (bVar35) goto LAB_28;
             }
             else {
-              *(undefined8 *)(puVar26 + -8) = 0x140040506;
+              *(undefined8 *)(puVar26 + -8) = 0x14003f75b;
               cVar15 = ExAcquireRundownProtection(puVar4 + 0xc0);
               if (cVar15 == '\0') goto LAB_27;
               lVar19 = *(longlong *)(puVar4 + 0xbc);
               bVar35 = true;
-              uVar30 = *(ushort *)(lVar19 + 0x6a);
+              uVar28 = *(ushort *)(lVar19 + 0x6a);
               uVar6 = *(undefined8 *)(lVar19 + 0x40);
-              if ((uVar30 & 2) != 0) goto LAB_27;
-              uVar16 = uVar30 | 2;
+              if ((uVar28 & 2) != 0) goto LAB_27;
+              uVar16 = uVar28 | 2;
               *(ushort *)(lVar19 + 0x6a) = uVar16;
-              while ((uVar30 & 1) == 0) {
-                *(undefined8 *)(puVar26 + -8) = 0x14004054b;
-                uVar32 = AfdNotifyComputeEvents(lVar19);
-                uVar30 = *(ushort *)(lVar19 + 0x68);
+              while ((uVar28 & 1) == 0) {
+                *(undefined8 *)(puVar26 + -8) = 0x14003f7a0;
+                uVar31 = AfdNotifyComputeEvents(lVar19);
+                uVar28 = *(ushort *)(lVar19 + 0x68);
                 *(undefined2 *)(lVar19 + 0x66) = *(undefined2 *)(lVar19 + 100);
-                if (uVar32 == uVar30) {
+                if (uVar31 == uVar28) {
                   if ((*(byte *)(lVar19 + 99) & 1) != 0) {
                     uVar16 = uVar16 | 4;
                   }
 LAB_29:
                   *(ushort *)(lVar19 + 0x6a) = uVar16 & 0xfffd;
                   goto LAB_30;
                 }
-                if ((uVar30 & uVar32) != 0) goto LAB_29;
-                if (uVar30 == 0) {
-                  *(ushort *)(lVar19 + 0x68) = uVar32;
-                  *(undefined8 *)(puVar26 + -8) = 0x1400405fe;
+                if ((uVar28 & uVar31) != 0) goto LAB_29;
+                if (uVar28 == 0) {
+                  *(ushort *)(lVar19 + 0x68) = uVar31;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003f857;
                   KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-                  *(undefined8 *)(puVar26 + -8) = 0x14004060d;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003f866;
                   ObfReferenceObject(uVar6);
                   uVar7 = *(undefined8 *)(lVar19 + 0x58);
                   uVar8 = *(undefined8 *)(lVar19 + 0x50);
                   puVar26[0x40] = AfdPriorityBoost;
                   puVar26[0x38] = 0;
                   *(longlong *)(puVar26 + 0x30) = lVar19;
                   puVar26[0x28] = 0;
-                  *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar32;
-                  *(undefined8 *)(puVar26 + -8) = 0x140040646;
+                  *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar31;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003f89f;
                   IoSetIoCompletionEx3(uVar8,uVar7,0);
-                  *(undefined8 *)(puVar26 + -8) = 0x14004065b;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003f8b4;
                   KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                 }
                 else {
-                  *(undefined8 *)(puVar26 + -8) = 0x14004057d;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003f7d6;
                   KeReleaseInStackQueuedSpinLock();
                   uVar7 = *(undefined8 *)(lVar19 + 0x50);
-                  *(undefined8 *)(puVar26 + -8) = 0x140040590;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003f7e9;
                   cVar15 = IoCancelMiniCompletionPacket(uVar7,lVar19);
                   if (cVar15 == '\0') {
-                    *(undefined8 *)(puVar26 + -8) = 0x1400405a9;
+                    *(undefined8 *)(puVar26 + -8) = 0x14003f802;
                     KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                     if (*(short *)(lVar19 + 0x68) != 0) {
                       *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
                       goto LAB_30;
                     }
                   }
                   else {
-                    *(undefined8 *)(puVar26 + -8) = 0x1400405d1;
+                    *(undefined8 *)(puVar26 + -8) = 0x14003f82a;
                     ObfDereferenceObject(uVar6);
-                    *(undefined8 *)(puVar26 + -8) = 0x1400405e6;
+                    *(undefined8 *)(puVar26 + -8) = 0x14003f83f;
                     KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                     *(undefined2 *)(lVar19 + 0x68) = 0;
                   }
                 }
                 uVar16 = *(ushort *)(lVar19 + 0x6a);
-                uVar30 = uVar16;
+                uVar28 = uVar16;
               }
               puVar4[0xbc] = 0;
               puVar4[0xbd] = 0;
               puVar4[0xbe] = 0;
               puVar4[0xbf] = 0;
               *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
-              *(undefined8 *)(puVar26 + -8) = 0x14004068d;
+              *(undefined8 *)(puVar26 + -8) = 0x14003f8e6;
               KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-              *(undefined8 *)(puVar26 + -8) = 0x14004069d;
+              *(undefined8 *)(puVar26 + -8) = 0x14003f8f6;
               AfdNotifyDestroyContext(uVar6,lVar19);
-              *(undefined8 *)(puVar26 + -8) = 0x1400406ad;
+              if ((Feature_447951161__private_featureState & 0x10) == 0) {
+                *(undefined8 *)(puVar26 + -8) = 0x14003f936;
+                uVar34 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+                uVar32 = (uint)uVar34;
+              }
+              else {
+                uVar32 = Feature_447951161__private_featureState & 1;
+              }
+              if (uVar32 != 0) {
+                *(undefined8 *)(puVar26 + -8) = 0x14003f949;
+                ExFreePoolWithTag(lVar19,0x4e646641);
+              }
+              *(undefined8 *)(puVar26 + -8) = 0x14003f95e;
               KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
 LAB_30:
-              *(undefined8 *)(puVar26 + -8) = 0x1400406d9;
+              *(undefined8 *)(puVar26 + -8) = 0x14003f92a;
               KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
 LAB_28:
-              *(undefined8 *)(puVar26 + -8) = 0x140040704;
+              *(undefined8 *)(puVar26 + -8) = 0x14003f989;
               ExReleaseRundownProtection(puVar4 + 0xc0);
             }
             puVar26[0x48] = 1;
             *(short **)(puVar26 + 0x40) = param_1;
-            uVar29 = 0xc00000a3;
+            uVar34 = 0xc00000a3;
             *(undefined4 *)(puVar26 + 0x38) = 0xc00000a3;
             *(undefined4 *)(puVar26 + 0x30) = 0;
             *(undefined8 *)(puVar26 + 0x28) = *(undefined8 *)(param_1 + 4);
             *(undefined4 *)(puVar26 + 0x20) = param_6;
-            *(undefined8 *)(puVar26 + -8) = 0x14004074f;
+            *(undefined8 *)(puVar26 + -8) = 0x14003f9d5;
             AFDETW_TRACERECV(1,0x100f,(short *)puVar4,0,*(undefined4 *)(puVar26 + 0x20),
                              *(undefined8 *)(puVar26 + 0x28),*(undefined4 *)(puVar26 + 0x30),
                              *(undefined4 *)(puVar26 + 0x38),*(short **)(puVar26 + 0x40),
                              puVar26[0x48]);
             cVar15 = '\x01';
             goto LAB_18;
           }
           bVar35 = false;
           local_a8 = 0;
           local_b8 = 0;
           uStack_b0 = 0;
           if (*(longlong *)(puVar4 + 0xbc) == 0) {
 LAB_31:
-            *(undefined8 *)(puVar26 + -8) = 0x14004044a;
+            *(undefined8 *)(puVar26 + -8) = 0x14003f69c;
             KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
             if (bVar35) goto LAB_32;
           }
           else {
-            *(undefined8 *)(puVar26 + -8) = 0x140040264;
+            *(undefined8 *)(puVar26 + -8) = 0x14003f486;
             cVar15 = ExAcquireRundownProtection(puVar4 + 0xc0);
             if (cVar15 == '\0') goto LAB_31;
             lVar19 = *(longlong *)(puVar4 + 0xbc);
             bVar35 = true;
-            uVar30 = *(ushort *)(lVar19 + 0x6a);
+            uVar28 = *(ushort *)(lVar19 + 0x6a);
             uVar6 = *(undefined8 *)(lVar19 + 0x40);
-            if ((uVar30 & 2) != 0) goto LAB_31;
-            uVar16 = uVar30 | 2;
+            if ((uVar28 & 2) != 0) goto LAB_31;
+            uVar16 = uVar28 | 2;
             *(ushort *)(lVar19 + 0x6a) = uVar16;
-            while ((uVar30 & 1) == 0) {
-              *(undefined8 *)(puVar26 + -8) = 0x1400402a9;
-              uVar32 = AfdNotifyComputeEvents(lVar19);
-              uVar30 = *(ushort *)(lVar19 + 0x68);
+            while ((uVar28 & 1) == 0) {
+              *(undefined8 *)(puVar26 + -8) = 0x14003f4cb;
+              uVar31 = AfdNotifyComputeEvents(lVar19);
+              uVar28 = *(ushort *)(lVar19 + 0x68);
               *(undefined2 *)(lVar19 + 0x66) = *(undefined2 *)(lVar19 + 100);
-              if (uVar32 == uVar30) {
+              if (uVar31 == uVar28) {
                 if ((*(byte *)(lVar19 + 99) & 1) != 0) {
                   uVar16 = uVar16 | 4;
                 }
 LAB_33:
                 *(ushort *)(lVar19 + 0x6a) = uVar16 & 0xfffd;
                 goto LAB_34;
               }
-              if ((uVar30 & uVar32) != 0) goto LAB_33;
-              if (uVar30 == 0) {
-                *(ushort *)(lVar19 + 0x68) = uVar32;
-                *(undefined8 *)(puVar26 + -8) = 0x14004035c;
+              if ((uVar28 & uVar31) != 0) goto LAB_33;
+              if (uVar28 == 0) {
+                *(ushort *)(lVar19 + 0x68) = uVar31;
+                *(undefined8 *)(puVar26 + -8) = 0x14003f582;
                 KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-                *(undefined8 *)(puVar26 + -8) = 0x14004036b;
+                *(undefined8 *)(puVar26 + -8) = 0x14003f591;
                 ObfReferenceObject(uVar6);
                 uVar7 = *(undefined8 *)(lVar19 + 0x58);
                 uVar8 = *(undefined8 *)(lVar19 + 0x50);
                 puVar26[0x40] = AfdPriorityBoost;
                 puVar26[0x38] = 0;
                 *(longlong *)(puVar26 + 0x30) = lVar19;
                 puVar26[0x28] = 0;
-                *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar32;
-                *(undefined8 *)(puVar26 + -8) = 0x1400403a4;
+                *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar31;
+                *(undefined8 *)(puVar26 + -8) = 0x14003f5ca;
                 IoSetIoCompletionEx3(uVar8,uVar7,0);
-                *(undefined8 *)(puVar26 + -8) = 0x1400403b9;
+                *(undefined8 *)(puVar26 + -8) = 0x14003f5df;
                 KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
               }
               else {
-                *(undefined8 *)(puVar26 + -8) = 0x1400402db;
+                *(undefined8 *)(puVar26 + -8) = 0x14003f501;
                 KeReleaseInStackQueuedSpinLock();
                 uVar7 = *(undefined8 *)(lVar19 + 0x50);
-                *(undefined8 *)(puVar26 + -8) = 0x1400402ee;
+                *(undefined8 *)(puVar26 + -8) = 0x14003f514;
                 cVar15 = IoCancelMiniCompletionPacket(uVar7,lVar19);
                 if (cVar15 == '\0') {
-                  *(undefined8 *)(puVar26 + -8) = 0x140040307;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003f52d;
                   KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                   if (*(short *)(lVar19 + 0x68) != 0) {
                     *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
                     goto LAB_34;
                   }
                 }
                 else {
-                  *(undefined8 *)(puVar26 + -8) = 0x14004032f;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003f555;
                   ObfDereferenceObject(uVar6);
-                  *(undefined8 *)(puVar26 + -8) = 0x140040344;
+                  *(undefined8 *)(puVar26 + -8) = 0x14003f56a;
                   KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
                   *(undefined2 *)(lVar19 + 0x68) = 0;
                 }
               }
               uVar16 = *(ushort *)(lVar19 + 0x6a);
-              uVar30 = uVar16;
+              uVar28 = uVar16;
             }
             puVar4[0xbc] = 0;
             puVar4[0xbd] = 0;
             puVar4[0xbe] = 0;
             puVar4[0xbf] = 0;
             *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
-            *(undefined8 *)(puVar26 + -8) = 0x1400403eb;
+            *(undefined8 *)(puVar26 + -8) = 0x14003f611;
             KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-            *(undefined8 *)(puVar26 + -8) = 0x1400403fb;
+            *(undefined8 *)(puVar26 + -8) = 0x14003f621;
             AfdNotifyDestroyContext(uVar6,lVar19);
-            *(undefined8 *)(puVar26 + -8) = 0x14004040b;
+            if ((Feature_447951161__private_featureState & 0x10) == 0) {
+              *(undefined8 *)(puVar26 + -8) = 0x14003f661;
+              uVar34 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+              uVar32 = (uint)uVar34;
+            }
+            else {
+              uVar32 = Feature_447951161__private_featureState & 1;
+            }
+            if (uVar32 != 0) {
+              *(undefined8 *)(puVar26 + -8) = 0x14003f674;
+              ExFreePoolWithTag(lVar19,0x4e646641);
+            }
+            *(undefined8 *)(puVar26 + -8) = 0x14003f689;
             KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
 LAB_34:
-            *(undefined8 *)(puVar26 + -8) = 0x140040437;
+            *(undefined8 *)(puVar26 + -8) = 0x14003f655;
             KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
 LAB_32:
-            *(undefined8 *)(puVar26 + -8) = 0x140040462;
+            *(undefined8 *)(puVar26 + -8) = 0x14003f6b4;
             ExReleaseRundownProtection(puVar4 + 0xc0);
           }
-          uVar30 = puVar4[2];
+          uVar28 = puVar4[2];
           puVar26[0x48] = 1;
           *(short **)(puVar26 + 0x40) = param_1;
           *(undefined4 *)(puVar26 + 0x38) = *(undefined4 *)(param_1 + 0x18);
           *(undefined4 *)(puVar26 + 0x30) = *(undefined4 *)(param_1 + 0x1c);
           *(undefined8 *)(puVar26 + 0x28) = *(undefined8 *)(param_1 + 4);
           *(undefined4 *)(puVar26 + 0x20) = param_6;
-          *(undefined8 *)(puVar26 + -8) = 0x1400404b0;
+          *(undefined8 *)(puVar26 + -8) = 0x14003f705;
           AFDETW_TRACERECV(1,0x100e,(short *)puVar4,0,*(undefined4 *)(puVar26 + 0x20),
                            *(undefined8 *)(puVar26 + 0x28),*(undefined4 *)(puVar26 + 0x30),
                            *(undefined4 *)(puVar26 + 0x38),*(short **)(puVar26 + 0x40),puVar26[0x48]
                           );
           cVar15 = '\x01';
-          uVar29 = (ulonglong)(-(uint)((uVar30 & 0x10) != 0) & 0xc0000237);
+          uVar34 = (ulonglong)(-(uint)((uVar28 & 0x10) != 0) & 0xc0000237);
           goto LAB_18;
         }
         KeReleaseInStackQueuedSpinLock();
-        uVar29 = 0xc000020d;
+        uVar34 = 0xc000020d;
         AFDETW_TRACERECV(0,0x100a,(short *)puVar4,0,0,0,0,0xc000020d,param_1,'\x01');
         cVar15 = '\x01';
         puVar26 = auStackY_158;
       }
       else {
         KeReleaseInStackQueuedSpinLock();
-        uVar29 = 0xc0000140;
+        uVar34 = 0xc0000140;
         AFDETW_TRACERECV(0,0x1009,(short *)puVar4,0,0,0,0,0xc0000140,param_1,'\x01');
         puVar26 = auStackY_158;
       }
     }
     else {
       KeReleaseInStackQueuedSpinLock();
-      uVar29 = 0xc0000120;
+      uVar34 = 0xc0000120;
       AFDETW_TRACERECV(0,0x1008,(short *)puVar4,0,0,0,0,0xc0000120,param_1,'\x01');
       puVar26 = auStackY_158;
-      ppppppplVar22 = ppppppplVar34;
+      ppppplVar23 = ppppplVar30;
     }
   }
   else {
-    local_d4 = uVar33;
+    local_d4 = uVar32;
     if ((puVar4[2] & 0x10) == 0) {
-      if (uVar33 == 0x4020) {
+      if (uVar32 == 0x4020) {
         if ((*(uint *)(puVar4 + 4) & 0x10) == 0) goto LAB_0;
-        uVar29 = 0xc00000bb;
+        uVar34 = 0xc00000bb;
         AFDETW_TRACERECV(0,0x1007,(short *)puVar4,0,0,0,0,0xc00000bb,param_1,'\x01');
         puVar26 = auStackY_158;
-        ppppppplVar22 = ppppppplVar34;
+        ppppplVar23 = ppppplVar30;
       }
       else {
-        uVar29 = 0xc00000bb;
+        uVar34 = 0xc00000bb;
         AFDETW_TRACERECV(0,0x1006,(short *)puVar4,0,0,0,0,0xc00000bb,param_1,'\x01');
         puVar26 = auStackY_158;
-        ppppppplVar22 = ppppppplVar34;
+        ppppplVar23 = ppppplVar30;
       }
     }
     else {
-      uVar29 = 0xc00000bb;
+      uVar34 = 0xc00000bb;
       AFDETW_TRACERECV(0,0x1005,(short *)puVar4,0,0,0,0,0xc00000bb,param_1,'\x01');
       puVar26 = auStackY_158;
-      ppppppplVar27 = ppppppplVar22;
+      ppppplVar27 = ppppplVar23;
     }
   }
   goto LAB_35;
-joined_r0x00014003fc1d:
-  if ((uVar30 & 1) != 0) goto LAB_36;
-  *(undefined8 *)(puVar26 + -8) = 0x14003fc2b;
-  uVar32 = AfdNotifyComputeEvents(lVar19);
-  uVar30 = *(ushort *)(lVar19 + 0x68);
+joined_r0x00014003eded:
+  if ((uVar28 & 1) != 0) goto LAB_36;
+  *(undefined8 *)(puVar26 + -8) = 0x14003edfb;
+  uVar31 = AfdNotifyComputeEvents(lVar19);
+  uVar28 = *(ushort *)(lVar19 + 0x68);
   *(undefined2 *)(lVar19 + 0x66) = *(undefined2 *)(lVar19 + 100);
-  if (uVar32 == uVar30) {
+  if (uVar31 == uVar28) {
     if ((*(byte *)(lVar19 + 99) & 1) != 0) {
       uVar16 = uVar16 | 4;
     }
 LAB_37:
     *(ushort *)(lVar19 + 0x6a) = uVar16 & 0xfffd;
     goto LAB_38;
   }
-  if ((uVar32 & uVar30) != 0) goto LAB_37;
-  if (uVar30 == 0) {
-    *(ushort *)(lVar19 + 0x68) = uVar32;
-    *(undefined8 *)(puVar26 + -8) = 0x14003fcdf;
+  if ((uVar28 & uVar31) != 0) goto LAB_37;
+  if (uVar28 == 0) {
+    *(ushort *)(lVar19 + 0x68) = uVar31;
+    *(undefined8 *)(puVar26 + -8) = 0x14003eeaf;
     KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-    *(undefined8 *)(puVar26 + -8) = 0x14003fcef;
+    *(undefined8 *)(puVar26 + -8) = 0x14003eebf;
     ObfReferenceObject(uVar6);
     uVar7 = *(undefined8 *)(lVar19 + 0x58);
     uVar8 = *(undefined8 *)(lVar19 + 0x50);
     puVar26[0x40] = AfdPriorityBoost;
     puVar26[0x38] = 0;
     *(longlong *)(puVar26 + 0x30) = lVar19;
     puVar26[0x28] = 0;
-    *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar32;
-    *(undefined8 *)(puVar26 + -8) = 0x14003fd28;
+    *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar31;
+    *(undefined8 *)(puVar26 + -8) = 0x14003eef8;
     IoSetIoCompletionEx3(uVar8,uVar7,0);
-    *(undefined8 *)(puVar26 + -8) = 0x14003fd3d;
+    *(undefined8 *)(puVar26 + -8) = 0x14003ef0d;
     KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
   }
   else {
-    *(undefined8 *)(puVar26 + -8) = 0x14003fc5d;
+    *(undefined8 *)(puVar26 + -8) = 0x14003ee2d;
     KeReleaseInStackQueuedSpinLock();
     uVar7 = *(undefined8 *)(lVar19 + 0x50);
-    *(undefined8 *)(puVar26 + -8) = 0x14003fc70;
+    *(undefined8 *)(puVar26 + -8) = 0x14003ee40;
     cVar15 = IoCancelMiniCompletionPacket(uVar7,lVar19);
     if (cVar15 == '\0') {
-      *(undefined8 *)(puVar26 + -8) = 0x14003fc89;
+      *(undefined8 *)(puVar26 + -8) = 0x14003ee59;
       KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
       if (*(short *)(lVar19 + 0x68) != 0) {
         *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
         goto LAB_38;
       }
     }
     else {
-      *(undefined8 *)(puVar26 + -8) = 0x14003fcb2;
+      *(undefined8 *)(puVar26 + -8) = 0x14003ee82;
       ObfDereferenceObject(uVar6);
-      *(undefined8 *)(puVar26 + -8) = 0x14003fcc7;
+      *(undefined8 *)(puVar26 + -8) = 0x14003ee97;
       KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
       *(undefined2 *)(lVar19 + 0x68) = 0;
     }
   }
   uVar16 = *(ushort *)(lVar19 + 0x6a);
-  uVar30 = uVar16;
-  goto joined_r0x00014003fc1d;
+  uVar28 = uVar16;
+  goto joined_r0x00014003eded;
 LAB_36:
   puVar4[0xbc] = 0;
   puVar4[0xbd] = 0;
   puVar4[0xbe] = 0;
   puVar4[0xbf] = 0;
   *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
-  *(undefined8 *)(puVar26 + -8) = 0x14003fd6f;
+  *(undefined8 *)(puVar26 + -8) = 0x14003ef3f;
   KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-  *(undefined8 *)(puVar26 + -8) = 0x14003fd80;
+  *(undefined8 *)(puVar26 + -8) = 0x14003ef50;
   AfdNotifyDestroyContext(uVar6,lVar19);
-  *(undefined8 *)(puVar26 + -8) = 0x14003fd90;
+  if ((Feature_447951161__private_featureState & 0x10) == 0) {
+    *(undefined8 *)(puVar26 + -8) = 0x14003ef90;
+    uVar21 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+    uVar32 = (uint)uVar21;
+  }
+  else {
+    uVar32 = Feature_447951161__private_featureState & 1;
+  }
+  if (uVar32 != 0) {
+    *(undefined8 *)(puVar26 + -8) = 0x14003efa3;
+    ExFreePoolWithTag(lVar19,0x4e646641);
+  }
+  *(undefined8 *)(puVar26 + -8) = 0x14003efb8;
   KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
 LAB_38:
-  *(undefined8 *)(puVar26 + -8) = 0x14003fdbc;
+  *(undefined8 *)(puVar26 + -8) = 0x14003ef84;
   KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
 LAB_4:
-  *(undefined8 *)(puVar26 + -8) = 0x14003fde7;
+  *(undefined8 *)(puVar26 + -8) = 0x14003efe3;
   ExReleaseRundownProtection(puVar4 + 0xc0);
 LAB_3:
   puVar26[0x48] = 1;
   *(short **)(puVar26 + 0x40) = param_1;
   *(undefined4 *)(puVar26 + 0x38) = 0xc000009a;
   *(uint *)(puVar26 + 0x30) = param_5;
   *(undefined8 *)(puVar26 + 0x28) = *(undefined8 *)(param_1 + 4);
   *(undefined4 *)(puVar26 + 0x20) = param_6;
-  *(undefined8 *)(puVar26 + -8) = 0x14003fe30;
+  *(undefined8 *)(puVar26 + -8) = 0x14003f02d;
   AFDETW_TRACERECV(1,0x100c,(short *)puVar4,0,*(undefined4 *)(puVar26 + 0x20),
                    *(undefined8 *)(puVar26 + 0x28),*(undefined4 *)(puVar26 + 0x30),
                    *(undefined4 *)(puVar26 + 0x38),*(short **)(puVar26 + 0x40),puVar26[0x48]);
   cVar15 = '\x01';
   goto LAB_18;
-joined_r0x00014003ff64:
+joined_r0x00014003f161:
   if ((uVar16 & 1) != 0) goto LAB_39;
-  *(undefined8 *)(puVar26 + -8) = 0x14003ff78;
+  *(undefined8 *)(puVar26 + -8) = 0x14003f16f;
   uVar17 = AfdNotifyComputeEvents(lVar19);
   uVar16 = *(ushort *)(lVar19 + 0x68);
   *(undefined2 *)(lVar19 + 0x66) = *(undefined2 *)(lVar19 + 100);
   if (uVar17 == uVar16) {
     if ((*(byte *)(lVar19 + 99) & 1) != 0) {
-      uVar32 = uVar32 | 4;
+      uVar31 = uVar31 | 4;
     }
 LAB_40:
-    *(ushort *)(lVar19 + 0x6a) = uVar32 & 0xfffd;
+    *(ushort *)(lVar19 + 0x6a) = uVar31 & 0xfffd;
     goto LAB_41;
   }
-  if ((uVar17 & uVar16) != 0) goto LAB_40;
+  if ((uVar16 & uVar17) != 0) goto LAB_40;
   if (uVar16 == 0) {
     *(ushort *)(lVar19 + 0x68) = uVar17;
-    *(undefined8 *)(puVar26 + -8) = 0x14004002c;
+    *(undefined8 *)(puVar26 + -8) = 0x14003f223;
     KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-    uVar23 = local_c0;
-    *(undefined8 *)(puVar26 + -8) = 0x14004003c;
-    ObfReferenceObject(uVar23);
+    uVar21 = local_c0;
+    *(undefined8 *)(puVar26 + -8) = 0x14003f233;
+    ObfReferenceObject(uVar21);
     uVar6 = *(undefined8 *)(lVar19 + 0x58);
     uVar7 = *(undefined8 *)(lVar19 + 0x50);
     puVar26[0x40] = AfdPriorityBoost;
     puVar26[0x38] = 0;
     *(longlong *)(puVar26 + 0x30) = lVar19;
     puVar26[0x28] = 0;
     *(ulonglong *)(puVar26 + 0x20) = (ulonglong)uVar17;
-    *(undefined8 *)(puVar26 + -8) = 0x140040075;
+    *(undefined8 *)(puVar26 + -8) = 0x14003f26c;
     IoSetIoCompletionEx3(uVar7,uVar6,0);
-    *(undefined8 *)(puVar26 + -8) = 0x14004008a;
+    *(undefined8 *)(puVar26 + -8) = 0x14003f281;
     KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
   }
   else {
-    *(undefined8 *)(puVar26 + -8) = 0x14003ffaa;
+    *(undefined8 *)(puVar26 + -8) = 0x14003f1a1;
     KeReleaseInStackQueuedSpinLock();
     uVar6 = *(undefined8 *)(lVar19 + 0x50);
-    *(undefined8 *)(puVar26 + -8) = 0x14003ffbd;
+    *(undefined8 *)(puVar26 + -8) = 0x14003f1b4;
     cVar15 = IoCancelMiniCompletionPacket(uVar6,lVar19);
-    uVar23 = local_c0;
+    uVar21 = local_c0;
     if (cVar15 == '\0') {
-      *(undefined8 *)(puVar26 + -8) = 0x14003ffd6;
+      *(undefined8 *)(puVar26 + -8) = 0x14003f1cd;
       KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
       if (*(short *)(lVar19 + 0x68) != 0) {
         *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
         goto LAB_41;
       }
     }
     else {
-      *(undefined8 *)(puVar26 + -8) = 0x14003ffff;
-      ObfDereferenceObject(uVar23);
-      *(undefined8 *)(puVar26 + -8) = 0x140040014;
+      *(undefined8 *)(puVar26 + -8) = 0x14003f1f6;
+      ObfDereferenceObject(uVar21);
+      *(undefined8 *)(puVar26 + -8) = 0x14003f20b;
       KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
       *(undefined2 *)(lVar19 + 0x68) = 0;
     }
   }
-  uVar32 = *(ushort *)(lVar19 + 0x6a);
-  uVar16 = uVar32;
-  goto joined_r0x00014003ff64;
+  uVar31 = *(ushort *)(lVar19 + 0x6a);
+  uVar16 = uVar31;
+  goto joined_r0x00014003f161;
 LAB_39:
   puVar4[0xbc] = 0;
   puVar4[0xbd] = 0;
   puVar4[0xbe] = 0;
   puVar4[0xbf] = 0;
   *(ushort *)(lVar19 + 0x6a) = *(ushort *)(lVar19 + 0x6a) & 0xfffd;
-  *(undefined8 *)(puVar26 + -8) = 0x1400400bc;
+  *(undefined8 *)(puVar26 + -8) = 0x14003f2b3;
   KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
-  uVar23 = local_c0;
-  *(undefined8 *)(puVar26 + -8) = 0x1400400cd;
-  AfdNotifyDestroyContext(uVar23,lVar19);
-  *(undefined8 *)(puVar26 + -8) = 0x1400400dd;
+  uVar21 = local_c0;
+  *(undefined8 *)(puVar26 + -8) = 0x14003f2c4;
+  AfdNotifyDestroyContext(uVar21,lVar19);
+  if ((Feature_447951161__private_featureState & 0x10) == 0) {
+    *(undefined8 *)(puVar26 + -8) = 0x14003f304;
+    uVar21 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+    uVar32 = (uint)uVar21;
+  }
+  else {
+    uVar32 = Feature_447951161__private_featureState & 1;
+  }
+  if (uVar32 != 0) {
+    *(undefined8 *)(puVar26 + -8) = 0x14003f317;
+    ExFreePoolWithTag(lVar19,0x4e646641);
+  }
+  *(undefined8 *)(puVar26 + -8) = 0x14003f32c;
   KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,puVar26 + 0x50);
 LAB_41:
-  *(undefined8 *)(puVar26 + -8) = 0x140040109;
+  *(undefined8 *)(puVar26 + -8) = 0x14003f2f8;
   KeReleaseInStackQueuedSpinLock(puVar26 + 0x50);
 LAB_10:
-  *(undefined8 *)(puVar26 + -8) = 0x140040134;
+  *(undefined8 *)(puVar26 + -8) = 0x14003f357;
   ExReleaseRundownProtection(puVar4 + 0xc0);
 LAB_9:
   if ((puVar4[2] & 0x10) == 0) {
-    uVar29 = 0;
-  }
-  else if (((uVar28 == 0x80000005) || (uVar30 != 0)) &&
-          (uVar29 = 0x4000000f, (local_d4 & 0x40) != 0)) {
-    uVar29 = 0x40000011;
+    uVar34 = 0;
+  }
+  else if (((uVar33 == 0x80000005) || (uVar28 != 0)) &&
+          (uVar34 = 0x4000000f, (local_d4 & 0x40) != 0)) {
+    uVar34 = 0x40000011;
   }
   puVar26[0x48] = 1;
   *(short **)(puVar26 + 0x40) = param_1;
-  uVar33 = *(uint *)(param_2 + 0x10);
+  uVar32 = *(uint *)(param_2 + 0x10);
   *(undefined4 *)(puVar26 + 0x38) = *(undefined4 *)(param_1 + 0x18);
   uVar6 = *(undefined8 *)(param_1 + 4);
-  *(uint *)(puVar26 + 0x30) = uVar33;
+  *(uint *)(puVar26 + 0x30) = uVar32;
   *(undefined8 *)(puVar26 + 0x28) = uVar6;
-  *(ulonglong *)(param_1 + 0x1c) = (ulonglong)uVar33;
+  *(ulonglong *)(param_1 + 0x1c) = (ulonglong)uVar32;
   *(undefined4 *)(puVar26 + 0x20) = param_6;
-  *(undefined8 *)(puVar26 + -8) = 0x1400401b4;
+  *(undefined8 *)(puVar26 + -8) = 0x14003f3da;
   AFDETW_TRACERECV(1,0x100d,(short *)puVar4,0,*(undefined4 *)(puVar26 + 0x20),
                    *(undefined8 *)(puVar26 + 0x28),*(undefined4 *)(puVar26 + 0x30),
                    *(undefined4 *)(puVar26 + 0x38),*(short **)(puVar26 + 0x40),puVar26[0x48]);
   cVar15 = '\x01';
 LAB_18:
-  ppppppplVar27 = *(longlong ********)(puVar26 + 0x70);
+  ppppplVar27 = *(longlong ******)(puVar26 + 0x70);
 LAB_35:
-  while (pppppplVar5 = local_d0, psVar31 = param_1, (longlong *******)local_d0 != &local_d0) {
-    if (((longlong *******)local_d0[1] != &local_d0) ||
-       (ppppppplVar34 = (longlong *******)*local_d0, ppppppplVar34[1] != local_d0))
-    goto LAB_5;
-    ppppppplVar34[1] = (longlong ******)&local_d0;
-    pppppplVar10 = ppppppplVar22[4];
-    local_d0 = (longlong ******)ppppppplVar34;
-    *(undefined8 *)(puVar26 + -8) = 0x140040b32;
-    AfdReturnBuffer((longlong)pppppplVar5,(longlong)pppppplVar10);
+  while (pppplVar5 = local_d0, psVar29 = param_1, (longlong *****)local_d0 != &local_d0) {
+    if (((longlong *****)local_d0[1] != &local_d0) ||
+       (ppppplVar30 = (longlong *****)*local_d0, ppppplVar30[1] != local_d0)) goto LAB_5;
+    ppppplVar30[1] = (longlong ****)&local_d0;
+    pppplVar10 = ppppplVar23[4];
+    local_d0 = (longlong ****)ppppplVar30;
+    *(undefined8 *)(puVar26 + -8) = 0x14003fde1;
+    AfdReturnBuffer((longlong)pppplVar5,(longlong)pppplVar10);
   }
 LAB_12:
-  if (ppppppplVar27 != (longlong *******)0x0) {
-    *(undefined8 *)(puVar26 + -8) = 0x14004113d;
-    AfdBPostDrainReceive(ppppppplVar27);
+  if (ppppplVar27 != (longlong *****)0x0) {
+    *(undefined8 *)(puVar26 + -8) = 0x14004044a;
+    AfdBPostDrainReceive(ppppplVar27);
   }
   uVar13 = AfdPriorityBoost;
   if (cVar15 != '\0') {
-    *(int *)(psVar31 + 0x18) = (int)uVar29;
-    *(undefined8 *)(puVar26 + -8) = 0x140041156;
-    IofCompleteRequest(psVar31,uVar13);
-  }
-  return uVar29 & 0xffffffff;
+    *(int *)(psVar29 + 0x18) = (int)uVar34;
+    *(undefined8 *)(puVar26 + -8) = 0x140040464;
+    IofCompleteRequest(psVar29,uVar13);
+  }
+  return uVar34 & 0xffffffff;
 }
 

```


## AfdNotifyPostEvents

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.39|
|i_ratio|0.44|
|m_ratio|0.94|
|b_ratio|0.89|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdNotifyPostEvents|AfdNotifyPostEvents|
|fullname|AfdNotifyPostEvents|AfdNotifyPostEvents|
|refcount|7|7|
|`length`|697|770|
|`called`|AfdNotifyDestroyContext<br>AfdNotifyPollEventsToNotifyEvents<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLockAtDpcLevel<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLockFromDpcLevel<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject|<details><summary>Expand for full list:<br>AfdNotifyDestroyContext<br>AfdNotifyPollEventsToNotifyEvents<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLockAtDpcLevel<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLockFromDpcLevel<br>NTOSKRNL.EXE::ObfDereferenceObject</summary>NTOSKRNL.EXE::ObfReferenceObject</details>|
|calling|AfdNotifyPacketCallback<br>AfdNotifyProcessRegistration<br>AfdNotifySockIndicateEventsUnlock<br>AfdRestartFastDatagramSend<br>AfdTLFastDgramSend<br>AfdTLFastDgramSendComplete|AfdNotifyPacketCallback<br>AfdNotifyProcessRegistration<br>AfdNotifySockIndicateEventsUnlock<br>AfdRestartFastDatagramSend<br>AfdTLFastDgramSend<br>AfdTLFastDgramSendComplete|
|paramcount|3|3|
|`address`|14005364c|140053cac|
|sig|undefined __fastcall AfdNotifyPostEvents(longlong param_1, undefined8 param_2, char param_3)|undefined __fastcall AfdNotifyPostEvents(longlong param_1, undefined8 param_2, char param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdNotifyPostEvents Called Diff


```diff
--- AfdNotifyPostEvents called
+++ AfdNotifyPostEvents called
@@ -2,0 +3,2 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdNotifyPostEvents Diff


```diff
--- AfdNotifyPostEvents
+++ AfdNotifyPostEvents
@@ -1,111 +1,129 @@
 
 void AfdNotifyPostEvents(longlong param_1,undefined8 param_2,char param_3)
 
 {
   longlong lVar1;
   undefined8 uVar2;
   char cVar3;
   ushort uVar4;
-  ushort uVar5;
-  ushort uVar6;
+  uint uVar5;
+  ulonglong uVar6;
+  ushort uVar7;
+  ushort uVar8;
+  ushort uVar9;
   
   lVar1 = *(longlong *)(param_1 + 0x178);
   uVar2 = *(undefined8 *)(lVar1 + 0x40);
   if ((*(ushort *)(lVar1 + 0x6a) & 2) == 0) {
-    *(ushort *)(lVar1 + 0x6a) = *(ushort *)(lVar1 + 0x6a) | 2;
-LAB_0:
-    do {
-      uVar6 = *(ushort *)(lVar1 + 0x6a);
-      if ((uVar6 & 1) != 0) {
-        *(undefined8 *)(param_1 + 0x178) = 0;
-        *(ushort *)(lVar1 + 0x6a) = *(ushort *)(lVar1 + 0x6a) & 0xfffd;
-        if (param_3 == '\0') {
-          KeReleaseInStackQueuedSpinLock(param_2);
+    uVar8 = *(ushort *)(lVar1 + 0x6a) | 2;
+    *(ushort *)(lVar1 + 0x6a) = uVar8;
+    while ((uVar8 & 1) == 0) {
+      uVar9 = *(ushort *)(lVar1 + 100);
+      if ((*(byte *)(lVar1 + 0x62) & 4) == 0) {
+        if ((*(byte *)(lVar1 + 0x62) & 2) == 0) {
+          uVar7 = AfdNotifyPollEventsToNotifyEvents(uVar9);
+          if ((*(byte *)(lVar1 + 99) & 8) != 0) {
+            uVar4 = AfdNotifyPollEventsToNotifyEvents(~*(ushort *)(lVar1 + 0x66) & uVar9);
+            uVar7 = uVar7 & *(ushort *)(lVar1 + 0x68) | uVar4;
+          }
+          uVar7 = uVar7 & *(ushort *)(lVar1 + 0x60);
         }
         else {
-          KeReleaseInStackQueuedSpinLockFromDpcLevel();
-        }
-        AfdNotifyDestroyContext(uVar2,lVar1);
-        if (param_3 != '\0') {
-          KeAcquireInStackQueuedSpinLockAtDpcLevel();
-          return;
-        }
-        KeAcquireInStackQueuedSpinLock(param_1 + 0x38,param_2);
-        return;
-      }
-      uVar4 = 0;
-      if ((*(byte *)(lVar1 + 0x62) & 4) == 0) {
-        if ((*(byte *)(lVar1 + 0x62) & 2) == 0) {
-          uVar5 = *(ushort *)(lVar1 + 100);
-          uVar4 = AfdNotifyPollEventsToNotifyEvents(uVar5);
-          if ((*(byte *)(lVar1 + 99) & 8) != 0) {
-            uVar5 = AfdNotifyPollEventsToNotifyEvents(~*(ushort *)(lVar1 + 0x66) & uVar5);
-            uVar4 = uVar4 & *(ushort *)(lVar1 + 0x68) | uVar5;
-          }
-          uVar4 = uVar4 & *(ushort *)(lVar1 + 0x60);
+          uVar7 = 0;
         }
       }
       else {
-        uVar4 = 0x80;
+        uVar7 = 0x80;
       }
-      *(undefined2 *)(lVar1 + 0x66) = *(undefined2 *)(lVar1 + 100);
-      uVar5 = *(ushort *)(lVar1 + 0x68);
-      if (uVar4 == uVar5) {
+      uVar4 = *(ushort *)(lVar1 + 0x68);
+      *(ushort *)(lVar1 + 0x66) = uVar9;
+      if (uVar7 == uVar4) {
         if ((*(byte *)(lVar1 + 99) & 1) != 0) {
-          uVar6 = uVar6 | 4;
+          uVar8 = *(ushort *)(lVar1 + 0x6a) | 4;
         }
-LAB_1:
-        *(ushort *)(lVar1 + 0x6a) = uVar6 & 0xfffd;
+LAB_0:
+        *(ushort *)(lVar1 + 0x6a) = uVar8 & 0xfffd;
         return;
       }
-      if ((uVar4 & uVar5) != 0) goto LAB_1;
-      if (uVar5 == 0) {
-        *(ushort *)(lVar1 + 0x68) = uVar4;
+      if ((uVar7 & uVar4) != 0) goto LAB_0;
+      if (uVar4 == 0) {
+        *(ushort *)(lVar1 + 0x68) = uVar7;
         if (param_3 == '\0') {
           KeReleaseInStackQueuedSpinLock(param_2);
         }
         else {
           KeReleaseInStackQueuedSpinLockFromDpcLevel();
         }
         ObfReferenceObject(uVar2);
         IoSetIoCompletionEx3
-                  (*(undefined8 *)(lVar1 + 0x50),*(undefined8 *)(lVar1 + 0x58),0,0,uVar4,0,lVar1,0,
+                  (*(undefined8 *)(lVar1 + 0x50),*(undefined8 *)(lVar1 + 0x58),0,0,uVar7,0,lVar1,0,
                    AfdPriorityBoost);
         if (param_3 == '\0') {
           KeAcquireInStackQueuedSpinLock(param_1 + 0x38,param_2);
         }
         else {
           KeAcquireInStackQueuedSpinLockAtDpcLevel();
         }
-        goto LAB_0;
-      }
-      if (param_3 == '\0') {
-        KeReleaseInStackQueuedSpinLock();
       }
       else {
-        KeReleaseInStackQueuedSpinLockFromDpcLevel();
-      }
-      cVar3 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar1 + 0x50),lVar1);
-      if (cVar3 != '\0') {
-        ObfDereferenceObject(uVar2);
         if (param_3 == '\0') {
-          KeAcquireInStackQueuedSpinLock(param_1 + 0x38,param_2);
+          KeReleaseInStackQueuedSpinLock();
         }
         else {
-          KeAcquireInStackQueuedSpinLockAtDpcLevel();
+          KeReleaseInStackQueuedSpinLockFromDpcLevel();
         }
-        *(undefined2 *)(lVar1 + 0x68) = 0;
-        goto LAB_0;
+        cVar3 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar1 + 0x50),lVar1);
+        if (cVar3 == '\0') {
+          if (param_3 == '\0') {
+            KeAcquireInStackQueuedSpinLock(param_1 + 0x38,param_2);
+          }
+          else {
+            KeAcquireInStackQueuedSpinLockAtDpcLevel();
+          }
+          if (*(short *)(lVar1 + 0x68) != 0) {
+            *(ushort *)(lVar1 + 0x6a) = *(ushort *)(lVar1 + 0x6a) & 0xfffd;
+            return;
+          }
+        }
+        else {
+          ObfDereferenceObject(uVar2);
+          if (param_3 == '\0') {
+            KeAcquireInStackQueuedSpinLock(param_1 + 0x38,param_2);
+          }
+          else {
+            KeAcquireInStackQueuedSpinLockAtDpcLevel();
+          }
+          *(undefined2 *)(lVar1 + 0x68) = 0;
+        }
       }
-      if (param_3 == '\0') {
-        KeAcquireInStackQueuedSpinLock(param_1 + 0x38,param_2);
-      }
-      else {
-        KeAcquireInStackQueuedSpinLockAtDpcLevel();
-      }
-    } while (*(short *)(lVar1 + 0x68) == 0);
+      uVar8 = *(ushort *)(lVar1 + 0x6a);
+    }
+    *(undefined8 *)(param_1 + 0x178) = 0;
     *(ushort *)(lVar1 + 0x6a) = *(ushort *)(lVar1 + 0x6a) & 0xfffd;
+    if (param_3 == '\0') {
+      KeReleaseInStackQueuedSpinLock(param_2);
+    }
+    else {
+      KeReleaseInStackQueuedSpinLockFromDpcLevel();
+    }
+    AfdNotifyDestroyContext(uVar2,lVar1);
+    if ((Feature_447951161__private_featureState & 0x10) == 0) {
+      uVar6 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+      uVar5 = (uint)uVar6;
+    }
+    else {
+      uVar5 = Feature_447951161__private_featureState & 1;
+    }
+    if (uVar5 != 0) {
+      ExFreePoolWithTag(lVar1,0x4e646641);
+    }
+    if (param_3 == '\0') {
+      KeAcquireInStackQueuedSpinLock(param_1 + 0x38,param_2);
+    }
+    else {
+      KeAcquireInStackQueuedSpinLockAtDpcLevel();
+    }
   }
   return;
 }
 

```


## AfdFastDatagramReceive

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.6|
|i_ratio|0.64|
|m_ratio|0.98|
|b_ratio|0.77|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdFastDatagramReceive|AfdFastDatagramReceive|
|fullname|AfdFastDatagramReceive|AfdFastDatagramReceive|
|refcount|4|4|
|`length`|2479|2571|
|`called`|<details><summary>Expand for full list:<br>AFDETW_START_ACTIVITY_FASTIO<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACERECVDATAGRAM<br>AfdComputeCMSGLength32<br>AfdCopyMdlChainToBufferArray<br>AfdIndicateEventSelectEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdReturnBuffer<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExGetPreviousMode</summary>NTOSKRNL.EXE::ExRaiseAccessViolation<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>NTOSKRNL.EXE::ProbeForWrite<br>WPP_SF_I<br>WPP_SF_qL<br>_guard_dispatch_icall<br>memcpy</details>|<details><summary>Expand for full list:<br>AFDETW_START_ACTIVITY_FASTIO<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACERECVDATAGRAM<br>AfdComputeCMSGLength32<br>AfdCopyMdlChainToBufferArray<br>AfdIndicateEventSelectEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdReturnBuffer<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAcquireRundownProtection</summary>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExGetPreviousMode<br>NTOSKRNL.EXE::ExRaiseAccessViolation<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>NTOSKRNL.EXE::ProbeForWrite<br>WPP_SF_I<br>WPP_SF_qL<br>_guard_dispatch_icall<br>memcpy</details>|
|calling|AfdFastIoDeviceControl<br>AfdFastIoRead|AfdFastIoDeviceControl<br>AfdFastIoRead|
|paramcount|4|4|
|`address`|140033850|140032940|
|sig|undefined8 __fastcall AfdFastDatagramReceive(short * param_1, longlong * param_2, uint param_3, undefined4 * param_4)|undefined8 __fastcall AfdFastDatagramReceive(short * param_1, longlong * param_2, uint param_3, undefined4 * param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdFastDatagramReceive Called Diff


```diff
--- AfdFastDatagramReceive called
+++ AfdFastDatagramReceive called
@@ -9,0 +10 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
@@ -10,0 +12 @@
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdFastDatagramReceive Diff


```diff
--- AfdFastDatagramReceive
+++ AfdFastDatagramReceive
@@ -1,341 +1,362 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
 
 ulonglong AfdFastDatagramReceive(short *param_1,longlong *param_2,uint param_3,undefined4 *param_4)
 
 {
   ushort *puVar1;
   longlong *plVar2;
   ushort uVar3;
   longlong *plVar4;
   longlong lVar5;
   bool bVar6;
-  char cVar7;
-  ushort uVar8;
-  undefined8 uVar9;
-  short *psVar10;
+  bool bVar7;
+  char cVar8;
+  ushort uVar9;
+  undefined8 uVar10;
+  short *psVar11;
   void *_Src;
-  ushort uVar11;
-  longlong lVar12;
-  code *pcVar13;
-  ulonglong uVar14;
-  uint uVar15;
+  ushort uVar12;
+  longlong lVar13;
+  code *pcVar14;
+  ulonglong uVar15;
+  uint uVar16;
   undefined8 local_90;
   undefined8 uStack_88;
   undefined8 local_80;
   uint local_78;
   longlong local_70;
   longlong *local_68;
   undefined8 local_60;
   undefined8 uStack_58;
   undefined8 local_50;
   longlong local_48;
   
   local_90 = 0;
   uStack_88 = 0;
   local_80 = 0;
   local_70 = 0;
   if ((DAT_0 & 0x40) != 0) {
                     /* WARNING: Subroutine does not return */
     WPP_SF_I(0x11,&WPP_5d10adf6cd9b3dca63b04d5d43604693_Traceguids,param_1);
   }
   KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
   if ((*(byte *)((longlong)param_1 + 7) & 0x10) == 0) {
-    lVar12 = 0;
+    lVar13 = 0;
     if (g_AfdEtwTraceEnable != 0) {
       local_70 = _DAT_1;
-      lVar12 = _DAT_1;
+      lVar13 = _DAT_1;
     }
     if (*(int *)(param_1 + 0x4a) != 0) {
       plVar2 = (longlong *)(param_1 + 0x40);
       plVar4 = (longlong *)*plVar2;
       lVar5 = *plVar4;
       local_68 = plVar4;
       if (((longlong *)plVar4[1] == plVar2) && (*(longlong **)(lVar5 + 8) == plVar4)) {
         *plVar2 = lVar5;
         *(longlong **)(lVar5 + 8) = plVar2;
         if ((*(uint *)(plVar4 + 8) <= param_3) && (-1 < (int)plVar4[6])) {
           *(int *)(param_1 + 0x4a) = *(int *)(param_1 + 0x4a) + -1;
           *(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) - (int)plVar4[8];
           KeReleaseInStackQueuedSpinLock(&local_90);
-          psVar10 = param_1;
-          AFDETW_START_ACTIVITY_FASTIO(param_1,lVar12);
+          psVar11 = param_1;
+          AFDETW_START_ACTIVITY_FASTIO(param_1,lVar13);
           if ((int)plVar4[8] != 0) {
-            AFDETW_TRACEBUFFER(psVar10,lVar12,plVar4[7],0);
+            AFDETW_TRACEBUFFER(psVar11,lVar13,plVar4[7],0);
             AfdCopyMdlChainToBufferArray
                       ((uint *)*param_2,0,(int)param_2[1],(longlong *)plVar4[7],0,
                        *(uint *)(plVar4 + 8));
           }
           if (param_2[3] != 0) {
             if ((*(uint *)(param_1 + 4) >> 8 & 1) == 0) {
               local_48 = plVar4[5];
-              uVar15 = *(ushort *)(local_48 + 4) + 2;
+              uVar16 = *(ushort *)(local_48 + 4) + 2;
             }
             else {
-              uVar15 = *(uint *)(plVar4 + 4);
+              uVar16 = *(uint *)(plVar4 + 4);
             }
             _Src = (void *)plVar4[5];
-            if (*(uint *)param_2[4] < uVar15) {
+            if (*(uint *)param_2[4] < uVar16) {
                     /* WARNING: Subroutine does not return */
               ExRaiseAccessViolation();
             }
-            cVar7 = ExGetPreviousMode();
-            if (cVar7 != '\0') {
-              ProbeForWrite(param_2[3],(ulonglong)uVar15,1);
+            cVar8 = ExGetPreviousMode();
+            if (cVar8 != '\0') {
+              ProbeForWrite(param_2[3],(ulonglong)uVar16,1);
             }
             if ((*(uint *)(param_1 + 4) >> 8 & 1) == 0) {
               _Src = (void *)((longlong)_Src + 6);
             }
-            memcpy((void *)param_2[3],_Src,(ulonglong)uVar15);
-            *(uint *)param_2[4] = uVar15;
+            memcpy((void *)param_2[3],_Src,(ulonglong)uVar16);
+            *(uint *)param_2[4] = uVar16;
           }
           if (param_2[6] != 0) {
             if (((*(uint *)(plVar4 + 3) & 0x1000) == 0) ||
-               (uVar15 = *(uint *)(plVar4 + 2), uVar15 == 0)) {
-              uVar15 = 0;
+               (uVar16 = *(uint *)(plVar4 + 2), uVar16 == 0)) {
+              uVar16 = 0;
             }
             else {
-              pcVar13 = memcpy;
-              cVar7 = IoIs32bitProcess(0);
-              if (cVar7 != '\0') {
-                uVar15 = AfdComputeCMSGLength32
+              pcVar14 = memcpy;
+              cVar8 = IoIs32bitProcess(0);
+              if (cVar8 != '\0') {
+                uVar16 = AfdComputeCMSGLength32
                                    ((longlong *)((ulonglong)*(uint *)(plVar4 + 8) + plVar4[0xb]),
-                                    uVar15);
-                pcVar13 = AfdCopyCMSGBuffer32;
-              }
-              if (*(uint *)param_2[6] < uVar15) {
+                                    uVar16);
+                pcVar14 = AfdCopyCMSGBuffer32;
+              }
+              if (*(uint *)param_2[6] < uVar16) {
                     /* WARNING: Subroutine does not return */
                 ExRaiseAccessViolation();
               }
-              cVar7 = ExGetPreviousMode();
-              if (cVar7 != '\0') {
-                ProbeForWrite(param_2[5],uVar15,1);
-              }
-              (*pcVar13)(param_2[5],(ulonglong)*(uint *)(plVar4 + 8) + plVar4[0xb],uVar15);
-            }
-            *(uint *)param_2[6] = uVar15;
+              cVar8 = ExGetPreviousMode();
+              if (cVar8 != '\0') {
+                ProbeForWrite(param_2[5],uVar16,1);
+              }
+              (*pcVar14)(param_2[5],(ulonglong)*(uint *)(plVar4 + 8) + plVar4[0xb],uVar16);
+            }
+            *(uint *)param_2[6] = uVar16;
           }
           if ((uint *)param_2[7] != (uint *)0x0) {
             local_78 = 0;
             if ((*(uint *)(plVar4 + 3) & 4) != 0) {
               local_78 = 0x400;
             }
             if ((*(uint *)(plVar4 + 3) & 8) != 0) {
               local_78 = local_78 | 0x800;
             }
             *(uint *)param_2[7] = local_78;
           }
           *(ulonglong *)(param_4 + 2) = (ulonglong)*(uint *)(plVar4 + 8);
           *param_4 = 0;
           AFDETW_TRACERECVDATAGRAM(0,0x1068,param_1,1);
-          uVar15 = 0;
-          uVar14 = *(ulonglong *)(*param_2 + 8);
+          uVar16 = 0;
+          uVar15 = *(ulonglong *)(*param_2 + 8);
           AFDETW_TRACERECVDATAGRAM(1,0x1069,param_1,1);
           KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
           *(uint *)(param_1 + 0x24) = *(uint *)(param_1 + 0x24) & 0xfffffffe;
           if (*(int *)(param_1 + 0x4a) == 0) {
             if (*(longlong *)(param_1 + 0xbc) != 0) {
               puVar1 = (ushort *)(*(longlong *)(param_1 + 0xbc) + 100);
               *puVar1 = *puVar1 & 0xfffe;
             }
             if ((*(uint *)(param_1 + 4) & 0x10) == 0) {
               *(undefined1 *)((longlong)param_1 + 0x21) = 1;
             }
           }
           else {
             AfdIndicateEventSelectEvent(param_1,1,0);
           }
           bVar6 = false;
           local_60 = 0;
           uStack_58 = 0;
           local_50 = 0;
           if ((*(longlong *)(param_1 + 0xbc) != 0) &&
-             (cVar7 = ExAcquireRundownProtection(param_1 + 0xc0), cVar7 != '\0')) {
+             (cVar8 = ExAcquireRundownProtection(param_1 + 0xc0), cVar8 != '\0')) {
             bVar6 = true;
-            lVar12 = *(longlong *)(param_1 + 0xbc);
-            uVar9 = *(undefined8 *)(lVar12 + 0x40);
-            uVar3 = *(ushort *)(lVar12 + 0x6a);
+            bVar7 = true;
+            lVar13 = *(longlong *)(param_1 + 0xbc);
+            uVar10 = *(undefined8 *)(lVar13 + 0x40);
+            uVar3 = *(ushort *)(lVar13 + 0x6a);
             if ((uVar3 & 2) == 0) {
-              uVar11 = uVar3 | 2;
-              *(ushort *)(lVar12 + 0x6a) = uVar11;
+              uVar12 = uVar3 | 2;
+              *(ushort *)(lVar13 + 0x6a) = uVar12;
               while ((uVar3 & 1) == 0) {
-                uVar8 = AfdNotifyComputeEvents(lVar12);
-                *(undefined2 *)(lVar12 + 0x66) = *(undefined2 *)(lVar12 + 100);
-                uVar3 = *(ushort *)(lVar12 + 0x68);
-                if (uVar8 == uVar3) {
-                  if ((*(byte *)(lVar12 + 99) & 1) != 0) {
-                    uVar11 = uVar11 | 4;
+                uVar9 = AfdNotifyComputeEvents(lVar13);
+                *(undefined2 *)(lVar13 + 0x66) = *(undefined2 *)(lVar13 + 100);
+                uVar3 = *(ushort *)(lVar13 + 0x68);
+                if (uVar9 == uVar3) {
+                  if ((*(byte *)(lVar13 + 99) & 1) != 0) {
+                    uVar12 = uVar12 | 4;
                   }
 LAB_2:
-                  *(ushort *)(lVar12 + 0x6a) = uVar11 & 0xfffd;
-                  bVar6 = true;
+                  *(ushort *)(lVar13 + 0x6a) = uVar12 & 0xfffd;
+                  bVar7 = true;
                   goto LAB_3;
                 }
-                if ((uVar3 & uVar8) != 0) goto LAB_2;
+                if ((uVar3 & uVar9) != 0) goto LAB_2;
                 if (uVar3 == 0) {
-                  *(ushort *)(lVar12 + 0x68) = uVar8;
+                  *(ushort *)(lVar13 + 0x68) = uVar9;
                   KeReleaseInStackQueuedSpinLock(&local_90);
-                  ObfReferenceObject(uVar9);
-                  uVar15 = uVar15 & 0xffffff00;
-                  uVar14 = uVar14 & 0xffffffffffffff00;
+                  ObfReferenceObject(uVar10);
+                  uVar16 = uVar16 & 0xffffff00;
+                  uVar15 = uVar15 & 0xffffffffffffff00;
                   IoSetIoCompletionEx3
-                            (*(undefined8 *)(lVar12 + 0x50),*(undefined8 *)(lVar12 + 0x58),0,0,uVar8
-                             ,uVar14,lVar12,uVar15,AfdPriorityBoost);
+                            (*(undefined8 *)(lVar13 + 0x50),*(undefined8 *)(lVar13 + 0x58),0,0,uVar9
+                             ,uVar15,lVar13,uVar16,AfdPriorityBoost);
                   KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
                 }
                 else {
                   KeReleaseInStackQueuedSpinLock(&local_90);
-                  cVar7 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar12 + 0x50),lVar12);
-                  if (cVar7 == '\0') {
+                  cVar8 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar13 + 0x50),lVar13);
+                  if (cVar8 == '\0') {
                     KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
-                    if (*(short *)(lVar12 + 0x68) != 0) {
-                      *(ushort *)(lVar12 + 0x6a) = *(ushort *)(lVar12 + 0x6a) & 0xfffd;
-                      bVar6 = true;
+                    if (*(short *)(lVar13 + 0x68) != 0) {
+                      *(ushort *)(lVar13 + 0x6a) = *(ushort *)(lVar13 + 0x6a) & 0xfffd;
+                      bVar7 = true;
                       goto LAB_3;
                     }
                   }
                   else {
-                    ObfDereferenceObject(uVar9);
+                    ObfDereferenceObject(uVar10);
                     KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
-                    *(undefined2 *)(lVar12 + 0x68) = 0;
+                    *(undefined2 *)(lVar13 + 0x68) = 0;
                   }
                 }
-                uVar11 = *(ushort *)(lVar12 + 0x6a);
-                uVar3 = uVar11;
+                uVar12 = *(ushort *)(lVar13 + 0x6a);
+                uVar3 = uVar12;
               }
               param_1[0xbc] = 0;
               param_1[0xbd] = 0;
               param_1[0xbe] = 0;
               param_1[0xbf] = 0;
-              *(ushort *)(lVar12 + 0x6a) = *(ushort *)(lVar12 + 0x6a) & 0xfffd;
+              *(ushort *)(lVar13 + 0x6a) = *(ushort *)(lVar13 + 0x6a) & 0xfffd;
               KeReleaseInStackQueuedSpinLock(&local_90);
-              AfdNotifyDestroyContext(uVar9,lVar12);
-              bVar6 = false;
+              AfdNotifyDestroyContext(uVar10,lVar13);
+              if ((Feature_447951161__private_featureState & 0x10) == 0) {
+                uVar15 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+                uVar16 = (uint)uVar15;
+              }
+              else {
+                uVar16 = Feature_447951161__private_featureState & 1;
+              }
+              if (uVar16 != 0) {
+                ExFreePoolWithTag(lVar13,0x4e646641);
+              }
+              bVar7 = false;
             }
 LAB_3:
-            if (!bVar6) {
+            if (!bVar7) {
               KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
             }
-            bVar6 = true;
           }
           KeReleaseInStackQueuedSpinLock(&local_90);
           if (bVar6) {
             ExReleaseRundownProtection(param_1 + 0xc0);
           }
-          uVar9 = AfdReturnBuffer((longlong)plVar4,*(longlong *)(param_1 + 0x18));
-          return CONCAT71((int7)((ulonglong)uVar9 >> 8),1);
+          uVar10 = AfdReturnBuffer((longlong)plVar4,*(longlong *)(param_1 + 0x18));
+          return CONCAT71((int7)((ulonglong)uVar10 >> 8),1);
         }
-        lVar12 = *plVar2;
-        if (*(longlong **)(lVar12 + 8) == plVar2) {
-          *plVar4 = lVar12;
+        lVar13 = *plVar2;
+        if (*(longlong **)(lVar13 + 8) == plVar2) {
+          *plVar4 = lVar13;
           plVar4[1] = (longlong)plVar2;
-          *(longlong **)(lVar12 + 8) = plVar4;
+          *(longlong **)(lVar13 + 8) = plVar4;
           *plVar2 = (longlong)plVar4;
           goto LAB_4;
         }
       }
-      pcVar13 = (code *)swi(0x29);
-      (*pcVar13)(3);
-      pcVar13 = (code *)swi(3);
-      uVar9 = (*pcVar13)();
-      return uVar9;
+      pcVar14 = (code *)swi(0x29);
+      (*pcVar14)(3);
+      pcVar14 = (code *)swi(3);
+      uVar10 = (*pcVar14)();
+      return uVar10;
     }
     if (((*(uint *)(param_1 + 4) & 0x10) != 0) && ((*(uint *)((longlong)param_2 + 0xc) & 2) == 0)) {
       *(uint *)(param_1 + 0x24) = *(uint *)(param_1 + 0x24) & 0xfffffffe;
       if (*(longlong *)(param_1 + 0xbc) != 0) {
         puVar1 = (ushort *)(*(longlong *)(param_1 + 0xbc) + 100);
         *puVar1 = *puVar1 & 0xfffe;
       }
       if ((DAT_5 & 0x10) != 0) {
         WPP_SF_qL(0x12,&WPP_5d10adf6cd9b3dca63b04d5d43604693_Traceguids,param_1,
                   *(undefined4 *)(param_1 + 0x24));
       }
       AFDETW_TRACERECVDATAGRAM(0,0x1015,param_1,1);
-      uVar15 = 0xc00000a3;
-      uVar14 = 0;
+      uVar16 = 0xc00000a3;
+      uVar15 = 0;
       AFDETW_TRACERECVDATAGRAM(1,0x1016,param_1,1);
       *param_4 = 0xc00000a3;
       bVar6 = false;
       local_60 = 0;
       uStack_58 = 0;
       local_50 = 0;
       if ((*(longlong *)(param_1 + 0xbc) != 0) &&
-         (cVar7 = ExAcquireRundownProtection(param_1 + 0xc0), cVar7 != '\0')) {
+         (cVar8 = ExAcquireRundownProtection(param_1 + 0xc0), cVar8 != '\0')) {
         bVar6 = true;
-        lVar12 = *(longlong *)(param_1 + 0xbc);
-        uVar9 = *(undefined8 *)(lVar12 + 0x40);
-        uVar3 = *(ushort *)(lVar12 + 0x6a);
+        lVar13 = *(longlong *)(param_1 + 0xbc);
+        uVar10 = *(undefined8 *)(lVar13 + 0x40);
+        uVar3 = *(ushort *)(lVar13 + 0x6a);
         if ((uVar3 & 2) == 0) {
-          uVar11 = uVar3 | 2;
-          *(ushort *)(lVar12 + 0x6a) = uVar11;
+          uVar12 = uVar3 | 2;
+          *(ushort *)(lVar13 + 0x6a) = uVar12;
           while ((uVar3 & 1) == 0) {
-            uVar8 = AfdNotifyComputeEvents(lVar12);
-            *(undefined2 *)(lVar12 + 0x66) = *(undefined2 *)(lVar12 + 100);
-            uVar3 = *(ushort *)(lVar12 + 0x68);
-            if (uVar8 == uVar3) {
-              if ((*(byte *)(lVar12 + 99) & 1) != 0) {
-                uVar11 = uVar11 | 4;
+            uVar9 = AfdNotifyComputeEvents(lVar13);
+            *(undefined2 *)(lVar13 + 0x66) = *(undefined2 *)(lVar13 + 100);
+            uVar3 = *(ushort *)(lVar13 + 0x68);
+            if (uVar9 == uVar3) {
+              if ((*(byte *)(lVar13 + 99) & 1) != 0) {
+                uVar12 = uVar12 | 4;
               }
 LAB_6:
-              *(ushort *)(lVar12 + 0x6a) = uVar11 & 0xfffd;
+              *(ushort *)(lVar13 + 0x6a) = uVar12 & 0xfffd;
               goto LAB_7;
             }
-            if ((uVar3 & uVar8) != 0) goto LAB_6;
+            if ((uVar3 & uVar9) != 0) goto LAB_6;
             if (uVar3 == 0) {
-              *(ushort *)(lVar12 + 0x68) = uVar8;
+              *(ushort *)(lVar13 + 0x68) = uVar9;
               KeReleaseInStackQueuedSpinLock(&local_90);
-              ObfReferenceObject(uVar9);
-              uVar15 = uVar15 & 0xffffff00;
-              uVar14 = uVar14 & 0xffffffffffffff00;
+              ObfReferenceObject(uVar10);
+              uVar16 = uVar16 & 0xffffff00;
+              uVar15 = uVar15 & 0xffffffffffffff00;
               IoSetIoCompletionEx3
-                        (*(undefined8 *)(lVar12 + 0x50),*(undefined8 *)(lVar12 + 0x58),0,0,uVar8,
-                         uVar14,lVar12,uVar15,AfdPriorityBoost);
+                        (*(undefined8 *)(lVar13 + 0x50),*(undefined8 *)(lVar13 + 0x58),0,0,uVar9,
+                         uVar15,lVar13,uVar16,AfdPriorityBoost);
               KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
             }
             else {
               KeReleaseInStackQueuedSpinLock(&local_90);
-              cVar7 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar12 + 0x50),lVar12);
-              if (cVar7 == '\0') {
+              cVar8 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar13 + 0x50),lVar13);
+              if (cVar8 == '\0') {
                 KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
-                if (*(short *)(lVar12 + 0x68) != 0) {
-                  *(ushort *)(lVar12 + 0x6a) = *(ushort *)(lVar12 + 0x6a) & 0xfffd;
+                if (*(short *)(lVar13 + 0x68) != 0) {
+                  *(ushort *)(lVar13 + 0x6a) = *(ushort *)(lVar13 + 0x6a) & 0xfffd;
                   goto LAB_7;
                 }
               }
               else {
-                ObfDereferenceObject(uVar9);
+                ObfDereferenceObject(uVar10);
                 KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
-                *(undefined2 *)(lVar12 + 0x68) = 0;
-              }
-            }
-            uVar11 = *(ushort *)(lVar12 + 0x6a);
-            uVar3 = uVar11;
+                *(undefined2 *)(lVar13 + 0x68) = 0;
+              }
+            }
+            uVar12 = *(ushort *)(lVar13 + 0x6a);
+            uVar3 = uVar12;
           }
           param_1[0xbc] = 0;
           param_1[0xbd] = 0;
           param_1[0xbe] = 0;
           param_1[0xbf] = 0;
-          *(ushort *)(lVar12 + 0x6a) = *(ushort *)(lVar12 + 0x6a) & 0xfffd;
+          *(ushort *)(lVar13 + 0x6a) = *(ushort *)(lVar13 + 0x6a) & 0xfffd;
           KeReleaseInStackQueuedSpinLock(&local_90);
           bVar6 = false;
-          AfdNotifyDestroyContext(uVar9,lVar12);
+          AfdNotifyDestroyContext(uVar10,lVar13);
+          if ((Feature_447951161__private_featureState & 0x10) == 0) {
+            uVar15 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+            uVar16 = (uint)uVar15;
+          }
+          else {
+            uVar16 = Feature_447951161__private_featureState & 1;
+          }
+          if (uVar16 != 0) {
+            ExFreePoolWithTag(lVar13,0x4e646641);
+          }
         }
 LAB_7:
         if (!bVar6) {
           KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_90);
         }
         bVar6 = true;
       }
-      uVar9 = KeReleaseInStackQueuedSpinLock(&local_90);
+      uVar10 = KeReleaseInStackQueuedSpinLock(&local_90);
       if (bVar6) {
-        uVar9 = ExReleaseRundownProtection(param_1 + 0xc0);
-      }
-      return CONCAT71((int7)((ulonglong)uVar9 >> 8),1);
+        uVar10 = ExReleaseRundownProtection(param_1 + 0xc0);
+      }
+      return CONCAT71((int7)((ulonglong)uVar10 >> 8),1);
     }
   }
 LAB_4:
-  uVar14 = KeReleaseInStackQueuedSpinLock(&local_90);
-  return uVar14 & 0xffffffffffffff00;
+  uVar15 = KeReleaseInStackQueuedSpinLock(&local_90);
+  return uVar15 & 0xffffffffffffff00;
 }
 

```


## AfdTdiCreateAO

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,sig,address,called|
|ratio|0.92|
|i_ratio|0.68|
|m_ratio|0.98|
|b_ratio|0.97|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdTdiCreateAO|AfdTdiCreateAO|
|fullname|AfdTdiCreateAO|AfdTdiCreateAO|
|refcount|3|3|
|`length`|2774|2709|
|`called`|<details><summary>Expand for full list:<br>AfdFreeTransportInfo<br>AfdGetTransportInfo<br>AfdTdiSetDualInet<br>AfdTdiSetInet4Mapped<br>AfdTdiTlSyncIoControl<br>AfdTdxInitCallback<br>Feature_3261636923__private_IsEnabledDeviceUsageNoInline<br>IN6ADDR_ISUNSPECIFIED<br>IN6_IS_ADDR_V4MAPPED<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExFreePoolWithTag</summary>NTOSKRNL.EXE::FsRtlAllocateExtraCreateParameter<br>NTOSKRNL.EXE::FsRtlAllocateExtraCreateParameterList<br>NTOSKRNL.EXE::FsRtlFreeExtraCreateParameterList<br>NTOSKRNL.EXE::FsRtlInsertExtraCreateParameter<br>NTOSKRNL.EXE::IoCreateFileEx<br>NTOSKRNL.EXE::IoGetRelatedDeviceObject<br>NTOSKRNL.EXE::IoGetTopLevelIrp<br>NTOSKRNL.EXE::IoSetTopLevelIrp<br>NTOSKRNL.EXE::ObOpenObjectByPointer<br>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::RtlAppendUnicodeToString<br>NTOSKRNL.EXE::RtlEqualUnicodeString<br>NTOSKRNL.EXE::RtlInitUnicodeString<br>NTOSKRNL.EXE::RtlPrefixUnicodeString<br>NTOSKRNL.EXE::ZwClose<br>__security_check_cookie<br>memcpy<br>memset</details>|<details><summary>Expand for full list:<br>AfdFreeTransportInfo<br>AfdGetTransportInfo<br>AfdTdiSetDualInet<br>AfdTdiSetInet4Mapped<br>AfdTdiTlSyncIoControl<br>AfdTdxInitCallback<br>IN6ADDR_ISUNSPECIFIED<br>IN6_IS_ADDR_V4MAPPED<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::FsRtlAllocateExtraCreateParameter</summary>NTOSKRNL.EXE::FsRtlAllocateExtraCreateParameterList<br>NTOSKRNL.EXE::FsRtlFreeExtraCreateParameterList<br>NTOSKRNL.EXE::FsRtlInsertExtraCreateParameter<br>NTOSKRNL.EXE::IoCreateFileEx<br>NTOSKRNL.EXE::IoGetRelatedDeviceObject<br>NTOSKRNL.EXE::IoGetTopLevelIrp<br>NTOSKRNL.EXE::IoSetTopLevelIrp<br>NTOSKRNL.EXE::ObOpenObjectByPointer<br>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::RtlAppendUnicodeToString<br>NTOSKRNL.EXE::RtlEqualUnicodeString<br>NTOSKRNL.EXE::RtlInitUnicodeString<br>NTOSKRNL.EXE::RtlPrefixUnicodeString<br>NTOSKRNL.EXE::ZwClose<br>__security_check_cookie<br>memcpy<br>memset</details>|
|calling|AfdBind|AfdBind|
|paramcount|10|10|
|`address`|14002c650|14002b6a0|
|`sig`|ulonglong __fastcall AfdTdiCreateAO(ushort * param_1, undefined8 * param_2, int param_3, undefined8 param_4, int param_5, undefined4 param_6, undefined4 param_7, byte param_8, char param_9, undefined8 * param_10)|ulonglong __fastcall AfdTdiCreateAO(ushort * param_1, undefined8 * param_2, int param_3, undefined8 param_4, int param_5, undefined4 param_6, undefined4 param_7, undefined1 param_8, char param_9, undefined8 * param_10)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdTdiCreateAO Called Diff


```diff
--- AfdTdiCreateAO called
+++ AfdTdiCreateAO called
@@ -7 +6,0 @@
-Feature_3261636923__private_IsEnabledDeviceUsageNoInline
```


### AfdTdiCreateAO Diff


```diff
--- AfdTdiCreateAO
+++ AfdTdiCreateAO
@@ -1,451 +1,441 @@
 
 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 
 ulonglong AfdTdiCreateAO(ushort *param_1,undefined8 *param_2,int param_3,undefined8 param_4,
-                        int param_5,undefined4 param_6,undefined4 param_7,byte param_8,char param_9,
-                        undefined8 *param_10)
+                        int param_5,undefined4 param_6,undefined4 param_7,undefined1 param_8,
+                        char param_9,undefined8 *param_10)
 
 {
   longlong *plVar1;
   int *piVar2;
   int iVar3;
   bool bVar4;
   char cVar5;
   uint uVar6;
   undefined8 uVar7;
   ulonglong uVar8;
   ulonglong uVar9;
   undefined4 *puVar10;
   ulonglong uVar11;
   wchar_t *pwVar12;
   longlong lVar13;
   ulonglong uVar14;
   ulonglong uVar15;
   undefined1 auStack_4a8 [32];
   ulonglong *local_488;
   undefined8 **local_480;
   undefined8 *local_478;
   undefined4 local_470;
   undefined4 local_468;
   undefined4 *local_460;
   uint local_458;
   undefined4 local_450;
   undefined8 local_448;
   undefined4 local_440;
   ulonglong local_438;
   ulonglong local_428;
   undefined8 *local_420;
   undefined8 local_418;
   longlong *local_410;
   longlong local_408;
   undefined8 local_400;
   undefined2 *puStack_3f8;
-  undefined8 *local_3f0;
-  ushort *local_3e0;
-  undefined8 local_3d8;
-  undefined8 uStack_3d0;
-  undefined8 local_3c8;
-  undefined8 uStack_3c0;
-  ulonglong local_3b8;
-  undefined4 *local_3b0;
-  undefined8 local_3a8;
+  ushort *local_3e8;
+  undefined8 local_3e0;
+  undefined8 uStack_3d8;
+  undefined8 local_3d0;
+  undefined8 uStack_3c8;
+  ulonglong local_3c0;
+  undefined4 *local_3b8;
+  undefined8 local_3b0;
+  undefined8 *local_3a8;
   undefined8 local_3a0;
   undefined8 uStack_398;
   longlong local_390;
   undefined8 uStack_388;
   undefined8 local_380;
   ulonglong local_378;
   undefined8 local_370;
   undefined8 uStack_368;
   undefined8 local_360;
   undefined8 uStack_358;
   undefined8 local_350;
   undefined8 uStack_348;
   longlong local_340;
   undefined8 local_338;
   undefined8 uStack_330;
   longlong local_328 [2];
   undefined4 local_318;
   undefined4 local_314;
   undefined4 local_310;
   undefined4 *local_308;
   undefined8 local_300;
   undefined4 local_2d8;
   undefined4 local_2d4;
   undefined4 local_2d0;
   undefined4 local_2cc;
   undefined8 local_2c8;
   undefined2 uStack_2c0;
   undefined4 uStack_2be;
   undefined2 uStack_2ba;
   undefined4 uStack_2b8;
   undefined2 uStack_2b4;
   undefined8 local_2b0;
   undefined8 uStack_2a8;
   undefined8 local_2a0;
   undefined4 local_298;
   undefined2 local_290;
   undefined2 uStack_28e;
   undefined2 uStack_28c;
   undefined2 uStack_28a;
   short sStack_288;
   undefined2 uStack_286;
   undefined2 uStack_284;
   undefined2 uStack_282;
   undefined8 local_280;
   undefined4 local_278;
   undefined4 local_268 [124];
   undefined2 local_78 [20];
   undefined2 local_50;
   ulonglong local_48;
   
   local_48 = __security_cookie ^ (ulonglong)auStack_4a8;
   local_428 = CONCAT44(local_428._4_4_,param_3);
-  local_3f0 = param_10;
+  local_3a8 = param_10;
   local_3a0 = 0;
   uStack_398 = 0;
   local_390 = 0;
   uStack_388 = 0;
   local_380 = 0;
   local_378 = local_378 & 0xffffffff00000000;
   local_338 = 0;
   uStack_330 = 0;
-  local_3e0 = param_1;
-  local_3a8 = param_4;
+  local_3e8 = param_1;
+  local_3b0 = param_4;
   memset(local_268,0,0x1f0);
   local_2c8 = 0;
   uStack_2c0 = 0;
   uStack_2be = 0;
   uStack_2ba = 0;
   uStack_2b8 = 0;
   uStack_2b4 = 0;
   uVar11 = 0;
   local_408 = 0;
   uVar14 = 0;
   local_418 = 0;
   local_420 = (undefined8 *)0x0;
-  local_3d8 = 0;
-  uStack_3d0 = 0;
-  local_3c8 = 0;
-  uStack_3c0 = 0;
-  local_3b8 = local_3b8 & 0xffffffffffff0000;
+  local_3e0 = 0;
+  uStack_3d8 = 0;
+  local_3d0 = 0;
+  uStack_3c8 = 0;
+  local_3c0 = local_3c0 & 0xffffffffffff0000;
   uVar15 = uVar14;
   if (param_9 == '\0') {
     if ((*(uint *)(param_1 + 4) >> 0x14 & 1) != 0) {
       local_370 = 0;
       uStack_368 = 0;
       local_360 = 0;
       uStack_358 = 0;
       local_350 = 0;
       uStack_348 = 0;
       local_400 = 0;
       puStack_3f8 = (undefined2 *)0x0;
       bVar4 = true;
       RtlInitUnicodeString(&local_370,L"\\Device\\Tcp6");
       RtlInitUnicodeString(&local_360,L"\\Device\\Udp6");
       RtlInitUnicodeString(&local_350,L"\\Device\\RawIp6");
       cVar5 = RtlEqualUnicodeString(&local_370,*(longlong *)(param_1 + 0x84) + 0x18,1);
       if (cVar5 == '\0') {
         cVar5 = RtlEqualUnicodeString(&local_360,*(longlong *)(param_1 + 0x84) + 0x18,1);
         if (cVar5 != '\0') {
           pwVar12 = L"\\Device\\Udp";
           goto LAB_0;
         }
         cVar5 = RtlPrefixUnicodeString(&local_350,*(longlong *)(param_1 + 0x84) + 0x18,1);
         if (cVar5 == '\0') {
           bVar4 = false;
         }
         else {
           lVar13 = *(longlong *)(*(longlong *)(param_1 + 0x84) + 0x20);
           local_78[0] = 0;
           puStack_3f8 = local_78;
           local_400 = CONCAT44(local_400._4_4_,0x2a0000);
           RtlAppendUnicodeToString(&local_400,L"\\Device\\RawIp");
           RtlAppendUnicodeToString(&local_400,lVar13 + 0x1c);
           local_50 = 0;
         }
       }
       else {
         pwVar12 = L"\\Device\\Tcp";
 LAB_0:
         RtlInitUnicodeString(&local_400,pwVar12);
       }
       if (bVar4) {
         if ((*(short *)((longlong)param_2 + 6) != 0x17) ||
            (*(ushort *)((longlong)param_2 + 4) < 0x1a)) {
           uVar8 = 0xc0000141;
           goto LAB_1;
         }
         local_2b0 = *(undefined8 *)((longlong)param_2 + 6);
         uStack_2a8 = *(undefined8 *)((longlong)param_2 + 0xe);
         local_2a0 = *(undefined8 *)((longlong)param_2 + 0x16);
         local_298 = *(undefined4 *)((longlong)param_2 + 0x1e);
         uVar7 = IN6_IS_ADDR_V4MAPPED((short *)&uStack_2a8);
         if (((char)uVar7 != '\0') ||
            (uVar8 = IN6ADDR_ISUNSPECIFIED((longlong)&local_2b0), (char)uVar8 != '\0')) {
           local_410 = (longlong *)0x0;
           uVar9 = AfdGetTransportInfo((wchar_t *)&local_400,(longlong *)&local_410);
           plVar1 = local_410;
           uVar8 = uVar9 & 0xffffffff;
           if ((int)uVar9 < 0) {
             uVar15 = uVar11;
             if (local_410 != (longlong *)0x0) {
               LOCK();
               plVar1 = local_410 + 2;
               lVar13 = *plVar1;
               *(int *)plVar1 = (int)*plVar1 + -1;
               UNLOCK();
               uVar15 = uVar14;
               if ((int)lVar13 == 1) {
                 AfdFreeTransportInfo(local_410);
               }
             }
             goto LAB_1;
           }
           if (((int)local_410[7] != *(int *)(*(longlong *)(param_1 + 0x84) + 0x38)) ||
              ((param_1[3] & 1) != 0)) {
             LOCK();
             plVar1 = local_410 + 2;
             lVar13 = *plVar1;
             *(int *)plVar1 = (int)*plVar1 + -1;
             UNLOCK();
             if ((int)lVar13 == 1) {
               AfdFreeTransportInfo(local_410);
             }
             uVar8 = 0xc00000bb;
             goto LAB_1;
           }
           local_340 = ExAllocatePool2(0x61,0x40,0x56646641);
           *(longlong *)(param_1 + 0x88) = local_340;
           *(longlong **)(local_340 + 0x18) = plVar1;
           AfdTdiSetDualInet((longlong)param_1,1);
         }
       }
       param_3 = (int)local_428;
     }
     lVar13 = *(longlong *)(param_1 + 0x84);
   }
   else {
     local_290 = *(undefined2 *)((longlong)param_2 + 6);
     uStack_2c0 = *(undefined2 *)(param_2 + 1);
     uStack_28c = *(undefined2 *)((longlong)param_2 + 10);
     uStack_28a = *(undefined2 *)((longlong)param_2 + 0xc);
     sStack_288 = *(short *)((longlong)param_2 + 0xe);
     uStack_286 = *(undefined2 *)(param_2 + 2);
     uStack_284 = *(undefined2 *)((longlong)param_2 + 0x12);
     uStack_282 = *(undefined2 *)((longlong)param_2 + 0x14);
     local_280 = *(undefined8 *)((longlong)param_2 + 0x16);
     local_278 = *(undefined4 *)((longlong)param_2 + 0x1e);
     local_2c8 = 0x2000e00000001;
     uStack_28e = uStack_2c0;
     uVar7 = IN6_IS_ADDR_V4MAPPED(&sStack_288);
     if ((char)uVar7 == '\0') {
       uStack_2be = 0;
     }
     else {
       uStack_2be = (undefined4)((ulonglong)local_280 >> 0x20);
     }
     uStack_2ba = 0;
     uStack_2b8 = 0;
     uStack_2b4 = 0;
     param_2 = &local_2c8;
     param_3 = 0x16;
     local_428 = CONCAT44(local_428._4_4_,0x16);
     lVar13 = *(longlong *)(*(longlong *)(param_1 + 0x88) + 0x18);
   }
   if ((*(uint *)(param_1 + 4) >> 9 & 1) == 0) {
 LAB_2:
     uVar6 = param_3 + 0x1c;
     if (0x1b < uVar6) {
       if (uVar6 < 0x1f1) {
         puVar10 = local_268;
       }
       else {
         puVar10 = (undefined4 *)ExAllocatePool2(0x121,uVar6,0x41646641);
       }
       *puVar10 = 0;
       *(undefined2 *)(puVar10 + 1) = 0x1000;
       *(short *)((longlong)puVar10 + 6) = (short)local_428;
-      local_3b0 = puVar10;
+      local_3b8 = puVar10;
       memcpy(puVar10 + 2,"TransportAddress",0x11);
       memcpy((void *)((longlong)puVar10 + 0x19),param_2,local_428 & 0xffffffff);
       local_3a0 = CONCAT44(local_3a0._4_4_,0x30);
       uStack_398 = 0;
       uStack_388 = CONCAT44(uStack_388._4_4_,0x240);
       local_390 = lVar13 + 0x18;
-      local_380 = local_3a8;
+      local_380 = local_3b0;
       local_378 = 0;
       if (local_420 != (undefined8 *)0x0) {
         uVar11 = IoGetTopLevelIrp();
         IoSetTopLevelIrp();
       }
-      local_438 = -(ulonglong)(local_420 != (undefined8 *)0x0) & (ulonglong)&local_3d8;
+      local_438 = -(ulonglong)(local_420 != (undefined8 *)0x0) & (ulonglong)&local_3e0;
       local_440 = param_7;
       local_448 = 0;
       local_450 = 0;
       local_468 = 0;
       local_470 = 2;
       local_478 = (undefined8 *)CONCAT44(local_478._4_4_,param_6);
       local_480 = (undefined8 **)((ulonglong)local_480 & 0xffffffff00000000);
       local_488 = (ulonglong *)0x0;
       local_460 = puVar10;
       local_458 = uVar6;
       uVar6 = IoCreateFileEx(&local_408,0x2000000,&local_3a0,&local_338);
       uVar8 = (ulonglong)uVar6;
       if (local_420 != (undefined8 *)0x0) {
         IoSetTopLevelIrp(uVar11);
         FsRtlFreeExtraCreateParameterList(local_418);
       }
       if (puVar10 != local_268) {
         ExFreePoolWithTag(puVar10,0x41646641);
       }
       if ((int)uVar6 < 0) {
         if (((uVar6 == 0xc0000043) || (uVar6 == 0xc000020a)) && (param_5 == 1)) {
           uVar8 = 0xc0000022;
         }
       }
       else {
         local_428 = 0;
         local_480 = (undefined8 **)0x0;
         local_488 = &local_428;
         uVar6 = ObReferenceObjectByHandle(local_408,0,0,0);
         uVar15 = local_428;
         uVar8 = (ulonglong)uVar6;
         if (-1 < (int)uVar6) {
-          if (local_3f0 != (undefined8 *)0x0) {
+          if (local_3a8 != (undefined8 *)0x0) {
             if ((*(uint *)(param_1 + 4) >> 9 & 1) == 0) {
-              if ((Feature_3261636923__private_featureState & 0x10) == 0) {
-                uVar11 = Feature_3261636923__private_IsEnabledDeviceUsageNoInline();
-                uVar6 = (uint)uVar11;
-              }
-              else {
-                uVar6 = Feature_3261636923__private_featureState & 1;
-              }
-              local_478 = local_3f0;
-              if (uVar6 == 0) {
-                param_8 = -((*(uint *)(param_1 + 8) & 0x10000) != 0) & param_8;
-              }
+              local_478 = local_3a8;
               local_480 = (undefined8 **)CONCAT71(local_480._1_7_,param_8);
               local_488 = *(ulonglong **)IoFileObjectType_exref;
               uVar6 = ObOpenObjectByPointer(local_428,0x40,0,0x2000000);
               uVar8 = (ulonglong)uVar6;
               if ((int)uVar6 < 0) goto LAB_1;
             }
             else {
-              *local_3f0 = 0;
+              *local_3a8 = 0;
             }
           }
           if (param_9 != '\0') {
             **(longlong **)(param_1 + 0x88) = local_408;
             *(ulonglong *)(*(longlong *)(param_1 + 0x88) + 8) = uVar15;
             uVar7 = IoGetRelatedDeviceObject(uVar15);
             *(undefined8 *)(*(longlong *)(param_1 + 0x88) + 0x10) = uVar7;
             return uVar8;
           }
           *(longlong *)(param_1 + 0x80) = local_408;
           *(ulonglong *)(param_1 + 0xc) = uVar15;
           uVar7 = IoGetRelatedDeviceObject(uVar15);
           *(undefined8 *)(param_1 + 0x14) = uVar7;
           return uVar8;
         }
       }
       goto LAB_1;
     }
     uVar8 = 0xc0000141;
     if (local_420 == (undefined8 *)0x0) goto LAB_1;
   }
   else {
     local_2d8 = 0xd37479c1;
     local_2d4 = 0x4502a067;
     local_2d0 = 0xe352e8c;
     local_2cc = 0xd59134f5;
     if (AfdTdxCallbackObject == 0) {
       uVar14 = AfdTdxInitCallback();
       uVar8 = uVar14 & 0xffffffff;
       if ((int)uVar14 < 0) goto LAB_1;
     }
     uVar6 = FsRtlAllocateExtraCreateParameterList(0,&local_418);
     uVar8 = (ulonglong)uVar6;
     if ((int)uVar6 < 0) goto LAB_1;
     local_480 = &local_420;
     local_488 = (ulonglong *)CONCAT44(local_488._4_4_,0x41646641);
     uVar6 = FsRtlAllocateExtraCreateParameter(&local_2d8,0x10,0);
     uVar8 = (ulonglong)uVar6;
     if (-1 < (int)uVar6) {
       FsRtlInsertExtraCreateParameter(local_418);
       *local_420 = param_1;
       local_420[1] = 0;
       if (param_9 == '\0') {
         if (*(longlong *)(param_1 + 0xf4) == 0) {
           uVar8 = 0xc0000184;
           goto LAB_3;
         }
         if ((param_5 - 1U & 0xfffffffd) == 0) {
           memset(local_328,0,0x50);
           local_318 = 1;
           local_314 = 0xffff;
           local_310 = 4;
           if (param_5 == 3) {
             local_310 = 0xfffffffb;
           }
           local_308 = &AfdTLSockOptEnable;
           local_300 = 4;
           uVar6 = AfdTdiTlSyncIoControl(param_1,local_328);
           uVar8 = (ulonglong)uVar6;
           if ((int)uVar6 < 0) goto LAB_3;
         }
       }
-      local_3c8 = 0;
-      uStack_3c0 = 0;
-      local_3d8 = 0x28;
-      local_3b8 = 1;
-      uStack_3d0 = local_418;
+      local_3d0 = 0;
+      uStack_3c8 = 0;
+      local_3e0 = 0x28;
+      local_3c0 = 1;
+      uStack_3d8 = local_418;
       goto LAB_2;
     }
   }
 LAB_3:
   FsRtlFreeExtraCreateParameterList(local_418);
 LAB_1:
   if (uVar15 != 0) {
     ObfDereferenceObject(uVar15);
   }
   if (local_408 != 0) {
     ZwClose();
   }
   if ((*(uint *)(param_1 + 4) >> 0x15 & 1) == 0) {
     if ((*(uint *)(param_1 + 4) >> 0x16 & 1) != 0) {
       LOCK();
       piVar2 = (int *)(*(longlong *)(*(longlong *)(param_1 + 0x88) + 0x18) + 0x10);
       iVar3 = *piVar2;
       *piVar2 = *piVar2 + -1;
       UNLOCK();
       if (iVar3 == 1) {
         AfdFreeTransportInfo(*(longlong **)(*(longlong *)(param_1 + 0x88) + 0x18));
       }
       ExFreePoolWithTag(*(undefined8 *)(param_1 + 0x88));
       param_1[0x88] = 0;
       param_1[0x89] = 0;
       param_1[0x8a] = 0;
       param_1[0x8b] = 0;
       AfdTdiSetDualInet((longlong)param_1,0);
     }
   }
   else {
     LOCK();
     piVar2 = (int *)(*(longlong *)(param_1 + 0x84) + 0x10);
     iVar3 = *piVar2;
     *piVar2 = *piVar2 + -1;
     UNLOCK();
     if (iVar3 == 1) {
       AfdFreeTransportInfo(*(longlong **)(param_1 + 0x84));
     }
     *(undefined8 *)(param_1 + 0x84) = *(undefined8 *)(param_1 + 0x88);
     param_1[0x88] = 0;
     param_1[0x89] = 0;
     param_1[0x8a] = 0;
     param_1[0x8b] = 0;
     AfdTdiSetInet4Mapped((longlong)param_1);
   }
   return uVar8;
 }
 

```


## AfdNotifyDestroyContext

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.67|
|i_ratio|0.6|
|m_ratio|0.83|
|b_ratio|0.73|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdNotifyDestroyContext|AfdNotifyDestroyContext|
|fullname|AfdNotifyDestroyContext|AfdNotifyDestroyContext|
|refcount|26|26|
|`length`|105|140|
|`called`|NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::ObfDereferenceObject|Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::ObfDereferenceObject|
|calling|<details><summary>Expand for full list:<br>AfdBCommonChainedReceiveEventHandler<br>AfdBReceive<br>AfdCleanupCore<br>AfdCompleteBufferedSendsUnlock<br>AfdFastConnectionReceive<br>AfdFastConnectionSend<br>AfdFastDatagramReceive<br>AfdFastDatagramSend<br>AfdNotifyPostEvents<br>AfdNotifyProcessRegistration<br>AfdReceiveDatagram</summary></details>|<details><summary>Expand for full list:<br>AfdBCommonChainedReceiveEventHandler<br>AfdBReceive<br>AfdCleanupCore<br>AfdCompleteBufferedSendsUnlock<br>AfdFastConnectionReceive<br>AfdFastConnectionSend<br>AfdFastDatagramReceive<br>AfdFastDatagramSend<br>AfdNotifyPostEvents<br>AfdNotifyProcessRegistration<br>AfdReceiveDatagram</summary></details>|
|paramcount|2|2|
|`address`|14005349c|140053adc|
|sig|undefined __fastcall AfdNotifyDestroyContext(undefined8 param_1, longlong param_2)|undefined __fastcall AfdNotifyDestroyContext(undefined8 param_1, longlong param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdNotifyDestroyContext Called Diff


```diff
--- AfdNotifyDestroyContext called
+++ AfdNotifyDestroyContext called
@@ -0,0 +1 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
```


### AfdNotifyDestroyContext Diff


```diff
--- AfdNotifyDestroyContext
+++ AfdNotifyDestroyContext
@@ -1,17 +1,28 @@
 
 void AfdNotifyDestroyContext(undefined8 param_1,longlong param_2)
 
 {
   char cVar1;
+  uint uVar2;
+  ulonglong uVar3;
   
   if (*(short *)(param_2 + 0x68) != 0) {
     cVar1 = IoCancelMiniCompletionPacket(*(undefined8 *)(param_2 + 0x50));
     if (cVar1 != '\0') {
       ObfDereferenceObject(param_1);
     }
   }
   ObfDereferenceObject(*(undefined8 *)(param_2 + 0x50));
-  ExFreePoolWithTag(param_2,0x4e646641);
+  if ((Feature_447951161__private_featureState & 0x10) == 0) {
+    uVar3 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+    uVar2 = (uint)uVar3;
+  }
+  else {
+    uVar2 = Feature_447951161__private_featureState & 1;
+  }
+  if (uVar2 == 0) {
+    ExFreePoolWithTag(param_2,0x4e646641);
+  }
   return;
 }
 

```


## AfdCleanupCore

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.67|
|i_ratio|0.62|
|m_ratio|1.0|
|b_ratio|0.99|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdCleanupCore|AfdCleanupCore|
|fullname|AfdCleanupCore|AfdCleanupCore|
|refcount|2|2|
|`length`|4288|4316|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACEABORT<br>AFDETW_TRACESTATUS<br>AfdBeginAbort<br>AfdBeginDisconnect<br>AfdCleanupConnectionTimerWheelEntry<br>AfdCleanupReceiveDatagramIrp<br>AfdCleanupSuperAccept<br>AfdCloseConnection<br>AfdCloseTransportEndpoint<br>AfdDeleteConnectedReference<br>AfdDisconnectReceive</summary>AfdFreeQueuedConnections<br>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdIssueDeviceControl<br>AfdNotifyDestroyContext<br>AfdRioFlushReceiveQueue<br>AfdRioFlushSendQueue<br>AfdSanHelperCleanup<br>AfdSanRestartRequestProcessing<br>AfdUnbind<br>NETIO.SYS::NsiDeregisterChangeNotification<br>NTOSKRNL.EXE::EtwWrite<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExWaitForRundownProtectionRelease<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::IoGetCurrentProcess<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLockAtDpcLevel<br>NTOSKRNL.EXE::KeEnterCriticalRegion<br>NTOSKRNL.EXE::KeLeaveCriticalRegion<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLockFromDpcLevel<br>NTOSKRNL.EXE::MmUnlockPages<br>NTOSKRNL.EXE::PsGetProcessExitTime<br>WPP_SF_I<br>WPP_SF_lq<br>WPP_SF_lsq<br>WPP_SF_qiii<br>__security_check_cookie<br>_guard_dispatch_icall</details>|<details><summary>Expand for full list:<br>AFDETW_TRACEABORT<br>AFDETW_TRACESTATUS<br>AfdBeginAbort<br>AfdBeginDisconnect<br>AfdCleanupConnectionTimerWheelEntry<br>AfdCleanupReceiveDatagramIrp<br>AfdCleanupSuperAccept<br>AfdCloseConnection<br>AfdCloseTransportEndpoint<br>AfdDeleteConnectedReference<br>AfdDisconnectReceive</summary>AfdFreeQueuedConnections<br>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdIssueDeviceControl<br>AfdNotifyDestroyContext<br>AfdRioFlushReceiveQueue<br>AfdRioFlushSendQueue<br>AfdSanHelperCleanup<br>AfdSanRestartRequestProcessing<br>AfdUnbind<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NETIO.SYS::NsiDeregisterChangeNotification<br>NTOSKRNL.EXE::EtwWrite<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExWaitForRundownProtectionRelease<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::IoGetCurrentProcess<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLockAtDpcLevel<br>NTOSKRNL.EXE::KeEnterCriticalRegion<br>NTOSKRNL.EXE::KeLeaveCriticalRegion<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLockFromDpcLevel<br>NTOSKRNL.EXE::MmUnlockPages<br>NTOSKRNL.EXE::PsGetProcessExitTime<br>WPP_SF_I<br>WPP_SF_lq<br>WPP_SF_lsq<br>WPP_SF_qiii<br>__security_check_cookie<br>_guard_dispatch_icall</details>|
|calling|AfdDispatch|AfdDispatch|
|paramcount|2|2|
|`address`|140013870|1400135a0|
|sig|undefined8 __fastcall AfdCleanupCore(undefined8 param_1, ushort * param_2)|undefined8 __fastcall AfdCleanupCore(undefined8 param_1, ushort * param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdCleanupCore Called Diff


```diff
--- AfdCleanupCore called
+++ AfdCleanupCore called
@@ -21,0 +22 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
```


### AfdCleanupCore Diff


```diff
--- AfdCleanupCore
+++ AfdCleanupCore
@@ -1,810 +1,821 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 /* WARNING: Type propagation algorithm not settling */
 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
 
 undefined8 AfdCleanupCore(undefined8 param_1,ushort *param_2)
 
 {
   ushort *puVar1;
   ushort *puVar2;
   longlong *plVar3;
   undefined1 uVar4;
   ushort uVar5;
   int iVar6;
   longlong lVar7;
   ushort *puVar8;
   undefined2 *puVar9;
   longlong *plVar10;
   code *pcVar11;
   bool bVar12;
   int iVar13;
-  longlong lVar14;
-  undefined8 uVar15;
-  undefined8 *puVar16;
-  undefined4 uVar17;
-  undefined *puVar18;
-  char cVar19;
-  undefined1 *puVar20;
-  char *pcVar21;
-  uint uVar22;
-  uint uVar23;
-  bool bVar24;
+  uint uVar14;
+  longlong lVar15;
+  undefined8 uVar16;
+  undefined8 *puVar17;
+  ulonglong uVar18;
+  undefined4 uVar19;
+  undefined *puVar20;
+  char cVar21;
+  undefined1 *puVar22;
+  char *pcVar23;
+  uint uVar24;
+  bool bVar25;
   undefined8 uStack_270;
   undefined1 auStack_268 [8];
   undefined1 auStack_260 [24];
   longlong **local_248;
   undefined1 local_240 [16];
   undefined8 local_230;
   undefined8 uStack_228;
   undefined8 local_220;
   uint local_218 [8];
   undefined4 local_1f8 [2];
   longlong local_1f0 [29];
   code *local_108;
   undefined8 local_100;
   undefined4 local_f8;
   undefined4 local_f4;
   undefined4 local_f0;
   undefined8 local_ec;
   undefined8 local_e4;
   undefined8 local_dc;
   undefined8 local_d4;
   undefined8 local_cc;
   undefined4 local_c4;
   undefined4 uStack_c0;
   undefined4 local_bc;
   undefined8 local_b8;
   ulonglong uStack_b0;
   longlong local_a8 [2];
   longlong *local_98;
   undefined8 local_90;
   uint *local_88;
   undefined8 local_80;
   uint *local_78;
   undefined8 local_70;
   uint *local_68;
   undefined8 local_60;
   undefined4 *local_58;
   undefined8 local_50;
   ulonglong local_48;
   
-  puVar20 = auStack_268;
+  puVar22 = auStack_268;
   local_48 = __security_cookie ^ (ulonglong)auStack_268;
-  uVar23 = 1;
+  uVar14 = 1;
   local_230 = 0;
   uStack_228 = 0;
   local_220 = 0;
   local_218[0] = 1;
   local_b8 = param_1;
-  lVar14 = PsGetProcessExitTime();
+  lVar15 = PsGetProcessExitTime();
   KeEnterCriticalRegion();
   ExWaitForRundownProtectionRelease(param_2 + 0xc0);
   KeLeaveCriticalRegion();
   KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,&local_230);
   AfdIndicateEventSelectEvent((short *)param_2,0x20,0);
-  uVar15 = AfdIndicatePollEvent((short *)param_2,0x20,0,&local_230);
-  if ((char)uVar15 != '\0') {
+  uVar16 = AfdIndicatePollEvent((short *)param_2,0x20,0,&local_230);
+  if ((char)uVar16 != '\0') {
     KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,&local_230);
   }
   lVar7 = *(longlong *)(param_2 + 0x28);
   *(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x800;
-  bVar24 = false;
+  bVar25 = false;
   if (lVar7 != 0) {
-    uVar22 = 0xc0000241;
+    uVar24 = 0xc0000241;
     if (*param_2 != 0xafd2) {
-      uVar22 = 0xc0000120;
+      uVar24 = 0xc0000120;
     }
     local_1f8[0] = (*(undefined4 **)(lVar7 + 0x38))[1];
     local_218[6] = **(undefined4 **)(lVar7 + 0x38);
     local_218[4] = (*(undefined4 **)(lVar7 + 0x80))[1];
     local_218[2] = **(undefined4 **)(lVar7 + 0x80);
     local_1f0[0] = lVar7;
     if (g_AfdEtwTraceEnable != 0) {
       local_98 = local_1f0;
       local_88 = local_218 + 2;
       local_a8[1] = 0;
       local_78 = local_218 + 4;
       local_68 = local_218 + 6;
       local_90 = 8;
       local_58 = local_1f8;
       local_248 = &local_98;
       local_80 = 4;
       local_70 = 4;
       local_60 = 4;
       local_50 = 4;
       local_a8[0] = lVar7;
       EtwWrite(g_AfdEtwHandle,&AFD_EVENT_CLOSE_RQ,local_a8);
     }
     if (-1 < *(int *)(lVar7 + 0x10)) {
       *(undefined4 *)(lVar7 + 0x10) = 0xc0000128;
     }
-    AfdRioFlushReceiveQueue((short *)param_2,uVar22);
-    AfdRioFlushSendQueue((short *)param_2,uVar22);
+    AfdRioFlushReceiveQueue((short *)param_2,uVar24);
+    AfdRioFlushSendQueue((short *)param_2,uVar24);
     *(undefined8 *)(lVar7 + 0x38) = 0;
     *(undefined8 *)(lVar7 + 0x80) = 0;
     MmUnlockPages(*(undefined8 *)(lVar7 + 0x30));
     IoFreeMdl(*(undefined8 *)(lVar7 + 0x30));
     *(undefined8 *)(lVar7 + 0x30) = 0;
     MmUnlockPages(*(undefined8 *)(lVar7 + 0x78));
     IoFreeMdl(*(undefined8 *)(lVar7 + 0x78));
     *(undefined8 *)(lVar7 + 0x78) = 0;
   }
-  puVar18 = (undefined *)0xafd2;
+  puVar20 = (undefined *)0xafd2;
   if ((*(uint *)(param_2 + 4) >> 8 & 1) != 0) {
-    uVar23 = (uint)((*(uint *)(param_2 + 4) & 0x1000) == 0);
-    local_218[0] = uVar23;
+    uVar14 = (uint)((*(uint *)(param_2 + 4) & 0x1000) == 0);
+    local_218[0] = uVar14;
   }
   uVar5 = *param_2;
   if (uVar5 == 0xafd1) {
     KeReleaseInStackQueuedSpinLock(&local_230);
-    puVar20 = auStack_268;
+    puVar22 = auStack_268;
     if ((byte)((char)param_2[1] - 3U) < 2) {
       param_2[0x48] = 0;
       param_2[0x49] = 0;
       param_2[0x4a] = 0;
       param_2[0x4b] = 0;
       puVar1 = param_2 + 0x30;
       local_1f0[1] = 0;
       local_1f0[2] = 0;
       local_1f0[3] = 0;
       do {
         KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,local_1f0 + 1);
         do {
           while( true ) {
             puVar8 = *(ushort **)puVar1;
             if (puVar8 == puVar1) {
               KeReleaseInStackQueuedSpinLock(local_1f0 + 1);
               puVar1 = param_2 + 0x38;
               local_1f0[4] = 0;
               local_1f0[5] = 0;
               local_1f0[6] = 0;
               goto LAB_0;
             }
-            puVar20 = auStack_268;
+            puVar22 = auStack_268;
             if ((*(ushort **)(puVar8 + 4) != puVar1) ||
-               (lVar14 = *(longlong *)puVar8, puVar20 = auStack_268,
-               *(ushort **)(lVar14 + 8) != puVar8)) goto LAB_1;
-            *(longlong *)puVar1 = lVar14;
-            *(ushort **)(lVar14 + 8) = puVar1;
+               (lVar15 = *(longlong *)puVar8, puVar22 = auStack_268,
+               *(ushort **)(lVar15 + 8) != puVar8)) goto LAB_1;
+            *(longlong *)puVar1 = lVar15;
+            *(ushort **)(lVar15 + 8) = puVar1;
             LOCK();
             puVar2 = puVar8 + -0x20;
             puVar2[0] = 0;
             puVar2[1] = 0;
             puVar2[2] = 0;
             puVar2[3] = 0;
             UNLOCK();
             if (*(longlong *)puVar2 != 0) break;
             puVar8[0] = 0;
             puVar8[1] = 0;
             puVar8[2] = 0;
             puVar8[3] = 0;
           }
-          uVar15 = AfdCleanupReceiveDatagramIrp((longlong)(puVar8 + -0x54));
-        } while ((char)uVar15 == '\0');
+          uVar16 = AfdCleanupReceiveDatagramIrp((longlong)(puVar8 + -0x54));
+        } while ((char)uVar16 == '\0');
         KeReleaseInStackQueuedSpinLock(local_1f0 + 1);
         uVar4 = AfdPriorityBoost;
         puVar8[-0x3c] = 0x120;
         puVar8[-0x3b] = 0xc000;
         puVar8[-0x38] = 0;
         puVar8[-0x37] = 0;
         puVar8[-0x36] = 0;
         puVar8[-0x35] = 0;
         IofCompleteRequest(puVar8 + -0x54,uVar4);
       } while( true );
     }
   }
   else if (uVar5 == 0x1afd) {
     if (*(ushort **)(param_2 + 0x40) == param_2 + 0x40) {
       KeReleaseInStackQueuedSpinLock();
-      puVar20 = auStack_268;
+      puVar22 = auStack_268;
     }
     else {
       KeReleaseInStackQueuedSpinLock(&local_230);
       AfdSanRestartRequestProcessing((short *)param_2,-0x3ffffee0);
-      puVar20 = auStack_268;
+      puVar22 = auStack_268;
     }
   }
   else if (uVar5 == 0xafd) {
     KeReleaseInStackQueuedSpinLock(&local_230);
-    lVar14 = IoGetCurrentProcess();
-    puVar20 = auStack_268;
-    if (*(longlong *)(param_2 + 0x18) == lVar14) {
+    lVar15 = IoGetCurrentProcess();
+    puVar22 = auStack_268;
+    if (*(longlong *)(param_2 + 0x18) == lVar15) {
       AfdSanHelperCleanup((longlong)param_2);
-      puVar20 = auStack_268;
+      puVar22 = auStack_268;
     }
   }
   else {
     if (((uVar5 & 0xafd2) == 0xafd2) &&
        (puVar9 = *(undefined2 **)(param_2 + 0x60), puVar9 != (undefined2 *)0x0)) {
       LOCK();
       plVar3 = (longlong *)(puVar9 + 0x18);
       lVar7 = *plVar3;
       *plVar3 = *plVar3 + 1;
       UNLOCK();
-      puVar20 = auStack_268;
+      puVar22 = auStack_268;
       if (lVar7 + 1 < 2) {
         pcVar11 = (code *)swi(0x29);
         (*pcVar11)(0xe);
-        puVar20 = auStack_260;
-      }
-      *(undefined8 *)(puVar20 + -8) = 0x140013d6d;
+        puVar22 = auStack_260;
+      }
+      *(undefined8 *)(puVar22 + -8) = 0x140013a9d;
       AfdCleanupConnectionTimerWheelEntry(puVar9);
       if ((((((char)param_2[1] - 3U & 0xfa) == 0) && ((char)param_2[1] != '\b')) &&
           ((*(uint *)(puVar9 + 2) >> 0xc & 1) != 0)) &&
          (((param_2[3] & 1) == 0 && ((param_2[5] & 4) == 0)))) {
         if ((param_2[5] & 1) != 0) {
           if ((*(uint *)(puVar9 + 2) & 1) == 0) {
             if ((puVar9[0x30] == 0) && (puVar9[0x31] == 0)) goto LAB_2;
           }
           else {
             if ((*(longlong *)(puVar9 + 0x24) + *(longlong *)(puVar9 + 0x20) <
                  *(longlong *)(puVar9 + 0x1c)) ||
-               (bVar12 = bVar24, *(char *)((longlong)puVar9 + 0x69) != '\0')) {
+               (bVar12 = bVar25, *(char *)((longlong)puVar9 + 0x69) != '\0')) {
               bVar12 = true;
             }
             if ((!bVar12) &&
                (*(longlong *)(puVar9 + 0x28) <=
                 *(longlong *)(puVar9 + 0x2c) + *(longlong *)(puVar9 + 0x30))) {
 LAB_2:
               if (((((*(uint *)(param_2 + 4) >> 8 & 1) == 0) &&
                    ((*(uint *)(param_2 + 8) & 0x200) != 0)) || (*(int *)(puVar9 + 0x32) == 0)) &&
                  (*(int *)(param_2 + 0xb4) == 0)) goto LAB_3;
             }
           }
         }
         if ((*(uint *)(puVar9 + 2) & 0x10) != 0) goto LAB_3;
         if ((*(uint *)(puVar9 + 2) & 1) == 0) {
           if ((puVar9[0x30] != 0) || (puVar9[0x31] != 0)) goto LAB_4;
 LAB_5:
           if ((((*(uint *)(param_2 + 4) >> 8 & 1) != 0) || ((*(uint *)(param_2 + 8) & 0x200) == 0))
              && (*(int *)(puVar9 + 0x32) != 0)) goto LAB_4;
-          if (lVar14 != 0) goto LAB_6;
+          if (lVar15 != 0) goto LAB_6;
           if (((*(int *)(param_2 + 0x7c) != 0) || (*(int *)(param_2 + 0xb4) != 0)) ||
              ((((*(uint *)(param_2 + 4) >> 8 & 1) != 0 || ((*(uint *)(param_2 + 8) & 0x200) == 0))
               && (((*(undefined2 **)(puVar9 + 0x1c) != puVar9 + 0x1c ||
                    (0 < *(int *)(puVar9 + 0x44))) ||
                   (*(undefined2 **)(puVar9 + 0x34) != puVar9 + 0x34)))))) goto LAB_7;
-          bVar24 = false;
+          bVar25 = false;
           if (((*(uint *)(param_2 + 4) >> 0x11 & 1) == 0) &&
              ((*(uint *)(param_2 + 4) = *(uint *)(param_2 + 4) | 0x20000,
               (*(uint *)(param_2 + 4) >> 8 & 1) != 0 || ((*(uint *)(param_2 + 4) & 0x200) != 0)))) {
-            bVar24 = true;
+            bVar25 = true;
           }
           if ((char)param_2[1] != '\x04') goto LAB_3;
-          *(undefined8 *)(puVar20 + -8) = 0x140013f2f;
+          *(undefined8 *)(puVar22 + -8) = 0x140013c5f;
           KeReleaseInStackQueuedSpinLock();
-          if (bVar24) {
-            *(undefined8 *)(puVar20 + -8) = 0x140013f40;
+          if (bVar25) {
+            *(undefined8 *)(puVar22 + -8) = 0x140013c70;
             AfdDisconnectReceive((longlong)puVar9);
           }
-          *(undefined8 *)(puVar20 + -8) = 0x140013f4a;
-          puVar16 = AfdBeginDisconnect(param_2,(undefined8 *)0x0);
-          if ((int)puVar16 < 0) {
+          *(undefined8 *)(puVar22 + -8) = 0x140013c7a;
+          puVar17 = AfdBeginDisconnect(param_2,(undefined8 *)0x0);
+          if ((int)puVar17 < 0) {
             iVar13 = 6;
-            uVar17 = 0x1f41;
+            uVar19 = 0x1f41;
             goto LAB_8;
           }
         }
         else {
           if ((*(longlong *)(puVar9 + 0x24) + *(longlong *)(puVar9 + 0x20) <
                *(longlong *)(puVar9 + 0x1c)) ||
-             (bVar12 = bVar24, *(char *)((longlong)puVar9 + 0x69) != '\0')) {
+             (bVar12 = bVar25, *(char *)((longlong)puVar9 + 0x69) != '\0')) {
             bVar12 = true;
           }
           if ((!bVar12) &&
              (*(longlong *)(puVar9 + 0x28) <=
               *(longlong *)(puVar9 + 0x30) + *(longlong *)(puVar9 + 0x2c))) goto LAB_5;
 LAB_4:
-          if (lVar14 == 0) {
+          if (lVar15 == 0) {
 LAB_7:
             if ((*(uint *)(puVar9 + 2) & 1) == 0) {
-              bVar24 = puVar9[0x30] == 0;
+              bVar25 = puVar9[0x30] == 0;
             }
             else {
               if ((*(longlong *)(puVar9 + 0x24) + *(longlong *)(puVar9 + 0x20) <
                    *(longlong *)(puVar9 + 0x1c)) || (*(char *)((longlong)puVar9 + 0x69) != '\0')) {
-                bVar24 = true;
+                bVar25 = true;
               }
-              bVar24 = !bVar24;
-            }
-            if (!bVar24) {
+              bVar25 = !bVar25;
+            }
+            if (!bVar25) {
               if (((*(uint *)(param_2 + 4) >> 8 & 1) == 0) &&
                  ((*(uint *)(param_2 + 8) & 0x200) != 0)) {
                 if ((DAT_9 & 2) != 0) {
-                  uVar15 = *(undefined8 *)(puVar9 + 0x1c);
-                  *(undefined8 *)(puVar20 + 0x28) = *(undefined8 *)(puVar9 + 0x24);
-                  *(undefined8 *)(puVar20 + 0x20) = *(undefined8 *)(puVar9 + 0x20);
-                  *(undefined8 *)(puVar20 + -8) = 0x140013fce;
-                  WPP_SF_qiii(0xc,puVar18,param_2,uVar15);
+                  uVar16 = *(undefined8 *)(puVar9 + 0x1c);
+                  *(undefined8 *)(puVar22 + 0x28) = *(undefined8 *)(puVar9 + 0x24);
+                  *(undefined8 *)(puVar22 + 0x20) = *(undefined8 *)(puVar9 + 0x20);
+                  *(undefined8 *)(puVar22 + -8) = 0x140013cfe;
+                  WPP_SF_qiii(0xc,puVar20,param_2,uVar16);
                 }
               }
               else if ((DAT_9 & 2) != 0) {
-                uVar17 = *(undefined4 *)(puVar9 + 0x2c);
-                puVar18 = &WPP_b1761ff4e622369dcfb23f4b74cf4d6f_Traceguids;
-                *(undefined8 *)(puVar20 + -8) = 0x140013ff1;
-                WPP_SF_lq(0xd,&WPP_b1761ff4e622369dcfb23f4b74cf4d6f_Traceguids,uVar17,param_2);
+                uVar19 = *(undefined4 *)(puVar9 + 0x2c);
+                puVar20 = &WPP_d2b38b0429f53b77cbd2e4881fa2ed61_Traceguids;
+                *(undefined8 *)(puVar22 + -8) = 0x140013d21;
+                WPP_SF_lq(0xd,&WPP_d2b38b0429f53b77cbd2e4881fa2ed61_Traceguids,uVar19,param_2);
               }
             }
             if ((*(uint *)(puVar9 + 2) & 1) == 0) {
               if (puVar9[0x31] != 0) goto LAB_10;
             }
             else if (*(longlong *)(puVar9 + 0x30) + *(longlong *)(puVar9 + 0x2c) <
                      *(longlong *)(puVar9 + 0x28)) {
 LAB_10:
               if (((*(uint *)(param_2 + 4) >> 8 & 1) == 0) &&
                  ((*(uint *)(param_2 + 8) & 0x200) != 0)) {
                 if ((DAT_9 & 2) != 0) {
-                  uVar15 = *(undefined8 *)(puVar9 + 0x28);
-                  *(undefined8 *)(puVar20 + 0x28) = *(undefined8 *)(puVar9 + 0x30);
-                  *(undefined8 *)(puVar20 + 0x20) = *(undefined8 *)(puVar9 + 0x2c);
-                  *(undefined8 *)(puVar20 + -8) = 0x14001404e;
-                  WPP_SF_qiii(0xe,puVar18,param_2,uVar15);
+                  uVar16 = *(undefined8 *)(puVar9 + 0x28);
+                  *(undefined8 *)(puVar22 + 0x28) = *(undefined8 *)(puVar9 + 0x30);
+                  *(undefined8 *)(puVar22 + 0x20) = *(undefined8 *)(puVar9 + 0x2c);
+                  *(undefined8 *)(puVar22 + -8) = 0x140013d7e;
+                  WPP_SF_qiii(0xe,puVar20,param_2,uVar16);
                 }
               }
               else if ((DAT_9 & 2) != 0) {
-                uVar17 = *(undefined4 *)(puVar9 + 0x2e);
-                puVar18 = &WPP_b1761ff4e622369dcfb23f4b74cf4d6f_Traceguids;
-                *(undefined8 *)(puVar20 + -8) = 0x140014071;
-                WPP_SF_lq(0xf,&WPP_b1761ff4e622369dcfb23f4b74cf4d6f_Traceguids,uVar17,param_2);
+                uVar19 = *(undefined4 *)(puVar9 + 0x2e);
+                puVar20 = &WPP_d2b38b0429f53b77cbd2e4881fa2ed61_Traceguids;
+                *(undefined8 *)(puVar22 + -8) = 0x140013da1;
+                WPP_SF_lq(0xf,&WPP_d2b38b0429f53b77cbd2e4881fa2ed61_Traceguids,uVar19,param_2);
               }
             }
             if (((((*(uint *)(param_2 + 4) >> 8 & 1) != 0) ||
                  ((*(uint *)(param_2 + 8) & 0x200) == 0)) &&
                 (iVar13 = *(int *)(puVar9 + 0x32), iVar13 != 0)) && ((DAT_9 & 2) != 0)) {
-              puVar18 = &WPP_b1761ff4e622369dcfb23f4b74cf4d6f_Traceguids;
-              *(undefined8 *)(puVar20 + -8) = 0x1400140a9;
-              WPP_SF_lq(0x10,&WPP_b1761ff4e622369dcfb23f4b74cf4d6f_Traceguids,iVar13,param_2);
+              puVar20 = &WPP_d2b38b0429f53b77cbd2e4881fa2ed61_Traceguids;
+              *(undefined8 *)(puVar22 + -8) = 0x140013dd9;
+              WPP_SF_lq(0x10,&WPP_d2b38b0429f53b77cbd2e4881fa2ed61_Traceguids,iVar13,param_2);
             }
             iVar13 = *(int *)(param_2 + 0x7c);
             if ((iVar13 != 0) && ((DAT_9 & 2) != 0)) {
               iVar6 = *(int *)(param_2 + 0xb4);
-              pcVar21 = "(accept, connect, or transmit file)";
-              *(ushort **)(puVar20 + 0x20) = param_2;
+              pcVar23 = "(accept, connect, or transmit file)";
+              *(ushort **)(puVar22 + 0x20) = param_2;
               if (iVar6 == 0) {
-                pcVar21 = "";
+                pcVar23 = "";
               }
-              *(undefined8 *)(puVar20 + -8) = 0x1400140e0;
-              WPP_SF_lsq("",puVar18,iVar13,(longlong)pcVar21);
+              *(undefined8 *)(puVar22 + -8) = 0x140013e10;
+              WPP_SF_lsq("",puVar20,iVar13,(longlong)pcVar23);
             }
           }
           else {
 LAB_6:
             if ((DAT_9 & 2) != 0) {
                     /* WARNING: Subroutine does not return */
-              *(undefined **)(puVar20 + -8) = &UNK_11;
-              WPP_SF_I(0xb,&WPP_b1761ff4e622369dcfb23f4b74cf4d6f_Traceguids,param_2);
-            }
-          }
-          *(undefined8 *)(puVar20 + -8) = 0x1400140ec;
-          KeReleaseInStackQueuedSpinLock(puVar20 + 0x38);
+              *(undefined **)(puVar22 + -8) = &UNK_11;
+              WPP_SF_I(0xb,&WPP_d2b38b0429f53b77cbd2e4881fa2ed61_Traceguids,param_2);
+            }
+          }
+          *(undefined8 *)(puVar22 + -8) = 0x140013e1c;
+          KeReleaseInStackQueuedSpinLock(puVar22 + 0x38);
           iVar13 = 7;
-          uVar17 = 8000;
+          uVar19 = 8000;
 LAB_8:
-          *(undefined8 *)(puVar20 + -8) = 0x140014109;
-          AFDETW_TRACEABORT(2,uVar17,(short *)param_2,iVar13);
-          *(undefined8 *)(puVar20 + -8) = 0x140014111;
+          *(undefined8 *)(puVar22 + -8) = 0x140013e39;
+          AFDETW_TRACEABORT(2,uVar19,(short *)param_2,iVar13);
+          *(undefined8 *)(puVar22 + -8) = 0x140013e41;
           AfdBeginAbort(puVar9);
         }
       }
       else {
 LAB_3:
-        *(undefined8 *)(puVar20 + -8) = 0x14001411f;
-        KeReleaseInStackQueuedSpinLock(puVar20 + 0x38);
+        *(undefined8 *)(puVar22 + -8) = 0x140013e4f;
+        KeReleaseInStackQueuedSpinLock(puVar22 + 0x38);
       }
       if (((*(uint *)(param_2 + 4) >> 8 & 1) != 0) || ((*(uint *)(param_2 + 8) & 0x200) == 0)) {
         if (((*(uint *)(param_2 + 4) >> 8 & 1) != 0) &&
            (((*(uint *)(puVar9 + 2) & 0x10) == 0 && (0 < *(int *)(puVar9 + 0x44))))) {
-          uVar15 = *(undefined8 *)(puVar9 + 8);
+          uVar16 = *(undefined8 *)(puVar9 + 8);
           local_108 = _guard_check_icall;
           local_100 = 0;
           local_ec = 0;
           local_e4 = 0;
           local_dc = 0;
           local_d4 = 0;
           local_cc = 0;
           local_c4 = 0;
           uStack_c0 = 0;
           local_bc = 0;
           local_f8 = 0;
           local_f4 = 0xfffd;
           local_f0 = 4;
           pcVar11 = *(code **)(*(longlong *)(puVar9 + 0xc) + 8);
-          *(undefined8 *)(puVar20 + -8) = 0x1400141c9;
-          iVar13 = (*pcVar11)(uVar15,&local_108);
+          *(undefined8 *)(puVar22 + -8) = 0x140013ef9;
+          iVar13 = (*pcVar11)(uVar16,&local_108);
           if (iVar13 != 0x103) {
             if (iVar13 == -0x3ffffdfa) {
               iVar13 = -0x3fffffdd;
             }
-            *(undefined8 *)(puVar20 + -8) = 0x1400141f6;
+            *(undefined8 *)(puVar22 + -8) = 0x140013f26;
             (*local_108)(local_100,iVar13,CONCAT44(local_bc,uStack_c0));
           }
           if (iVar13 < 0) {
-            *(undefined8 *)(puVar20 + -8) = 0x140014211;
+            *(undefined8 *)(puVar22 + -8) = 0x140013f41;
             AFDETW_TRACEABORT(2,0x1f42,(short *)param_2,1);
-            *(undefined8 *)(puVar20 + -8) = 0x140014219;
+            *(undefined8 *)(puVar22 + -8) = 0x140013f49;
             AfdBeginAbort(puVar9);
           }
         }
         plVar3 = (longlong *)(puVar9 + 0x1c);
         local_1f0[7] = 0;
         local_1f0[8] = 0;
         local_1f0[9] = 0;
         do {
-          *(undefined8 *)(puVar20 + -8) = 0x140014239;
+          *(undefined8 *)(puVar22 + -8) = 0x140013f69;
           KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,local_1f0 + 7);
           while( true ) {
             plVar10 = (longlong *)*plVar3;
             if (plVar10 == plVar3) {
-              *(undefined8 *)(puVar20 + -8) = 0x1400142bf;
+              *(undefined8 *)(puVar22 + -8) = 0x140013fef;
               KeReleaseInStackQueuedSpinLock(local_1f0 + 7);
               plVar3 = (longlong *)(puVar9 + 0x34);
               local_1f0[10] = 0;
               local_1f0[0xb] = 0;
               local_1f0[0xc] = 0;
               goto LAB_12;
             }
             if (((longlong *)plVar10[1] != plVar3) ||
-               (lVar14 = *plVar10, *(longlong **)(lVar14 + 8) != plVar10)) goto LAB_1;
-            *plVar3 = lVar14;
-            *(longlong **)(lVar14 + 8) = plVar3;
+               (lVar15 = *plVar10, *(longlong **)(lVar15 + 8) != plVar10)) goto LAB_1;
+            *plVar3 = lVar15;
+            *(longlong **)(lVar15 + 8) = plVar3;
             LOCK();
-            lVar14 = plVar10[-8];
+            lVar15 = plVar10[-8];
             plVar10[-8] = 0;
             UNLOCK();
-            if (lVar14 != 0) break;
+            if (lVar15 != 0) break;
             *plVar10 = 0;
           }
-          *(undefined8 *)(puVar20 + -8) = 0x140014289;
+          *(undefined8 *)(puVar22 + -8) = 0x140013fb9;
           KeReleaseInStackQueuedSpinLock(local_1f0 + 7);
           uVar4 = AfdPriorityBoost;
           *(undefined4 *)(plVar10 + -0xf) = 0xc0000120;
           plVar10[-0xe] = 0;
-          *(undefined8 *)(puVar20 + -8) = 0x1400142aa;
+          *(undefined8 *)(puVar22 + -8) = 0x140013fda;
           IofCompleteRequest(plVar10 + -0x15,uVar4);
         } while( true );
       }
 LAB_13:
-      *(undefined8 *)(puVar20 + -8) = 0x140014395;
-      KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar20 + 0x38);
+      *(undefined8 *)(puVar22 + -8) = 0x1400140c5;
+      KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar22 + 0x38);
       *(uint *)(puVar9 + 2) = *(uint *)(puVar9 + 2) | 0x100000;
-      *(undefined8 *)(puVar20 + -8) = 0x1400143ac;
+      *(undefined8 *)(puVar22 + -8) = 0x1400140dc;
       AfdDeleteConnectedReference(puVar9,'\x01');
-      *(undefined8 *)(puVar20 + -8) = 0x1400143b8;
-      KeReleaseInStackQueuedSpinLock(puVar20 + 0x38);
+      *(undefined8 *)(puVar22 + -8) = 0x1400140e8;
+      KeReleaseInStackQueuedSpinLock(puVar22 + 0x38);
       LOCK();
       plVar3 = (longlong *)(puVar9 + 0x18);
-      lVar14 = *plVar3;
+      lVar15 = *plVar3;
       *plVar3 = *plVar3 + -1;
       UNLOCK();
-      if (lVar14 < 2) {
-        if (lVar14 == 1) {
-          *(undefined8 *)(puVar20 + -8) = 0x1400143d6;
+      if (lVar15 < 2) {
+        if (lVar15 == 1) {
+          *(undefined8 *)(puVar22 + -8) = 0x140014106;
           AfdCloseConnection(puVar9);
         }
         else {
           pcVar11 = (code *)swi(0x29);
           (*pcVar11)(0xe);
-          puVar20 = puVar20 + 8;
+          puVar22 = puVar22 + 8;
         }
       }
     }
     else {
       KeReleaseInStackQueuedSpinLock(&local_230);
     }
     if ((*param_2 & 0xafd4) == 0xafd4) {
-      *(undefined8 *)(puVar20 + -8) = 0x140014416;
-      KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar20 + 0x38);
+      *(undefined8 *)(puVar22 + -8) = 0x140014146;
+      KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar22 + 0x38);
       if ((*param_2 & 0xafd4) == 0xafd4) {
         puVar1 = param_2 + 0x40;
         while (puVar8 = *(ushort **)puVar1, puVar8 != puVar1) {
           if ((*(ushort **)(puVar8 + 4) != puVar1) ||
-             (lVar14 = *(longlong *)puVar8, *(ushort **)(lVar14 + 8) != puVar8)) goto LAB_1;
-          *(longlong *)puVar1 = lVar14;
-          *(ushort **)(lVar14 + 8) = puVar1;
+             (lVar15 = *(longlong *)puVar8, *(ushort **)(lVar15 + 8) != puVar8)) goto LAB_1;
+          *(longlong *)puVar1 = lVar15;
+          *(ushort **)(lVar15 + 8) = puVar1;
           puVar8[0] = 0;
           puVar8[1] = 0;
           puVar8[2] = 0;
           puVar8[3] = 0;
           if ((**(char **)(puVar8 + 8) == '\x0f') && ((*(char **)(puVar8 + 8))[1] == ' ')) {
-            *(undefined8 *)(puVar20 + -8) = 0x140014484;
+            *(undefined8 *)(puVar22 + -8) = 0x1400141b4;
             AfdCleanupSuperAccept((longlong)(puVar8 + -0x54),0xc0000120);
           }
           else {
             puVar8[-0x3c] = 0x120;
             puVar8[-0x3b] = 0xc000;
             puVar8[-0x38] = 0;
             puVar8[-0x37] = 0;
             puVar8[-0x36] = 0;
             puVar8[-0x35] = 0;
           }
-          *(undefined8 *)(puVar20 + -8) = 0x14001449d;
-          KeReleaseInStackQueuedSpinLock(puVar20 + 0x38);
+          *(undefined8 *)(puVar22 + -8) = 0x1400141cd;
+          KeReleaseInStackQueuedSpinLock(puVar22 + 0x38);
           LOCK();
           puVar2 = puVar8 + -0x20;
           puVar2[0] = 0;
           puVar2[1] = 0;
           puVar2[2] = 0;
           puVar2[3] = 0;
           UNLOCK();
           if (*(longlong *)puVar2 == 0) {
-            puVar20[0x31] = 0;
-            *(undefined8 *)(puVar20 + -8) = 0x1400144bf;
-            IoAcquireCancelSpinLock(puVar20 + 0x31);
-            *(undefined8 *)(puVar20 + -8) = 0x1400144d0;
-            IoReleaseCancelSpinLock(puVar20[0x31]);
-          }
-          *(undefined8 *)(puVar20 + -8) = 0x1400144e6;
+            puVar22[0x31] = 0;
+            *(undefined8 *)(puVar22 + -8) = 0x1400141ef;
+            IoAcquireCancelSpinLock(puVar22 + 0x31);
+            *(undefined8 *)(puVar22 + -8) = 0x140014200;
+            IoReleaseCancelSpinLock(puVar22[0x31]);
+          }
+          *(undefined8 *)(puVar22 + -8) = 0x140014216;
           IofCompleteRequest(puVar8 + -0x54,AfdPriorityBoost);
-          *(undefined8 *)(puVar20 + -8) = 0x1400144fb;
-          KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar20 + 0x38);
+          *(undefined8 *)(puVar22 + -8) = 0x14001422b;
+          KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar22 + 0x38);
         }
       }
-      *(undefined8 *)(puVar20 + -8) = 0x140014511;
-      KeReleaseInStackQueuedSpinLock(puVar20 + 0x38);
-      *(undefined8 *)(puVar20 + -8) = 0x14001451e;
+      *(undefined8 *)(puVar22 + -8) = 0x140014241;
+      KeReleaseInStackQueuedSpinLock(puVar22 + 0x38);
+      *(undefined8 *)(puVar22 + -8) = 0x14001424e;
       AfdFreeQueuedConnections((short *)param_2);
     }
   }
 LAB_14:
-  lVar14 = *(longlong *)(param_2 + 0x8c);
-  if (lVar14 != 0) {
-    if (*(longlong *)(lVar14 + 0x10) != 0) {
-      *(undefined8 *)(puVar20 + -8) = 0x140014546;
+  lVar15 = *(longlong *)(param_2 + 0x8c);
+  if (lVar15 != 0) {
+    if (*(longlong *)(lVar15 + 0x10) != 0) {
+      *(undefined8 *)(puVar22 + -8) = 0x140014276;
       NsiDeregisterChangeNotification(&NPI_MS_IPV6_MODULEID,0x10);
     }
-    if (*(longlong *)(lVar14 + 8) != 0) {
-      *(undefined8 *)(puVar20 + -8) = 0x140014567;
+    if (*(longlong *)(lVar15 + 8) != 0) {
+      *(undefined8 *)(puVar22 + -8) = 0x140014297;
       NsiDeregisterChangeNotification(&NPI_MS_IPV4_MODULEID,0x10);
     }
     param_2[0x8c] = 0;
     param_2[0x8d] = 0;
     param_2[0x8e] = 0;
     param_2[0x8f] = 0;
-    *(undefined8 *)(puVar20 + -8) = 0x140014582;
-    ExFreePoolWithTag(lVar14,0x71646641);
-  }
-  *(undefined8 *)(puVar20 + -8) = 0x140014597;
-  KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar20 + 0x38);
+    *(undefined8 *)(puVar22 + -8) = 0x1400142b2;
+    ExFreePoolWithTag(lVar15,0x71646641);
+  }
+  *(undefined8 *)(puVar22 + -8) = 0x1400142c7;
+  KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar22 + 0x38);
   puVar1 = param_2 + 0x90;
   while (puVar8 = *(ushort **)puVar1, puVar8 != puVar1) {
     if ((*(ushort **)(puVar8 + 4) != puVar1) ||
-       (lVar14 = *(longlong *)puVar8, *(ushort **)(lVar14 + 8) != puVar8)) goto LAB_1;
-    *(longlong *)puVar1 = lVar14;
-    *(ushort **)(lVar14 + 8) = puVar1;
+       (lVar15 = *(longlong *)puVar8, *(ushort **)(lVar15 + 8) != puVar8)) goto LAB_1;
+    *(longlong *)puVar1 = lVar15;
+    *(ushort **)(lVar15 + 8) = puVar1;
     puVar8[0] = 0;
     puVar8[1] = 0;
     puVar8[2] = 0;
     puVar8[3] = 0;
-    *(undefined8 *)(puVar20 + -8) = 0x1400145d0;
-    KeReleaseInStackQueuedSpinLock(puVar20 + 0x38);
+    *(undefined8 *)(puVar22 + -8) = 0x140014300;
+    KeReleaseInStackQueuedSpinLock(puVar22 + 0x38);
     pcVar11 = *(code **)(puVar8 + 8);
-    *(undefined8 *)(puVar20 + -8) = 0x1400145e4;
+    *(undefined8 *)(puVar22 + -8) = 0x140014314;
     (*pcVar11)(param_2,puVar8);
-    *(undefined8 *)(puVar20 + -8) = 0x1400145f4;
-    KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar20 + 0x38);
+    *(undefined8 *)(puVar22 + -8) = 0x140014324;
+    KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,puVar22 + 0x38);
   }
 LAB_15:
   if (*(longlong *)(param_2 + 0xb0) == 0) {
-    *(undefined8 *)(puVar20 + -8) = 0x1400146b5;
-    KeReleaseInStackQueuedSpinLock(puVar20 + 0x38);
+    *(undefined8 *)(puVar22 + -8) = 0x1400143e5;
+    KeReleaseInStackQueuedSpinLock(puVar22 + 0x38);
   }
   else {
-    puVar20[0x30] = 0;
-    *(undefined8 *)(puVar20 + -8) = 0x140014620;
+    puVar22[0x30] = 0;
+    *(undefined8 *)(puVar22 + -8) = 0x140014350;
     KeReleaseInStackQueuedSpinLock();
-    *(undefined8 *)(puVar20 + -8) = 0x140014631;
-    IoAcquireCancelSpinLock(puVar20 + 0x30);
-    *(undefined8 *)(puVar20 + -8) = 0x140014646;
-    KeAcquireInStackQueuedSpinLockAtDpcLevel(param_2 + 0x1c,puVar20 + 0x38);
-    lVar14 = *(longlong *)(param_2 + 0xb0);
-    if (lVar14 == 0) {
-      *(undefined8 *)(puVar20 + -8) = 0x140014696;
-      KeReleaseInStackQueuedSpinLockFromDpcLevel(puVar20 + 0x38);
-      uVar4 = puVar20[0x30];
+    *(undefined8 *)(puVar22 + -8) = 0x140014361;
+    IoAcquireCancelSpinLock(puVar22 + 0x30);
+    *(undefined8 *)(puVar22 + -8) = 0x140014376;
+    KeAcquireInStackQueuedSpinLockAtDpcLevel(param_2 + 0x1c,puVar22 + 0x38);
+    lVar15 = *(longlong *)(param_2 + 0xb0);
+    if (lVar15 == 0) {
+      *(undefined8 *)(puVar22 + -8) = 0x1400143c6;
+      KeReleaseInStackQueuedSpinLockFromDpcLevel(puVar22 + 0x38);
+      uVar4 = puVar22[0x30];
     }
     else {
-      *(undefined1 *)(lVar14 + 0x44) = 1;
+      *(undefined1 *)(lVar15 + 0x44) = 1;
       LOCK();
-      pcVar11 = *(code **)(lVar14 + 0x68);
-      *(undefined8 *)(lVar14 + 0x68) = 0;
+      pcVar11 = *(code **)(lVar15 + 0x68);
+      *(undefined8 *)(lVar15 + 0x68) = 0;
       UNLOCK();
-      *(undefined8 *)(puVar20 + -8) = 0x14001466e;
+      *(undefined8 *)(puVar22 + -8) = 0x14001439e;
       KeReleaseInStackQueuedSpinLockFromDpcLevel();
-      uVar4 = puVar20[0x30];
+      uVar4 = puVar22[0x30];
       if (pcVar11 != (code *)0x0) {
-        *(undefined1 *)(lVar14 + 0x45) = uVar4;
-        *(undefined8 *)(puVar20 + -8) = 0x14001468d;
-        (*pcVar11)(0,lVar14);
+        *(undefined1 *)(lVar15 + 0x45) = uVar4;
+        *(undefined8 *)(puVar22 + -8) = 0x1400143bd;
+        (*pcVar11)(0,lVar15);
         goto LAB_16;
       }
     }
-    *(undefined8 *)(puVar20 + -8) = 0x1400146a7;
+    *(undefined8 *)(puVar22 + -8) = 0x1400143d7;
     IoReleaseCancelSpinLock(uVar4);
   }
 LAB_16:
   if ((((*(uint *)(param_2 + 4) >> 8 & 1) == 0) && (*(longlong *)(param_2 + 0x80) != 0)) &&
      ((char)param_2[1] != '\x01')) {
-    uVar15 = *(undefined8 *)(param_2 + 0xc);
-    cVar19 = '\0';
+    uVar16 = *(undefined8 *)(param_2 + 0xc);
+    cVar21 = '\0';
     do {
       if ((*(uint *)(param_2 + 4) & 1) == 0) {
         if ((*param_2 + 0x5030 & 0xfff9) == 0) goto LAB_17;
         if (*param_2 == 0xafd1) {
-          puVar20[0x28] = 0xb;
-          local_1f0[0x10] = 4;
-          *(undefined4 *)(puVar20 + 0x20) = 0;
-          local_1f0[0x11] = 0;
-          local_1f0[0x12] = 0;
-          *(undefined8 *)(puVar20 + -8) = 0x1400147a5;
-          AfdIssueDeviceControl
-                    (uVar15,local_1f0 + 0x10,0x18,0,*(undefined4 *)(puVar20 + 0x20),puVar20[0x28]);
-          puVar20[0x28] = 0xb;
-          local_1f0[0x13] = 10;
-          *(undefined4 *)(puVar20 + 0x20) = 0;
+          puVar22[0x28] = 0xb;
+          local_1f0[0x13] = 4;
+          *(undefined4 *)(puVar22 + 0x20) = 0;
           local_1f0[0x14] = 0;
           local_1f0[0x15] = 0;
-          *(undefined8 *)(puVar20 + -8) = 0x1400147d1;
+          *(undefined8 *)(puVar22 + -8) = 0x1400144d5;
           AfdIssueDeviceControl
-                    (uVar15,local_1f0 + 0x13,0x18,0,*(undefined4 *)(puVar20 + 0x20),puVar20[0x28]);
-          puVar20[0x28] = 0xb;
-          local_1f0[0x16] = 2;
-          *(undefined4 *)(puVar20 + 0x20) = 0;
+                    (uVar16,local_1f0 + 0x13,0x18,0,*(undefined4 *)(puVar22 + 0x20),puVar22[0x28]);
+          puVar22[0x28] = 0xb;
+          local_1f0[0x16] = 10;
+          *(undefined4 *)(puVar22 + 0x20) = 0;
           local_1f0[0x17] = 0;
           local_1f0[0x18] = 0;
-          *(undefined8 *)(puVar20 + -8) = 0x1400147fd;
+          *(undefined8 *)(puVar22 + -8) = 0x140014501;
           AfdIssueDeviceControl
-                    (uVar15,local_1f0 + 0x16,0x18,0,*(undefined4 *)(puVar20 + 0x20),puVar20[0x28]);
+                    (uVar16,local_1f0 + 0x16,0x18,0,*(undefined4 *)(puVar22 + 0x20),puVar22[0x28]);
+          puVar22[0x28] = 0xb;
+          local_1f0[0x19] = 2;
+          *(undefined4 *)(puVar22 + 0x20) = 0;
+          local_1f0[0x1a] = 0;
+          local_1f0[0x1b] = 0;
+          *(undefined8 *)(puVar22 + -8) = 0x14001452d;
+          AfdIssueDeviceControl
+                    (uVar16,local_1f0 + 0x19,0x18,0,*(undefined4 *)(puVar22 + 0x20),puVar22[0x28]);
           if (((*(uint *)(param_2 + 4) >> 8 & 1) == 0) && ((*(uint *)(param_2 + 8) & 0x100000) == 0)
              ) goto LAB_18;
           goto LAB_19;
         }
       }
       else {
-        puVar20[0x28] = 0xb;
-        local_1f0[0xd] = 0;
-        *(undefined4 *)(puVar20 + 0x20) = 0;
-        local_1f0[0xe] = 0;
-        local_1f0[0xf] = 0;
-        *(undefined8 *)(puVar20 + -8) = 0x140014725;
+        puVar22[0x28] = 0xb;
+        local_1f0[0x10] = 0;
+        *(undefined4 *)(puVar22 + 0x20) = 0;
+        local_1f0[0x11] = 0;
+        local_1f0[0x12] = 0;
+        *(undefined8 *)(puVar22 + -8) = 0x140014455;
         AfdIssueDeviceControl
-                  (uVar15,local_1f0 + 0xd,0x18,0,*(undefined4 *)(puVar20 + 0x20),puVar20[0x28]);
+                  (uVar16,local_1f0 + 0x10,0x18,0,*(undefined4 *)(puVar22 + 0x20),puVar22[0x28]);
 LAB_17:
         if (((*(uint *)(param_2 + 4) >> 8 & 1) != 0) || ((*(uint *)(param_2 + 8) & 0x100000) != 0))
         {
 LAB_19:
-          *(undefined8 *)(puVar20 + -8) = 0x140014742;
-          AfdUnbind((longlong)param_2,cVar19);
+          *(undefined8 *)(puVar22 + -8) = 0x140014472;
+          AfdUnbind((longlong)param_2,cVar21);
         }
       }
 LAB_18:
-      if ((cVar19 != '\0') || ((*(uint *)(param_2 + 4) >> 0x16 & 1) == 0)) goto LAB_20;
-      cVar19 = '\x01';
-      uVar15 = *(undefined8 *)(*(longlong *)(param_2 + 0x88) + 8);
+      if ((cVar21 != '\0') || ((*(uint *)(param_2 + 4) >> 0x16 & 1) == 0)) goto LAB_20;
+      cVar21 = '\x01';
+      uVar16 = *(undefined8 *)(*(longlong *)(param_2 + 0x88) + 8);
     } while( true );
   }
 LAB_21:
-  if ((((*(uint *)(param_2 + 4) >> 8 & 1) != 0) && (uVar23 != 0)) &&
+  if ((((*(uint *)(param_2 + 4) >> 8 & 1) != 0) && (uVar14 != 0)) &&
      (((byte)((char)param_2[1] - 2U) < 3 || ((char)param_2[1] == '\a')))) {
-    *(undefined8 *)(puVar20 + -8) = 0x140014847;
-    AfdCloseTransportEndpoint(param_2);
-  }
-  local_1f0[0x19] = 0;
-  local_1f0[0x1a] = 0;
-  local_1f0[0x1b] = 0;
-  *(undefined8 *)(puVar20 + -8) = 0x140014863;
-  KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,local_1f0 + 0x19);
-  lVar14 = *(longlong *)(param_2 + 0xbc);
-  if (lVar14 == 0) {
-    *(undefined8 *)(puVar20 + -8) = 0x1400148a3;
-    KeReleaseInStackQueuedSpinLock(local_1f0 + 0x19);
+    *(undefined8 *)(puVar22 + -8) = 0x140014577;
+    AfdCloseTransportEndpoint((longlong)param_2);
+  }
+  local_1f0[0xd] = 0;
+  local_1f0[0xe] = 0;
+  local_1f0[0xf] = 0;
+  *(undefined8 *)(puVar22 + -8) = 0x140014593;
+  KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,local_1f0 + 0xd);
+  lVar15 = *(longlong *)(param_2 + 0xbc);
+  if (lVar15 == 0) {
+    *(undefined8 *)(puVar22 + -8) = 0x1400145ef;
+    KeReleaseInStackQueuedSpinLock(local_1f0 + 0xd);
   }
   else {
-    param_2[0xbc] = 0;
-    param_2[0xbd] = 0;
-    param_2[0xbe] = 0;
-    param_2[0xbf] = 0;
-    *(undefined8 *)(puVar20 + -8) = 0x140014886;
-    KeReleaseInStackQueuedSpinLock();
-    *(undefined8 *)(puVar20 + -8) = 0x14001489a;
-    AfdNotifyDestroyContext(local_b8,lVar14);
+    if ((Feature_447951161__private_featureState & 0x10) == 0) {
+      *(undefined8 *)(puVar22 + -8) = 0x1400145b8;
+      uVar18 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+      uVar14 = (uint)uVar18;
+    }
+    else {
+      uVar14 = Feature_447951161__private_featureState & 1;
+    }
+    if (uVar14 == 0) {
+      param_2[0xbc] = 0;
+      param_2[0xbd] = 0;
+      param_2[0xbe] = 0;
+      param_2[0xbf] = 0;
+    }
+    *(undefined8 *)(puVar22 + -8) = 0x1400145ce;
+    KeReleaseInStackQueuedSpinLock(local_1f0 + 0xd);
+    *(undefined8 *)(puVar22 + -8) = 0x1400145e2;
+    AfdNotifyDestroyContext(local_b8,lVar15);
   }
   if (g_AfdEtwTraceEnable != 0) {
     local_b8 = 0x3ea1004100003ea;
     uStack_b0 = (ulonglong)(*param_2 != 0xafd1) + 1 | 0x8000000000000004;
-    *(undefined8 *)(puVar20 + -8) = 0x140014902;
+    *(undefined8 *)(puVar22 + -8) = 0x14001464e;
     AFDETW_TRACESTATUS(&local_b8,1,0x7d3,(longlong)param_2);
   }
   LOCK();
   _AfdEndpointsCleanedUp = _AfdEndpointsCleanedUp + 1;
   UNLOCK();
-  *(undefined8 *)(puVar20 + -8) = 0x14001491a;
+  *(undefined8 *)(puVar22 + -8) = 0x140014666;
   return 0;
 LAB_12:
-  *(undefined8 *)(puVar20 + -8) = 0x1400142e4;
+  *(undefined8 *)(puVar22 + -8) = 0x140014014;
   KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,local_1f0 + 10);
   do {
     while( true ) {
       plVar10 = (longlong *)*plVar3;
       if (plVar10 == plVar3) {
-        *(undefined8 *)(puVar20 + -8) = 0x14001437b;
+        *(undefined8 *)(puVar22 + -8) = 0x1400140ab;
         KeReleaseInStackQueuedSpinLock(local_1f0 + 10);
-        uVar23 = *(uint *)(puVar20 + 0x50);
+        uVar14 = *(uint *)(puVar22 + 0x50);
         goto LAB_13;
       }
       if (((longlong *)plVar10[1] != plVar3) ||
-         (lVar14 = *plVar10, *(longlong **)(lVar14 + 8) != plVar10)) goto LAB_1;
-      *plVar3 = lVar14;
-      *(longlong **)(lVar14 + 8) = plVar3;
+         (lVar15 = *plVar10, *(longlong **)(lVar15 + 8) != plVar10)) goto LAB_1;
+      *plVar3 = lVar15;
+      *(longlong **)(lVar15 + 8) = plVar3;
       LOCK();
-      lVar14 = plVar10[-8];
+      lVar15 = plVar10[-8];
       plVar10[-8] = 0;
       UNLOCK();
-      if (lVar14 != 0) break;
+      if (lVar15 != 0) break;
       *plVar10 = 0;
     }
     LOCK();
-    lVar14 = plVar10[-6];
+    lVar15 = plVar10[-6];
     plVar10[-6] = -1;
     UNLOCK();
-  } while (lVar14 == 0);
-  *(undefined8 *)(puVar20 + -8) = 0x140014345;
+  } while (lVar15 == 0);
+  *(undefined8 *)(puVar22 + -8) = 0x140014075;
   KeReleaseInStackQueuedSpinLock(local_1f0 + 10);
   uVar4 = AfdPriorityBoost;
   *(undefined4 *)(plVar10 + -0xf) = 0xc0000120;
   plVar10[-0xe] = 0;
-  *(undefined8 *)(puVar20 + -8) = 0x140014366;
+  *(undefined8 *)(puVar22 + -8) = 0x140014096;
   IofCompleteRequest(plVar10 + -0x15,uVar4);
   goto LAB_12;
 LAB_0:
   KeAcquireInStackQueuedSpinLock(param_2 + 0x1c,local_1f0 + 4);
   do {
     while( true ) {
       puVar8 = *(ushort **)puVar1;
       if (puVar8 == puVar1) {
         KeReleaseInStackQueuedSpinLock(local_1f0 + 4);
-        puVar20 = auStack_268;
+        puVar22 = auStack_268;
         goto LAB_14;
       }
-      puVar20 = auStack_268;
+      puVar22 = auStack_268;
       if ((*(ushort **)(puVar8 + 4) != puVar1) ||
-         (lVar14 = *(longlong *)puVar8, puVar20 = auStack_268, *(ushort **)(lVar14 + 8) != puVar8))
+         (lVar15 = *(longlong *)puVar8, puVar22 = auStack_268, *(ushort **)(lVar15 + 8) != puVar8))
       goto LAB_1;
-      *(longlong *)puVar1 = lVar14;
-      *(ushort **)(lVar14 + 8) = puVar1;
+      *(longlong *)puVar1 = lVar15;
+      *(ushort **)(lVar15 + 8) = puVar1;
       LOCK();
       puVar2 = puVar8 + -0x20;
       puVar2[0] = 0;
       puVar2[1] = 0;
       puVar2[2] = 0;
       puVar2[3] = 0;
       UNLOCK();
       if (*(longlong *)puVar2 != 0) break;
       puVar8[0] = 0;
       puVar8[1] = 0;
       puVar8[2] = 0;
       puVar8[3] = 0;
     }
-    uVar15 = AfdCleanupReceiveDatagramIrp((longlong)(puVar8 + -0x54));
-  } while ((char)uVar15 == '\0');
+    uVar16 = AfdCleanupReceiveDatagramIrp((longlong)(puVar8 + -0x54));
+  } while ((char)uVar16 == '\0');
   KeReleaseInStackQueuedSpinLock(local_1f0 + 4);
   uVar4 = AfdPriorityBoost;
   puVar8[-0x3c] = 0x120;
   puVar8[-0x3b] = 0xc000;
   puVar8[-0x38] = 0;
   puVar8[-0x37] = 0;
   puVar8[-0x36] = 0;
   puVar8[-0x35] = 0;
   IofCompleteRequest(puVar8 + -0x54,uVar4);
   goto LAB_0;
 LAB_1:
   pcVar11 = (code *)swi(0x29);
   (*pcVar11)(3);
-  puVar20 = puVar20 + 8;
+  puVar22 = puVar22 + 8;
   goto LAB_15;
 LAB_20:
-  uVar23 = *(uint *)(puVar20 + 0x50);
+  uVar14 = *(uint *)(puVar22 + 0x50);
   goto LAB_21;
 }
 

```


## AfdTransmitPackets

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.41|
|i_ratio|0.53|
|m_ratio|0.98|
|b_ratio|0.79|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdTransmitPackets|AfdTransmitPackets|
|fullname|AfdTransmitPackets|AfdTransmitPackets|
|refcount|3|3|
|`length`|2872|3046|
|`called`|<details><summary>Expand for full list:<br>AfdAbortTPackets<br>AfdCheckISBEvents<br>AfdCompleteTPackets<br>AfdEnqueueTPacketsIrp<br>AfdQueueTransmit<br>AfdReturnTpInfo<br>AfdTPacketsWorker<br>AfdTdiGetTpInfo<br>AfdTliGetTpInfo<br>AfdTransmitPackets32<br>NTOSKRNL.EXE::ExAllocatePool2</summary>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoQueryFileInformation<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfReferenceObject<br>RtlpCopyDeviceMemory<br>WPP_SF_qqL<br>__security_check_cookie</details>|<details><summary>Expand for full list:<br>AfdAbortTPackets<br>AfdCheckISBEvents<br>AfdCompleteTPackets<br>AfdEnqueueTPacketsIrp<br>AfdQueueTransmit<br>AfdReturnTpInfo<br>AfdTPacketsWorker<br>AfdTdiGetTpInfo<br>AfdTliGetTpInfo<br>AfdTransmitPackets32<br>Feature_TCPIP_2025_Wave4_AfdTransmit_MSRC__private_IsEnabledDeviceUsageNoInline</summary>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoQueryFileInformation<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfReferenceObject<br>RtlpCopyDeviceMemory<br>WPP_SF_qqL<br>__security_check_cookie</details>|
|calling|||
|paramcount|2|2|
|`address`|140043d30|140044100|
|sig|int __fastcall AfdTransmitPackets(undefined8 * * * * * * * param_1, longlong param_2)|int __fastcall AfdTransmitPackets(undefined8 * * * * * * * param_1, longlong param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdTransmitPackets Called Diff


```diff
--- AfdTransmitPackets called
+++ AfdTransmitPackets called
@@ -10,0 +11 @@
+Feature_TCPIP_2025_Wave4_AfdTransmit_MSRC__private_IsEnabledDeviceUsageNoInline
```


### AfdTransmitPackets Diff


```diff
--- AfdTransmitPackets
+++ AfdTransmitPackets
@@ -1,577 +1,612 @@
 
 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 
 int AfdTransmitPackets(undefined8 *******param_1,longlong param_2)
 
 {
   int *piVar1;
-  undefined8 ****ppppuVar2;
-  short sVar3;
-  short *psVar4;
-  ulonglong *puVar5;
-  longlong lVar6;
-  undefined1 auVar7 [16];
-  undefined1 auVar8 [16];
-  code *pcVar9;
-  char cVar10;
-  uint uVar11;
-  int iVar12;
-  uint uVar13;
-  ulonglong uVar14;
+  void *pvVar2;
+  longlong lVar3;
+  undefined8 ****ppppuVar4;
+  short sVar5;
+  short *psVar6;
+  ulonglong *puVar7;
+  undefined8 *****pppppuVar8;
+  undefined1 auVar9 [16];
+  undefined1 auVar10 [16];
+  code *pcVar11;
+  char cVar12;
+  int iVar13;
+  uint uVar14;
   ulonglong uVar15;
-  undefined8 uVar16;
-  uint uVar17;
+  ulonglong uVar16;
+  undefined8 uVar17;
   undefined8 *******pppppppuVar18;
   undefined8 ******ppppppuVar19;
   undefined8 *****pppppuVar20;
   undefined1 *puVar21;
   undefined1 *puVar22;
-  undefined8 *****pppppuVar23;
-  ulonglong uVar24;
-  undefined8 *****pppppuVar25;
-  size_t _Size;
+  uint uVar23;
+  undefined8 *****pppppuVar24;
+  uint uVar25;
   bool bVar26;
-  undefined1 auStackY_118 [8];
-  undefined1 auStackY_110 [24];
-  char local_e8 [4];
-  int local_e4;
-  undefined1 local_e0 [8];
-  undefined8 ******local_d8;
+  undefined1 auStackY_128 [8];
+  undefined1 auStackY_120 [24];
+  char local_f8 [4];
+  int local_f4;
+  undefined1 local_f0 [8];
+  undefined8 ******local_e8;
+  uint local_e0;
+  uint uStack_dc;
+  uint local_d8;
+  uint local_d4;
   uint local_d0;
-  uint uStack_cc;
-  uint local_c8;
-  uint local_c4;
+  longlong local_c8;
   void *local_c0;
-  longlong local_b8;
-  void *local_b0;
-  undefined8 uStack_a8;
-  undefined8 local_a0;
-  undefined8 ****local_98;
-  undefined4 local_90;
-  longlong local_88;
-  ulonglong local_80;
+  void *local_b8;
+  undefined8 uStack_b0;
+  undefined8 local_a8;
+  undefined8 ****local_a0;
+  undefined8 local_98;
+  ulonglong local_90;
+  undefined4 local_88;
+  uint local_84;
+  longlong local_80;
   undefined8 ****local_78;
   short *local_70;
   undefined8 *******local_68;
   longlong local_60;
   undefined8 local_50;
   longlong lStack_48;
   undefined8 local_40;
   ulonglong local_38;
   
-  local_38 = __security_cookie ^ (ulonglong)auStackY_118;
+  local_38 = __security_cookie ^ (ulonglong)auStackY_128;
   pppppuVar20 = (undefined8 *****)0x0;
-  local_d8 = (undefined8 ******)0x0;
-  local_e8[0] = '\0';
-  local_d0 = 0;
-  local_e0[0] = 0;
+  local_e8 = (undefined8 ******)0x0;
+  local_f8[0] = '\0';
+  uStack_dc = 0;
+  local_f0[0] = 0;
   local_c0 = (void *)0x0;
-  psVar4 = *(short **)(*(longlong *)(param_2 + 0x30) + 0x18);
-  local_b8 = param_2;
-  local_70 = psVar4;
+  psVar6 = *(short **)(*(longlong *)(param_2 + 0x30) + 0x18);
+  local_c8 = param_2;
+  local_70 = psVar6;
   local_68 = param_1;
   local_60 = param_2;
-  if ((*(byte *)((longlong)psVar4 + 7) & 0x10) == 0) {
-    sVar3 = *psVar4;
-    if (sVar3 == 0x1afd) {
-      local_e4 = -0x3fffff06;
+  if ((*(byte *)((longlong)psVar6 + 7) & 0x10) == 0) {
+    sVar5 = *psVar6;
+    if (sVar5 == 0x1afd) {
+      local_f4 = -0x3fffff06;
     }
     else {
-      if (((sVar3 != -0x502e) &&
-          ((sVar3 != -0x502f ||
-           (((*(uint *)(psVar4 + 4) & 0x100) == 0 && ((*(uint *)(psVar4 + 8) & 0x8000) == 0)))))) ||
-         ((char)psVar4[1] != '\x04')) goto LAB_0;
-      cVar10 = IoIs32bitProcess(param_1);
-      if (cVar10 == '\0') {
-        local_b0 = (void *)0x0;
-        uStack_a8 = 0;
-        local_a0 = 0;
+      if (((sVar5 != -0x502e) &&
+          ((sVar5 != -0x502f ||
+           (((*(uint *)(psVar6 + 4) >> 8 & 1) == 0 && ((*(uint *)(psVar6 + 8) & 0x8000) == 0))))))
+         || ((char)psVar6[1] != '\x04')) goto LAB_0;
+      cVar12 = IoIs32bitProcess(param_1);
+      if (cVar12 == '\0') {
+        local_b8 = (void *)0x0;
+        uStack_b0 = 0;
+        local_a8 = 0;
         if (*(uint *)(param_2 + 0x10) < 0x18) {
-          local_e4 = -0x3ffffff3;
+          local_f4 = -0x3ffffff3;
         }
         else {
-          local_e4 = 0;
-          local_98 = (undefined8 ****)0x0;
-          local_88 = 0;
-          uStack_cc = 0;
-          local_c4 = 0;
+          local_f4 = 0;
+          local_a0 = (undefined8 ****)0x0;
+          local_80 = 0;
+          local_d4 = 0;
+          local_d0 = 0;
           if ((*(char *)(param_1 + 8) != '\0') && ((*(ulonglong *)(param_2 + 0x20) & 3) != 0)) {
                     /* WARNING: Subroutine does not return */
             ExRaiseDatatypeMisalignment();
           }
-          puVar5 = *(ulonglong **)(param_2 + 0x20);
-          local_b0 = (void *)*puVar5;
-          uStack_a8 = puVar5[1];
-          local_a0 = puVar5[2];
-          if ((((local_a0 & 0xffffffc8) == 0) && (((uint)local_a0 & 0x30) != 0x30)) &&
-             ((*psVar4 != -0x502f || ((local_a0 & 3) == 0)))) {
-            if ((local_b0 == (void *)0x0) || (0xaaaaaa9 < (uint)uStack_a8 - 1)) {
-              local_e4 = -0x3ffffff3;
+          puVar7 = *(ulonglong **)(param_2 + 0x20);
+          local_b8 = (void *)*puVar7;
+          uVar15 = puVar7[1];
+          local_a8 = puVar7[2];
+          uStack_b0 = uVar15;
+          if ((((local_a8 & 0xffffffc8) == 0) && (((uint)local_a8 & 0x30) != 0x30)) &&
+             ((*psVar6 != -0x502f || ((local_a8 & 3) == 0)))) {
+            if ((local_b8 == (void *)0x0) ||
+               (uStack_b0._0_4_ = (uint)uVar15, uVar14 = (uint)uStack_b0,
+               0xaaaaaa9 < (uint)uStack_b0 - 1)) {
+              local_f4 = -0x3ffffff3;
             }
             else {
-              if ((local_a0 & 0x30) == 0) {
-                uVar14 = local_a0 >> 0x20;
-                local_a0 = CONCAT44((int)uVar14,(uint)local_a0 | AfdDefaultTransmitWorker);
-              }
-              if ((*(uint *)(psVar4 + 4) & 0x100) == 0) {
-                local_d8 = AfdTdiGetTpInfo((uint)uStack_a8);
+              if ((local_a8 & 0x30) == 0) {
+                uVar16 = local_a8 >> 0x20;
+                local_a8 = CONCAT44((int)uVar16,(uint)local_a8 | AfdDefaultTransmitWorker);
+              }
+              if ((*(uint *)(psVar6 + 4) >> 8 & 1) == 0) {
+                local_e8 = AfdTdiGetTpInfo(uVar14);
               }
               else {
-                local_d8 = (undefined8 ******)AfdTliGetTpInfo((uint)uStack_a8);
-              }
-              if (local_d8 == (undefined8 ******)0x0) {
-                local_e4 = -0x3fffff66;
+                local_e8 = (undefined8 ******)AfdTliGetTpInfo(uVar14);
+              }
+              if (local_e8 == (undefined8 ******)0x0) {
+                local_f4 = -0x3fffff66;
               }
               else {
-                *(undefined4 *)((longlong)local_d8 + 0x4c) = 0;
-                *(int *)((longlong)local_d8 + 0x5c) = uStack_a8._4_4_;
-                if (uStack_a8._4_4_ == 0) {
-                  *(undefined4 *)((longlong)local_d8 + 0x5c) = AfdTransmitIoLength;
+                *(undefined4 *)((longlong)local_e8 + 0x4c) = 0;
+                *(int *)((longlong)local_e8 + 0x5c) = uStack_b0._4_4_;
+                if (uStack_b0._4_4_ == 0) {
+                  *(undefined4 *)((longlong)local_e8 + 0x5c) = AfdTransmitIoLength;
                 }
                 else {
-                  local_e0[0] = 1;
-                }
-                if (((*(char *)(param_1 + 8) != '\0') && ((uStack_a8 & 0xffffffff) * 3 != 0)) &&
-                   (((ulonglong)local_b0 & 3) != 0)) {
+                  local_f0[0] = 1;
+                }
+                if ((*(char *)(param_1 + 8) != '\0') &&
+                   (lVar3 = (uVar15 & 0xffffffff) * 0x18, lVar3 != 0)) {
+                  if (((ulonglong)local_b8 & 3) != 0) {
                     /* WARNING: Subroutine does not return */
-                  ExRaiseDatatypeMisalignment();
-                }
-                _Size = (uStack_a8 & 0xffffffff) * 0x18;
-                local_c0 = (void *)ExAllocatePool2(0x61,_Size,0x46646641);
+                    ExRaiseDatatypeMisalignment();
+                  }
+                  pvVar2 = (void *)(lVar3 + (longlong)local_b8);
+                  if ((*(void **)MmUserProbeAddress_exref < pvVar2) || (pvVar2 < local_b8)) {
+                    uVar14 = (uint)uStack_b0;
+                  }
+                }
+                local_c0 = (void *)ExAllocatePool2(0x61,(ulonglong)uVar14 * 0x18,0x46646641);
                 if (local_c0 != (void *)0x0) {
-                  RtlpCopyDeviceMemory(local_c0,local_b0,_Size);
-                  uStack_cc = 0;
-                  local_c8 = 0;
+                  RtlpCopyDeviceMemory(local_c0,local_b8,(ulonglong)uVar14 * 0x18);
+                  local_d4 = 0;
+                  local_e0 = 0;
+                  local_98 = 0;
+                  local_d0 = 0;
+                  *(undefined4 *)(local_e8 + 10) = 0;
                   local_80 = 0;
-                  local_c4 = 0;
-                  *(undefined4 *)(local_d8 + 10) = 0;
-                  local_88 = 0;
-                  local_98 = (undefined8 ****)0x0;
-                  pppppuVar23 = pppppuVar20;
-                  pppppuVar25 = pppppuVar20;
-                  while( true ) {
-                    uVar13 = (uint)pppppuVar25;
-                    uVar14 = (ulonglong)*(uint *)((longlong)local_d8 + 0x4c);
-                    param_2 = local_b8;
-                    if ((uint)uStack_a8 <= *(uint *)((longlong)local_d8 + 0x4c)) break;
-                    pppppuVar25 = local_d8[8];
-                    uVar17 = *(uint *)((longlong)local_c0 + uVar14 * 0x18);
-                    *(uint *)(pppppuVar25 + uVar14 * 3) = uVar17;
-                    if (((uVar17 & 3) == 3 || (uVar17 & 0xfffffff8) != 0) || ((uVar17 & 3) == 0)) {
-                      local_e4 = -0x3ffffff3;
+                  local_a0 = (undefined8 ****)0x0;
+                  pppppuVar24 = pppppuVar20;
+                  uVar25 = uStack_dc;
+                  while (uVar15 = (ulonglong)*(uint *)((longlong)local_e8 + 0x4c),
+                        param_2 = local_c8, *(uint *)((longlong)local_e8 + 0x4c) < uVar14) {
+                    pppppuVar8 = local_e8[8];
+                    uVar23 = *(uint *)((longlong)local_c0 + uVar15 * 0x18);
+                    *(uint *)(pppppuVar8 + uVar15 * 3) = uVar23;
+                    local_d8 = uVar23 & 3;
+                    if ((local_d8 == 3 || (uVar23 & 0xfffffff8) != 0) || (local_d8 == 0)) {
+                      local_f4 = -0x3ffffff3;
                       goto LAB_1;
                     }
-                    uVar11 = *(uint *)((longlong)local_c0 +
-                                      (ulonglong)*(uint *)((longlong)local_d8 + 0x4c) * 0x18 + 4);
-                    *(uint *)((longlong)pppppuVar25 + uVar14 * 0x18 + 4) = uVar11;
-                    if ((uVar17 & 2) == 0) {
-                      pppppuVar25[uVar14 * 3 + 1] =
+                    local_d8 = *(uint *)((longlong)local_c0 +
+                                        (ulonglong)*(uint *)((longlong)local_e8 + 0x4c) * 0x18 + 4);
+                    *(uint *)((longlong)pppppuVar8 + uVar15 * 0x18 + 4) = local_d8;
+                    if ((uVar23 & 2) == 0) {
+                      pppppuVar8[uVar15 * 3 + 1] =
                            *(undefined8 *****)
                             ((longlong)local_c0 +
-                            (ulonglong)*(uint *)((longlong)local_d8 + 0x4c) * 0x18 + 8);
-                      if (AfdTPacketsCopyThreshold < uVar11) goto LAB_2;
-                      if ((int)pppppuVar23 == 0) {
+                            (ulonglong)*(uint *)((longlong)local_e8 + 0x4c) * 0x18 + 8);
+                      if (AfdTPacketsCopyThreshold < local_d8) goto LAB_2;
+                      if ((int)pppppuVar24 == 0) {
 LAB_3:
-                        uStack_cc = uVar11;
+                        local_d4 = local_d8;
                       }
                       else {
-                        uStack_cc = (int)pppppuVar23 + uVar11;
-                        if ((AfdTPacketsCopyThreshold < uStack_cc) ||
-                           (*(uint *)((longlong)local_d8 + 0x5c) < uVar13 + uStack_cc))
+                        local_d4 = (int)pppppuVar24 + local_d8;
+                        if ((AfdTPacketsCopyThreshold < local_d4) ||
+                           (*(uint *)((longlong)local_e8 + 0x5c) < local_e0 + local_d4))
                         goto LAB_3;
-                        *(uint *)(pppppuVar25 + uVar14 * 3 + -3) =
-                             *(uint *)(pppppuVar25 + uVar14 * 3 + -3) | 0x40000000;
-                      }
-                      pppppuVar23 = (undefined8 *****)(ulonglong)uStack_cc;
-                      if ((uVar17 & 4) != 0) goto LAB_2;
+                        *(uint *)(pppppuVar8 + uVar15 * 3 + -3) =
+                             *(uint *)(pppppuVar8 + uVar15 * 3 + -3) | 0x40000000;
+                        local_d8 = local_d4;
+                      }
+                      pppppuVar24 = (undefined8 *****)(ulonglong)local_d8;
+                      local_d4 = local_d8;
+                      if ((uVar23 & 4) != 0) goto LAB_2;
 LAB_4:
-                      local_c8 = (uVar11 + uVar13) % *(uint *)((longlong)local_d8 + 0x5c);
+                      local_e0 = (*(int *)((longlong)pppppuVar8 + uVar15 * 0x18 + 4) + local_e0) %
+                                 *(uint *)((longlong)local_e8 + 0x5c);
                     }
                     else {
-                      lVar6 = *(longlong *)
+                      lVar3 = *(longlong *)
                                ((longlong)local_c0 +
-                               (ulonglong)*(uint *)((longlong)local_d8 + 0x4c) * 0x18 + 0x10);
-                      if ((local_88 == 0) || (lVar6 != local_88)) {
+                               (ulonglong)*(uint *)((longlong)local_e8 + 0x4c) * 0x18 + 0x10);
+                      if ((local_80 == 0) || (lVar3 != local_80)) {
                         local_78 = (undefined8 ****)0x0;
-                        local_e4 = ObReferenceObjectByHandle
-                                             (lVar6,1,*(undefined8 *)IoFileObjectType_exref,
+                        local_f4 = ObReferenceObjectByHandle
+                                             (lVar3,1,*(undefined8 *)IoFileObjectType_exref,
                                               *(undefined1 *)(param_1 + 8));
-                        local_98 = local_78;
-                        if (local_e4 < 0) {
-                          local_e8[0] = '\x01';
-                          param_2 = local_b8;
+                        local_a0 = local_78;
+                        if (local_f4 < 0) {
+                          local_f8[0] = '\x01';
+                          param_2 = local_c8;
                           goto LAB_1;
                         }
                       }
                       else {
-                        ObfReferenceObject(local_98);
-                      }
-                      pppppuVar25[uVar14 * 3 + 2] = local_98;
-                      uVar13 = *(uint *)((longlong)local_d8 + 0x4c);
-                      *(uint *)((longlong)local_d8 + 0x4c) = uVar13 + 1;
-                      pppppuVar25[uVar14 * 3 + 1] =
-                           *(undefined8 *****)((longlong)local_c0 + (ulonglong)uVar13 * 0x18 + 8);
-                      *(int *)((longlong)local_d8 + 0x4c) = *(int *)((longlong)local_d8 + 0x4c) + -1
+                        ObfReferenceObject(local_a0);
+                      }
+                      pppppuVar8[uVar15 * 3 + 2] = local_a0;
+                      uVar14 = *(uint *)((longlong)local_e8 + 0x4c);
+                      *(uint *)((longlong)local_e8 + 0x4c) = uVar14 + 1;
+                      pppppuVar8[uVar15 * 3 + 1] =
+                           *(undefined8 *****)((longlong)local_c0 + (ulonglong)uVar14 * 0x18 + 8);
+                      *(int *)((longlong)local_e8 + 0x4c) = *(int *)((longlong)local_e8 + 0x4c) + -1
                       ;
-                      if ((((ulonglong)local_98[10] & 2) != 0) &&
-                         (pppppuVar25[uVar14 * 3 + 1] == (undefined8 ****)0x0)) {
-                        pppppuVar25[uVar14 * 3 + 1] = (undefined8 ****)local_98[0xd];
-                      }
-                      uVar13 = *(uint *)((longlong)pppppuVar25 + uVar14 * 0x18 + 4);
-                      uVar15 = (ulonglong)uVar13;
-                      if (uVar13 == 0) {
+                      if ((((ulonglong)local_a0[10] & 2) != 0) &&
+                         (pppppuVar8[uVar15 * 3 + 1] == (undefined8 ****)0x0)) {
+                        pppppuVar8[uVar15 * 3 + 1] = (undefined8 ****)local_a0[0xd];
+                      }
+                      if (*(int *)((longlong)pppppuVar8 + uVar15 * 0x18 + 4) == 0) {
                         local_50 = 0;
                         lStack_48 = 0;
                         local_40 = 0;
-                        local_90 = 0;
-                        local_e4 = IoQueryFileInformation
-                                             (pppppuVar25[uVar14 * 3 + 2],5,0x18,&local_50);
-                        param_2 = local_b8;
-                        if (local_e4 < 0) {
-                          *(int *)((longlong)local_d8 + 0x4c) =
-                               *(int *)((longlong)local_d8 + 0x4c) + 1;
-                          local_e8[0] = '\x01';
+                        local_88 = 0;
+                        local_f4 = IoQueryFileInformation
+                                             (pppppuVar8[uVar15 * 3 + 2],5,0x18,&local_50);
+                        param_2 = local_c8;
+                        if (local_f4 < 0) {
+                          *(int *)((longlong)local_e8 + 0x4c) =
+                               *(int *)((longlong)local_e8 + 0x4c) + 1;
+                          local_f8[0] = '\x01';
                           goto LAB_1;
                         }
-                        ppppuVar2 = pppppuVar25[uVar14 * 3 + 1];
-                        if ((((longlong)ppppuVar2 < 0) || (lStack_48 < (longlong)ppppuVar2)) ||
-                           (uVar15 = lStack_48 - (longlong)ppppuVar2, 0x7fffffff < (longlong)uVar15)
-                           ) {
-                          *(int *)((longlong)local_d8 + 0x4c) =
-                               *(int *)((longlong)local_d8 + 0x4c) + 1;
-                          local_e4 = -0x3ffffff3;
-                          local_e8[0] = '\x01';
+                        ppppuVar4 = pppppuVar8[uVar15 * 3 + 1];
+                        if ((((longlong)ppppuVar4 < 0) || (lStack_48 < (longlong)ppppuVar4)) ||
+                           (0x7fffffff < lStack_48 - (longlong)ppppuVar4)) {
+                          *(int *)((longlong)local_e8 + 0x4c) =
+                               *(int *)((longlong)local_e8 + 0x4c) + 1;
+                          local_f4 = -0x3ffffff3;
+                          local_f8[0] = '\x01';
                           goto LAB_1;
                         }
-                        *(int *)((longlong)pppppuVar25 + uVar14 * 0x18 + 4) = (int)uVar15;
-                      }
-                      else if ((longlong)pppppuVar25[uVar14 * 3 + 1] < 0) {
-                        *(int *)((longlong)local_d8 + 0x4c) =
-                             *(int *)((longlong)local_d8 + 0x4c) + 1;
-                        local_e4 = -0x3ffffff3;
-                        local_e8[0] = '\x01';
-                        param_2 = local_b8;
+                        *(int *)((longlong)pppppuVar8 + uVar15 * 0x18 + 4) =
+                             (int)(lStack_48 - (longlong)ppppuVar4);
+                      }
+                      else if ((longlong)pppppuVar8[uVar15 * 3 + 1] < 0) {
+                        *(int *)((longlong)local_e8 + 0x4c) =
+                             *(int *)((longlong)local_e8 + 0x4c) + 1;
+                        local_f4 = -0x3ffffff3;
+                        local_f8[0] = '\x01';
+                        param_2 = local_c8;
                         goto LAB_1;
                       }
-                      uVar11 = (uint)uVar15;
-                      uVar17 = *(uint *)(pppppuVar25 + uVar14 * 3);
-                      uVar13 = local_c8;
-                      local_88 = lVar6;
+                      local_90 = (ulonglong)
+                                 Feature_TCPIP_2025_Wave4_AfdTransmit_MSRC__private_featureState;
+                      if ((Feature_TCPIP_2025_Wave4_AfdTransmit_MSRC__private_featureState & 0x10)
+                          == 0) {
+                        uVar16 = Feature_TCPIP_2025_Wave4_AfdTransmit_MSRC__private_IsEnabledDeviceUsageNoInline
+                                           ();
+                        local_84 = (uint)uVar16;
+                      }
+                      else {
+                        local_84 = Feature_TCPIP_2025_Wave4_AfdTransmit_MSRC__private_featureState &
+                                   1;
+                      }
+                      if ((local_84 != 0) &&
+                         (0x7fffffffffffffff - (longlong)pppppuVar8[uVar15 * 3 + 1] <
+                          (longlong)(ulonglong)*(uint *)((longlong)pppppuVar8 + uVar15 * 0x18 + 4)))
+                      {
+                        *(int *)((longlong)local_e8 + 0x4c) =
+                             *(int *)((longlong)local_e8 + 0x4c) + 1;
+                        local_f4 = -0x3ffffff3;
+                        local_f8[0] = '\x01';
+                        param_2 = local_c8;
+                        goto LAB_1;
+                      }
+                      uVar23 = *(uint *)(pppppuVar8 + uVar15 * 3);
+                      uVar14 = (uint)uStack_b0;
+                      uVar25 = uStack_dc;
+                      local_80 = lVar3;
 LAB_2:
-                      uStack_cc = 0;
-                      pppppuVar23 = pppppuVar20;
-                      if ((uVar17 & 4) == 0) goto LAB_4;
-                      local_c8 = 0;
+                      local_d4 = 0;
+                      pppppuVar24 = pppppuVar20;
+                      if ((uVar23 & 4) == 0) goto LAB_4;
+                      local_e0 = 0;
                     }
-                    uVar13 = *(uint *)(local_d8 + 10);
-                    if (uVar13 != 0xffffffff) {
-                      uVar15 = CONCAT44(0,uVar11 + (int)local_80);
-                      uVar24 = CONCAT44(0,*(uint *)((longlong)local_d8 + 0x5c));
-                      uVar17 = uVar13 + (int)((local_80 & 0xffffffff) / uVar24);
-                      auVar7._8_8_ = 0;
-                      auVar7._0_8_ = uVar24;
-                      auVar8._8_8_ = 0;
-                      auVar8._0_8_ = uVar15;
-                      local_80 = SUB168(auVar8 % auVar7,0);
-                      local_c4 = SUB164(auVar8 % auVar7,0);
-                      if (uVar24 < uVar15) {
-                        local_d0 = *(uint *)((longlong)local_d8 + 0x5c);
+                    local_d8 = *(uint *)(local_e8 + 10);
+                    if (local_d8 != 0xffffffff) {
+                      uVar16 = CONCAT44(0,*(int *)((longlong)pppppuVar8 + uVar15 * 0x18 + 4) +
+                                          (uint)local_98);
+                      uStack_dc = *(uint *)((longlong)local_e8 + 0x5c);
+                      local_90 = CONCAT44(0,uStack_dc);
+                      uVar23 = (uint)local_98 / uStack_dc + local_d8;
+                      auVar9._8_8_ = 0;
+                      auVar9._0_8_ = local_90;
+                      auVar10._8_8_ = 0;
+                      auVar10._0_8_ = uVar16;
+                      local_98 = SUB168(auVar10 % auVar9,0);
+                      local_d0 = SUB164(auVar10 % auVar9,0);
+                      if (local_90 < uVar16) {
+                        uVar25 = uStack_dc;
                       }
                       else {
-                        if (local_d0 < local_c4) {
-                          local_d0 = local_c4;
+                        if (uVar25 < local_d0) {
+                          uVar25 = local_d0;
                         }
-                      }
-                      if ((uVar17 < uVar13) || (uVar17 == 0xffffffff)) {
-                        *(undefined4 *)(local_d8 + 10) = 0xffffffff;
+                        uStack_dc = uVar25;
+                      }
+                      uStack_dc = uVar25;
+                      if ((uVar23 < local_d8) || (uVar23 == 0xffffffff)) {
+                        *(undefined4 *)(local_e8 + 10) = 0xffffffff;
                       }
                       else {
-                        *(uint *)(local_d8 + 10) = uVar17;
-                        if ((((ulonglong)pppppuVar25[uVar14 * 3] & 4) != 0) &&
-                           ((local_c4 != 0 ||
-                            (*(int *)((longlong)pppppuVar25 + uVar14 * 0x18 + 4) == 0)))) {
-                          *(uint *)(local_d8 + 10) = uVar17 + 1;
-                          local_80 = 0;
-                          local_c4 = 0;
+                        *(uint *)(local_e8 + 10) = uVar23;
+                        if ((((ulonglong)pppppuVar8[uVar15 * 3] & 4) != 0) &&
+                           ((local_d0 != 0 ||
+                            (*(int *)((longlong)pppppuVar8 + uVar15 * 0x18 + 4) == 0)))) {
+                          *(uint *)(local_e8 + 10) = uVar23 + 1;
+                          local_98 = 0;
+                          local_d0 = 0;
                         }
                       }
                     }
-                    *(int *)((longlong)local_d8 + 0x4c) = *(int *)((longlong)local_d8 + 0x4c) + 1;
-                    pppppuVar25 = (undefined8 *****)(ulonglong)local_c8;
-                  }
-                  *(uint *)(param_1 + 0x10) = (uint)local_a0;
+                    *(int *)((longlong)local_e8 + 0x4c) = *(int *)((longlong)local_e8 + 0x4c) + 1;
+                  }
+                  *(uint *)(param_1 + 0x10) = (uint)local_a8;
                   goto LAB_5;
                 }
-                local_e4 = -0x3fffff66;
+                local_f4 = -0x3fffff66;
               }
             }
           }
           else {
-            local_e4 = -0x3ffffff3;
+            local_f4 = -0x3ffffff3;
           }
         }
       }
       else {
-        local_e4 = AfdTransmitPackets32
-                             ((longlong)param_1,param_2,(ulonglong *)&local_d8,local_e8,local_e0,
-                              &local_d0);
-        if (-1 < local_e4) {
+        local_f4 = AfdTransmitPackets32
+                             ((longlong)param_1,param_2,(ulonglong *)&local_e8,local_f8,local_f0,
+                              &uStack_dc);
+        if (-1 < local_f4) {
 LAB_5:
-          puVar22 = auStackY_118;
-          puVar21 = auStackY_118;
-          if (*psVar4 == -0x502e) {
+          puVar22 = auStackY_128;
+          puVar21 = auStackY_128;
+          if (*psVar6 == -0x502e) {
             if (((ulonglong)param_1[0x10] & 3) == 0) {
               do {
-                iVar12 = *(int *)(psVar4 + 0xb4);
-                if (0 < iVar12) goto LAB_0;
+                iVar13 = *(int *)(psVar6 + 0xb4);
+                if (0 < iVar13) goto LAB_0;
                 LOCK();
-                bVar26 = iVar12 == *(int *)(psVar4 + 0xb4);
+                bVar26 = iVar13 == *(int *)(psVar6 + 0xb4);
                 if (bVar26) {
-                  *(int *)(psVar4 + 0xb4) = iVar12 + -1;
+                  *(int *)(psVar6 + 0xb4) = iVar13 + -1;
                 }
                 UNLOCK();
               } while (!bVar26);
-              if (iVar12 < 1) {
-                if ((*psVar4 == -0x502e) && ((char)psVar4[1] == '\x04')) {
-                  pppppuVar20 = *(undefined8 ******)(psVar4 + 0x60);
-                  local_d8[2] = pppppuVar20;
+              if (iVar13 < 1) {
+                if ((*psVar6 == -0x502e) && ((char)psVar6[1] == '\x04')) {
+                  pppppuVar20 = *(undefined8 ******)(psVar6 + 0x60);
+                  local_e8[2] = pppppuVar20;
                   LOCK();
-                  pppppuVar23 = pppppuVar20 + 6;
-                  ppppuVar2 = *pppppuVar23;
-                  *pppppuVar23 = (undefined8 ****)((longlong)*pppppuVar23 + 1);
+                  pppppuVar24 = pppppuVar20 + 6;
+                  ppppuVar4 = *pppppuVar24;
+                  *pppppuVar24 = (undefined8 ****)((longlong)*pppppuVar24 + 1);
                   UNLOCK();
-                  if ((longlong)ppppuVar2 + 1 < 2) {
-                    pcVar9 = (code *)swi(0x29);
-                    (*pcVar9)(0xe);
-                    puVar21 = auStackY_110;
+                  if ((longlong)ppppuVar4 + 1 < 2) {
+                    pcVar11 = (code *)swi(0x29);
+                    (*pcVar11)(0xe);
+                    puVar21 = auStackY_120;
                   }
                   LOCK();
-                  *(int *)(psVar4 + 0xb4) = *(int *)(psVar4 + 0xb4) + 1;
+                  *(int *)(psVar6 + 0xb4) = *(int *)(psVar6 + 0xb4) + 1;
                   UNLOCK();
                   goto LAB_6;
                 }
                 LOCK();
-                *(int *)(psVar4 + 0xb4) = *(int *)(psVar4 + 0xb4) + 1;
+                *(int *)(psVar6 + 0xb4) = *(int *)(psVar6 + 0xb4) + 1;
                 UNLOCK();
               }
             }
             else {
               LOCK();
-              bVar26 = *(uint *)(psVar4 + 0xb4) == 0;
+              bVar26 = *(uint *)(psVar6 + 0xb4) == 0;
               if (bVar26) {
-                *(uint *)(psVar4 + 0xb4) = (uint)*(byte *)(psVar4 + 1);
+                *(uint *)(psVar6 + 0xb4) = (uint)*(byte *)(psVar6 + 1);
               }
               UNLOCK();
               if (bVar26) {
-                if ((*psVar4 == -0x502e) && ((char)psVar4[1] == '\x04')) {
+                if ((*psVar6 == -0x502e) && ((char)psVar6[1] == '\x04')) {
                   if ((*(uint *)(param_1 + 0x10) & 2) != 0) {
                     *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) | 1;
-                    *(undefined1 *)(psVar4 + 1) = 7;
-                  }
-                  pppppuVar20 = *(undefined8 ******)(psVar4 + 0x60);
-                  local_d8[2] = pppppuVar20;
+                    *(undefined1 *)(psVar6 + 1) = 7;
+                  }
+                  pppppuVar20 = *(undefined8 ******)(psVar6 + 0x60);
+                  local_e8[2] = pppppuVar20;
                   LOCK();
-                  pppppuVar23 = pppppuVar20 + 6;
-                  ppppuVar2 = *pppppuVar23;
-                  *pppppuVar23 = (undefined8 ****)((longlong)*pppppuVar23 + 1);
+                  pppppuVar24 = pppppuVar20 + 6;
+                  ppppuVar4 = *pppppuVar24;
+                  *pppppuVar24 = (undefined8 ****)((longlong)*pppppuVar24 + 1);
                   UNLOCK();
-                  puVar21 = auStackY_118;
-                  if ((longlong)ppppuVar2 + 1 < 2) {
-                    pcVar9 = (code *)swi(0x29);
-                    (*pcVar9)(0xe);
-                    puVar21 = auStackY_110;
+                  puVar21 = auStackY_128;
+                  if ((longlong)ppppuVar4 + 1 < 2) {
+                    pcVar11 = (code *)swi(0x29);
+                    (*pcVar11)(0xe);
+                    puVar21 = auStackY_120;
                   }
 LAB_6:
                   ppppppuVar19 = *(undefined8 *******)(puVar21 + 0x40);
-                  if ((*(uint *)(psVar4 + 4) & 0x100) == 0) {
+                  if ((*(uint *)(psVar6 + 4) & 0x100) == 0) {
                     *ppppppuVar19 = (undefined8 *****)pppppuVar20[2];
                     ppppppuVar19[1] = (undefined8 *****)pppppuVar20[3];
                   }
                   else {
                     *ppppppuVar19 = param_1;
                   }
-                  uVar13 = *(uint *)((longlong)pppppuVar20 + 0x94);
+                  uVar14 = *(uint *)((longlong)pppppuVar20 + 0x94);
                   puVar22 = puVar21;
                   goto LAB_7;
                 }
                 LOCK();
-                psVar4[0xb4] = 0;
-                psVar4[0xb5] = 0;
+                psVar6[0xb4] = 0;
+                psVar6[0xb5] = 0;
                 UNLOCK();
               }
             }
           }
           else {
             do {
-              iVar12 = *(int *)(psVar4 + 0xb4);
-              if (0 < iVar12) goto LAB_0;
+              iVar13 = *(int *)(psVar6 + 0xb4);
+              if (0 < iVar13) goto LAB_0;
               LOCK();
-              bVar26 = iVar12 == *(int *)(psVar4 + 0xb4);
+              bVar26 = iVar13 == *(int *)(psVar6 + 0xb4);
               if (bVar26) {
-                *(int *)(psVar4 + 0xb4) = iVar12 + -1;
+                *(int *)(psVar6 + 0xb4) = iVar13 + -1;
               }
               UNLOCK();
             } while (!bVar26);
-            if (iVar12 < 1) {
-              if (((*psVar4 != -0x502f) || ((char)psVar4[1] != '\x04')) ||
-                 (((*(uint *)(psVar4 + 4) & 0x100) == 0 && ((*(uint *)(psVar4 + 8) & 0x8000) == 0)))
+            if (iVar13 < 1) {
+              if (((*psVar6 != -0x502f) || ((char)psVar6[1] != '\x04')) ||
+                 (((*(uint *)(psVar6 + 4) & 0x100) == 0 && ((*(uint *)(psVar6 + 8) & 0x8000) == 0)))
                  ) {
-                local_e4 = -0x3ffffec0;
+                local_f4 = -0x3ffffec0;
                 LOCK();
-                *(int *)(psVar4 + 0xb4) = *(int *)(psVar4 + 0xb4) + 1;
+                *(int *)(psVar6 + 0xb4) = *(int *)(psVar6 + 0xb4) + 1;
                 UNLOCK();
                 goto LAB_1;
               }
               LOCK();
-              *(int *)(psVar4 + 0xb4) = *(int *)(psVar4 + 0xb4) + 1;
+              *(int *)(psVar6 + 0xb4) = *(int *)(psVar6 + 0xb4) + 1;
               UNLOCK();
-              if ((*(uint *)(psVar4 + 4) & 0x100) == 0) {
-                if (((*(uint *)(psVar4 + 4) >> 0x16 & 1) == 0) ||
-                   ((*(uint *)(psVar4 + 0x58) & 0x20) == 0)) {
-                  *local_d8 = *(undefined8 ******)(psVar4 + 0xc);
-                  local_d8[1] = *(undefined8 ******)(psVar4 + 0x14);
+              if ((*(uint *)(psVar6 + 4) & 0x100) == 0) {
+                if (((*(uint *)(psVar6 + 4) >> 0x16 & 1) == 0) ||
+                   ((*(uint *)(psVar6 + 0x58) & 0x20) == 0)) {
+                  *local_e8 = *(undefined8 ******)(psVar6 + 0xc);
+                  local_e8[1] = *(undefined8 ******)(psVar6 + 0x14);
                 }
                 else {
-                  *local_d8 = *(undefined8 ******)(*(longlong *)(psVar4 + 0x88) + 8);
-                  local_d8[1] = *(undefined8 ******)(*(longlong *)(psVar4 + 0x88) + 0x10);
+                  *local_e8 = *(undefined8 ******)(*(longlong *)(psVar6 + 0x88) + 8);
+                  local_e8[1] = *(undefined8 ******)(*(longlong *)(psVar6 + 0x88) + 0x10);
                 }
               }
               else {
-                *local_d8 = param_1;
-              }
-              uVar13 = *(uint *)(psVar4 + 0x50);
-              ppppppuVar19 = local_d8;
+                *local_e8 = param_1;
+              }
+              uVar14 = *(uint *)(psVar6 + 0x50);
+              ppppppuVar19 = local_e8;
 LAB_7:
               if (((pppppuVar20 != (undefined8 *****)0x0) && (puVar22[0x38] == '\0')) &&
                  ((*(int *)(ppppppuVar19 + 10) + 1U & 0xfffffffe) == 0)) {
-                if (((*(uint *)(psVar4 + 4) & 0x100) != 0) ||
-                   ((*(uint *)(psVar4 + 4) >> 9 & 1) != 0)) {
-                  *(undefined8 *)(puVar22 + -8) = 0x14004462c;
-                  iVar12 = AfdCheckISBEvents((longlong)pppppuVar20,AfdTLSockOptEnable);
-                  if (-1 < iVar12) {
+                if (((*(uint *)(psVar6 + 4) & 0x100) != 0) ||
+                   ((*(uint *)(psVar6 + 4) >> 9 & 1) != 0)) {
+                  *(undefined8 *)(puVar22 + -8) = 0x140044aae;
+                  iVar13 = AfdCheckISBEvents((longlong)pppppuVar20,AfdTLSockOptEnable);
+                  if (-1 < iVar13) {
                     *(uint *)(param_1 + 0x10) = *(uint *)(param_1 + 0x10) | 0x40;
                   }
                 }
                 ppppppuVar19 = *(undefined8 *******)(puVar22 + 0x40);
               }
-              uVar17 = *(uint *)(puVar22 + 0x48);
-              if (uVar17 == 0) {
-                uVar17 = *(uint *)((longlong)ppppppuVar19 + 0x5c);
-                *(uint *)(puVar22 + 0x48) = uVar17;
-              }
-              uVar14 = (ulonglong)uVar13 / (ulonglong)uVar17;
-              pppppppuVar18 = (undefined8 *******)((ulonglong)uVar13 % (ulonglong)uVar17);
-              uVar13 = (uint)uVar14;
-              if (2 < uVar13) {
-                if (uVar13 < 9) {
-                  *(short *)((longlong)ppppppuVar19 + 0x54) = (short)uVar14;
+              uVar25 = *(uint *)(puVar22 + 0x4c);
+              if (uVar25 == 0) {
+                uVar25 = *(uint *)((longlong)ppppppuVar19 + 0x5c);
+                *(uint *)(puVar22 + 0x4c) = uVar25;
+              }
+              uVar15 = (ulonglong)uVar14 / (ulonglong)uVar25;
+              pppppppuVar18 = (undefined8 *******)((ulonglong)uVar14 % (ulonglong)uVar25);
+              uVar14 = (uint)uVar15;
+              if (2 < uVar14) {
+                if (uVar14 < 9) {
+                  *(short *)((longlong)ppppppuVar19 + 0x54) = (short)uVar15;
                 }
                 else {
                   *(undefined2 *)((longlong)ppppppuVar19 + 0x54) = 8;
                 }
               }
-              if ((*psVar4 == -0x502f) &&
+              if ((*psVar6 == -0x502f) &&
                  (*(uint *)(ppppppuVar19 + 10) <= (uint)*(ushort *)((longlong)ppppppuVar19 + 0x54)))
               {
                 *(undefined4 *)(ppppppuVar19 + 10) = 0xffffffff;
               }
               param_1[3] = ppppppuVar19;
               param_1[0x15] = (undefined8 ******)0x0;
               param_1[0x16] = (undefined8 ******)0x1;
               *(undefined4 *)(param_1 + 6) = 0;
               param_1[7] = (undefined8 ******)0x0;
               *(byte *)((longlong)param_1[0x17] + 3) = *(byte *)((longlong)param_1[0x17] + 3) | 1;
               param_1[0xf] = (undefined8 ******)0x0;
               *(undefined4 *)((longlong)param_1 + 0x84) = 1;
               *(undefined4 *)(param_1 + 0x11) = 2;
               LOCK();
-              bVar26 = *(longlong *)(psVar4 + 0xb0) == 0;
+              bVar26 = *(longlong *)(psVar6 + 0xb0) == 0;
               if (bVar26) {
-                *(undefined8 ********)(psVar4 + 0xb0) = param_1;
+                *(undefined8 ********)(psVar6 + 0xb0) = param_1;
               }
               UNLOCK();
               if (bVar26) {
 LAB_8:
                 LOCK();
                 param_1[0xd] = (undefined8 ******)AfdCancelTPackets;
                 UNLOCK();
-                if (((*(uint *)(psVar4 + 4) >> 0xb & 1) == 0) &&
+                if (((*(uint *)(psVar6 + 4) >> 0xb & 1) == 0) &&
                    (*(char *)((longlong)param_1 + 0x44) == '\0')) {
                   if (AfdMaxActiveTransmitFileCount != 0) {
-                    *(undefined8 *)(puVar22 + -8) = 0x14004470d;
-                    uVar16 = AfdQueueTransmit((longlong)param_1);
-                    if ((char)uVar16 != '\0') goto LAB_9;
-                  }
-                  *(undefined8 *)(puVar22 + -8) = 0x140044719;
+                    *(undefined8 *)(puVar22 + -8) = 0x140044b8b;
+                    uVar17 = AfdQueueTransmit((longlong *)param_1);
+                    if ((char)uVar17 != '\0') goto LAB_9;
+                  }
+                  *(undefined8 *)(puVar22 + -8) = 0x140044b97;
                   AfdTPacketsWorker((longlong *)param_1,pppppppuVar18);
                 }
                 else {
-                  *(undefined8 *)(puVar22 + -8) = 0x140044728;
+                  *(undefined8 *)(puVar22 + -8) = 0x140044ba6;
                   AfdAbortTPackets((longlong)param_1,0xc0000120);
                   LOCK();
                   piVar1 = (int *)((longlong)param_1 + 0x84);
-                  iVar12 = *piVar1;
+                  iVar13 = *piVar1;
                   *piVar1 = *piVar1 + -1;
                   UNLOCK();
-                  if (iVar12 == 1) {
-                    *(undefined8 *)(puVar22 + -8) = 0x140044740;
+                  if (iVar13 == 1) {
+                    *(undefined8 *)(puVar22 + -8) = 0x140044bbe;
                     AfdCompleteTPackets((longlong *)param_1);
                   }
                 }
               }
               else {
-                *(undefined8 *)(puVar22 + -8) = 0x1400446df;
+                *(undefined8 *)(puVar22 + -8) = 0x140044b5d;
                 pppppppuVar18 = param_1;
-                cVar10 = AfdEnqueueTPacketsIrp((longlong)psVar4,(longlong)param_1);
-                if (cVar10 == '\0') goto LAB_8;
+                cVar12 = AfdEnqueueTPacketsIrp((longlong)psVar6,(longlong)param_1);
+                if (cVar12 == '\0') goto LAB_8;
               }
 LAB_9:
-              if (*(longlong *)(puVar22 + 0x58) != 0) {
-                *(undefined8 *)(puVar22 + -8) = 0x140044756;
-                ExFreePoolWithTag(*(longlong *)(puVar22 + 0x58),0x46646641);
-              }
-              iVar12 = 0x103;
+              if (*(longlong *)(puVar22 + 0x68) != 0) {
+                *(undefined8 *)(puVar22 + -8) = 0x140044bd4;
+                ExFreePoolWithTag(*(longlong *)(puVar22 + 0x68),0x46646641);
+              }
+              iVar13 = 0x103;
               goto LAB_10;
             }
           }
 LAB_0:
-          local_e4 = -0x3ffffec0;
+          local_f4 = -0x3ffffec0;
         }
       }
     }
   }
   else {
-    local_e4 = -0x3ffffff8;
+    local_f4 = -0x3ffffff8;
   }
 LAB_1:
-  puVar22 = auStackY_118;
-  if ((local_e8[0] != '\0') && (*(int *)(param_2 + 8) != 0)) {
+  puVar22 = auStackY_128;
+  if ((local_f8[0] != '\0') && (*(int *)(param_2 + 8) != 0)) {
     if (*(char *)(param_1 + 8) == '\0') {
       *(undefined1 *)param_1[0xe] = 1;
     }
     else {
       ppppppuVar19 = param_1[0xe];
       if (*(undefined8 *******)MmUserProbeAddress_exref <= param_1[0xe]) {
         ppppppuVar19 = *(undefined8 *******)MmUserProbeAddress_exref;
       }
       *(undefined1 *)ppppppuVar19 = 1;
     }
   }
-  if (local_d8 != (undefined8 ******)0x0) {
-    AfdReturnTpInfo((longlong)local_d8,(byte)((uint)*(undefined4 *)(psVar4 + 4) >> 8) & 1);
+  if (local_e8 != (undefined8 ******)0x0) {
+    AfdReturnTpInfo((longlong)local_e8,(byte)((uint)*(undefined4 *)(psVar6 + 4) >> 8) & 1);
   }
   if ((DAT_11 & 2) != 0) {
-    WPP_SF_qqL(10,&WPP_9d7c9f732597320b3701fb742c31243e_Traceguids,param_1,psVar4);
+    WPP_SF_qqL(10,&WPP_85d0b78498363406ee9341b3181c37dd_Traceguids,param_1,psVar6);
   }
   if (local_c0 != (void *)0x0) {
     ExFreePoolWithTag(local_c0,0x46646641);
   }
-  iVar12 = local_e4;
+  iVar13 = local_f4;
   param_1[7] = (undefined8 ******)0x0;
-  *(int *)(param_1 + 6) = local_e4;
+  *(int *)(param_1 + 6) = local_f4;
   IofCompleteRequest(param_1,0);
 LAB_10:
-  *(undefined8 *)(puVar22 + -8) = 0x140044879;
-  return iVar12;
+  *(undefined8 *)(puVar22 + -8) = 0x140044cf7;
+  return iVar13;
 }
 

```


## AfdBCommonChainedReceiveEventHandler

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.98|
|i_ratio|0.75|
|m_ratio|0.99|
|b_ratio|0.95|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdBCommonChainedReceiveEventHandler|AfdBCommonChainedReceiveEventHandler|
|fullname|AfdBCommonChainedReceiveEventHandler|AfdBCommonChainedReceiveEventHandler|
|refcount|3|3|
|`length`|4197|4245|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACEABORT<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACEDATA_INDICATION<br>AFDETW_TRACERECV<br>AfdAddConnectionToTimerWheel<br>AfdBFillPendingIrps<br>AfdBeginAbort<br>AfdCloseConnection<br>AfdCommonRestartBufferReceive<br>AfdGetBuffer<br>AfdGetBufferTag</summary>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdLRListAddItem<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdNotifySockIndicateEventsUnlock<br>AfdReturnBuffer<br>NETIO.SYS::RtlCopyMdlToBuffer<br>NETIO.SYS::RtlCopyMdlToMdl<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmAdvanceMdl<br>NTOSKRNL.EXE::MmUnlockPages<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_L<br>WPP_SF_lq<br>WPP_SF_qL<br>WPP_SF_qqL<br>WPP_SF_qqLP</details>|<details><summary>Expand for full list:<br>AFDETW_TRACEABORT<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACEDATA_INDICATION<br>AFDETW_TRACERECV<br>AfdAddConnectionToTimerWheel<br>AfdBFillPendingIrps<br>AfdBeginAbort<br>AfdCloseConnection<br>AfdCommonRestartBufferReceive<br>AfdGetBuffer<br>AfdGetBufferTag</summary>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdLRListAddItem<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdNotifySockIndicateEventsUnlock<br>AfdReturnBuffer<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NETIO.SYS::RtlCopyMdlToBuffer<br>NETIO.SYS::RtlCopyMdlToMdl<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmAdvanceMdl<br>NTOSKRNL.EXE::MmUnlockPages<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_L<br>WPP_SF_lq<br>WPP_SF_qL<br>WPP_SF_qqL<br>WPP_SF_qqLP</details>|
|calling|AfdBChainedReceiveEventHandler<br>AfdTLConnectedReceiveEventHandler|AfdBChainedReceiveEventHandler<br>AfdTLConnectedReceiveEventHandler|
|paramcount|4|4|
|`address`|14001a380|140019340|
|sig|ulonglong __fastcall AfdBCommonChainedReceiveEventHandler(undefined8 * * * * * param_1, uint param_2, undefined8 * * * * * * * param_3, undefined8 * * * param_4)|ulonglong __fastcall AfdBCommonChainedReceiveEventHandler(undefined8 * * * * * param_1, uint param_2, undefined8 * * * * * * * param_3, undefined8 * * * param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdBCommonChainedReceiveEventHandler Called Diff


```diff
--- AfdBCommonChainedReceiveEventHandler called
+++ AfdBCommonChainedReceiveEventHandler called
@@ -18,0 +19 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
@@ -21,0 +23 @@
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdBCommonChainedReceiveEventHandler Diff


```diff
--- AfdBCommonChainedReceiveEventHandler
+++ AfdBCommonChainedReceiveEventHandler
@@ -1,754 +1,764 @@
 
 /* WARNING: Type propagation algorithm not settling */
 
 ulonglong AfdBCommonChainedReceiveEventHandler
                     (undefined8 *****param_1,uint param_2,undefined8 *******param_3,
                     undefined8 ***param_4)
 
 {
   undefined8 *****pppppuVar1;
   ushort *puVar2;
   short sVar3;
   int iVar4;
   longlong lVar5;
   longlong lVar6;
   undefined8 **ppuVar7;
   code *pcVar8;
   bool bVar9;
   char cVar10;
   ushort uVar11;
   undefined8 ****ppppuVar12;
   ulonglong uVar13;
   undefined8 *puVar14;
   undefined8 uVar15;
   undefined8 ***pppuVar16;
   undefined8 ****ppppuVar17;
   undefined8 *puVar18;
   ushort uVar19;
   uint uVar20;
   undefined8 **ppuVar21;
   undefined8 ************ppppppppppppuVar22;
   undefined8 ***pppuVar23;
   longlong *plVar24;
   longlong *plVar25;
   undefined1 *puVar26;
   undefined1 *puVar27;
   undefined1 *puVar28;
   undefined1 *puVar29;
   ushort uVar30;
   undefined8 ***********pppppppppppuVar31;
   undefined8 ***********pppppppppppuVar32;
   undefined8 ***********pppppppppppuVar33;
   undefined8 ***********pppppppppppuVar34;
   int iVar35;
   uint uVar36;
   uint uVar37;
   undefined4 uVar38;
   ulonglong uVar39;
   undefined8 ****ppppuVar40;
   bool bVar41;
   undefined8 *****local_res8;
   undefined8 uStackY_130;
   undefined1 auStackY_128 [8];
   undefined1 auStackY_120 [24];
   undefined8 in_stack_fffffffffffffef8;
   char local_d8 [4];
   uint local_d4;
   undefined8 ***********local_d0;
   undefined8 ************ppppppppppppuStack_c8;
   uint local_c0;
   undefined8 local_b8;
   undefined8 uStack_b0;
   undefined8 local_a8;
   ushort local_a0;
   int local_9c;
   undefined8 ****local_98;
   longlong local_90;
   undefined8 local_88;
   undefined8 local_80;
   undefined8 ***local_78;
   undefined8 local_70;
   undefined8 local_68;
   undefined8 uStack_60;
   undefined8 local_58;
   
   uVar38 = (undefined4)((ulonglong)in_stack_fffffffffffffef8 >> 0x20);
   puVar26 = auStackY_128;
   puVar29 = auStackY_128;
   puVar28 = auStackY_128;
   puVar27 = auStackY_128;
   local_a8 = 0;
   local_b8 = 0;
   uStack_b0 = 0;
   local_d0 = (undefined8 ***********)0x0;
   ppppppppppppuStack_c8 = (undefined8 ************)0x0;
   if ((AfdDoNotHoldNICBuffers == 0) || (bVar9 = true, (param_2 & 4) == 0)) {
     bVar9 = false;
   }
   uVar37 = *(uint *)(*param_4 + 3);
   ppppuVar40 = param_1[6];
   do {
     ppppuVar17 = (undefined8 ****)((longlong)ppppuVar40 + 1);
     local_c0 = uVar37;
     if (ppppuVar17 < (undefined8 ****)0x2) {
       if (ppppuVar17 != (undefined8 ****)0x1) {
         pcVar8 = (code *)swi(0x29);
         (*pcVar8)(0xe);
         puVar26 = auStackY_120;
       }
       if ((DAT_0 & 8) != 0) {
         uVar38 = *(undefined4 *)(param_1 + 6);
-        *(undefined8 *)(puVar26 + -8) = 0x14001a462;
+        *(undefined8 *)(puVar26 + -8) = 0x140019422;
         WPP_SF_qL(0x11,&WPP_1842c82698cc35643b675fc93d3b8d4e_Traceguids,param_1,uVar38);
       }
       goto LAB_1;
     }
     LOCK();
     ppppuVar12 = param_1[6];
     bVar41 = ppppuVar40 == ppppuVar12;
     if (bVar41) {
       param_1[6] = ppppuVar17;
       ppppuVar12 = ppppuVar40;
     }
     UNLOCK();
     ppppuVar40 = ppppuVar12;
   } while (!bVar41);
   ppppuVar40 = param_1[1];
   if (ppppuVar40 == (undefined8 ****)0x0) {
 LAB_2:
     LOCK();
     pppppuVar1 = param_1 + 6;
     ppppuVar40 = *pppppuVar1;
     *pppppuVar1 = (undefined8 ****)((longlong)*pppppuVar1 + -1);
     UNLOCK();
     if ((longlong)ppppuVar40 < 2) {
       if (ppppuVar40 == (undefined8 ****)0x1) {
         AfdCloseConnection((undefined2 *)param_1);
       }
       else {
         pcVar8 = (code *)swi(0x29);
         (*pcVar8)(0xe);
       }
     }
 LAB_1:
     uVar13 = 0xc000021b;
   }
   else {
     pppuVar23 = (undefined8 ***)*param_4;
     uVar36 = 0;
     pppuVar16 = pppuVar23;
     do {
       if (((undefined8 **)0xffffffff < pppuVar16[3]) ||
          (uVar20 = (uint)pppuVar16[3], ~uVar20 < uVar36)) {
         uVar38 = 0x1f4f;
         goto LAB_3;
       }
       pppuVar16 = (undefined8 ***)*pppuVar16;
       uVar36 = uVar36 + uVar20;
       local_90 = CONCAT44(local_90._4_4_,uVar36);
     } while (pppuVar16 != (undefined8 ***)0x0);
     local_d4 = *(uint *)(pppuVar23 + 2);
     if ((DAT_4 & 8) != 0) {
       WPP_SF_qqL(0xb,&WPP_4baf20d1201f32f413bac65b914e826e_Traceguids,param_1,pppuVar23[1]);
     }
     KeAcquireInStackQueuedSpinLock(ppppuVar40 + 7,&local_b8);
     ppppuVar17 = (undefined8 ****)0xafd4;
     if ((((ulonglong)*ppppuVar40 & 0xafd4) == 0xafd4) && (param_1[1] != ppppuVar40)) {
       KeReleaseInStackQueuedSpinLock(&local_b8);
       ppppuVar40 = param_1[1];
       ppppuVar17 = ppppuVar40 + 7;
       KeAcquireInStackQueuedSpinLock(ppppuVar17,&local_b8);
     }
     AFDETW_TRACEDATA_INDICATION
               (ppppuVar17,9000,(short *)ppppuVar40,pppuVar23,CONCAT44(uVar38,uVar36),(short *)0x0);
     if (((*(uint *)(ppppuVar40 + 1) >> 0x11 & 1) == 0) &&
        ((*(uint *)(ppppuVar40 + 1) >> 0xb & 1) == 0)) {
       if ((param_2 & 1) == 0) {
         if (((ulonglong)*param_1 & 0x4000000000000000) != 0) {
           if ((DAT_5 & 8) != 0) {
             WPP_SF_qL(0xd,&WPP_4baf20d1201f32f413bac65b914e826e_Traceguids,param_1,uVar37);
           }
           *(uint *)((longlong)param_1 + 100) = uVar37;
 LAB_6:
           KeReleaseInStackQueuedSpinLock(&local_b8);
           goto LAB_2;
         }
         if (0 < *(int *)(param_1 + 0x11)) {
           if ((DAT_5 & 8) != 0) {
             WPP_SF_qL(0xe,&WPP_4baf20d1201f32f413bac65b914e826e_Traceguids,param_1,uVar36);
           }
           *(uint *)((longlong)param_1 + 100) = uVar36;
           goto LAB_6;
         }
         if ((*(uint *)(param_1 + 0xb) != 0) && (~*(uint *)(param_1 + 0xb) < uVar36)) {
           KeReleaseInStackQueuedSpinLock(&local_b8);
           uVar38 = 0x1f52;
 LAB_3:
           uVar37 = 0xb;
           goto LAB_7;
         }
         *(undefined4 *)((longlong)param_1 + 100) = 0;
         ppppppppppppuStack_c8 = &local_d0;
         local_98 = (undefined8 ****)0x0;
         local_d0 = &local_d0;
         local_78 = (undefined8 ***)0x0;
         if ((*(uint *)(ppppuVar40 + 1) >> 8 & 1) != 0) {
           while (pppuVar16 = pppuVar23,
                 uVar13 = AfdBFillPendingIrps((longlong)param_1,(longlong *)pppuVar16[1],
                                              (longlong)param_3,local_d4,uVar37,
                                              ((byte)~*(byte *)((longlong)ppppuVar40 + 4) &
                                               0xfffffffc | 0xc) << 0x1b | param_2 & 2,
                                              (longlong *)&local_d0), pppuVar23 = pppuVar16,
                 local_c0 <= (int)uVar13 - local_d4) {
             pppuVar23 = (undefined8 ***)*pppuVar16;
             local_78 = pppuVar16;
             if (pppuVar23 == (undefined8 ***)0x0) {
               pppuVar23 = (undefined8 ***)0x0;
               break;
             }
             uVar37 = *(uint *)(pppuVar23 + 3);
             local_d4 = *(uint *)(pppuVar23 + 2);
             local_c0 = uVar37;
           }
 LAB_8:
           uVar39 = uVar13 & 0xffffffff;
           uVar37 = (uint)uVar13;
           if (uVar37 - local_d4 < local_c0) {
             local_9c = 0;
             if (((local_d4 < uVar37) || (pppuVar23 != (undefined8 ***)*param_4)) ||
                ((*(uint *)(param_1 + 0xb) <= *(uint *)(param_1 + 0x12) &&
                 (*(short *)(param_1 + 0xc) != -1)))) {
               uVar36 = (local_d4 - uVar37) + local_c0;
               if (bVar9) {
                 ppppuVar17 = AfdGetBuffer(uVar36,0,(longlong)param_1[4],0);
               }
               else {
                 ppppuVar17 = (undefined8 ****)AfdGetBufferTag(0,(longlong)param_1[4],0);
                 if (local_d4 < uVar37) {
                   local_98 = ppppuVar17;
                 }
               }
               if (ppppuVar17 == (undefined8 ****)0x0) {
 LAB_9:
                 uVar36 = (uint)local_90;
                 goto LAB_10;
               }
               local_a0 = ~((short)param_2 * 2) & 4;
               do {
                 if (bVar9) {
                   local_70 = 0;
                   RtlCopyMdlToBuffer(pppuVar23[1],uVar39,ppppuVar17[0xb],uVar36);
                   *(uint *)(ppppuVar17 + 8) = uVar36;
                   *(undefined4 *)(ppppuVar17 + 2) = 0;
                   pppuVar16 = (undefined8 ***)0x0;
                 }
                 else {
                   ppppuVar17[7] = (undefined8 ***)pppuVar23[1];
                   *(uint *)(ppppuVar17 + 8) = uVar36;
                   *(int *)(ppppuVar17 + 2) = (int)uVar39;
                   if ((*(uint *)(ppppuVar40 + 1) >> 8 & 1) == 0) {
                     pppuVar16 = (undefined8 ***)pppuVar23[-1];
                     *(ushort *)((longlong)ppppuVar17 + 0x4c) =
                          *(ushort *)((longlong)ppppuVar17 + 0x4c) | 8;
                   }
                   else {
                     *(ushort *)((longlong)ppppuVar17 + 0x4c) =
                          (ushort)(param_2 >> 1) & 2 |
                          *(ushort *)((longlong)ppppuVar17 + 0x4c) & 0xfffd | 0x10;
                     pppuVar16 = pppuVar23;
                   }
                 }
                 ppppuVar17[6] = pppuVar16;
                 ppppuVar17[3] = (undefined8 ***)((ulonglong)(local_98 == ppppuVar17) + 1);
                 pppppppppppuVar33 = (undefined8 ***********)param_3;
                 AFDETW_TRACEBUFFER(pppuVar16,0,(longlong)ppppuVar17[7],(longlong)param_3);
                 *(ushort *)((longlong)ppppuVar17 + 0x4c) =
                      *(ushort *)((longlong)ppppuVar17 + 0x4c) & 0xfffb | local_a0;
                 ppppuVar12 = param_1[10];
                 puVar29 = auStackY_128;
                 local_res8 = param_1;
                 if ((undefined8 *****)*ppppuVar12 != param_1 + 9) goto LAB_11;
                 ppppuVar17[1] = ppppuVar12;
                 iVar35 = local_9c + 1;
                 *ppppuVar17 = param_1 + 9;
                 *ppppuVar12 = ppppuVar17;
                 param_1[10] = ppppuVar17;
                 sVar3 = *(short *)(param_1 + 0xc);
                 *(uint *)(param_1 + 0xb) = *(int *)(param_1 + 0xb) + uVar36;
                 *(ushort *)(param_1 + 0xc) = sVar3 + 1U;
                 pppuVar23 = (undefined8 ***)*pppuVar23;
                 local_9c = iVar35;
                 pppuVar16 = (undefined8 ***)0x0;
                 if ((pppuVar23 == (undefined8 ***)0x0) ||
                    (pppuVar16 = pppuVar23, 0xfffe < (ushort)(sVar3 + 1U))) break;
                 uVar36 = *(uint *)(pppuVar23 + 3);
                 uVar39 = (ulonglong)*(uint *)(pppuVar23 + 2);
                 if (bVar9) {
                   pppppppppppuVar33 = (undefined8 ***********)0x0;
                   ppppuVar17 = AfdGetBuffer(uVar36,0,(longlong)param_1[4],0);
                 }
                 else {
                   ppppuVar17 = (undefined8 ****)AfdGetBufferTag(0,(longlong)param_1[4],0);
                 }
               } while (ppppuVar17 != (undefined8 ****)0x0);
               if (iVar35 == 0) goto LAB_9;
               if (pppuVar16 != (undefined8 ***)0x0) {
                 do {
                   ppppuVar17 = param_1[10];
                   puVar29 = auStackY_128;
                   if (((undefined8 *****)*ppppuVar17 != param_1 + 9) ||
                      (ppppuVar12 = (undefined8 ****)ppppuVar17[1], puVar29 = auStackY_128,
                      (undefined8 ****)*ppppuVar12 != ppppuVar17)) goto LAB_11;
                   param_1[10] = ppppuVar12;
                   uVar19 = 0xffef;
                   *ppppuVar12 = param_1 + 9;
                   *(int *)(param_1 + 0xb) = *(int *)(param_1 + 0xb) - *(int *)(ppppuVar17 + 8);
                   *(short *)(param_1 + 0xc) = *(short *)(param_1 + 0xc) + -1;
                   if ((*(uint *)(ppppuVar40 + 1) >> 8 & 1) == 0) {
                     uVar19 = 0xfff7;
                   }
                   *(ushort *)((longlong)ppppuVar17 + 0x4c) =
                        *(ushort *)((longlong)ppppuVar17 + 0x4c) & uVar19;
                   AfdReturnBuffer((longlong)ppppuVar17,(longlong)param_1[4]);
                   iVar35 = iVar35 + -1;
                 } while (iVar35 != 0);
                 local_98 = (undefined8 ****)0x0;
                 uVar36 = (uint)local_90;
                 goto LAB_10;
               }
               *(undefined1 *)((longlong)ppppuVar40 + 0x21) = 0;
               if (bVar9) {
                 local_res8 = (undefined8 *****)0x0;
               }
               else if ((*(uint *)(ppppuVar40 + 1) >> 8 & 1) == 0) {
                 local_res8 = (undefined8 *****)0x103;
               }
               else {
                 ppppuVar17 = param_1[10];
                 do {
                   ppppuVar12 = ppppuVar17 + 6;
                   ppppuVar17 = (undefined8 ****)ppppuVar17[1];
                   **ppppuVar12 = ppppuVar40[0x21] + 4;
                   iVar35 = iVar35 + -1;
                 } while (iVar35 != 0);
                 if ((param_2 & 4) != 0) {
                   AfdAddConnectionToTimerWheel((longlong)param_1,1000);
                 }
                 local_res8 = (undefined8 *****)0x0;
               }
               if (*(short *)((longlong)param_1 + 2) != 3) goto LAB_12;
               AfdIndicateEventSelectEvent((short *)ppppuVar40,1,0);
               if (ppppuVar40[0x2f] != (undefined8 ***)0x0) {
                 puVar2 = (ushort *)((longlong)ppppuVar40[0x2f] + 100);
                 *puVar2 = *puVar2 | 1;
               }
               uVar15 = AfdIndicatePollEvent((short *)ppppuVar40,1,0,&local_b8);
               if ((char)uVar15 == '\0') {
                 bVar9 = false;
                 local_58 = 0;
                 local_68 = 0;
                 uStack_60 = 0;
                 if ((ppppuVar40[0x2f] == (undefined8 ***)0x0) ||
                    (cVar10 = ExAcquireRundownProtection(ppppuVar40 + 0x30), cVar10 == '\0')) {
 LAB_13:
                   KeReleaseInStackQueuedSpinLock(&local_b8);
                   puVar27 = auStackY_128;
                   if (!bVar9) goto LAB_14;
                 }
                 else {
                   pppuVar16 = ppppuVar40[0x2f];
                   bVar9 = true;
                   uVar19 = *(ushort *)((longlong)pppuVar16 + 0x6a);
                   ppuVar21 = pppuVar16[8];
                   if ((uVar19 & 2) != 0) goto LAB_13;
                   uVar30 = uVar19 | 2;
                   *(ushort *)((longlong)pppuVar16 + 0x6a) = uVar30;
                   while ((uVar19 & 1) == 0) {
                     uVar11 = AfdNotifyComputeEvents((longlong)pppuVar16);
                     uVar19 = *(ushort *)(pppuVar16 + 0xd);
                     *(undefined2 *)((longlong)pppuVar16 + 0x66) =
                          *(undefined2 *)((longlong)pppuVar16 + 100);
                     if (uVar11 == uVar19) {
                       if ((*(byte *)((longlong)pppuVar16 + 99) & 1) != 0) {
                         uVar30 = uVar30 | 4;
                       }
 LAB_15:
                       *(ushort *)((longlong)pppuVar16 + 0x6a) = uVar30 & 0xfffd;
                       goto LAB_16;
                     }
                     if ((uVar11 & uVar19) != 0) goto LAB_15;
                     if (uVar19 == 0) {
                       *(ushort *)(pppuVar16 + 0xd) = uVar11;
                       KeReleaseInStackQueuedSpinLock(&local_b8);
                       ObfReferenceObject(ppuVar21);
                       IoSetIoCompletionEx3(pppuVar16[10],pppuVar16[0xb],0);
                       KeAcquireInStackQueuedSpinLock(ppppuVar40 + 7,&local_b8);
                     }
                     else {
                       KeReleaseInStackQueuedSpinLock();
                       cVar10 = IoCancelMiniCompletionPacket(pppuVar16[10],pppuVar16);
                       if (cVar10 == '\0') {
                         KeAcquireInStackQueuedSpinLock(ppppuVar40 + 7,&local_b8);
                         if (*(short *)(pppuVar16 + 0xd) != 0) {
                           *(ushort *)((longlong)pppuVar16 + 0x6a) =
                                *(ushort *)((longlong)pppuVar16 + 0x6a) & 0xfffd;
                           goto LAB_16;
                         }
                       }
                       else {
                         ObfDereferenceObject(ppuVar21);
                         KeAcquireInStackQueuedSpinLock(ppppuVar40 + 7,&local_b8);
                         *(undefined2 *)(pppuVar16 + 0xd) = 0;
                       }
                     }
                     uVar30 = *(ushort *)((longlong)pppuVar16 + 0x6a);
                     uVar19 = uVar30;
                   }
                   ppppuVar40[0x2f] = (undefined8 ***)0x0;
                   *(ushort *)((longlong)pppuVar16 + 0x6a) =
                        *(ushort *)((longlong)pppuVar16 + 0x6a) & 0xfffd;
                   KeReleaseInStackQueuedSpinLock(&local_b8);
                   AfdNotifyDestroyContext(ppuVar21,(longlong)pppuVar16);
+                  if ((Feature_447951161__private_featureState & 0x10) == 0) {
+                    uVar13 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+                    uVar37 = (uint)uVar13;
+                  }
+                  else {
+                    uVar37 = Feature_447951161__private_featureState & 1;
+                  }
+                  if (uVar37 != 0) {
+                    ExFreePoolWithTag(pppuVar16,0x4e646641);
+                  }
                   KeAcquireInStackQueuedSpinLock(ppppuVar40 + 7,&local_b8);
 LAB_16:
                   KeReleaseInStackQueuedSpinLock(&local_b8);
                 }
                 ExReleaseRundownProtection(ppppuVar40 + 0x30);
                 puVar27 = auStackY_128;
               }
               else {
                 AfdNotifySockIndicateEventsUnlock((longlong)ppppuVar40,(undefined8 *)0x0,'\0');
               }
             }
             else {
 LAB_10:
               local_res8 = (undefined8 *****)0xc000021b;
               if ((local_d0 != &local_d0) &&
                  (pppppppppppuVar34 = ppppppppppppuStack_c8, ppppppppppppuStack_c8 != &local_d0)) {
                 do {
                   ppppppppppppuVar22 = (undefined8 ************)(pppppppppppuVar34 + 1);
                   pppppppppppuVar33 = *ppppppppppppuVar22;
                   if (((ulonglong)pppppppppppuVar34[-0xf] & 0xc0000000) != 0xc0000000) {
                     LOCK();
                     pppppppppppuVar34[-8] = (undefined8 **********)AfdCancelReceive;
                     UNLOCK();
                     if (*(char *)((longlong)pppppppppppuVar34 + -100) == '\0') {
                       pppppppppppuVar32 = (undefined8 ***********)*pppppppppppuVar34;
                       puVar29 = auStackY_128;
                       if (((undefined8 ***********)pppppppppppuVar32[1] != pppppppppppuVar34) ||
                          (pppppppppppuVar31 = *ppppppppppppuVar22, puVar29 = auStackY_128,
                          (undefined8 ***********)*pppppppppppuVar31 != pppppppppppuVar34))
                       goto LAB_11;
                       *pppppppppppuVar31 = pppppppppppuVar32;
                       pppppppppppuVar32[1] = pppppppppppuVar31;
                       pppppppppppuVar32 = (undefined8 ***********)(param_1 + 7);
                       pppppppppppuVar31 = (undefined8 ***********)*pppppppppppuVar32;
                       puVar29 = auStackY_128;
                       if ((undefined8 ***********)pppppppppppuVar31[1] != pppppppppppuVar32)
                       goto LAB_11;
                       *pppppppppppuVar34 = pppppppppppuVar31;
                       *ppppppppppppuVar22 = pppppppppppuVar32;
                       pppppppppppuVar31[1] = pppppppppppuVar34;
                       *pppppppppppuVar32 = pppppppppppuVar34;
                     }
                     else {
                       LOCK();
                       pppppppppppuVar32 = (undefined8 ***********)pppppppppppuVar34[-8];
                       pppppppppppuVar34[-8] = (undefined8 ***********)0x0;
                       UNLOCK();
                       if (pppppppppppuVar32 == (undefined8 ***********)0x0) {
                         pppppppppppuVar32 = (undefined8 ***********)*pppppppppppuVar34;
                         puVar29 = auStackY_128;
                         if (((undefined8 ***********)pppppppppppuVar32[1] != pppppppppppuVar34) ||
                            (pppppppppppuVar31 = *ppppppppppppuVar22, puVar29 = auStackY_128,
                            (undefined8 ***********)*pppppppppppuVar31 != pppppppppppuVar34))
                         goto LAB_11;
                         *pppppppppppuVar31 = pppppppppppuVar32;
                         pppppppppppuVar32[1] = pppppppppppuVar31;
                         *pppppppppppuVar34 = (undefined8 ***********)0x0;
                       }
                       else if (*(int *)(pppppppppppuVar34[2] + 2) == 0) {
                         *(undefined4 *)(pppppppppppuVar34 + -0xf) = 0xc0000120;
                       }
                       else {
                         *(undefined4 *)(pppppppppppuVar34 + -0xf) = 0;
                         pppppppppppuVar34[-0xe] =
                              (undefined8 ***********)(ulonglong)*(uint *)(pppppppppppuVar34[2] + 2);
                       }
                     }
                   }
                   pppppppppppuVar34 = pppppppppppuVar33;
                 } while (pppppppppppuVar33 != &local_d0);
               }
               *(uint *)((longlong)param_1 + 100) = uVar36;
               puVar28 = auStackY_128;
               if ((*(int *)(param_1 + 0xb) == 0) &&
                  (puVar28 = auStackY_128, (*(uint *)((longlong)param_1 + 4) >> 0x1c & 1) == 0)) {
                 *(uint *)((longlong)param_1 + 4) = *(uint *)((longlong)param_1 + 4) | 0x10000000;
                 LOCK();
                 pppppuVar1 = param_1 + 6;
                 ppppuVar17 = *pppppuVar1;
                 *pppppuVar1 = (undefined8 ****)((longlong)*pppppuVar1 + 1);
                 UNLOCK();
                 puVar28 = auStackY_128;
                 if ((longlong)ppppuVar17 + 1 < 2) {
                   pcVar8 = (code *)swi(0x29);
                   (*pcVar8)(0xe);
                   puVar28 = auStackY_120;
                 }
-                *(undefined8 *)(puVar28 + -8) = 0x14001b0b6;
+                *(undefined8 *)(puVar28 + -8) = 0x14001a0a6;
                 AfdLRListAddItem((longlong)(param_1 + 0x18),AfdLRRepostReceive);
               }
 LAB_12:
-              *(undefined8 *)(puVar28 + -8) = 0x14001b0c2;
+              *(undefined8 *)(puVar28 + -8) = 0x14001a0b2;
               KeReleaseInStackQueuedSpinLock(puVar28 + 0x70);
               puVar27 = puVar28;
             }
 LAB_14:
             puVar29 = puVar27;
           }
           else {
             KeReleaseInStackQueuedSpinLock(&local_b8);
             local_res8._0_4_ = 0;
             local_res8 = (undefined8 *****)0x0;
           }
           plVar24 = *(longlong **)(puVar29 + 0x58);
           ppuVar21 = *param_4;
           if (plVar24 == (longlong *)(puVar29 + 0x58)) {
             uVar37 = *(uint *)(puVar29 + 0x68);
             uVar38 = *(undefined4 *)(puVar29 + 0x54);
           }
           else {
             uVar38 = *(undefined4 *)(ppuVar21 + 2);
             uVar37 = *(uint *)(ppuVar21 + 3);
             *(undefined4 *)(puVar29 + 0x54) = uVar38;
           }
           local_90 = (longlong)(int)local_res8;
           while (pppppppppppuVar33 = (undefined8 ***********)0x0,
                 plVar24 != (longlong *)(puVar29 + 0x58)) {
             if (((undefined1 *)plVar24[1] != puVar29 + 0x58) ||
                (lVar5 = *plVar24, *(longlong **)(lVar5 + 8) != plVar24)) goto LAB_11;
             plVar25 = plVar24 + -0x15;
             *(longlong *)(puVar29 + 0x58) = lVar5;
             *(undefined1 **)(lVar5 + 8) = puVar29 + 0x58;
             lVar5 = plVar24[2];
             if ((local_90 != -0x3ffffde5) &&
                ((*(uint *)(plVar24 + -0xf) & 0xc0000000) != 0xc0000000)) {
               lVar6 = plVar24[-0x14];
               if (lVar6 == 0) {
                 iVar35 = 0;
               }
               else {
                 puVar14 = ppuVar21[1];
                 local_80 = 0;
                 iVar35 = *(int *)(lVar5 + 0x10);
                 iVar4 = *(int *)(lVar5 + 0x20);
                 *(undefined8 **)(puVar29 + 0x28) = &local_80;
                 *(ulonglong *)(puVar29 + 0x20) = (ulonglong)uVar37;
-                *(undefined8 *)(puVar29 + -8) = 0x14001b19a;
+                *(undefined8 *)(puVar29 + -8) = 0x14001a18a;
                 RtlCopyMdlToMdl(puVar14,uVar38,lVar6,iVar35 - iVar4);
                 lVar6 = plVar24[-0x14];
                 iVar35 = (int)local_80;
-                *(undefined8 *)(puVar29 + -8) = 0x14001b1b2;
+                *(undefined8 *)(puVar29 + -8) = 0x14001a1a2;
                 AFDETW_TRACEBUFFER(puVar14,0,lVar6,(longlong)param_3);
                 lVar6 = plVar24[-0x14];
-                *(undefined8 *)(puVar29 + -8) = 0x14001b1c1;
+                *(undefined8 *)(puVar29 + -8) = 0x14001a1b1;
                 AFDETW_TRACEBUFFER(puVar14,(longlong)plVar25,lVar6,0);
                 plVar24[-0xe] = (ulonglong)(uint)(*(int *)(lVar5 + 0x10) + iVar35);
               }
               if (-1 < (char)*(undefined4 *)(lVar5 + 0x18)) {
                 *(int *)(puVar29 + 0x54) = *(int *)(puVar29 + 0x54) + iVar35;
                 uVar37 = uVar37 - iVar35;
                 if (((uVar37 == 0) &&
                     (ppuVar7 = (undefined8 **)*ppuVar21, ppuVar21 = (undefined8 **)0x0,
                     ppuVar7 != (undefined8 **)0x0)) &&
                    (ppuVar21 = ppuVar7, *(undefined1 **)(puVar29 + 0x58) != puVar29 + 0x58)) {
                   uVar38 = *(undefined4 *)(ppuVar7 + 2);
                   uVar37 = *(uint *)(ppuVar7 + 3);
                   *(undefined4 *)(puVar29 + 0x54) = uVar38;
                   goto LAB_17;
                 }
               }
               uVar38 = *(undefined4 *)(puVar29 + 0x54);
             }
 LAB_17:
             if ((DAT_4 & 8) != 0) {
               *(longlong *)(puVar29 + 0x28) = plVar24[-0xe];
               *(int *)(puVar29 + 0x20) = (int)plVar24[-0xf];
-              *(undefined8 *)(puVar29 + -8) = 0x14001b241;
+              *(undefined8 *)(puVar29 + -8) = 0x14001a231;
               WPP_SF_qqLP(0xf,&WPP_4baf20d1201f32f413bac65b914e826e_Traceguids,ppppuVar40,plVar25);
             }
             lVar5 = plVar24[-0xf];
             puVar29[0x48] = 1;
             *(longlong **)(puVar29 + 0x40) = plVar25;
             *(int *)(puVar29 + 0x38) = (int)lVar5;
             *(int *)(puVar29 + 0x30) = (int)plVar24[-0xe];
             *(longlong *)(puVar29 + 0x28) = plVar24[-0x14];
             *(undefined4 *)(puVar29 + 0x20) = 1;
-            *(undefined8 *)(puVar29 + -8) = 0x14001b27e;
+            *(undefined8 *)(puVar29 + -8) = 0x14001a26e;
             AFDETW_TRACERECV(1,0x1012,(short *)ppppuVar40,0,*(undefined4 *)(puVar29 + 0x20),
                              *(undefined8 *)(puVar29 + 0x28),*(undefined4 *)(puVar29 + 0x30),
                              *(undefined4 *)(puVar29 + 0x38),*(short **)(puVar29 + 0x40),
                              puVar29[0x48]);
-            *(undefined8 *)(puVar29 + -8) = 0x14001b28f;
+            *(undefined8 *)(puVar29 + -8) = 0x14001a27f;
             IofCompleteRequest(plVar25,AfdPriorityBoost);
             plVar24 = *(longlong **)(puVar29 + 0x58);
           }
 LAB_18:
           if (((int)local_res8 == 0) && (puVar29[0x50] == '\0')) {
             pppuVar16 = local_78;
             if (local_78 == (undefined8 ***)0x0) {
               pppuVar16 = param_4;
             }
             *pppuVar16 = pppppppppppuVar33;
           }
           if (local_98 != (undefined8 ****)0x0) {
             LOCK();
             ppppuVar40 = local_98 + 3;
             pppuVar16 = *ppppuVar40;
             *ppppuVar40 = (undefined8 ***)((longlong)*ppppuVar40 + -1);
             UNLOCK();
             if ((longlong)pppuVar16 < 2) {
               if (pppuVar16 == (undefined8 ***)0x1) {
                 ppppuVar40 = param_1[4];
-                *(undefined8 *)(puVar29 + -8) = 0x14001b2f7;
+                *(undefined8 *)(puVar29 + -8) = 0x14001a2e7;
                 AfdReturnBuffer((longlong)local_98,(longlong)ppppuVar40);
               }
               else {
                 pcVar8 = (code *)swi(0x29);
                 (*pcVar8)(0xe);
                 puVar29 = puVar29 + 8;
               }
             }
           }
           LOCK();
           pppppuVar1 = param_1 + 6;
           ppppuVar40 = *pppppuVar1;
           *pppppuVar1 = (undefined8 ****)((longlong)*pppppuVar1 + -1);
           UNLOCK();
           if ((longlong)ppppuVar40 < 2) {
             if (ppppuVar40 == (undefined8 ****)0x1) {
-              *(undefined8 *)(puVar29 + -8) = 0x14001b319;
+              *(undefined8 *)(puVar29 + -8) = 0x14001a309;
               AfdCloseConnection((undefined2 *)param_1);
             }
             else {
               pcVar8 = (code *)swi(0x29);
               (*pcVar8)(0xe);
               puVar29 = puVar29 + 8;
             }
           }
           if ((DAT_4 & 8) != 0) {
-            *(undefined8 *)(puVar29 + -8) = 0x14001b33f;
+            *(undefined8 *)(puVar29 + -8) = 0x14001a32f;
             WPP_SF_L(0x10,&WPP_4baf20d1201f32f413bac65b914e826e_Traceguids,(int)local_res8);
           }
           return (ulonglong)local_res8 & 0xffffffff;
         }
         uVar13 = AfdBFillPendingIrps((longlong)param_1,(*param_4)[1],0,local_d4,uVar37,
                                      ((byte)~*(byte *)((longlong)ppppuVar40 + 4) & 0xfffffff8 | 8)
                                      << 0x1b | param_2 & 2,(longlong *)&local_d0);
         pppppppppppuVar33 = local_d0;
         if ((int)uVar13 != -1) goto LAB_8;
         ppppppppppppuVar22 = (undefined8 ************)(local_d0 + -0x15);
         pppppppppppuVar34 = (undefined8 ***********)local_d0[2];
         *(int *)(param_1 + 0x11) = *(int *)(param_1 + 0x11) + -1;
         KeReleaseInStackQueuedSpinLock(&local_b8);
         if (*(int *)(pppppppppppuVar34 + 2) != 0) {
           pppppppppppuVar32 = (undefined8 ***********)pppppppppppuVar33[-0x14];
           uVar36 = *(int *)(pppppppppppuVar34 + 2) - *(int *)(pppppppppppuVar34 + 4);
           uVar37 = *(uint *)(pppppppppppuVar32 + 5);
           pppppppppppuVar31 = pppppppppppuVar32;
           if (uVar37 < uVar36) {
             do {
               uVar36 = uVar36 - uVar37;
               pppppppppppuVar32 = (undefined8 ***********)*pppppppppppuVar31;
               *pppppppppppuVar31 = (undefined8 **********)0x0;
               MmUnlockPages(pppppppppppuVar31);
               IoFreeMdl(pppppppppppuVar31);
               uVar37 = *(uint *)(pppppppppppuVar32 + 5);
               pppppppppppuVar31 = pppppppppppuVar32;
             } while (uVar37 < uVar36);
           }
           if (uVar36 != 0) {
             MmAdvanceMdl(pppppppppppuVar32,uVar36);
           }
           pppppppppppuVar33[-0x14] = pppppppppppuVar32;
           pppppppppppuVar34[4] = (undefined8 **********)(ulonglong)*(uint *)(pppppppppppuVar34 + 2);
         }
         pppppppppppuVar32 = (undefined8 ***********)pppppppppppuVar33[2];
         pppppppppppuVar32[-2] = (undefined8 **********)AfdRestartBufferReceiveWithUserIrp;
         pppppppppppuVar32[-1] = (undefined8 **********)param_1;
         *(undefined1 *)((longlong)pppppppppppuVar32 + -0x45) = 0xe0;
         pppppppppppuVar33 = (undefined8 ***********)pppppppppppuVar33[2];
         *(undefined2 *)(pppppppppppuVar33 + -9) = 0x80f;
         pppppppppppuVar33[-4] = (undefined8 **********)param_1[3];
         pppppppppppuVar33[-3] = (undefined8 **********)param_1[2];
         *(uint *)((longlong)pppppppppppuVar33 + -0x3c) = *(uint *)(pppppppppppuVar34 + 3) & 0x4060;
         *(int *)(pppppppppppuVar33 + -8) =
              *(int *)(pppppppppppuVar34 + 1) - *(int *)(pppppppppppuVar34 + 2);
         LOCK();
         *(int *)(ppppuVar40 + 0x1f) = *(int *)(ppppuVar40 + 0x1f) + 1;
         UNLOCK();
         IofCallDriver(param_1[3],ppppppppppppuVar22);
         goto LAB_1;
       }
       uVar37 = 0;
       if ((*(short *)((longlong)param_1 + 0x62) != 0x10) &&
          (puVar14 = AfdGetBuffer(uVar36,0,(longlong)param_1[4],0), puVar14 != (undefined8 *)0x0)) {
         puVar18 = &local_b8;
         KeReleaseInStackQueuedSpinLock();
         ppuVar21 = *param_4;
         do {
           local_88 = 0;
           AFDETW_TRACEBUFFER(puVar18,0,puVar14[7],(longlong)param_3);
           puVar18 = ppuVar21[1];
           RtlCopyMdlToBuffer(puVar18,*(undefined4 *)(ppuVar21 + 2),(ulonglong)uVar37 + puVar14[0xb],
                              ppuVar21[3]);
           uVar37 = uVar37 + (int)local_88;
           ppuVar21 = (undefined8 **)*ppuVar21;
         } while (ppuVar21 != (undefined8 **)0x0);
         puVar14[6] = param_1;
         *(ushort *)((longlong)puVar14 + 0x4c) =
              ~((short)param_2 * 2) & 4U | *(ushort *)((longlong)puVar14 + 0x4c) & 0xfffb | 1;
         *(undefined4 *)(puVar14[10] + 0x30) = 0;
         *(ulonglong *)(puVar14[10] + 0x38) = (ulonglong)uVar36;
         AfdCommonRestartBufferReceive(puVar14,0,uVar36);
         return 0;
       }
       KeReleaseInStackQueuedSpinLock(&local_b8);
       uVar37 = 10;
       uVar38 = 0x1f51;
     }
     else {
       if ((DAT_4 & 8) != 0) {
         WPP_SF_lq(0xc,&WPP_4baf20d1201f32f413bac65b914e826e_Traceguids,uVar37,ppppuVar40);
       }
       KeReleaseInStackQueuedSpinLock(&local_b8);
       uVar38 = 0x1f50;
       uVar37 = ~(*(uint *)(ppppuVar40 + 1) >> 0x11) & 1 | 0xc;
     }
 LAB_7:
     AFDETW_TRACEABORT(2,uVar38,(short *)ppppuVar40,uVar37);
     AfdBeginAbort((undefined2 *)param_1);
     LOCK();
     pppppuVar1 = param_1 + 6;
     ppppuVar40 = *pppppuVar1;
     *pppppuVar1 = (undefined8 ****)((longlong)*pppppuVar1 + -1);
     UNLOCK();
     if ((longlong)ppppuVar40 < 2) {
       if (ppppuVar40 == (undefined8 ****)0x1) {
         AfdCloseConnection((undefined2 *)param_1);
         return 0;
       }
       pcVar8 = (code *)swi(0x29);
       (*pcVar8)(0xe);
     }
     uVar13 = 0;
   }
   return uVar13;
 LAB_11:
   pcVar8 = (code *)swi(0x29);
   (*pcVar8)(3);
   puVar29 = puVar29 + 8;
   goto LAB_18;
 }
 

```


## AfdSuperAccept

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.26|
|i_ratio|0.6|
|m_ratio|0.99|
|b_ratio|0.88|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdSuperAccept|AfdSuperAccept|
|fullname|AfdSuperAccept|AfdSuperAccept|
|refcount|3|3|
|`length`|2256|2208|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACEACCEPTEX<br>AFDETW_TRACEACCEPT_ERROR<br>AfdCleanupSuperAccept<br>AfdFreeQueuedConnections<br>AfdGetFreeConnection<br>AfdNotifySockIndicateEventsUnlock<br>AfdReplenishListenBacklog<br>AfdReportConnectionAllocationFailure<br>AfdServiceSuperAccept<br>AfdWaitForListen<br>Feature_682670395__private_IsEnabledDeviceUsageNoInline</summary>NTOSKRNL.EXE::ExQueryDepthSList<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::ExpInterlockedPushEntrySList<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoAllocateMdl<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmProbeAndLockPages<br>NTOSKRNL.EXE::MmUnlockPages<br>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>NTOSKRNL.EXE::PsGetCurrentProcessId<br>WPP_SF_I</details>|<details><summary>Expand for full list:<br>AFDETW_TRACEACCEPTEX<br>AFDETW_TRACEACCEPT_ERROR<br>AfdCleanupSuperAccept<br>AfdFreeQueuedConnections<br>AfdGetFreeConnection<br>AfdNotifySockIndicateEventsUnlock<br>AfdReplenishListenBacklog<br>AfdReportConnectionAllocationFailure<br>AfdServiceSuperAccept<br>AfdWaitForListen<br>NTOSKRNL.EXE::ExQueryDepthSList</summary>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::ExpInterlockedPushEntrySList<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoAllocateMdl<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmProbeAndLockPages<br>NTOSKRNL.EXE::MmUnlockPages<br>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>NTOSKRNL.EXE::PsGetCurrentProcessId<br>WPP_SF_I</details>|
|calling|||
|paramcount|2|2|
|`address`|14002a310|140029300|
|sig|int __fastcall AfdSuperAccept(longlong * param_1, char * param_2)|int __fastcall AfdSuperAccept(longlong * param_1, char * param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdSuperAccept Called Diff


```diff
--- AfdSuperAccept called
+++ AfdSuperAccept called
@@ -11 +10,0 @@
-Feature_682670395__private_IsEnabledDeviceUsageNoInline
```


### AfdSuperAccept Diff


```diff
--- AfdSuperAccept
+++ AfdSuperAccept
@@ -1,341 +1,330 @@
 
 /* WARNING: Type propagation algorithm not settling */
 
 int AfdSuperAccept(longlong *param_1,char *param_2)
 
 {
-  char *pcVar1;
-  longlong *plVar2;
+  uint uVar1;
+  char *pcVar2;
   longlong *plVar3;
-  longlong ******pppppplVar4;
+  longlong *plVar4;
   longlong ******pppppplVar5;
-  code *pcVar6;
-  longlong *******ppppppplVar7;
-  char cVar8;
-  ushort uVar9;
-  uint uVar10;
+  longlong ******pppppplVar6;
+  code *pcVar7;
+  longlong *******ppppppplVar8;
+  char cVar9;
+  ushort uVar10;
   int extraout_EAX;
   undefined8 uVar11;
-  ulonglong uVar12;
-  longlong lVar13;
-  undefined2 *puVar14;
-  undefined4 uVar15;
-  short *psVar16;
-  undefined1 *puVar17;
-  short *psVar18;
-  longlong lVar19;
-  bool bVar20;
+  longlong lVar12;
+  undefined2 *puVar13;
+  undefined4 uVar14;
+  short *psVar15;
+  undefined1 *puVar16;
+  short *psVar17;
+  longlong lVar18;
+  bool bVar19;
   char *local_res10;
   short *local_res18;
   undefined1 auStackY_c8 [8];
   undefined1 auStackY_c0 [24];
   int local_88;
   char local_84;
   uint local_80;
   uint local_7c;
   uint local_78;
   longlong *******local_70;
   longlong *******local_68;
   longlong local_60;
   undefined8 local_58;
   undefined8 uStack_50;
   undefined8 local_48;
   
-  puVar17 = auStackY_c8;
+  puVar16 = auStackY_c8;
   local_58 = 0;
   uStack_50 = 0;
   local_48 = 0;
-  psVar18 = *(short **)(*(longlong *)(param_2 + 0x30) + 0x18);
-  psVar16 = (short *)0x0;
+  psVar17 = *(short **)(*(longlong *)(param_2 + 0x30) + 0x18);
+  psVar15 = (short *)0x0;
   local_res10 = param_2;
-  local_res18 = psVar18;
-  cVar8 = IoIs32bitProcess();
-  pcVar1 = *(char **)(param_2 + 0x20);
-  if (cVar8 == '\0') {
-    if (((char)param_1[8] != '\0') && (((ulonglong)pcVar1 & 3) != 0)) {
+  local_res18 = psVar17;
+  cVar9 = IoIs32bitProcess();
+  pcVar2 = *(char **)(param_2 + 0x20);
+  if (cVar9 == '\0') {
+    if (((char)param_1[8] != '\0') && (((ulonglong)pcVar2 & 3) != 0)) {
                     /* WARNING: Subroutine does not return */
       ExRaiseDatatypeMisalignment();
     }
-    local_60 = *(longlong *)(pcVar1 + 8);
-    local_7c = *(uint *)(pcVar1 + 0x10);
-    local_80 = *(uint *)(pcVar1 + 0x14);
-    local_78 = *(uint *)(pcVar1 + 0x18);
-    cVar8 = *pcVar1;
-    local_84 = pcVar1[1];
+    local_60 = *(longlong *)(pcVar2 + 8);
+    local_80 = *(uint *)(pcVar2 + 0x10);
+    local_78 = *(uint *)(pcVar2 + 0x14);
+    local_7c = *(uint *)(pcVar2 + 0x18);
+    cVar9 = *pcVar2;
+    local_84 = pcVar2[1];
 LAB_0:
-    if ((cVar8 == '\0') && (AfdSanServiceHelper != 0)) {
+    if ((cVar9 == '\0') && (AfdSanServiceHelper != 0)) {
       if ((DAT_1 & 1) != 0) {
         uVar11 = PsGetCurrentProcessId();
                     /* WARNING: Subroutine does not return */
-        WPP_SF_I(0xf,&WPP_01ba91c3881031ff6a80bb418d9e0f0f_Traceguids,uVar11);
+        WPP_SF_I(0xf,&WPP_5b175f1c8ee0367faafebdafa1b78fa8_Traceguids,uVar11);
       }
       local_88 = -0x3fffff06;
-      uVar15 = 0x1780;
+      uVar14 = 0x1780;
+    }
+    else if (((*(uint *)(psVar17 + 4) & 1) == 0) ||
+            ((((local_7c < 8 || (local_78 == 1)) ||
+              (uVar1 = *(uint *)(param_2 + 8), uVar1 < local_80)) ||
+             ((uVar1 - local_80 < local_78 || ((uVar1 - local_80) - local_78 < local_7c)))))) {
+      if ((*(uint *)(psVar17 + 4) & 1) == 0) {
+        if ((DAT_1 & 1) != 0) {
+                    /* WARNING: Subroutine does not return */
+          WPP_SF_I(0x10,&WPP_5b175f1c8ee0367faafebdafa1b78fa8_Traceguids,psVar17);
+        }
+        local_88 = -0x3ffffff3;
+      }
+      else {
+        local_88 = -0x3fffffdd;
+      }
+      uVar14 = 0x1781;
+      psVar15 = (short *)0x0;
     }
     else {
-      if (((*(uint *)(psVar18 + 4) & 1) != 0) && (7 < local_78)) {
-        if ((Feature_682670395__private_featureState & 0x10) == 0) {
-          uVar12 = Feature_682670395__private_IsEnabledDeviceUsageNoInline();
-          uVar10 = (uint)uVar12;
-        }
-        else {
-          uVar10 = Feature_682670395__private_featureState & 1;
-        }
-        if ((((uVar10 == 0) || (local_80 != 1)) &&
-            (uVar10 = *(uint *)(param_2 + 8), local_7c <= uVar10)) &&
-           ((local_80 <= uVar10 - local_7c && (local_78 <= (uVar10 - local_7c) - local_80)))) {
-          lVar13 = IoAllocateMdl(param_1[0xe],uVar10,0);
-          if (lVar13 == 0) {
-            AFDETW_TRACEACCEPTEX(0,0x1782,psVar18,0,0,0xc000009a,(ushort *)0x0,0);
-            local_88 = -0x3fffff66;
-            goto LAB_2;
+      lVar12 = IoAllocateMdl(param_1[0xe],uVar1,0);
+      if (lVar12 == 0) {
+        AFDETW_TRACEACCEPTEX(0,0x1782,psVar17,0,0,0xc000009a,(ushort *)0x0,0);
+        local_88 = -0x3fffff66;
+        goto LAB_2;
+      }
+      MmProbeAndLockPages(param_1[1],(char)param_1[8],1);
+      local_res18 = (short *)0x0;
+      local_88 = ObReferenceObjectByHandle
+                           (local_60,*(uint *)(param_2 + 0x18) >> 0xe & 3,
+                            *(undefined8 *)IoFileObjectType_exref);
+      psVar15 = local_res18;
+      if (local_88 < 0) {
+        uVar14 = 0x1784;
+      }
+      else {
+        ObfReferenceObject();
+        pcVar2 = local_res10;
+        if (*(longlong *)(psVar15 + 4) == AfdDeviceObject) {
+          lVar12 = *(longlong *)(psVar15 + 0xc);
+          LOCK();
+          bVar19 = *(int *)(lVar12 + 0x168) == 0;
+          if (bVar19) {
+            *(int *)(lVar12 + 0x168) = 4;
           }
-          MmProbeAndLockPages(param_1[1],(char)param_1[8],1);
-          local_res18 = (short *)0x0;
-          local_88 = ObReferenceObjectByHandle
-                               (local_60,*(uint *)(param_2 + 0x18) >> 0xe & 3,
-                                *(undefined8 *)IoFileObjectType_exref);
-          psVar16 = local_res18;
-          if (local_88 < 0) {
-            uVar15 = 0x1784;
-          }
-          else {
-            ObfReferenceObject();
-            pcVar1 = local_res10;
-            if (*(longlong *)(psVar16 + 4) == AfdDeviceObject) {
-              lVar13 = *(longlong *)(psVar16 + 0xc);
-              LOCK();
-              bVar20 = *(int *)(lVar13 + 0x168) == 0;
-              if (bVar20) {
-                *(int *)(lVar13 + 0x168) = 4;
+          UNLOCK();
+          if (bVar19) {
+            if (((((*(byte *)(lVar12 + 6) & 1) == 0) &&
+                 ((*(longlong *)(lVar12 + 0x108) == *(longlong *)(psVar17 + 0x84) ||
+                  (((*(uint *)(psVar17 + 4) >> 0x15 & 1) != 0 &&
+                   (*(longlong *)(lVar12 + 0x108) == *(longlong *)(psVar17 + 0x88))))))) &&
+                (((*(uint *)(lVar12 + 8) >> 8 & 1) == 0 || (*(char *)(lVar12 + 2) == '\x02')))) &&
+               ((((*(uint *)(lVar12 + 8) >> 8 & 1) != 0 || (*(char *)(lVar12 + 2) == '\x01')) &&
+                (*(longlong *)(lVar12 + 0x28) == 0)))) {
+              *(char *)(lVar12 + 0xbc) = local_84;
+              param_1[0x12] = local_60;
+              lVar18 = param_1[1];
+              uVar11 = 0x1788;
+              psVar15 = psVar17;
+              AFDETW_TRACEACCEPTEX
+                        (0,0x1788,psVar17,lVar18,*(undefined4 *)(local_res10 + 8),local_88,
+                         (ushort *)0x0,lVar12);
+              *(short **)(pcVar2 + 0x20) = local_res18;
+              *(uint *)(pcVar2 + 8) = local_80;
+              *(uint *)(pcVar2 + 0x18) = local_78;
+              *(uint *)(pcVar2 + 0x10) = local_7c;
+              if ((*(uint *)(psVar17 + 4) >> 8 & 1) == 0) {
+                LOCK();
+                *(int *)(psVar17 + 0x58) = *(int *)(psVar17 + 0x58) + 1;
+                UNLOCK();
+                if ((*(uint *)(psVar17 + 4) >> 0x16 & 1) != 0) {
+                  LOCK();
+                  *(int *)(*(longlong *)(psVar17 + 0x88) + 0x30) =
+                       *(int *)(*(longlong *)(psVar17 + 0x88) + 0x30) + 1;
+                  UNLOCK();
+                }
+                psVar17 = (short *)AfdReplenishListenBacklog
+                                             ((longlong)psVar17,uVar11,psVar15,lVar18);
+                local_88 = extraout_EAX;
               }
-              UNLOCK();
-              if (bVar20) {
-                if (((((*(byte *)(lVar13 + 6) & 1) == 0) &&
-                     ((*(longlong *)(lVar13 + 0x108) == *(longlong *)(psVar18 + 0x84) ||
-                      (((*(uint *)(psVar18 + 4) >> 0x15 & 1) != 0 &&
-                       (*(longlong *)(lVar13 + 0x108) == *(longlong *)(psVar18 + 0x88))))))) &&
-                    (((*(uint *)(lVar13 + 8) >> 8 & 1) == 0 || (*(char *)(lVar13 + 2) == '\x02'))))
-                   && ((((*(uint *)(lVar13 + 8) >> 8 & 1) != 0 || (*(char *)(lVar13 + 2) == '\x01'))
-                       && (*(longlong *)(lVar13 + 0x28) == 0)))) {
-                  *(char *)(lVar13 + 0xbc) = local_84;
-                  param_1[0x12] = local_60;
-                  lVar19 = param_1[1];
-                  uVar11 = 0x1788;
-                  psVar16 = psVar18;
-                  AFDETW_TRACEACCEPTEX
-                            (0,0x1788,psVar18,lVar19,*(undefined4 *)(local_res10 + 8),local_88,
-                             (ushort *)0x0,lVar13);
-                  *(short **)(pcVar1 + 0x20) = local_res18;
-                  *(uint *)(pcVar1 + 8) = local_7c;
-                  *(uint *)(pcVar1 + 0x18) = local_80;
-                  *(uint *)(pcVar1 + 0x10) = local_78;
-                  if ((*(uint *)(psVar18 + 4) >> 8 & 1) == 0) {
+              *(longlong **)(lVar12 + 0x160) = param_1;
+              if (((AfdDisableDirectSuperAccept == '\0') &&
+                  ((*(uint *)(psVar17 + 4) >> 0x16 & 1) == 0)) &&
+                 ((*(uint *)(psVar17 + 4) & 2) == 0)) {
+                psVar15 = psVar17 + 0x50;
+                uVar10 = ExQueryDepthSList(psVar15);
+                if ((uVar10 < 0x8000) &&
+                   (puVar13 = AfdGetFreeConnection((longlong)psVar17,'\0',(longlong *)0x0),
+                   puVar13 != (undefined2 *)0x0)) {
+                  *(undefined8 *)(puVar13 + 0x14) = 0xffffffffffffffff;
+                  param_1[0xf] = (longlong)puVar13;
+                  *(byte *)(param_1[0x17] + 3) = *(byte *)(param_1[0x17] + 3) | 1;
+                  LOCK();
+                  lVar12 = param_1[0xd];
+                  param_1[0xd] = (longlong)AfdCancelSuperAccept;
+                  UNLOCK();
+                  if (*(char *)((longlong)param_1 + 0x44) == '\0') {
                     LOCK();
-                    *(int *)(psVar18 + 0x58) = *(int *)(psVar18 + 0x58) + 1;
+                    bVar19 = *(longlong *)(puVar13 + 0x14) == -1;
+                    if (bVar19) {
+                      *(longlong **)(puVar13 + 0x14) = param_1;
+                    }
                     UNLOCK();
-                    if ((*(uint *)(psVar18 + 4) >> 0x16 & 1) != 0) {
-                      LOCK();
-                      *(int *)(*(longlong *)(psVar18 + 0x88) + 0x30) =
-                           *(int *)(*(longlong *)(psVar18 + 0x88) + 0x30) + 1;
-                      UNLOCK();
-                    }
-                    psVar18 = (short *)AfdReplenishListenBacklog
-                                                 ((longlong)psVar18,uVar11,psVar16,lVar19);
-                    local_88 = extraout_EAX;
-                  }
-                  *(longlong **)(lVar13 + 0x160) = param_1;
-                  if (((AfdDisableDirectSuperAccept == '\0') &&
-                      ((*(uint *)(psVar18 + 4) >> 0x16 & 1) == 0)) &&
-                     ((*(uint *)(psVar18 + 4) & 2) == 0)) {
-                    psVar16 = psVar18 + 0x50;
-                    uVar9 = ExQueryDepthSList(psVar16);
-                    if ((uVar9 < 0x8000) &&
-                       (puVar14 = AfdGetFreeConnection((longlong)psVar18,'\0',(longlong *)0x0),
-                       puVar14 != (undefined2 *)0x0)) {
-                      *(undefined8 *)(puVar14 + 0x14) = 0xffffffffffffffff;
-                      param_1[0xf] = (longlong)puVar14;
-                      *(byte *)(param_1[0x17] + 3) = *(byte *)(param_1[0x17] + 3) | 1;
-                      LOCK();
-                      lVar13 = param_1[0xd];
-                      param_1[0xd] = (longlong)AfdCancelSuperAccept;
-                      UNLOCK();
-                      if (*(char *)((longlong)param_1 + 0x44) == '\0') {
-                        LOCK();
-                        bVar20 = *(longlong *)(puVar14 + 0x14) == -1;
-                        if (bVar20) {
-                          *(longlong **)(puVar14 + 0x14) = param_1;
-                        }
-                        UNLOCK();
-                        if (bVar20) {
-                          lVar13 = ExpInterlockedPushEntrySList(psVar16,puVar14 + 0x58);
-                          if (lVar13 != 0) {
-                            if ((*(uint *)(psVar18 + 4) >> 8 & 1) != 0) {
-                              return 0x103;
-                            }
-                            uVar9 = ExQueryDepthSList(psVar16);
-                            if (uVar9 <= (ushort)psVar18[0x5f]) {
-                              return 0x103;
-                            }
-                            KeAcquireInStackQueuedSpinLock(psVar18 + 0x1c,&local_58);
-                            psVar18[0x5f] = uVar9;
-                            KeReleaseInStackQueuedSpinLock(&local_58);
-                            return 0x103;
+                    if (bVar19) {
+                      lVar12 = ExpInterlockedPushEntrySList(psVar15,puVar13 + 0x58);
+                      if (lVar12 != 0) {
+                        if ((*(uint *)(psVar17 + 4) >> 8 & 1) != 0) {
+                          return 0x103;
+                        }
+                        uVar10 = ExQueryDepthSList(psVar15);
+                        if (uVar10 <= (ushort)psVar17[0x5f]) {
+                          return 0x103;
+                        }
+                        KeAcquireInStackQueuedSpinLock(psVar17 + 0x1c,&local_58);
+                        psVar17[0x5f] = uVar10;
+                        KeReleaseInStackQueuedSpinLock(&local_58);
+                        return 0x103;
+                      }
+                      KeAcquireInStackQueuedSpinLock(psVar17 + 0x1c,&local_58);
+                      if ((*(uint *)(psVar17 + 4) & 0x800) == 0) {
+                        local_68 = (longlong *******)&local_70;
+                        local_70 = (longlong *******)&local_70;
+                        while (plVar3 = *(longlong **)(psVar17 + 0x30),
+                              plVar3 != (longlong *)(psVar17 + 0x30)) {
+                          lVar12 = *plVar3;
+                          plVar4 = (longlong *)plVar3[1];
+                          if (((longlong *)*(longlong *)(lVar12 + 8) != plVar3) ||
+                             ((longlong *)*plVar4 != plVar3)) goto LAB_3;
+                          *plVar4 = lVar12;
+                          *(longlong **)(lVar12 + 8) = plVar4;
+                          uVar11 = AfdServiceSuperAccept
+                                             ((longlong)psVar17,(undefined2 *)(plVar3 + -0x16),
+                                              &local_58,(longlong)&local_70);
+                          if ((char)uVar11 == '\0') {
+                            plVar4 = (longlong *)(psVar17 + 0x30);
+                            lVar12 = *plVar4;
+                            if (*(longlong **)(lVar12 + 8) != plVar4) goto LAB_3;
+                            *plVar3 = lVar12;
+                            plVar3[1] = (longlong)plVar4;
+                            *(longlong **)(lVar12 + 8) = plVar3;
+                            *plVar4 = (longlong)plVar3;
+                            break;
                           }
-                          KeAcquireInStackQueuedSpinLock(psVar18 + 0x1c,&local_58);
-                          if ((*(uint *)(psVar18 + 4) & 0x800) == 0) {
-                            local_68 = (longlong *******)&local_70;
-                            local_70 = (longlong *******)&local_70;
-                            while (plVar2 = *(longlong **)(psVar18 + 0x30),
-                                  plVar2 != (longlong *)(psVar18 + 0x30)) {
-                              lVar13 = *plVar2;
-                              plVar3 = (longlong *)plVar2[1];
-                              if (((longlong *)*(longlong *)(lVar13 + 8) != plVar2) ||
-                                 ((longlong *)*plVar3 != plVar2)) goto LAB_3;
-                              *plVar3 = lVar13;
-                              *(longlong **)(lVar13 + 8) = plVar3;
-                              uVar11 = AfdServiceSuperAccept
-                                                 ((longlong)psVar18,(undefined2 *)(plVar2 + -0x16),
-                                                  &local_58,(longlong)&local_70);
-                              if ((char)uVar11 == '\0') {
-                                plVar3 = (longlong *)(psVar18 + 0x30);
-                                lVar13 = *plVar3;
-                                if (*(longlong **)(lVar13 + 8) != plVar3) goto LAB_3;
-                                *plVar2 = lVar13;
-                                plVar2[1] = (longlong)plVar3;
-                                *(longlong **)(lVar13 + 8) = plVar2;
-                                *plVar3 = (longlong)plVar2;
-                                break;
-                              }
-                              KeAcquireInStackQueuedSpinLock(psVar18 + 0x1c,&local_58);
-                            }
-                            AfdNotifySockIndicateEventsUnlock((longlong)psVar18,&local_58,'\0');
-                            if ((longlong ********)local_70 == &local_70) {
-                              return 0x103;
-                            }
-                            local_res10 = (char *)((ulonglong)local_res10 & 0xffffffffffffff00);
-                            IoAcquireCancelSpinLock(&local_res10);
-                            IoReleaseCancelSpinLock((ulonglong)local_res10 & 0xff);
-                            while( true ) {
-                              ppppppplVar7 = local_70;
-                              if ((longlong ********)local_70 == &local_70) {
-                                return 0x103;
-                              }
-                              pppppplVar4 = *local_70;
-                              pppppplVar5 = local_70[1];
-                              if (((longlong *******)pppppplVar4[1] != local_70) ||
-                                 ((longlong *******)*pppppplVar5 != local_70)) break;
-                              *pppppplVar5 = (longlong *****)pppppplVar4;
-                              pppppplVar4[1] = (longlong *****)pppppplVar5;
-                              AFDETW_TRACEACCEPT_ERROR
-                                        (pppppplVar5,0x1839,(longlong)(local_70 + -0x15),
-                                         *(undefined4 *)(local_70 + -0xf));
-                              IofCompleteRequest(ppppppplVar7 + -0x15,AfdPriorityBoost);
-                            }
-LAB_3:
-                            pcVar6 = (code *)swi(0x29);
-                            (*pcVar6)(3);
-                            puVar17 = auStackY_c0;
-                          }
-                          *(undefined8 *)(puVar17 + -8) = 0x14002a9f5;
-                          KeReleaseInStackQueuedSpinLock(puVar17 + 0x70);
-                          *(undefined8 *)(puVar17 + -8) = 0x14002aa02;
-                          AfdFreeQueuedConnections(psVar18);
+                          KeAcquireInStackQueuedSpinLock(psVar17 + 0x1c,&local_58);
+                        }
+                        AfdNotifySockIndicateEventsUnlock((longlong)psVar17,&local_58,'\0');
+                        if ((longlong ********)local_70 == &local_70) {
                           return 0x103;
                         }
-                      }
-                      AFDETW_TRACEACCEPT_ERROR(lVar13,0x183a,(longlong)param_1,0xc0000120);
-                      AfdCleanupSuperAccept((longlong)param_1,0xc0000120);
-                      LOCK();
-                      lVar13 = param_1[0xd];
-                      param_1[0xd] = 0;
-                      UNLOCK();
-                      if (lVar13 == 0) {
                         local_res10 = (char *)((ulonglong)local_res10 & 0xffffffffffffff00);
                         IoAcquireCancelSpinLock(&local_res10);
                         IoReleaseCancelSpinLock((ulonglong)local_res10 & 0xff);
+                        while( true ) {
+                          ppppppplVar8 = local_70;
+                          if ((longlong ********)local_70 == &local_70) {
+                            return 0x103;
+                          }
+                          pppppplVar5 = *local_70;
+                          pppppplVar6 = local_70[1];
+                          if (((longlong *******)pppppplVar5[1] != local_70) ||
+                             ((longlong *******)*pppppplVar6 != local_70)) break;
+                          *pppppplVar6 = (longlong *****)pppppplVar5;
+                          pppppplVar5[1] = (longlong *****)pppppplVar6;
+                          AFDETW_TRACEACCEPT_ERROR
+                                    (pppppplVar6,0x1839,(longlong)(local_70 + -0x15),
+                                     *(undefined4 *)(local_70 + -0xf));
+                          IofCompleteRequest(ppppppplVar8 + -0x15,AfdPriorityBoost);
+                        }
+LAB_3:
+                        pcVar7 = (code *)swi(0x29);
+                        (*pcVar7)(3);
+                        puVar16 = auStackY_c0;
                       }
-                      IofCompleteRequest(param_1,AfdPriorityBoost);
+                      *(undefined8 *)(puVar16 + -8) = 0x1400299b9;
+                      KeReleaseInStackQueuedSpinLock(puVar16 + 0x70);
+                      *(undefined8 *)(puVar16 + -8) = 0x1400299c6;
+                      AfdFreeQueuedConnections(psVar17);
                       return 0x103;
                     }
                   }
-                  *pcVar1 = '\x0f';
-                  *(byte *)(param_1[0x17] + 3) = *(byte *)(param_1[0x17] + 3) | 1;
-                  AfdWaitForListen(param_1,pcVar1);
-                  if ((*(uint *)(psVar18 + 4) >> 8 & 1) != 0) {
-                    return 0x103;
+                  AFDETW_TRACEACCEPT_ERROR(lVar12,0x183a,(longlong)param_1,0xc0000120);
+                  AfdCleanupSuperAccept((longlong)param_1,0xc0000120);
+                  LOCK();
+                  lVar12 = param_1[0xd];
+                  param_1[0xd] = 0;
+                  UNLOCK();
+                  if (lVar12 == 0) {
+                    local_res10 = (char *)((ulonglong)local_res10 & 0xffffffffffffff00);
+                    IoAcquireCancelSpinLock(&local_res10);
+                    IoReleaseCancelSpinLock((ulonglong)local_res10 & 0xff);
                   }
-                  if (-1 < local_88) {
-                    return 0x103;
-                  }
-                  AfdReportConnectionAllocationFailure((longlong)psVar18,local_88);
+                  IofCompleteRequest(param_1,AfdPriorityBoost);
                   return 0x103;
                 }
-                AFDETW_TRACEACCEPTEX(0,0x1787,psVar18,0,0,0xc000000d,(ushort *)0x0,0);
-                LOCK();
-                *(undefined4 *)(lVar13 + 0x168) = 0;
-                UNLOCK();
-                local_88 = -0x3ffffff3;
-                goto LAB_2;
               }
-              uVar15 = 0x1786;
-              goto LAB_4;
+              *pcVar2 = '\x0f';
+              *(byte *)(param_1[0x17] + 3) = *(byte *)(param_1[0x17] + 3) | 1;
+              AfdWaitForListen(param_1,pcVar2);
+              if ((*(uint *)(psVar17 + 4) >> 8 & 1) != 0) {
+                return 0x103;
+              }
+              if (-1 < local_88) {
+                return 0x103;
+              }
+              AfdReportConnectionAllocationFailure((longlong)psVar17,local_88);
+              return 0x103;
             }
-            local_88 = -0x3ffffff8;
-            uVar15 = 0x1785;
+            AFDETW_TRACEACCEPTEX(0,0x1787,psVar17,0,0,0xc000000d,(ushort *)0x0,0);
+            LOCK();
+            *(undefined4 *)(lVar12 + 0x168) = 0;
+            UNLOCK();
+            local_88 = -0x3ffffff3;
+            goto LAB_2;
           }
-          goto LAB_5;
+          uVar14 = 0x1786;
+          goto LAB_4;
         }
-      }
-      if ((*(uint *)(psVar18 + 4) & 1) == 0) {
-        if ((DAT_1 & 1) != 0) {
-                    /* WARNING: Subroutine does not return */
-          WPP_SF_I(0x10,&WPP_01ba91c3881031ff6a80bb418d9e0f0f_Traceguids,psVar18);
-        }
-        local_88 = -0x3ffffff3;
-      }
-      else {
-        local_88 = -0x3fffffdd;
-      }
-      uVar15 = 0x1781;
-      psVar16 = (short *)0x0;
+        local_88 = -0x3ffffff8;
+        uVar14 = 0x1785;
+      }
     }
   }
   else {
     if (0x13 < *(uint *)(param_2 + 0x10)) {
-      if (((char)param_1[8] != '\0') && (((ulonglong)pcVar1 & 3) != 0)) {
+      if (((char)param_1[8] != '\0') && (((ulonglong)pcVar2 & 3) != 0)) {
                     /* WARNING: Subroutine does not return */
         ExRaiseDatatypeMisalignment();
       }
-      local_60 = (longlong)*(int *)(pcVar1 + 4);
-      local_7c = *(uint *)(pcVar1 + 8);
-      local_80 = *(uint *)(pcVar1 + 0xc);
-      local_78 = *(uint *)(pcVar1 + 0x10);
-      cVar8 = *pcVar1;
-      local_84 = pcVar1[1];
+      local_60 = (longlong)*(int *)(pcVar2 + 4);
+      local_80 = *(uint *)(pcVar2 + 8);
+      local_78 = *(uint *)(pcVar2 + 0xc);
+      local_7c = *(uint *)(pcVar2 + 0x10);
+      cVar9 = *pcVar2;
+      local_84 = pcVar2[1];
       goto LAB_0;
     }
-    uVar15 = 0x177d;
+    uVar14 = 0x177d;
 LAB_4:
     local_88 = -0x3ffffff3;
   }
-LAB_5:
-  AFDETW_TRACEACCEPTEX(0,uVar15,psVar18,0,0,local_88,(ushort *)0x0,0);
+  AFDETW_TRACEACCEPTEX(0,uVar14,psVar17,0,0,local_88,(ushort *)0x0,0);
 LAB_2:
-  if (psVar16 != (short *)0x0) {
-    ObfDereferenceObject(psVar16);
+  if (psVar15 != (short *)0x0) {
+    ObfDereferenceObject(psVar15);
     ObfDereferenceObject(param_1[0x13]);
   }
   if (param_1[1] != 0) {
     if ((*(byte *)(param_1[1] + 10) & 2) != 0) {
       MmUnlockPages();
     }
     IoFreeMdl(param_1[1]);
     param_1[1] = 0;
   }
   param_1[7] = 0;
   *(int *)(param_1 + 6) = local_88;
   IofCompleteRequest(param_1,0);
   return local_88;
 }
 

```


## AfdSanConnectHandler

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.29|
|i_ratio|0.53|
|m_ratio|0.96|
|b_ratio|0.77|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdSanConnectHandler|AfdSanConnectHandler|
|fullname|AfdSanConnectHandler|AfdSanConnectHandler|
|refcount|3|3|
|`length`|3458|3756|
|`called`|<details><summary>Expand for full list:<br>AfdAllocateZeroedFromLookasideList<br>AfdCleanupSuperAccept<br>AfdCloseConnection<br>AfdCreateConnection<br>AfdGetFreeConnection<br>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdMapMdlChain<br>AfdNotifySockEventsChangedUnderLock<br>AfdNotifySockIndicateEventsUnlock<br>AfdSanInitEndpoint</summary>AfdSanReleaseConnection<br>AfdServiceSuperAccept<br>AfdServiceWaitForListen<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::ExRaiseStatus<br>NTOSKRNL.EXE::ExpInterlockedPushEntrySList<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoGetCurrentProcess<br>NTOSKRNL.EXE::IoGetRelatedDeviceObject<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IoThreadToProcess<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmMapLockedPages<br>NTOSKRNL.EXE::ObCloseHandle<br>NTOSKRNL.EXE::ObOpenObjectByPointer<br>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfDereferenceObject<br>PplFreeToLookasideList<br>WPP_SF_<br>WPP_SF_I<br>WPP_SF_qq<br>memcpy</details>|<details><summary>Expand for full list:<br>AfdAllocateZeroedFromLookasideList<br>AfdCleanupSuperAccept<br>AfdCloseConnection<br>AfdCreateConnection<br>AfdGetFreeConnection<br>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdMapMdlChain<br>AfdNotifySockEventsChangedUnderLock<br>AfdNotifySockIndicateEventsUnlock<br>AfdSanInitEndpoint</summary>AfdSanReleaseConnection<br>AfdServiceSuperAccept<br>AfdServiceWaitForListen<br>Feature_3923194169__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::ExRaiseStatus<br>NTOSKRNL.EXE::ExpInterlockedPushEntrySList<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoGetCurrentProcess<br>NTOSKRNL.EXE::IoGetRelatedDeviceObject<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IoThreadToProcess<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmMapLockedPages<br>NTOSKRNL.EXE::ObCloseHandle<br>NTOSKRNL.EXE::ObOpenObjectByPointer<br>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfDereferenceObject<br>PplFreeToLookasideList<br>WPP_SF_<br>WPP_SF_I<br>WPP_SF_qq<br>memcpy</details>|
|calling|||
|paramcount|4|4|
|`address`|14005c570|14005cc50|
|sig|int __fastcall AfdSanConnectHandler(ulonglong param_1, longlong param_2, ulonglong param_3, undefined8 param_4)|int __fastcall AfdSanConnectHandler(ulonglong param_1, longlong param_2, ulonglong param_3, undefined8 param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdSanConnectHandler Called Diff


```diff
--- AfdSanConnectHandler called
+++ AfdSanConnectHandler called
@@ -14,0 +15 @@
+Feature_3923194169__private_IsEnabledDeviceUsageNoInline
```


### AfdSanConnectHandler Diff


```diff
--- AfdSanConnectHandler
+++ AfdSanConnectHandler
@@ -1,655 +1,704 @@
 
 int AfdSanConnectHandler(ulonglong param_1,longlong param_2,ulonglong param_3,undefined8 param_4)
 
 {
   longlong *plVar1;
   byte *pbVar2;
   uint *puVar3;
   short sVar4;
-  ushort uVar5;
+  uint uVar5;
   uint uVar6;
-  int *piVar7;
-  short *psVar8;
+  uint uVar7;
+  int *piVar8;
+  short *psVar9;
+  longlong *plVar10;
+  code *pcVar11;
+  char cVar12;
+  int iVar13;
+  longlong *plVar14;
+  longlong lVar15;
+  longlong lVar16;
+  ulonglong uVar17;
+  undefined2 *puVar18;
+  longlong lVar19;
+  longlong lVar20;
+  void *pvVar21;
+  undefined8 uVar22;
+  short *psVar23;
   ushort *_Src;
-  longlong *plVar9;
-  code *pcVar10;
-  char cVar11;
-  int iVar12;
-  longlong *plVar13;
-  longlong lVar14;
-  longlong lVar15;
-  ulonglong uVar16;
-  undefined2 *puVar17;
-  longlong lVar18;
-  void *pvVar19;
-  undefined8 uVar20;
-  short *psVar21;
   void *_Src_00;
-  undefined8 *puVar22;
-  undefined8 *puVar23;
-  undefined1 *puVar24;
+  undefined8 *puVar24;
+  undefined8 *puVar25;
+  undefined1 *puVar26;
+  ushort uVar27;
+  uint uVar28;
+  size_t _Size;
   undefined4 *_Dst;
-  uint uVar25;
-  longlong lVar26;
   undefined8 uStackY_140;
   undefined1 auStackY_138 [32];
   undefined1 local_f8 [8];
   undefined2 *local_f0;
-  uint local_e8;
-  longlong local_e0;
+  longlong local_e8;
+  uint local_e0 [2];
   undefined8 *local_d8;
-  uint local_d0;
-  undefined8 local_c0;
-  undefined8 uStack_b8;
-  undefined8 local_b0;
-  longlong local_a8;
+  undefined8 local_d0;
+  uint local_c8;
+  undefined8 local_b8;
+  undefined8 uStack_b0;
+  undefined8 local_a8;
   longlong local_a0;
   ushort *local_98;
   longlong local_80;
-  longlong local_78 [2];
+  longlong local_70;
   short *local_68;
   short *local_60 [3];
   longlong *local_48;
   
-  local_c0 = 0;
-  uStack_b8 = 0;
-  local_b0 = 0;
-  local_e0 = 0;
+  local_b8 = 0;
+  uStack_b0 = 0;
   local_a8 = 0;
+  local_e8 = 0;
+  local_a0 = 0;
   plVar1 = (longlong *)(param_1 + 0x18);
-  cVar11 = IoIs32bitProcess();
-  if (cVar11 == '\0') {
+  cVar12 = IoIs32bitProcess();
+  if (cVar12 == '\0') {
 LAB_0:
-    psVar8 = *(short **)(*(longlong *)(param_2 + 0x30) + 0x18);
-    local_68 = psVar8;
+    psVar9 = *(short **)(*(longlong *)(param_2 + 0x30) + 0x18);
+    local_68 = psVar9;
     *(undefined8 *)(param_1 + 0x38) = 0;
-    puVar22 = (undefined8 *)*plVar1;
-    local_d8 = puVar22;
-    local_60[1] = (short *)puVar22;
-    if (((0x1f < *(uint *)(param_2 + 0x10)) && (*(int *)(puVar22 + 2) == 2)) &&
-       (*(ushort *)((longlong)puVar22 + 0x14) + 0x1e <= *(uint *)(param_2 + 0x10))) {
-      cVar11 = IoIs32bitProcess(param_1);
-      if (cVar11 == '\0') {
+    puVar24 = (undefined8 *)*plVar1;
+    local_d8 = puVar24;
+    local_60[1] = (short *)puVar24;
+    if (((0x1f < *(uint *)(param_2 + 0x10)) && (*(int *)(puVar24 + 2) == 2)) &&
+       (*(ushort *)((longlong)puVar24 + 0x14) + 0x1e <= *(uint *)(param_2 + 0x10))) {
+      cVar12 = IoIs32bitProcess(param_1);
+      if (cVar12 == '\0') {
         if (0xf < *(uint *)(param_2 + 8)) goto LAB_1;
       }
       else if (7 < *(uint *)(param_2 + 8)) {
 LAB_1:
-        uVar25 = *(ushort *)((longlong)puVar22 + 0x14) + 8;
-        local_e8 = uVar25;
-        local_d0 = uVar25;
+        uVar28 = *(ushort *)((longlong)puVar24 + 0x14) + 8;
+        local_e0[0] = uVar28;
+        local_c8 = uVar28;
         local_98 = (ushort *)
-                   ((ulonglong)*(ushort *)((longlong)puVar22 + 0x14) + 0x18 + (longlong)puVar22);
+                   ((ulonglong)*(ushort *)((longlong)puVar24 + 0x14) + 0x18 + (longlong)puVar24);
         if ((longlong)((longlong)local_98 + ((ulonglong)*local_98 - *plVar1) + 4) <=
             (longlong)*(int *)(param_2 + 0x10)) {
-          if ((*psVar8 == 0xafd) &&
-             (lVar14 = IoGetCurrentProcess(), *(longlong *)(psVar8 + 0x18) == lVar14)) {
-            puVar24 = (undefined1 *)puVar22[1];
-            if (puVar24 == (undefined1 *)0x0) {
+          if ((*psVar9 == 0xafd) &&
+             (lVar15 = IoGetCurrentProcess(), *(longlong *)(psVar9 + 0x18) == lVar15)) {
+            puVar26 = (undefined1 *)puVar24[1];
+            if (puVar26 == (undefined1 *)0x0) {
               if ((DAT_2 & 4) != 0) {
-                WPP_SF_(0x17,&WPP_b1893ce3e4e03974ce237ee1d23f932c_Traceguids,param_3,param_4);
+                WPP_SF_(0x17,&WPP_d87f5cfd203e31ba1feb40bae02b1e31_Traceguids,param_3,param_4);
               }
                     /* WARNING: Subroutine does not return */
               ExRaiseStatus(0xc000000d);
             }
             if (*(char *)(param_1 + 0x40) != '\0') {
-              if (((ulonglong)puVar24 & 3) != 0) {
+              if (((ulonglong)puVar26 & 3) != 0) {
                     /* WARNING: Subroutine does not return */
                 ExRaiseDatatypeMisalignment();
               }
-              if (*(undefined1 **)MmUserProbeAddress_exref <= puVar24) {
-                puVar24 = *(undefined1 **)MmUserProbeAddress_exref;
+              if (*(undefined1 **)MmUserProbeAddress_exref <= puVar26) {
+                puVar26 = *(undefined1 **)MmUserProbeAddress_exref;
               }
-              *puVar24 = *puVar24;
-              puVar24[0x13] = puVar24[0x13];
+              *puVar26 = *puVar26;
+              puVar26[0x13] = puVar26[0x13];
             }
-            *(undefined4 *)(puVar22 + 2) = 1;
+            *(undefined4 *)(puVar24 + 2) = 1;
             IoIs32bitProcess(param_1);
-            puVar23 = (undefined8 *)
+            puVar25 = (undefined8 *)
                       ((ulonglong)*(uint *)(*(longlong *)(param_1 + 8) + 0x2c) +
                       *(longlong *)(*(longlong *)(param_1 + 8) + 0x20));
-            uVar16 = CONCAT71((int7)((ulonglong)param_4 >> 8),*(undefined1 *)(param_1 + 0x40));
+            uVar17 = CONCAT71((int7)((ulonglong)param_4 >> 8),*(undefined1 *)(param_1 + 0x40));
             local_80 = 0;
-            iVar12 = ObReferenceObjectByHandle
-                               (*puVar22,*(uint *)(param_2 + 0x18) >> 0xe & 3,
-                                *(undefined8 *)IoFileObjectType_exref,uVar16);
-            lVar14 = local_80;
-            local_a8 = local_80;
-            puVar24 = auStackY_138;
-            if (iVar12 < 0) goto LAB_3;
-            lVar15 = IoGetRelatedDeviceObject(local_80);
-            if (lVar15 == AfdDeviceObject) {
-              psVar8 = *(short **)(lVar14 + 0x18);
-              local_60[2] = psVar8;
-              if ((((*(uint *)(psVar8 + 4) & 1) != 0) && ((char)psVar8[1] != '\x06')) &&
-                 ((*(uint *)(psVar8 + 4) >> 0xb & 1) == 0)) {
+            iVar13 = ObReferenceObjectByHandle
+                               (*puVar24,*(uint *)(param_2 + 0x18) >> 0xe & 3,
+                                *(undefined8 *)IoFileObjectType_exref,uVar17);
+            lVar15 = local_80;
+            local_a0 = local_80;
+            puVar26 = auStackY_138;
+            if (iVar13 < 0) goto LAB_3;
+            lVar16 = IoGetRelatedDeviceObject(local_80);
+            if (lVar16 == AfdDeviceObject) {
+              psVar9 = *(short **)(lVar15 + 0x18);
+              local_60[2] = psVar9;
+              if ((((*(uint *)(psVar9 + 4) & 1) != 0) && ((char)psVar9[1] != '\x06')) &&
+                 ((*(uint *)(psVar9 + 4) >> 0xb & 1) == 0)) {
                 if ((DAT_2 & 4) != 0) {
-                  uVar16 = param_1;
-                  WPP_SF_qq(0x18,&WPP_b1893ce3e4e03974ce237ee1d23f932c_Traceguids,psVar8,param_1);
+                  uVar17 = param_1;
+                  WPP_SF_qq(0x18,&WPP_d87f5cfd203e31ba1feb40bae02b1e31_Traceguids,psVar9,param_1);
                 }
-                puVar24 = auStackY_138;
-                if (((*(uint *)(psVar8 + 4) & 2) == 0) ||
-                   (puVar24 = auStackY_138, (*(uint *)(psVar8 + 4) >> 8 & 1) != 0)) {
+                puVar26 = auStackY_138;
+                if (((*(uint *)(psVar9 + 4) & 2) == 0) ||
+                   (puVar26 = auStackY_138, (*(uint *)(psVar9 + 4) >> 8 & 1) != 0)) {
                   while( true ) {
-                    *(undefined8 *)(puVar24 + -8) = 0x14005c963;
-                    puVar17 = AfdGetFreeConnection
-                                        ((longlong)psVar8,'\0',(longlong *)(puVar24 + 0x58));
-                    *(undefined2 **)(puVar24 + 0x48) = puVar17;
-                    if ((puVar17 == (undefined2 *)0x0) || (*(longlong *)(puVar24 + 0x58) == 0))
+                    *(undefined8 *)(puVar26 + -8) = 0x14005d046;
+                    puVar18 = AfdGetFreeConnection
+                                        ((longlong)psVar9,'\0',(longlong *)(puVar26 + 0x50));
+                    *(undefined2 **)(puVar26 + 0x48) = puVar18;
+                    if ((puVar18 == (undefined2 *)0x0) || (*(longlong *)(puVar26 + 0x50) == 0))
                     break;
                     if (DAT_4 < '\0') {
                     /* WARNING: Subroutine does not return */
-                      *(undefined8 *)(puVar24 + -8) = 0x14005c9a0;
-                      WPP_SF_I(0x19,&WPP_b1893ce3e4e03974ce237ee1d23f932c_Traceguids,puVar17);
-                    }
-                    lVar14 = *(longlong *)(*(longlong *)(puVar24 + 0x58) + 0xb8);
-                    *(longlong *)(puVar24 + 0x98) = lVar14;
-                    lVar15 = *(longlong *)(lVar14 + 0x20);
-                    *(longlong *)(puVar24 + 200) = lVar15;
-                    uVar20 = *(undefined8 *)(lVar15 + 0x18);
-                    *(undefined8 *)(puVar24 + 0xc0) = uVar20;
-                    *(undefined8 *)(puVar24 + 0xd8) = uVar20;
-                    if ((*(uint *)(psVar8 + 4) >> 8 & 1) == 0) {
+                      *(undefined8 *)(puVar26 + -8) = 0x14005d083;
+                      WPP_SF_I(0x19,&WPP_d87f5cfd203e31ba1feb40bae02b1e31_Traceguids,puVar18);
+                    }
+                    lVar15 = *(longlong *)(*(longlong *)(puVar26 + 0x50) + 0xb8);
+                    lVar16 = *(longlong *)(lVar15 + 0x20);
+                    *(longlong *)(puVar26 + 200) = lVar16;
+                    uVar22 = *(undefined8 *)(lVar16 + 0x18);
+                    *(undefined8 *)(puVar26 + 0x68) = uVar22;
+                    *(undefined8 *)(puVar26 + 0xd8) = uVar22;
+                    if ((*(uint *)(psVar9 + 4) >> 8 & 1) == 0) {
                       LOCK();
-                      *(int *)(psVar8 + 0x58) = *(int *)(psVar8 + 0x58) + -1;
+                      *(int *)(psVar9 + 0x58) = *(int *)(psVar9 + 0x58) + -1;
                       UNLOCK();
-                      *(undefined8 *)(puVar24 + -8) = 0x14005c9fd;
+                      *(undefined8 *)(puVar26 + -8) = 0x14005d0d5;
                       ExpInterlockedPushEntrySList
-                                (psVar8 + 0x48,*(longlong *)(puVar24 + 0x48) + 0xb0);
+                                (psVar9 + 0x48,*(longlong *)(puVar26 + 0x48) + 0xb0);
                     }
                     else {
                       LOCK();
-                      plVar1 = (longlong *)(*(longlong *)(puVar24 + 0x48) + 0x30);
-                      lVar15 = *plVar1;
+                      plVar1 = (longlong *)(*(longlong *)(puVar26 + 0x48) + 0x30);
+                      lVar16 = *plVar1;
                       *plVar1 = *plVar1 + -1;
                       UNLOCK();
-                      if (lVar15 < 2) {
-                        if (lVar15 == 1) {
-                          *(undefined8 *)(puVar24 + -8) = 0x14005ca28;
-                          AfdCloseConnection(*(undefined2 **)(puVar24 + 0x48));
+                      if (lVar16 < 2) {
+                        if (lVar16 == 1) {
+                          *(undefined8 *)(puVar26 + -8) = 0x14005d100;
+                          AfdCloseConnection(*(undefined2 **)(puVar26 + 0x48));
                         }
                         else {
-                          pcVar10 = (code *)swi(0x29);
-                          (*pcVar10)(0xe);
-                          puVar24 = puVar24 + 8;
+                          pcVar11 = (code *)swi(0x29);
+                          (*pcVar11)(0xe);
+                          puVar26 = puVar26 + 8;
                         }
                       }
                     }
-                    uVar20 = *(undefined8 *)(param_1 + 0x98);
-                    *(undefined8 *)(puVar24 + -8) = 0x14005ca3f;
-                    lVar15 = IoThreadToProcess(uVar20);
-                    *(undefined8 *)(puVar24 + -8) = 0x14005ca4e;
-                    lVar18 = IoGetCurrentProcess();
-                    uVar25 = *(uint *)(puVar24 + 0x50);
-                    if (lVar15 == lVar18) {
-                      lVar15 = *(longlong *)(puVar24 + 0x58);
-                      if (*(uint *)(lVar14 + 0x10) < uVar25) {
-                        iVar12 = -0x3fffffdd;
+                    uVar22 = *(undefined8 *)(param_1 + 0x98);
+                    *(undefined8 *)(puVar26 + -8) = 0x14005d117;
+                    lVar19 = IoThreadToProcess(uVar22);
+                    *(undefined8 *)(puVar26 + -8) = 0x14005d126;
+                    lVar20 = IoGetCurrentProcess();
+                    lVar16 = *(longlong *)(puVar26 + 0x50);
+                    if (lVar19 == lVar20) {
+                      if (*(uint *)(lVar15 + 0x10) < *(uint *)(puVar26 + 0x58)) {
+                        iVar13 = -0x3fffffdd;
                       }
                       else {
-                        puVar22 = *(undefined8 **)(lVar15 + 8);
-                        *(undefined8 *)(puVar24 + -8) = 0x14005ca7a;
-                        uVar20 = AfdMapMdlChain(puVar22);
-                        iVar12 = (int)uVar20;
-                        if (-1 < iVar12) {
-                          *(undefined8 *)(puVar24 + 0x70) = 0;
-                          uVar20 = *(undefined8 *)(lVar15 + 0x98);
-                          *(undefined8 *)(puVar24 + -8) = 0x14005ca96;
-                          lVar14 = IoThreadToProcess(uVar20);
-                          uVar20 = *(undefined8 *)(param_1 + 0x98);
-                          *(undefined8 *)(puVar24 + -8) = 0x14005caac;
-                          lVar18 = IoThreadToProcess(uVar20);
-                          if (lVar18 == lVar14) {
-                            *(undefined8 *)(puVar24 + 0x70) = *(undefined8 *)(lVar15 + 0x90);
-                            puVar24[0x158] = 0;
-                            iVar12 = 0;
+                        *(longlong *)(puVar26 + 0xc0) = lVar16;
+                        puVar24 = *(undefined8 **)(lVar16 + 8);
+                        *(undefined8 *)(puVar26 + -8) = 0x14005d159;
+                        uVar22 = AfdMapMdlChain(puVar24);
+                        iVar13 = (int)uVar22;
+                        if (-1 < iVar13) {
+                          *(undefined8 *)(puVar26 + 0x78) = 0;
+                          uVar22 = *(undefined8 *)(lVar16 + 0x98);
+                          *(undefined8 *)(puVar26 + -8) = 0x14005d174;
+                          lVar16 = IoThreadToProcess(uVar22);
+                          uVar22 = *(undefined8 *)(param_1 + 0x98);
+                          *(undefined8 *)(puVar26 + -8) = 0x14005d18a;
+                          lVar19 = IoThreadToProcess(uVar22);
+                          if (lVar19 == lVar16) {
+                            lVar16 = *(longlong *)(puVar26 + 0xc0);
+                            *(undefined8 *)(puVar26 + 0x78) = *(undefined8 *)(lVar16 + 0x90);
+                            iVar13 = 0;
+                            puVar26[0x158] = 0;
                           }
                           else {
-                            *(undefined1 **)(puVar24 + 0x30) = puVar24 + 0x70;
-                            puVar24[0x28] = 1;
-                            *(undefined8 *)(puVar24 + 0x20) = *(undefined8 *)IoFileObjectType_exref;
-                            *(undefined8 *)(puVar24 + -8) = 0x14005cb0a;
-                            iVar12 = ObOpenObjectByPointer
-                                               (*(undefined8 *)(puVar24 + 200),0x40,0,0x2000000);
-                            puVar24[0x158] = 1;
+                            *(undefined1 **)(puVar26 + 0x30) = puVar26 + 0x78;
+                            puVar26[0x28] = 1;
+                            *(undefined8 *)(puVar26 + 0x20) = *(undefined8 *)IoFileObjectType_exref;
+                            *(undefined8 *)(puVar26 + -8) = 0x14005d1ef;
+                            iVar13 = ObOpenObjectByPointer
+                                               (*(undefined8 *)(puVar26 + 200),0x40,0,0x2000000);
+                            puVar26[0x158] = 1;
+                            lVar16 = *(longlong *)(puVar26 + 0xc0);
                           }
-                          if (-1 < iVar12) {
-                            lVar14 = *(longlong *)(puVar24 + 0xc0);
-                            *(undefined8 *)(puVar24 + -8) = 0x14005cb37;
-                            KeAcquireInStackQueuedSpinLock(lVar14 + 0x38,puVar24 + 0x78);
-                            if ((*(uint *)(lVar14 + 8) & 0x800) == 0) {
+                          if (-1 < iVar13) {
+                            *(undefined8 *)(puVar26 + -8) = 0x14005d224;
+                            KeAcquireInStackQueuedSpinLock
+                                      (*(longlong *)(puVar26 + 0x68) + 0x38,puVar26 + 0x80);
+                            lVar19 = *(longlong *)(puVar26 + 0x68);
+                            if ((*(uint *)(lVar19 + 8) & 0x800) == 0) {
                               LOCK();
-                              *(code **)(lVar15 + 0x68) = AfdSanCancelAccept;
+                              *(code **)(lVar16 + 0x68) = AfdSanCancelAccept;
                               UNLOCK();
-                              lVar18 = *(longlong *)(puVar24 + 0x58);
-                              if (*(char *)(lVar18 + 0x44) == '\0') {
-                                lVar15 = *(longlong *)(lVar18 + 8);
-                                if (*(char *)(lVar14 + 0xbc) == '\0') {
-                                  if ((*(byte *)(lVar15 + 10) & 5) == 0) {
-                                    *(undefined8 *)(puVar24 + -8) = 0x14005cc37;
-                                    lVar15 = MmMapLockedPages(lVar15,0);
+                              if (*(char *)(*(longlong *)(puVar26 + 0x50) + 0x44) == '\0') {
+                                lVar16 = *(longlong *)(*(longlong *)(puVar26 + 0x50) + 8);
+                                if (*(char *)(lVar19 + 0xbc) == '\0') {
+                                  if ((*(byte *)(lVar16 + 10) & 5) == 0) {
+                                    *(undefined8 *)(puVar26 + -8) = 0x14005d317;
+                                    lVar16 = MmMapLockedPages(lVar16,0);
                                   }
                                   else {
-                                    lVar15 = *(longlong *)(lVar15 + 0x18);
-                                  }
-                                  lVar26 = *(longlong *)(puVar24 + 0x98);
-                                  uVar25 = *(uint *)(lVar26 + 0x18);
-                                  uVar6 = *(uint *)(lVar26 + 8);
-                                  *(undefined8 *)(puVar24 + -8) = 0x14005cc64;
-                                  memcpy((void *)((ulonglong)uVar6 + lVar15 + (ulonglong)uVar25),
-                                         (void *)(*(longlong *)(puVar24 + 0x60) + 0x10),
-                                         (ulonglong)*(uint *)(puVar24 + 0x50));
+                                    lVar16 = *(longlong *)(lVar16 + 0x18);
+                                  }
+                                  uVar28 = *(uint *)(lVar15 + 0x18);
+                                  uVar5 = *(uint *)(lVar15 + 8);
+                                  *(undefined8 *)(puVar26 + -8) = 0x14005d33f;
+                                  memcpy((void *)((ulonglong)uVar5 + lVar16 + (ulonglong)uVar28),
+                                         (void *)(*(longlong *)(puVar26 + 0x60) + 0x10),
+                                         (ulonglong)*(uint *)(puVar26 + 0x58));
                                 }
                                 else {
-                                  sVar4 = *(short *)(*(longlong *)(puVar24 + 0x60) + 0x14);
-                                  if ((*(byte *)(lVar15 + 10) & 5) == 0) {
-                                    *(undefined8 *)(puVar24 + -8) = 0x14005cb9d;
-                                    lVar15 = MmMapLockedPages(lVar15,0);
+                                  sVar4 = *(short *)(*(longlong *)(puVar26 + 0x60) + 0x14);
+                                  if ((*(byte *)(lVar16 + 10) & 5) == 0) {
+                                    *(undefined8 *)(puVar26 + -8) = 0x14005d28b;
+                                    lVar16 = MmMapLockedPages(lVar16,0);
                                   }
                                   else {
-                                    lVar15 = *(longlong *)(lVar15 + 0x18);
-                                  }
-                                  lVar26 = *(longlong *)(puVar24 + 0x98);
-                                  uVar25 = *(uint *)(lVar26 + 0x10);
-                                  uVar6 = *(uint *)(lVar26 + 0x18);
-                                  *(ulonglong *)(puVar24 + 0x158) = (ulonglong)*(uint *)(lVar26 + 8)
+                                    lVar16 = *(longlong *)(lVar16 + 0x18);
+                                  }
+                                  uVar28 = *(uint *)(lVar15 + 0x10);
+                                  uVar5 = *(uint *)(lVar15 + 0x18);
+                                  *(ulonglong *)(puVar26 + 0x150) = (ulonglong)*(uint *)(lVar15 + 8)
                                   ;
-                                  *(ulonglong *)(puVar24 + 0x150) =
-                                       (ulonglong)uVar6 + lVar15 + (ulonglong)uVar25;
-                                  lVar15 = *(longlong *)(lVar18 + 8);
-                                  if ((*(byte *)(lVar15 + 10) & 5) == 0) {
-                                    *(undefined8 *)(puVar24 + -8) = 0x14005cbe5;
-                                    lVar15 = MmMapLockedPages(lVar15,0);
+                                  lVar19 = *(longlong *)(*(longlong *)(puVar26 + 0x50) + 8);
+                                  if ((*(byte *)(lVar19 + 10) & 5) == 0) {
+                                    *(undefined8 *)(puVar26 + -8) = 0x14005d2cb;
+                                    lVar19 = MmMapLockedPages(lVar19,0);
                                   }
                                   else {
-                                    lVar15 = *(longlong *)(lVar15 + 0x18);
-                                  }
-                                  uVar25 = *(uint *)(lVar26 + 8);
-                                  uVar6 = *(uint *)(lVar26 + 0x18);
-                                  *(undefined8 *)(puVar24 + -8) = 0x14005cc0b;
-                                  memcpy((void *)((ulonglong)uVar6 + (ulonglong)uVar25 + lVar15),
-                                         (void *)(*(longlong *)(puVar24 + 0x60) + 0x16),
+                                    lVar19 = *(longlong *)(lVar19 + 0x18);
+                                  }
+                                  uVar6 = *(uint *)(lVar15 + 8);
+                                  uVar7 = *(uint *)(lVar15 + 0x18);
+                                  *(undefined8 *)(puVar26 + -8) = 0x14005d2f2;
+                                  memcpy((void *)((ulonglong)uVar7 + lVar19 + (ulonglong)uVar6),
+                                         (void *)(*(longlong *)(puVar26 + 0x60) + 0x16),
                                          (ulonglong)(ushort)(sVar4 + 2U));
                                   *(ushort *)
-                                   (*(longlong *)(puVar24 + 0x158) + -2 +
-                                   *(longlong *)(puVar24 + 0x150)) = sVar4 + 2U;
+                                   (*(longlong *)(puVar26 + 0x150) + -2 +
+                                   (ulonglong)uVar5 + lVar16 + (ulonglong)uVar28) = sVar4 + 2U;
                                 }
-                                if (*(int *)(lVar26 + 0x18) != 0) {
-                                  lVar15 = *(longlong *)(lVar18 + 8);
-                                  if ((*(byte *)(lVar15 + 10) & 5) == 0) {
-                                    *(undefined8 *)(puVar24 + -8) = 0x14005cc87;
-                                    lVar15 = MmMapLockedPages(lVar15,0);
+                                if ((Feature_3923194169__private_featureState & 0x10) == 0) {
+                                  *(undefined8 *)(puVar26 + -8) = 0x14005d353;
+                                  uVar17 = Feature_3923194169__private_IsEnabledDeviceUsageNoInline
+                                                     ();
+                                  uVar28 = (uint)uVar17;
+                                }
+                                else {
+                                  uVar28 = Feature_3923194169__private_featureState & 1;
+                                }
+                                uVar5 = *(uint *)(lVar15 + 0x18);
+                                if (uVar28 == 0) {
+                                  if (uVar5 != 0) {
+                                    lVar16 = *(longlong *)(*(longlong *)(puVar26 + 0x50) + 8);
+                                    if ((*(byte *)(lVar16 + 10) & 5) == 0) {
+                                      *(undefined8 *)(puVar26 + -8) = 0x14005d4e5;
+                                      lVar16 = MmMapLockedPages(lVar16,0);
+                                    }
+                                    else {
+                                      lVar16 = *(longlong *)(lVar16 + 0x18);
+                                    }
+                                    _Dst = (undefined4 *)((ulonglong)*(uint *)(lVar15 + 8) + lVar16)
+                                    ;
+                                    _Src = *(ushort **)(puVar26 + 0xa0);
+                                    if (*(char *)(*(longlong *)(puVar26 + 0x68) + 0xbc) == '\0') {
+                                      *_Dst = 0;
+                                      _Dst[1] = 1;
+                                      _Size = (ulonglong)*_Src + 4;
+                                      goto LAB_5;
+                                    }
+                                    uVar28 = *(uint *)(lVar15 + 0x18);
+                                    uVar27 = *_Src;
+                                    *(undefined8 *)(puVar26 + -8) = 0x14005d521;
+                                    memcpy(_Dst,_Src + 1,(ulonglong)uVar27 + 2);
+                                    *(ushort *)(((ulonglong)uVar28 - 2) + (longlong)_Dst) =
+                                         *_Src + 2;
+                                  }
+                                }
+                                else if (5 < uVar5) {
+                                  lVar16 = *(longlong *)(*(longlong *)(puVar26 + 0x50) + 8);
+                                  if ((*(byte *)(lVar16 + 10) & 5) == 0) {
+                                    *(undefined8 *)(puVar26 + -8) = 0x14005d38a;
+                                    lVar16 = MmMapLockedPages(lVar16,0);
                                   }
                                   else {
-                                    lVar15 = *(longlong *)(lVar15 + 0x18);
-                                  }
-                                  _Dst = (undefined4 *)((ulonglong)*(uint *)(lVar26 + 8) + lVar15);
-                                  _Src = *(ushort **)(puVar24 + 0xa0);
-                                  if (*(char *)(lVar14 + 0xbc) == '\0') {
+                                    lVar16 = *(longlong *)(lVar16 + 0x18);
+                                  }
+                                  _Dst = (undefined4 *)((ulonglong)*(uint *)(lVar15 + 8) + lVar16);
+                                  _Src = *(ushort **)(puVar26 + 0xa0);
+                                  uVar27 = *_Src;
+                                  if (*(char *)(*(longlong *)(puVar26 + 0x68) + 0xbc) == '\0') {
+                                    if ((int)(uVar27 + 4) < (int)((uVar5 & 0xffff) - 8)) {
+                                      uVar27 = uVar27 + 4;
+                                    }
+                                    else {
+                                      uVar27 = (short)uVar5 - 8;
+                                    }
                                     *_Dst = 0;
                                     _Dst[1] = 1;
-                                    uVar5 = *_Src;
-                                    *(undefined8 *)(puVar24 + -8) = 0x14005ccf7;
-                                    memcpy(_Dst + 2,_Src,(ulonglong)uVar5 + 4);
+                                    _Size = (size_t)uVar27;
+LAB_5:
+                                    *(undefined8 *)(puVar26 + -8) = 0x14005d4ba;
+                                    memcpy(_Dst + 2,_Src,_Size);
                                   }
                                   else {
-                                    uVar25 = *(uint *)(lVar26 + 0x18);
-                                    uVar5 = *_Src;
-                                    *(undefined8 *)(puVar24 + -8) = 0x14005ccbb;
-                                    memcpy(_Dst,_Src + 1,(ulonglong)uVar5 + 2);
-                                    *(short *)(((ulonglong)uVar25 - 2) + (longlong)_Dst) =
-                                         **(short **)(puVar24 + 0xa0) + 2;
-                                    lVar26 = *(longlong *)(puVar24 + 0x98);
+                                    if ((ulonglong)uVar27 + 2 < (ulonglong)(uVar5 & 0xffff) - 2) {
+                                      uVar27 = uVar27 + 2;
+                                    }
+                                    else {
+                                      uVar27 = (short)uVar5 - 2;
+                                    }
+                                    uVar28 = *(uint *)(lVar15 + 0x18);
+                                    *(undefined8 *)(puVar26 + -8) = 0x14005d3ed;
+                                    memcpy(_Dst,_Src + 1,(ulonglong)uVar27);
+                                    *(ushort *)(((ulonglong)uVar28 - 2) + (longlong)_Dst) = uVar27;
                                   }
                                 }
-                                *(undefined8 *)(lVar14 + 0x160) = 0;
-                                uVar20 = *(undefined8 *)(*(longlong *)(puVar24 + 0x60) + 8);
-                                *(undefined8 *)(puVar24 + -8) = 0x14005cd1d;
-                                AfdSanInitEndpoint(*(longlong *)(puVar24 + 0xd0),
-                                                   *(longlong *)(puVar24 + 200),uVar20);
-                                plVar1 = (longlong *)(lVar18 + 0xa8);
-                                plVar13 = *(longlong **)(lVar14 + 0x88);
-                                if (*plVar13 == lVar14 + 0x80) {
-                                  *plVar1 = lVar14 + 0x80;
-                                  *(longlong **)(lVar18 + 0xb0) = plVar13;
-                                  *plVar13 = (longlong)plVar1;
-                                  *(longlong **)(lVar14 + 0x88) = plVar1;
-                                  *(undefined8 *)(puVar24 + -8) = 0x14005cd51;
-                                  cVar11 = IoIs32bitProcess(param_1);
-                                  if (cVar11 == '\0') {
-                                    *puVar23 = *(undefined8 *)(puVar24 + 0x70);
-                                    *(undefined4 *)(puVar23 + 1) = *(undefined4 *)(lVar26 + 8);
+                                lVar16 = *(longlong *)(puVar26 + 0x68);
+                                *(undefined8 *)(lVar16 + 0x160) = 0;
+                                uVar22 = *(undefined8 *)(*(longlong *)(puVar26 + 0x60) + 8);
+                                *(undefined8 *)(puVar26 + -8) = 0x14005d422;
+                                AfdSanInitEndpoint(*(longlong *)(puVar26 + 0xd0),
+                                                   *(longlong *)(puVar26 + 200),uVar22);
+                                lVar19 = *(longlong *)(puVar26 + 0x50);
+                                plVar14 = (longlong *)(lVar19 + 0xa8);
+                                plVar1 = *(longlong **)(lVar16 + 0x88);
+                                if (*plVar1 == lVar16 + 0x80) {
+                                  *plVar14 = lVar16 + 0x80;
+                                  *(longlong **)(lVar19 + 0xb0) = plVar1;
+                                  *plVar1 = (longlong)plVar14;
+                                  *(longlong **)(lVar16 + 0x88) = plVar14;
+                                  *(undefined8 *)(puVar26 + -8) = 0x14005d45a;
+                                  cVar12 = IoIs32bitProcess(param_1);
+                                  if (cVar12 == '\0') {
+                                    *puVar25 = *(undefined8 *)(puVar26 + 0x78);
+                                    *(undefined4 *)(puVar25 + 1) = *(undefined4 *)(lVar15 + 8);
                                     *(undefined8 *)(param_1 + 0x38) = 0x10;
                                   }
                                   else {
-                                    *(int *)puVar23 = (int)*(undefined8 *)(puVar24 + 0x70);
-                                    *(undefined4 *)((longlong)puVar23 + 4) =
-                                         *(undefined4 *)(lVar26 + 8);
+                                    *(int *)puVar25 = (int)*(undefined8 *)(puVar26 + 0x78);
+                                    *(undefined4 *)((longlong)puVar25 + 4) =
+                                         *(undefined4 *)(lVar15 + 8);
                                     *(undefined8 *)(param_1 + 0x38) = 8;
                                   }
-                                  *(undefined8 *)(puVar24 + -8) = 0x14005cda8;
-                                  KeReleaseInStackQueuedSpinLock(puVar24 + 0x78);
+                                  *(undefined8 *)(puVar26 + -8) = 0x14005d590;
+                                  KeReleaseInStackQueuedSpinLock(puVar26 + 0x80);
                                   *(undefined4 *)(param_1 + 0x30) = 0;
-                                  *(undefined8 *)(puVar24 + -8) = 0x14005cdc1;
+                                  *(undefined8 *)(puVar26 + -8) = 0x14005d5a9;
                                   IofCompleteRequest(param_1,AfdPriorityBoost);
-                                  *(undefined8 *)(puVar24 + -8) = 0x14005cdd5;
-                                  ObfDereferenceObject(*(undefined8 *)(puVar24 + 0x90));
+                                  *(undefined8 *)(puVar26 + -8) = 0x14005d5bd;
+                                  ObfDereferenceObject(*(undefined8 *)(puVar26 + 0x98));
                                   if ((DAT_2 & 4) != 0) {
-                                    *(undefined8 *)(puVar24 + -8) = 0x14005cdfa;
-                                    WPP_SF_qq(0x1a,&WPP_b1893ce3e4e03974ce237ee1d23f932c_Traceguids,
-                                              lVar14,lVar18);
+                                    *(undefined8 *)(puVar26 + -8) = 0x14005d5e4;
+                                    WPP_SF_qq(0x1a,&WPP_d87f5cfd203e31ba1feb40bae02b1e31_Traceguids,
+                                              lVar16,*(undefined8 *)(puVar26 + 0x50));
                                   }
                                   return 0;
                                 }
-                                goto LAB_5;
+                                goto LAB_6;
                               }
                               LOCK();
-                              lVar14 = *(longlong *)(lVar15 + 0x68);
-                              *(longlong *)(lVar15 + 0x68) = 0;
+                              lVar15 = *(longlong *)(lVar16 + 0x68);
+                              *(longlong *)(lVar16 + 0x68) = 0;
                               UNLOCK();
-                              if (lVar14 == 0) {
-                                puVar24[0x150] = 0;
-                                *(undefined8 *)(puVar24 + -8) = 0x14005ce22;
-                                KeReleaseInStackQueuedSpinLock(puVar24 + 0x78);
-                                *(undefined8 *)(puVar24 + -8) = 0x14005ce36;
-                                IoAcquireCancelSpinLock(puVar24 + 0x150);
-                                *(undefined8 *)(puVar24 + -8) = 0x14005ce49;
-                                IoReleaseCancelSpinLock(puVar24[0x150]);
+                              if (lVar15 == 0) {
+                                puVar26[0x150] = 0;
+                                *(undefined8 *)(puVar26 + -8) = 0x14005d60e;
+                                KeReleaseInStackQueuedSpinLock(puVar26 + 0x80);
+                                *(undefined8 *)(puVar26 + -8) = 0x14005d622;
+                                IoAcquireCancelSpinLock(puVar26 + 0x150);
+                                *(undefined8 *)(puVar26 + -8) = 0x14005d635;
+                                IoReleaseCancelSpinLock(puVar26[0x150]);
                               }
                               else {
-                                *(undefined8 *)(puVar24 + -8) = 0x14005ce57;
-                                KeReleaseInStackQueuedSpinLock(puVar24 + 0x78);
+                                *(undefined8 *)(puVar26 + -8) = 0x14005d643;
+                                KeReleaseInStackQueuedSpinLock(puVar26 + 0x80);
                               }
-                              lVar15 = *(longlong *)(puVar24 + 0x58);
+                              lVar16 = *(longlong *)(puVar26 + 0x50);
                             }
                             else {
-                              *(undefined8 *)(puVar24 + -8) = 0x14005ce6f;
-                              KeReleaseInStackQueuedSpinLock(puVar24 + 0x78);
+                              *(undefined8 *)(puVar26 + -8) = 0x14005d65e;
+                              KeReleaseInStackQueuedSpinLock(puVar26 + 0x80);
                               if ((DAT_2 & 4) != 0) {
                     /* WARNING: Subroutine does not return */
-                                *(undefined8 *)(puVar24 + -8) = 0x14005ce91;
-                                WPP_SF_I(0x1b,&WPP_b1893ce3e4e03974ce237ee1d23f932c_Traceguids,
-                                         lVar14);
+                                *(undefined8 *)(puVar26 + -8) = 0x14005d682;
+                                WPP_SF_I(0x1b,&WPP_d87f5cfd203e31ba1feb40bae02b1e31_Traceguids,
+                                         *(undefined8 *)(puVar26 + 0x68));
                               }
                             }
-                            if (puVar24[0x158] != '\0') {
-                              *(undefined8 *)(puVar24 + -8) = 0x14005cea9;
-                              ObCloseHandle(*(undefined8 *)(puVar24 + 0x70),1);
+                            if (puVar26[0x158] != '\0') {
+                              *(undefined8 *)(puVar26 + -8) = 0x14005d69a;
+                              ObCloseHandle(*(undefined8 *)(puVar26 + 0x78),1);
                             }
-                            iVar12 = -0x3ffffee0;
+                            iVar13 = -0x3ffffee0;
                           }
-                          uVar25 = *(uint *)(puVar24 + 0x50);
                         }
                       }
                     }
                     else {
-                      iVar12 = -0x3ffffff8;
-                      lVar15 = *(longlong *)(puVar24 + 0x58);
-                    }
-                    *(undefined8 *)(puVar24 + -8) = 0x14005cec1;
-                    AfdCleanupSuperAccept(lVar15,iVar12);
-                    *(undefined8 *)(puVar24 + -8) = 0x14005ced1;
-                    IofCompleteRequest(lVar15);
-                  }
+                      iVar13 = -0x3ffffff8;
+                    }
+                    *(undefined8 *)(puVar26 + -8) = 0x14005d6b9;
+                    AfdCleanupSuperAccept(lVar16,iVar13);
+                    *(undefined8 *)(puVar26 + -8) = 0x14005d6c9;
+                    IofCompleteRequest(lVar16);
+                  }
+                  uVar28 = *(uint *)(puVar26 + 0x58);
                 }
                 else {
                   local_f0 = (undefined2 *)0x0;
-                  if (((*(uint *)(psVar8 + 4) >> 8 & 1) != 0) ||
-                     (uVar16 = CONCAT71((int7)(uVar16 >> 8),1), (*(uint *)(psVar8 + 8) & 0x200) == 0
+                  if (((*(uint *)(psVar9 + 4) >> 8 & 1) != 0) ||
+                     (uVar17 = CONCAT71((int7)(uVar17 >> 8),1), (*(uint *)(psVar9 + 8) & 0x200) == 0
                      )) {
-                    uVar16 = uVar16 & 0xffffffffffffff00;
-                  }
-                  uVar16 = AfdCreateConnection((longlong)psVar8,*(longlong *)(psVar8 + 0x84),
-                                               *(longlong *)(psVar8 + 0x80),uVar16,0,
-                                               *(uint *)(psVar8 + 4) >> 7 & 1,
-                                               *(undefined8 *)(psVar8 + 0x18),&local_f0);
-                  iVar12 = (int)uVar16;
-                  puVar24 = auStackY_138;
-                  if (iVar12 < 0) goto LAB_3;
+                    uVar17 = uVar17 & 0xffffffffffffff00;
+                  }
+                  uVar17 = AfdCreateConnection((longlong)psVar9,*(longlong *)(psVar9 + 0x84),
+                                               *(longlong *)(psVar9 + 0x80),uVar17,0,
+                                               *(uint *)(psVar9 + 4) >> 7 & 1,
+                                               *(undefined8 *)(psVar9 + 0x18),&local_f0);
+                  iVar13 = (int)uVar17;
+                  puVar26 = auStackY_138;
+                  if (iVar13 < 0) goto LAB_3;
                   LOCK();
-                  *(int *)(psVar8 + 0x58) = *(int *)(psVar8 + 0x58) + -1;
+                  *(int *)(psVar9 + 0x58) = *(int *)(psVar9 + 0x58) + -1;
                   UNLOCK();
-                  puVar17 = local_f0;
-                  puVar24 = auStackY_138;
+                  puVar18 = local_f0;
+                  puVar26 = auStackY_138;
                 }
-                if (puVar17 == (undefined2 *)0x0) {
-LAB_6:
-                  iVar12 = -0x3fffff66;
+                if (puVar18 == (undefined2 *)0x0) {
+LAB_7:
+                  iVar13 = -0x3fffff66;
                 }
                 else {
-                  if ((*(uint *)(psVar8 + 4) >> 8 & 1) != 0) {
-                    uVar25 = uVar25 - 6;
-                    *(uint *)(puVar24 + 0x68) = uVar25;
-                  }
-                  puVar17 = *(undefined2 **)(puVar24 + 0x48);
-                  lVar14 = *(longlong *)(puVar17 + 0x4c);
-                  lVar15 = lVar14;
-                  if ((lVar14 != 0) && (*(uint *)(puVar17 + 0x50) < uVar25)) {
-                    if (AfdStandardAddressLength < *(uint *)(puVar17 + 0x50)) {
-                      *(undefined8 *)(puVar24 + -8) = 0x14005cf4e;
-                      ExFreePoolWithTag(lVar14,0x52646641);
-                      lVar15 = lVar14;
+                  if ((*(uint *)(psVar9 + 4) >> 8 & 1) != 0) {
+                    uVar28 = uVar28 - 6;
+                    *(uint *)(puVar26 + 0x70) = uVar28;
+                  }
+                  puVar18 = *(undefined2 **)(puVar26 + 0x48);
+                  lVar15 = *(longlong *)(puVar18 + 0x4c);
+                  lVar16 = lVar15;
+                  if ((lVar15 != 0) && (*(uint *)(puVar18 + 0x50) < uVar28)) {
+                    if (AfdStandardAddressLength < *(uint *)(puVar18 + 0x50)) {
+                      *(undefined8 *)(puVar26 + -8) = 0x14005d73a;
+                      ExFreePoolWithTag(lVar15,0x52646641);
+                      lVar16 = lVar15;
                     }
                     else {
-                      *(undefined8 *)(puVar24 + -8) = 0x14005cf40;
-                      lVar15 = PplAddressPool;
-                      PplFreeToLookasideList(PplAddressPool,lVar14);
-                    }
-                    *(undefined8 *)(puVar17 + 0x4c) = 0;
-                    lVar14 = 0;
-                  }
-                  if (lVar14 == 0) {
-                    if (AfdStandardAddressLength < uVar25) {
-                      *(undefined8 *)(puVar24 + -8) = 0x14005cf85;
-                      pvVar19 = (void *)ExAllocatePool2(0x61,(ulonglong)uVar25,0x52646641);
+                      *(undefined8 *)(puVar26 + -8) = 0x14005d72c;
+                      lVar16 = PplAddressPool;
+                      PplFreeToLookasideList(PplAddressPool,lVar15);
+                    }
+                    *(undefined8 *)(puVar18 + 0x4c) = 0;
+                    lVar15 = 0;
+                  }
+                  if (lVar15 == 0) {
+                    if (AfdStandardAddressLength < uVar28) {
+                      *(undefined8 *)(puVar26 + -8) = 0x14005d771;
+                      pvVar21 = (void *)ExAllocatePool2(0x61,(ulonglong)uVar28,0x52646641);
                     }
                     else {
-                      *(undefined8 *)(puVar24 + -8) = 0x14005cf71;
-                      pvVar19 = AfdAllocateZeroedFromLookasideList(lVar15,(ulonglong)uVar25);
-                    }
-                    *(void **)(puVar17 + 0x4c) = pvVar19;
-                    if (*(longlong *)(puVar17 + 0x4c) == 0) {
-                      *(undefined8 *)(puVar24 + -8) = 0x14005cfd7;
-                      AfdSanReleaseConnection((longlong)psVar8,puVar17,'\x01');
-                      goto LAB_6;
-                    }
-                  }
-                  *(uint *)(puVar17 + 0x50) = uVar25;
-                  lVar14 = *(longlong *)(puVar24 + 0x48);
-                  pvVar19 = *(void **)(lVar14 + 0x98);
-                  if ((*(uint *)(psVar8 + 4) >> 8 & 1) == 0) {
-                    _Src_00 = (void *)(*(longlong *)(puVar24 + 0x60) + 0x10);
+                      *(undefined8 *)(puVar26 + -8) = 0x14005d75d;
+                      pvVar21 = AfdAllocateZeroedFromLookasideList(lVar16,(ulonglong)uVar28);
+                    }
+                    *(void **)(puVar18 + 0x4c) = pvVar21;
+                    if (*(longlong *)(puVar18 + 0x4c) == 0) {
+                      *(undefined8 *)(puVar26 + -8) = 0x14005d7c3;
+                      AfdSanReleaseConnection((longlong)psVar9,puVar18,'\x01');
+                      goto LAB_7;
+                    }
+                  }
+                  *(uint *)(puVar18 + 0x50) = uVar28;
+                  lVar15 = *(longlong *)(puVar26 + 0x48);
+                  pvVar21 = *(void **)(lVar15 + 0x98);
+                  if ((*(uint *)(psVar9 + 4) >> 8 & 1) == 0) {
+                    _Src_00 = (void *)(*(longlong *)(puVar26 + 0x60) + 0x10);
                   }
                   else {
-                    _Src_00 = (void *)(*(longlong *)(puVar24 + 0x60) + 0x16);
-                  }
-                  *(undefined8 *)(puVar24 + -8) = 0x14005d014;
-                  memcpy(pvVar19,_Src_00,(ulonglong)uVar25);
-                  *(undefined8 *)(puVar24 + -8) = 0x14005d024;
-                  KeAcquireInStackQueuedSpinLock(psVar8 + 0x1c,puVar24 + 0x78);
-                  *(undefined8 *)(lVar14 + 0x28) = 0;
-                  *(longlong *)(*(longlong *)(puVar24 + 0x148) + 0x20) = lVar14;
+                    _Src_00 = (void *)(*(longlong *)(puVar26 + 0x60) + 0x16);
+                  }
+                  *(undefined8 *)(puVar26 + -8) = 0x14005d800;
+                  memcpy(pvVar21,_Src_00,(ulonglong)uVar28);
+                  *(undefined8 *)(puVar26 + -8) = 0x14005d813;
+                  KeAcquireInStackQueuedSpinLock(psVar9 + 0x1c,puVar26 + 0x80);
+                  *(undefined8 *)(lVar15 + 0x28) = 0;
+                  *(longlong *)(*(longlong *)(puVar26 + 0x148) + 0x20) = lVar15;
                   LOCK();
                   *(code **)(param_1 + 0x68) = AfdSanCancelConnect;
                   UNLOCK();
                   if (*(char *)(param_1 + 0x44) == '\0') {
                     pbVar2 = (byte *)(*(longlong *)(param_1 + 0xb8) + 3);
                     *pbVar2 = *pbVar2 | 1;
-                    *(short **)(*(longlong *)(puVar24 + 0x48) + 8) = psVar8;
+                    *(short **)(*(longlong *)(puVar26 + 0x48) + 8) = psVar9;
                     LOCK();
-                    plVar1 = (longlong *)(psVar8 + 0x20);
-                    lVar15 = *plVar1;
+                    plVar1 = (longlong *)(psVar9 + 0x20);
+                    lVar16 = *plVar1;
                     *plVar1 = *plVar1 + 1;
                     UNLOCK();
-                    if (lVar15 + 1 < 2) {
-                      pcVar10 = (code *)swi(0x29);
-                      (*pcVar10)(0xe);
-                      puVar24 = puVar24 + 8;
-                    }
-                    *(ulonglong *)(lVar14 + 0x28) = param_1;
-                    lVar14 = *(longlong *)(puVar24 + 0x48);
-                    puVar3 = (uint *)(lVar14 + 4);
+                    if (lVar16 + 1 < 2) {
+                      pcVar11 = (code *)swi(0x29);
+                      (*pcVar11)(0xe);
+                      puVar26 = puVar26 + 8;
+                    }
+                    *(ulonglong *)(lVar15 + 0x28) = param_1;
+                    lVar15 = *(longlong *)(puVar26 + 0x48);
+                    puVar3 = (uint *)(lVar15 + 4);
                     *puVar3 = *puVar3 | 0x20000000;
-                    *(undefined2 *)(lVar14 + 2) = 1;
-                    *(undefined1 **)(puVar24 + 0xb0) = puVar24 + 0xa8;
-                    *(undefined1 **)(puVar24 + 0xa8) = puVar24 + 0xa8;
+                    *(undefined2 *)(lVar15 + 2) = 1;
+                    *(undefined1 **)(puVar26 + 0xb0) = puVar26 + 0xa8;
+                    *(undefined1 **)(puVar26 + 0xa8) = puVar26 + 0xa8;
                     while( true ) {
-                      if ((*(uint *)(psVar8 + 4) & 2) == 0) {
-                        *(undefined8 *)(puVar24 + -8) = 0x14005d136;
-                        uVar20 = AfdServiceSuperAccept
-                                           ((longlong)psVar8,*(undefined2 **)(puVar24 + 0x48),
-                                            puVar24 + 0x78,(longlong)(puVar24 + 0xa8));
-                        if ((char)uVar20 != '\0') goto LAB_7;
+                      if ((*(uint *)(psVar9 + 4) & 2) == 0) {
+                        *(undefined8 *)(puVar26 + -8) = 0x14005d930;
+                        uVar22 = AfdServiceSuperAccept
+                                           ((longlong)psVar9,*(undefined2 **)(puVar26 + 0x48),
+                                            puVar26 + 0x80,(longlong)(puVar26 + 0xa8));
+                        if ((char)uVar22 != '\0') goto LAB_8;
                       }
-                      plVar1 = *(longlong **)(psVar8 + 0x40);
-                      if (plVar1 == (longlong *)(psVar8 + 0x40)) {
-                        lVar14 = *(longlong *)(puVar24 + 0x48);
-                        plVar1 = (longlong *)(lVar14 + 0xb0);
-                        puVar22 = *(undefined8 **)(psVar8 + 0x34);
-                        if ((short *)*puVar22 != psVar8 + 0x30) goto LAB_5;
-                        *plVar1 = (longlong)(psVar8 + 0x30);
-                        *(undefined8 **)(lVar14 + 0xb8) = puVar22;
-                        *puVar22 = plVar1;
-                        *(longlong **)(psVar8 + 0x34) = plVar1;
+                      plVar1 = *(longlong **)(psVar9 + 0x40);
+                      if (plVar1 == (longlong *)(psVar9 + 0x40)) {
+                        lVar15 = *(longlong *)(puVar26 + 0x48);
+                        plVar1 = (longlong *)(lVar15 + 0xb0);
+                        puVar24 = *(undefined8 **)(psVar9 + 0x34);
+                        if ((short *)*puVar24 != psVar9 + 0x30) goto LAB_6;
+                        *plVar1 = (longlong)(psVar9 + 0x30);
+                        *(undefined8 **)(lVar15 + 0xb8) = puVar24;
+                        *puVar24 = plVar1;
+                        *(longlong **)(psVar9 + 0x34) = plVar1;
                         if ((DAT_2 & 4) != 0) {
                     /* WARNING: Subroutine does not return */
-                          *(undefined8 *)(puVar24 + -8) = 0x14005d26c;
-                          WPP_SF_I(0x1d,&WPP_b1893ce3e4e03974ce237ee1d23f932c_Traceguids,lVar14);
+                          *(undefined8 *)(puVar26 + -8) = 0x14005da6f;
+                          WPP_SF_I(0x1d,&WPP_d87f5cfd203e31ba1feb40bae02b1e31_Traceguids,lVar15);
                         }
-                        *(undefined8 *)(puVar24 + -8) = 0x14005d27c;
-                        AfdIndicateEventSelectEvent(psVar8,0x80,0);
-                        *(undefined8 *)(puVar24 + -8) = 0x14005d28c;
-                        psVar21 = psVar8;
-                        AfdNotifySockEventsChangedUnderLock((longlong)psVar8,0x80,0);
-                        *(undefined8 *)(puVar24 + -8) = 0x14005d29e;
-                        uVar20 = AfdIndicatePollEvent(psVar21,0x80,0,puVar24 + 0x78);
-                        if ((char)uVar20 == '\0') {
-                          puVar22 = (undefined8 *)(puVar24 + 0x78);
+                        *(undefined8 *)(puVar26 + -8) = 0x14005da7f;
+                        AfdIndicateEventSelectEvent(psVar9,0x80,0);
+                        *(undefined8 *)(puVar26 + -8) = 0x14005da8f;
+                        psVar23 = psVar9;
+                        AfdNotifySockEventsChangedUnderLock((longlong)psVar9,0x80,0);
+                        *(undefined8 *)(puVar26 + -8) = 0x14005daa4;
+                        uVar22 = AfdIndicatePollEvent(psVar23,0x80,0,puVar26 + 0x80);
+                        if ((char)uVar22 == '\0') {
+                          puVar24 = (undefined8 *)(puVar26 + 0x80);
                         }
                         else {
-                          puVar22 = (undefined8 *)0x0;
+                          puVar24 = (undefined8 *)0x0;
                         }
-                        *(undefined8 *)(puVar24 + -8) = 0x14005d2b6;
-                        AfdNotifySockIndicateEventsUnlock((longlong)psVar8,puVar22,'\0');
-                        goto LAB_7;
+                        *(undefined8 *)(puVar26 + -8) = 0x14005dabf;
+                        AfdNotifySockIndicateEventsUnlock((longlong)psVar9,puVar24,'\0');
+                        goto LAB_8;
                       }
-                      plVar13 = plVar1 + -0x15;
-                      lVar14 = *plVar1;
-                      plVar9 = (longlong *)plVar1[1];
-                      if ((*(longlong **)(lVar14 + 8) != plVar1) || ((longlong *)*plVar9 != plVar1))
-                      goto LAB_5;
-                      *plVar9 = lVar14;
-                      *(longlong **)(lVar14 + 8) = plVar9;
+                      plVar14 = plVar1 + -0x15;
+                      lVar15 = *plVar1;
+                      plVar10 = (longlong *)plVar1[1];
+                      if ((*(longlong **)(lVar15 + 8) != plVar1) || ((longlong *)*plVar10 != plVar1)
+                         ) goto LAB_6;
+                      *plVar10 = lVar15;
+                      *(longlong **)(lVar15 + 8) = plVar10;
                       *plVar1 = 0;
                       if ((DAT_2 & 4) != 0) {
                     /* WARNING: Subroutine does not return */
-                        *(undefined8 *)(puVar24 + -8) = 0x14005d199;
-                        WPP_SF_I(0x1c,&WPP_b1893ce3e4e03974ce237ee1d23f932c_Traceguids,plVar13);
+                        *(undefined8 *)(puVar26 + -8) = 0x14005d993;
+                        WPP_SF_I(0x1c,&WPP_d87f5cfd203e31ba1feb40bae02b1e31_Traceguids,plVar14);
                       }
-                      *(undefined8 *)(puVar24 + -8) = 0x14005d1ae;
-                      uVar16 = AfdServiceWaitForListen
-                                         ((longlong)plVar13,*(undefined2 **)(puVar24 + 0x48),
-                                          (undefined8 *)(puVar24 + 0x78));
-                      if (-1 < (int)uVar16) break;
-                      *(undefined8 *)(puVar24 + -8) = 0x14005d1c6;
+                      *(undefined8 *)(puVar26 + -8) = 0x14005d9ab;
+                      uVar17 = AfdServiceWaitForListen
+                                         ((longlong)plVar14,*(undefined2 **)(puVar26 + 0x48),
+                                          (undefined8 *)(puVar26 + 0x80));
+                      if (-1 < (int)uVar17) break;
+                      *(undefined8 *)(puVar26 + -8) = 0x14005d9c6;
                       AfdNotifySockIndicateEventsUnlock
-                                ((longlong)psVar8,(undefined8 *)(puVar24 + 0x78),'\0');
+                                ((longlong)psVar9,(undefined8 *)(puVar26 + 0x80),'\0');
                       LOCK();
-                      lVar14 = plVar1[-8];
+                      lVar15 = plVar1[-8];
                       plVar1[-8] = 0;
                       UNLOCK();
-                      if (lVar14 == 0) {
-                        puVar24[0x41] = 0;
-                        *(undefined8 *)(puVar24 + -8) = 0x14005d1e3;
-                        IoAcquireCancelSpinLock(puVar24 + 0x41);
-                        *(undefined8 *)(puVar24 + -8) = 0x14005d1f3;
-                        IoReleaseCancelSpinLock(puVar24[0x41]);
+                      if (lVar15 == 0) {
+                        puVar26[0x41] = 0;
+                        *(undefined8 *)(puVar26 + -8) = 0x14005d9e3;
+                        IoAcquireCancelSpinLock(puVar26 + 0x41);
+                        *(undefined8 *)(puVar26 + -8) = 0x14005d9f3;
+                        IoReleaseCancelSpinLock(puVar26[0x41]);
                       }
-                      *(undefined8 *)(puVar24 + -8) = 0x14005d208;
-                      IofCompleteRequest(plVar13,AfdPriorityBoost);
-                      *(undefined8 *)(puVar24 + -8) = 0x14005d21d;
-                      KeAcquireInStackQueuedSpinLock(psVar8 + 0x1c,puVar24 + 0x78);
-                    }
-LAB_8:
-                    *(undefined8 *)(puVar24 + -8) = 0x14005d315;
-                    ObfDereferenceObject(*(undefined8 *)(puVar24 + 0x90));
+                      *(undefined8 *)(puVar26 + -8) = 0x14005da08;
+                      IofCompleteRequest(plVar14,AfdPriorityBoost);
+                      *(undefined8 *)(puVar26 + -8) = 0x14005da20;
+                      KeAcquireInStackQueuedSpinLock(psVar9 + 0x1c,puVar26 + 0x80);
+                    }
+LAB_9:
+                    *(undefined8 *)(puVar26 + -8) = 0x14005db1e;
+                    ObfDereferenceObject(*(undefined8 *)(puVar26 + 0x98));
                     return 0x103;
                   }
                   LOCK();
-                  lVar14 = *(longlong *)(param_1 + 0x68);
+                  lVar15 = *(longlong *)(param_1 + 0x68);
                   *(longlong *)(param_1 + 0x68) = 0;
                   UNLOCK();
-                  if (lVar14 == 0) {
-                    puVar24[0x40] = 0;
-                    *(undefined8 *)(puVar24 + -8) = 0x14005d067;
-                    KeReleaseInStackQueuedSpinLock(puVar24 + 0x78);
-                    *(undefined8 *)(puVar24 + -8) = 0x14005d078;
-                    IoAcquireCancelSpinLock(puVar24 + 0x40);
-                    *(undefined8 *)(puVar24 + -8) = 0x14005d088;
-                    IoReleaseCancelSpinLock(puVar24[0x40]);
+                  if (lVar15 == 0) {
+                    puVar26[0x40] = 0;
+                    *(undefined8 *)(puVar26 + -8) = 0x14005d859;
+                    KeReleaseInStackQueuedSpinLock(puVar26 + 0x80);
+                    *(undefined8 *)(puVar26 + -8) = 0x14005d86a;
+                    IoAcquireCancelSpinLock(puVar26 + 0x40);
+                    *(undefined8 *)(puVar26 + -8) = 0x14005d87a;
+                    IoReleaseCancelSpinLock(puVar26[0x40]);
                   }
                   else {
-                    *(undefined8 *)(puVar24 + -8) = 0x14005d096;
-                    KeReleaseInStackQueuedSpinLock(puVar24 + 0x78);
-                  }
-                  *(undefined8 *)(puVar24 + -8) = 0x14005d0ab;
-                  AfdSanReleaseConnection((longlong)psVar8,*(undefined2 **)(puVar24 + 0x48),'\x01');
-                  iVar12 = -0x3ffffee0;
+                    *(undefined8 *)(puVar26 + -8) = 0x14005d888;
+                    KeReleaseInStackQueuedSpinLock(puVar26 + 0x80);
+                  }
+                  *(undefined8 *)(puVar26 + -8) = 0x14005d89d;
+                  AfdSanReleaseConnection((longlong)psVar9,*(undefined2 **)(puVar26 + 0x48),'\x01');
+                  iVar13 = -0x3ffffee0;
                 }
                 goto LAB_3;
               }
             }
           }
-          iVar12 = -0x3ffffff8;
-          puVar24 = auStackY_138;
+          iVar13 = -0x3ffffff8;
+          puVar26 = auStackY_138;
           goto LAB_3;
         }
       }
     }
   }
   else {
-    piVar7 = (int *)*plVar1;
-    uVar25 = *(uint *)(param_2 + 0x10);
-    if ((0x13 < uVar25) && (uVar25 < 0xfffffff4)) {
-      plVar13 = (longlong *)ExAllocatePool2(99,uVar25 + 0xc,0x73646641);
-      *plVar13 = (longlong)*piVar7;
-      plVar13[1] = (ulonglong)(uint)piVar7[1];
+    piVar8 = (int *)*plVar1;
+    uVar28 = *(uint *)(param_2 + 0x10);
+    if ((0x13 < uVar28) && (uVar28 < 0xfffffff4)) {
+      plVar14 = (longlong *)ExAllocatePool2(99,uVar28 + 0xc,0x73646641);
+      *plVar14 = (longlong)*piVar8;
+      plVar14[1] = (ulonglong)(uint)piVar8[1];
       param_3 = (ulonglong)(*(int *)(param_2 + 0x10) - 8);
-      local_48 = plVar13;
-      memcpy(plVar13 + 2,piVar7 + 2,param_3);
+      local_48 = plVar14;
+      memcpy(plVar14 + 2,piVar8 + 2,param_3);
       ExFreePoolWithTag(*plVar1,0);
-      *plVar1 = (longlong)plVar13;
-      *(uint *)(param_2 + 0x10) = uVar25 + 0xc;
+      *plVar1 = (longlong)plVar14;
+      *(uint *)(param_2 + 0x10) = uVar28 + 0xc;
       goto LAB_0;
     }
   }
-  iVar12 = -0x3ffffff3;
-  puVar24 = auStackY_138;
+  iVar13 = -0x3ffffff3;
+  puVar26 = auStackY_138;
 LAB_3:
-  if (*(longlong *)(puVar24 + 0x90) != 0) {
-    *(undefined8 *)(puVar24 + -8) = 0x14005c6d3;
-    ObfDereferenceObject(*(longlong *)(puVar24 + 0x90));
+  if (*(longlong *)(puVar26 + 0x98) != 0) {
+    *(undefined8 *)(puVar26 + -8) = 0x14005cdb6;
+    ObfDereferenceObject(*(longlong *)(puVar26 + 0x98));
   }
-  *(int *)(param_1 + 0x30) = iVar12;
-  *(undefined8 *)(puVar24 + -8) = 0x14005c6ec;
+  *(int *)(param_1 + 0x30) = iVar13;
+  *(undefined8 *)(puVar26 + -8) = 0x14005cdcf;
   IofCompleteRequest(param_1,AfdPriorityBoost);
-  return iVar12;
-LAB_7:
-  plVar1 = *(longlong **)(puVar24 + 0xa8);
-  if (plVar1 == (longlong *)(puVar24 + 0xa8)) goto LAB_8;
-  lVar14 = *plVar1;
-  plVar13 = (longlong *)plVar1[1];
-  if ((*(longlong **)(lVar14 + 8) != plVar1) || ((longlong *)*plVar13 != plVar1))
-  goto LAB_5;
-  *plVar13 = lVar14;
-  *(longlong **)(lVar14 + 8) = plVar13;
-  *(undefined8 *)(puVar24 + -8) = 0x14005d2ff;
-  IofCompleteRequest(plVar1 + -0x15,CONCAT71((int7)((ulonglong)plVar13 >> 8),AfdPriorityBoost));
-  goto LAB_7;
-LAB_5:
-  pcVar10 = (code *)swi(0x29);
-  iVar12 = (*pcVar10)(3);
-  param_1 = *(ulonglong *)(puVar24 + 0x148);
-  puVar24 = puVar24 + 8;
+  return iVar13;
+LAB_8:
+  plVar1 = *(longlong **)(puVar26 + 0xa8);
+  if (plVar1 == (longlong *)(puVar26 + 0xa8)) goto LAB_9;
+  lVar15 = *plVar1;
+  plVar14 = (longlong *)plVar1[1];
+  if ((*(longlong **)(lVar15 + 8) != plVar1) || ((longlong *)*plVar14 != plVar1))
+  goto LAB_6;
+  *plVar14 = lVar15;
+  *(longlong **)(lVar15 + 8) = plVar14;
+  *(undefined8 *)(puVar26 + -8) = 0x14005db08;
+  IofCompleteRequest(plVar1 + -0x15,CONCAT71((int7)((ulonglong)plVar14 >> 8),AfdPriorityBoost));
+  goto LAB_8;
+LAB_6:
+  pcVar11 = (code *)swi(0x29);
+  iVar13 = (*pcVar11)(3);
+  param_1 = *(ulonglong *)(puVar26 + 0x148);
+  puVar26 = puVar26 + 8;
   goto LAB_3;
 }
 

```


## AfdRestartSuperAcceptGetAddress

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.98|
|i_ratio|0.56|
|m_ratio|0.99|
|b_ratio|0.98|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdRestartSuperAcceptGetAddress|AfdRestartSuperAcceptGetAddress|
|fullname|AfdRestartSuperAcceptGetAddress|AfdRestartSuperAcceptGetAddress|
|refcount|4|4|
|`length`|558|543|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACEACCEPTEX<br>AfdCloseConnection<br>AfdContinueSuperAccept<br>AfdTdi_TA4toTA6_InPlace<br>Feature_4190334265__private_IsEnabledDeviceUsageNoInline<br>Feature_682670395__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::MmMapLockedPages<br>NTOSKRNL.EXE::MmMapLockedPagesSpecifyCache<br>NTOSKRNL.EXE::ObfDereferenceObject<br>memcpy</summary></details>|AFDETW_TRACEACCEPTEX<br>AfdCloseConnection<br>AfdContinueSuperAccept<br>AfdTdi_TA4toTA6_InPlace<br>Feature_4190334265__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::MmMapLockedPages<br>NTOSKRNL.EXE::MmMapLockedPagesSpecifyCache<br>NTOSKRNL.EXE::ObfDereferenceObject<br>memcpy|
|calling|||
|paramcount|3|3|
|`address`|14004a7e0|14004ae30|
|sig|undefined8 __fastcall AfdRestartSuperAcceptGetAddress(undefined8 param_1, longlong param_2, undefined2 * param_3)|undefined8 __fastcall AfdRestartSuperAcceptGetAddress(undefined8 param_1, longlong param_2, undefined2 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdRestartSuperAcceptGetAddress Called Diff


```diff
--- AfdRestartSuperAcceptGetAddress called
+++ AfdRestartSuperAcceptGetAddress called
@@ -6 +5,0 @@
-Feature_682670395__private_IsEnabledDeviceUsageNoInline
```


### AfdRestartSuperAcceptGetAddress Diff


```diff
--- AfdRestartSuperAcceptGetAddress
+++ AfdRestartSuperAcceptGetAddress
@@ -1,116 +1,113 @@
 
 undefined8 AfdRestartSuperAcceptGetAddress(undefined8 param_1,longlong param_2,undefined2 *param_3)
 
 {
   byte *pbVar1;
   longlong *plVar2;
   uint uVar3;
   longlong lVar4;
   code *pcVar5;
   char cVar6;
   uint uVar7;
   longlong lVar8;
   longlong lVar9;
   ulonglong uVar10;
   undefined8 uVar11;
   ushort uVar12;
+  ushort uVar13;
   void *_Dst;
-  ushort uVar13;
   uint local_res10 [2];
   
   lVar4 = *(longlong *)(param_2 + 0xb8);
   lVar9 = *(longlong *)(*(longlong *)(lVar4 + 0x30) + 0x18);
-  if ((Feature_682670395__private_featureState & 0x10) == 0) {
-    Feature_682670395__private_IsEnabledDeviceUsageNoInline();
-  }
   if ((((*(uint *)(param_3 + 2) & 2) != 0) && (*(int *)(param_2 + 0x38) == 0x1a)) &&
      (3 < *(uint *)(lVar4 + 0x18))) {
     lVar8 = *(longlong *)(param_2 + 8);
     local_res10[0] = *(uint *)(lVar4 + 0x18) - 4;
     if ((*(byte *)(lVar8 + 10) & 5) == 0) {
       lVar8 = MmMapLockedPagesSpecifyCache(lVar8,0,1,0,0,0x40000020);
     }
     else {
       lVar8 = *(longlong *)(lVar8 + 0x18);
     }
     if (lVar8 != 0) {
       cVar6 = AfdTdi_TA4toTA6_InPlace((int *)(lVar8 + 4),local_res10);
       if (cVar6 != '\0') {
         *(ulonglong *)(param_2 + 0x38) = (ulonglong)(local_res10[0] + 4);
       }
     }
   }
   LOCK();
   *(int *)(lVar9 + 0xf8) = *(int *)(lVar9 + 0xf8) + -1;
   UNLOCK();
   if (*(char *)(param_2 + 0x41) != '\0') {
     pbVar1 = (byte *)(*(longlong *)(param_2 + 0xb8) + 3);
     *pbVar1 = *pbVar1 | 1;
   }
   IoFreeMdl(*(undefined8 *)(param_2 + 8));
   lVar8 = *(longlong *)(lVar4 + 0x20);
   *(longlong *)(param_2 + 8) = lVar8;
   if (*(int *)(param_2 + 0x30) < 0) {
     AFDETW_TRACEACCEPTEX
               (1,0x17d6,*(short **)(lVar9 + 200),lVar8,*(undefined4 *)(param_2 + 0x38),
                *(int *)(param_2 + 0x30),*(ushort **)(param_3 + 0x4c),lVar9);
     ObfDereferenceObject(*(undefined8 *)(lVar4 + 0x30));
     ObfDereferenceObject(*(undefined8 *)(param_2 + 0x98));
     LOCK();
     plVar2 = (longlong *)(param_3 + 0x18);
     lVar4 = *plVar2;
     *plVar2 = *plVar2 + -1;
     UNLOCK();
     if (lVar4 < 2) {
       if (lVar4 == 1) {
         AfdCloseConnection(param_3);
       }
       else {
         pcVar5 = (code *)swi(0x29);
         (*pcVar5)(0xe);
       }
     }
     uVar11 = 0;
   }
   else {
     if (*(char *)(lVar9 + 0xbc) != '\0') {
       if ((*(byte *)(lVar8 + 10) & 5) == 0) {
         lVar9 = MmMapLockedPages(lVar8,0);
       }
       else {
         lVar9 = *(longlong *)(lVar8 + 0x18);
       }
       uVar3 = *(uint *)(lVar4 + 0x18);
       _Dst = (void *)((ulonglong)*(uint *)(lVar4 + 8) + lVar9);
       uVar13 = *(short *)((longlong)_Dst + 8) + 2;
       if ((Feature_4190334265__private_featureState & 0x10) == 0) {
         uVar10 = Feature_4190334265__private_IsEnabledDeviceUsageNoInline();
         uVar7 = (uint)uVar10;
       }
       else {
         uVar7 = Feature_4190334265__private_featureState & 1;
       }
       if (uVar7 == 0) {
         if ((uint)(*(int *)(*(longlong *)(param_2 + 8) + 0x28) - *(int *)(lVar4 + 8)) < (uint)uVar13
            ) {
           uVar13 = *(short *)(*(longlong *)(param_2 + 8) + 0x28) - *(short *)(lVar4 + 8);
         }
       }
       else {
         uVar12 = *(ushort *)(lVar4 + 0x18) - 10;
         if (*(ushort *)(lVar4 + 0x18) < 10) {
           uVar12 = 0;
         }
         if (uVar12 < uVar13) {
           uVar13 = uVar12;
         }
       }
       memcpy(_Dst,(void *)((longlong)_Dst + 10),(ulonglong)uVar13);
       *(ushort *)(((ulonglong)uVar3 - 2) + (longlong)_Dst) = uVar13;
     }
     *(undefined4 *)(lVar4 + 0x18) = 0;
     uVar11 = AfdContinueSuperAccept(param_2,param_3);
   }
   return uVar11;
 }
 

```


## AfdCloseCore

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.17|
|i_ratio|0.3|
|m_ratio|0.91|
|b_ratio|0.46|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdCloseCore|AfdCloseCore|
|fullname|AfdCloseCore|AfdCloseCore|
|refcount|2|2|
|`length`|435|316|
|`called`|AFDETW_TRACESTATUS<br>AfdCloseConnection<br>AfdDereferenceEndpoint<br>AfdRioCloseRegistrationDomain<br>EtwEx_tidActivityInfo<br>NTOSKRNL.EXE::IoSetIoCompletion<br>WPP_SF_I<br>__security_check_cookie|AFDETW_TRACECLOSE<br>AfdCloseConnection<br>AfdDereferenceEndpoint<br>AfdRioCloseRegistrationDomain<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::IoSetIoCompletion<br>WPP_SF_I|
|calling|AfdDispatch|AfdDispatch|
|paramcount|1|1|
|`address`|140006ac8|1400150c0|
|sig|undefined8 __fastcall AfdCloseCore(ushort * param_1)|undefined8 __fastcall AfdCloseCore(ushort * param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdCloseCore Called Diff


```diff
--- AfdCloseCore called
+++ AfdCloseCore called
@@ -1 +1 @@
-AFDETW_TRACESTATUS
+AFDETW_TRACECLOSE
@@ -5 +5,2 @@
-EtwEx_tidActivityInfo
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
+NTOSKRNL.EXE::ExFreePoolWithTag
@@ -8 +8,0 @@
-__security_check_cookie
```


### AfdCloseCore Diff


```diff
--- AfdCloseCore
+++ AfdCloseCore
@@ -1,97 +1,92 @@
-
-/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 
 undefined8 AfdCloseCore(ushort *param_1)
 
 {
   longlong *plVar1;
   longlong lVar2;
   ushort uVar3;
   undefined2 *puVar4;
   code *pcVar5;
-  undefined1 *puVar6;
-  undefined1 *puVar7;
-  bool bVar8;
-  undefined1 auStack_68 [8];
-  undefined1 auStack_60 [24];
-  undefined8 local_48;
-  undefined1 local_40;
-  ulonglong local_18;
+  uint uVar6;
+  ulonglong uVar7;
+  undefined1 *puVar8;
+  undefined1 auStack_38 [8];
+  undefined1 auStack_30 [24];
+  undefined8 local_18;
+  undefined1 local_10;
   
-  local_18 = __security_cookie ^ (ulonglong)auStack_68;
-  if ((DAT_0 & 4) == 0) {
-    uVar3 = *param_1;
-    if (((uVar3 & 0xafd2) == 0xafd2) &&
-       (puVar4 = *(undefined2 **)(param_1 + 0x60), puVar4 != (undefined2 *)0x0)) {
-      param_1[0x60] = 0;
-      param_1[0x61] = 0;
-      param_1[0x62] = 0;
-      param_1[99] = 0;
-      LOCK();
-      plVar1 = (longlong *)(puVar4 + 0x18);
-      lVar2 = *plVar1;
-      *plVar1 = *plVar1 + -1;
-      UNLOCK();
-      puVar7 = auStack_68;
-      if (lVar2 < 2) {
-        if (lVar2 == 1) {
-          AfdCloseConnection(puVar4);
-          puVar7 = auStack_68;
-        }
-        else {
-          pcVar5 = (code *)swi(0x29);
-          (*pcVar5)(0xe);
-          puVar7 = auStack_60;
-        }
+  if ((DAT_0 & 4) != 0) {
+                    /* WARNING: Subroutine does not return */
+    WPP_SF_I(0x13,&WPP_d2b38b0429f53b77cbd2e4881fa2ed61_Traceguids,param_1);
+  }
+  uVar3 = *param_1;
+  if (((uVar3 & 0xafd2) == 0xafd2) &&
+     (puVar4 = *(undefined2 **)(param_1 + 0x60), puVar4 != (undefined2 *)0x0)) {
+    param_1[0x60] = 0;
+    param_1[0x61] = 0;
+    param_1[0x62] = 0;
+    param_1[99] = 0;
+    LOCK();
+    plVar1 = (longlong *)(puVar4 + 0x18);
+    lVar2 = *plVar1;
+    *plVar1 = *plVar1 + -1;
+    UNLOCK();
+    puVar8 = auStack_38;
+    if (lVar2 < 2) {
+      if (lVar2 == 1) {
+        AfdCloseConnection(puVar4);
+        puVar8 = auStack_38;
       }
-      *(undefined2 **)(param_1 + 0xac) = puVar4;
-    }
-    else if (uVar3 == 0x1afd) {
-      puVar7 = auStack_68;
-      if (*(longlong *)(param_1 + 0x38) != 0) {
-        param_1[0x34] = 0;
-        param_1[0x35] = 0;
-        param_1[0x36] = 0;
-        param_1[0x37] = 0;
-        local_40 = 0;
-        local_48 = 0;
-        IoSetIoCompletion(*(undefined8 *)(*(longlong *)(param_1 + 0x30) + 0x70),
-                          *(longlong *)(param_1 + 0x38),0xfffffff8,0);
-        puVar7 = auStack_68;
+      else {
+        pcVar5 = (code *)swi(0x29);
+        (*pcVar5)(0xe);
+        puVar8 = auStack_30;
       }
     }
-    else {
-      puVar7 = auStack_68;
-      if (uVar3 == 0xfa09) {
-        AfdRioCloseRegistrationDomain((longlong)param_1);
-        puVar7 = auStack_68;
-      }
+    *(undefined2 **)(param_1 + 0xac) = puVar4;
+  }
+  else if (uVar3 == 0x1afd) {
+    puVar8 = auStack_38;
+    if (*(longlong *)(param_1 + 0x38) != 0) {
+      param_1[0x34] = 0;
+      param_1[0x35] = 0;
+      param_1[0x36] = 0;
+      param_1[0x37] = 0;
+      local_10 = 0;
+      local_18 = 0;
+      IoSetIoCompletion(*(undefined8 *)(*(longlong *)(param_1 + 0x30) + 0x70),
+                        *(longlong *)(param_1 + 0x38),0xfffffff8,0);
+      puVar8 = auStack_38;
     }
-    bVar8 = g_AfdEtwTraceEnable != 0;
-    *(undefined1 *)(param_1 + 1) = 6;
-    if (bVar8) {
-      *(undefined8 *)(puVar7 + 0x48) = 0;
-      *(ushort **)(puVar7 + 0x40) = param_1;
-      uVar3 = *param_1;
-      *(undefined8 *)(puVar7 + 0x30) = 0x3e90f04100003e9;
-      *(undefined8 *)(puVar7 + 0x38) = 0x8000000000000004;
-      puVar7[0x34] = 4;
-      puVar6 = puVar7 + 0x30;
-      *(ulonglong *)(puVar7 + 0x38) = (ulonglong)(uVar3 != 0xafd1) + 1 | 0x8000000000000004;
-      *(undefined8 *)(puVar7 + -8) = 0x140006be4;
-      AFDETW_TRACESTATUS(puVar6,1,0x7d1,(longlong)param_1);
-      if (Microsoft_Windows_Networking_CorrelationEnabled != 0) {
-        *(undefined4 *)(puVar7 + 0x20) = 1;
-        *(undefined8 *)(puVar7 + -8) = 0x140006c0b;
-        EtwEx_tidActivityInfo(puVar6,&ActivityStop,puVar7 + 0x40);
-      }
+  }
+  else {
+    puVar8 = auStack_38;
+    if (uVar3 == 0xfa09) {
+      AfdRioCloseRegistrationDomain((longlong)param_1);
+      puVar8 = auStack_38;
     }
-    *(undefined8 *)(puVar7 + -8) = 0x140006b41;
-    AfdDereferenceEndpoint(param_1);
-    *(undefined8 *)(puVar7 + -8) = 0x140006b50;
-    return 0;
   }
-                    /* WARNING: Subroutine does not return */
-  WPP_SF_I(0x13,&WPP_b1761ff4e622369dcfb23f4b74cf4d6f_Traceguids,param_1);
+  *(undefined1 *)(param_1 + 1) = 6;
+  if ((Feature_447951161__private_featureState & 0x10) == 0) {
+    *(undefined8 *)(puVar8 + -8) = 0x1400151ac;
+    uVar7 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+    uVar6 = (uint)uVar7;
+  }
+  else {
+    uVar6 = Feature_447951161__private_featureState & 1;
+  }
+  if ((uVar6 != 0) && (lVar2 = *(longlong *)(param_1 + 0xbc), lVar2 != 0)) {
+    param_1[0xbc] = 0;
+    param_1[0xbd] = 0;
+    param_1[0xbe] = 0;
+    param_1[0xbf] = 0;
+    *(undefined8 *)(puVar8 + -8) = 0x1400151d0;
+    ExFreePoolWithTag(lVar2,0x4e646641);
+  }
+  *(undefined8 *)(puVar8 + -8) = 0x1400151e7;
+  AFDETW_TRACECLOSE(1,0x7d1,(short *)param_1);
+  *(undefined8 *)(puVar8 + -8) = 0x1400151ef;
+  AfdDereferenceEndpoint(param_1);
+  return 0;
 }
 

```


## AfdReceiveDatagram

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.67|
|i_ratio|0.67|
|m_ratio|0.98|
|b_ratio|0.84|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdReceiveDatagram|AfdReceiveDatagram|
|fullname|AfdReceiveDatagram|AfdReceiveDatagram|
|refcount|5|5|
|`length`|2506|2625|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACERECVDATAGRAM<br>AfdIndicateEventSelectEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdReceiveDatagramProbeAndLockPages<br>AfdReceiveDatagramUnlockPages<br>AfdReturnBuffer<br>AfdSetupReceiveDatagramIrp<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExReleaseRundownProtection</summary>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_qL</details>|<details><summary>Expand for full list:<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACERECVDATAGRAM<br>AfdIndicateEventSelectEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdReceiveDatagramProbeAndLockPages<br>AfdReceiveDatagramUnlockPages<br>AfdReturnBuffer<br>AfdSetupReceiveDatagramIrp<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAcquireRundownProtection</summary>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_qL</details>|
|calling|AfdReceive|AfdReceive|
|paramcount|2|2|
|`address`|14003dec0|14003d010|
|sig|ulonglong __fastcall AfdReceiveDatagram(longlong param_1, char * param_2)|ulonglong __fastcall AfdReceiveDatagram(longlong param_1, char * param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdReceiveDatagram Called Diff


```diff
--- AfdReceiveDatagram called
+++ AfdReceiveDatagram called
@@ -9,0 +10 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
@@ -10,0 +12 @@
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdReceiveDatagram Diff


```diff
--- AfdReceiveDatagram
+++ AfdReceiveDatagram
@@ -1,360 +1,382 @@
 
 ulonglong AfdReceiveDatagram(longlong param_1,char *param_2)
 
 {
   ushort *puVar1;
   byte *pbVar2;
   ushort uVar3;
   short *psVar4;
   longlong lVar5;
   longlong lVar6;
   undefined8 uVar7;
   undefined8 *puVar8;
   longlong *plVar9;
   code *pcVar10;
   bool bVar11;
   char cVar12;
   ushort uVar13;
   uint uVar14;
   uint uVar15;
-  uint uVar16;
+  ulonglong uVar16;
   short *psVar17;
-  ulonglong uVar18;
-  undefined4 uVar19;
-  longlong *plVar20;
-  ushort uVar21;
+  undefined4 uVar18;
+  longlong *plVar19;
+  ushort uVar20;
+  longlong *plVar21;
   longlong *plVar22;
-  longlong *plVar23;
   uint local_res8 [2];
   char *local_res10;
-  uint local_res18 [2];
+  uint local_res18;
   uint local_res20 [2];
   ulonglong in_stack_ffffffffffffff40;
-  void *pvVar24;
+  void *pvVar23;
   uint in_stack_ffffffffffffff50;
+  uint local_88 [2];
+  longlong local_80;
   undefined8 local_78;
   undefined8 uStack_70;
   undefined8 local_68;
   undefined8 local_60;
   undefined8 uStack_58;
   undefined8 local_50;
   
-  plVar20 = (longlong *)0x0;
+  plVar19 = (longlong *)0x0;
   local_68 = 0;
   *(undefined8 *)(param_1 + 0x38) = 0;
   local_78 = 0;
   uStack_70 = 0;
-  uVar16 = 0;
-  local_res20[0] = 0;
+  uVar15 = 0;
+  local_88[0] = 0;
   local_res8[0] = 0;
   psVar4 = *(short **)(*(longlong *)(param_2 + 0x30) + 0x18);
-  local_res18[0] = 0;
+  local_res20[0] = 0;
   local_res10 = param_2;
   if ((*(byte *)((longlong)psVar4 + 7) & 0x10) != 0) {
     uVar14 = 0xc0000008;
     AFDETW_TRACERECVDATAGRAM(0,0x1045,psVar4,0);
     goto LAB_0;
   }
   if (*psVar4 != -0x502f) {
     uVar14 = 0xc000000d;
     AFDETW_TRACERECVDATAGRAM(0,0xfb8,psVar4,0);
     goto LAB_0;
   }
   if ((*(uint *)(psVar4 + 4) >> 0x11 & 1) != 0) {
     uVar14 = 0xc00000b0;
     AFDETW_TRACERECVDATAGRAM(0,0xfb9,psVar4,0);
     goto LAB_0;
   }
   if (1 < (byte)((char)psVar4[1] - 3U)) {
     uVar14 = 0xc000000d;
     AFDETW_TRACERECVDATAGRAM(0,0xfba,psVar4,0);
     goto LAB_0;
   }
-  uVar14 = AfdReceiveDatagramProbeAndLockPages(param_1,param_2,local_res20,local_res8,local_res18);
+  uVar14 = AfdReceiveDatagramProbeAndLockPages(param_1,param_2,local_88,local_res8,local_res20);
   if (-1 < (int)uVar14) {
-    uVar14 = local_res20[0] & 0x80;
+    uVar14 = local_88[0] & 0x80;
     psVar17 = psVar4 + 0x1c;
+    local_res18 = uVar14;
     KeAcquireInStackQueuedSpinLock(psVar17,&local_78);
     if ((*(uint *)(psVar4 + 4) >> 0xb & 1) == 0) {
       if (*(int *)(psVar4 + 0x4a) != 0) {
         plVar9 = (longlong *)(psVar4 + 0x40);
         lVar5 = *plVar9;
+        local_80 = lVar5;
         if (*(int *)(lVar5 + 0x30) < 0) {
           *(int *)(param_1 + 0x30) = *(int *)(lVar5 + 0x30);
           *(undefined8 *)(param_1 + 0x38) = 0;
-          plVar22 = plVar20;
-          plVar23 = plVar20;
-          uVar15 = uVar16;
+          plVar21 = plVar19;
+          plVar22 = plVar19;
+          uVar14 = uVar15;
         }
         else {
           AFDETW_TRACEBUFFER(psVar17,param_1,*(longlong *)(lVar5 + 0x38),0);
-          plVar20 = *(longlong **)(lVar5 + 0x58);
-          uVar16 = *(uint *)(lVar5 + 0x10);
-          plVar22 = (longlong *)(ulonglong)*(uint *)(lVar5 + 0x40);
-          plVar23 = (longlong *)((longlong)plVar20 + (longlong)(ulonglong)*(uint *)(lVar5 + 0x40));
-          uVar15 = *(uint *)(lVar5 + 0x18);
-        }
-        pvVar24 = *(void **)(lVar5 + 0x28);
-        uVar16 = AfdSetupReceiveDatagramIrp
-                           (param_1,(longlong)plVar20,(uint)plVar22,plVar23,uVar16,pvVar24,
-                            *(uint *)(lVar5 + 0x20),uVar15,'\0',0);
-        if (uVar14 == 0) {
-          plVar20 = (longlong *)*plVar9;
-          if (((longlong *)plVar20[1] != plVar9) ||
-             (lVar6 = *plVar20, *(longlong **)(lVar6 + 8) != plVar20)) goto LAB_1;
+          plVar19 = *(longlong **)(lVar5 + 0x58);
+          uVar15 = *(uint *)(lVar5 + 0x10);
+          plVar21 = (longlong *)(ulonglong)*(uint *)(lVar5 + 0x40);
+          plVar22 = (longlong *)((longlong)plVar19 + (longlong)(ulonglong)*(uint *)(lVar5 + 0x40));
+          uVar14 = *(uint *)(lVar5 + 0x18);
+        }
+        pvVar23 = *(void **)(lVar5 + 0x28);
+        uVar15 = AfdSetupReceiveDatagramIrp
+                           (param_1,(longlong)plVar19,(uint)plVar21,plVar22,uVar15,pvVar23,
+                            *(uint *)(lVar5 + 0x20),uVar14,'\0',0);
+        if (local_res18 == 0) {
+          plVar19 = (longlong *)*plVar9;
+          if (((longlong *)plVar19[1] != plVar9) ||
+             (lVar6 = *plVar19, *(longlong **)(lVar6 + 8) != plVar19)) goto LAB_1;
           *plVar9 = lVar6;
           *(longlong **)(lVar6 + 8) = plVar9;
           *(int *)(psVar4 + 0x4a) = *(int *)(psVar4 + 0x4a) + -1;
           *(int *)(psVar4 + 0x48) = *(int *)(psVar4 + 0x48) - *(int *)(lVar5 + 0x40);
           *(uint *)(psVar4 + 0x24) = *(uint *)(psVar4 + 0x24) & 0xfffffffe;
           if ((DAT_2 & 0x10) != 0) {
             WPP_SF_qL(10,&WPP_d0bb78fec14f3c9b0066aa8d66ffb774_Traceguids,psVar4,
                       *(undefined4 *)(psVar4 + 0x24));
           }
           if (*(int *)(psVar4 + 0x4a) == 0) {
             if (*(longlong *)(psVar4 + 0xbc) != 0) {
               puVar1 = (ushort *)(*(longlong *)(psVar4 + 0xbc) + 100);
               *puVar1 = *puVar1 & 0xfffe;
             }
             if ((*(uint *)(psVar4 + 4) & 0x10) == 0) {
               *(undefined1 *)((longlong)psVar4 + 0x21) = 1;
             }
           }
           else {
             AfdIndicateEventSelectEvent(psVar4,1,0);
           }
         }
         bVar11 = false;
         local_50 = 0;
         local_60 = 0;
         uStack_58 = 0;
         if ((*(longlong *)(psVar4 + 0xbc) == 0) ||
            (cVar12 = ExAcquireRundownProtection(psVar4 + 0xc0), cVar12 == '\0')) {
 LAB_3:
           KeReleaseInStackQueuedSpinLock(&local_78);
           if (!bVar11) goto LAB_4;
         }
         else {
-          lVar6 = *(longlong *)(psVar4 + 0xbc);
+          lVar5 = *(longlong *)(psVar4 + 0xbc);
           bVar11 = true;
-          uVar3 = *(ushort *)(lVar6 + 0x6a);
-          local_res10 = *(char **)(lVar6 + 0x40);
+          uVar3 = *(ushort *)(lVar5 + 0x6a);
+          local_res10 = *(char **)(lVar5 + 0x40);
           if ((uVar3 & 2) != 0) goto LAB_3;
-          uVar21 = uVar3 | 2;
-          *(ushort *)(lVar6 + 0x6a) = uVar21;
+          uVar20 = uVar3 | 2;
+          *(ushort *)(lVar5 + 0x6a) = uVar20;
           while ((uVar3 & 1) == 0) {
-            uVar13 = AfdNotifyComputeEvents(lVar6);
-            *(undefined2 *)(lVar6 + 0x66) = *(undefined2 *)(lVar6 + 100);
-            uVar3 = *(ushort *)(lVar6 + 0x68);
+            uVar13 = AfdNotifyComputeEvents(lVar5);
+            *(undefined2 *)(lVar5 + 0x66) = *(undefined2 *)(lVar5 + 100);
+            uVar3 = *(ushort *)(lVar5 + 0x68);
             if (uVar13 == uVar3) {
-              if ((*(byte *)(lVar6 + 99) & 1) != 0) {
-                uVar21 = uVar21 | 4;
+              if ((*(byte *)(lVar5 + 99) & 1) != 0) {
+                uVar20 = uVar20 | 4;
               }
 LAB_5:
-              *(ushort *)(lVar6 + 0x6a) = uVar21 & 0xfffd;
+              *(ushort *)(lVar5 + 0x6a) = uVar20 & 0xfffd;
               goto LAB_6;
             }
             if ((uVar13 & uVar3) != 0) goto LAB_5;
             if (uVar3 == 0) {
-              *(ushort *)(lVar6 + 0x68) = uVar13;
+              *(ushort *)(lVar5 + 0x68) = uVar13;
               KeReleaseInStackQueuedSpinLock(&local_78);
               ObfReferenceObject(local_res10);
-              uVar15 = uVar15 & 0xffffff00;
-              pvVar24 = (void *)((ulonglong)pvVar24 & 0xffffffffffffff00);
+              uVar14 = uVar14 & 0xffffff00;
+              pvVar23 = (void *)((ulonglong)pvVar23 & 0xffffffffffffff00);
               IoSetIoCompletionEx3
-                        (*(undefined8 *)(lVar6 + 0x50),*(undefined8 *)(lVar6 + 0x58),0,0,uVar13,
-                         pvVar24,lVar6,uVar15,AfdPriorityBoost);
+                        (*(undefined8 *)(lVar5 + 0x50),*(undefined8 *)(lVar5 + 0x58),0,0,uVar13,
+                         pvVar23,lVar5,uVar14,AfdPriorityBoost);
               KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
             }
             else {
               KeReleaseInStackQueuedSpinLock();
-              cVar12 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar6 + 0x50),lVar6);
+              cVar12 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar5 + 0x50),lVar5);
               if (cVar12 == '\0') {
                 KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
-                if (*(short *)(lVar6 + 0x68) != 0) {
-                  *(ushort *)(lVar6 + 0x6a) = *(ushort *)(lVar6 + 0x6a) & 0xfffd;
+                if (*(short *)(lVar5 + 0x68) != 0) {
+                  *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
                   goto LAB_6;
                 }
               }
               else {
                 ObfDereferenceObject(local_res10);
                 KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
-                *(undefined2 *)(lVar6 + 0x68) = 0;
+                *(undefined2 *)(lVar5 + 0x68) = 0;
               }
             }
-            uVar21 = *(ushort *)(lVar6 + 0x6a);
-            uVar3 = uVar21;
+            uVar20 = *(ushort *)(lVar5 + 0x6a);
+            uVar3 = uVar20;
           }
           psVar4[0xbc] = 0;
           psVar4[0xbd] = 0;
           psVar4[0xbe] = 0;
           psVar4[0xbf] = 0;
-          *(ushort *)(lVar6 + 0x6a) = *(ushort *)(lVar6 + 0x6a) & 0xfffd;
-          KeReleaseInStackQueuedSpinLock(&local_78);
-          AfdNotifyDestroyContext(local_res10,lVar6);
+          *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
+          KeReleaseInStackQueuedSpinLock(&local_78);
+          AfdNotifyDestroyContext(local_res10,lVar5);
+          if ((Feature_447951161__private_featureState & 0x10) == 0) {
+            uVar16 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+            uVar14 = (uint)uVar16;
+          }
+          else {
+            uVar14 = Feature_447951161__private_featureState & 1;
+          }
+          if (uVar14 != 0) {
+            ExFreePoolWithTag(lVar5,0x4e646641);
+          }
           KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
 LAB_6:
           KeReleaseInStackQueuedSpinLock(&local_78);
         }
         ExReleaseRundownProtection(psVar4 + 0xc0);
 LAB_4:
-        if (uVar14 == 0) {
-          AfdReturnBuffer(lVar5,*(longlong *)(psVar4 + 0x18));
-        }
-        if ((uVar16 == 0x80000005) && ((local_res8[0] & 2) != 0)) {
-          uVar16 = 0x103;
+        if (local_res18 == 0) {
+          AfdReturnBuffer(local_80,*(longlong *)(psVar4 + 0x18));
+        }
+        if ((uVar15 == 0x80000005) && ((local_res8[0] & 2) != 0)) {
+          uVar15 = 0x103;
           pbVar2 = (byte *)(*(longlong *)(param_1 + 0xb8) + 3);
           *pbVar2 = *pbVar2 | 1;
         }
         IofCompleteRequest(param_1,0);
-        return (ulonglong)uVar16;
-      }
-      if (((*(uint *)(psVar4 + 4) & 0x10) == 0) || ((local_res8[0] & 2) != 0)) {
-        plVar20 = (longlong *)(param_1 + 0xa8);
+        return (ulonglong)uVar15;
+      }
+      if (((*(uint *)(psVar4 + 4) & 0x10) == 0) ||
+         (local_res18 = local_res8[0], (local_res8[0] & 2) != 0)) {
+        plVar19 = (longlong *)(param_1 + 0xa8);
         psVar17 = psVar4 + 0x38;
         if (uVar14 == 0) {
           psVar17 = psVar4 + 0x30;
         }
         puVar8 = *(undefined8 **)(psVar17 + 4);
         if ((short *)*puVar8 != psVar17) {
 LAB_1:
           pcVar10 = (code *)swi(0x29);
           (*pcVar10)(3);
           pcVar10 = (code *)swi(3);
-          uVar18 = (*pcVar10)();
-          return uVar18;
-        }
-        *plVar20 = (longlong)psVar17;
+          uVar16 = (*pcVar10)();
+          return uVar16;
+        }
+        *plVar19 = (longlong)psVar17;
         *(undefined8 **)(param_1 + 0xb0) = puVar8;
-        *puVar8 = plVar20;
-        *(longlong **)(psVar17 + 4) = plVar20;
+        *puVar8 = plVar19;
+        *(longlong **)(psVar17 + 4) = plVar19;
         LOCK();
         *(code **)(param_1 + 0x68) = AfdCancelReceiveDatagram;
         UNLOCK();
         if (*(char *)(param_1 + 0x44) == '\0') {
 LAB_7:
           pbVar2 = (byte *)(*(longlong *)(param_1 + 0xb8) + 3);
           *pbVar2 = *pbVar2 | 1;
           KeReleaseInStackQueuedSpinLock(&local_78);
           return 0x103;
         }
-        lVar5 = *plVar20;
-        if ((*(longlong **)(lVar5 + 8) != plVar20) ||
-           (plVar9 = *(longlong **)(param_1 + 0xb0), (longlong *)*plVar9 != plVar20))
+        lVar5 = *plVar19;
+        if ((*(longlong **)(lVar5 + 8) != plVar19) ||
+           (plVar9 = *(longlong **)(param_1 + 0xb0), (longlong *)*plVar9 != plVar19))
         goto LAB_1;
         *plVar9 = lVar5;
         *(longlong **)(lVar5 + 8) = plVar9;
         LOCK();
         lVar5 = *(longlong *)(param_1 + 0x68);
         *(longlong *)(param_1 + 0x68) = 0;
         UNLOCK();
         if (lVar5 == 0) {
-          *plVar20 = 0;
+          *plVar19 = 0;
           goto LAB_7;
         }
         KeReleaseInStackQueuedSpinLock(&local_78);
         uVar14 = 0xc0000120;
-        uVar19 = 0xfd6;
+        uVar18 = 0xfd6;
         goto LAB_8;
       }
       if (*(longlong *)(psVar4 + 0xbc) != 0) {
         puVar1 = (ushort *)(*(longlong *)(psVar4 + 0xbc) + 100);
         *puVar1 = *puVar1 & 0xfffe;
       }
       *(uint *)(psVar4 + 0x24) = *(uint *)(psVar4 + 0x24) & 0xfffffffe;
       if ((DAT_2 & 0x10) != 0) {
         WPP_SF_qL(0xb,&WPP_d0bb78fec14f3c9b0066aa8d66ffb774_Traceguids,psVar4,
                   *(undefined4 *)(psVar4 + 0x24));
       }
       bVar11 = false;
       local_50 = 0;
       local_60 = 0;
       uStack_58 = 0;
       if ((*(longlong *)(psVar4 + 0xbc) == 0) ||
          (cVar12 = ExAcquireRundownProtection(psVar4 + 0xc0), cVar12 == '\0')) {
 LAB_9:
         KeReleaseInStackQueuedSpinLock(&local_78);
         if (bVar11) goto LAB_10;
       }
       else {
         lVar5 = *(longlong *)(psVar4 + 0xbc);
         bVar11 = true;
         uVar3 = *(ushort *)(lVar5 + 0x6a);
         uVar7 = *(undefined8 *)(lVar5 + 0x40);
         if ((uVar3 & 2) != 0) goto LAB_9;
-        uVar21 = uVar3 | 2;
-        *(ushort *)(lVar5 + 0x6a) = uVar21;
+        uVar20 = uVar3 | 2;
+        *(ushort *)(lVar5 + 0x6a) = uVar20;
         while ((uVar3 & 1) == 0) {
           uVar13 = AfdNotifyComputeEvents(lVar5);
           *(undefined2 *)(lVar5 + 0x66) = *(undefined2 *)(lVar5 + 100);
           uVar3 = *(ushort *)(lVar5 + 0x68);
           if (uVar13 == uVar3) {
             if ((*(byte *)(lVar5 + 99) & 1) != 0) {
-              uVar21 = uVar21 | 4;
+              uVar20 = uVar20 | 4;
             }
 LAB_11:
-            *(ushort *)(lVar5 + 0x6a) = uVar21 & 0xfffd;
-            goto LAB_12;
+            *(ushort *)(lVar5 + 0x6a) = uVar20 & 0xfffd;
+LAB_12:
+            KeReleaseInStackQueuedSpinLock(&local_78);
+            goto LAB_10;
           }
           if ((uVar13 & uVar3) != 0) goto LAB_11;
-          if (uVar3 == 0) {
-            *(ushort *)(lVar5 + 0x68) = uVar13;
-            KeReleaseInStackQueuedSpinLock(&local_78);
-            ObfReferenceObject(uVar7);
-            in_stack_ffffffffffffff50 = in_stack_ffffffffffffff50 & 0xffffff00;
-            in_stack_ffffffffffffff40 = in_stack_ffffffffffffff40 & 0xffffffffffffff00;
-            IoSetIoCompletionEx3
-                      (*(undefined8 *)(lVar5 + 0x50),*(undefined8 *)(lVar5 + 0x58),0,0,uVar13,
-                       in_stack_ffffffffffffff40,lVar5,in_stack_ffffffffffffff50,AfdPriorityBoost);
-            KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
-          }
-          else {
+          if (uVar3 != 0) {
             KeReleaseInStackQueuedSpinLock();
             cVar12 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar5 + 0x50),lVar5);
-            if (cVar12 == '\0') {
-              KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
-              if (*(short *)(lVar5 + 0x68) != 0) {
-                *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
-                goto LAB_12;
-              }
-            }
-            else {
+            if (cVar12 != '\0') {
               ObfDereferenceObject(uVar7);
               KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
               *(undefined2 *)(lVar5 + 0x68) = 0;
-            }
-          }
-          uVar21 = *(ushort *)(lVar5 + 0x6a);
-          uVar3 = uVar21;
+              goto LAB_13;
+            }
+            KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
+            if (*(short *)(lVar5 + 0x68) == 0) goto LAB_13;
+            *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
+            goto LAB_12;
+          }
+          *(ushort *)(lVar5 + 0x68) = uVar13;
+          KeReleaseInStackQueuedSpinLock(&local_78);
+          ObfReferenceObject(uVar7);
+          in_stack_ffffffffffffff50 = in_stack_ffffffffffffff50 & 0xffffff00;
+          in_stack_ffffffffffffff40 = in_stack_ffffffffffffff40 & 0xffffffffffffff00;
+          IoSetIoCompletionEx3
+                    (*(undefined8 *)(lVar5 + 0x50),*(undefined8 *)(lVar5 + 0x58),0,0,uVar13,
+                     in_stack_ffffffffffffff40,lVar5,in_stack_ffffffffffffff50,AfdPriorityBoost);
+          KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
+LAB_13:
+          uVar20 = *(ushort *)(lVar5 + 0x6a);
+          uVar3 = uVar20;
         }
         psVar4[0xbc] = 0;
         psVar4[0xbd] = 0;
         psVar4[0xbe] = 0;
         psVar4[0xbf] = 0;
         *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
         KeReleaseInStackQueuedSpinLock(&local_78);
         AfdNotifyDestroyContext(uVar7,lVar5);
+        if ((Feature_447951161__private_featureState & 0x10) == 0) {
+          uVar16 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+          uVar15 = (uint)uVar16;
+        }
+        else {
+          uVar15 = Feature_447951161__private_featureState & 1;
+        }
+        if (uVar15 != 0) {
+          ExFreePoolWithTag(lVar5,0x4e646641);
+        }
         KeAcquireInStackQueuedSpinLock(psVar4 + 0x1c,&local_78);
-LAB_12:
         KeReleaseInStackQueuedSpinLock(&local_78);
 LAB_10:
         ExReleaseRundownProtection(psVar4 + 0xc0);
       }
       uVar14 = 0xc00000a3;
-      uVar19 = 0xfd5;
+      uVar18 = 0xfd5;
     }
     else {
       KeReleaseInStackQueuedSpinLock(&local_78);
       uVar14 = 0xc0000120;
-      uVar19 = 0xfd2;
+      uVar18 = 0xfd2;
     }
 LAB_8:
-    AFDETW_TRACERECVDATAGRAM(1,uVar19,psVar4,0);
+    AFDETW_TRACERECVDATAGRAM(1,uVar18,psVar4,0);
   }
   AfdReceiveDatagramUnlockPages(param_1,(longlong)local_res10);
 LAB_0:
   *(uint *)(param_1 + 0x30) = uVar14;
   IofCompleteRequest(param_1,0);
   return (ulonglong)uVar14;
 }
 

```


## AfdSanAcceptCore

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.19|
|i_ratio|0.27|
|m_ratio|0.85|
|b_ratio|0.55|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdSanAcceptCore|AfdSanAcceptCore|
|fullname|AfdSanAcceptCore|AfdSanAcceptCore|
|refcount|4|4|
|`length`|1459|1929|
|`called`|<details><summary>Expand for full list:<br>AfdDereferenceEndpoint<br>AfdIndicateEventSelectEvent<br>AfdNotifySockEventsChangedUnderLock<br>AfdNotifySockIndicateEventsUnlock<br>AfdSanInitEndpoint<br>AfdSanReleaseConnection<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IoThreadToProcess<br>NTOSKRNL.EXE::IofCompleteRequest</summary>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeAttachProcess<br>NTOSKRNL.EXE::KeDetachProcess<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmMapLockedPages<br>NTOSKRNL.EXE::ObCloseHandle<br>NTOSKRNL.EXE::ObOpenObjectByPointer<br>WPP_SF_qL<br>memcpy</details>|<details><summary>Expand for full list:<br>AfdDereferenceEndpoint<br>AfdIndicateEventSelectEvent<br>AfdNotifySockEventsChangedUnderLock<br>AfdNotifySockIndicateEventsUnlock<br>AfdSanInitEndpoint<br>AfdSanReleaseConnection<br>Feature_3923194169__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::IoAcquireCancelSpinLock<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::IoReleaseCancelSpinLock<br>NTOSKRNL.EXE::IoThreadToProcess</summary>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeAttachProcess<br>NTOSKRNL.EXE::KeDetachProcess<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmMapLockedPages<br>NTOSKRNL.EXE::ObCloseHandle<br>NTOSKRNL.EXE::ObOpenObjectByPointer<br>WPP_SF_qL<br>memcpy</details>|
|calling|AfdAccept<br>AfdServiceSuperAccept<br>AfdServiceWaitForListen|AfdAccept<br>AfdServiceSuperAccept<br>AfdServiceWaitForListen|
|paramcount|4|4|
|`address`|140044f40|1400453bc|
|sig|undefined8 __fastcall AfdSanAcceptCore(longlong param_1, longlong param_2, undefined2 * param_3, undefined8 * param_4)|undefined8 __fastcall AfdSanAcceptCore(longlong param_1, longlong param_2, undefined2 * param_3, undefined8 * param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdSanAcceptCore Called Diff


```diff
--- AfdSanAcceptCore called
+++ AfdSanAcceptCore called
@@ -6,0 +7 @@
+Feature_3923194169__private_IsEnabledDeviceUsageNoInline
```


### AfdSanAcceptCore Diff


```diff
--- AfdSanAcceptCore
+++ AfdSanAcceptCore
@@ -1,258 +1,353 @@
 
 undefined8
 AfdSanAcceptCore(longlong param_1,longlong param_2,undefined2 *param_3,undefined8 *param_4)
 
 {
   byte *pbVar1;
-  short sVar2;
-  ushort uVar3;
-  uint uVar4;
-  uint uVar5;
-  ushort *puVar6;
-  longlong lVar7;
-  longlong lVar8;
-  code *pcVar9;
-  char cVar10;
-  int iVar11;
-  undefined8 uVar12;
+  uint uVar2;
+  longlong lVar3;
+  code *pcVar4;
+  undefined8 *puVar5;
+  char cVar6;
+  int iVar7;
+  uint uVar8;
+  uint uVar9;
+  undefined8 uVar10;
+  longlong lVar11;
+  longlong lVar12;
   longlong lVar13;
-  longlong lVar14;
-  longlong lVar15;
-  longlong lVar16;
-  longlong *plVar17;
-  undefined8 *puVar18;
-  longlong *plVar19;
-  undefined1 *puVar20;
-  undefined4 *_Dst;
-  uint local_res8 [2];
-  longlong local_res10;
-  undefined8 local_res18;
+  ulonglong uVar14;
+  longlong *plVar15;
+  ushort uVar16;
+  ushort uVar17;
+  longlong *plVar18;
+  undefined1 *puVar19;
+  ushort *puVar20;
+  undefined4 *puVar21;
+  longlong lVar22;
+  undefined1 local_res8 [8];
+  undefined4 local_res10;
+  longlong local_res18;
   undefined8 *local_res20;
-  undefined1 auStack_98 [8];
-  undefined1 auStack_90 [24];
-  undefined8 local_78;
-  undefined1 local_70;
-  undefined8 *local_68;
+  undefined1 auStack_a8 [8];
+  undefined1 auStack_a0 [24];
+  undefined8 local_88;
+  undefined1 local_80;
+  undefined8 *local_78;
+  undefined8 local_68;
+  longlong local_60;
   longlong local_58;
   longlong local_50;
   
-  puVar20 = auStack_98;
-  lVar15 = 0;
-  local_res18 = 0;
-  puVar6 = *(ushort **)(*(longlong *)(*(longlong *)(param_1 + 0xb8) + 0x30) + 0x18);
-  lVar7 = *(longlong *)(param_2 + 0x18);
-  lVar8 = *(longlong *)(param_3 + 0x14);
+  puVar19 = auStack_a8;
+  lVar13 = 0;
+  local_68 = 0;
+  puVar20 = *(ushort **)(*(longlong *)(*(longlong *)(param_1 + 0xb8) + 0x30) + 0x18);
+  local_res18 = *(longlong *)(param_2 + 0x18);
+  lVar3 = *(longlong *)(param_3 + 0x14);
   *(undefined8 *)(param_3 + 0x14) = 0;
-  *(uint *)(puVar6 + 0x24) = *(uint *)(puVar6 + 0x24) & 0xffffff7f;
-  local_res10 = param_2;
+  *(uint *)(puVar20 + 0x24) = *(uint *)(puVar20 + 0x24) & 0xffffff7f;
   local_res20 = param_4;
-  local_58 = lVar8;
+  local_58 = lVar3;
   if ((DAT_0 & 0x10) != 0) {
-    WPP_SF_qL(0x33,&WPP_b1893ce3e4e03974ce237ee1d23f932c_Traceguids,puVar6,
-              *(undefined4 *)(puVar6 + 0x24));
-  }
-  if (*(ushort **)(puVar6 + 0x30) == puVar6 + 0x30) {
-    AfdNotifySockEventsChangedUnderLock((longlong)puVar6,0,0x80);
+    WPP_SF_qL(0x33,&WPP_d87f5cfd203e31ba1feb40bae02b1e31_Traceguids,puVar20,
+              *(undefined4 *)(puVar20 + 0x24));
+  }
+  if (*(ushort **)(puVar20 + 0x30) == puVar20 + 0x30) {
+    AfdNotifySockEventsChangedUnderLock((longlong)puVar20,0,0x80);
   }
   else {
-    AfdIndicateEventSelectEvent((short *)puVar6,0x80,0);
+    AfdIndicateEventSelectEvent((short *)puVar20,0x80,0);
   }
   *(undefined8 *)(param_3 + 4) = 0;
   *(uint *)(param_3 + 2) = *(uint *)(param_3 + 2) & 0xdfffffff;
   LOCK();
-  lVar13 = *(longlong *)(lVar8 + 0x68);
-  *(longlong *)(lVar8 + 0x68) = 0;
+  lVar11 = *(longlong *)(lVar3 + 0x68);
+  *(longlong *)(lVar3 + 0x68) = 0;
   UNLOCK();
-  if (lVar13 == 0) {
-    AfdNotifySockIndicateEventsUnlock((longlong)puVar6,param_4,'\0');
-    AfdSanReleaseConnection((longlong)puVar6,param_3,'\0');
-    AfdDereferenceEndpoint(puVar6);
-    *(undefined4 *)(lVar8 + 0x30) = 0xc0000120;
+  if (lVar11 == 0) {
+    AfdNotifySockIndicateEventsUnlock((longlong)puVar20,param_4,'\0');
+    AfdSanReleaseConnection((longlong)puVar20,param_3,'\0');
+    AfdDereferenceEndpoint(puVar20);
+    *(undefined4 *)(lVar3 + 0x30) = 0xc0000120;
 LAB_1:
-    *(undefined8 *)(lVar8 + 0x38) = 0;
-    IofCompleteRequest(lVar8,AfdPriorityBoost);
-    uVar12 = 0xc000013c;
+    *(undefined8 *)(lVar3 + 0x38) = 0;
+    IofCompleteRequest(lVar3,AfdPriorityBoost);
+    uVar10 = 0xc000013c;
   }
   else {
-    AfdNotifySockIndicateEventsUnlock((longlong)puVar6,param_4,'\0');
-    AfdSanReleaseConnection((longlong)puVar6,param_3,'\0');
-    AfdDereferenceEndpoint(puVar6);
-    lVar13 = IoThreadToProcess(*(undefined8 *)(param_1 + 0x98));
-    lVar14 = IoThreadToProcess(*(undefined8 *)(lVar8 + 0x98));
-    if (lVar13 == lVar14) {
-      local_res18 = *(undefined8 *)(param_1 + 0x90);
+    AfdNotifySockIndicateEventsUnlock((longlong)puVar20,param_4,'\0');
+    AfdSanReleaseConnection((longlong)puVar20,param_3,'\0');
+    AfdDereferenceEndpoint(puVar20);
+    lVar11 = IoThreadToProcess(*(undefined8 *)(param_1 + 0x98));
+    lVar12 = IoThreadToProcess(*(undefined8 *)(lVar3 + 0x98));
+    if (lVar11 == lVar12) {
+      local_68 = *(undefined8 *)(param_1 + 0x90);
       local_50 = 0;
     }
     else {
-      lVar15 = IoThreadToProcess(*(undefined8 *)(lVar8 + 0x98));
-      local_50 = lVar15;
-      KeAttachProcess(lVar15);
-      local_68 = &local_res18;
-      local_70 = 1;
-      local_78 = *(undefined8 *)IoFileObjectType_exref;
-      iVar11 = ObOpenObjectByPointer(local_res10,0x40,0,0x2000000);
+      lVar13 = IoThreadToProcess(*(undefined8 *)(lVar3 + 0x98));
+      local_50 = lVar13;
+      KeAttachProcess(lVar13);
+      local_78 = &local_68;
+      local_80 = 1;
+      local_88 = *(undefined8 *)IoFileObjectType_exref;
+      iVar7 = ObOpenObjectByPointer(param_2,0x40,0,0x2000000);
       KeDetachProcess();
-      if (iVar11 < 0) {
-        *(undefined4 *)(lVar8 + 0x30) = 0xc0000008;
+      if (iVar7 < 0) {
+        *(undefined4 *)(lVar3 + 0x30) = 0xc0000008;
         goto LAB_1;
       }
     }
-    KeAcquireInStackQueuedSpinLock(lVar7 + 0x38,param_4);
+    puVar5 = local_res20;
+    KeAcquireInStackQueuedSpinLock(local_res18 + 0x38,local_res20);
     LOCK();
     *(code **)(param_1 + 0x68) = AfdSanCancelAccept;
     UNLOCK();
-    if (((*(uint *)(lVar7 + 8) & 0x800) == 0) && (*(char *)(param_1 + 0x44) == '\0')) {
+    if (((*(uint *)(local_res18 + 8) & 0x800) == 0) && (*(char *)(param_1 + 0x44) == '\0')) {
       pbVar1 = (byte *)(*(longlong *)(param_1 + 0xb8) + 3);
       *pbVar1 = *pbVar1 | 1;
-      lVar13 = *(longlong *)(param_1 + 0xb8);
-      local_res8[0] = *(uint *)(lVar13 + 8);
-      lVar14 = *(longlong *)(lVar8 + 0x18);
-      *(undefined8 *)(lVar7 + 0x160) = 0;
-      AfdSanInitEndpoint(*(longlong *)(*(longlong *)(*(longlong *)(lVar8 + 0xb8) + 0x30) + 0x18),
-                         local_res10,*(undefined8 *)(lVar14 + 8));
-      if (lVar15 != 0) {
-        *(undefined1 *)(lVar7 + 0xa0) = 1;
-      }
-      plVar17 = (longlong *)(param_1 + 0xa8);
-      lVar16 = lVar7 + 0x80;
-      plVar19 = *(longlong **)(lVar7 + 0x88);
-      if (*plVar19 != lVar16) {
-        plVar17 = (longlong *)0x3;
-        pcVar9 = (code *)swi(0x29);
-        lVar16 = (*pcVar9)();
-        puVar20 = auStack_90;
-      }
-      *plVar17 = lVar16;
-      plVar17[1] = (longlong)plVar19;
-      *plVar19 = (longlong)plVar17;
-      *(longlong **)(lVar16 + 8) = plVar17;
-      if (*(int *)(lVar13 + 0x10) != 0) {
-        sVar2 = *(short *)(lVar14 + 0x14);
-        *(short *)(puVar20 + 0xa8) = sVar2;
-        lVar16 = *(longlong *)(param_1 + 8);
-        if (*(char *)(lVar7 + 0xbc) == '\0') {
-          if ((*(byte *)(lVar16 + 10) & 5) == 0) {
-            *(undefined8 *)(puVar20 + -8) = 0x1400452bb;
-            lVar16 = MmMapLockedPages(lVar16,0);
-          }
-          else {
-            lVar16 = *(longlong *)(lVar16 + 0x18);
-          }
-          uVar4 = *(uint *)(lVar13 + 0x18);
-          uVar5 = *(uint *)(lVar13 + 8);
-          *(undefined8 *)(puVar20 + -8) = 0x1400452e6;
-          memcpy((void *)((ulonglong)uVar5 + (ulonglong)uVar4 + lVar16),(void *)(lVar14 + 0x10),
-                 (ulonglong)*(ushort *)(puVar20 + 0xa8) + 8);
+      lVar11 = *(longlong *)(param_1 + 0xb8);
+      local_res10 = *(undefined4 *)(lVar11 + 8);
+      local_60 = *(longlong *)(lVar3 + 0x18);
+      *(undefined8 *)(local_res18 + 0x160) = 0;
+      AfdSanInitEndpoint(*(longlong *)(*(longlong *)(*(longlong *)(lVar3 + 0xb8) + 0x30) + 0x18),
+                         param_2,*(undefined8 *)(local_60 + 8));
+      if (lVar13 != 0) {
+        *(undefined1 *)(local_res18 + 0xa0) = 1;
+      }
+      plVar15 = (longlong *)(param_1 + 0xa8);
+      lVar12 = local_res18 + 0x80;
+      plVar18 = *(longlong **)(local_res18 + 0x88);
+      lVar22 = local_res18;
+      if (*plVar18 != lVar12) {
+        plVar15 = (longlong *)0x3;
+        pcVar4 = (code *)swi(0x29);
+        lVar12 = (*pcVar4)();
+        puVar19 = auStack_a0;
+      }
+      *plVar15 = lVar12;
+      plVar15[1] = (longlong)plVar18;
+      *plVar18 = (longlong)plVar15;
+      *(longlong **)(lVar12 + 8) = plVar15;
+      if (*(int *)(lVar11 + 0x10) != 0) {
+        if ((Feature_3923194169__private_featureState & 0x10) == 0) {
+          *(undefined8 *)(puVar19 + -8) = 0x1400456a2;
+          uVar14 = Feature_3923194169__private_IsEnabledDeviceUsageNoInline();
+          uVar8 = (uint)uVar14;
+          lVar22 = *(longlong *)(puVar19 + 0xc0);
         }
         else {
-          *(short *)(puVar20 + 0xa8) = sVar2 + 2;
-          if ((*(byte *)(lVar16 + 10) & 5) == 0) {
-            *(undefined8 *)(puVar20 + -8) = 0x14004522c;
-            lVar16 = MmMapLockedPages(lVar16,0);
+          uVar8 = Feature_3923194169__private_featureState & 1;
+        }
+        if ((uVar8 == 0) || (0xb < *(uint *)(lVar11 + 0x10))) {
+          uVar8 = *(ushort *)(*(longlong *)(puVar19 + 0x48) + 0x14) + 8;
+          if (*(char *)(lVar22 + 0xbc) == '\0') {
+            if ((Feature_3923194169__private_featureState & 0x10) == 0) {
+              *(undefined8 *)(puVar19 + -8) = 0x1400457d3;
+              uVar14 = Feature_3923194169__private_IsEnabledDeviceUsageNoInline();
+              uVar9 = (uint)uVar14;
+            }
+            else {
+              uVar9 = Feature_3923194169__private_featureState & 1;
+            }
+            if ((uVar9 != 0) && (*(uint *)(lVar11 + 0x10) < uVar8)) {
+              uVar8 = *(uint *)(lVar11 + 0x10);
+            }
+            lVar12 = *(longlong *)(param_1 + 8);
+            if ((*(byte *)(lVar12 + 10) & 5) == 0) {
+              *(undefined8 *)(puVar19 + -8) = 0x1400457fa;
+              lVar12 = MmMapLockedPages(lVar12,0);
+            }
+            else {
+              lVar12 = *(longlong *)(lVar12 + 0x18);
+            }
+            lVar22 = *(longlong *)(puVar19 + 0x48);
+            uVar9 = *(uint *)(lVar11 + 0x18);
+            uVar2 = *(uint *)(lVar11 + 8);
+            *(undefined8 *)(puVar19 + -8) = 0x140045820;
+            memcpy((void *)((ulonglong)uVar2 + (ulonglong)uVar9 + lVar12),(void *)(lVar22 + 0x10),
+                   (ulonglong)uVar8);
           }
           else {
-            lVar16 = *(longlong *)(lVar16 + 0x18);
-          }
-          uVar4 = *(uint *)(lVar13 + 0x18);
-          uVar5 = *(uint *)(lVar13 + 0x10);
-          *(ulonglong *)(puVar20 + 0x58) = (ulonglong)*(uint *)(lVar13 + 8);
-          *(ulonglong *)(puVar20 + 0x50) = (ulonglong)uVar5 + lVar16 + (ulonglong)uVar4;
-          lVar16 = *(longlong *)(param_1 + 8);
-          if ((*(byte *)(lVar16 + 10) & 5) == 0) {
-            *(undefined8 *)(puVar20 + -8) = 0x140045266;
-            lVar16 = MmMapLockedPages(lVar16,0);
+            uVar16 = *(ushort *)(*(longlong *)(puVar19 + 0x48) + 0x14) + 2;
+            uVar8 = (uint)uVar16;
+            *(uint *)(puVar19 + 0xb0) = (uint)uVar16;
+            if ((Feature_3923194169__private_featureState & 0x10) == 0) {
+              *(undefined8 *)(puVar19 + -8) = 0x1400456f7;
+              uVar14 = Feature_3923194169__private_IsEnabledDeviceUsageNoInline();
+              uVar9 = (uint)uVar14;
+              uVar8 = *(uint *)(puVar19 + 0xb0);
+            }
+            else {
+              uVar9 = Feature_3923194169__private_featureState & 1;
+            }
+            if ((uVar9 == 0) ||
+               ((ulonglong)(uVar8 & 0xffff) <= (ulonglong)*(uint *)(lVar11 + 0x10) - 2)) {
+              uVar8 = *(uint *)(puVar19 + 0xb0);
+            }
+            else {
+              uVar8 = (uint)(ushort)(*(short *)(lVar11 + 0x10) - 2);
+            }
+            lVar12 = *(longlong *)(param_1 + 8);
+            if ((*(byte *)(lVar12 + 10) & 5) == 0) {
+              *(undefined8 *)(puVar19 + -8) = 0x140045742;
+              lVar12 = MmMapLockedPages(lVar12,0);
+            }
+            else {
+              lVar12 = *(longlong *)(lVar12 + 0x18);
+            }
+            uVar9 = *(uint *)(lVar11 + 0x18);
+            uVar2 = *(uint *)(lVar11 + 8);
+            *(ulonglong *)(puVar19 + 0x60) = (ulonglong)*(uint *)(lVar11 + 0x10);
+            *(ulonglong *)(puVar19 + 0xb0) = (ulonglong)uVar2 + lVar12 + (ulonglong)uVar9;
+            lVar12 = *(longlong *)(param_1 + 8);
+            if ((*(byte *)(lVar12 + 10) & 5) == 0) {
+              *(undefined8 *)(puVar19 + -8) = 0x14004577f;
+              lVar12 = MmMapLockedPages(lVar12,0);
+            }
+            else {
+              lVar12 = *(longlong *)(lVar12 + 0x18);
+            }
+            uVar9 = *(uint *)(lVar11 + 0x18);
+            uVar2 = *(uint *)(lVar11 + 8);
+            *(undefined8 *)(puVar19 + -8) = 0x1400457a5;
+            memcpy((void *)((ulonglong)uVar2 + (ulonglong)uVar9 + lVar12),
+                   (void *)(*(longlong *)(puVar19 + 0x48) + 0x16),(ulonglong)(uVar8 & 0xffff));
+            *(short *)(*(longlong *)(puVar19 + 0x60) + -2 + *(longlong *)(puVar19 + 0xb0)) =
+                 (short)uVar8;
+            lVar22 = *(longlong *)(puVar19 + 0x48);
+          }
+          if ((Feature_3923194169__private_featureState & 0x10) == 0) {
+            *(undefined8 *)(puVar19 + -8) = 0x140045834;
+            uVar14 = Feature_3923194169__private_IsEnabledDeviceUsageNoInline();
+            uVar8 = (uint)uVar14;
           }
           else {
-            lVar16 = *(longlong *)(lVar16 + 0x18);
-          }
-          uVar4 = *(uint *)(lVar13 + 0x18);
-          uVar5 = *(uint *)(lVar13 + 8);
-          *(undefined8 *)(puVar20 + -8) = 0x14004528d;
-          memcpy((void *)((ulonglong)uVar5 + (ulonglong)uVar4 + lVar16),(void *)(lVar14 + 0x16),
-                 (ulonglong)*(ushort *)(puVar20 + 0xa8));
-          *(undefined2 *)(*(longlong *)(puVar20 + 0x58) + -2 + *(longlong *)(puVar20 + 0x50)) =
-               *(undefined2 *)(puVar20 + 0xa8);
+            uVar8 = Feature_3923194169__private_featureState & 1;
+          }
+          uVar9 = *(uint *)(lVar11 + 0x18);
+          if (uVar8 == 0) {
+            if (uVar9 != 0) {
+              lVar22 = lVar22 + (ulonglong)*(ushort *)(lVar22 + 0x14);
+              lVar12 = *(longlong *)(param_1 + 8);
+              if ((*(byte *)(lVar12 + 10) & 5) == 0) {
+                *(undefined8 *)(puVar19 + -8) = 0x14004595b;
+                lVar12 = MmMapLockedPages(lVar12,0);
+              }
+              else {
+                lVar12 = *(longlong *)(lVar12 + 0x18);
+              }
+              puVar21 = (undefined4 *)((ulonglong)*(uint *)(lVar11 + 8) + lVar12);
+              if (*(char *)(*(longlong *)(puVar19 + 0xc0) + 0xbc) == '\0') {
+                *puVar21 = 0;
+                puVar21[1] = 1;
+                uVar16 = *(ushort *)(lVar22 + 0x18);
+                *(undefined8 *)(puVar19 + -8) = 0x1400459c5;
+                memcpy(puVar21 + 2,(void *)(lVar22 + 0x18),(ulonglong)uVar16 + 4);
+              }
+              else {
+                uVar8 = *(uint *)(lVar11 + 0x18);
+                uVar16 = *(ushort *)(lVar22 + 0x18);
+                *(undefined8 *)(puVar19 + -8) = 0x140045996;
+                memcpy(puVar21,(void *)(lVar22 + 0x1a),(ulonglong)uVar16 + 2);
+                *(short *)(((ulonglong)uVar8 - 2) + (longlong)puVar21) =
+                     *(short *)(lVar22 + 0x18) + 2;
+              }
+            }
+          }
+          else if (5 < uVar9) {
+            uVar14 = (ulonglong)(uVar9 & 0xffff);
+            *(short *)(puVar19 + 0xb0) = (short)uVar9;
+            puVar20 = (ushort *)((ulonglong)*(ushort *)(lVar22 + 0x14) + 0x18 + lVar22);
+            *(ushort **)(puVar19 + 0x60) = puVar20;
+            lVar12 = *(longlong *)(param_1 + 8);
+            if ((*(byte *)(lVar12 + 10) & 5) == 0) {
+              *(undefined8 *)(puVar19 + -8) = 0x14004587f;
+              lVar12 = MmMapLockedPages(lVar12,0);
+              uVar14 = (ulonglong)*(ushort *)(puVar19 + 0xb0);
+              puVar20 = *(ushort **)(puVar19 + 0x60);
+            }
+            else {
+              lVar12 = *(longlong *)(lVar12 + 0x18);
+            }
+            puVar21 = (undefined4 *)((ulonglong)*(uint *)(lVar11 + 8) + lVar12);
+            uVar16 = *puVar20;
+            if (*(char *)(*(longlong *)(puVar19 + 0xc0) + 0xbc) == '\0') {
+              *puVar21 = 0;
+              puVar21[1] = 1;
+              uVar17 = uVar16 + 4;
+              if ((int)uVar14 + -8 <= (int)(uVar16 + 4)) {
+                uVar17 = (short)uVar14 - 8;
+              }
+              *(undefined8 *)(puVar19 + -8) = 0x14004592c;
+              memcpy(puVar21 + 2,puVar20,(ulonglong)uVar17);
+            }
+            else {
+              uVar17 = uVar16 + 2;
+              if (uVar14 - 2 <= (ulonglong)uVar16 + 2) {
+                uVar17 = (short)uVar14 - 2;
+              }
+              uVar8 = *(uint *)(lVar11 + 0x18);
+              *(undefined8 *)(puVar19 + -8) = 0x1400458e4;
+              memcpy(puVar21,puVar20 + 1,(ulonglong)uVar17);
+              *(ushort *)(((ulonglong)uVar8 - 2) + (longlong)puVar21) = uVar17;
+            }
+          }
         }
-        if (*(int *)(lVar13 + 0x18) != 0) {
-          lVar14 = lVar14 + (ulonglong)*(ushort *)(lVar14 + 0x14);
-          lVar16 = *(longlong *)(param_1 + 8);
-          if ((*(byte *)(lVar16 + 10) & 5) == 0) {
-            *(undefined8 *)(puVar20 + -8) = 0x140045311;
-            lVar16 = MmMapLockedPages(lVar16,0);
-          }
-          else {
-            lVar16 = *(longlong *)(lVar16 + 0x18);
-          }
-          _Dst = (undefined4 *)((ulonglong)*(uint *)(lVar13 + 8) + lVar16);
-          if (*(char *)(lVar7 + 0xbc) == '\0') {
-            *_Dst = 0;
-            _Dst[1] = 1;
-            uVar3 = *(ushort *)(lVar14 + 0x18);
-            *(undefined8 *)(puVar20 + -8) = 0x14004537a;
-            memcpy(_Dst + 2,(void *)(lVar14 + 0x18),(ulonglong)uVar3 + 4);
-          }
-          else {
-            uVar4 = *(uint *)(lVar13 + 0x18);
-            uVar3 = *(ushort *)(lVar14 + 0x18);
-            *(undefined8 *)(puVar20 + -8) = 0x140045345;
-            memcpy(_Dst,(void *)(lVar14 + 0x1a),(ulonglong)uVar3 + 2);
-            *(short *)(((ulonglong)uVar4 - 2) + (longlong)_Dst) = *(short *)(lVar14 + 0x18) + 2;
-          }
-        }
-      }
-      *(undefined8 *)(puVar20 + -8) = 0x140045389;
-      KeReleaseInStackQueuedSpinLock(*(undefined8 *)(puVar20 + 0xb8));
-      if (lVar15 != 0) {
-        *(undefined8 *)(puVar20 + -8) = 0x14004539d;
-        KeAttachProcess(lVar15);
-      }
-      *(undefined8 *)(puVar20 + -8) = 0x1400453ad;
-      cVar10 = IoIs32bitProcess(lVar8);
-      puVar18 = (undefined8 *)
-                ((ulonglong)*(uint *)(*(longlong *)(lVar8 + 8) + 0x2c) +
-                *(longlong *)(*(longlong *)(lVar8 + 8) + 0x20));
-      if (cVar10 == '\0') {
-        *puVar18 = *(undefined8 *)(puVar20 + 0xb0);
-        *(undefined4 *)(puVar18 + 1) = *(undefined4 *)(puVar20 + 0xa0);
-        *(undefined8 *)(lVar8 + 0x38) = 0x10;
+      }
+      *(undefined8 *)(puVar19 + -8) = 0x1400459d9;
+      KeReleaseInStackQueuedSpinLock(*(undefined8 *)(puVar19 + 200));
+      if (lVar13 != 0) {
+        *(undefined8 *)(puVar19 + -8) = 0x1400459ed;
+        KeAttachProcess(lVar13);
+      }
+      *(undefined8 *)(puVar19 + -8) = 0x1400459fd;
+      cVar6 = IoIs32bitProcess(lVar3);
+      uVar14 = (ulonglong)*(uint *)(*(longlong *)(lVar3 + 8) + 0x2c);
+      lVar11 = *(longlong *)(*(longlong *)(lVar3 + 8) + 0x20);
+      if (cVar6 == '\0') {
+        *(undefined8 *)(uVar14 + lVar11) = *(undefined8 *)(puVar19 + 0x40);
+        *(undefined4 *)(uVar14 + 8 + lVar11) = *(undefined4 *)(puVar19 + 0xb8);
+        *(undefined8 *)(lVar3 + 0x38) = 0x10;
       }
       else {
-        *(int *)puVar18 = (int)*(undefined8 *)(puVar20 + 0xb0);
-        *(undefined4 *)((longlong)puVar18 + 4) = *(undefined4 *)(puVar20 + 0xa0);
-        *(undefined8 *)(lVar8 + 0x38) = 8;
-      }
-      *(uint *)(lVar8 + 0x30) = -(uint)(lVar15 != 0) & 0x105;
-      if (lVar15 != 0) {
-        *(undefined8 *)(puVar20 + -8) = 0x14004541d;
+        *(int *)(uVar14 + lVar11) = (int)*(undefined8 *)(puVar19 + 0x40);
+        *(undefined4 *)(uVar14 + 4 + lVar11) = *(undefined4 *)(puVar19 + 0xb8);
+        *(undefined8 *)(lVar3 + 0x38) = 8;
+      }
+      *(uint *)(lVar3 + 0x30) = -(uint)(lVar13 != 0) & 0x105;
+      if (lVar13 != 0) {
+        *(undefined8 *)(puVar19 + -8) = 0x140045a70;
         KeDetachProcess();
       }
-      *(undefined8 *)(puVar20 + -8) = 0x140045432;
-      IofCompleteRequest(lVar8,AfdPriorityBoost);
-      uVar12 = 0x103;
+      *(undefined8 *)(puVar19 + -8) = 0x140045a85;
+      IofCompleteRequest(lVar3,AfdPriorityBoost);
+      uVar10 = 0x103;
     }
     else {
       *(undefined8 *)(param_1 + 0xa8) = 0;
-      KeReleaseInStackQueuedSpinLock(param_4);
-      if (lVar15 != 0) {
-        KeAttachProcess(lVar15);
-        ObCloseHandle(local_res18,1);
+      KeReleaseInStackQueuedSpinLock(puVar5);
+      if (lVar13 != 0) {
+        KeAttachProcess(lVar13);
+        ObCloseHandle(local_68,1);
         KeDetachProcess();
       }
-      *(undefined4 *)(lVar8 + 0x30) = 0xc0000120;
-      *(undefined8 *)(lVar8 + 0x38) = 0;
-      IofCompleteRequest(lVar8,AfdPriorityBoost);
+      *(undefined4 *)(lVar3 + 0x30) = 0xc0000120;
+      *(undefined8 *)(lVar3 + 0x38) = 0;
+      IofCompleteRequest(lVar3,AfdPriorityBoost);
       LOCK();
-      lVar7 = *(longlong *)(param_1 + 0x68);
+      lVar3 = *(longlong *)(param_1 + 0x68);
       *(longlong *)(param_1 + 0x68) = 0;
       UNLOCK();
-      if (lVar7 == 0) {
-        local_res8[0] = local_res8[0] & 0xffffff00;
+      if (lVar3 == 0) {
+        local_res8[0] = 0;
         IoAcquireCancelSpinLock(local_res8);
-        IoReleaseCancelSpinLock((undefined1)local_res8[0]);
-      }
-      uVar12 = 0xc0000120;
+        IoReleaseCancelSpinLock(local_res8[0]);
+      }
+      uVar10 = 0xc0000120;
     }
   }
-  return uVar12;
+  return uVar10;
 }
 

```


## AfdNotifyProcessRegistration

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.48|
|i_ratio|0.17|
|m_ratio|0.98|
|b_ratio|0.23|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdNotifyProcessRegistration|AfdNotifyProcessRegistration|
|fullname|AfdNotifyProcessRegistration|AfdNotifyProcessRegistration|
|refcount|2|2|
|`length`|776|814|
|`called`|<details><summary>Expand for full list:<br>AfdCheckPollEvents<br>AfdNotifyDestroyContext<br>AfdNotifyPostEvents<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoInitializeMiniCompletionPacket<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfDereferenceObject</summary>NTOSKRNL.EXE::ObfReferenceObject</details>|<details><summary>Expand for full list:<br>AfdCheckPollEvents<br>AfdNotifyDestroyContext<br>AfdNotifyPostEvents<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoInitializeMiniCompletionPacket<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock</summary>NTOSKRNL.EXE::ObReferenceObjectByHandle<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject</details>|
|calling|AfdNotifySock|AfdNotifySock|
|paramcount|4|4|
|`address`|14005390c|140053fb8|
|sig|int __fastcall AfdNotifyProcessRegistration(undefined1 param_1, longlong param_2, undefined8 * param_3, longlong param_4)|int __fastcall AfdNotifyProcessRegistration(undefined1 param_1, longlong param_2, undefined8 * param_3, longlong param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdNotifyProcessRegistration Called Diff


```diff
--- AfdNotifyProcessRegistration called
+++ AfdNotifyProcessRegistration called
@@ -3,0 +4 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
@@ -5,0 +7 @@
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdNotifyProcessRegistration Diff


```diff
--- AfdNotifyProcessRegistration
+++ AfdNotifyProcessRegistration
@@ -1,123 +1,148 @@
 
 int AfdNotifyProcessRegistration
               (undefined1 param_1,longlong param_2,undefined8 *param_3,longlong param_4)
 
 {
   byte bVar1;
   byte bVar2;
   ushort uVar3;
   ushort *puVar4;
-  char cVar5;
-  int iVar6;
-  uint uVar7;
-  longlong lVar8;
-  longlong lVar9;
+  byte bVar5;
+  char cVar6;
+  int iVar7;
+  uint uVar8;
+  ulonglong uVar9;
+  longlong lVar10;
+  longlong lVar11;
   int local_res18 [4];
   longlong local_68;
   longlong local_60;
-  undefined8 local_58;
-  undefined8 uStack_50;
-  undefined8 local_48;
+  ushort *local_58;
+  undefined8 local_50;
+  undefined8 uStack_48;
+  undefined8 local_40;
   
   uVar3 = *(ushort *)(param_3 + 2);
-  local_48 = 0;
-  lVar9 = 0;
-  local_58 = 0;
-  uStack_50 = 0;
+  local_40 = 0;
+  lVar11 = 0;
+  local_50 = 0;
+  uStack_48 = 0;
   if (((uVar3 & 7) != uVar3) ||
      (bVar1 = *(byte *)((longlong)param_3 + 0x13), (bVar1 & 0xf) != bVar1)) {
     return -0x3ffffff3;
   }
   bVar2 = *(byte *)((longlong)param_3 + 0x12);
   if (bVar2 == 1) {
     if (uVar3 == 0) {
       return -0x3ffffff3;
     }
-    if ((bVar1 & 0xc) == 0 || (bVar1 & 0xc & (bVar1 & 0xc) - 1) != 0) {
+    if ((bVar1 & 0xc) == 0) {
       return -0x3ffffff3;
     }
-    if ((bVar1 & 3) == 0 || (bVar1 & 3 & (bVar1 & 3) - 1) != 0) {
+    if ((bVar1 & 0xc & (bVar1 & 0xc) - 1) != 0) {
       return -0x3ffffff3;
     }
+    if ((bVar1 & 3) == 0) {
+      return -0x3ffffff3;
+    }
+    bVar5 = bVar1 & 3 & (bVar1 & 3) - 1;
   }
-  else if ((bVar2 - 2 & 0xfd) != 0) {
+  else {
+    bVar5 = bVar2 - 2 & 0xfd;
+  }
+  if (bVar5 != 0) {
     return -0x3ffffff3;
   }
   if (param_4 == 0) {
     local_68 = 0;
-    iVar6 = ObReferenceObjectByHandle
+    iVar7 = ObReferenceObjectByHandle
                       (*param_3,0x120116,*(undefined8 *)IoFileObjectType_exref,param_1,&local_68,0);
     param_4 = local_68;
-    if (iVar6 < 0) goto LAB_0;
+    if (iVar7 < 0) goto LAB_0;
     if (*(longlong *)(local_68 + 8) == AfdDeviceObject) goto LAB_1;
   }
   else {
     ObfReferenceObject(param_4);
 LAB_1:
     puVar4 = *(ushort **)(param_4 + 0x18);
-    cVar5 = ExAcquireRundownProtection(puVar4 + 0xc0);
-    if (cVar5 != '\0') {
-      KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,&local_58);
-      lVar8 = *(longlong *)(puVar4 + 0xbc);
-      if (lVar8 == 0) {
-        KeReleaseInStackQueuedSpinLock(&local_58);
-        lVar9 = ExAllocatePool2(0x41,0x70,0x4e646641);
-        local_60 = lVar9;
-        if (lVar9 != 0) {
-          IoInitializeMiniCompletionPacket(lVar9,AfdNotifyPacketCallback);
-          *(undefined8 *)(lVar9 + 0x58) = param_3[1];
+    local_58 = puVar4 + 0xc0;
+    cVar6 = ExAcquireRundownProtection(local_58);
+    if (cVar6 != '\0') {
+      KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,&local_50);
+      lVar10 = *(longlong *)(puVar4 + 0xbc);
+      if (lVar10 == 0) {
+        KeReleaseInStackQueuedSpinLock(&local_50);
+        lVar11 = ExAllocatePool2(0x41,0x70,0x4e646641);
+        local_60 = lVar11;
+        if (lVar11 != 0) {
+          IoInitializeMiniCompletionPacket(lVar11,AfdNotifyPacketCallback);
+          *(undefined8 *)(lVar11 + 0x58) = param_3[1];
           ObfReferenceObject(param_2);
-          *(longlong *)(lVar9 + 0x50) = param_2;
-          KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,&local_58);
-          lVar8 = *(longlong *)(puVar4 + 0xbc);
+          *(longlong *)(lVar11 + 0x50) = param_2;
+          KeAcquireInStackQueuedSpinLock(puVar4 + 0x1c,&local_50);
+          lVar10 = *(longlong *)(puVar4 + 0xbc);
           if (*(longlong *)(puVar4 + 0xbc) == 0) {
-            uVar7 = AfdCheckPollEvents(puVar4,0x19d,local_res18);
-            *(short *)(lVar9 + 100) = (short)uVar7;
+            uVar8 = AfdCheckPollEvents(puVar4,0x19d,local_res18);
+            *(short *)(lVar11 + 100) = (short)uVar8;
             if ((bVar1 & 8) != 0) {
-              *(short *)(lVar9 + 0x66) = (short)uVar7;
+              *(short *)(lVar11 + 0x66) = (short)uVar8;
             }
-            *(longlong *)(puVar4 + 0xbc) = lVar9;
-            lVar9 = 0;
-            lVar8 = local_60;
+            *(longlong *)(puVar4 + 0xbc) = lVar11;
+            lVar11 = 0;
+            lVar10 = local_60;
           }
           goto LAB_2;
         }
-        iVar6 = -0x3fffff66;
+        iVar7 = -0x3fffff66;
+        local_res18[0] = -0x3fffff66;
       }
       else {
 LAB_2:
-        if (*(longlong *)(lVar8 + 0x50) == param_2) {
-          if (((~(bVar2 >> 2) & *(byte *)(lVar8 + 0x62) >> 2 & 1) == 0) &&
-             ((*(ushort *)(lVar8 + 0x6a) & 1) == 0)) {
-            *(byte *)(lVar8 + 0x62) = bVar2;
-            *(byte *)(lVar8 + 99) = bVar1;
-            *(ushort *)(lVar8 + 0x6a) = *(ushort *)(lVar8 + 0x6a) & 0xfffb;
-            *(ushort *)(lVar8 + 0x60) = uVar3 | 0xc0;
-            AfdNotifyPostEvents((longlong)puVar4,&local_58,'\0');
-            iVar6 = 0;
+        if (*(longlong *)(lVar10 + 0x50) == param_2) {
+          if ((((*(byte *)(lVar10 + 0x62) & 4) == 0) || ((bVar2 & 4) != 0)) &&
+             ((*(ushort *)(lVar10 + 0x6a) & 1) == 0)) {
+            *(byte *)(lVar10 + 0x62) = bVar2;
+            *(byte *)(lVar10 + 99) = bVar1;
+            *(ushort *)(lVar10 + 0x6a) = *(ushort *)(lVar10 + 0x6a) & 0xfffb;
+            *(ushort *)(lVar10 + 0x60) = uVar3 | 0xc0;
+            AfdNotifyPostEvents((longlong)puVar4,&local_50,'\0');
+            iVar7 = 0;
           }
           else {
-            iVar6 = -0x3ffffff3;
+            iVar7 = -0x3ffffff3;
           }
         }
         else {
-          iVar6 = -0x3fffffd0;
+          iVar7 = -0x3fffffd0;
         }
-        KeReleaseInStackQueuedSpinLock(&local_58);
+        local_res18[0] = iVar7;
+        KeReleaseInStackQueuedSpinLock(&local_50);
       }
-      ExReleaseRundownProtection(puVar4 + 0xc0);
-      if (lVar9 != 0) {
-        AfdNotifyDestroyContext(param_4,lVar9);
+      ExReleaseRundownProtection(local_58);
+      if (lVar11 != 0) {
+        AfdNotifyDestroyContext(param_4,lVar11);
+        if ((Feature_447951161__private_featureState & 0x10) == 0) {
+          uVar9 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+          uVar8 = (uint)uVar9;
+        }
+        else {
+          uVar8 = Feature_447951161__private_featureState & 1;
+        }
+        iVar7 = local_res18[0];
+        if (uVar8 != 0) {
+          ExFreePoolWithTag(lVar11,0x4e646641);
+          iVar7 = local_res18[0];
+        }
       }
       goto LAB_0;
     }
   }
-  iVar6 = -0x3ffffff8;
+  iVar7 = -0x3ffffff8;
 LAB_0:
   if (param_4 != 0) {
     ObfDereferenceObject(param_4);
-    return iVar6;
+    return iVar7;
   }
-  return iVar6;
+  return iVar7;
 }
 

```


## AfdExtractAfdSendMsgInfo

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.41|
|i_ratio|0.6|
|m_ratio|0.96|
|b_ratio|0.95|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdExtractAfdSendMsgInfo|AfdExtractAfdSendMsgInfo|
|fullname|AfdExtractAfdSendMsgInfo|AfdExtractAfdSendMsgInfo|
|refcount|2|2|
|`length`|1270|1159|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACESENDMSG<br>AfdAllocateMdlChain<br>AfdAllocateMdlChain32<br>AfdBuildSendMsgTracker<br>AfdComputeCMSGLength<br>AfdCopyCMSGBuffer<br>Feature_Servicing_AudioVideoStutteringIssue__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock</summary>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>memcpy</details>|<details><summary>Expand for full list:<br>AFDETW_TRACESENDMSG<br>AfdAllocateMdlChain<br>AfdAllocateMdlChain32<br>AfdBuildSendMsgTracker<br>AfdComputeCMSGLength<br>AfdCopyCMSGBuffer<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock</summary>memcpy</details>|
|calling|AfdSendMessageDispatch|AfdSendMessageDispatch|
|paramcount|3|3|
|`address`|1400422a0|1400415b0|
|sig|int __fastcall AfdExtractAfdSendMsgInfo(longlong param_1, longlong param_2, undefined8 * param_3)|int __fastcall AfdExtractAfdSendMsgInfo(longlong param_1, longlong param_2, undefined8 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdExtractAfdSendMsgInfo Called Diff


```diff
--- AfdExtractAfdSendMsgInfo called
+++ AfdExtractAfdSendMsgInfo called
@@ -7 +6,0 @@
-Feature_Servicing_AudioVideoStutteringIssue__private_IsEnabledDeviceUsageNoInline
```


### AfdExtractAfdSendMsgInfo Diff


```diff
--- AfdExtractAfdSendMsgInfo
+++ AfdExtractAfdSendMsgInfo
@@ -1,171 +1,153 @@
 
 int AfdExtractAfdSendMsgInfo(longlong param_1,longlong param_2,undefined8 *param_3)
 
 {
   uint uVar1;
   short *psVar2;
-  void *_Src;
   uint uVar3;
   bool bVar4;
   char cVar5;
   undefined8 uVar6;
-  ulonglong uVar7;
-  undefined4 *puVar8;
-  uint uVar9;
+  undefined4 *puVar7;
+  uint uVar8;
   uint local_res20 [2];
-  int local_a8;
-  uint local_a4;
-  uint local_9c;
-  void *local_98;
-  uint *local_90;
-  uint local_88;
-  undefined4 *local_80;
-  uint *local_78;
-  uint local_70;
-  undefined8 local_68;
-  undefined8 uStack_60;
-  undefined8 local_58;
-  uint *local_50;
+  int local_98;
+  uint local_94;
+  uint local_8c;
+  void *local_88;
+  uint *local_80;
+  uint local_78;
+  undefined4 *local_70;
+  uint *local_68;
+  undefined8 local_60;
+  undefined8 uStack_58;
+  undefined8 local_50;
   uint *local_48;
+  uint *local_40;
   
   bVar4 = false;
-  local_68 = 0;
-  uStack_60 = 0;
-  local_58 = 0;
+  local_60 = 0;
+  uStack_58 = 0;
+  local_50 = 0;
   *param_3 = 0;
   psVar2 = *(short **)(*(longlong *)(param_2 + 0x30) + 0x18);
-  local_90 = (uint *)0x0;
-  local_98 = (void *)0x0;
-  local_9c = 0;
-  puVar8 = (undefined4 *)0x0;
+  local_80 = (uint *)0x0;
+  local_88 = (void *)0x0;
+  local_8c = 0;
+  puVar7 = (undefined4 *)0x0;
   local_res20[0] = 0;
   cVar5 = IoIs32bitProcess(param_1);
   if (cVar5 == '\0') {
     if (0x3f < *(uint *)(param_2 + 0x10)) {
-      local_78 = *(uint **)(param_2 + 0x20);
-      if ((*(char *)(param_1 + 0x40) != '\0') && (((ulonglong)local_78 & 3) != 0)) {
+      local_68 = *(uint **)(param_2 + 0x20);
+      if ((*(char *)(param_1 + 0x40) != '\0') && (((ulonglong)local_68 & 3) != 0)) {
                     /* WARNING: Subroutine does not return */
         ExRaiseDatatypeMisalignment();
       }
-      uVar1 = local_78[0xc];
+      uVar1 = local_68[0xc];
       if (uVar1 != 0) {
-        local_90 = *(uint **)(local_78 + 10);
+        local_80 = *(uint **)(local_68 + 10);
       }
-      local_48 = *(uint **)local_78;
-      local_88 = local_78[2];
-      local_a4 = local_78[8];
-      if (local_a4 != 0) {
-        local_98 = *(void **)(local_78 + 6);
+      local_40 = *(uint **)local_68;
+      local_78 = local_68[2];
+      local_94 = local_68[8];
+      if (local_94 != 0) {
+        local_88 = *(void **)(local_68 + 6);
       }
-      local_a8 = AfdAllocateMdlChain(param_1,local_48,local_88,0,&local_9c);
-      goto joined_r0x0001400424be;
+      local_98 = AfdAllocateMdlChain(param_1,local_40,local_78,0,&local_8c);
+      goto joined_r0x0001400417cc;
     }
   }
   else if (0x23 < *(uint *)(param_2 + 0x10)) {
-    local_78 = *(uint **)(param_2 + 0x20);
-    if ((*(char *)(param_1 + 0x40) != '\0') && (((ulonglong)local_78 & 3) != 0)) {
+    local_68 = *(uint **)(param_2 + 0x20);
+    if ((*(char *)(param_1 + 0x40) != '\0') && (((ulonglong)local_68 & 3) != 0)) {
                     /* WARNING: Subroutine does not return */
       ExRaiseDatatypeMisalignment();
     }
-    uVar1 = local_78[7];
+    uVar1 = local_68[7];
     if (uVar1 != 0) {
-      local_90 = (uint *)(ulonglong)local_78[6];
-      uVar6 = AfdComputeCMSGLength(local_90,uVar1,local_res20);
-      local_a8 = (int)uVar6;
-      if (local_a8 < 0) goto LAB_0;
+      local_80 = (uint *)(ulonglong)local_68[6];
+      uVar6 = AfdComputeCMSGLength(local_80,uVar1,local_res20);
+      local_98 = (int)uVar6;
+      if (local_98 < 0) goto LAB_0;
     }
-    local_a4 = local_78[5];
-    if (local_a4 != 0) {
-      local_98 = (void *)(ulonglong)local_78[4];
+    local_94 = local_68[5];
+    if (local_94 != 0) {
+      local_88 = (void *)(ulonglong)local_68[4];
     }
-    local_50 = (uint *)(ulonglong)*local_78;
-    local_88 = local_78[1];
-    local_a8 = AfdAllocateMdlChain32(param_1,local_50,local_88,0,&local_9c);
-joined_r0x0001400424be:
-    if (-1 < local_a8) {
-      KeAcquireInStackQueuedSpinLock(psVar2 + 0x1c,&local_68);
+    local_48 = (uint *)(ulonglong)*local_68;
+    local_78 = local_68[1];
+    local_98 = AfdAllocateMdlChain32(param_1,local_48,local_78,0,&local_8c);
+joined_r0x0001400417cc:
+    if (-1 < local_98) {
+      KeAcquireInStackQueuedSpinLock(psVar2 + 0x1c,&local_60);
       if ((((((*(uint *)(psVar2 + 4) >> 8 & 1) == 0) && ((*(uint *)(psVar2 + 8) & 0x8000) == 0)) &&
-           ((char)psVar2[1] == '\x04')) && (local_98 == (void *)0x0)) ||
-         ((local_98 == (void *)0x0 && (local_90 != (uint *)0x0)))) {
+           ((char)psVar2[1] == '\x04')) && (local_88 == (void *)0x0)) ||
+         ((local_88 == (void *)0x0 && (local_80 != (uint *)0x0)))) {
         bVar4 = true;
-        local_a4 = *(uint *)(psVar2 + 0x52);
+        local_94 = *(uint *)(psVar2 + 0x52);
       }
-      KeReleaseInStackQueuedSpinLock(&local_68);
-      uVar9 = local_res20[0];
+      KeReleaseInStackQueuedSpinLock(&local_60);
+      uVar8 = local_res20[0];
       uVar3 = uVar1;
       if (local_res20[0] != 0) {
         uVar3 = local_res20[0];
       }
-      puVar8 = AfdBuildSendMsgTracker(local_a4,uVar3);
-      local_80 = puVar8;
-      if (puVar8 != (undefined4 *)0x0) {
-        *(ulonglong *)(puVar8 + 6) = (ulonglong)local_9c;
+      puVar7 = AfdBuildSendMsgTracker(local_94,uVar3);
+      local_70 = puVar7;
+      if (puVar7 != (undefined4 *)0x0) {
+        *(ulonglong *)(puVar7 + 6) = (ulonglong)local_8c;
         if (bVar4) {
-          KeAcquireInStackQueuedSpinLock(psVar2 + 0x1c,&local_68);
-          if (local_a4 != *(uint *)(psVar2 + 0x52)) {
-            KeReleaseInStackQueuedSpinLock(&local_68);
-            local_a8 = -0x3ffffff3;
+          KeAcquireInStackQueuedSpinLock(psVar2 + 0x1c,&local_60);
+          if (local_94 != *(uint *)(psVar2 + 0x52)) {
+            KeReleaseInStackQueuedSpinLock(&local_60);
+            local_98 = -0x3ffffff3;
             goto LAB_0;
           }
-          _Src = *(void **)(psVar2 + 0x54);
-          if ((Feature_Servicing_AudioVideoStutteringIssue__private_featureState & 0x10) == 0) {
-            uVar7 = Feature_Servicing_AudioVideoStutteringIssue__private_IsEnabledDeviceUsageNoInline
-                              ();
-            local_70 = (uint)uVar7;
-          }
-          else {
-            local_70 = Feature_Servicing_AudioVideoStutteringIssue__private_featureState & 1;
-          }
-          if ((local_70 == 0) && ((local_a4 == 0 || (_Src == (void *)0x0)))) {
-            KeReleaseInStackQueuedSpinLock(&local_68);
-            local_a8 = -0x3ffffec0;
-            goto LAB_0;
-          }
-          memcpy(*(void **)(puVar8 + 0x12),_Src,(ulonglong)local_a4);
+          memcpy(*(void **)(puVar7 + 0x12),*(void **)(psVar2 + 0x54),(ulonglong)local_94);
           KeReleaseInStackQueuedSpinLock();
-          uVar9 = local_res20[0];
         }
-        else if (local_a4 != 0) {
+        else if (local_94 != 0) {
           if ((*(char *)(param_1 + 0x40) != '\0') &&
              ((*(void **)MmUserProbeAddress_exref <
-               (void *)((ulonglong)local_a4 + (longlong)local_98) ||
-              ((void *)((ulonglong)local_a4 + (longlong)local_98) < local_98)))) {
-            uVar9 = local_res20[0];
+               (void *)((ulonglong)local_94 + (longlong)local_88) ||
+              ((void *)((ulonglong)local_94 + (longlong)local_88) < local_88)))) {
+            uVar8 = local_res20[0];
           }
-          memcpy(*(void **)(puVar8 + 0x12),local_98,(ulonglong)local_a4);
+          memcpy(*(void **)(puVar7 + 0x12),local_88,(ulonglong)local_94);
         }
         if (uVar1 != 0) {
           if ((*(char *)(param_1 + 0x40) != '\0') &&
-             ((*(uint **)MmUserProbeAddress_exref < (uint *)((ulonglong)uVar1 + (longlong)local_90)
-              || ((uint *)((ulonglong)uVar1 + (longlong)local_90) < local_90)))) {
-            uVar9 = local_res20[0];
+             ((*(uint **)MmUserProbeAddress_exref < (uint *)((ulonglong)uVar1 + (longlong)local_80)
+              || ((uint *)((ulonglong)uVar1 + (longlong)local_80) < local_80)))) {
+            uVar8 = local_res20[0];
           }
-          if (uVar9 == 0) {
-            memcpy(*(ulonglong **)(puVar8 + 0xe),local_90,(ulonglong)uVar1);
+          if (uVar8 == 0) {
+            memcpy(*(ulonglong **)(puVar7 + 0xe),local_80,(ulonglong)uVar1);
           }
           else {
-            uVar6 = AfdCopyCMSGBuffer(*(ulonglong **)(puVar8 + 0xe),(ulonglong)uVar9,local_90,uVar1)
+            uVar6 = AfdCopyCMSGBuffer(*(ulonglong **)(puVar7 + 0xe),(ulonglong)uVar8,local_80,uVar1)
             ;
-            local_a8 = (int)uVar6;
-            if (local_a8 < 0) goto LAB_0;
+            local_98 = (int)uVar6;
+            if (local_98 < 0) goto LAB_0;
           }
-          *(undefined8 *)(puVar8 + 10) = 0x886103;
+          *(undefined8 *)(puVar7 + 10) = 0x886103;
         }
         AFDETW_TRACESENDMSG((undefined4 *)0x0,0xbe4,psVar2,0);
-        *param_3 = puVar8;
-        return local_a8;
+        *param_3 = puVar7;
+        return local_98;
       }
-      local_a8 = -0x3fffff66;
+      local_98 = -0x3fffff66;
     }
     goto LAB_0;
   }
-  local_a8 = -0x3ffffff3;
-  puVar8 = (undefined4 *)0x0;
+  local_98 = -0x3ffffff3;
+  puVar7 = (undefined4 *)0x0;
 LAB_0:
-  if (puVar8 != (undefined4 *)0x0) {
-    *puVar8 = 0x78746d73;
-    ExFreePoolWithTag(puVar8,0x4d646641);
+  if (puVar7 != (undefined4 *)0x0) {
+    *puVar7 = 0x78746d73;
+    ExFreePoolWithTag(puVar7,0x4d646641);
   }
-  return local_a8;
+  return local_98;
 }
 

```


## AfdCompleteBufferedSendsUnlock

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,called|
|ratio|0.48|
|i_ratio|0.64|
|m_ratio|0.97|
|b_ratio|0.75|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdCompleteBufferedSendsUnlock|AfdCompleteBufferedSendsUnlock|
|fullname|AfdCompleteBufferedSendsUnlock|AfdCompleteBufferedSendsUnlock|
|refcount|4|4|
|`length`|2916|3044|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACEDATA_CORE<br>AfdDeleteConnectedReference<br>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdNotifySockIndicateEventsUnlock<br>NTOSKRNL.EXE::EtwWrite<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket</summary>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>__security_check_cookie</details>|<details><summary>Expand for full list:<br>AFDETW_TRACEDATA_CORE<br>AfdDeleteConnectedReference<br>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdNotifySockIndicateEventsUnlock<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::EtwWrite<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExFreePoolWithTag</summary>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>__security_check_cookie</details>|
|calling|AfdProcessBufferSend<br>AfdTLBufferedSendCompleteBatch|AfdProcessBufferSend<br>AfdTLBufferedSendCompleteBatch|
|paramcount|2|2|
|address|140005230|140005230|
|sig|undefined __fastcall AfdCompleteBufferedSendsUnlock(undefined2 * param_1, undefined8 * param_2)|undefined __fastcall AfdCompleteBufferedSendsUnlock(undefined2 * param_1, undefined8 * param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdCompleteBufferedSendsUnlock Called Diff


```diff
--- AfdCompleteBufferedSendsUnlock called
+++ AfdCompleteBufferedSendsUnlock called
@@ -7,0 +8 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
@@ -9,0 +11 @@
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdCompleteBufferedSendsUnlock Diff


```diff
--- AfdCompleteBufferedSendsUnlock
+++ AfdCompleteBufferedSendsUnlock
@@ -1,459 +1,490 @@
 
 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
-/* WARNING: Type propagation algorithm not settling */
 
 void AfdCompleteBufferedSendsUnlock(undefined2 *param_1,undefined8 *param_2)
 
 {
-  longlong *******ppppppplVar1;
-  ushort *puVar2;
-  longlong *******ppppppplVar3;
-  longlong *******ppppppplVar4;
-  ushort uVar5;
-  short *psVar6;
-  longlong ******pppppplVar7;
-  longlong *****ppppplVar8;
+  ushort *puVar1;
+  longlong *******ppppppplVar2;
+  longlong ******pppppplVar3;
+  ushort uVar4;
+  short *psVar5;
+  longlong ******pppppplVar6;
+  longlong *****ppppplVar7;
+  longlong *******ppppppplVar8;
   longlong *******ppppppplVar9;
   code *pcVar10;
   bool bVar11;
   char cVar12;
   ushort uVar13;
-  undefined8 uVar14;
-  ushort uVar15;
+  uint uVar14;
+  undefined8 uVar15;
+  ulonglong uVar16;
+  ushort uVar17;
   undefined1 auStack_128 [32];
   undefined **local_108;
   uint local_100;
-  longlong ******local_f8;
+  longlong *****local_f8;
   uint local_f0;
   undefined4 local_e8;
-  longlong *******local_e0;
+  longlong ******local_e0;
   undefined8 local_d8;
   undefined8 uStack_d0;
   undefined8 local_c8;
-  longlong *******local_c0;
-  longlong *******local_b8;
-  longlong *****local_b0;
+  longlong ******local_c0;
+  longlong ******local_b8;
+  longlong ****local_b0;
   undefined8 local_a8;
   undefined8 uStack_a0;
   undefined8 local_98;
   undefined8 local_90;
   ulonglong uStack_88;
-  longlong *******local_80;
+  longlong ******local_80;
   undefined8 uStack_78;
   short *local_70;
   undefined8 local_68;
   undefined *local_60;
   undefined8 local_58;
-  longlong *****local_50;
+  longlong ****local_50;
   undefined8 local_48;
   ulonglong local_40;
   
   local_40 = __security_cookie ^ (ulonglong)auStack_128;
-  psVar6 = *(short **)(param_1 + 4);
+  psVar5 = *(short **)(param_1 + 4);
   if ((*(uint *)(param_1 + 0x3c) < *(uint *)(param_1 + 0x4a)) ||
-     ((((*(uint *)(psVar6 + 4) & 0x10) != 0 && (*(uint *)(param_1 + 0x4a) != 0)) &&
+     ((((*(uint *)(psVar5 + 4) & 0x10) != 0 && (*(uint *)(param_1 + 0x4a) != 0)) &&
       (*(uint *)(param_1 + 0x3e) < 2)))) {
     bVar11 = true;
   }
   else {
     bVar11 = false;
   }
-  ppppppplVar1 = (longlong *******)(param_1 + 0x34);
-  if ((longlong *******)*ppppppplVar1 != ppppppplVar1) {
-    local_c0 = (longlong *******)&local_c0;
-    local_b8 = (longlong *******)&local_c0;
+  ppppppplVar9 = (longlong *******)(param_1 + 0x34);
+  if ((longlong *******)*ppppppplVar9 != ppppppplVar9) {
+    local_c0 = (longlong ******)&local_c0;
+    local_b8 = (longlong ******)&local_c0;
     while( true ) {
       if ((((*(uint *)(param_1 + 0x4a) < *(uint *)(param_1 + 0x3c)) &&
-           (*ppppppplVar1 != *(longlong *******)(param_1 + 0x38))) &&
+           (*ppppppplVar9 != *(longlong *******)(param_1 + 0x38))) &&
           (1 < *(uint *)(param_1 + 0x3e))) ||
-         (ppppppplVar9 = (longlong *******)*ppppppplVar1, ppppppplVar9 == ppppppplVar1)) {
+         (ppppppplVar8 = (longlong *******)*ppppppplVar9, ppppppplVar8 == ppppppplVar9)) {
         if (!bVar11) {
           KeReleaseInStackQueuedSpinLock(param_2);
           goto LAB_0;
         }
-        AfdIndicateEventSelectEvent(psVar6,4,0);
-        if (*(longlong *)(psVar6 + 0xbc) != 0) {
-          puVar2 = (ushort *)(*(longlong *)(psVar6 + 0xbc) + 100);
-          *puVar2 = *puVar2 | 4;
-        }
-        uVar14 = AfdIndicatePollEvent(psVar6,4,0,param_2);
-        if ((char)uVar14 == '\0') {
-          AfdNotifySockIndicateEventsUnlock((longlong)psVar6,param_2,'\0');
+        AfdIndicateEventSelectEvent(psVar5,4,0);
+        if (*(longlong *)(psVar5 + 0xbc) != 0) {
+          puVar1 = (ushort *)(*(longlong *)(psVar5 + 0xbc) + 100);
+          *puVar1 = *puVar1 | 4;
+        }
+        uVar15 = AfdIndicatePollEvent(psVar5,4,0,param_2);
+        if ((char)uVar15 == '\0') {
+          AfdNotifySockIndicateEventsUnlock((longlong)psVar5,param_2,'\0');
           goto LAB_0;
         }
         local_a8 = 0;
         uStack_a0 = 0;
         local_98 = 0;
         bVar11 = false;
-        KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_a8);
-        if ((*(longlong *)(psVar6 + 0xbc) != 0) &&
-           (cVar12 = ExAcquireRundownProtection(psVar6 + 0xc0), cVar12 != '\0')) {
-          pppppplVar7 = *(longlong *******)(psVar6 + 0xbc);
+        KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_a8);
+        if ((*(longlong *)(psVar5 + 0xbc) != 0) &&
+           (cVar12 = ExAcquireRundownProtection(psVar5 + 0xc0), cVar12 != '\0')) {
+          pppppplVar6 = *(longlong *******)(psVar5 + 0xbc);
           bVar11 = true;
-          uVar5 = *(ushort *)((longlong)pppppplVar7 + 0x6a);
-          ppppplVar8 = pppppplVar7[8];
-          if ((uVar5 & 2) == 0) {
-            uVar15 = uVar5 | 2;
-            *(ushort *)((longlong)pppppplVar7 + 0x6a) = uVar15;
-            goto joined_r0x000140005a1f;
+          uVar4 = *(ushort *)((longlong)pppppplVar6 + 0x6a);
+          ppppplVar7 = pppppplVar6[8];
+          if ((uVar4 & 2) == 0) {
+            uVar17 = uVar4 | 2;
+            *(ushort *)((longlong)pppppplVar6 + 0x6a) = uVar17;
+            goto joined_r0x000140005a6f;
           }
         }
         KeReleaseInStackQueuedSpinLock(&local_a8);
-        if (!bVar11) goto LAB_0;
-        goto LAB_1;
-      }
-      if (((longlong *******)ppppppplVar9[1] != ppppppplVar1) ||
-         (pppppplVar7 = *ppppppplVar9, (longlong *******)pppppplVar7[1] != ppppppplVar9)) break;
-      *ppppppplVar1 = pppppplVar7;
-      pppppplVar7[1] = (longlong *****)ppppppplVar1;
+        if (bVar11) goto LAB_1;
+        goto LAB_0;
+      }
+      if (((longlong *******)ppppppplVar8[1] != ppppppplVar9) ||
+         (pppppplVar6 = *ppppppplVar8, (longlong *******)pppppplVar6[1] != ppppppplVar8)) break;
+      *ppppppplVar9 = pppppplVar6;
+      pppppplVar6[1] = (longlong *****)ppppppplVar9;
       LOCK();
-      pppppplVar7 = ppppppplVar9[-8];
-      ppppppplVar9[-8] = (longlong ******)0x0;
+      pppppplVar6 = ppppppplVar8[-8];
+      ppppppplVar8[-8] = (longlong ******)0x0;
       UNLOCK();
-      if (pppppplVar7 == (longlong ******)0x0) {
-        *ppppppplVar9 = (longlong ******)0x0;
+      if (pppppplVar6 == (longlong ******)0x0) {
+        *ppppppplVar8 = (longlong ******)0x0;
       }
       else {
-        if ((longlong ********)*local_b8 != &local_c0) break;
-        ppppppplVar9[1] = (longlong ******)local_b8;
-        *ppppppplVar9 = (longlong ******)&local_c0;
-        *local_b8 = (longlong ******)ppppppplVar9;
-        local_b8 = ppppppplVar9;
+        if ((longlong *******)*local_b8 != &local_c0) break;
+        ppppppplVar8[1] = local_b8;
+        *ppppppplVar8 = (longlong ******)&local_c0;
+        *local_b8 = (longlong *****)ppppppplVar8;
+        local_b8 = (longlong ******)ppppppplVar8;
       }
     }
 LAB_2:
     pcVar10 = (code *)swi(0x29);
     (*pcVar10)(3);
     pcVar10 = (code *)swi(3);
     (*pcVar10)();
     return;
   }
   if ((*(uint *)(param_1 + 2) & 0x10000) != 0) {
     if ((*(longlong *)(param_1 + 0x40) != 0) && (*(int *)(param_1 + 0x3e) == 0)) {
       *(undefined8 *)(param_1 + 0x40) = 0;
       KeReleaseInStackQueuedSpinLock(param_2);
       IofCallDriver(*(undefined8 *)(param_1 + 0xc));
       AfdDeleteConnectedReference(param_1,'\0');
       return;
     }
     if (bVar11) {
-      AfdIndicateEventSelectEvent(psVar6,4,0);
-      if (*(longlong *)(psVar6 + 0xbc) != 0) {
-        puVar2 = (ushort *)(*(longlong *)(psVar6 + 0xbc) + 100);
-        *puVar2 = *puVar2 | 4;
-      }
-      uVar14 = AfdIndicatePollEvent(psVar6,4,0,param_2);
-      if ((char)uVar14 == '\0') {
-        AfdNotifySockIndicateEventsUnlock((longlong)psVar6,param_2,'\0');
+      AfdIndicateEventSelectEvent(psVar5,4,0);
+      if (*(longlong *)(psVar5 + 0xbc) != 0) {
+        puVar1 = (ushort *)(*(longlong *)(psVar5 + 0xbc) + 100);
+        *puVar1 = *puVar1 | 4;
+      }
+      uVar15 = AfdIndicatePollEvent(psVar5,4,0,param_2);
+      if ((char)uVar15 == '\0') {
+        AfdNotifySockIndicateEventsUnlock((longlong)psVar5,param_2,'\0');
         AfdDeleteConnectedReference(param_1,'\0');
         return;
       }
       local_d8 = 0;
       uStack_d0 = 0;
       local_c8 = 0;
       bVar11 = false;
-      KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c);
-      if ((*(longlong *)(psVar6 + 0xbc) != 0) &&
-         (cVar12 = ExAcquireRundownProtection(psVar6 + 0xc0), cVar12 != '\0')) {
-        pppppplVar7 = *(longlong *******)(psVar6 + 0xbc);
+      KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c);
+      if ((*(longlong *)(psVar5 + 0xbc) != 0) &&
+         (cVar12 = ExAcquireRundownProtection(psVar5 + 0xc0), cVar12 != '\0')) {
+        pppppplVar6 = *(longlong *******)(psVar5 + 0xbc);
         bVar11 = true;
-        uVar5 = *(ushort *)((longlong)pppppplVar7 + 0x6a);
-        local_b0 = pppppplVar7[8];
-        if ((uVar5 & 2) == 0) {
-          uVar15 = uVar5 | 2;
-          *(ushort *)((longlong)pppppplVar7 + 0x6a) = uVar15;
-          while ((uVar5 & 1) == 0) {
-            uVar13 = AfdNotifyComputeEvents((longlong)pppppplVar7);
-            *(undefined2 *)((longlong)pppppplVar7 + 0x66) =
-                 *(undefined2 *)((longlong)pppppplVar7 + 100);
-            uVar5 = *(ushort *)(pppppplVar7 + 0xd);
-            if (uVar13 == uVar5) {
-              if ((*(byte *)((longlong)pppppplVar7 + 99) & 1) != 0) {
-                uVar15 = uVar15 | 4;
+        uVar4 = *(ushort *)((longlong)pppppplVar6 + 0x6a);
+        local_b0 = (longlong ****)pppppplVar6[8];
+        if ((uVar4 & 2) == 0) {
+          uVar17 = uVar4 | 2;
+          *(ushort *)((longlong)pppppplVar6 + 0x6a) = uVar17;
+          while ((uVar4 & 1) == 0) {
+            uVar13 = AfdNotifyComputeEvents((longlong)pppppplVar6);
+            *(undefined2 *)((longlong)pppppplVar6 + 0x66) =
+                 *(undefined2 *)((longlong)pppppplVar6 + 100);
+            uVar4 = *(ushort *)(pppppplVar6 + 0xd);
+            if (uVar13 == uVar4) {
+              if ((*(byte *)((longlong)pppppplVar6 + 99) & 1) != 0) {
+                uVar17 = uVar17 | 4;
               }
 LAB_3:
-              *(ushort *)((longlong)pppppplVar7 + 0x6a) = uVar15 & 0xfffd;
+              *(ushort *)((longlong)pppppplVar6 + 0x6a) = uVar17 & 0xfffd;
               goto LAB_4;
             }
-            if ((uVar5 & uVar13) != 0) goto LAB_3;
-            if (uVar5 == 0) {
-              *(ushort *)(pppppplVar7 + 0xd) = uVar13;
+            if ((uVar13 & uVar4) != 0) goto LAB_3;
+            if (uVar4 == 0) {
+              *(ushort *)(pppppplVar6 + 0xd) = uVar13;
               KeReleaseInStackQueuedSpinLock(&local_d8);
               ObfReferenceObject(local_b0);
               local_e8 = CONCAT31(local_e8._1_3_,AfdPriorityBoost);
               local_f0 = local_f0 & 0xffffff00;
               local_100 = local_100 & 0xffffff00;
               local_108 = (undefined **)(ulonglong)uVar13;
-              local_f8 = pppppplVar7;
-              IoSetIoCompletionEx3(pppppplVar7[10],pppppplVar7[0xb],0,0);
-              KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c);
+              local_f8 = (longlong *****)pppppplVar6;
+              IoSetIoCompletionEx3(pppppplVar6[10],pppppplVar6[0xb],0,0);
+              KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c);
             }
             else {
               KeReleaseInStackQueuedSpinLock();
-              cVar12 = IoCancelMiniCompletionPacket(pppppplVar7[10],pppppplVar7);
+              cVar12 = IoCancelMiniCompletionPacket(pppppplVar6[10],pppppplVar6);
               if (cVar12 == '\0') {
-                KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c);
-                if (*(short *)(pppppplVar7 + 0xd) != 0) {
-                  *(ushort *)((longlong)pppppplVar7 + 0x6a) =
-                       *(ushort *)((longlong)pppppplVar7 + 0x6a) & 0xfffd;
+                KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c);
+                if (*(short *)(pppppplVar6 + 0xd) != 0) {
+                  *(ushort *)((longlong)pppppplVar6 + 0x6a) =
+                       *(ushort *)((longlong)pppppplVar6 + 0x6a) & 0xfffd;
                   goto LAB_4;
                 }
               }
               else {
                 ObfDereferenceObject(local_b0);
-                KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c);
-                *(undefined2 *)(pppppplVar7 + 0xd) = 0;
+                KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c);
+                *(undefined2 *)(pppppplVar6 + 0xd) = 0;
               }
             }
-            uVar15 = *(ushort *)((longlong)pppppplVar7 + 0x6a);
-            uVar5 = uVar15;
-          }
-          psVar6[0xbc] = 0;
-          psVar6[0xbd] = 0;
-          psVar6[0xbe] = 0;
-          psVar6[0xbf] = 0;
-          *(ushort *)((longlong)pppppplVar7 + 0x6a) =
-               *(ushort *)((longlong)pppppplVar7 + 0x6a) & 0xfffd;
+            uVar17 = *(ushort *)((longlong)pppppplVar6 + 0x6a);
+            uVar4 = uVar17;
+          }
+          psVar5[0xbc] = 0;
+          psVar5[0xbd] = 0;
+          psVar5[0xbe] = 0;
+          psVar5[0xbf] = 0;
+          *(ushort *)((longlong)pppppplVar6 + 0x6a) =
+               *(ushort *)((longlong)pppppplVar6 + 0x6a) & 0xfffd;
           KeReleaseInStackQueuedSpinLock(&local_d8);
-          AfdNotifyDestroyContext(local_b0,(longlong)pppppplVar7);
-          KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c);
+          AfdNotifyDestroyContext(local_b0,(longlong)pppppplVar6);
+          if ((Feature_447951161__private_featureState & 0x10) == 0) {
+            uVar16 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+            uVar14 = (uint)uVar16;
+          }
+          else {
+            uVar14 = Feature_447951161__private_featureState & 1;
+          }
+          if (uVar14 != 0) {
+            ExFreePoolWithTag(pppppplVar6,0x4e646641);
+          }
+          KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c);
 LAB_4:
           KeReleaseInStackQueuedSpinLock(&local_d8);
           goto LAB_5;
         }
       }
       KeReleaseInStackQueuedSpinLock(&local_d8);
       if (bVar11) {
 LAB_5:
-        ExReleaseRundownProtection(psVar6 + 0xc0);
+        ExReleaseRundownProtection(psVar5 + 0xc0);
         AfdDeleteConnectedReference(param_1,'\0');
         return;
       }
     }
     else {
       KeReleaseInStackQueuedSpinLock(param_2);
     }
     AfdDeleteConnectedReference(param_1,'\0');
     return;
   }
   if (!bVar11) {
     KeReleaseInStackQueuedSpinLock(param_2);
     return;
   }
-  AfdIndicateEventSelectEvent(psVar6,4,0);
-  if (*(longlong *)(psVar6 + 0xbc) != 0) {
-    puVar2 = (ushort *)(*(longlong *)(psVar6 + 0xbc) + 100);
-    *puVar2 = *puVar2 | 4;
-  }
-  uVar14 = AfdIndicatePollEvent(psVar6,4,0,param_2);
-  if ((char)uVar14 == '\0') {
-    AfdNotifySockIndicateEventsUnlock((longlong)psVar6,param_2,'\0');
+  AfdIndicateEventSelectEvent(psVar5,4,0);
+  if (*(longlong *)(psVar5 + 0xbc) != 0) {
+    puVar1 = (ushort *)(*(longlong *)(psVar5 + 0xbc) + 100);
+    *puVar1 = *puVar1 | 4;
+  }
+  uVar15 = AfdIndicatePollEvent(psVar5,4,0,param_2);
+  if ((char)uVar15 == '\0') {
+    AfdNotifySockIndicateEventsUnlock((longlong)psVar5,param_2,'\0');
     return;
   }
   local_d8 = 0;
   uStack_d0 = 0;
   local_c8 = 0;
   bVar11 = false;
-  KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_d8);
-  if ((*(longlong *)(psVar6 + 0xbc) != 0) &&
-     (cVar12 = ExAcquireRundownProtection(psVar6 + 0xc0), cVar12 != '\0')) {
-    pppppplVar7 = *(longlong *******)(psVar6 + 0xbc);
+  KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_d8);
+  if ((*(longlong *)(psVar5 + 0xbc) != 0) &&
+     (cVar12 = ExAcquireRundownProtection(psVar5 + 0xc0), cVar12 != '\0')) {
+    pppppplVar6 = *(longlong *******)(psVar5 + 0xbc);
     bVar11 = true;
-    uVar5 = *(ushort *)((longlong)pppppplVar7 + 0x6a);
-    ppppplVar8 = pppppplVar7[8];
-    if ((uVar5 & 2) == 0) {
-      uVar15 = uVar5 | 2;
-      *(ushort *)((longlong)pppppplVar7 + 0x6a) = uVar15;
-      while ((uVar5 & 1) == 0) {
-        uVar13 = AfdNotifyComputeEvents((longlong)pppppplVar7);
-        *(undefined2 *)((longlong)pppppplVar7 + 0x66) = *(undefined2 *)((longlong)pppppplVar7 + 100)
+    uVar4 = *(ushort *)((longlong)pppppplVar6 + 0x6a);
+    ppppplVar7 = pppppplVar6[8];
+    if ((uVar4 & 2) == 0) {
+      uVar17 = uVar4 | 2;
+      *(ushort *)((longlong)pppppplVar6 + 0x6a) = uVar17;
+      while ((uVar4 & 1) == 0) {
+        uVar13 = AfdNotifyComputeEvents((longlong)pppppplVar6);
+        *(undefined2 *)((longlong)pppppplVar6 + 0x66) = *(undefined2 *)((longlong)pppppplVar6 + 100)
         ;
-        uVar5 = *(ushort *)(pppppplVar7 + 0xd);
-        if (uVar13 == uVar5) {
-          if ((*(byte *)((longlong)pppppplVar7 + 99) & 1) != 0) {
-            uVar15 = uVar15 | 4;
+        uVar4 = *(ushort *)(pppppplVar6 + 0xd);
+        if (uVar13 == uVar4) {
+          if ((*(byte *)((longlong)pppppplVar6 + 99) & 1) != 0) {
+            uVar17 = uVar17 | 4;
           }
 LAB_6:
-          *(ushort *)((longlong)pppppplVar7 + 0x6a) = uVar15 & 0xfffd;
+          *(ushort *)((longlong)pppppplVar6 + 0x6a) = uVar17 & 0xfffd;
           goto LAB_7;
         }
-        if ((uVar13 & uVar5) != 0) goto LAB_6;
-        if (uVar5 == 0) {
-          *(ushort *)(pppppplVar7 + 0xd) = uVar13;
+        if ((uVar13 & uVar4) != 0) goto LAB_6;
+        if (uVar4 == 0) {
+          *(ushort *)(pppppplVar6 + 0xd) = uVar13;
           KeReleaseInStackQueuedSpinLock(&local_d8);
-          ObfReferenceObject(ppppplVar8);
+          ObfReferenceObject(ppppplVar7);
           local_e8 = CONCAT31(local_e8._1_3_,AfdPriorityBoost);
           local_f0 = local_f0 & 0xffffff00;
           local_100 = local_100 & 0xffffff00;
           local_108 = (undefined **)(ulonglong)uVar13;
-          local_f8 = pppppplVar7;
-          IoSetIoCompletionEx3(pppppplVar7[10],pppppplVar7[0xb],0,0);
-          KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_d8);
+          local_f8 = (longlong *****)pppppplVar6;
+          IoSetIoCompletionEx3(pppppplVar6[10],pppppplVar6[0xb],0,0);
+          KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_d8);
         }
         else {
           KeReleaseInStackQueuedSpinLock();
-          cVar12 = IoCancelMiniCompletionPacket(pppppplVar7[10],pppppplVar7);
+          cVar12 = IoCancelMiniCompletionPacket(pppppplVar6[10],pppppplVar6);
           if (cVar12 == '\0') {
-            KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_d8);
-            if (*(short *)(pppppplVar7 + 0xd) != 0) {
-              *(ushort *)((longlong)pppppplVar7 + 0x6a) =
-                   *(ushort *)((longlong)pppppplVar7 + 0x6a) & 0xfffd;
+            KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_d8);
+            if (*(short *)(pppppplVar6 + 0xd) != 0) {
+              *(ushort *)((longlong)pppppplVar6 + 0x6a) =
+                   *(ushort *)((longlong)pppppplVar6 + 0x6a) & 0xfffd;
               goto LAB_7;
             }
           }
           else {
-            ObfDereferenceObject(ppppplVar8);
-            KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_d8);
-            *(undefined2 *)(pppppplVar7 + 0xd) = 0;
-          }
-        }
-        uVar15 = *(ushort *)((longlong)pppppplVar7 + 0x6a);
-        uVar5 = uVar15;
-      }
-      psVar6[0xbc] = 0;
-      psVar6[0xbd] = 0;
-      psVar6[0xbe] = 0;
-      psVar6[0xbf] = 0;
-      *(ushort *)((longlong)pppppplVar7 + 0x6a) = *(ushort *)((longlong)pppppplVar7 + 0x6a) & 0xfffd
+            ObfDereferenceObject(ppppplVar7);
+            KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_d8);
+            *(undefined2 *)(pppppplVar6 + 0xd) = 0;
+          }
+        }
+        uVar17 = *(ushort *)((longlong)pppppplVar6 + 0x6a);
+        uVar4 = uVar17;
+      }
+      psVar5[0xbc] = 0;
+      psVar5[0xbd] = 0;
+      psVar5[0xbe] = 0;
+      psVar5[0xbf] = 0;
+      *(ushort *)((longlong)pppppplVar6 + 0x6a) = *(ushort *)((longlong)pppppplVar6 + 0x6a) & 0xfffd
       ;
       KeReleaseInStackQueuedSpinLock(&local_d8);
-      AfdNotifyDestroyContext(ppppplVar8,(longlong)pppppplVar7);
-      KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_d8);
+      AfdNotifyDestroyContext(ppppplVar7,(longlong)pppppplVar6);
+      if ((Feature_447951161__private_featureState & 0x10) == 0) {
+        uVar16 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+        uVar14 = (uint)uVar16;
+      }
+      else {
+        uVar14 = Feature_447951161__private_featureState & 1;
+      }
+      if (uVar14 != 0) {
+        ExFreePoolWithTag(pppppplVar6,0x4e646641);
+      }
+      KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_d8);
 LAB_7:
       KeReleaseInStackQueuedSpinLock(&local_d8);
       goto LAB_8;
     }
   }
   KeReleaseInStackQueuedSpinLock(&local_d8);
   if (!bVar11) {
     return;
   }
 LAB_8:
-  ExReleaseRundownProtection(psVar6 + 0xc0);
+  ExReleaseRundownProtection(psVar5 + 0xc0);
   return;
-joined_r0x000140005a1f:
-  if ((uVar5 & 1) != 0) goto LAB_9;
-  uVar13 = AfdNotifyComputeEvents((longlong)pppppplVar7);
-  *(undefined2 *)((longlong)pppppplVar7 + 0x66) = *(undefined2 *)((longlong)pppppplVar7 + 100);
-  uVar5 = *(ushort *)(pppppplVar7 + 0xd);
-  if (uVar13 == uVar5) {
-    if ((*(byte *)((longlong)pppppplVar7 + 99) & 1) != 0) {
-      uVar15 = uVar15 | 4;
+joined_r0x000140005a6f:
+  if ((uVar4 & 1) != 0) goto LAB_9;
+  uVar13 = AfdNotifyComputeEvents((longlong)pppppplVar6);
+  *(undefined2 *)((longlong)pppppplVar6 + 0x66) = *(undefined2 *)((longlong)pppppplVar6 + 100);
+  uVar4 = *(ushort *)(pppppplVar6 + 0xd);
+  if (uVar13 == uVar4) {
+    if ((*(byte *)((longlong)pppppplVar6 + 99) & 1) != 0) {
+      uVar17 = uVar17 | 4;
     }
 LAB_10:
-    *(ushort *)((longlong)pppppplVar7 + 0x6a) = uVar15 & 0xfffd;
+    *(ushort *)((longlong)pppppplVar6 + 0x6a) = uVar17 & 0xfffd;
     goto LAB_11;
   }
-  if ((uVar13 & uVar5) != 0) goto LAB_10;
-  if (uVar5 == 0) {
-    *(ushort *)(pppppplVar7 + 0xd) = uVar13;
+  if ((uVar13 & uVar4) != 0) goto LAB_10;
+  if (uVar4 == 0) {
+    *(ushort *)(pppppplVar6 + 0xd) = uVar13;
     KeReleaseInStackQueuedSpinLock(&local_a8);
-    ObfReferenceObject(ppppplVar8);
+    ObfReferenceObject(ppppplVar7);
     local_e8 = CONCAT31(local_e8._1_3_,AfdPriorityBoost);
     local_f0 = local_f0 & 0xffffff00;
     local_100 = local_100 & 0xffffff00;
     local_108 = (undefined **)(ulonglong)uVar13;
-    local_f8 = pppppplVar7;
-    IoSetIoCompletionEx3(pppppplVar7[10],pppppplVar7[0xb],0,0);
-    KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_a8);
+    local_f8 = (longlong *****)pppppplVar6;
+    IoSetIoCompletionEx3(pppppplVar6[10],pppppplVar6[0xb],0,0);
+    KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_a8);
   }
   else {
     KeReleaseInStackQueuedSpinLock();
-    cVar12 = IoCancelMiniCompletionPacket(pppppplVar7[10],pppppplVar7);
+    cVar12 = IoCancelMiniCompletionPacket(pppppplVar6[10],pppppplVar6);
     if (cVar12 == '\0') {
-      KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_a8);
-      if (*(short *)(pppppplVar7 + 0xd) != 0) {
-        *(ushort *)((longlong)pppppplVar7 + 0x6a) =
-             *(ushort *)((longlong)pppppplVar7 + 0x6a) & 0xfffd;
+      KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_a8);
+      if (*(short *)(pppppplVar6 + 0xd) != 0) {
+        *(ushort *)((longlong)pppppplVar6 + 0x6a) =
+             *(ushort *)((longlong)pppppplVar6 + 0x6a) & 0xfffd;
         goto LAB_11;
       }
     }
     else {
-      ObfDereferenceObject(ppppplVar8);
-      KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_a8);
-      *(undefined2 *)(pppppplVar7 + 0xd) = 0;
-    }
-  }
-  uVar15 = *(ushort *)((longlong)pppppplVar7 + 0x6a);
-  uVar5 = uVar15;
-  goto joined_r0x000140005a1f;
+      ObfDereferenceObject(ppppplVar7);
+      KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_a8);
+      *(undefined2 *)(pppppplVar6 + 0xd) = 0;
+    }
+  }
+  uVar17 = *(ushort *)((longlong)pppppplVar6 + 0x6a);
+  uVar4 = uVar17;
+  goto joined_r0x000140005a6f;
 LAB_9:
-  psVar6[0xbc] = 0;
-  psVar6[0xbd] = 0;
-  psVar6[0xbe] = 0;
-  psVar6[0xbf] = 0;
-  *(ushort *)((longlong)pppppplVar7 + 0x6a) = *(ushort *)((longlong)pppppplVar7 + 0x6a) & 0xfffd;
+  psVar5[0xbc] = 0;
+  psVar5[0xbd] = 0;
+  psVar5[0xbe] = 0;
+  psVar5[0xbf] = 0;
+  *(ushort *)((longlong)pppppplVar6 + 0x6a) = *(ushort *)((longlong)pppppplVar6 + 0x6a) & 0xfffd;
   KeReleaseInStackQueuedSpinLock(&local_a8);
-  AfdNotifyDestroyContext(ppppplVar8,(longlong)pppppplVar7);
-  KeAcquireInStackQueuedSpinLock(psVar6 + 0x1c,&local_a8);
+  AfdNotifyDestroyContext(ppppplVar7,(longlong)pppppplVar6);
+  if ((Feature_447951161__private_featureState & 0x10) == 0) {
+    uVar16 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+    uVar14 = (uint)uVar16;
+  }
+  else {
+    uVar14 = Feature_447951161__private_featureState & 1;
+  }
+  if (uVar14 != 0) {
+    ExFreePoolWithTag(pppppplVar6,0x4e646641);
+  }
+  KeAcquireInStackQueuedSpinLock(psVar5 + 0x1c,&local_a8);
 LAB_11:
   KeReleaseInStackQueuedSpinLock(&local_a8);
 LAB_1:
-  ExReleaseRundownProtection(psVar6 + 0xc0);
+  ExReleaseRundownProtection(psVar5 + 0xc0);
 LAB_0:
   do {
-    ppppppplVar1 = local_c0;
-    if ((longlong ********)local_c0 == &local_c0) {
+    pppppplVar6 = local_c0;
+    if ((longlong *******)local_c0 == &local_c0) {
       return;
     }
-    if (((longlong ********)local_c0[1] != &local_c0) ||
-       (ppppppplVar9 = (longlong *******)*local_c0, (longlong *******)ppppppplVar9[1] != local_c0))
+    if (((longlong *******)local_c0[1] != &local_c0) ||
+       (ppppppplVar9 = (longlong *******)*local_c0, ppppppplVar9[1] != local_c0))
     goto LAB_2;
-    ppppppplVar4 = local_c0 + -0x15;
+    ppppppplVar2 = (longlong *******)(local_c0 + -0x15);
     ppppppplVar9[1] = (longlong ******)&local_c0;
     LOCK();
-    ppppppplVar3 = local_c0 + -6;
-    pppppplVar7 = *ppppppplVar3;
-    local_c0 = ppppppplVar9;
-    *ppppppplVar3 = (longlong ******)0xffffffffffffffff;
+    ppppppplVar8 = (longlong *******)(local_c0 + -6);
+    pppppplVar3 = *ppppppplVar8;
+    local_c0 = (longlong ******)ppppppplVar9;
+    *ppppppplVar8 = (longlong ******)0xffffffffffffffff;
     UNLOCK();
-    if (pppppplVar7 != (longlong ******)0x0) {
-      local_80 = (longlong *******)0x0;
+    if (pppppplVar3 != (longlong ******)0x0) {
+      local_80 = (longlong ******)0x0;
       if ((g_AfdEtwTraceEnable != 0) || (Microsoft_Windows_Networking_CorrelationEnabled != 0)) {
         local_68 = 0;
-        local_80 = ppppppplVar4;
-        local_70 = psVar6;
+        local_80 = (longlong ******)ppppppplVar2;
+        local_70 = psVar5;
       }
       uStack_78 = 0;
       if (g_AfdEtwTraceEnable == 0) {
 LAB_12:
         if (Microsoft_Windows_Networking_CorrelationEnabled != 0) goto LAB_13;
       }
       else {
         uStack_88 = 0;
-        if (psVar6 != (short *)0x0) {
-          uStack_88 = (ulonglong)(*psVar6 != -0x502f) + 1;
+        if (psVar5 != (short *)0x0) {
+          uStack_88 = (ulonglong)(*psVar5 != -0x502f) + 1;
         }
         uStack_88 = uStack_88 | 0x8000000000000004;
         local_100 = 1;
-        local_90 = CONCAT35(0x3eb0c,CONCAT14(((byte)((int)*(undefined4 *)(ppppppplVar1 + -0xf) >>
+        local_90 = CONCAT35(0x3eb0c,CONCAT14(((byte)((int)*(undefined4 *)(pppppplVar6 + -0xf) >>
                                                     0x1f) & 0xfe) + 4,0x100003eb));
-        local_f8 = ppppppplVar1[-0x14];
-        local_f0 = *(uint *)(ppppppplVar1 + -0xe);
-        local_e8 = *(undefined4 *)(ppppppplVar1 + -0xf);
-        local_e0 = ppppppplVar4;
-        AFDETW_TRACEDATA_CORE(&local_90,1,0xbd1,(longlong)psVar6);
+        local_f8 = pppppplVar6[-0x14];
+        local_f0 = *(uint *)(pppppplVar6 + -0xe);
+        local_e8 = *(undefined4 *)(pppppplVar6 + -0xf);
+        local_e0 = (longlong ******)ppppppplVar2;
+        AFDETW_TRACEDATA_CORE(&local_90,1,0xbd1,(longlong)psVar5);
         if (g_AfdEtwTraceEnable == 0) goto LAB_12;
 LAB_13:
         if (Microsoft_Windows_Networking_CorrelationEnabled != 0) {
-          local_b0 = (longlong *****)CONCAT44(local_b0._4_4_,2);
+          local_b0 = (longlong ****)CONCAT44(local_b0._4_4_,2);
           if (Microsoft_Windows_Networking_CorrelationTraceActivityPayload == 0) {
             local_108 = (undefined **)0x0;
-            uVar14 = 0;
+            uVar15 = 0;
           }
           else {
-            local_50 = (longlong *****)&local_b0;
+            local_50 = (longlong ****)&local_b0;
             local_60 = &Microsoft_Windows_Networking_ProviderId;
-            uVar14 = 2;
+            uVar15 = 2;
             local_108 = &local_60;
             local_58 = 0x10;
             local_48 = 4;
           }
-          EtwWrite(Microsoft_Windows_Networking_CorrelationHandle,&ActivityStop,&local_80,uVar14);
-        }
-      }
-      IofCompleteRequest(ppppppplVar4,AfdPriorityBoost);
+          EtwWrite(Microsoft_Windows_Networking_CorrelationHandle,&ActivityStop,&local_80,uVar15);
+        }
+      }
+      IofCompleteRequest(ppppppplVar2,AfdPriorityBoost);
     }
   } while( true );
 }
 

```


## AfdFastConnectionSend

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.7|
|i_ratio|0.58|
|m_ratio|0.98|
|b_ratio|0.59|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdFastConnectionSend|AfdFastConnectionSend|
|fullname|AfdFastConnectionSend|AfdFastConnectionSend|
|refcount|3|3|
|`length`|2387|2477|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACESEND<br>AfdCheckISBEvents<br>AfdCloseConnection<br>AfdCopyBufferArrayToBuffer<br>AfdEnqueueTpSendIrp<br>AfdGetBuffer<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdReturnBuffer<br>AfdShouldSendBlock<br>AfdTLStartBufferedVcSend</summary>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_DDq<br>WPP_SF_qq</details>|<details><summary>Expand for full list:<br>AFDETW_TRACESEND<br>AfdCheckISBEvents<br>AfdCloseConnection<br>AfdCopyBufferArrayToBuffer<br>AfdEnqueueTpSendIrp<br>AfdGetBuffer<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdReturnBuffer<br>AfdShouldSendBlock<br>AfdTLStartBufferedVcSend</summary>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_DDq<br>WPP_SF_qq</details>|
|calling|AfdFastIoDeviceControl<br>AfdFastIoWrite|AfdFastIoDeviceControl<br>AfdFastIoWrite|
|paramcount|3|3|
|`address`|140032e60|140031ef0|
|sig|undefined8 __fastcall AfdFastConnectionSend(ushort * param_1, longlong param_2, uint param_3)|undefined8 __fastcall AfdFastConnectionSend(ushort * param_1, longlong param_2, uint param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdFastConnectionSend Called Diff


```diff
--- AfdFastConnectionSend called
+++ AfdFastConnectionSend called
@@ -11,0 +12 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
@@ -12,0 +14 @@
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdFastConnectionSend Diff


```diff
--- AfdFastConnectionSend
+++ AfdFastConnectionSend
@@ -1,453 +1,479 @@
 
 ulonglong AfdFastConnectionSend(ushort *param_1,longlong param_2,uint param_3)
 
 {
   longlong *plVar1;
   longlong lVar2;
   ushort uVar3;
   undefined2 *puVar4;
   undefined8 uVar5;
   uint *puVar6;
   void *pvVar7;
   short *psVar8;
   undefined4 *puVar9;
   code *pcVar10;
   bool bVar11;
   char cVar12;
   char cVar13;
   ushort uVar14;
   uint uVar15;
   int iVar16;
   undefined8 uVar17;
-  void *pvVar18;
-  ulonglong uVar19;
+  ulonglong uVar18;
+  void *pvVar19;
   undefined1 *puVar20;
   undefined1 *puVar21;
   undefined1 *puVar22;
   ushort uVar23;
   undefined8 local_res20;
   undefined1 auStack_f8 [8];
   undefined1 auStack_f0 [24];
   ulonglong local_d8;
   undefined1 local_d0;
   longlong local_c8;
   undefined1 local_c0;
   undefined1 local_b8;
-  undefined8 local_a8;
-  undefined8 uStack_a0;
-  undefined8 local_98;
+  char local_a8;
+  undefined8 local_a0;
+  undefined8 uStack_98;
+  undefined8 local_90;
   undefined2 *local_78;
   undefined8 local_50;
   undefined8 uStack_48;
   undefined8 local_40;
   
   puVar20 = auStack_f8;
   puVar22 = auStack_f8;
-  local_a8 = 0;
-  uStack_a0 = 0;
-  local_98 = 0;
-  KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a8);
+  local_a0 = 0;
+  uStack_98 = 0;
+  local_90 = 0;
+  KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a0);
   if (((((*(byte *)((longlong)param_1 + 7) & 0x10) != 0) || ((*param_1 & 0xafd2) != 0xafd2)) ||
       (puVar4 = *(undefined2 **)(param_1 + 0x60), local_78 = puVar4, puVar4 == (undefined2 *)0x0))
      || ((*(uint *)(puVar4 + 2) & 0x100010) != 0)) {
-    uVar19 = KeReleaseInStackQueuedSpinLock(&local_a8);
+    uVar18 = KeReleaseInStackQueuedSpinLock(&local_a0);
     goto LAB_0;
   }
   uVar17 = AfdShouldSendBlock((longlong)param_1,(longlong)puVar4,param_3);
   if ((char)uVar17 != '\0') {
     if ((((*(uint *)(puVar4 + 2) >> 0x15 & 1) == 0) && (AfdDynamicSendBufferDisabled == 0)) &&
        ((*(uint *)(puVar4 + 2) >> 0x13 & 1) == 0)) {
       LOCK();
       plVar1 = (longlong *)(puVar4 + 0x18);
       lVar2 = *plVar1;
       *plVar1 = *plVar1 + 1;
       UNLOCK();
       if (lVar2 + 1 < 2) {
         pcVar10 = (code *)swi(0x29);
         (*pcVar10)(0xe);
         puVar20 = auStack_f0;
       }
       cVar13 = '\0';
       *(undefined8 *)(puVar20 + 0x90) = 0;
       *(undefined8 *)(puVar20 + 0x98) = 0;
       *(undefined8 *)(puVar20 + 0xa0) = 0;
       if (*(longlong *)(param_1 + 0xbc) != 0) {
-        *(undefined8 *)(puVar20 + -8) = 0x140032f80;
+        *(undefined8 *)(puVar20 + -8) = 0x140032010;
         cVar12 = ExAcquireRundownProtection(param_1 + 0xc0);
         if (cVar12 != '\0') {
-          puVar20[0x100] = 1;
-          bVar11 = true;
+          puVar20[0x50] = 1;
+          cVar13 = '\x01';
           lVar2 = *(longlong *)(param_1 + 0xbc);
           *(undefined8 *)(puVar20 + 0x70) = *(undefined8 *)(lVar2 + 0x40);
           uVar3 = *(ushort *)(lVar2 + 0x6a);
           if ((uVar3 & 2) == 0) {
             uVar23 = uVar3 | 2;
             *(ushort *)(lVar2 + 0x6a) = uVar23;
             while ((uVar3 & 1) == 0) {
-              *(undefined8 *)(puVar20 + -8) = 0x140032fd8;
+              *(undefined8 *)(puVar20 + -8) = 0x14003205e;
               uVar14 = AfdNotifyComputeEvents(lVar2);
               *(undefined2 *)(lVar2 + 0x66) = *(undefined2 *)(lVar2 + 100);
               uVar3 = *(ushort *)(lVar2 + 0x68);
               if (uVar14 == uVar3) {
                 if ((*(byte *)(lVar2 + 99) & 1) != 0) {
                   uVar23 = uVar23 | 4;
                 }
 LAB_1:
                 *(ushort *)(lVar2 + 0x6a) = uVar23 & 0xfffd;
-                bVar11 = true;
+                cVar13 = '\x01';
                 goto LAB_2;
               }
               if ((uVar14 & uVar3) != 0) goto LAB_1;
               if (uVar3 == 0) {
                 *(ushort *)(lVar2 + 0x68) = uVar14;
-                *(undefined8 *)(puVar20 + -8) = 0x140033096;
-                KeReleaseInStackQueuedSpinLock(puVar20 + 0x50);
-                *(undefined8 *)(puVar20 + -8) = 0x1400330a7;
+                *(undefined8 *)(puVar20 + -8) = 0x14003211c;
+                KeReleaseInStackQueuedSpinLock(puVar20 + 0x58);
+                *(undefined8 *)(puVar20 + -8) = 0x14003212d;
                 ObfReferenceObject(*(undefined8 *)(puVar20 + 0x70));
                 puVar20[0x40] = AfdPriorityBoost;
                 puVar20[0x38] = 0;
                 *(longlong *)(puVar20 + 0x30) = lVar2;
                 puVar20[0x28] = 0;
                 *(ulonglong *)(puVar20 + 0x20) = (ulonglong)uVar14;
                 uVar17 = *(undefined8 *)(lVar2 + 0x58);
                 uVar5 = *(undefined8 *)(lVar2 + 0x50);
-                *(undefined8 *)(puVar20 + -8) = 0x1400330e0;
+                *(undefined8 *)(puVar20 + -8) = 0x140032166;
                 IoSetIoCompletionEx3(uVar5,uVar17,0,0);
-                *(undefined8 *)(puVar20 + -8) = 0x1400330f5;
-                KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar20 + 0x50);
+                *(undefined8 *)(puVar20 + -8) = 0x14003217b;
+                KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar20 + 0x58);
               }
               else {
-                *(undefined8 *)(puVar20 + -8) = 0x140033011;
+                *(undefined8 *)(puVar20 + -8) = 0x140032097;
                 KeReleaseInStackQueuedSpinLock();
                 uVar17 = *(undefined8 *)(lVar2 + 0x50);
-                *(undefined8 *)(puVar20 + -8) = 0x140033024;
+                *(undefined8 *)(puVar20 + -8) = 0x1400320aa;
                 cVar13 = IoCancelMiniCompletionPacket(uVar17,lVar2);
                 if (cVar13 == '\0') {
-                  *(undefined8 *)(puVar20 + -8) = 0x14003303d;
-                  KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar20 + 0x50);
+                  *(undefined8 *)(puVar20 + -8) = 0x1400320c3;
+                  KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar20 + 0x58);
                   if (*(short *)(lVar2 + 0x68) != 0) {
                     *(ushort *)(lVar2 + 0x6a) = *(ushort *)(lVar2 + 0x6a) & 0xfffd;
-                    bVar11 = true;
+                    cVar13 = '\x01';
                     goto LAB_2;
                   }
                 }
                 else {
-                  *(undefined8 *)(puVar20 + -8) = 0x140033069;
+                  *(undefined8 *)(puVar20 + -8) = 0x1400320ef;
                   ObfDereferenceObject(*(undefined8 *)(puVar20 + 0x70));
-                  *(undefined8 *)(puVar20 + -8) = 0x14003307e;
-                  KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar20 + 0x50);
+                  *(undefined8 *)(puVar20 + -8) = 0x140032104;
+                  KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar20 + 0x58);
                   *(undefined2 *)(lVar2 + 0x68) = 0;
                 }
               }
               uVar23 = *(ushort *)(lVar2 + 0x6a);
               uVar3 = uVar23;
             }
             param_1[0xbc] = 0;
             param_1[0xbd] = 0;
             param_1[0xbe] = 0;
             param_1[0xbf] = 0;
             *(ushort *)(lVar2 + 0x6a) = *(ushort *)(lVar2 + 0x6a) & 0xfffd;
-            *(undefined8 *)(puVar20 + -8) = 0x140033124;
-            KeReleaseInStackQueuedSpinLock(puVar20 + 0x50);
-            *(undefined8 *)(puVar20 + -8) = 0x140033136;
+            *(undefined8 *)(puVar20 + -8) = 0x1400321aa;
+            KeReleaseInStackQueuedSpinLock(puVar20 + 0x58);
+            puVar20[0x100] = 0;
+            *(undefined8 *)(puVar20 + -8) = 0x1400321c4;
             AfdNotifyDestroyContext(*(undefined8 *)(puVar20 + 0x70),lVar2);
-            bVar11 = false;
+            if ((Feature_447951161__private_featureState & 0x10) == 0) {
+              *(undefined8 *)(puVar20 + -8) = 0x1400321f2;
+              uVar18 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+              uVar15 = (uint)uVar18;
+            }
+            else {
+              uVar15 = Feature_447951161__private_featureState & 1;
+            }
+            if (uVar15 != 0) {
+              *(undefined8 *)(puVar20 + -8) = 0x140032205;
+              ExFreePoolWithTag(lVar2,0x4e646641);
+            }
+            cVar13 = puVar20[0x100];
 LAB_2:
             param_2 = *(longlong *)(puVar20 + 0x108);
           }
-          if (!bVar11) {
-            *(undefined8 *)(puVar20 + -8) = 0x140033154;
-            KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar20 + 0x50);
-          }
-          cVar13 = puVar20[0x100];
-        }
-      }
-      *(undefined8 *)(puVar20 + -8) = 0x14003316d;
-      KeReleaseInStackQueuedSpinLock(puVar20 + 0x50);
+          if (cVar13 == '\0') {
+            *(undefined8 *)(puVar20 + -8) = 0x14003222e;
+            KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar20 + 0x58);
+          }
+          cVar13 = puVar20[0x50];
+        }
+      }
+      *(undefined8 *)(puVar20 + -8) = 0x140032244;
+      KeReleaseInStackQueuedSpinLock(puVar20 + 0x58);
       if (cVar13 != '\0') {
-        *(undefined8 *)(puVar20 + -8) = 0x140033184;
+        *(undefined8 *)(puVar20 + -8) = 0x14003225b;
         ExReleaseRundownProtection(param_1 + 0xc0);
       }
-      *(undefined8 *)(puVar20 + -8) = 0x140033197;
+      *(undefined8 *)(puVar20 + -8) = 0x14003226e;
       AfdCheckISBEvents((longlong)puVar4,AfdTLSockOptEnable);
       LOCK();
       plVar1 = (longlong *)(puVar4 + 0x18);
       lVar2 = *plVar1;
       *plVar1 = *plVar1 + -1;
       UNLOCK();
       puVar21 = puVar20;
       if (lVar2 < 2) {
         if (lVar2 == 1) {
-          *(undefined8 *)(puVar20 + -8) = 0x1400331bb;
+          *(undefined8 *)(puVar20 + -8) = 0x140032292;
           AfdCloseConnection(puVar4);
         }
         else {
           pcVar10 = (code *)swi(0x29);
           (*pcVar10)(0xe);
           puVar21 = puVar20 + 8;
         }
       }
     }
     else {
-      bVar11 = false;
       local_50 = 0;
       uStack_48 = 0;
       local_40 = 0;
+      cVar13 = '\0';
       if ((*(longlong *)(param_1 + 0xbc) != 0) &&
-         (cVar13 = ExAcquireRundownProtection(param_1 + 0xc0), cVar13 != '\0')) {
+         (cVar12 = ExAcquireRundownProtection(param_1 + 0xc0), cVar12 != '\0')) {
+        local_a8 = '\x01';
         bVar11 = true;
         lVar2 = *(longlong *)(param_1 + 0xbc);
         uVar17 = *(undefined8 *)(lVar2 + 0x40);
         uVar3 = *(ushort *)(lVar2 + 0x6a);
         if ((uVar3 & 2) == 0) {
           uVar23 = uVar3 | 2;
           *(ushort *)(lVar2 + 0x6a) = uVar23;
           while ((uVar3 & 1) == 0) {
             uVar14 = AfdNotifyComputeEvents(lVar2);
             *(undefined2 *)(lVar2 + 0x66) = *(undefined2 *)(lVar2 + 100);
             uVar3 = *(ushort *)(lVar2 + 0x68);
             if (uVar14 == uVar3) {
               if ((*(byte *)(lVar2 + 99) & 1) != 0) {
                 uVar23 = uVar23 | 4;
               }
 LAB_3:
               *(ushort *)(lVar2 + 0x6a) = uVar23 & 0xfffd;
               bVar11 = true;
               goto LAB_4;
             }
             if ((uVar3 & uVar14) != 0) goto LAB_3;
             if (uVar3 == 0) {
               *(ushort *)(lVar2 + 0x68) = uVar14;
-              KeReleaseInStackQueuedSpinLock(&local_a8);
+              KeReleaseInStackQueuedSpinLock(&local_a0);
               ObfReferenceObject(uVar17);
               local_b8 = AfdPriorityBoost;
               local_c0 = 0;
               local_d0 = 0;
               local_d8 = (ulonglong)uVar14;
               local_c8 = lVar2;
               IoSetIoCompletionEx3(*(undefined8 *)(lVar2 + 0x50),*(undefined8 *)(lVar2 + 0x58),0,0);
-              KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a8);
+              KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a0);
             }
             else {
               KeReleaseInStackQueuedSpinLock();
               cVar13 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar2 + 0x50),lVar2);
               if (cVar13 == '\0') {
-                KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a8);
+                KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a0);
                 if (*(short *)(lVar2 + 0x68) != 0) {
                   *(ushort *)(lVar2 + 0x6a) = *(ushort *)(lVar2 + 0x6a) & 0xfffd;
                   bVar11 = true;
                   goto LAB_4;
                 }
               }
               else {
                 ObfDereferenceObject(uVar17);
-                KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a8);
+                KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a0);
                 *(undefined2 *)(lVar2 + 0x68) = 0;
               }
             }
             uVar23 = *(ushort *)(lVar2 + 0x6a);
             uVar3 = uVar23;
           }
           param_1[0xbc] = 0;
           param_1[0xbd] = 0;
           param_1[0xbe] = 0;
           param_1[0xbf] = 0;
           *(ushort *)(lVar2 + 0x6a) = *(ushort *)(lVar2 + 0x6a) & 0xfffd;
-          KeReleaseInStackQueuedSpinLock(&local_a8);
+          KeReleaseInStackQueuedSpinLock(&local_a0);
           AfdNotifyDestroyContext(uVar17,lVar2);
+          if ((Feature_447951161__private_featureState & 0x10) == 0) {
+            uVar18 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+            uVar15 = (uint)uVar18;
+          }
+          else {
+            uVar15 = Feature_447951161__private_featureState & 1;
+          }
+          if (uVar15 != 0) {
+            ExFreePoolWithTag(lVar2,0x4e646641);
+          }
           bVar11 = false;
         }
 LAB_4:
+        cVar13 = local_a8;
         if (!bVar11) {
-          KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a8);
-        }
-        bVar11 = true;
-      }
-      KeReleaseInStackQueuedSpinLock(&local_a8);
+          KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_a0);
+          cVar13 = local_a8;
+        }
+      }
+      KeReleaseInStackQueuedSpinLock(&local_a0);
       puVar21 = auStack_f8;
-      if (bVar11) {
+      if (cVar13 != '\0') {
         ExReleaseRundownProtection(param_1 + 0xc0);
         puVar21 = auStack_f8;
       }
     }
-    uVar19 = (ulonglong)*(uint *)(param_1 + 4);
+    uVar18 = (ulonglong)*(uint *)(param_1 + 4);
     if ((*(uint *)(param_1 + 4) & 0x10) != 0) {
       uVar15 = *(uint *)(param_2 + 0xc);
-      uVar19 = (ulonglong)uVar15;
+      uVar18 = (ulonglong)uVar15;
       if ((uVar15 & 2) == 0) {
         **(undefined4 **)(puVar21 + 0x118) = 0xc00000a3;
         return CONCAT71((uint7)(uint3)(uVar15 >> 8),1);
       }
     }
     goto LAB_0;
   }
   LOCK();
   plVar1 = (longlong *)(puVar4 + 0x18);
   lVar2 = *plVar1;
   *plVar1 = *plVar1 + 1;
   UNLOCK();
   if (lVar2 + 1 < 2) {
     pcVar10 = (code *)swi(0x29);
     (*pcVar10)(0xe);
     puVar22 = auStack_f0;
   }
-  *(undefined8 *)(puVar22 + -8) = 0x14003347f;
-  KeReleaseInStackQueuedSpinLock(puVar22 + 0x50);
+  *(undefined8 *)(puVar22 + -8) = 0x140032569;
+  KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
   if ((DAT_5 & 0x40) != 0) {
-    *(undefined8 *)(puVar22 + -8) = 0x1400334a4;
+    *(undefined8 *)(puVar22 + -8) = 0x14003258e;
     WPP_SF_qq(10,&WPP_5d10adf6cd9b3dca63b04d5d43604693_Traceguids,param_1,puVar4);
   }
   lVar2 = *(longlong *)(puVar4 + 0x10);
-  *(undefined8 *)(puVar22 + -8) = 0x1400334b4;
-  pvVar18 = AfdGetBuffer(param_3,0,lVar2,0);
-  *(void **)(puVar22 + 0x70) = pvVar18;
-  if (pvVar18 == (void *)0x0) {
-    *(undefined8 *)(puVar22 + -8) = 0x1400334d1;
-    KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar22 + 0x50);
+  *(undefined8 *)(puVar22 + -8) = 0x14003259e;
+  pvVar19 = AfdGetBuffer(param_3,0,lVar2,0);
+  *(void **)(puVar22 + 0x70) = pvVar19;
+  if (pvVar19 == (void *)0x0) {
+    *(undefined8 *)(puVar22 + -8) = 0x1400325bb;
+    KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar22 + 0x58);
     *(uint *)(puVar4 + 0x3c) = *(int *)(puVar4 + 0x3c) - param_3;
     *(int *)(puVar4 + 0x3e) = *(int *)(puVar4 + 0x3e) + -1;
-    *(undefined8 *)(puVar22 + -8) = 0x1400334e8;
-    KeReleaseInStackQueuedSpinLock(puVar22 + 0x50);
+    *(undefined8 *)(puVar22 + -8) = 0x1400325d2;
+    KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
     LOCK();
     plVar1 = (longlong *)(puVar4 + 0x18);
     lVar2 = *plVar1;
     *plVar1 = *plVar1 + -1;
     UNLOCK();
-    uVar19 = lVar2 - 1;
-    if (uVar19 == 0 || lVar2 < 1) {
-      if (uVar19 == 0) {
-        *(undefined8 *)(puVar22 + -8) = 0x140033510;
-        uVar19 = AfdCloseConnection(puVar4);
+    uVar18 = lVar2 - 1;
+    if (uVar18 == 0 || lVar2 < 1) {
+      if (uVar18 == 0) {
+        *(undefined8 *)(puVar22 + -8) = 0x1400325fa;
+        uVar18 = AfdCloseConnection(puVar4);
       }
       else {
         pcVar10 = (code *)swi(0x29);
-        uVar19 = (*pcVar10)(0xe);
+        uVar18 = (*pcVar10)(0xe);
       }
     }
     goto LAB_0;
   }
-  *(uint *)(*(longlong *)((longlong)pvVar18 + 0x38) + 0x28) = param_3;
-  *(undefined2 **)((longlong)pvVar18 + 0x30) = puVar4;
+  *(uint *)(*(longlong *)((longlong)pvVar19 + 0x38) + 0x28) = param_3;
+  *(undefined2 **)((longlong)pvVar19 + 0x30) = puVar4;
   if (param_3 != 0) {
     iVar16 = *(int *)(param_2 + 8);
     puVar6 = (uint *)**(undefined8 **)(puVar22 + 0x108);
-    uVar19 = (ulonglong)param_3;
-    pvVar7 = *(void **)((longlong)pvVar18 + 0x58);
-    *(undefined8 *)(puVar22 + -8) = 0x140033552;
+    uVar18 = (ulonglong)param_3;
+    pvVar7 = *(void **)((longlong)pvVar19 + 0x58);
+    *(undefined8 *)(puVar22 + -8) = 0x14003263c;
     uVar15 = AfdCopyBufferArrayToBuffer(pvVar7,param_3,puVar6,iVar16);
     if (uVar15 != param_3) {
       if ((DAT_5 & 0x40) != 0) {
         *(ushort **)(puVar22 + 0x20) = param_1;
-        *(undefined8 *)(puVar22 + -8) = 0x140033578;
-        WPP_SF_DDq(0xb,uVar19,param_3,uVar15);
-      }
-      *(undefined4 *)(*(longlong *)((longlong)pvVar18 + 0x38) + 0x28) =
-           *(undefined4 *)((longlong)pvVar18 + 0x44);
+        *(undefined8 *)(puVar22 + -8) = 0x140032662;
+        WPP_SF_DDq(0xb,uVar18,param_3,uVar15);
+      }
+      *(undefined4 *)(*(longlong *)((longlong)pvVar19 + 0x38) + 0x28) =
+           *(undefined4 *)((longlong)pvVar19 + 0x44);
       lVar2 = *(longlong *)(puVar4 + 0x10);
-      *(undefined8 *)(puVar22 + -8) = 0x14003358e;
-      AfdReturnBuffer((longlong)pvVar18,lVar2);
-      *(undefined8 *)(puVar22 + -8) = 0x14003359e;
-      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar22 + 0x50);
+      *(undefined8 *)(puVar22 + -8) = 0x140032678;
+      AfdReturnBuffer((longlong)pvVar19,lVar2);
+      *(undefined8 *)(puVar22 + -8) = 0x140032688;
+      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar22 + 0x58);
       *(uint *)(puVar4 + 0x3c) = *(int *)(puVar4 + 0x3c) - param_3;
       *(int *)(puVar4 + 0x3e) = *(int *)(puVar4 + 0x3e) + -1;
-      *(undefined8 *)(puVar22 + -8) = 0x1400335bf;
-      KeReleaseInStackQueuedSpinLock(puVar22 + 0x50);
+      *(undefined8 *)(puVar22 + -8) = 0x1400326a9;
+      KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
       LOCK();
       plVar1 = (longlong *)(puVar4 + 0x18);
       lVar2 = *plVar1;
       *plVar1 = *plVar1 + -1;
       UNLOCK();
-      uVar19 = lVar2 - 1;
-      if (uVar19 == 0 || lVar2 < 1) {
-        if (uVar19 == 0) {
-          *(undefined8 *)(puVar22 + -8) = 0x1400335e4;
-          uVar19 = AfdCloseConnection(puVar4);
+      uVar18 = lVar2 - 1;
+      if (uVar18 == 0 || lVar2 < 1) {
+        if (uVar18 == 0) {
+          *(undefined8 *)(puVar22 + -8) = 0x1400326ce;
+          uVar18 = AfdCloseConnection(puVar4);
         }
         else {
           pcVar10 = (code *)swi(0x29);
-          uVar19 = (*pcVar10)(0xe);
-        }
-      }
-      return uVar19 & 0xffffffffffffff00;
+          uVar18 = (*pcVar10)(0xe);
+        }
+      }
+      return uVar18 & 0xffffffffffffff00;
     }
   }
   if ((*(uint *)(param_1 + 4) >> 8 & 1) == 0) {
-    lVar2 = *(longlong *)(*(longlong *)((longlong)pvVar18 + 0x50) + 0xb8);
+    lVar2 = *(longlong *)(*(longlong *)((longlong)pvVar19 + 0x50) + 0xb8);
     *(code **)(lVar2 + -0x10) = AfdRestartBufferSend;
-    *(void **)(lVar2 + -8) = pvVar18;
+    *(void **)(lVar2 + -8) = pvVar19;
     *(undefined1 *)(lVar2 + -0x45) = 0xe0;
-    lVar2 = *(longlong *)(*(longlong *)((longlong)pvVar18 + 0x50) + 0xb8);
+    lVar2 = *(longlong *)(*(longlong *)((longlong)pvVar19 + 0x50) + 0xb8);
     *(undefined2 *)(lVar2 + -0x48) = 0x70f;
     *(undefined8 *)(lVar2 + -0x20) = *(undefined8 *)(puVar4 + 0xc);
     *(undefined8 *)(lVar2 + -0x18) = *(undefined8 *)(puVar4 + 8);
     *(undefined4 *)(lVar2 + -0x3c) = 0;
     *(uint *)(lVar2 + -0x40) = param_3;
-    *(undefined8 *)(*(longlong *)((longlong)pvVar18 + 0x50) + 8) =
-         *(undefined8 *)((longlong)pvVar18 + 0x38);
+    *(undefined8 *)(*(longlong *)((longlong)pvVar19 + 0x50) + 8) =
+         *(undefined8 *)((longlong)pvVar19 + 0x38);
     *(longlong *)(puVar22 + 0x100) = *(longlong *)(puVar22 + 0x108) + 8;
   }
   else {
     *(longlong *)(puVar22 + 0x100) = param_2 + 8;
   }
-  lVar2 = *(longlong *)((longlong)pvVar18 + 0x38);
-  *(void **)(puVar22 + 0x40) = pvVar18;
+  lVar2 = *(longlong *)((longlong)pvVar19 + 0x38);
+  *(void **)(puVar22 + 0x40) = pvVar19;
   *(undefined4 *)(puVar22 + 0x38) = 0;
   *(undefined4 *)(puVar22 + 0x30) = *(undefined4 *)(lVar2 + 0x28);
   *(longlong *)(puVar22 + 0x28) = lVar2;
   *(undefined4 *)(puVar22 + 0x20) = *(undefined4 *)(*(longlong *)(puVar22 + 0x108) + 8);
-  *(undefined8 *)(puVar22 + -8) = 0x140033748;
+  *(undefined8 *)(puVar22 + -8) = 0x140032832;
   AFDETW_TRACESEND(0,0xbe7,(short *)param_1,1,*(undefined4 *)(puVar22 + 0x20),
                    *(undefined8 *)(puVar22 + 0x28),*(undefined4 *)(puVar22 + 0x30),
                    *(undefined4 *)(puVar22 + 0x38),*(short **)(puVar22 + 0x40));
   if (*(longlong *)(param_1 + 0xb0) == 0) {
 LAB_6:
     if ((*(uint *)(param_1 + 4) >> 8 & 1) == 0) {
-      uVar17 = *(undefined8 *)((longlong)pvVar18 + 0x50);
+      uVar17 = *(undefined8 *)((longlong)pvVar19 + 0x50);
       uVar5 = *(undefined8 *)(puVar4 + 0xc);
-      *(undefined8 *)(puVar22 + -8) = 0x1400337a1;
+      *(undefined8 *)(puVar22 + -8) = 0x14003288b;
       iVar16 = IofCallDriver(uVar5,uVar17);
     }
     else {
-      *(void **)(puVar22 + 0x20) = pvVar18;
-      uVar17 = *(undefined8 *)((longlong)pvVar18 + 0x38);
-      *(undefined8 *)(puVar22 + -8) = 0x140033790;
-      uVar19 = AfdTLStartBufferedVcSend
+      *(void **)(puVar22 + 0x20) = pvVar19;
+      uVar17 = *(undefined8 *)((longlong)pvVar19 + 0x38);
+      *(undefined8 *)(puVar22 + -8) = 0x14003287a;
+      uVar18 = AfdTLStartBufferedVcSend
                          ((longlong)puVar4,uVar17,param_3,(short **)0x0,*(short **)(puVar22 + 0x20))
       ;
-      iVar16 = (int)uVar19;
+      iVar16 = (int)uVar18;
     }
   }
   else {
-    psVar8 = *(short **)((longlong)pvVar18 + 0x50);
-    *(undefined8 *)(puVar22 + -8) = 0x140033764;
-    cVar13 = AfdEnqueueTpSendIrp(param_1,psVar8,0,(longlong)pvVar18);
+    psVar8 = *(short **)((longlong)pvVar19 + 0x50);
+    *(undefined8 *)(puVar22 + -8) = 0x14003284e;
+    cVar13 = AfdEnqueueTpSendIrp((short *)param_1,psVar8,0,(longlong)pvVar19);
     if (cVar13 == '\0') goto LAB_6;
     iVar16 = 0x103;
   }
-  *(void **)(puVar22 + 0x40) = pvVar18;
+  *(void **)(puVar22 + 0x40) = pvVar19;
   if (-1 < iVar16) {
     puVar9 = *(undefined4 **)(puVar22 + 0x118);
     *(ulonglong *)(puVar9 + 2) = (ulonglong)param_3;
     *puVar9 = 0;
     *(undefined4 *)(puVar22 + 0x38) = 0;
     *(uint *)(puVar22 + 0x30) = param_3;
     *(longlong *)(puVar22 + 0x28) = lVar2;
     *(undefined4 *)(puVar22 + 0x20) = **(undefined4 **)(puVar22 + 0x100);
-    *(undefined8 *)(puVar22 + -8) = 0x1400337ed;
+    *(undefined8 *)(puVar22 + -8) = 0x1400328d7;
     uVar17 = AFDETW_TRACESEND(1,0xbeb,(short *)param_1,1,*(undefined4 *)(puVar22 + 0x20),
                               *(undefined8 *)(puVar22 + 0x28),*(undefined4 *)(puVar22 + 0x30),
                               *(undefined4 *)(puVar22 + 0x38),*(short **)(puVar22 + 0x40));
     return CONCAT71((int7)((ulonglong)uVar17 >> 8),1);
   }
   *(int *)(puVar22 + 0x38) = iVar16;
   *(uint *)(puVar22 + 0x30) = param_3;
   *(longlong *)(puVar22 + 0x28) = lVar2;
   *(undefined4 *)(puVar22 + 0x20) = **(undefined4 **)(puVar22 + 0x100);
-  *(undefined8 *)(puVar22 + -8) = 0x140033819;
-  uVar19 = AFDETW_TRACESEND(1,0xbed,(short *)param_1,1,*(undefined4 *)(puVar22 + 0x20),
+  *(undefined8 *)(puVar22 + -8) = 0x140032903;
+  uVar18 = AFDETW_TRACESEND(1,0xbed,(short *)param_1,1,*(undefined4 *)(puVar22 + 0x20),
                             *(undefined8 *)(puVar22 + 0x28),*(undefined4 *)(puVar22 + 0x30),
                             *(undefined4 *)(puVar22 + 0x38),*(short **)(puVar22 + 0x40));
 LAB_0:
-  return uVar19 & 0xffffffffffffff00;
+  return uVar18 & 0xffffffffffffff00;
 }
 

```


## AfdFastConnectionReceive

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.5|
|i_ratio|0.66|
|m_ratio|0.98|
|b_ratio|0.82|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdFastConnectionReceive|AfdFastConnectionReceive|
|fullname|AfdFastConnectionReceive|AfdFastConnectionReceive|
|refcount|3|3|
|`length`|3504|3631|
|`called`|<details><summary>Expand for full list:<br>AFDETW_START_ACTIVITY_FASTIO<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACERECV<br>AfdBInitDrainBytesInTransport<br>AfdBPostDrainReceive<br>AfdCloseConnection<br>AfdCopyMdlChainToBufferArray<br>AfdIndicateEventSelectEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdReturnBuffer</summary>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_qL<br>WPP_SF_qq</details>|<details><summary>Expand for full list:<br>AFDETW_START_ACTIVITY_FASTIO<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACERECV<br>AfdBInitDrainBytesInTransport<br>AfdBPostDrainReceive<br>AfdCloseConnection<br>AfdCopyMdlChainToBufferArray<br>AfdIndicateEventSelectEvent<br>AfdNotifyComputeEvents<br>AfdNotifyDestroyContext<br>AfdReturnBuffer</summary>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>WPP_SF_qL<br>WPP_SF_qq</details>|
|calling|AfdFastIoDeviceControl<br>AfdFastIoRead|AfdFastIoDeviceControl<br>AfdFastIoRead|
|paramcount|4|4|
|`address`|140031ef0|140030f00|
|sig|char __fastcall AfdFastConnectionReceive(uint * param_1, longlong param_2, undefined8 param_3, undefined4 * param_4)|char __fastcall AfdFastConnectionReceive(uint * param_1, longlong param_2, undefined8 param_3, undefined4 * param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdFastConnectionReceive Called Diff


```diff
--- AfdFastConnectionReceive called
+++ AfdFastConnectionReceive called
@@ -11,0 +12 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
@@ -12,0 +14 @@
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdFastConnectionReceive Diff


```diff
--- AfdFastConnectionReceive
+++ AfdFastConnectionReceive
@@ -1,661 +1,698 @@
 
 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
 
 char AfdFastConnectionReceive(uint *param_1,longlong param_2,undefined8 param_3,undefined4 *param_4)
 
 {
   ushort *puVar1;
   uint *puVar2;
   uint uVar3;
   undefined2 *puVar4;
   longlong lVar5;
   undefined8 uVar6;
   undefined8 uVar7;
   undefined8 uVar8;
   longlong lVar9;
   longlong *plVar10;
   longlong lVar11;
   code *pcVar12;
   bool bVar13;
   char cVar14;
   char cVar15;
   ushort uVar16;
-  undefined8 *puVar17;
+  uint uVar17;
   ulonglong uVar18;
-  uint *puVar19;
+  undefined8 *puVar19;
   uint *puVar20;
-  longlong *plVar21;
-  undefined1 *puVar22;
+  uint *puVar21;
+  longlong *plVar22;
   undefined1 *puVar23;
-  ushort uVar24;
+  undefined1 *puVar24;
   ushort uVar25;
-  uint uVar26;
+  ushort uVar26;
   int iVar27;
-  longlong *plVar28;
-  ulonglong uVar29;
+  ulonglong uVar28;
+  longlong *plVar29;
   uint uVar30;
   undefined1 auStack_158 [72];
   char local_110 [16];
   undefined8 local_100;
   undefined8 uStack_f8;
   undefined8 local_f0;
   undefined8 local_e0;
   undefined8 uStack_d8;
   undefined8 local_c0;
   undefined8 local_a8;
   undefined8 local_a0;
   
   local_a8 = 0;
   local_100 = 0;
   uStack_f8 = 0;
   local_f0 = 0;
   local_e0 = 0;
   uStack_d8 = 0;
   cVar15 = '\0';
   local_a0 = 0;
   local_c0 = 0;
   *param_4 = 0;
   *(undefined8 *)(param_4 + 2) = 0;
-  puVar23 = auStack_158;
+  puVar24 = auStack_158;
   while( true ) {
-    *(undefined8 *)(puVar23 + -8) = 0x140031f76;
-    KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
+    *(undefined8 *)(puVar24 + -8) = 0x140030f86;
+    KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar24 + 0x58);
     if ((*(byte *)((longlong)param_1 + 7) & 0x10) != 0) break;
     if ((*param_1 & 0xafd2) != 0xafd2) {
 LAB_0:
-      *(undefined8 *)(puVar23 + -8) = 0x1400322ba;
-      KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
+      *(undefined8 *)(puVar24 + -8) = 0x1400312f6;
+      KeReleaseInStackQueuedSpinLock(puVar24 + 0x58);
       return cVar15;
     }
     puVar4 = *(undefined2 **)(param_1 + 0x30);
-    *(undefined2 **)(puVar23 + 0x88) = puVar4;
+    *(undefined2 **)(puVar24 + 0x88) = puVar4;
     if (puVar4 == (undefined2 *)0x0) goto LAB_0;
     if ((DAT_1 & 0x40) != 0) {
-      *(undefined8 *)(puVar23 + -8) = 0x140031fce;
+      *(undefined8 *)(puVar24 + -8) = 0x140030fde;
       WPP_SF_qq(0xc,&WPP_5d10adf6cd9b3dca63b04d5d43604693_Traceguids,param_1,puVar4);
     }
     if (((*(undefined2 **)(puVar4 + 0x1c) != puVar4 + 0x1c) || (puVar4[0x31] != 0)) ||
        ((*(uint *)(puVar4 + 2) & 0x110) != 0)) goto LAB_0;
     if (puVar4[0x30] == 0) {
       if (((cVar15 != '\0') || ((param_1[2] & 0x10) == 0)) || ((*(uint *)(param_2 + 0xc) & 2) != 0))
       {
         if ((param_1[2] & 0x10) == 0) {
           *(undefined1 *)((longlong)param_1 + 0x21) = 1;
         }
         goto LAB_0;
       }
       param_1[0x12] = param_1[0x12] & 0xfffffffe;
       if (*(longlong *)(param_1 + 0x5e) != 0) {
         puVar1 = (ushort *)(*(longlong *)(param_1 + 0x5e) + 100);
         *puVar1 = *puVar1 & 0xfffe;
       }
       if ((DAT_2 & 0x10) != 0) {
-        uVar26 = param_1[0x12];
-        *(undefined8 *)(puVar23 + -8) = 0x14003205b;
-        WPP_SF_qL(0xd,&WPP_5d10adf6cd9b3dca63b04d5d43604693_Traceguids,param_1,uVar26);
+        uVar17 = param_1[0x12];
+        *(undefined8 *)(puVar24 + -8) = 0x14003106b;
+        WPP_SF_qL(0xd,&WPP_5d10adf6cd9b3dca63b04d5d43604693_Traceguids,param_1,uVar17);
       }
       cVar15 = '\0';
-      *(undefined8 *)(puVar23 + 0xd0) = 0;
-      *(undefined8 *)(puVar23 + 0xd8) = 0;
-      *(undefined8 *)(puVar23 + 0xe0) = 0;
+      *(undefined8 *)(puVar24 + 0xd0) = 0;
+      *(undefined8 *)(puVar24 + 0xd8) = 0;
+      *(undefined8 *)(puVar24 + 0xe0) = 0;
       if (*(longlong *)(param_1 + 0x5e) == 0) goto LAB_3;
-      *(undefined8 *)(puVar23 + -8) = 0x14003208d;
+      *(undefined8 *)(puVar24 + -8) = 0x14003109d;
       cVar14 = ExAcquireRundownProtection(param_1 + 0x60);
       if (cVar14 == '\0') goto LAB_3;
-      puVar23[0x170] = 1;
+      puVar24[0x170] = 1;
       bVar13 = true;
       lVar5 = *(longlong *)(param_1 + 0x5e);
       uVar6 = *(undefined8 *)(lVar5 + 0x40);
-      uVar25 = *(ushort *)(lVar5 + 0x6a);
-      if ((uVar25 & 2) != 0) goto LAB_4;
-      uVar24 = uVar25 | 2;
-      *(ushort *)(lVar5 + 0x6a) = uVar24;
-      goto joined_r0x0001400320c9;
-    }
-    plVar28 = (longlong *)(puVar4 + 0x24);
-    plVar21 = (longlong *)*plVar28;
+      uVar26 = *(ushort *)(lVar5 + 0x6a);
+      if ((uVar26 & 2) != 0) goto LAB_4;
+      uVar25 = uVar26 | 2;
+      *(ushort *)(lVar5 + 0x6a) = uVar25;
+      goto joined_r0x0001400310d9;
+    }
+    plVar29 = (longlong *)(puVar4 + 0x24);
+    plVar22 = (longlong *)*plVar29;
     if ((param_1[1] & 0x10) == 0) {
-      uVar26 = *(uint *)(puVar23 + 0x170);
-    }
-    else if (((*(byte *)((longlong)plVar21 + 0x4c) & 4) != 0) ||
-            (uVar26 = *(uint *)(puVar23 + 0x170), uVar26 < *(uint *)(plVar21 + 8))) break;
-    lVar9 = *(longlong *)(puVar23 + 0x178);
+      uVar17 = *(uint *)(puVar24 + 0x170);
+    }
+    else if (((*(byte *)((longlong)plVar22 + 0x4c) & 4) != 0) ||
+            (uVar17 = *(uint *)(puVar24 + 0x170), uVar17 < *(uint *)(plVar22 + 8))) break;
+    lVar9 = *(longlong *)(puVar24 + 0x178);
     uVar30 = *(uint *)(lVar9 + 8);
-    *(uint *)(puVar23 + 0x70) = uVar30;
-    *(undefined1 **)(puVar23 + 0x80) = puVar23 + 0x78;
-    *(undefined1 **)(puVar23 + 0x78) = puVar23 + 0x78;
+    *(uint *)(puVar24 + 0x70) = uVar30;
+    *(undefined1 **)(puVar24 + 0x80) = puVar24 + 0x78;
+    *(undefined1 **)(puVar24 + 0x78) = puVar24 + 0x78;
     LOCK();
     plVar10 = (longlong *)(puVar4 + 0x18);
     lVar5 = *plVar10;
     *plVar10 = *plVar10 + 1;
     UNLOCK();
-    puVar22 = puVar23;
+    puVar23 = puVar24;
     if (lVar5 + 1 < 2) {
       pcVar12 = (code *)swi(0x29);
       (*pcVar12)(0xe);
-      puVar22 = puVar23 + 8;
+      puVar23 = puVar24 + 8;
     }
     if (g_AfdEtwTraceEnable != 0) {
-      *(undefined8 *)(puVar22 + 0x98) = _DAT_5;
-    }
-    *(undefined4 *)(puVar22 + 0x90) = 0;
-    uVar29 = (ulonglong)uVar26;
+      *(undefined8 *)(puVar23 + 0x98) = _DAT_5;
+    }
+    *(undefined4 *)(puVar23 + 0x90) = 0;
+    uVar28 = (ulonglong)uVar17;
     uVar18 = *(ulonglong *)(lVar9 + 8);
-    if (uVar18 < uVar29) {
-      while (uVar3 = *(uint *)(plVar21 + 8), (ulonglong)uVar3 <= uVar29 - uVar18) {
-        lVar5 = *plVar21;
-        plVar10 = (longlong *)plVar21[1];
-        if ((*(longlong **)(lVar5 + 8) != plVar21) || ((longlong *)*plVar10 != plVar21))
+    if (uVar18 < uVar28) {
+      while (uVar3 = *(uint *)(plVar22 + 8), (ulonglong)uVar3 <= uVar28 - uVar18) {
+        lVar5 = *plVar22;
+        plVar10 = (longlong *)plVar22[1];
+        if ((*(longlong **)(lVar5 + 8) != plVar22) || ((longlong *)*plVar10 != plVar22))
         goto LAB_6;
         *plVar10 = lVar5;
         *(longlong **)(lVar5 + 8) = plVar10;
-        plVar10 = *(longlong **)(puVar22 + 0x80);
-        if ((undefined1 *)*plVar10 != puVar22 + 0x78) goto LAB_6;
-        *plVar21 = (longlong)(puVar22 + 0x78);
-        plVar21[1] = (longlong)plVar10;
-        *plVar10 = (longlong)plVar21;
-        *(longlong **)(puVar22 + 0x80) = plVar21;
-        *(int *)(puVar4 + 0x2c) = *(int *)(puVar4 + 0x2c) - (int)plVar21[8];
+        plVar10 = *(longlong **)(puVar23 + 0x80);
+        if ((undefined1 *)*plVar10 != puVar23 + 0x78) goto LAB_6;
+        *plVar22 = (longlong)(puVar23 + 0x78);
+        plVar22[1] = (longlong)plVar10;
+        *plVar10 = (longlong)plVar22;
+        *(longlong **)(puVar23 + 0x80) = plVar22;
+        *(int *)(puVar4 + 0x2c) = *(int *)(puVar4 + 0x2c) - (int)plVar22[8];
         puVar4[0x30] = puVar4[0x30] + -1;
-        uVar18 = (ulonglong)*(uint *)(plVar21 + 8) + *(longlong *)(lVar9 + 8);
+        uVar18 = (ulonglong)*(uint *)(plVar22 + 8) + *(longlong *)(lVar9 + 8);
         *(ulonglong *)(lVar9 + 8) = uVar18;
-        if ((((param_1[1] & 0x10) != 0) || (plVar21 = (longlong *)*plVar28, plVar21 == plVar28)) ||
-           (uVar29 <= uVar18)) goto LAB_7;
-      }
-      iVar27 = uVar26 - (int)uVar18;
-      *(int *)(puVar22 + 0x90) = iVar27;
-      *(longlong **)(puVar22 + 0xb0) = plVar21;
-      *(uint *)(plVar21 + 8) = uVar3 - iVar27;
-      *(int *)(plVar21 + 2) = (int)plVar21[2] + iVar27;
+        if ((((param_1[1] & 0x10) != 0) || (plVar22 = (longlong *)*plVar29, plVar22 == plVar29)) ||
+           (uVar28 <= uVar18)) goto LAB_7;
+      }
+      iVar27 = uVar17 - (int)uVar18;
+      *(int *)(puVar23 + 0x90) = iVar27;
+      *(longlong **)(puVar23 + 0xb0) = plVar22;
+      *(uint *)(plVar22 + 8) = uVar3 - iVar27;
+      *(int *)(plVar22 + 2) = (int)plVar22[2] + iVar27;
       LOCK();
-      plVar21 = plVar21 + 3;
-      lVar5 = *plVar21;
-      *plVar21 = *plVar21 + 1;
+      plVar22 = plVar22 + 3;
+      lVar5 = *plVar22;
+      *plVar22 = *plVar22 + 1;
       UNLOCK();
       if (lVar5 + 1 < 2) {
         pcVar12 = (code *)swi(0x29);
         (*pcVar12)(0xe);
-        puVar22 = puVar22 + 8;
+        puVar23 = puVar23 + 8;
       }
       *(int *)(puVar4 + 0x2c) = *(int *)(puVar4 + 0x2c) - iVar27;
-      *(ulonglong *)(lVar9 + 8) = uVar29;
-      uVar26 = *(uint *)(puVar22 + 0x170);
+      *(ulonglong *)(lVar9 + 8) = uVar28;
+      uVar17 = *(uint *)(puVar23 + 0x170);
     }
 LAB_7:
     param_1[0x12] = param_1[0x12] & 0xfffffffe;
-    if ((longlong *)*plVar28 == plVar28) {
+    if ((longlong *)*plVar29 == plVar29) {
       if (*(longlong *)(param_1 + 0x5e) != 0) {
         puVar1 = (ushort *)(*(longlong *)(param_1 + 0x5e) + 100);
         *puVar1 = *puVar1 & 0xfffe;
       }
-      if ((((ulonglong)uVar26 <= *(ulonglong *)(lVar9 + 8)) || ((param_1[1] & 0x10) != 0)) ||
-         (uVar26 = param_1[0x62], puVar22[0x51] = 1, (uVar26 & 1) != 0)) {
-        puVar22[0x51] = 0;
+      if ((((ulonglong)uVar17 <= *(ulonglong *)(lVar9 + 8)) || ((param_1[1] & 0x10) != 0)) ||
+         (uVar17 = param_1[0x62], puVar23[0x52] = 1, (uVar17 & 1) != 0)) {
+        puVar23[0x52] = 0;
       }
       if ((param_1[2] & 0x10) == 0) {
         *(undefined1 *)((longlong)param_1 + 0x21) = 1;
       }
       if (((param_1[2] >> 8 & 1) != 0) && (AfdDoNotHoldNICBuffers == 0)) {
         if (*(int *)(puVar4 + 0x7e) != 0) {
           LOCK();
           _AfdTimerWheelCurrentConnectionCount = _AfdTimerWheelCurrentConnectionCount + -1;
           UNLOCK();
         }
         *(undefined4 *)(puVar4 + 0x7e) = 0;
       }
     }
     else {
-      *(undefined8 *)(puVar22 + -8) = 0x140032513;
+      *(undefined8 *)(puVar23 + -8) = 0x140031543;
       AfdIndicateEventSelectEvent((short *)param_1,1,0);
-      puVar22[0x51] = 0;
+      puVar23[0x52] = 0;
     }
     if (((*(int *)(puVar4 + 0x32) == 0) || (*(uint *)(puVar4 + 0x48) <= *(uint *)(puVar4 + 0x2c)))
        || (*(int *)(puVar4 + 0x44) != 0)) {
       cVar15 = '\0';
-      *(undefined8 *)(puVar22 + 0x100) = 0;
-      *(undefined8 *)(puVar22 + 0x108) = 0;
-      *(undefined8 *)(puVar22 + 0x110) = 0;
+      *(undefined8 *)(puVar23 + 0x100) = 0;
+      *(undefined8 *)(puVar23 + 0x108) = 0;
+      *(undefined8 *)(puVar23 + 0x110) = 0;
       if (*(longlong *)(param_1 + 0x5e) != 0) {
-        *(undefined8 *)(puVar22 + -8) = 0x1400327f5;
+        *(undefined8 *)(puVar23 + -8) = 0x14003184d;
         cVar14 = ExAcquireRundownProtection(param_1 + 0x60);
         if (cVar14 != '\0') {
-          puVar22[0x50] = 1;
+          puVar23[0x50] = 1;
           bVar13 = true;
           lVar5 = *(longlong *)(param_1 + 0x5e);
           uVar6 = *(undefined8 *)(lVar5 + 0x40);
           if ((*(ushort *)(lVar5 + 0x6a) & 2) == 0) {
             *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) | 2;
 LAB_8:
             do {
-              uVar25 = *(ushort *)(lVar5 + 0x6a);
-              if ((uVar25 & 1) != 0) {
+              uVar26 = *(ushort *)(lVar5 + 0x6a);
+              if ((uVar26 & 1) != 0) {
                 param_1[0x5e] = 0;
                 param_1[0x5f] = 0;
                 *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
-                *(undefined8 *)(puVar22 + -8) = 0x1400329ae;
-                KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
+                *(undefined8 *)(puVar23 + -8) = 0x140031a0e;
+                KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
                 bVar13 = false;
-                *(undefined8 *)(puVar22 + -8) = 0x1400329c1;
+                *(undefined8 *)(puVar23 + -8) = 0x140031a21;
                 AfdNotifyDestroyContext(uVar6,lVar5);
+                if ((Feature_447951161__private_featureState & 0x10) == 0) {
+                  *(undefined8 *)(puVar23 + -8) = 0x140031a35;
+                  uVar18 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+                  uVar17 = (uint)uVar18;
+                }
+                else {
+                  uVar17 = Feature_447951161__private_featureState & 1;
+                }
+                if (uVar17 != 0) {
+                  *(undefined8 *)(puVar23 + -8) = 0x140031a48;
+                  ExFreePoolWithTag(lVar5,0x4e646641);
+                }
                 goto LAB_9;
               }
-              *(undefined8 *)(puVar22 + -8) = 0x140032846;
+              *(undefined8 *)(puVar23 + -8) = 0x1400318a6;
               uVar16 = AfdNotifyComputeEvents(lVar5);
               *(undefined2 *)(lVar5 + 0x66) = *(undefined2 *)(lVar5 + 100);
-              uVar24 = *(ushort *)(lVar5 + 0x68);
-              if (uVar16 == uVar24) {
+              uVar25 = *(ushort *)(lVar5 + 0x68);
+              if (uVar16 == uVar25) {
                 if ((*(byte *)(lVar5 + 99) & 1) != 0) {
-                  uVar25 = uVar25 | 4;
+                  uVar26 = uVar26 | 4;
                 }
 LAB_10:
-                *(ushort *)(lVar5 + 0x6a) = uVar25 & 0xfffd;
+                *(ushort *)(lVar5 + 0x6a) = uVar26 & 0xfffd;
                 bVar13 = true;
                 goto LAB_9;
               }
-              if ((uVar16 & uVar24) != 0) goto LAB_10;
-              if (uVar24 == 0) {
+              if ((uVar16 & uVar25) != 0) goto LAB_10;
+              if (uVar25 == 0) {
                 *(ushort *)(lVar5 + 0x68) = uVar16;
-                *(undefined8 *)(puVar22 + -8) = 0x14003290d;
-                KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
-                *(undefined8 *)(puVar22 + -8) = 0x14003291c;
+                *(undefined8 *)(puVar23 + -8) = 0x14003196d;
+                KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
+                *(undefined8 *)(puVar23 + -8) = 0x14003197c;
                 ObfReferenceObject(uVar6);
-                puVar22[0x40] = AfdPriorityBoost;
-                puVar22[0x38] = 0;
-                *(longlong *)(puVar22 + 0x30) = lVar5;
-                puVar22[0x28] = 0;
-                *(ulonglong *)(puVar22 + 0x20) = (ulonglong)uVar16;
+                puVar23[0x40] = AfdPriorityBoost;
+                puVar23[0x38] = 0;
+                *(longlong *)(puVar23 + 0x30) = lVar5;
+                puVar23[0x28] = 0;
+                *(ulonglong *)(puVar23 + 0x20) = (ulonglong)uVar16;
                 uVar7 = *(undefined8 *)(lVar5 + 0x58);
                 uVar8 = *(undefined8 *)(lVar5 + 0x50);
-                *(undefined8 *)(puVar22 + -8) = 0x140032955;
+                *(undefined8 *)(puVar23 + -8) = 0x1400319b5;
                 IoSetIoCompletionEx3(uVar8,uVar7);
-                *(undefined8 *)(puVar22 + -8) = 0x14003296d;
-                KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar22 + 0x58);
+                *(undefined8 *)(puVar23 + -8) = 0x1400319cd;
+                KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
                 goto LAB_8;
               }
-              *(undefined8 *)(puVar22 + -8) = 0x140032882;
-              KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
+              *(undefined8 *)(puVar23 + -8) = 0x1400318e2;
+              KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
               uVar7 = *(undefined8 *)(lVar5 + 0x50);
-              *(undefined8 *)(puVar22 + -8) = 0x140032895;
+              *(undefined8 *)(puVar23 + -8) = 0x1400318f5;
               cVar15 = IoCancelMiniCompletionPacket(uVar7,lVar5);
               if (cVar15 != '\0') {
-                *(undefined8 *)(puVar22 + -8) = 0x1400328d9;
+                *(undefined8 *)(puVar23 + -8) = 0x140031939;
                 ObfDereferenceObject(uVar6);
-                *(undefined8 *)(puVar22 + -8) = 0x1400328ec;
-                KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar22 + 0x58);
+                *(undefined8 *)(puVar23 + -8) = 0x14003194c;
+                KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
                 *(undefined2 *)(lVar5 + 0x68) = 0;
                 goto LAB_8;
               }
               bVar13 = true;
-              *(undefined8 *)(puVar22 + -8) = 0x1400328b1;
-              KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar22 + 0x58);
+              *(undefined8 *)(puVar23 + -8) = 0x140031911;
+              KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
             } while (*(short *)(lVar5 + 0x68) == 0);
             *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
           }
 LAB_9:
           if (!bVar13) {
-            *(undefined8 *)(puVar22 + -8) = 0x1400329d9;
-            KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar22 + 0x58);
+            *(undefined8 *)(puVar23 + -8) = 0x140031a65;
+            KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
           }
-          uVar30 = *(uint *)(puVar22 + 0x70);
-          cVar15 = puVar22[0x50];
-        }
-      }
-      *(undefined8 *)(puVar22 + -8) = 0x1400329f2;
-      KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
+          uVar30 = *(uint *)(puVar23 + 0x70);
+          cVar15 = puVar23[0x50];
+        }
+      }
+      *(undefined8 *)(puVar23 + -8) = 0x140031a7e;
+      KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
       if (cVar15 != '\0') {
-        *(undefined8 *)(puVar22 + -8) = 0x140032a09;
+        *(undefined8 *)(puVar23 + -8) = 0x140031a95;
         ExReleaseRundownProtection(param_1 + 0x60);
       }
     }
     else {
-      *(undefined8 *)(puVar22 + -8) = 0x14003254d;
-      puVar17 = AfdBInitDrainBytesInTransport((longlong)puVar4,(longlong)param_1);
-      *(undefined8 **)(puVar22 + 0xa0) = puVar17;
+      *(undefined8 *)(puVar23 + -8) = 0x14003157d;
+      puVar19 = AfdBInitDrainBytesInTransport((longlong)puVar4,(longlong)param_1);
+      *(undefined8 **)(puVar23 + 0xa0) = puVar19;
       cVar15 = '\0';
-      *(undefined8 *)(puVar22 + 0xe8) = 0;
-      *(undefined8 *)(puVar22 + 0xf0) = 0;
-      *(undefined8 *)(puVar22 + 0xf8) = 0;
+      *(undefined8 *)(puVar23 + 0xe8) = 0;
+      *(undefined8 *)(puVar23 + 0xf0) = 0;
+      *(undefined8 *)(puVar23 + 0xf8) = 0;
       if (*(longlong *)(param_1 + 0x5e) != 0) {
-        *(undefined8 *)(puVar22 + -8) = 0x14003258a;
+        *(undefined8 *)(puVar23 + -8) = 0x1400315ba;
         cVar14 = ExAcquireRundownProtection(param_1 + 0x60);
         if (cVar14 != '\0') {
-          puVar22[0x50] = 1;
+          puVar23[0x50] = 1;
           cVar15 = '\x01';
           lVar5 = *(longlong *)(param_1 + 0x5e);
           uVar6 = *(undefined8 *)(lVar5 + 0x40);
-          uVar25 = *(ushort *)(lVar5 + 0x6a);
-          if ((uVar25 & 2) == 0) {
-            uVar24 = uVar25 | 2;
-            *(ushort *)(lVar5 + 0x6a) = uVar24;
-            if ((uVar25 & 1) == 0) {
-              puVar22[0x52] = 1;
+          uVar26 = *(ushort *)(lVar5 + 0x6a);
+          if ((uVar26 & 2) == 0) {
+            uVar25 = uVar26 | 2;
+            *(ushort *)(lVar5 + 0x6a) = uVar25;
+            if ((uVar26 & 1) == 0) {
+              puVar23[0x51] = 1;
               do {
-                *(undefined8 *)(puVar22 + -8) = 0x1400325d8;
+                *(undefined8 *)(puVar23 + -8) = 0x140031608;
                 uVar16 = AfdNotifyComputeEvents(lVar5);
                 *(undefined2 *)(lVar5 + 0x66) = *(undefined2 *)(lVar5 + 100);
-                uVar25 = *(ushort *)(lVar5 + 0x68);
-                if (uVar16 == uVar25) {
+                uVar26 = *(ushort *)(lVar5 + 0x68);
+                if (uVar16 == uVar26) {
                   if ((*(byte *)(lVar5 + 99) & 1) != 0) {
-                    uVar24 = uVar24 | 4;
+                    uVar25 = uVar25 | 4;
                   }
 LAB_11:
-                  *(ushort *)(lVar5 + 0x6a) = uVar24 & 0xfffd;
+                  *(ushort *)(lVar5 + 0x6a) = uVar25 & 0xfffd;
                   cVar15 = '\x01';
                   goto LAB_12;
                 }
-                if ((uVar16 & uVar25) != 0) goto LAB_11;
-                if (uVar25 == 0) {
+                if ((uVar16 & uVar26) != 0) goto LAB_11;
+                if (uVar26 == 0) {
                   *(ushort *)(lVar5 + 0x68) = uVar16;
-                  *(undefined8 *)(puVar22 + -8) = 0x140032698;
-                  KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
-                  *(undefined8 *)(puVar22 + -8) = 0x1400326a7;
+                  *(undefined8 *)(puVar23 + -8) = 0x1400316bf;
+                  KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
+                  *(undefined8 *)(puVar23 + -8) = 0x1400316ce;
                   ObfReferenceObject(uVar6);
-                  puVar22[0x40] = AfdPriorityBoost;
-                  puVar22[0x38] = 0;
-                  *(longlong *)(puVar22 + 0x30) = lVar5;
-                  puVar22[0x28] = 0;
-                  *(ulonglong *)(puVar22 + 0x20) = (ulonglong)uVar16;
+                  puVar23[0x40] = AfdPriorityBoost;
+                  puVar23[0x38] = 0;
+                  *(longlong *)(puVar23 + 0x30) = lVar5;
+                  puVar23[0x28] = 0;
+                  *(ulonglong *)(puVar23 + 0x20) = (ulonglong)uVar16;
                   uVar7 = *(undefined8 *)(lVar5 + 0x58);
                   uVar8 = *(undefined8 *)(lVar5 + 0x50);
-                  *(undefined8 *)(puVar22 + -8) = 0x1400326e0;
+                  *(undefined8 *)(puVar23 + -8) = 0x140031707;
                   IoSetIoCompletionEx3(uVar8,uVar7);
-                  *(undefined8 *)(puVar22 + -8) = 0x1400326f5;
-                  KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar22 + 0x58);
+                  *(undefined8 *)(puVar23 + -8) = 0x14003171c;
+                  KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
                 }
                 else {
-                  *(undefined8 *)(puVar22 + -8) = 0x140032611;
+                  *(undefined8 *)(puVar23 + -8) = 0x14003163d;
                   KeReleaseInStackQueuedSpinLock();
                   uVar7 = *(undefined8 *)(lVar5 + 0x50);
-                  *(undefined8 *)(puVar22 + -8) = 0x140032624;
+                  *(undefined8 *)(puVar23 + -8) = 0x140031650;
                   cVar15 = IoCancelMiniCompletionPacket(uVar7,lVar5);
                   if (cVar15 == '\0') {
-                    *(undefined8 *)(puVar22 + -8) = 0x14003263d;
-                    KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar22 + 0x58);
+                    *(undefined8 *)(puVar23 + -8) = 0x140031669;
+                    KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
                     if (*(short *)(lVar5 + 0x68) != 0) {
                       *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
-                      cVar15 = puVar22[0x52];
-                      goto LAB_12;
+                      goto LAB_13;
                     }
                   }
                   else {
-                    *(undefined8 *)(puVar22 + -8) = 0x14003266a;
+                    *(undefined8 *)(puVar23 + -8) = 0x140031691;
                     ObfDereferenceObject(uVar6);
-                    *(undefined8 *)(puVar22 + -8) = 0x14003267f;
-                    KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar22 + 0x58);
+                    *(undefined8 *)(puVar23 + -8) = 0x1400316a6;
+                    KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
                     *(undefined2 *)(lVar5 + 0x68) = 0;
                   }
                 }
-                uVar24 = *(ushort *)(lVar5 + 0x6a);
-              } while ((uVar24 & 1) == 0);
+                uVar25 = *(ushort *)(lVar5 + 0x6a);
+              } while ((uVar25 & 1) == 0);
             }
             param_1[0x5e] = 0;
             param_1[0x5f] = 0;
             *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
-            *(undefined8 *)(puVar22 + -8) = 0x140032726;
-            KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
-            *(undefined8 *)(puVar22 + -8) = 0x140032736;
+            *(undefined8 *)(puVar23 + -8) = 0x14003174d;
+            KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
+            puVar23[0x51] = 0;
+            *(undefined8 *)(puVar23 + -8) = 0x140031762;
             AfdNotifyDestroyContext(uVar6,lVar5);
-            cVar15 = '\0';
+            if ((Feature_447951161__private_featureState & 0x10) == 0) {
+              *(undefined8 *)(puVar23 + -8) = 0x140031790;
+              uVar18 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+              uVar17 = (uint)uVar18;
+            }
+            else {
+              uVar17 = Feature_447951161__private_featureState & 1;
+            }
+            if (uVar17 != 0) {
+              *(undefined8 *)(puVar23 + -8) = 0x1400317a3;
+              ExFreePoolWithTag(lVar5,0x4e646641);
+            }
+LAB_13:
+            cVar15 = puVar23[0x51];
           }
 LAB_12:
           if (cVar15 == '\0') {
-            *(undefined8 *)(puVar22 + -8) = 0x14003274c;
-            KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar22 + 0x58);
+            *(undefined8 *)(puVar23 + -8) = 0x1400317c1;
+            KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
           }
-          uVar30 = *(uint *)(puVar22 + 0x70);
-          puVar17 = *(undefined8 **)(puVar22 + 0xa0);
-          cVar15 = puVar22[0x50];
-        }
-      }
-      *(undefined8 *)(puVar22 + -8) = 0x14003276f;
-      KeReleaseInStackQueuedSpinLock(puVar22 + 0x58);
+          uVar30 = *(uint *)(puVar23 + 0x70);
+          puVar19 = *(undefined8 **)(puVar23 + 0xa0);
+          cVar15 = puVar23[0x50];
+        }
+      }
+      *(undefined8 *)(puVar23 + -8) = 0x1400317e4;
+      KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
       if (cVar15 != '\0') {
-        *(undefined8 *)(puVar22 + -8) = 0x140032786;
+        *(undefined8 *)(puVar23 + -8) = 0x1400317fb;
         ExReleaseRundownProtection(param_1 + 0x60);
       }
-      if (puVar17 != (undefined8 *)0x0) {
-        *(undefined8 *)(puVar22 + -8) = 0x14003279c;
-        AfdBPostDrainReceive(puVar17);
-      }
-    }
-    lVar5 = *(longlong *)(puVar22 + 0x98);
-    *(undefined8 *)(puVar22 + -8) = 0x140032a21;
-    puVar20 = param_1;
+      if (puVar19 != (undefined8 *)0x0) {
+        *(undefined8 *)(puVar23 + -8) = 0x140031811;
+        AfdBPostDrainReceive(puVar19);
+      }
+    }
+    lVar5 = *(longlong *)(puVar23 + 0x98);
+    *(undefined8 *)(puVar23 + -8) = 0x140031aad;
+    puVar21 = param_1;
     AFDETW_START_ACTIVITY_FASTIO(param_1,lVar5);
-    while (puVar19 = *(uint **)(puVar22 + 0x78), puVar19 != (uint *)(puVar22 + 0x78)) {
-      *(uint **)(puVar22 + 0xa0) = puVar19;
-      lVar9 = *(longlong *)puVar19;
-      if ((*(undefined1 **)(puVar19 + 2) != puVar22 + 0x78) || (*(uint **)(lVar9 + 8) != puVar19)) {
+    while (puVar20 = *(uint **)(puVar23 + 0x78), puVar20 != (uint *)(puVar23 + 0x78)) {
+      *(uint **)(puVar23 + 0xa0) = puVar20;
+      lVar9 = *(longlong *)puVar20;
+      if ((*(undefined1 **)(puVar20 + 2) != puVar23 + 0x78) || (*(uint **)(lVar9 + 8) != puVar20)) {
 LAB_6:
         pcVar12 = (code *)swi(0x29);
         (*pcVar12)(3);
         pcVar12 = (code *)swi(3);
         cVar15 = (*pcVar12)();
         return cVar15;
       }
-      *(longlong *)(puVar22 + 0x78) = lVar9;
-      puVar20 = (uint *)(puVar22 + 0x78);
-      *(uint **)(lVar9 + 8) = puVar20;
-      if (puVar19[0x10] != 0) {
-        plVar28 = *(longlong **)(puVar22 + 0x168);
-        uVar6 = *(undefined8 *)(*plVar28 + 8);
-        *(undefined8 *)(puVar22 + 0xb8) = uVar6;
-        lVar9 = *(longlong *)(puVar19 + 0xe);
-        *(undefined8 *)(puVar22 + -8) = 0x140032cdc;
+      *(longlong *)(puVar23 + 0x78) = lVar9;
+      puVar21 = (uint *)(puVar23 + 0x78);
+      *(uint **)(lVar9 + 8) = puVar21;
+      if (puVar20[0x10] != 0) {
+        plVar29 = *(longlong **)(puVar23 + 0x168);
+        uVar6 = *(undefined8 *)(*plVar29 + 8);
+        *(undefined8 *)(puVar23 + 0xb8) = uVar6;
+        lVar9 = *(longlong *)(puVar20 + 0xe);
+        *(undefined8 *)(puVar23 + -8) = 0x140031d6b;
         AFDETW_TRACEBUFFER(uVar6,lVar5,lVar9,0);
-        *(uint *)(puVar22 + 0x28) = puVar19[0x10];
-        *(uint *)(puVar22 + 0x20) = puVar19[4];
-        plVar21 = *(longlong **)(puVar19 + 0xe);
-        lVar9 = plVar28[1];
-        puVar20 = (uint *)*plVar28;
-        *(undefined8 *)(puVar22 + -8) = 0x140032cfd;
+        *(uint *)(puVar23 + 0x28) = puVar20[0x10];
+        *(uint *)(puVar23 + 0x20) = puVar20[4];
+        plVar22 = *(longlong **)(puVar20 + 0xe);
+        lVar9 = plVar29[1];
+        puVar21 = (uint *)*plVar29;
+        *(undefined8 *)(puVar23 + -8) = 0x140031d8c;
         AfdCopyMdlChainToBufferArray
-                  (puVar20,uVar30,(int)lVar9,plVar21,*(uint *)(puVar22 + 0x20),
-                   *(uint *)(puVar22 + 0x28));
-        uVar30 = uVar30 + puVar19[0x10];
+                  (puVar21,uVar30,(int)lVar9,plVar22,*(uint *)(puVar23 + 0x20),
+                   *(uint *)(puVar23 + 0x28));
+        uVar30 = uVar30 + puVar20[0x10];
       }
       LOCK();
-      puVar2 = puVar19 + 6;
+      puVar2 = puVar20 + 6;
       lVar9 = *(longlong *)puVar2;
       *(longlong *)puVar2 = *(longlong *)puVar2 + -1;
       UNLOCK();
       if (lVar9 < 2) {
         if (lVar9 == 1) {
           lVar9 = *(longlong *)(puVar4 + 0x10);
-          *(undefined8 *)(puVar22 + -8) = 0x140032e39;
-          AfdReturnBuffer((longlong)puVar19,lVar9);
-          puVar20 = puVar19;
+          *(undefined8 *)(puVar23 + -8) = 0x140031ec9;
+          AfdReturnBuffer((longlong)puVar20,lVar9);
+          puVar21 = puVar20;
         }
         else {
-          puVar20 = (uint *)0xe;
+          puVar21 = (uint *)0xe;
           pcVar12 = (code *)swi(0x29);
           (*pcVar12)();
-          puVar22 = puVar22 + 8;
-        }
-      }
-    }
-    lVar9 = *(longlong *)(puVar22 + 0xb0);
+          puVar23 = puVar23 + 8;
+        }
+      }
+    }
+    lVar9 = *(longlong *)(puVar23 + 0xb0);
     if (lVar9 == 0) {
-      puVar17 = *(undefined8 **)(puVar22 + 0x168);
+      puVar19 = *(undefined8 **)(puVar23 + 0x168);
     }
     else {
       lVar11 = *(longlong *)(lVar9 + 0x38);
-      *(undefined8 *)(puVar22 + -8) = 0x140032a54;
-      AFDETW_TRACEBUFFER(puVar20,lVar5,lVar11,0);
+      *(undefined8 *)(puVar23 + -8) = 0x140031ae3;
+      AFDETW_TRACEBUFFER(puVar21,lVar5,lVar11,0);
       iVar27 = *(int *)(lVar9 + 0x10);
-      *(int *)(puVar22 + 0x28) = *(int *)(puVar22 + 0x90);
-      *(int *)(puVar22 + 0x20) = iVar27 - *(int *)(puVar22 + 0x90);
-      plVar28 = *(longlong **)(lVar9 + 0x38);
-      puVar17 = *(undefined8 **)(puVar22 + 0x168);
-      iVar27 = *(int *)(puVar17 + 1);
-      puVar20 = (uint *)*puVar17;
-      *(undefined8 *)(puVar22 + -8) = 0x140032a85;
+      *(int *)(puVar23 + 0x28) = *(int *)(puVar23 + 0x90);
+      *(int *)(puVar23 + 0x20) = iVar27 - *(int *)(puVar23 + 0x90);
+      plVar29 = *(longlong **)(lVar9 + 0x38);
+      puVar19 = *(undefined8 **)(puVar23 + 0x168);
+      iVar27 = *(int *)(puVar19 + 1);
+      puVar21 = (uint *)*puVar19;
+      *(undefined8 *)(puVar23 + -8) = 0x140031b14;
       AfdCopyMdlChainToBufferArray
-                (puVar20,uVar30,iVar27,plVar28,*(uint *)(puVar22 + 0x20),*(uint *)(puVar22 + 0x28));
+                (puVar21,uVar30,iVar27,plVar29,*(uint *)(puVar23 + 0x20),*(uint *)(puVar23 + 0x28));
       LOCK();
-      plVar28 = (longlong *)(lVar9 + 0x18);
-      lVar5 = *plVar28;
-      *plVar28 = *plVar28 + -1;
+      plVar29 = (longlong *)(lVar9 + 0x18);
+      lVar5 = *plVar29;
+      *plVar29 = *plVar29 + -1;
       UNLOCK();
       if (lVar5 < 2) {
         if (lVar5 == 1) {
           lVar5 = *(longlong *)(puVar4 + 0x10);
-          *(undefined8 *)(puVar22 + -8) = 0x140032aaa;
+          *(undefined8 *)(puVar23 + -8) = 0x140031b39;
           AfdReturnBuffer(lVar9,lVar5);
         }
         else {
           pcVar12 = (code *)swi(0x29);
           (*pcVar12)();
-          puVar22 = puVar22 + 8;
-        }
-      }
-    }
-    cVar15 = puVar22[0x51];
+          puVar23 = puVar23 + 8;
+        }
+      }
+    }
+    cVar15 = puVar23[0x52];
     if ((cVar15 == '\0') || ((param_1[0x12] & 1) == 0)) {
       LOCK();
-      plVar28 = (longlong *)(puVar4 + 0x18);
-      lVar5 = *plVar28;
-      *plVar28 = *plVar28 + -1;
+      plVar29 = (longlong *)(puVar4 + 0x18);
+      lVar5 = *plVar29;
+      *plVar29 = *plVar29 + -1;
       UNLOCK();
       if (lVar5 < 2) {
         if (lVar5 == 1) {
-          *(undefined8 *)(puVar22 + -8) = 0x140032bd7;
+          *(undefined8 *)(puVar23 + -8) = 0x140031c66;
           AfdCloseConnection(puVar4);
         }
         else {
           pcVar12 = (code *)swi(0x29);
           (*pcVar12)();
-          puVar22 = puVar22 + 8;
-        }
-      }
-      puVar22[0x48] = 0;
-      uVar6 = *(undefined8 *)(puVar22 + 0x98);
-      *(undefined8 *)(puVar22 + 0x40) = uVar6;
-      *(undefined4 *)(puVar22 + 0x38) = 0;
-      *(undefined4 *)(puVar22 + 0x30) = *(undefined4 *)(puVar22 + 0x170);
-      uVar7 = *(undefined8 *)(puVar22 + 0xb8);
-      *(undefined8 *)(puVar22 + 0x28) = uVar7;
-      *(undefined4 *)(puVar22 + 0x20) = *(undefined4 *)(puVar17 + 1);
-      *(undefined8 *)(puVar22 + -8) = 0x140032c30;
-      AFDETW_TRACERECV(0,0x1013,(short *)param_1,1,*(undefined4 *)(puVar22 + 0x20),
-                       *(undefined8 *)(puVar22 + 0x28),*(undefined4 *)(puVar22 + 0x30),
-                       *(undefined4 *)(puVar22 + 0x38),*(short **)(puVar22 + 0x40),puVar22[0x48]);
-      puVar22[0x48] = 1;
-      *(undefined8 *)(puVar22 + 0x40) = uVar6;
-      *(undefined4 *)(puVar22 + 0x38) = **(undefined4 **)(puVar22 + 0x178);
-      *(undefined4 *)(puVar22 + 0x30) = (*(undefined4 **)(puVar22 + 0x178))[2];
-      *(undefined8 *)(puVar22 + 0x28) = uVar7;
-      *(undefined4 *)(puVar22 + 0x20) = *(undefined4 *)(puVar17 + 1);
-      *(undefined8 *)(puVar22 + -8) = 0x140032c73;
-      AFDETW_TRACERECV(1,0x1014,(short *)param_1,1,*(undefined4 *)(puVar22 + 0x20),
-                       *(undefined8 *)(puVar22 + 0x28),*(undefined4 *)(puVar22 + 0x30),
-                       *(undefined4 *)(puVar22 + 0x38),*(short **)(puVar22 + 0x40),puVar22[0x48]);
+          puVar23 = puVar23 + 8;
+        }
+      }
+      puVar23[0x48] = 0;
+      uVar6 = *(undefined8 *)(puVar23 + 0x98);
+      *(undefined8 *)(puVar23 + 0x40) = uVar6;
+      *(undefined4 *)(puVar23 + 0x38) = 0;
+      *(undefined4 *)(puVar23 + 0x30) = *(undefined4 *)(puVar23 + 0x170);
+      uVar7 = *(undefined8 *)(puVar23 + 0xb8);
+      *(undefined8 *)(puVar23 + 0x28) = uVar7;
+      *(undefined4 *)(puVar23 + 0x20) = *(undefined4 *)(puVar19 + 1);
+      *(undefined8 *)(puVar23 + -8) = 0x140031cbf;
+      AFDETW_TRACERECV(0,0x1013,(short *)param_1,1,*(undefined4 *)(puVar23 + 0x20),
+                       *(undefined8 *)(puVar23 + 0x28),*(undefined4 *)(puVar23 + 0x30),
+                       *(undefined4 *)(puVar23 + 0x38),*(short **)(puVar23 + 0x40),puVar23[0x48]);
+      puVar23[0x48] = 1;
+      *(undefined8 *)(puVar23 + 0x40) = uVar6;
+      *(undefined4 *)(puVar23 + 0x38) = **(undefined4 **)(puVar23 + 0x178);
+      *(undefined4 *)(puVar23 + 0x30) = (*(undefined4 **)(puVar23 + 0x178))[2];
+      *(undefined8 *)(puVar23 + 0x28) = uVar7;
+      *(undefined4 *)(puVar23 + 0x20) = *(undefined4 *)(puVar19 + 1);
+      *(undefined8 *)(puVar23 + -8) = 0x140031d02;
+      AFDETW_TRACERECV(1,0x1014,(short *)param_1,1,*(undefined4 *)(puVar23 + 0x20),
+                       *(undefined8 *)(puVar23 + 0x28),*(undefined4 *)(puVar23 + 0x30),
+                       *(undefined4 *)(puVar23 + 0x38),*(short **)(puVar23 + 0x40),puVar23[0x48]);
       return '\x01';
     }
     LOCK();
-    plVar28 = (longlong *)(puVar4 + 0x18);
-    lVar5 = *plVar28;
-    *plVar28 = *plVar28 + -1;
+    plVar29 = (longlong *)(puVar4 + 0x18);
+    lVar5 = *plVar29;
+    *plVar29 = *plVar29 + -1;
     UNLOCK();
-    param_2 = *(longlong *)(puVar22 + 0x168);
-    puVar23 = puVar22;
+    param_2 = *(longlong *)(puVar23 + 0x168);
+    puVar24 = puVar23;
     if (lVar5 < 2) {
       if (lVar5 == 1) {
-        *(undefined8 *)(puVar22 + -8) = 0x140032ba5;
+        *(undefined8 *)(puVar23 + -8) = 0x140031c34;
         AfdCloseConnection(puVar4);
       }
       else {
         pcVar12 = (code *)swi(0x29);
         (*pcVar12)(0xe);
-        puVar23 = puVar22 + 8;
-        param_2 = *(longlong *)(puVar22 + 0x170);
+        puVar24 = puVar23 + 8;
+        param_2 = *(longlong *)(puVar23 + 0x170);
       }
     }
   }
-  *(undefined8 *)(puVar23 + -8) = 0x1400322f0;
-  KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
+  *(undefined8 *)(puVar24 + -8) = 0x14003132c;
+  KeReleaseInStackQueuedSpinLock(puVar24 + 0x58);
   return '\0';
-joined_r0x0001400320c9:
-  if ((uVar25 & 1) != 0) {
+joined_r0x0001400310d9:
+  if ((uVar26 & 1) != 0) {
     param_1[0x5e] = 0;
     param_1[0x5f] = 0;
     *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
-    *(undefined8 *)(puVar23 + -8) = 0x14003221c;
-    KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
+    *(undefined8 *)(puVar24 + -8) = 0x14003122c;
+    KeReleaseInStackQueuedSpinLock(puVar24 + 0x58);
     bVar13 = false;
-    *(undefined8 *)(puVar23 + -8) = 0x14003222f;
+    *(undefined8 *)(puVar24 + -8) = 0x14003123f;
     AfdNotifyDestroyContext(uVar6,lVar5);
+    if ((Feature_447951161__private_featureState & 0x10) == 0) {
+      *(undefined8 *)(puVar24 + -8) = 0x14003126b;
+      uVar18 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+      uVar17 = (uint)uVar18;
+    }
+    else {
+      uVar17 = Feature_447951161__private_featureState & 1;
+    }
+    if (uVar17 != 0) {
+      *(undefined8 *)(puVar24 + -8) = 0x14003127e;
+      ExFreePoolWithTag(lVar5,0x4e646641);
+    }
 LAB_4:
     if (!bVar13) {
-      *(undefined8 *)(puVar23 + -8) = 0x140032244;
-      KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
-    }
-    cVar15 = puVar23[0x170];
+      *(undefined8 *)(puVar24 + -8) = 0x140031298;
+      KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar24 + 0x58);
+    }
+    cVar15 = puVar24[0x170];
 LAB_3:
-    *(undefined8 *)(puVar23 + -8) = 0x14003225d;
-    KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
+    *(undefined8 *)(puVar24 + -8) = 0x1400312b1;
+    KeReleaseInStackQueuedSpinLock(puVar24 + 0x58);
     if (cVar15 != '\0') {
-      *(undefined8 *)(puVar23 + -8) = 0x140032274;
+      *(undefined8 *)(puVar24 + -8) = 0x1400312c8;
       ExReleaseRundownProtection(param_1 + 0x60);
     }
-    **(undefined4 **)(puVar23 + 0x178) = 0xc00000a3;
+    **(undefined4 **)(puVar24 + 0x178) = 0xc00000a3;
     return '\x01';
   }
-  *(undefined8 *)(puVar23 + -8) = 0x1400320d8;
+  *(undefined8 *)(puVar24 + -8) = 0x1400310e8;
   uVar16 = AfdNotifyComputeEvents(lVar5);
   *(undefined2 *)(lVar5 + 0x66) = *(undefined2 *)(lVar5 + 100);
-  uVar25 = *(ushort *)(lVar5 + 0x68);
-  if (uVar16 == uVar25) {
+  uVar26 = *(ushort *)(lVar5 + 0x68);
+  if (uVar16 == uVar26) {
     if ((*(byte *)(lVar5 + 99) & 1) != 0) {
-      uVar24 = uVar24 | 4;
-    }
-LAB_13:
-    *(ushort *)(lVar5 + 0x6a) = uVar24 & 0xfffd;
+      uVar25 = uVar25 | 4;
+    }
+LAB_14:
+    *(ushort *)(lVar5 + 0x6a) = uVar25 & 0xfffd;
     goto LAB_4;
   }
-  if ((uVar16 & uVar25) != 0) goto LAB_13;
-  if (uVar25 == 0) {
+  if ((uVar16 & uVar26) != 0) goto LAB_14;
+  if (uVar26 == 0) {
     *(ushort *)(lVar5 + 0x68) = uVar16;
-    *(undefined8 *)(puVar23 + -8) = 0x14003218f;
-    KeReleaseInStackQueuedSpinLock(puVar23 + 0x58);
-    *(undefined8 *)(puVar23 + -8) = 0x14003219e;
+    *(undefined8 *)(puVar24 + -8) = 0x14003119f;
+    KeReleaseInStackQueuedSpinLock(puVar24 + 0x58);
+    *(undefined8 *)(puVar24 + -8) = 0x1400311ae;
     ObfReferenceObject(uVar6);
-    puVar23[0x40] = AfdPriorityBoost;
-    puVar23[0x38] = 0;
-    *(longlong *)(puVar23 + 0x30) = lVar5;
-    puVar23[0x28] = 0;
-    *(ulonglong *)(puVar23 + 0x20) = (ulonglong)uVar16;
+    puVar24[0x40] = AfdPriorityBoost;
+    puVar24[0x38] = 0;
+    *(longlong *)(puVar24 + 0x30) = lVar5;
+    puVar24[0x28] = 0;
+    *(ulonglong *)(puVar24 + 0x20) = (ulonglong)uVar16;
     uVar7 = *(undefined8 *)(lVar5 + 0x58);
     uVar8 = *(undefined8 *)(lVar5 + 0x50);
-    *(undefined8 *)(puVar23 + -8) = 0x1400321d7;
+    *(undefined8 *)(puVar24 + -8) = 0x1400311e7;
     IoSetIoCompletionEx3(uVar8,uVar7,0,0);
-    *(undefined8 *)(puVar23 + -8) = 0x1400321ec;
-    KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
+    *(undefined8 *)(puVar24 + -8) = 0x1400311fc;
+    KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar24 + 0x58);
   }
   else {
-    *(undefined8 *)(puVar23 + -8) = 0x14003210d;
+    *(undefined8 *)(puVar24 + -8) = 0x14003111d;
     KeReleaseInStackQueuedSpinLock();
     uVar7 = *(undefined8 *)(lVar5 + 0x50);
-    *(undefined8 *)(puVar23 + -8) = 0x140032120;
+    *(undefined8 *)(puVar24 + -8) = 0x140031130;
     cVar15 = IoCancelMiniCompletionPacket(uVar7,lVar5);
     if (cVar15 == '\0') {
-      *(undefined8 *)(puVar23 + -8) = 0x140032139;
-      KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
+      *(undefined8 *)(puVar24 + -8) = 0x140031149;
+      KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar24 + 0x58);
       if (*(short *)(lVar5 + 0x68) != 0) {
         *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
         goto LAB_4;
       }
     }
     else {
-      *(undefined8 *)(puVar23 + -8) = 0x140032161;
+      *(undefined8 *)(puVar24 + -8) = 0x140031171;
       ObfDereferenceObject(uVar6);
-      *(undefined8 *)(puVar23 + -8) = 0x140032176;
-      KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar23 + 0x58);
+      *(undefined8 *)(puVar24 + -8) = 0x140031186;
+      KeAcquireInStackQueuedSpinLock(param_1 + 0xe,puVar24 + 0x58);
       *(undefined2 *)(lVar5 + 0x68) = 0;
     }
   }
-  uVar24 = *(ushort *)(lVar5 + 0x6a);
-  uVar25 = uVar24;
-  goto joined_r0x0001400320c9;
+  uVar25 = *(ushort *)(lVar5 + 0x6a);
+  uVar26 = uVar25;
+  goto joined_r0x0001400310d9;
 }
 

```


## AfdQueryHandles

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,sig,address,called|
|ratio|0.63|
|i_ratio|0.56|
|m_ratio|0.93|
|b_ratio|0.8|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdQueryHandles|AfdQueryHandles|
|fullname|AfdQueryHandles|AfdQueryHandles|
|refcount|3|3|
|`length`|952|834|
|`called`|AfdCloseConnection<br>AfdGetConnectionReferenceFromEndpoint<br>AfdPreventUnbind<br>AfdReallowUnbind<br>Feature_3261636923__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::ObCloseHandle<br>NTOSKRNL.EXE::ObOpenObjectByPointer<br>RtlpCopyDeviceMemory|AfdCloseConnection<br>AfdGetConnectionReferenceFromEndpoint<br>AfdPreventUnbind<br>AfdReallowUnbind<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::IoIs32bitProcess<br>NTOSKRNL.EXE::ObCloseHandle<br>NTOSKRNL.EXE::ObOpenObjectByPointer<br>RtlpCopyDeviceMemory|
|calling|||
|paramcount|8|8|
|`address`|14003a350|140039510|
|`sig`|int __fastcall AfdQueryHandles(longlong param_1, undefined8 param_2, byte param_3, uint * param_4, uint param_5, undefined8 param_6, uint param_7, undefined8 * param_8)|int __fastcall AfdQueryHandles(longlong param_1, undefined8 param_2, char param_3, uint * param_4, uint param_5, undefined8 param_6, uint param_7, undefined8 * param_8)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdQueryHandles Called Diff


```diff
--- AfdQueryHandles called
+++ AfdQueryHandles called
@@ -5 +4,0 @@
-Feature_3261636923__private_IsEnabledDeviceUsageNoInline
```


### AfdQueryHandles Diff


```diff
--- AfdQueryHandles
+++ AfdQueryHandles
@@ -1,182 +1,160 @@
 
-int AfdQueryHandles(longlong param_1,undefined8 param_2,byte param_3,uint *param_4,uint param_5,
+int AfdQueryHandles(longlong param_1,undefined8 param_2,char param_3,uint *param_4,uint param_5,
                    undefined8 param_6,uint param_7,undefined8 *param_8)
 
 {
   longlong *plVar1;
   longlong lVar2;
   ushort *puVar3;
   undefined4 *puVar4;
   undefined8 *puVar5;
   code *pcVar6;
   undefined8 uVar7;
   char cVar8;
   bool bVar9;
-  uint uVar10;
-  int iVar11;
-  undefined2 *puVar12;
-  ulonglong uVar13;
+  int iVar10;
+  undefined2 *puVar11;
   void *_Dst;
-  undefined1 *puVar14;
-  undefined1 *puVar15;
-  bool bVar16;
+  undefined1 *puVar12;
+  undefined1 *puVar13;
+  bool bVar14;
   undefined1 auStack_78 [8];
   undefined1 auStack_70 [24];
   undefined8 local_58;
-  byte local_50;
+  char local_50;
   undefined8 *local_48;
   int local_38;
   uint local_34;
   undefined8 local_30;
   undefined8 auStack_28 [2];
   
-  puVar15 = auStack_78;
+  puVar13 = auStack_78;
   bVar9 = false;
   *param_8 = 0;
   puVar3 = *(ushort **)(param_1 + 0x18);
   cVar8 = IoIs32bitProcess(0);
   if (3 < param_5) {
     if (cVar8 == '\0') {
-      bVar16 = param_7 < 0x10;
+      bVar14 = param_7 < 0x10;
     }
     else {
-      bVar16 = param_7 < 8;
+      bVar14 = param_7 < 8;
     }
-    if (!bVar16) {
+    if (!bVar14) {
       local_38 = 0;
-      if ((param_3 != 0) && (((ulonglong)param_4 & 3) != 0)) {
+      if ((param_3 != '\0') && (((ulonglong)param_4 & 3) != 0)) {
                     /* WARNING: Subroutine does not return */
         ExRaiseDatatypeMisalignment();
       }
       local_34 = *param_4;
       if (((local_34 & 0xfffffffc) == 0) && (local_34 != 0)) {
         if (((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) && ((*(uint *)(puVar3 + 4) >> 9 & 1) == 0)) {
           local_30 = 0;
           auStack_28[0] = 0;
           if ((((*puVar3 != 0xafd1) && (*puVar3 != 0x1afd)) &&
               (((*(byte *)((longlong)puVar3 + 5) & 0x10) == 0 || ((puVar3[3] & 1) == 0)))) &&
              (((*(uint *)(puVar3 + 4) & 1) == 0 && ((char)puVar3[1] != '\x04')))) {
             bVar9 = AfdPreventUnbind((longlong)puVar3);
             if (!bVar9) {
               return -0x3ffffe7c;
             }
             bVar9 = true;
           }
           if ((((local_34 & 1) != 0) && ((byte)((char)puVar3[1] - 3U) < 2)) &&
              (*(longlong *)(puVar3 + 0xc) != 0)) {
-            if ((Feature_3261636923__private_featureState & 0x10) == 0) {
-              uVar13 = Feature_3261636923__private_IsEnabledDeviceUsageNoInline();
-              uVar10 = (uint)uVar13;
-            }
-            else {
-              uVar10 = Feature_3261636923__private_featureState & 1;
-            }
-            local_50 = param_3;
-            if (uVar10 == 0) {
-              local_50 = -((*(uint *)(puVar3 + 8) & 0x10000) != 0) & param_3;
-            }
             local_48 = &local_30;
             local_58 = *(undefined8 *)IoFileObjectType_exref;
-            local_38 = ObOpenObjectByPointer(*(undefined8 *)(puVar3 + 0xc),0x40,0,0x2000000);
+            local_50 = param_3;
+            local_38 = ObOpenObjectByPointer(*(longlong *)(puVar3 + 0xc),0x40,0,0x2000000);
           }
           if (bVar9) {
             AfdReallowUnbind((longlong)puVar3);
           }
           if (local_38 < 0) {
             return local_38;
           }
-          puVar15 = auStack_78;
-          if ((((local_34 & 2) != 0) && (puVar15 = auStack_78, (*puVar3 & 0xafd2) == 0xafd2)) &&
-             ((puVar15 = auStack_78, (char)puVar3[1] == '\x04' &&
-              (puVar12 = (undefined2 *)AfdGetConnectionReferenceFromEndpoint(puVar3),
-              puVar15 = auStack_78, puVar12 != (undefined2 *)0x0)))) {
-            if ((Feature_3261636923__private_featureState & 0x10) == 0) {
-              uVar13 = Feature_3261636923__private_IsEnabledDeviceUsageNoInline();
-              uVar10 = (uint)uVar13;
-            }
-            else {
-              uVar10 = Feature_3261636923__private_featureState & 1;
-            }
-            local_50 = param_3;
-            if (uVar10 == 0) {
-              local_50 = -((*(uint *)(puVar3 + 8) & 0x10000) != 0) & param_3;
-            }
+          puVar13 = auStack_78;
+          if ((((local_34 & 2) != 0) && (puVar13 = auStack_78, (*puVar3 & 0xafd2) == 0xafd2)) &&
+             ((puVar13 = auStack_78, (char)puVar3[1] == '\x04' &&
+              (puVar11 = (undefined2 *)AfdGetConnectionReferenceFromEndpoint(puVar3),
+              puVar13 = auStack_78, puVar11 != (undefined2 *)0x0)))) {
             local_48 = auStack_28;
             local_58 = *(undefined8 *)IoFileObjectType_exref;
-            iVar11 = ObOpenObjectByPointer(*(undefined8 *)(puVar12 + 8),0x40,0,0x2000000);
+            local_50 = param_3;
+            iVar10 = ObOpenObjectByPointer(*(undefined8 *)(puVar11 + 8),0x40,0,0x2000000);
             LOCK();
-            plVar1 = (longlong *)(puVar12 + 0x18);
+            plVar1 = (longlong *)(puVar11 + 0x18);
             lVar2 = *plVar1;
             *plVar1 = *plVar1 + -1;
             UNLOCK();
-            puVar15 = auStack_78;
-            local_38 = iVar11;
+            puVar13 = auStack_78;
+            local_38 = iVar10;
             if (lVar2 < 2) {
               if (lVar2 == 1) {
-                AfdCloseConnection(puVar12);
-                puVar15 = auStack_78;
+                AfdCloseConnection(puVar11);
+                puVar13 = auStack_78;
               }
               else {
                 pcVar6 = (code *)swi(0x29);
                 (*pcVar6)(0xe);
-                puVar15 = auStack_70;
+                puVar13 = auStack_70;
               }
             }
-            if (iVar11 < 0) {
-              if (*(longlong *)(puVar15 + 0x48) == 0) {
-                return iVar11;
+            if (iVar10 < 0) {
+              if (*(longlong *)(puVar13 + 0x48) == 0) {
+                return iVar10;
               }
-              *(undefined8 *)(puVar15 + -8) = 0x14003a618;
-              ObCloseHandle(*(longlong *)(puVar15 + 0x48),param_3);
-              return iVar11;
+              *(undefined8 *)(puVar13 + -8) = 0x140039762;
+              ObCloseHandle(*(longlong *)(puVar13 + 0x48),param_3);
+              return iVar10;
             }
           }
         }
         else {
           local_30 = 0xffffffffffffffff;
           auStack_28[0] = 0xffffffffffffffff;
         }
         if (cVar8 == '\0') {
-          if (param_3 == 0) {
-            uVar7 = *(undefined8 *)(puVar15 + 0x50);
-            puVar5 = *(undefined8 **)(puVar15 + 0xa8);
-            *puVar5 = *(undefined8 *)(puVar15 + 0x48);
+          if (param_3 == '\0') {
+            uVar7 = *(undefined8 *)(puVar13 + 0x50);
+            puVar5 = *(undefined8 **)(puVar13 + 0xa8);
+            *puVar5 = *(undefined8 *)(puVar13 + 0x48);
             puVar5[1] = uVar7;
           }
           else {
-            _Dst = *(void **)(puVar15 + 0xa8);
-            if (*(void **)MmUserProbeAddress_exref <= *(void **)(puVar15 + 0xa8)) {
+            _Dst = *(void **)(puVar13 + 0xa8);
+            if (*(void **)MmUserProbeAddress_exref <= *(void **)(puVar13 + 0xa8)) {
               _Dst = *(void **)MmUserProbeAddress_exref;
             }
-            *(undefined8 *)(puVar15 + -8) = 0x14003a6c3;
-            RtlpCopyDeviceMemory(_Dst,puVar15 + 0x48,0x10);
+            *(undefined8 *)(puVar13 + -8) = 0x14003980d;
+            RtlpCopyDeviceMemory(_Dst,puVar13 + 0x48,0x10);
           }
           *param_8 = 0x10;
         }
         else {
-          if (param_3 != 0) {
-            if (((ulonglong)*(undefined1 **)(puVar15 + 0xa8) & 3) != 0) {
+          if (param_3 != '\0') {
+            if (((ulonglong)*(undefined1 **)(puVar13 + 0xa8) & 3) != 0) {
                     /* WARNING: Subroutine does not return */
-              *(undefined8 *)(puVar15 + -8) = 0x14003a650;
+              *(undefined8 *)(puVar13 + -8) = 0x14003979a;
               ExRaiseDatatypeMisalignment();
             }
-            puVar14 = *(undefined1 **)(puVar15 + 0xa8);
-            if (*(undefined1 **)MmUserProbeAddress_exref <= *(undefined1 **)(puVar15 + 0xa8)) {
-              puVar14 = *(undefined1 **)MmUserProbeAddress_exref;
+            puVar12 = *(undefined1 **)(puVar13 + 0xa8);
+            if (*(undefined1 **)MmUserProbeAddress_exref <= *(undefined1 **)(puVar13 + 0xa8)) {
+              puVar12 = *(undefined1 **)MmUserProbeAddress_exref;
             }
-            *puVar14 = *puVar14;
-            puVar14[7] = puVar14[7];
+            *puVar12 = *puVar12;
+            puVar12[7] = puVar12[7];
           }
-          puVar4 = *(undefined4 **)(puVar15 + 0xa8);
-          *puVar4 = (int)*(undefined8 *)(puVar15 + 0x48);
-          puVar4[1] = (int)*(undefined8 *)(puVar15 + 0x50);
+          puVar4 = *(undefined4 **)(puVar13 + 0xa8);
+          *puVar4 = (int)*(undefined8 *)(puVar13 + 0x48);
+          puVar4[1] = (int)*(undefined8 *)(puVar13 + 0x50);
           *param_8 = 8;
         }
         return 0;
       }
       return -0x3ffffff3;
     }
   }
   return -0x3fffffdd;
 }
 

```


## AfdBind

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.1|
|i_ratio|0.61|
|m_ratio|0.98|
|b_ratio|0.95|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdBind|AfdBind|
|fullname|AfdBind|AfdBind|
|refcount|3|3|
|`length`|2587|2730|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACEBIND<br>AfdAddConnectedReference<br>AfdCreateConnection<br>AfdGetTransportInfo<br>AfdIsAddressInUse<br>AfdNotifySockEventsChangedUnderLock<br>AfdPreventUnbind<br>AfdReallowUnbind<br>AfdTLBindSecurity<br>AfdTdiCreateAO<br>AfdTdiSetEventHandlers</summary>Feature_1384345915__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExEnterCriticalRegionAndAcquireResourceExclusive<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::ExReleaseResourceAndLeaveCriticalRegion<br>NTOSKRNL.EXE::IoAllocateMdl<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmMapLockedPagesSpecifyCache<br>NTOSKRNL.EXE::MmProbeAndLockPages<br>NTOSKRNL.EXE::MmUnlockPages<br>NTOSKRNL.EXE::ObDereferenceSecurityDescriptor<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ZwClose<br>SOCKADDR_SIZE<br>WPP_SF_qL<br>WPP_SF_qqq<br>memcpy</details>|<details><summary>Expand for full list:<br>AFDETW_TRACEBIND<br>AfdAddConnectedReference<br>AfdCreateConnection<br>AfdGetTransportInfo<br>AfdIsAddressInUse<br>AfdNotifySockEventsChangedUnderLock<br>AfdPreventUnbind<br>AfdReallowUnbind<br>AfdTLBindSecurity<br>AfdTdiCreateAO<br>AfdTdiSetEventHandlers</summary>Feature_1384345915__private_IsEnabledDeviceUsageNoInline<br>Feature_2829529401__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAllocatePool2<br>NTOSKRNL.EXE::ExEnterCriticalRegionAndAcquireResourceExclusive<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExRaiseDatatypeMisalignment<br>NTOSKRNL.EXE::ExReleaseResourceAndLeaveCriticalRegion<br>NTOSKRNL.EXE::IoAllocateMdl<br>NTOSKRNL.EXE::IoFreeMdl<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::IofCompleteRequest<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::MmMapLockedPagesSpecifyCache<br>NTOSKRNL.EXE::MmProbeAndLockPages<br>NTOSKRNL.EXE::MmUnlockPages<br>NTOSKRNL.EXE::ObDereferenceSecurityDescriptor<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::RtlLogUnexpectedCodepath<br>NTOSKRNL.EXE::ZwClose<br>SOCKADDR_SIZE<br>WPP_SF_qL<br>WPP_SF_qqq<br>__security_check_cookie<br>memcpy</details>|
|calling|||
|paramcount|2|2|
|`address`|14002acb0|140029c70|
|sig|int __fastcall AfdBind(longlong param_1, longlong param_2)|int __fastcall AfdBind(longlong param_1, longlong param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdBind Called Diff


```diff
--- AfdBind called
+++ AfdBind called
@@ -12,0 +13 @@
+Feature_2829529401__private_IsEnabledDeviceUsageNoInline
@@ -28,0 +30 @@
+NTOSKRNL.EXE::RtlLogUnexpectedCodepath
@@ -32,0 +35 @@
+__security_check_cookie
```


### AfdBind Diff


```diff
--- AfdBind
+++ AfdBind
@@ -1,431 +1,464 @@
+
+/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 
 int AfdBind(longlong param_1,longlong param_2)
 
 {
   byte *pbVar1;
   uint uVar2;
   ushort *puVar3;
   undefined8 uVar4;
   uint *puVar5;
   code *pcVar6;
-  byte bVar7;
-  char cVar8;
-  bool bVar9;
+  char cVar7;
+  bool bVar8;
+  uint uVar9;
   undefined4 uVar10;
   uint uVar11;
   ushort *puVar12;
   longlong lVar13;
   ulonglong uVar14;
-  uint uVar15;
-  undefined1 *puVar16;
-  undefined *puVar17;
+  byte bVar15;
+  uint uVar16;
+  undefined1 *puVar17;
   undefined *puVar18;
-  int iVar19;
-  undefined1 auStackY_f8 [8];
-  undefined1 auStackY_f0 [24];
-  ushort *puVar20;
-  int local_a8;
-  undefined8 local_88;
-  undefined8 local_80;
-  longlong local_78;
-  ushort *local_70;
+  undefined *puVar19;
+  int iVar20;
+  undefined1 auStackY_118 [8];
+  undefined1 auStackY_110 [24];
+  ushort *puVar21;
+  int local_c8;
+  undefined8 local_98;
+  undefined8 local_90;
+  longlong local_88;
+  longlong local_80;
+  ushort *local_78;
+  undefined8 local_70;
   undefined8 local_68;
-  undefined8 local_60;
-  undefined8 uStack_58;
-  undefined8 local_50;
+  undefined8 uStack_60;
+  undefined8 local_58;
+  undefined4 local_48;
+  undefined8 local_44;
+  ulonglong local_38;
   
-  puVar16 = auStackY_f8;
-  local_80 = 0;
+  puVar17 = auStackY_118;
+  local_38 = __security_cookie ^ (ulonglong)auStackY_118;
+  local_90 = 0;
   puVar3 = *(ushort **)(*(longlong *)(param_2 + 0x30) + 0x18);
   *(undefined8 *)(param_1 + 0x38) = 0;
-  local_70 = puVar3;
+  local_88 = param_1;
+  local_78 = puVar3;
   if ((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) {
     if (((*(uint *)(param_2 + 0x10) < 8) || (*(uint *)(param_2 + 8) < 0xc)) ||
        (uVar11 = *(uint *)(param_2 + 0x10) - 4, *(uint *)(param_2 + 8) - 4 < uVar11)) {
       uVar10 = 7000;
-    }
-    else {
 LAB_0:
-      uVar14 = (ulonglong)uVar11;
-      puVar12 = puVar3 + 0xb4;
-      LOCK();
-      if (*(int *)puVar12 == 0) {
-        puVar12[0] = 3;
-        puVar12[1] = 0;
-      }
-      UNLOCK();
-      if (*(int *)puVar12 == 0) {
-        uVar15 = 0;
-        if ((byte)((char)puVar3[1] - 1U) < 2) {
-          if (((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) && (*(longlong *)(puVar3 + 0xc) != 0)) {
-            uVar10 = 0x1b70;
-            goto LAB_1;
+      local_c8 = -0x3ffffff3;
+      goto LAB_1;
+    }
+LAB_2:
+    uVar14 = (ulonglong)uVar11;
+    puVar12 = puVar3 + 0xb4;
+    LOCK();
+    if (*(int *)puVar12 == 0) {
+      puVar12[0] = 3;
+      puVar12[1] = 0;
+    }
+    UNLOCK();
+    if (*(int *)puVar12 != 0) {
+      uVar10 = 0x1b5a;
+      goto LAB_0;
+    }
+    uVar16 = 0;
+    if ((byte)((char)puVar3[1] - 1U) < 2) {
+      if (((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) && (*(longlong *)(puVar3 + 0xc) != 0)) {
+        uVar10 = 0x1b70;
+        goto LAB_3;
+      }
+      uVar4 = *(undefined8 *)(puVar3 + 0x14);
+      local_70 = uVar4;
+      if (((*(char *)(param_1 + 0x40) != '\0') && (*(int *)(param_2 + 0x10) != 0)) &&
+         ((*(ulonglong *)(param_2 + 0x20) & 3) != 0)) {
+                    /* WARNING: Subroutine does not return */
+        ExRaiseDatatypeMisalignment();
+      }
+      puVar12 = (ushort *)ExAllocatePool2(0x61,uVar14,0x6c646641);
+      puVar5 = *(uint **)(param_2 + 0x20);
+      uVar2 = *puVar5;
+      iVar20 = 1;
+      if ((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) {
+        memcpy(puVar12,puVar5 + 1,uVar14);
+        if ((*(int *)puVar12 == 1) && (puVar12[2] + 8 <= uVar11)) {
+LAB_4:
+          lVar13 = IoAllocateMdl(*(undefined8 *)(param_1 + 0x70),*(undefined4 *)(param_2 + 8),0);
+          if (lVar13 == 0) {
+            local_c8 = -0x3fffff66;
+            AFDETW_TRACEBIND(0,0x1b5f,(short *)puVar3,-0x3fffff66,(short *)0x0);
           }
-          uVar4 = *(undefined8 *)(puVar3 + 0x14);
-          local_68 = uVar4;
-          if (((*(char *)(param_1 + 0x40) != '\0') && (*(int *)(param_2 + 0x10) != 0)) &&
-             ((*(ulonglong *)(param_2 + 0x20) & 3) != 0)) {
-                    /* WARNING: Subroutine does not return */
-            ExRaiseDatatypeMisalignment();
-          }
-          puVar12 = (ushort *)ExAllocatePool2(0x61,uVar14,0x6c646641);
-          puVar5 = *(uint **)(param_2 + 0x20);
-          uVar2 = *puVar5;
-          iVar19 = 1;
-          if ((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) {
-            memcpy(puVar12,puVar5 + 1,uVar14);
-            if ((*(int *)puVar12 == 1) && (puVar12[2] + 8 <= uVar11)) {
-LAB_2:
-              lVar13 = IoAllocateMdl(*(undefined8 *)(param_1 + 0x70),*(undefined4 *)(param_2 + 8),0)
-              ;
-              if (lVar13 == 0) {
-                local_a8 = -0x3fffff66;
-                AFDETW_TRACEBIND(0,0x1b5f,(short *)puVar3,-0x3fffff66,(short *)0x0);
+          else {
+            MmProbeAndLockPages(*(undefined8 *)(param_1 + 8),*(undefined1 *)(param_1 + 0x40),1);
+            lVar13 = *(longlong *)(param_1 + 8);
+            if ((*(byte *)(lVar13 + 10) & 5) == 0) {
+              local_80 = MmMapLockedPagesSpecifyCache(lVar13,0,1);
+            }
+            else {
+              local_80 = *(longlong *)(lVar13 + 0x18);
+            }
+            if (local_80 == 0) {
+              local_c8 = -0x3fffff66;
+              AFDETW_TRACEBIND(0,0x1b60,(short *)puVar3,-0x3fffff66,(short *)0x0);
+            }
+            else {
+              if ((*(uint *)(puVar3 + 4) & 0x100) != 0) {
+                *(ushort **)(puVar3 + 0x78) = puVar12;
+                *(uint *)(puVar3 + 0x76) = uVar11;
+                pbVar1 = (byte *)(*(longlong *)(param_1 + 0xb8) + 3);
+                *pbVar1 = *pbVar1 | 1;
+                AFDETW_TRACEBIND(0,0x1b62,(short *)puVar3,0,(short *)puVar12);
+                AfdTLBindSecurity(param_1,(longlong)puVar3,uVar2);
+                local_c8 = 0x103;
+                puVar17 = auStackY_118;
+                goto LAB_5;
+              }
+              puVar21 = puVar3 + 0x84;
+              if (*(char *)(*(longlong *)puVar21 + 0x14) == '\0') {
+                uVar14 = AfdGetTransportInfo((wchar_t *)(*(longlong *)puVar21 + 0x18),
+                                             (longlong *)puVar21);
+                local_c8 = (int)uVar14;
+                if (-1 < local_c8) goto LAB_6;
+                uVar10 = 0x1b63;
+LAB_7:
+                iVar20 = 0;
+                puVar21 = (ushort *)0x0;
               }
               else {
-                MmProbeAndLockPages(*(undefined8 *)(param_1 + 8),*(undefined1 *)(param_1 + 0x40),1);
-                lVar13 = *(longlong *)(param_1 + 8);
-                if ((*(byte *)(lVar13 + 10) & 5) == 0) {
-                  local_78 = MmMapLockedPagesSpecifyCache(lVar13,0,1);
+LAB_6:
+                *(undefined4 *)(puVar3 + 8) = *(undefined4 *)(*(longlong *)puVar21 + 0x38);
+                *(ushort **)(puVar3 + 0x78) = puVar12;
+                *(uint *)(puVar3 + 0x76) = uVar11;
+                if ((((*(uint *)(puVar3 + 4) & 0x100) == 0) &&
+                    ((*(uint *)(puVar3 + 8) & 0x100000) == 0)) ||
+                   (puVar19 = *(undefined **)(puVar3 + 0x14), puVar19 == (undefined *)0x0)) {
+                  puVar19 = (undefined *)0x0;
+                  if (uVar2 == 0) {
+                    if (((*(uint *)(puVar3 + 4) & 0x100) == 0) &&
+                       ((*(uint *)(puVar3 + 8) & 0x100000) == 0)) {
+                      cVar7 = AfdIsAddressInUse((short *)puVar3);
+                      if (cVar7 != '\0') {
+                        local_c8 = -0x3fffffbd;
+                        goto LAB_8;
+                      }
+                      uVar16 = 3;
+                    }
+                    else {
+                      puVar19 = &AfdEmptySd;
+                    }
+                  }
+                  else {
+                    bVar15 = 0;
+                    if (uVar2 == 1) {
+                      if (((*(uint *)(puVar3 + 4) & 0x100) != 0) ||
+                         ((*(uint *)(puVar3 + 8) & 0x100000) != 0)) {
+                        bVar15 = 1;
+                      }
+                      uVar16 = 3;
+                    }
+                    else {
+                      if (uVar2 != 2) {
+                        if (uVar2 != 3) {
+                          local_c8 = -0x3ffffff3;
+                          uVar10 = 0x1b64;
+                          goto LAB_7;
+                        }
+                        goto LAB_9;
+                      }
+                      if (((*(uint *)(puVar3 + 4) & 0x100) != 0) ||
+                         ((*(uint *)(puVar3 + 8) & 0x100000) != 0)) {
+                        bVar15 = 1;
+                      }
+                      uVar16 = ~-(uint)bVar15 & 3;
+                    }
+                    puVar19 = (undefined *)(-(ulonglong)bVar15 & 0x140085e20);
+                  }
+                }
+LAB_9:
+                AFDETW_TRACEBIND(0,0x1b68,(short *)puVar3,0,(short *)puVar12);
+                uVar10 = 0x100;
+                if ((*(uint *)(puVar3 + 8) & 0x10000) == 0) {
+                  if ((Feature_2829529401__private_featureState & 0x10) == 0) {
+                    uVar14 = Feature_2829529401__private_IsEnabledDeviceUsageNoInline();
+                    uVar9 = (uint)uVar14;
+                  }
+                  else {
+                    uVar9 = Feature_2829529401__private_featureState & 1;
+                  }
+                  bVar15 = *(byte *)((longlong)puVar3 + 5) & 1;
+                  if (uVar9 == 0) {
+                    if (bVar15 != 0) goto LAB_10;
+                    goto LAB_11;
+                  }
+                  if (bVar15 == 0) {
+                    if (*(char *)(param_1 + 0x40) != '\0') {
+                      uVar10 = 0x101;
+                      local_48 = 0x3907728;
+                      local_44 = 1;
+                      RtlLogUnexpectedCodepath(&local_48);
+                    }
+                    goto LAB_11;
+                  }
+LAB_10:
+                  if ((AfdDisableRawSecurity != '\0') || (*(char *)((longlong)puVar3 + 3) != '\0'))
+                  goto LAB_11;
+                  local_c8 = -0x3fffffde;
+                  uVar10 = 0x1b65;
                 }
                 else {
-                  local_78 = *(longlong *)(lVar13 + 0x18);
+                  uVar10 = 0x101;
+LAB_11:
+                  puVar18 = puVar19;
+                  uVar14 = AfdTdiCreateAO(puVar3,(undefined8 *)puVar12,uVar11,puVar19,uVar2,uVar16,
+                                          uVar10,*(undefined1 *)(param_1 + 0x40),'\0',&local_90);
+                  local_c8 = (int)uVar14;
+                  if (-1 < local_c8) {
+                    if ((*(uint *)(puVar3 + 4) >> 0x16 & 1) != 0) {
+                      uVar14 = AfdTdiCreateAO(puVar3,(undefined8 *)puVar12,uVar11,puVar19,uVar2,
+                                              uVar16,uVar10,*(undefined1 *)(param_1 + 0x40),'\x01',
+                                              (undefined8 *)0x0);
+                      local_c8 = (int)uVar14;
+                      puVar18 = puVar19;
+                      if (local_c8 < 0) {
+                        uVar10 = 0x1b67;
+                        goto LAB_12;
+                      }
+                    }
+                    if (*puVar3 == 0xafd1) {
+                      local_68 = 0;
+                      uStack_60 = 0;
+                      local_58 = 0;
+                      KeAcquireInStackQueuedSpinLock(puVar3 + 0x1c,&local_68);
+                      puVar3[0x24] = 4;
+                      puVar3[0x25] = 0;
+                      AfdNotifySockEventsChangedUnderLock((longlong)puVar3,4,0);
+                      if ((DAT_13 & 0x10) != 0) {
+                        puVar18 = (undefined *)(ulonglong)*(uint *)(puVar3 + 0x24);
+                        WPP_SF_qL(0x14,&WPP_24027fa9f1f034ff96a82bff87981338_Traceguids,puVar3,
+                                  *(uint *)(puVar3 + 0x24));
+                      }
+                      KeReleaseInStackQueuedSpinLock(&local_68);
+                    }
+                    AfdTdiSetEventHandlers((short *)puVar3,'\0');
+                    if ((*(uint *)(puVar3 + 4) >> 0x16 & 1) != 0) {
+                      AfdTdiSetEventHandlers((short *)puVar3,'\x01');
+                    }
+                    if (((*puVar3 == 0xafd1) || ((*(byte *)((longlong)puVar3 + 5) & 0x10) == 0)) ||
+                       ((puVar3[3] & 1) == 0)) {
+                      if ((Feature_1384345915__private_featureState & 0x10) == 0) {
+                        uVar14 = Feature_1384345915__private_IsEnabledDeviceUsageNoInline();
+                        uVar11 = (uint)uVar14;
+                      }
+                      else {
+                        uVar11 = Feature_1384345915__private_featureState & 1;
+                      }
+                      if (((((uVar11 != 0) && (*puVar3 != 0xafd1)) &&
+                           ((*puVar3 != 0x1afd &&
+                            (((*(byte *)((longlong)puVar3 + 5) & 0x10) == 0 ||
+                             ((puVar3[3] & 1) == 0)))))) && ((*(uint *)(puVar3 + 4) & 1) == 0)) &&
+                         (((char)puVar3[1] != '\x04' &&
+                          (bVar8 = AfdPreventUnbind((longlong)puVar3), !bVar8)))) {
+                        local_c8 = -0x3ffffe7c;
+                        goto LAB_8;
+                      }
+                      *(undefined1 *)(puVar3 + 1) = 3;
+                    }
+                    else {
+                      local_98 = 0;
+                      if (((*(uint *)(puVar3 + 4) >> 8 & 1) != 0) ||
+                         (puVar18 = (undefined *)CONCAT71((int7)((ulonglong)puVar18 >> 8),1),
+                         (*(uint *)(puVar3 + 8) & 0x200) == 0)) {
+                        puVar18 = (undefined *)((ulonglong)puVar18 & 0xffffffffffffff00);
+                      }
+                      uVar14 = AfdCreateConnection((longlong)puVar3,*(longlong *)(puVar3 + 0x84),
+                                                   *(longlong *)(puVar3 + 0x80),puVar18,0,
+                                                   *(uint *)(puVar3 + 4) >> 7 & 1,
+                                                   *(undefined8 *)(puVar3 + 0x18),&local_98);
+                      local_c8 = (int)uVar14;
+                      if (local_c8 < 0) {
+                        uVar10 = 0x1b69;
+                        puVar21 = puVar12;
+                        goto LAB_14;
+                      }
+                      LOCK();
+                      puVar12 = puVar3 + 0x20;
+                      lVar13 = *(longlong *)puVar12;
+                      *(longlong *)puVar12 = *(longlong *)puVar12 + 1;
+                      UNLOCK();
+                      puVar17 = auStackY_118;
+                      if (lVar13 + 1 < 2) {
+                        pcVar6 = (code *)swi(0x29);
+                        (*pcVar6)(0xe);
+                        puVar17 = auStackY_110;
+                      }
+                      lVar13 = *(longlong *)(puVar17 + 0x80);
+                      *(ushort **)(lVar13 + 8) = puVar3;
+                      *(longlong *)(puVar3 + 0x60) = lVar13;
+                      *puVar3 = 0xafd2;
+                      *(undefined8 *)(puVar17 + -8) = 0x14002a455;
+                      AfdAddConnectedReference(lVar13);
+                      *(undefined1 *)(puVar3 + 1) = 4;
+                      *(undefined2 *)(lVar13 + 2) = 3;
+                    }
+                    LOCK();
+                    puVar3[0xb4] = 0;
+                    puVar3[0xb5] = 0;
+                    UNLOCK();
+                    if (*(longlong *)(puVar17 + 0x58) != 0) {
+                      *(undefined8 *)(puVar17 + -8) = 0x14002a4f1;
+                      ObDereferenceSecurityDescriptor(*(longlong *)(puVar17 + 0x58),1);
+                    }
+                    lVar13 = *(longlong *)(param_1 + 0xb8);
+                    *(code **)(lVar13 + -0x10) = AfdRestartBindGetAddress;
+                    *(ushort **)(lVar13 + -8) = puVar3;
+                    *(undefined1 *)(lVar13 + -0x45) = 0xe0;
+                    lVar13 = *(longlong *)(param_1 + 0xb8);
+                    *(undefined2 *)(lVar13 + -0x48) = 0xc0f;
+                    *(undefined8 *)(lVar13 + -0x20) = *(undefined8 *)(puVar3 + 0x14);
+                    *(undefined8 *)(lVar13 + -0x18) = *(undefined8 *)(puVar3 + 0xc);
+                    *(undefined4 *)(lVar13 + -0x40) = 3;
+                    *(undefined8 *)(lVar13 + -0x38) = 0;
+                    *(undefined8 *)(*(longlong *)(puVar17 + 0x78) + 0x20) =
+                         *(undefined8 *)(puVar17 + 0x88);
+                    if ((DAT_13 & 0x20) != 0) {
+                      *(undefined8 *)(puVar17 + 0x20) = *(undefined8 *)(puVar3 + 0xc);
+                      uVar4 = *(undefined8 *)(puVar3 + 0x78);
+                      *(undefined8 *)(puVar17 + -8) = 0x14002a573;
+                      WPP_SF_qqq(0x15,&WPP_24027fa9f1f034ff96a82bff87981338_Traceguids,puVar3,uVar4)
+                      ;
+                    }
+                    LOCK();
+                    *(int *)(puVar3 + 0x7c) = *(int *)(puVar3 + 0x7c) + 1;
+                    UNLOCK();
+                    uVar4 = *(undefined8 *)(puVar3 + 0x14);
+                    *(undefined8 *)(puVar17 + -8) = 0x14002a589;
+                    uVar10 = IofCallDriver(uVar4,param_1);
+                    *(undefined4 *)(puVar17 + 0x50) = uVar10;
+                    if ((Feature_1384345915__private_featureState & 0x10) == 0) {
+                      *(undefined8 *)(puVar17 + -8) = 0x14002a5a6;
+                      uVar14 = Feature_1384345915__private_IsEnabledDeviceUsageNoInline();
+                      uVar11 = (uint)uVar14;
+                    }
+                    else {
+                      uVar11 = Feature_1384345915__private_featureState & 1;
+                    }
+                    if ((uVar11 != 0) && (puVar17[0x54] != '\0')) {
+                      *(undefined8 *)(puVar17 + -8) = 0x14002a5b9;
+                      AfdReallowUnbind((longlong)puVar3);
+                    }
+                    local_c8 = *(int *)(puVar17 + 0x50);
+                    goto LAB_5;
+                  }
+                  uVar10 = 0x1b66;
                 }
-                if (local_78 == 0) {
-                  local_a8 = -0x3fffff66;
-                  AFDETW_TRACEBIND(0,0x1b60,(short *)puVar3,-0x3fffff66,(short *)0x0);
-                }
-                else {
-                  if ((*(uint *)(puVar3 + 4) & 0x100) != 0) {
-                    *(ushort **)(puVar3 + 0x78) = puVar12;
-                    *(uint *)(puVar3 + 0x76) = uVar11;
-                    pbVar1 = (byte *)(*(longlong *)(param_1 + 0xb8) + 3);
-                    *pbVar1 = *pbVar1 | 1;
-                    AFDETW_TRACEBIND(0,0x1b62,(short *)puVar3,0,(short *)puVar12);
-                    AfdTLBindSecurity(param_1,puVar3,uVar2);
-                    return 0x103;
-                  }
-                  puVar20 = puVar3 + 0x84;
-                  if (*(char *)(*(longlong *)puVar20 + 0x14) == '\0') {
-                    uVar14 = AfdGetTransportInfo((wchar_t *)(*(longlong *)puVar20 + 0x18),
-                                                 (longlong *)puVar20);
-                    local_a8 = (int)uVar14;
-                    if (-1 < local_a8) goto LAB_3;
-                    uVar10 = 0x1b63;
-LAB_4:
-                    iVar19 = 0;
-                    puVar20 = (ushort *)0x0;
-                  }
-                  else {
-LAB_3:
-                    *(undefined4 *)(puVar3 + 8) = *(undefined4 *)(*(longlong *)puVar20 + 0x38);
-                    *(ushort **)(puVar3 + 0x78) = puVar12;
-                    *(uint *)(puVar3 + 0x76) = uVar11;
-                    if ((((*(uint *)(puVar3 + 4) & 0x100) == 0) &&
-                        ((*(uint *)(puVar3 + 8) & 0x100000) == 0)) ||
-                       (puVar18 = *(undefined **)(puVar3 + 0x14), puVar18 == (undefined *)0x0)) {
-                      puVar18 = (undefined *)0x0;
-                      if (uVar2 == 0) {
-                        if (((*(uint *)(puVar3 + 4) & 0x100) == 0) &&
-                           ((*(uint *)(puVar3 + 8) & 0x100000) == 0)) {
-                          cVar8 = AfdIsAddressInUse((short *)puVar3);
-                          if (cVar8 != '\0') {
-                            local_a8 = -0x3fffffbd;
-                            goto LAB_5;
-                          }
-                          uVar15 = 3;
-                        }
-                        else {
-                          puVar18 = &AfdEmptySd;
-                        }
-                      }
-                      else {
-                        bVar7 = 0;
-                        if (uVar2 == 1) {
-                          if (((*(uint *)(puVar3 + 4) & 0x100) != 0) ||
-                             ((*(uint *)(puVar3 + 8) & 0x100000) != 0)) {
-                            bVar7 = 1;
-                          }
-                          uVar15 = 3;
-                        }
-                        else {
-                          if (uVar2 != 2) {
-                            if (uVar2 != 3) {
-                              local_a8 = -0x3ffffff3;
-                              uVar10 = 0x1b64;
-                              goto LAB_4;
-                            }
-                            goto LAB_6;
-                          }
-                          if (((*(uint *)(puVar3 + 4) & 0x100) != 0) ||
-                             ((*(uint *)(puVar3 + 8) & 0x100000) != 0)) {
-                            bVar7 = 1;
-                          }
-                          uVar15 = ~-(uint)bVar7 & 3;
-                        }
-                        puVar18 = (undefined *)(-(ulonglong)bVar7 & 0x140084e20);
-                      }
-                    }
-LAB_6:
-                    AFDETW_TRACEBIND(0,0x1b68,(short *)puVar3,0,(short *)puVar12);
-                    uVar10 = 0x100;
-                    if ((*(uint *)(puVar3 + 8) & 0x10000) == 0) {
-                      if ((((*(byte *)((longlong)puVar3 + 5) & 1) == 0) ||
-                          (AfdDisableRawSecurity != '\0')) ||
-                         (*(char *)((longlong)puVar3 + 3) != '\0')) goto LAB_7;
-                      local_a8 = -0x3fffffde;
-                      uVar10 = 0x1b65;
-                    }
-                    else {
-                      uVar10 = 0x101;
-LAB_7:
-                      puVar17 = puVar18;
-                      uVar14 = AfdTdiCreateAO(puVar3,(undefined8 *)puVar12,uVar11,puVar18,uVar2,
-                                              uVar15,uVar10,*(byte *)(param_1 + 0x40),'\0',&local_80
-                                             );
-                      local_a8 = (int)uVar14;
-                      if (-1 < local_a8) {
-                        if ((*(uint *)(puVar3 + 4) >> 0x16 & 1) != 0) {
-                          uVar14 = AfdTdiCreateAO(puVar3,(undefined8 *)puVar12,uVar11,puVar18,uVar2,
-                                                  uVar15,uVar10,*(byte *)(param_1 + 0x40),'\x01',
-                                                  (undefined8 *)0x0);
-                          local_a8 = (int)uVar14;
-                          puVar17 = puVar18;
-                          if (local_a8 < 0) {
-                            uVar10 = 0x1b67;
-                            goto LAB_8;
-                          }
-                        }
-                        if (*puVar3 == 0xafd1) {
-                          local_60 = 0;
-                          uStack_58 = 0;
-                          local_50 = 0;
-                          KeAcquireInStackQueuedSpinLock(puVar3 + 0x1c,&local_60);
-                          puVar3[0x24] = 4;
-                          puVar3[0x25] = 0;
-                          AfdNotifySockEventsChangedUnderLock((longlong)puVar3,4,0);
-                          if ((DAT_9 & 0x10) != 0) {
-                            puVar17 = (undefined *)(ulonglong)*(uint *)(puVar3 + 0x24);
-                            WPP_SF_qL(0x14,&WPP_b3d06db16d513d48b31c093b68d1b186_Traceguids,puVar3,
-                                      *(uint *)(puVar3 + 0x24));
-                          }
-                          KeReleaseInStackQueuedSpinLock(&local_60);
-                        }
-                        AfdTdiSetEventHandlers((short *)puVar3,'\0');
-                        if ((*(uint *)(puVar3 + 4) >> 0x16 & 1) != 0) {
-                          AfdTdiSetEventHandlers((short *)puVar3,'\x01');
-                        }
-                        if (((*puVar3 == 0xafd1) || ((*(byte *)((longlong)puVar3 + 5) & 0x10) == 0))
-                           || ((puVar3[3] & 1) == 0)) {
-                          if ((Feature_1384345915__private_featureState & 0x10) == 0) {
-                            uVar14 = Feature_1384345915__private_IsEnabledDeviceUsageNoInline();
-                            uVar11 = (uint)uVar14;
-                          }
-                          else {
-                            uVar11 = Feature_1384345915__private_featureState & 1;
-                          }
-                          if (((uVar11 == 0) || (*puVar3 == 0xafd1)) ||
-                             ((*puVar3 == 0x1afd ||
-                              (((((*(byte *)((longlong)puVar3 + 5) & 0x10) != 0 &&
-                                 ((puVar3[3] & 1) != 0)) || ((*(uint *)(puVar3 + 4) & 1) != 0)) ||
-                               (((char)puVar3[1] == '\x04' ||
-                                (bVar9 = AfdPreventUnbind((longlong)puVar3), bVar9)))))))) {
-                            *(undefined1 *)(puVar3 + 1) = 3;
-                            goto LAB_10;
-                          }
-                          local_a8 = -0x3ffffe7c;
-                          goto LAB_5;
-                        }
-                        local_88 = 0;
-                        if (((*(uint *)(puVar3 + 4) >> 8 & 1) != 0) ||
-                           (puVar17 = (undefined *)CONCAT71((int7)((ulonglong)puVar17 >> 8),1),
-                           (*(uint *)(puVar3 + 8) & 0x200) == 0)) {
-                          puVar17 = (undefined *)((ulonglong)puVar17 & 0xffffffffffffff00);
-                        }
-                        uVar14 = AfdCreateConnection((longlong)puVar3,*(longlong *)(puVar3 + 0x84),
-                                                     *(longlong *)(puVar3 + 0x80),puVar17,0,
-                                                     *(uint *)(puVar3 + 4) >> 7 & 1,
-                                                     *(undefined8 *)(puVar3 + 0x18),&local_88);
-                        local_a8 = (int)uVar14;
-                        if (-1 < local_a8) {
-                          LOCK();
-                          puVar12 = puVar3 + 0x20;
-                          lVar13 = *(longlong *)puVar12;
-                          *(longlong *)puVar12 = *(longlong *)puVar12 + 1;
-                          UNLOCK();
-                          puVar16 = auStackY_f8;
-                          if (lVar13 + 1 < 2) {
-                            pcVar6 = (code *)swi(0x29);
-                            (*pcVar6)(0xe);
-                            puVar16 = auStackY_f0;
-                          }
-                          lVar13 = *(longlong *)(puVar16 + 0x70);
-                          *(ushort **)(lVar13 + 8) = puVar3;
-                          *(longlong *)(puVar3 + 0x60) = lVar13;
-                          *puVar3 = 0xafd2;
-                          *(undefined8 *)(puVar16 + -8) = 0x14002b41a;
-                          AfdAddConnectedReference(lVar13);
-                          *(undefined1 *)(puVar3 + 1) = 4;
-                          *(undefined2 *)(lVar13 + 2) = 3;
-LAB_10:
-                          LOCK();
-                          puVar3[0xb4] = 0;
-                          puVar3[0xb5] = 0;
-                          UNLOCK();
-                          if (*(longlong *)(puVar16 + 0x58) != 0) {
-                            *(undefined8 *)(puVar16 + -8) = 0x14002b4b9;
-                            ObDereferenceSecurityDescriptor(*(longlong *)(puVar16 + 0x58),1);
-                          }
-                          lVar13 = *(longlong *)(param_1 + 0xb8);
-                          *(code **)(lVar13 + -0x10) = AfdRestartBindGetAddress;
-                          *(ushort **)(lVar13 + -8) = puVar3;
-                          *(undefined1 *)(lVar13 + -0x45) = 0xe0;
-                          lVar13 = *(longlong *)(param_1 + 0xb8);
-                          *(undefined2 *)(lVar13 + -0x48) = 0xc0f;
-                          *(undefined8 *)(lVar13 + -0x20) = *(undefined8 *)(puVar3 + 0x14);
-                          *(undefined8 *)(lVar13 + -0x18) = *(undefined8 *)(puVar3 + 0xc);
-                          *(undefined4 *)(lVar13 + -0x40) = 3;
-                          *(undefined8 *)(lVar13 + -0x38) = 0;
-                          *(undefined8 *)(*(longlong *)(puVar16 + 0x108) + 0x20) =
-                               *(undefined8 *)(puVar16 + 0x78);
-                          if ((DAT_9 & 0x20) != 0) {
-                            *(undefined8 *)(puVar16 + 0x20) = *(undefined8 *)(puVar3 + 0xc);
-                            uVar4 = *(undefined8 *)(puVar3 + 0x78);
-                            *(undefined8 *)(puVar16 + -8) = 0x14002b53b;
-                            WPP_SF_qqq(0x15,&WPP_b3d06db16d513d48b31c093b68d1b186_Traceguids,puVar3,
-                                       uVar4);
-                          }
-                          LOCK();
-                          *(int *)(puVar3 + 0x7c) = *(int *)(puVar3 + 0x7c) + 1;
-                          UNLOCK();
-                          uVar4 = *(undefined8 *)(puVar3 + 0x14);
-                          *(undefined8 *)(puVar16 + -8) = 0x14002b551;
-                          uVar10 = IofCallDriver(uVar4,param_1);
-                          *(undefined4 *)(puVar16 + 0x50) = uVar10;
-                          if ((Feature_1384345915__private_featureState & 0x10) == 0) {
-                            *(undefined8 *)(puVar16 + -8) = 0x14002b56e;
-                            uVar14 = Feature_1384345915__private_IsEnabledDeviceUsageNoInline();
-                            uVar11 = (uint)uVar14;
-                          }
-                          else {
-                            uVar11 = Feature_1384345915__private_featureState & 1;
-                          }
-                          if ((uVar11 != 0) && (puVar16[0x110] != '\0')) {
-                            *(undefined8 *)(puVar16 + -8) = 0x14002b584;
-                            AfdReallowUnbind((longlong)puVar3);
-                          }
-                          return *(int *)(puVar16 + 0x50);
-                        }
-                        uVar10 = 0x1b69;
-                        puVar20 = puVar12;
-                        goto LAB_11;
-                      }
-                      uVar10 = 0x1b66;
-                    }
-LAB_8:
-                    puVar20 = (ushort *)0x0;
-                  }
-LAB_11:
-                  AFDETW_TRACEBIND(iVar19,uVar10,(short *)puVar3,local_a8,(short *)puVar20);
-                }
+LAB_12:
+                puVar21 = (ushort *)0x0;
               }
-            }
-            else {
-              local_a8 = -0x3ffffff3;
-              AFDETW_TRACEBIND(0,0x1b5c,(short *)puVar3,-0x3ffffff3,(short *)0x0);
+LAB_14:
+              AFDETW_TRACEBIND(iVar20,uVar10,(short *)puVar3,local_c8,(short *)puVar21);
             }
           }
-          else {
-            memcpy(puVar12,puVar5 + 1,uVar14);
-            if (*puVar12 < 0x23) {
-              bVar7 = SOCKADDR_SIZE(*puVar12);
-              if (bVar7 <= uVar11) goto LAB_2;
-              local_a8 = -0x3ffffebf;
-              AFDETW_TRACEBIND(0,0x1b5e,(short *)puVar3,-0x3ffffebf,(short *)0x0);
-            }
-            else {
-              local_a8 = -0x3ffffebf;
-              AFDETW_TRACEBIND(0,0x1b5d,(short *)puVar3,-0x3ffffebf,(short *)0x0);
-            }
-          }
-LAB_5:
-          if (((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) && (*(longlong *)(puVar3 + 0xc) != 0)) {
-            ObfDereferenceObject();
-            puVar3[0xc] = 0;
-            puVar3[0xd] = 0;
-            puVar3[0xe] = 0;
-            puVar3[0xf] = 0;
-          }
-          *(undefined8 *)(puVar3 + 0x14) = uVar4;
-          if (((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) && (*(longlong *)(puVar3 + 0x80) != 0)) {
-            ZwClose();
-            puVar3[0x80] = 0;
-            puVar3[0x81] = 0;
-            puVar3[0x82] = 0;
-            puVar3[0x83] = 0;
-          }
-          if (puVar12 != (ushort *)0x0) {
-            if ((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) {
-              ExEnterCriticalRegionAndAcquireResourceExclusive(AfdGlobalData);
-              puVar3[0x78] = 0;
-              puVar3[0x79] = 0;
-              puVar3[0x7a] = 0;
-              puVar3[0x7b] = 0;
-              puVar3[0x76] = 0;
-              puVar3[0x77] = 0;
-              ExReleaseResourceAndLeaveCriticalRegion(AfdGlobalData);
-            }
-            else {
-              puVar3[0x78] = 0;
-              puVar3[0x79] = 0;
-              puVar3[0x7a] = 0;
-              puVar3[0x7b] = 0;
-              puVar3[0x76] = 0;
-              puVar3[0x77] = 0;
-            }
-            ExFreePoolWithTag(puVar12,0x6c646641);
-          }
         }
         else {
-          uVar10 = 0x1b5b;
-LAB_1:
-          local_a8 = -0x3ffffdc8;
-          AFDETW_TRACEBIND(0,uVar10,(short *)puVar3,-0x3ffffdc8,(short *)0x0);
-        }
-        LOCK();
-        puVar3[0xb4] = 0;
-        puVar3[0xb5] = 0;
-        UNLOCK();
-        if (*(longlong *)(param_1 + 8) != 0) {
-          if ((*(byte *)(*(longlong *)(param_1 + 8) + 10) & 2) != 0) {
-            MmUnlockPages();
-          }
-          IoFreeMdl(*(undefined8 *)(param_1 + 8));
-          *(undefined8 *)(param_1 + 8) = 0;
-        }
-        goto LAB_12;
-      }
-      uVar10 = 0x1b5a;
-    }
-LAB_13:
-    local_a8 = -0x3ffffff3;
+          local_c8 = -0x3ffffff3;
+          AFDETW_TRACEBIND(0,0x1b5c,(short *)puVar3,-0x3ffffff3,(short *)0x0);
+        }
+      }
+      else {
+        memcpy(puVar12,puVar5 + 1,uVar14);
+        if (*puVar12 < 0x23) {
+          bVar15 = SOCKADDR_SIZE(*puVar12);
+          if (bVar15 <= uVar11) goto LAB_4;
+          local_c8 = -0x3ffffebf;
+          AFDETW_TRACEBIND(0,0x1b5e,(short *)puVar3,-0x3ffffebf,(short *)0x0);
+        }
+        else {
+          local_c8 = -0x3ffffebf;
+          AFDETW_TRACEBIND(0,0x1b5d,(short *)puVar3,-0x3ffffebf,(short *)0x0);
+        }
+      }
+LAB_8:
+      if (((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) && (*(longlong *)(puVar3 + 0xc) != 0)) {
+        ObfDereferenceObject();
+        puVar3[0xc] = 0;
+        puVar3[0xd] = 0;
+        puVar3[0xe] = 0;
+        puVar3[0xf] = 0;
+      }
+      *(undefined8 *)(puVar3 + 0x14) = uVar4;
+      if (((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) && (*(longlong *)(puVar3 + 0x80) != 0)) {
+        ZwClose();
+        puVar3[0x80] = 0;
+        puVar3[0x81] = 0;
+        puVar3[0x82] = 0;
+        puVar3[0x83] = 0;
+      }
+      if (puVar12 != (ushort *)0x0) {
+        if ((*(uint *)(puVar3 + 4) >> 8 & 1) == 0) {
+          ExEnterCriticalRegionAndAcquireResourceExclusive(AfdGlobalData);
+          puVar3[0x78] = 0;
+          puVar3[0x79] = 0;
+          puVar3[0x7a] = 0;
+          puVar3[0x7b] = 0;
+          puVar3[0x76] = 0;
+          puVar3[0x77] = 0;
+          ExReleaseResourceAndLeaveCriticalRegion(AfdGlobalData);
+        }
+        else {
+          puVar3[0x78] = 0;
+          puVar3[0x79] = 0;
+          puVar3[0x7a] = 0;
+          puVar3[0x7b] = 0;
+          puVar3[0x76] = 0;
+          puVar3[0x77] = 0;
+        }
+        ExFreePoolWithTag(puVar12,0x6c646641);
+      }
+    }
+    else {
+      uVar10 = 0x1b5b;
+LAB_3:
+      local_c8 = -0x3ffffdc8;
+      AFDETW_TRACEBIND(0,uVar10,(short *)puVar3,-0x3ffffdc8,(short *)0x0);
+    }
+    LOCK();
+    puVar3[0xb4] = 0;
+    puVar3[0xb5] = 0;
+    UNLOCK();
+    if (*(longlong *)(param_1 + 8) != 0) {
+      if ((*(byte *)(*(longlong *)(param_1 + 8) + 10) & 2) != 0) {
+        MmUnlockPages();
+      }
+      IoFreeMdl(*(undefined8 *)(param_1 + 8));
+      *(undefined8 *)(param_1 + 8) = 0;
+    }
   }
   else {
     if (((*(byte *)((longlong)puVar3 + 5) & 0x10) == 0) || ((puVar3[3] & 1) == 0)) {
       if ((5 < *(uint *)(param_2 + 0x10)) &&
          ((1 < *(uint *)(param_2 + 8) &&
           (uVar11 = *(uint *)(param_2 + 0x10) - 4, uVar11 <= *(uint *)(param_2 + 8)))))
+      goto LAB_2;
+      uVar10 = 0x1b59;
       goto LAB_0;
-      uVar10 = 0x1b59;
-      goto LAB_13;
-    }
-    local_a8 = -0x3fffffde;
+    }
+    local_c8 = -0x3fffffde;
     uVar10 = 0x1b84;
+LAB_1:
+    AFDETW_TRACEBIND(0,uVar10,(short *)puVar3,local_c8,(short *)0x0);
   }
-  AFDETW_TRACEBIND(0,uVar10,(short *)puVar3,local_a8,(short *)0x0);
-LAB_12:
-  *(int *)(param_1 + 0x30) = local_a8;
+  *(int *)(param_1 + 0x30) = local_c8;
   IofCompleteRequest(param_1,AfdPriorityBoost);
-  return local_a8;
+  puVar17 = auStackY_118;
+LAB_5:
+  *(undefined8 *)(puVar17 + -8) = 0x14002a731;
+  return local_c8;
 }
 

```


## AfdFastDatagramSend

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.41|
|i_ratio|0.59|
|m_ratio|0.98|
|b_ratio|0.84|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|AfdFastDatagramSend|AfdFastDatagramSend|
|fullname|AfdFastDatagramSend|AfdFastDatagramSend|
|refcount|4|4|
|`length`|3738|3850|
|`called`|<details><summary>Expand for full list:<br>AFDETW_TRACESEND<br>AFDETW_TRACESENDDATAGRAM<br>AFDETW_TRACESENDMSG<br>AFDETW_TRACESENDTO<br>AfdCopyBufferArrayToBuffer<br>AfdDereferenceEndpoint<br>AfdEnqueueTpSendIrp<br>AfdGetBuffer<br>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdNotifyComputeEvents</summary>AfdNotifyDestroyContext<br>AfdNotifySockIndicateEventsUnlock<br>AfdReturnBuffer<br>AfdTLFastDgramSend<br>AfdTdi_TA6toTA4_InPlace<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExRaiseStatus<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>SOCKADDR_SIZE<br>WPP_SF_DDq<br>WPP_SF_I<br>WPP_SF_qL<br>memcpy</details>|<details><summary>Expand for full list:<br>AFDETW_TRACESEND<br>AFDETW_TRACESENDDATAGRAM<br>AFDETW_TRACESENDMSG<br>AFDETW_TRACESENDTO<br>AfdCopyBufferArrayToBuffer<br>AfdDereferenceEndpoint<br>AfdEnqueueTpSendIrp<br>AfdGetBuffer<br>AfdIndicateEventSelectEvent<br>AfdIndicatePollEvent<br>AfdNotifyComputeEvents</summary>AfdNotifyDestroyContext<br>AfdNotifySockIndicateEventsUnlock<br>AfdReturnBuffer<br>AfdTLFastDgramSend<br>AfdTdi_TA6toTA4_InPlace<br>Feature_447951161__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAcquireRundownProtection<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExRaiseStatus<br>NTOSKRNL.EXE::ExReleaseRundownProtection<br>NTOSKRNL.EXE::IoCancelMiniCompletionPacket<br>NTOSKRNL.EXE::IoSetIoCompletionEx3<br>NTOSKRNL.EXE::IofCallDriver<br>NTOSKRNL.EXE::KeAcquireInStackQueuedSpinLock<br>NTOSKRNL.EXE::KeReleaseInStackQueuedSpinLock<br>NTOSKRNL.EXE::ObfDereferenceObject<br>NTOSKRNL.EXE::ObfReferenceObject<br>SOCKADDR_SIZE<br>WPP_SF_DDq<br>WPP_SF_I<br>WPP_SF_qL<br>memcpy</details>|
|calling|AfdFastIoDeviceControl<br>AfdFastIoWrite|AfdFastIoDeviceControl<br>AfdFastIoWrite|
|paramcount|5|5|
|`address`|140034280|1400333d0|
|sig|ulonglong __fastcall AfdFastDatagramSend(ushort * param_1, undefined8 * param_2, uint param_3, void * param_4, uint param_5)|ulonglong __fastcall AfdFastDatagramSend(ushort * param_1, undefined8 * param_2, uint param_3, void * param_4, uint param_5)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### AfdFastDatagramSend Called Diff


```diff
--- AfdFastDatagramSend called
+++ AfdFastDatagramSend called
@@ -16,0 +17 @@
+Feature_447951161__private_IsEnabledDeviceUsageNoInline
@@ -17,0 +19 @@
+NTOSKRNL.EXE::ExFreePoolWithTag
```


### AfdFastDatagramSend Diff


```diff
--- AfdFastDatagramSend
+++ AfdFastDatagramSend
@@ -1,614 +1,638 @@
 
 ulonglong AfdFastDatagramSend(ushort *param_1,undefined8 *param_2,uint param_3,void *param_4,
                              uint param_5)
 
 {
   ushort *puVar1;
   ushort uVar2;
   uint uVar3;
   undefined4 uVar4;
-  longlong lVar5;
-  short *psVar6;
-  longlong lVar7;
-  code *pcVar8;
-  bool bVar9;
-  undefined4 *puVar10;
-  char cVar11;
-  byte bVar12;
-  char cVar13;
-  ushort uVar14;
-  uint uVar15;
-  int iVar16;
-  ulonglong uVar17;
-  undefined4 *puVar18;
+  short *psVar5;
+  longlong lVar6;
+  code *pcVar7;
+  bool bVar8;
+  undefined4 *puVar9;
+  char cVar10;
+  byte bVar11;
+  char cVar12;
+  ushort uVar13;
+  uint uVar14;
+  int iVar15;
+  ulonglong uVar16;
+  undefined4 *puVar17;
+  undefined8 uVar18;
   undefined8 uVar19;
-  undefined8 uVar20;
-  uint *puVar21;
-  undefined1 *puVar22;
-  ushort uVar23;
+  uint *puVar20;
+  undefined1 *puVar21;
+  ushort uVar22;
+  longlong lVar23;
   bool bVar24;
   undefined1 auStack_108 [8];
   undefined1 auStack_100 [24];
   ushort *local_e8;
   undefined1 local_e0;
   longlong local_d8;
   undefined1 local_d0;
   undefined1 local_c8;
   undefined4 local_a8;
   undefined4 *local_98;
   uint local_88;
   uint local_84;
-  uint local_80;
+  undefined8 local_80;
   undefined8 local_78;
-  undefined8 local_70;
-  undefined8 uStack_68;
-  undefined8 local_60;
+  undefined8 uStack_70;
+  undefined8 local_68;
+  uint local_60;
   undefined8 local_58;
   undefined8 local_50;
   undefined8 uStack_48;
   undefined8 local_40;
   
-  puVar22 = auStack_108;
-  local_70 = 0;
-  uStack_68 = 0;
-  local_60 = 0;
+  puVar21 = auStack_108;
+  local_78 = 0;
+  uStack_70 = 0;
+  local_68 = 0;
   local_98 = (undefined4 *)0x0;
   local_84 = 0;
-  uVar17 = (ulonglong)*(uint *)(param_1 + 4);
+  uVar16 = (ulonglong)*(uint *)(param_1 + 4);
   if (((*(uint *)(param_1 + 4) & 0x10) == 0) && (AfdFastSendDatagramThreshold < param_3))
   goto LAB_0;
-  KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_70);
+  KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_78);
   if ((*(byte *)((longlong)param_1 + 7) & 0x10) != 0) {
-    uVar17 = KeReleaseInStackQueuedSpinLock(&local_70);
+    uVar16 = KeReleaseInStackQueuedSpinLock(&local_78);
     goto LAB_0;
   }
-  uVar15 = *(uint *)(param_1 + 0x4e);
-  if ((uVar15 < *(uint *)(param_1 + 0x50)) || (uVar15 == 0)) {
-    *(uint *)(param_1 + 0x4e) = uVar15 + param_3;
-    KeReleaseInStackQueuedSpinLock(&local_70);
+  uVar14 = *(uint *)(param_1 + 0x4e);
+  if ((uVar14 < *(uint *)(param_1 + 0x50)) || (uVar14 == 0)) {
+    *(uint *)(param_1 + 0x4e) = uVar14 + param_3;
+    KeReleaseInStackQueuedSpinLock(&local_78);
     if ((DAT_1 & 0x40) != 0) {
                     /* WARNING: Subroutine does not return */
       WPP_SF_I(0xf,&WPP_5d10adf6cd9b3dca63b04d5d43604693_Traceguids,param_1);
     }
     local_58 = *(undefined8 *)(param_1 + 0xc);
-    local_78 = *(undefined8 *)(param_1 + 0x14);
+    local_80 = *(undefined8 *)(param_1 + 0x14);
     if ((*(uint *)(param_1 + 4) >> 8 & 1) == 0) {
       while( true ) {
         local_a8 = 0;
         local_88 = param_3;
-        uVar15 = param_3;
+        uVar14 = param_3;
         if ((param_5 != 0) &&
-           ((uVar15 = param_3 + 7 & 0xfffffff8, uVar15 < param_3 ||
-            (local_88 = uVar15 + param_5, uVar15 + param_5 < uVar15)))) goto LAB_2;
-        local_84 = uVar15;
-        uVar15 = *(uint *)(param_2 + 0xb);
+           ((uVar14 = param_3 + 7 & 0xfffffff8, uVar14 < param_3 ||
+            (local_88 = uVar14 + param_5, uVar14 + param_5 < uVar14)))) goto LAB_2;
+        local_84 = uVar14;
+        uVar14 = *(uint *)(param_2 + 0xb);
         if ((*(uint *)(param_2 + 0xb) == 0) &&
            ((param_4 != (void *)0x0 ||
-            ((uVar15 = 0, (*(uint *)(param_1 + 4) >> 8 & 1) == 0 &&
+            ((uVar14 = 0, (*(uint *)(param_1 + 4) >> 8 & 1) == 0 &&
              ((*(uint *)(param_1 + 8) & 0x8000) == 0)))))) {
-          uVar15 = *(uint *)(param_1 + 0x52);
+          uVar14 = *(uint *)(param_1 + 0x52);
         }
         puVar1 = param_1 + 0x18;
-        local_80 = uVar15;
-        puVar18 = AfdGetBuffer(local_88,uVar15,*(longlong *)puVar1,1);
-        local_98 = puVar18;
+        local_60 = uVar14;
+        puVar17 = AfdGetBuffer(local_88,uVar14,*(longlong *)puVar1,1);
+        local_98 = puVar17;
         if (param_4 == (void *)0x0) {
-          *(undefined8 *)(puVar18 + 6) = 0;
-          puVar18[4] = 0;
+          *(undefined8 *)(puVar17 + 6) = 0;
+          puVar17[4] = 0;
         }
         else {
-          *(void **)(puVar18 + 6) = (void *)((ulonglong)local_84 + *(longlong *)(puVar18 + 0x16));
-          memcpy((void *)((ulonglong)local_84 + *(longlong *)(puVar18 + 0x16)),param_4,
+          *(void **)(puVar17 + 6) = (void *)((ulonglong)local_84 + *(longlong *)(puVar17 + 0x16));
+          memcpy((void *)((ulonglong)local_84 + *(longlong *)(puVar17 + 0x16)),param_4,
                  (ulonglong)param_5);
-          puVar18[4] = param_5;
-        }
-        puVar18[8] = uVar15;
-        iVar16 = 0;
+          puVar17[4] = param_5;
+        }
+        puVar17[8] = uVar14;
+        iVar15 = 0;
         if (*(int *)(param_2 + 0xb) != 0) {
-          memcpy(*(void **)(puVar18 + 10),(void *)param_2[0xc],(longlong)*(int *)(param_2 + 0xb));
-          if ((**(int **)(puVar18 + 10) != 1) ||
-             (iVar16 = *(int *)(param_2 + 0xb),
-             iVar16 < (int)(*(ushort *)(*(int **)(puVar18 + 10) + 1) + 8))) {
+          memcpy(*(void **)(puVar17 + 10),(void *)param_2[0xc],(longlong)*(int *)(param_2 + 0xb));
+          if ((**(int **)(puVar17 + 10) != 1) ||
+             (iVar15 = *(int *)(param_2 + 0xb),
+             iVar15 < (int)(*(ushort *)(*(int **)(puVar17 + 10) + 1) + 8))) {
                     /* WARNING: Subroutine does not return */
             ExRaiseStatus(0xc000000d);
           }
         }
-        if (iVar16 != 0) goto LAB_3;
-        KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_70);
+        if (iVar15 != 0) goto LAB_3;
+        KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_78);
         if ((char)param_1[1] != '\x04') break;
         if ((param_4 == (void *)0x0) &&
-           ((puVar18 = local_98, (*(uint *)(param_1 + 4) >> 8 & 1) != 0 ||
+           ((puVar17 = local_98, (*(uint *)(param_1 + 4) >> 8 & 1) != 0 ||
             ((*(uint *)(param_1 + 8) & 0x8000) != 0)))) goto LAB_4;
-        if (*(uint *)(param_1 + 0x52) <= (uint)*(ushort *)((longlong)puVar18 + 0x4e))
+        if (*(uint *)(param_1 + 0x52) <= (uint)*(ushort *)((longlong)puVar17 + 0x4e))
         goto LAB_5;
-        KeReleaseInStackQueuedSpinLock(&local_70);
-        AfdReturnBuffer((longlong)puVar18,*(longlong *)puVar1);
-      }
-      KeReleaseInStackQueuedSpinLock(&local_70);
-      AfdReturnBuffer((longlong)puVar18,*(longlong *)puVar1);
+        KeReleaseInStackQueuedSpinLock(&local_78);
+        AfdReturnBuffer((longlong)puVar17,*(longlong *)puVar1);
+      }
+      KeReleaseInStackQueuedSpinLock(&local_78);
+      AfdReturnBuffer((longlong)puVar17,*(longlong *)puVar1);
       local_a8 = 0xc0000140;
     }
     else {
       local_a8 = 0;
       local_88 = param_3;
-      uVar15 = param_3;
+      uVar14 = param_3;
       if ((param_5 == 0) ||
-         ((uVar15 = param_3 + 7 & 0xfffffff8, param_3 <= uVar15 &&
-          (local_88 = uVar15 + param_5, uVar15 <= local_88)))) {
-        local_84 = uVar15;
-        puVar18 = AfdGetBuffer(local_88,*(uint *)(param_2 + 0xb),*(longlong *)(param_1 + 0x18),1);
-        local_98 = puVar18;
+         ((uVar14 = param_3 + 7 & 0xfffffff8, param_3 <= uVar14 &&
+          (local_88 = uVar14 + param_5, uVar14 <= local_88)))) {
+        local_84 = uVar14;
+        puVar17 = AfdGetBuffer(local_88,*(uint *)(param_2 + 0xb),*(longlong *)(param_1 + 0x18),1);
+        local_98 = puVar17;
         if (*(int *)(param_2 + 0xb) == 0) {
-          iVar16 = 0;
+          iVar15 = 0;
           if ((char)param_1[1] != '\x04') {
                     /* WARNING: Subroutine does not return */
             ExRaiseStatus(0xc0000140);
           }
         }
         else {
-          memcpy(*(void **)(puVar18 + 10),(void *)param_2[0xc],(longlong)*(int *)(param_2 + 0xb));
-          iVar16 = *(int *)(param_2 + 0xb);
-          if (iVar16 < 2) {
+          memcpy(*(void **)(puVar17 + 10),(void *)param_2[0xc],(longlong)*(int *)(param_2 + 0xb));
+          iVar15 = *(int *)(param_2 + 0xb);
+          if (iVar15 < 2) {
                     /* WARNING: Subroutine does not return */
             ExRaiseStatus(0xc000000d);
           }
-          if (0x22 < **(ushort **)(puVar18 + 10)) {
+          if (0x22 < **(ushort **)(puVar17 + 10)) {
                     /* WARNING: Subroutine does not return */
             ExRaiseStatus(0xc0000141);
           }
-          bVar12 = SOCKADDR_SIZE(**(ushort **)(puVar18 + 10));
-          if (iVar16 < (int)(uint)bVar12) {
+          bVar11 = SOCKADDR_SIZE(**(ushort **)(puVar17 + 10));
+          if (iVar15 < (int)(uint)bVar11) {
                     /* WARNING: Subroutine does not return */
             ExRaiseStatus(0xc0000141);
           }
         }
-        puVar18[8] = iVar16;
+        puVar17[8] = iVar15;
         if (param_4 == (void *)0x0) {
-          *(undefined8 *)(puVar18 + 6) = 0;
-          puVar18[4] = 0;
+          *(undefined8 *)(puVar17 + 6) = 0;
+          puVar17[4] = 0;
         }
         else {
-          *(void **)(puVar18 + 6) = (void *)((ulonglong)uVar15 + *(longlong *)(puVar18 + 0x16));
-          memcpy((void *)((ulonglong)uVar15 + *(longlong *)(puVar18 + 0x16)),param_4,
+          *(void **)(puVar17 + 6) = (void *)((ulonglong)uVar14 + *(longlong *)(puVar17 + 0x16));
+          memcpy((void *)((ulonglong)uVar14 + *(longlong *)(puVar17 + 0x16)),param_4,
                  (ulonglong)param_5);
-          puVar18[4] = param_5;
+          puVar17[4] = param_5;
         }
         goto LAB_3;
       }
 LAB_2:
       local_a8 = 0xc000000d;
       local_88 = param_3;
     }
     goto LAB_6;
   }
   if (((*(uint *)(param_1 + 4) & 0x10) != 0) && ((*(uint *)((longlong)param_2 + 0xc) & 2) == 0)) {
     *(uint *)(param_1 + 0x24) = *(uint *)(param_1 + 0x24) & 0xfffffffb;
     if (*(longlong *)(param_1 + 0xbc) != 0) {
       puVar1 = (ushort *)(*(longlong *)(param_1 + 0xbc) + 100);
       *puVar1 = *puVar1 & 0xfffb;
     }
     *(uint *)(param_1 + 4) = *(uint *)(param_1 + 4) | 0x2000000;
     if ((DAT_7 & 0x10) != 0) {
       WPP_SF_qL(0xe,&WPP_5d10adf6cd9b3dca63b04d5d43604693_Traceguids,param_1,
                 *(undefined4 *)(param_1 + 0x24));
     }
   }
   bVar24 = false;
   local_50 = 0;
   uStack_48 = 0;
   local_40 = 0;
   if ((*(longlong *)(param_1 + 0xbc) != 0) &&
-     (cVar11 = ExAcquireRundownProtection(param_1 + 0xc0), cVar11 != '\0')) {
+     (cVar10 = ExAcquireRundownProtection(param_1 + 0xc0), cVar10 != '\0')) {
     bVar24 = true;
-    lVar5 = *(longlong *)(param_1 + 0xbc);
-    uVar20 = *(undefined8 *)(lVar5 + 0x40);
-    uVar2 = *(ushort *)(lVar5 + 0x6a);
-    bVar9 = true;
+    lVar23 = *(longlong *)(param_1 + 0xbc);
+    uVar19 = *(undefined8 *)(lVar23 + 0x40);
+    uVar2 = *(ushort *)(lVar23 + 0x6a);
+    bVar8 = true;
     if ((uVar2 & 2) == 0) {
-      uVar23 = uVar2 | 2;
-      *(ushort *)(lVar5 + 0x6a) = uVar23;
+      uVar22 = uVar2 | 2;
+      *(ushort *)(lVar23 + 0x6a) = uVar22;
       while ((uVar2 & 1) == 0) {
-        uVar14 = AfdNotifyComputeEvents(lVar5);
-        *(undefined2 *)(lVar5 + 0x66) = *(undefined2 *)(lVar5 + 100);
-        uVar2 = *(ushort *)(lVar5 + 0x68);
-        if (uVar14 == uVar2) {
-          if ((*(byte *)(lVar5 + 99) & 1) != 0) {
-            uVar23 = uVar23 | 4;
+        uVar13 = AfdNotifyComputeEvents(lVar23);
+        *(undefined2 *)(lVar23 + 0x66) = *(undefined2 *)(lVar23 + 100);
+        uVar2 = *(ushort *)(lVar23 + 0x68);
+        if (uVar13 == uVar2) {
+          if ((*(byte *)(lVar23 + 99) & 1) != 0) {
+            uVar22 = uVar22 | 4;
           }
 LAB_8:
-          *(ushort *)(lVar5 + 0x6a) = uVar23 & 0xfffd;
-          bVar9 = true;
+          *(ushort *)(lVar23 + 0x6a) = uVar22 & 0xfffd;
+          bVar8 = true;
           goto LAB_9;
         }
-        if ((uVar14 & uVar2) != 0) goto LAB_8;
+        if ((uVar13 & uVar2) != 0) goto LAB_8;
         if (uVar2 == 0) {
-          *(ushort *)(lVar5 + 0x68) = uVar14;
-          KeReleaseInStackQueuedSpinLock(&local_70);
-          ObfReferenceObject(uVar20);
+          *(ushort *)(lVar23 + 0x68) = uVar13;
+          KeReleaseInStackQueuedSpinLock(&local_78);
+          ObfReferenceObject(uVar19);
           local_c8 = AfdPriorityBoost;
           local_d0 = 0;
           local_e0 = 0;
-          local_e8 = (ushort *)(ulonglong)uVar14;
-          local_d8 = lVar5;
-          IoSetIoCompletionEx3(*(undefined8 *)(lVar5 + 0x50),*(undefined8 *)(lVar5 + 0x58),0,0);
-          KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_70);
+          local_e8 = (ushort *)(ulonglong)uVar13;
+          local_d8 = lVar23;
+          IoSetIoCompletionEx3(*(undefined8 *)(lVar23 + 0x50),*(undefined8 *)(lVar23 + 0x58),0,0);
+          KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_78);
         }
         else {
-          KeReleaseInStackQueuedSpinLock(&local_70);
-          cVar11 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar5 + 0x50),lVar5);
-          if (cVar11 == '\0') {
-            KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_70);
-            if (*(short *)(lVar5 + 0x68) != 0) {
-              *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
+          KeReleaseInStackQueuedSpinLock(&local_78);
+          cVar10 = IoCancelMiniCompletionPacket(*(undefined8 *)(lVar23 + 0x50),lVar23);
+          if (cVar10 == '\0') {
+            KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_78);
+            if (*(short *)(lVar23 + 0x68) != 0) {
+              *(ushort *)(lVar23 + 0x6a) = *(ushort *)(lVar23 + 0x6a) & 0xfffd;
               goto LAB_9;
             }
           }
           else {
-            ObfDereferenceObject(uVar20);
-            KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_70);
-            *(undefined2 *)(lVar5 + 0x68) = 0;
-          }
-        }
-        uVar23 = *(ushort *)(lVar5 + 0x6a);
-        uVar2 = uVar23;
+            ObfDereferenceObject(uVar19);
+            KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_78);
+            *(undefined2 *)(lVar23 + 0x68) = 0;
+          }
+        }
+        uVar22 = *(ushort *)(lVar23 + 0x6a);
+        uVar2 = uVar22;
       }
       param_1[0xbc] = 0;
       param_1[0xbd] = 0;
       param_1[0xbe] = 0;
       param_1[0xbf] = 0;
-      *(ushort *)(lVar5 + 0x6a) = *(ushort *)(lVar5 + 0x6a) & 0xfffd;
-      KeReleaseInStackQueuedSpinLock(&local_70);
-      AfdNotifyDestroyContext(uVar20,lVar5);
-      bVar9 = false;
+      *(ushort *)(lVar23 + 0x6a) = *(ushort *)(lVar23 + 0x6a) & 0xfffd;
+      KeReleaseInStackQueuedSpinLock(&local_78);
+      AfdNotifyDestroyContext(uVar19,lVar23);
+      if ((Feature_447951161__private_featureState & 0x10) == 0) {
+        uVar16 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+        uVar14 = (uint)uVar16;
+      }
+      else {
+        uVar14 = Feature_447951161__private_featureState & 1;
+      }
+      bVar8 = false;
+      if (uVar14 != 0) {
+        ExFreePoolWithTag(lVar23,0x4e646641);
+      }
     }
 LAB_9:
-    if (!bVar9) {
-      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_70);
-    }
-  }
-  KeReleaseInStackQueuedSpinLock(&local_70);
+    if (!bVar8) {
+      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_78);
+    }
+  }
+  KeReleaseInStackQueuedSpinLock(&local_78);
   if (bVar24) {
     ExReleaseRundownProtection(param_1 + 0xc0);
   }
   local_a8 = 0xc00000a3;
-  puVar22 = auStack_108;
+  puVar21 = auStack_108;
   goto LAB_10;
 LAB_5:
-  memcpy(*(void **)(puVar18 + 10),*(void **)(param_1 + 0x54),(ulonglong)*(uint *)(param_1 + 0x52));
+  memcpy(*(void **)(puVar17 + 10),*(void **)(param_1 + 0x54),(ulonglong)*(uint *)(param_1 + 0x52));
 LAB_4:
-  KeReleaseInStackQueuedSpinLock(&local_70);
+  KeReleaseInStackQueuedSpinLock(&local_78);
 LAB_3:
-  uVar17 = (ulonglong)param_3;
-  uVar15 = AfdCopyBufferArrayToBuffer
-                     (*(void **)(puVar18 + 0x16),param_3,(uint *)*param_2,*(int *)(param_2 + 1));
-  puVar10 = local_98;
-  if (uVar15 == param_3) {
-    puVar18[0x10] = param_3;
-    uVar20 = local_78;
+  uVar16 = (ulonglong)param_3;
+  uVar14 = AfdCopyBufferArrayToBuffer
+                     (*(void **)(puVar17 + 0x16),param_3,(uint *)*param_2,*(int *)(param_2 + 1));
+  puVar9 = local_98;
+  if (uVar14 == param_3) {
+    puVar17[0x10] = param_3;
+    uVar19 = local_80;
     if ((*(uint *)(param_1 + 4) >> 8 & 1) == 0) {
       if (((*(uint *)(param_1 + 4) >> 8 & 1) == 0) && ((*(uint *)(param_1 + 8) & 0x8000) == 0)) {
-        puVar21 = puVar18 + 8;
+        puVar20 = puVar17 + 8;
       }
       else {
-        puVar21 = local_98 + 8;
-        if ((*puVar21 == 0) && (*(longlong *)(local_98 + 6) == 0)) {
+        puVar20 = local_98 + 8;
+        if ((*puVar20 == 0) && (*(longlong *)(local_98 + 6) == 0)) {
           if (((*(uint *)(param_1 + 4) >> 0x16 & 1) != 0) &&
              ((*(uint *)(param_1 + 0x58) & 0x20) != 0)) {
             local_58 = *(undefined8 *)(*(longlong *)(param_1 + 0x88) + 8);
-            uVar20 = *(undefined8 *)(*(longlong *)(param_1 + 0x88) + 0x10);
-          }
-          lVar5 = *(longlong *)(*(longlong *)(puVar18 + 0x14) + 0xb8);
-          *(code **)(lVar5 + -0x10) = AfdRestartFastDatagramSend;
-          *(undefined4 **)(lVar5 + -8) = local_98;
-          *(undefined1 *)(lVar5 + -0x45) = 0xe0;
-          lVar5 = *(longlong *)(*(longlong *)(local_98 + 0x14) + 0xb8);
-          *(undefined2 *)(lVar5 + -0x48) = 0x70f;
-          *(undefined8 *)(lVar5 + -0x20) = uVar20;
-          *(undefined8 *)(lVar5 + -0x18) = local_58;
-          *(undefined4 *)(lVar5 + -0x3c) = 0;
-          *(uint *)(lVar5 + -0x40) = param_3;
+            uVar19 = *(undefined8 *)(*(longlong *)(param_1 + 0x88) + 0x10);
+          }
+          lVar23 = *(longlong *)(*(longlong *)(puVar17 + 0x14) + 0xb8);
+          *(code **)(lVar23 + -0x10) = AfdRestartFastDatagramSend;
+          *(undefined4 **)(lVar23 + -8) = local_98;
+          *(undefined1 *)(lVar23 + -0x45) = 0xe0;
+          lVar23 = *(longlong *)(*(longlong *)(local_98 + 0x14) + 0xb8);
+          *(undefined2 *)(lVar23 + -0x48) = 0x70f;
+          *(undefined8 *)(lVar23 + -0x20) = uVar19;
+          *(undefined8 *)(lVar23 + -0x18) = local_58;
+          *(undefined4 *)(lVar23 + -0x3c) = 0;
+          *(uint *)(lVar23 + -0x40) = param_3;
           goto LAB_11;
         }
       }
       *(undefined8 *)(local_98 + 2) = 0;
       if (param_4 == (void *)0x0) {
         *local_98 = 0;
       }
       else {
         *(undefined8 *)(local_98 + 2) = 0x886103;
       }
       if ((*(uint *)(param_1 + 4) >> 0x16 & 1) == 0) {
-        uVar20 = local_58;
+        uVar19 = local_58;
         if ((*(uint *)(param_1 + 4) >> 0x15 & 1) != 0) {
-          AfdTdi_TA6toTA4_InPlace(*(int **)(local_98 + 10),puVar21);
-          uVar20 = local_58;
+          AfdTdi_TA6toTA4_InPlace(*(int **)(local_98 + 10),puVar20);
+          uVar19 = local_58;
         }
       }
       else {
-        uVar19 = AfdTdi_TA6toTA4_InPlace(*(int **)(local_98 + 10),puVar21);
-        uVar20 = local_58;
-        if ((char)uVar19 != '\0') {
-          local_78 = *(undefined8 *)(*(longlong *)(param_1 + 0x88) + 0x10);
-          uVar20 = *(undefined8 *)(*(longlong *)(param_1 + 0x88) + 8);
-        }
-      }
-      lVar5 = *(longlong *)(*(longlong *)(puVar18 + 0x14) + 0xb8);
-      *(code **)(lVar5 + -0x10) = AfdRestartFastDatagramSend;
-      *(undefined4 **)(lVar5 + -8) = puVar10;
-      *(undefined1 *)(lVar5 + -0x45) = 0xe0;
-      lVar5 = *(longlong *)(*(longlong *)(puVar10 + 0x14) + 0xb8);
-      *(undefined2 *)(lVar5 + -0x48) = 0x90f;
-      *(undefined8 *)(lVar5 + -0x20) = local_78;
-      *(undefined8 *)(lVar5 + -0x18) = uVar20;
-      *(uint *)(lVar5 + -0x40) = param_3;
-      *(undefined4 **)(lVar5 + -0x38) = puVar10;
-      uVar20 = local_78;
+        uVar18 = AfdTdi_TA6toTA4_InPlace(*(int **)(local_98 + 10),puVar20);
+        uVar19 = local_58;
+        if ((char)uVar18 != '\0') {
+          local_80 = *(undefined8 *)(*(longlong *)(param_1 + 0x88) + 0x10);
+          uVar19 = *(undefined8 *)(*(longlong *)(param_1 + 0x88) + 8);
+        }
+      }
+      lVar23 = *(longlong *)(*(longlong *)(puVar17 + 0x14) + 0xb8);
+      *(code **)(lVar23 + -0x10) = AfdRestartFastDatagramSend;
+      *(undefined4 **)(lVar23 + -8) = puVar9;
+      *(undefined1 *)(lVar23 + -0x45) = 0xe0;
+      lVar23 = *(longlong *)(*(longlong *)(puVar9 + 0x14) + 0xb8);
+      *(undefined2 *)(lVar23 + -0x48) = 0x90f;
+      *(undefined8 *)(lVar23 + -0x20) = local_80;
+      *(undefined8 *)(lVar23 + -0x18) = uVar19;
+      *(uint *)(lVar23 + -0x40) = param_3;
+      *(undefined4 **)(lVar23 + -0x38) = puVar9;
+      uVar19 = local_80;
     }
 LAB_11:
-    uVar19 = 0;
-    uVar15 = param_3;
+    uVar18 = 0;
+    uVar14 = param_3;
     if ((*(uint *)(param_1 + 4) >> 8 & 1) != 0) {
-      uVar15 = local_84;
-    }
-    *(uint *)(*(longlong *)(puVar18 + 0xe) + 0x28) = uVar15;
+      uVar14 = local_84;
+    }
+    *(uint *)(*(longlong *)(puVar17 + 0xe) + 0x28) = uVar14;
     LOCK();
     puVar1 = param_1 + 0x20;
-    lVar5 = *(longlong *)puVar1;
+    lVar23 = *(longlong *)puVar1;
     *(longlong *)puVar1 = *(longlong *)puVar1 + 1;
     UNLOCK();
-    puVar22 = auStack_108;
-    if (lVar5 + 1 < 2) {
-      pcVar8 = (code *)swi(0x29);
-      (*pcVar8)(0xe);
-      puVar22 = auStack_100;
-    }
-    lVar5 = *(longlong *)(puVar22 + 0x70);
-    *(undefined8 *)(lVar5 + 0x30) = uVar19;
+    puVar21 = auStack_108;
+    if (lVar23 + 1 < 2) {
+      pcVar7 = (code *)swi(0x29);
+      (*pcVar7)(0xe);
+      puVar21 = auStack_100;
+    }
+    lVar23 = *(longlong *)(puVar21 + 0x70);
+    *(undefined8 *)(lVar23 + 0x30) = uVar18;
     if (*(longlong *)(param_1 + 0xb0) == 0) {
 LAB_12:
-      uVar15 = *(uint *)(param_1 + 4);
+      uVar14 = *(uint *)(param_1 + 4);
       uVar3 = *(uint *)((longlong)param_2 + 0xc);
-      *(uint *)(puVar22 + 0x50) = uVar3;
-      lVar7 = *(longlong *)(puVar22 + 0x70);
-      if ((uVar15 >> 8 & 1) == 0) {
-        *(undefined8 *)(puVar22 + 0x48) = *(undefined8 *)(lVar7 + 0x50);
-        *(undefined8 *)(puVar22 + 0x40) = *(undefined8 *)(puVar18 + 10);
-        *(uint *)(puVar22 + 0x30) = param_3;
-        *(undefined8 *)(puVar22 + 0x28) = *(undefined8 *)(puVar18 + 0xe);
-        *(undefined4 *)(puVar22 + 0x20) = *(undefined4 *)(*(longlong *)(puVar22 + 0x118) + 8);
-        *(undefined8 *)(puVar22 + -8) = 0x140034cae;
+      *(uint *)(puVar21 + 0x50) = uVar3;
+      lVar6 = *(longlong *)(puVar21 + 0x70);
+      if ((uVar14 >> 8 & 1) == 0) {
+        *(undefined8 *)(puVar21 + 0x48) = *(undefined8 *)(lVar6 + 0x50);
+        *(undefined8 *)(puVar21 + 0x40) = *(undefined8 *)(puVar17 + 10);
+        *(uint *)(puVar21 + 0x30) = param_3;
+        *(undefined8 *)(puVar21 + 0x28) = *(undefined8 *)(puVar17 + 0xe);
+        *(undefined4 *)(puVar21 + 0x20) = *(undefined4 *)(*(longlong *)(puVar21 + 0x118) + 8);
+        *(undefined8 *)(puVar21 + -8) = 0x140033e31;
         AFDETW_TRACESENDDATAGRAM((ulonglong)uVar3,0xc1d,(short *)param_1);
-        uVar19 = *(undefined8 *)(lVar7 + 0x50);
-        *(undefined8 *)(puVar22 + -8) = 0x140034cbc;
-        iVar16 = IofCallDriver(uVar20,uVar19);
+        uVar18 = *(undefined8 *)(lVar6 + 0x50);
+        *(undefined8 *)(puVar21 + -8) = 0x140033e3f;
+        iVar15 = IofCallDriver(uVar19,uVar18);
       }
       else {
-        *(longlong *)(puVar22 + 0x48) = lVar7;
-        *(undefined8 *)(puVar22 + 0x40) = *(undefined8 *)(puVar18 + 10);
-        *(uint *)(puVar22 + 0x30) = param_3;
-        *(undefined8 *)(puVar22 + 0x28) = *(undefined8 *)(puVar18 + 0xe);
-        *(undefined4 *)(puVar22 + 0x20) = *(undefined4 *)(*(longlong *)(puVar22 + 0x118) + 8);
-        *(undefined8 *)(puVar22 + -8) = 0x140034c68;
+        *(longlong *)(puVar21 + 0x48) = lVar6;
+        *(undefined8 *)(puVar21 + 0x40) = *(undefined8 *)(puVar17 + 10);
+        *(uint *)(puVar21 + 0x30) = param_3;
+        *(undefined8 *)(puVar21 + 0x28) = *(undefined8 *)(puVar17 + 0xe);
+        *(undefined4 *)(puVar21 + 0x20) = *(undefined4 *)(*(longlong *)(puVar21 + 0x118) + 8);
+        *(undefined8 *)(puVar21 + -8) = 0x140033deb;
         AFDETW_TRACESENDDATAGRAM((ulonglong)uVar3,0xc1c,(short *)param_1);
-        *(undefined8 *)(puVar22 + -8) = 0x140034c73;
-        iVar16 = AfdTLFastDgramSend(param_1,lVar7);
+        *(undefined8 *)(puVar21 + -8) = 0x140033df6;
+        iVar15 = AfdTLFastDgramSend((longlong)param_1,lVar6);
       }
     }
     else {
-      psVar6 = *(short **)(lVar5 + 0x50);
-      *(undefined8 *)(puVar22 + -8) = 0x140034c0d;
-      cVar11 = AfdEnqueueTpSendIrp(param_1,psVar6,0,lVar5);
-      if (cVar11 == '\0') goto LAB_12;
-      iVar16 = 0x103;
-    }
-    *(int *)(puVar22 + 0x60) = iVar16;
+      psVar5 = *(short **)(lVar23 + 0x50);
+      *(undefined8 *)(puVar21 + -8) = 0x140033d90;
+      cVar10 = AfdEnqueueTpSendIrp((short *)param_1,psVar5,0,lVar23);
+      if (cVar10 == '\0') goto LAB_12;
+      iVar15 = 0x103;
+    }
+    *(int *)(puVar21 + 0x60) = iVar15;
     LOCK();
-    bVar24 = *(longlong *)(lVar5 + 0x30) == 0;
+    bVar24 = *(longlong *)(lVar23 + 0x30) == 0;
     if (bVar24) {
-      *(longlong *)(lVar5 + 0x30) = (longlong)param_1;
+      *(longlong *)(lVar23 + 0x30) = (longlong)param_1;
     }
     UNLOCK();
     if (bVar24) {
-      iVar16 = *(int *)(puVar22 + 0x60);
+      iVar15 = *(int *)(puVar21 + 0x60);
     }
     else {
-      lVar5 = *(longlong *)(puVar22 + 0x70);
-      iVar16 = *(int *)(*(longlong *)(lVar5 + 0x50) + 0x30);
-      *(int *)(puVar22 + 0x88) = iVar16;
-      *(int *)(puVar22 + 0x60) = iVar16;
-      *(undefined8 *)(puVar22 + -8) = 0x140034cfd;
-      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar22 + 0x98);
-      uVar15 = *(int *)(param_1 + 0x4e) - param_3;
-      *(uint *)(param_1 + 0x4e) = uVar15;
-      if ((uVar15 < *(uint *)(param_1 + 0x50)) || (uVar15 == 0)) {
-        *(undefined8 *)(puVar22 + -8) = 0x140034d45;
+      lVar23 = *(longlong *)(puVar21 + 0x70);
+      iVar15 = *(int *)(*(longlong *)(lVar23 + 0x50) + 0x30);
+      *(int *)(puVar21 + 0x60) = iVar15;
+      *(undefined8 *)(puVar21 + -8) = 0x140033e7b;
+      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar21 + 0x90);
+      uVar14 = *(int *)(param_1 + 0x4e) - param_3;
+      *(uint *)(param_1 + 0x4e) = uVar14;
+      if ((uVar14 < *(uint *)(param_1 + 0x50)) || (uVar14 == 0)) {
+        *(undefined8 *)(puVar21 + -8) = 0x140033ec3;
         AfdIndicateEventSelectEvent((short *)param_1,4,0);
         if (*(longlong *)(param_1 + 0xbc) != 0) {
           puVar1 = (ushort *)(*(longlong *)(param_1 + 0xbc) + 100);
           *puVar1 = *puVar1 | 4;
         }
-        *(undefined8 *)(puVar22 + -8) = 0x140034d6d;
-        uVar20 = AfdIndicatePollEvent((short *)param_1,4,0,puVar22 + 0x98);
-        if ((char)uVar20 == '\0') {
-          cVar11 = '\0';
-          *(undefined8 *)(puVar22 + 0xb8) = 0;
-          *(undefined8 *)(puVar22 + 0xc0) = 0;
-          *(undefined8 *)(puVar22 + 200) = 0;
+        *(undefined8 *)(puVar21 + -8) = 0x140033eeb;
+        uVar19 = AfdIndicatePollEvent((short *)param_1,4,0,puVar21 + 0x90);
+        if ((char)uVar19 == '\0') {
+          cVar10 = '\0';
+          *(undefined8 *)(puVar21 + 0xb8) = 0;
+          *(undefined8 *)(puVar21 + 0xc0) = 0;
+          *(undefined8 *)(puVar21 + 200) = 0;
           if (*(longlong *)(param_1 + 0xbc) != 0) {
-            *(undefined8 *)(puVar22 + -8) = 0x140034da8;
-            cVar13 = ExAcquireRundownProtection(param_1 + 0xc0);
-            if (cVar13 != '\0') {
-              puVar22[0x110] = 1;
-              bVar24 = true;
-              lVar7 = *(longlong *)(param_1 + 0xbc);
-              *(undefined8 *)(puVar22 + 0x90) = *(undefined8 *)(lVar7 + 0x40);
-              uVar2 = *(ushort *)(lVar7 + 0x6a);
+            *(undefined8 *)(puVar21 + -8) = 0x140033f25;
+            cVar12 = ExAcquireRundownProtection(param_1 + 0xc0);
+            if (cVar12 != '\0') {
+              puVar21[100] = 1;
+              cVar10 = '\x01';
+              lVar6 = *(longlong *)(param_1 + 0xbc);
+              *(undefined8 *)(puVar21 + 0x88) = *(undefined8 *)(lVar6 + 0x40);
+              uVar2 = *(ushort *)(lVar6 + 0x6a);
               if ((uVar2 & 2) == 0) {
-                uVar23 = uVar2 | 2;
-                *(ushort *)(lVar7 + 0x6a) = uVar23;
+                uVar22 = uVar2 | 2;
+                *(ushort *)(lVar6 + 0x6a) = uVar22;
                 while ((uVar2 & 1) == 0) {
-                  *(undefined8 *)(puVar22 + -8) = 0x140034dfc;
-                  uVar14 = AfdNotifyComputeEvents(lVar7);
-                  *(undefined2 *)(lVar7 + 0x66) = *(undefined2 *)(lVar7 + 100);
-                  uVar2 = *(ushort *)(lVar7 + 0x68);
-                  if (uVar14 == uVar2) {
-                    if ((*(byte *)(lVar7 + 99) & 1) != 0) {
-                      uVar23 = uVar23 | 4;
+                  *(undefined8 *)(puVar21 + -8) = 0x140033f78;
+                  uVar13 = AfdNotifyComputeEvents(lVar6);
+                  *(undefined2 *)(lVar6 + 0x66) = *(undefined2 *)(lVar6 + 100);
+                  uVar2 = *(ushort *)(lVar6 + 0x68);
+                  if (uVar13 == uVar2) {
+                    if ((*(byte *)(lVar6 + 99) & 1) != 0) {
+                      uVar22 = uVar22 | 4;
                     }
 LAB_13:
-                    *(ushort *)(lVar7 + 0x6a) = uVar23 & 0xfffd;
-                    bVar24 = true;
+                    *(ushort *)(lVar6 + 0x6a) = uVar22 & 0xfffd;
+                    cVar10 = '\x01';
                     goto LAB_14;
                   }
-                  if ((uVar2 & uVar14) != 0) goto LAB_13;
+                  if ((uVar2 & uVar13) != 0) goto LAB_13;
                   if (uVar2 == 0) {
-                    *(ushort *)(lVar7 + 0x68) = uVar14;
-                    *(undefined8 *)(puVar22 + -8) = 0x140034ec7;
-                    KeReleaseInStackQueuedSpinLock(puVar22 + 0x98);
-                    *(undefined8 *)(puVar22 + -8) = 0x140034edb;
-                    ObfReferenceObject(*(undefined8 *)(puVar22 + 0x90));
-                    puVar22[0x40] = AfdPriorityBoost;
-                    puVar22[0x38] = 0;
-                    *(longlong *)(puVar22 + 0x30) = lVar7;
-                    puVar22[0x28] = 0;
-                    *(ulonglong *)(puVar22 + 0x20) = (ulonglong)uVar14;
-                    uVar20 = *(undefined8 *)(lVar7 + 0x58);
-                    uVar19 = *(undefined8 *)(lVar7 + 0x50);
-                    *(undefined8 *)(puVar22 + -8) = 0x140034f14;
-                    IoSetIoCompletionEx3(uVar19,uVar20,0,0);
-                    *(undefined8 *)(puVar22 + -8) = 0x140034f2c;
-                    KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar22 + 0x98);
+                    *(ushort *)(lVar6 + 0x68) = uVar13;
+                    *(undefined8 *)(puVar21 + -8) = 0x140034043;
+                    KeReleaseInStackQueuedSpinLock(puVar21 + 0x90);
+                    *(undefined8 *)(puVar21 + -8) = 0x140034057;
+                    ObfReferenceObject(*(undefined8 *)(puVar21 + 0x88));
+                    puVar21[0x40] = AfdPriorityBoost;
+                    puVar21[0x38] = 0;
+                    *(longlong *)(puVar21 + 0x30) = lVar6;
+                    puVar21[0x28] = 0;
+                    *(ulonglong *)(puVar21 + 0x20) = (ulonglong)uVar13;
+                    uVar19 = *(undefined8 *)(lVar6 + 0x58);
+                    uVar18 = *(undefined8 *)(lVar6 + 0x50);
+                    *(undefined8 *)(puVar21 + -8) = 0x140034090;
+                    IoSetIoCompletionEx3(uVar18,uVar19,0,0);
+                    *(undefined8 *)(puVar21 + -8) = 0x1400340a8;
+                    KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar21 + 0x90);
                   }
                   else {
-                    *(undefined8 *)(puVar22 + -8) = 0x140034e38;
-                    KeReleaseInStackQueuedSpinLock(puVar22 + 0x98);
-                    uVar20 = *(undefined8 *)(lVar7 + 0x50);
-                    *(undefined8 *)(puVar22 + -8) = 0x140034e4b;
-                    cVar11 = IoCancelMiniCompletionPacket(uVar20,lVar7);
-                    if (cVar11 == '\0') {
-                      *(undefined8 *)(puVar22 + -8) = 0x140034e67;
-                      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar22 + 0x98);
-                      if (*(short *)(lVar7 + 0x68) != 0) {
-                        *(ushort *)(lVar7 + 0x6a) = *(ushort *)(lVar7 + 0x6a) & 0xfffd;
-                        bVar24 = true;
+                    *(undefined8 *)(puVar21 + -8) = 0x140033fb4;
+                    KeReleaseInStackQueuedSpinLock(puVar21 + 0x90);
+                    uVar19 = *(undefined8 *)(lVar6 + 0x50);
+                    *(undefined8 *)(puVar21 + -8) = 0x140033fc7;
+                    cVar10 = IoCancelMiniCompletionPacket(uVar19,lVar6);
+                    if (cVar10 == '\0') {
+                      *(undefined8 *)(puVar21 + -8) = 0x140033fe3;
+                      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar21 + 0x90);
+                      if (*(short *)(lVar6 + 0x68) != 0) {
+                        *(ushort *)(lVar6 + 0x6a) = *(ushort *)(lVar6 + 0x6a) & 0xfffd;
+                        cVar10 = '\x01';
                         goto LAB_14;
                       }
                     }
                     else {
-                      *(undefined8 *)(puVar22 + -8) = 0x140034e96;
-                      ObfDereferenceObject(*(undefined8 *)(puVar22 + 0x90));
-                      *(undefined8 *)(puVar22 + -8) = 0x140034eae;
-                      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar22 + 0x98);
-                      *(undefined2 *)(lVar7 + 0x68) = 0;
+                      *(undefined8 *)(puVar21 + -8) = 0x140034012;
+                      ObfDereferenceObject(*(undefined8 *)(puVar21 + 0x88));
+                      *(undefined8 *)(puVar21 + -8) = 0x14003402a;
+                      KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar21 + 0x90);
+                      *(undefined2 *)(lVar6 + 0x68) = 0;
                     }
                   }
-                  uVar23 = *(ushort *)(lVar7 + 0x6a);
-                  uVar2 = uVar23;
+                  uVar22 = *(ushort *)(lVar6 + 0x6a);
+                  uVar2 = uVar22;
                 }
                 param_1[0xbc] = 0;
                 param_1[0xbd] = 0;
                 param_1[0xbe] = 0;
                 param_1[0xbf] = 0;
-                *(ushort *)(lVar7 + 0x6a) = *(ushort *)(lVar7 + 0x6a) & 0xfffd;
-                *(undefined8 *)(puVar22 + -8) = 0x140034f61;
-                KeReleaseInStackQueuedSpinLock(puVar22 + 0x98);
-                *(undefined8 *)(puVar22 + -8) = 0x140034f76;
-                AfdNotifyDestroyContext(*(undefined8 *)(puVar22 + 0x90),lVar7);
-                bVar24 = false;
+                *(ushort *)(lVar6 + 0x6a) = *(ushort *)(lVar6 + 0x6a) & 0xfffd;
+                *(undefined8 *)(puVar21 + -8) = 0x1400340dd;
+                KeReleaseInStackQueuedSpinLock(puVar21 + 0x90);
+                puVar21[0x110] = 0;
+                *(undefined8 *)(puVar21 + -8) = 0x1400340fa;
+                AfdNotifyDestroyContext(*(undefined8 *)(puVar21 + 0x88),lVar6);
+                if ((Feature_447951161__private_featureState & 0x10) == 0) {
+                  *(undefined8 *)(puVar21 + -8) = 0x14003412b;
+                  uVar16 = Feature_447951161__private_IsEnabledDeviceUsageNoInline();
+                  uVar14 = (uint)uVar16;
+                }
+                else {
+                  uVar14 = Feature_447951161__private_featureState & 1;
+                }
+                if (uVar14 != 0) {
+                  *(undefined8 *)(puVar21 + -8) = 0x14003413e;
+                  ExFreePoolWithTag(lVar6,0x4e646641);
+                }
+                cVar10 = puVar21[0x110];
+                iVar15 = *(int *)(puVar21 + 0x60);
+                lVar23 = *(longlong *)(puVar21 + 0x70);
               }
 LAB_14:
-              if (!bVar24) {
-                *(undefined8 *)(puVar22 + -8) = 0x140034f8f;
-                KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar22 + 0x98);
+              if (cVar10 == '\0') {
+                *(undefined8 *)(puVar21 + -8) = 0x14003416c;
+                KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,puVar21 + 0x90);
               }
-              cVar11 = puVar22[0x110];
-              iVar16 = *(int *)(puVar22 + 0x88);
+              cVar10 = puVar21[100];
+              param_3 = *(uint *)(puVar21 + 0x120);
             }
           }
-          *(undefined8 *)(puVar22 + -8) = 0x140034fb3;
-          KeReleaseInStackQueuedSpinLock(puVar22 + 0x98);
-          if (cVar11 != '\0') {
-            *(undefined8 *)(puVar22 + -8) = 0x140034fcb;
+          *(undefined8 *)(puVar21 + -8) = 0x14003418d;
+          KeReleaseInStackQueuedSpinLock(puVar21 + 0x90);
+          if (cVar10 != '\0') {
+            *(undefined8 *)(puVar21 + -8) = 0x1400341a4;
             ExReleaseRundownProtection(param_1 + 0xc0);
           }
         }
         else {
-          *(undefined8 *)(puVar22 + -8) = 0x140034ffc;
+          *(undefined8 *)(puVar21 + -8) = 0x1400341b8;
           AfdNotifySockIndicateEventsUnlock((longlong)param_1,(undefined8 *)0x0,'\0');
         }
       }
       else {
-        *(undefined8 *)(puVar22 + -8) = 0x140034d2c;
-        KeReleaseInStackQueuedSpinLock(puVar22 + 0x98);
-      }
-      if (*(longlong *)(lVar5 + 0x18) == 0) {
-        if (*(int *)(lVar5 + 0x20) == 0) {
-          *(longlong *)(puVar22 + 0x40) = lVar5;
-          *(int *)(puVar22 + 0x38) = iVar16;
-          *(uint *)(puVar22 + 0x30) = param_3;
-          *(undefined8 *)(puVar22 + 0x28) = *(undefined8 *)(puVar18 + 0xe);
-          *(undefined4 *)(puVar22 + 0x20) = 1;
-          *(undefined8 *)(puVar22 + -8) = 0x140035070;
-          AFDETW_TRACESEND(1,0xc81,(short *)param_1,1,*(undefined4 *)(puVar22 + 0x20),
-                           *(undefined8 *)(puVar22 + 0x28),*(undefined4 *)(puVar22 + 0x30),
-                           *(undefined4 *)(puVar22 + 0x38),*(short **)(puVar22 + 0x40));
+        *(undefined8 *)(puVar21 + -8) = 0x140033eaa;
+        KeReleaseInStackQueuedSpinLock(puVar21 + 0x90);
+      }
+      if (*(longlong *)(lVar23 + 0x18) == 0) {
+        if (*(int *)(lVar23 + 0x20) == 0) {
+          *(longlong *)(puVar21 + 0x40) = lVar23;
+          *(int *)(puVar21 + 0x38) = iVar15;
+          *(uint *)(puVar21 + 0x30) = param_3;
+          *(undefined8 *)(puVar21 + 0x28) = *(undefined8 *)(puVar17 + 0xe);
+          *(undefined4 *)(puVar21 + 0x20) = 1;
+          *(undefined8 *)(puVar21 + -8) = 0x14003422e;
+          AFDETW_TRACESEND(1,0xc81,(short *)param_1,1,*(undefined4 *)(puVar21 + 0x20),
+                           *(undefined8 *)(puVar21 + 0x28),*(undefined4 *)(puVar21 + 0x30),
+                           *(undefined4 *)(puVar21 + 0x38),*(short **)(puVar21 + 0x40));
         }
         else {
-          *(longlong *)(puVar22 + 0x48) = lVar5;
-          *(undefined8 *)(puVar22 + 0x40) = *(undefined8 *)(lVar5 + 0x28);
-          *(int *)(puVar22 + 0x38) = iVar16;
-          *(uint *)(puVar22 + 0x30) = param_3;
-          *(undefined8 *)(puVar22 + 0x28) = *(undefined8 *)(puVar18 + 0xe);
-          *(undefined4 *)(puVar22 + 0x20) = 1;
-          *(undefined8 *)(puVar22 + -8) = 0x1400350a4;
+          *(longlong *)(puVar21 + 0x48) = lVar23;
+          *(undefined8 *)(puVar21 + 0x40) = *(undefined8 *)(lVar23 + 0x28);
+          *(int *)(puVar21 + 0x38) = iVar15;
+          *(uint *)(puVar21 + 0x30) = param_3;
+          *(undefined8 *)(puVar21 + 0x28) = *(undefined8 *)(puVar17 + 0xe);
+          *(undefined4 *)(puVar21 + 0x20) = 1;
+          *(undefined8 *)(puVar21 + -8) = 0x140034263;
           AFDETW_TRACESENDTO(1,0xc82,(short *)param_1,1);
         }
       }
       else {
-        *(longlong *)(puVar22 + 0x48) = lVar5;
-        *(undefined8 *)(puVar22 + 0x40) = *(undefined8 *)(lVar5 + 0x28);
-        *(int *)(puVar22 + 0x38) = iVar16;
-        *(uint *)(puVar22 + 0x30) = param_3;
-        *(undefined8 *)(puVar22 + 0x28) = *(undefined8 *)(puVar18 + 0xe);
-        *(undefined4 *)(puVar22 + 0x20) = 1;
-        *(undefined8 *)(puVar22 + -8) = 0x14003503e;
+        *(longlong *)(puVar21 + 0x48) = lVar23;
+        *(undefined8 *)(puVar21 + 0x40) = *(undefined8 *)(lVar23 + 0x28);
+        *(int *)(puVar21 + 0x38) = iVar15;
+        *(uint *)(puVar21 + 0x30) = param_3;
+        *(undefined8 *)(puVar21 + 0x28) = *(undefined8 *)(puVar17 + 0xe);
+        *(undefined4 *)(puVar21 + 0x20) = 1;
+        *(undefined8 *)(puVar21 + -8) = 0x1400341fb;
         AFDETW_TRACESENDMSG((undefined4 *)0x1,0xc80,(short *)param_1,1);
       }
-      lVar7 = *(longlong *)(param_1 + 0x18);
-      *(undefined8 *)(puVar22 + -8) = 0x1400350b0;
-      AfdReturnBuffer(lVar5,lVar7);
-      *(undefined8 *)(puVar22 + -8) = 0x1400350b8;
+      lVar6 = *(longlong *)(param_1 + 0x18);
+      *(undefined8 *)(puVar21 + -8) = 0x14003426f;
+      AfdReturnBuffer(lVar23,lVar6);
+      *(undefined8 *)(puVar21 + -8) = 0x140034277;
       AfdDereferenceEndpoint(param_1);
     }
-    if (-1 < iVar16) {
-      puVar18 = *(undefined4 **)(puVar22 + 0x138);
-      *(ulonglong *)(puVar18 + 2) = (ulonglong)param_3;
-      *puVar18 = 0;
+    if (-1 < iVar15) {
+      puVar17 = *(undefined4 **)(puVar21 + 0x138);
+      *(ulonglong *)(puVar17 + 2) = (ulonglong)param_3;
+      *puVar17 = 0;
       return 1;
     }
   }
   else {
     if ((DAT_1 & 0x40) != 0) {
       local_e8 = param_1;
-      WPP_SF_DDq(0x10,uVar17,param_3,uVar15);
+      WPP_SF_DDq(0x10,uVar16,param_3,uVar14);
     }
     local_a8 = 0xc000000d;
-    AfdReturnBuffer((longlong)puVar18,*(longlong *)(param_1 + 0x18));
+    AfdReturnBuffer((longlong)puVar17,*(longlong *)(param_1 + 0x18));
 LAB_6:
-    KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_70);
+    KeAcquireInStackQueuedSpinLock(param_1 + 0x1c,&local_78);
     *(uint *)(param_1 + 0x4e) = *(int *)(param_1 + 0x4e) - param_3;
-    KeReleaseInStackQueuedSpinLock(&local_70);
+    KeReleaseInStackQueuedSpinLock(&local_78);
   }
 LAB_10:
-  uVar17 = (ulonglong)*(uint *)(param_1 + 4);
+  uVar16 = (ulonglong)*(uint *)(param_1 + 4);
   if (((*(uint *)(param_1 + 4) & 0x10) != 0) &&
-     (uVar17 = (ulonglong)*(uint *)(*(longlong *)(puVar22 + 0x118) + 0xc),
-     (*(uint *)(*(longlong *)(puVar22 + 0x118) + 0xc) & 2) == 0)) {
-    uVar4 = *(undefined4 *)(puVar22 + 0x60);
-    **(undefined4 **)(puVar22 + 0x138) = uVar4;
+     (uVar16 = (ulonglong)*(uint *)(*(longlong *)(puVar21 + 0x118) + 0xc),
+     (*(uint *)(*(longlong *)(puVar21 + 0x118) + 0xc) & 2) == 0)) {
+    uVar4 = *(undefined4 *)(puVar21 + 0x60);
+    **(undefined4 **)(puVar21 + 0x138) = uVar4;
     return CONCAT71((uint7)(uint3)((uint)uVar4 >> 8),1);
   }
 LAB_0:
-  return uVar17 & 0xffffffffffffff00;
+  return uVar16 & 0xffffffffffffff00;
 }
 

```


# Modified (No Code Changes)


*Slightly modified functions have no code changes, rather differnces in:*
- refcount
- length
- called
- calling
- name
- fullname

## NTOSKRNL.EXE::MmMapLockedPages

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|MmMapLockedPages|MmMapLockedPages|
|fullname|NTOSKRNL.EXE::MmMapLockedPages|NTOSKRNL.EXE::MmMapLockedPages|
|`refcount`|30|32|
|length|0|0|
|called|||
|calling|AfdConnectEventHandler<br>AfdGetAddress<br>AfdRestartSuperAcceptGetAddress<br>AfdSanAcceptCore<br>AfdSanAcquireContext<br>AfdSanConnectHandler<br>AfdSanFastTransferCtx<br>AfdServiceSuperAccept<br>AfdServiceWaitForListen<br>AfdTLCopyRemoteAndLocalAddresses|AfdConnectEventHandler<br>AfdGetAddress<br>AfdRestartSuperAcceptGetAddress<br>AfdSanAcceptCore<br>AfdSanAcquireContext<br>AfdSanConnectHandler<br>AfdSanFastTransferCtx<br>AfdServiceSuperAccept<br>AfdServiceWaitForListen<br>AfdTLCopyRemoteAndLocalAddresses|
|paramcount|0|0|
|`address`|EXTERNAL:000000d5|EXTERNAL:000000d6|
|sig|undefined MmMapLockedPages(void)|undefined MmMapLockedPages(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

## memcpy

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.82|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|memcpy|memcpy|
|fullname|memcpy|memcpy|
|`refcount`|179|182|
|length|537|537|
|called|||
|calling|<details><summary>Expand for full list:<br>AfdAddressListQuery<br>AfdAllocateEndpoint<br>AfdBReceiveEventHandler<br>AfdBind<br>AfdBufferReceiveDatagram<br>AfdBuildPacketChain<br>AfdCommonAddAddressHandler<br>AfdConnect<br>AfdConnectEventHandler<br>AfdCopyBufferArrayToBuffer<br>AfdCopyCMSGBuffer</summary>AfdCopyCMSGBuffer32<br>AfdCopyMdlChainToBufferAvoidMapping<br>AfdCreateSecurityDescriptor<br>AfdDoDatagramConnect<br>AfdExtractAfdSendMsgInfo<br>AfdFastDatagramReceive<br>AfdFastDatagramSend<br>AfdFastTransmitFile<br>AfdFinishSuperAccept<br>AfdGetConnectData<br>AfdGetContext<br>AfdGetRemoteAddress<br>AfdGetUnacceptedConnectData<br>AfdHandleIcmpError<br>AfdIssueDeviceControl<br>AfdNsiAddressChangeEvent<br>AfdRestartDelayedAcceptListen<br>AfdRestartSuperAcceptGetAddress<br>AfdRioFlushDgramSend<br>AfdRioGrowTable<br>AfdRioHandleDgramReceiveRequest<br>AfdRioResizeCq<br>AfdRioResizeRqPair<br>AfdRoutingInterfaceQuery<br>AfdSanAcceptCore<br>AfdSanAcquireContext<br>AfdSanConnectHandler<br>AfdSanFastTransferCtx<br>AfdSaveReceivedConnectData<br>AfdSend<br>AfdSendDatagram<br>AfdServiceSuperAccept<br>AfdServiceWaitForListen<br>AfdSetConnectData<br>AfdSetContext<br>AfdSetupReceiveDatagramIrp<br>AfdSuperConnect<br>AfdTLConnectEventHandler<br>AfdTLCopyRemoteAndLocalAddresses<br>AfdTLGetAddressComplete<br>AfdTLInspectEventHandler<br>AfdTdiCreateAO<br>AfdTliIoControl<br>AfdTliIoControlHandleSetQoS<br>AfdTraceLogTdiFilter<br>Atma_RecordRead_New<br>CopySingleConnectDataBuffer<br>Dhcid_RecordRead_New<br>Dns_ReadPacketNameImpl_New<br>Ds_RecordRead_New<br>Key_RecordRead_New<br>MarshalRpcRecordToDnsRecord<br>Minfo_RecordRead_New<br>Mx_RecordRead_New<br>Naptr_RecordRead_New<br>Nsec3Param_RecordRead_New<br>Nsec3_RecordRead_New<br>Nsec_RecordRead_New<br>Opt_RecordRead_New<br>Ptr_RecordRead_New<br>Sig_RecordRead_New<br>Soa_RecordRead_New<br>Srv_RecordRead_New<br>TLSA_RecordRead_New<br>Tsig_RecordRead_New<br>Txt_RecordRead_New<br>Wins_RecordRead_New<br>Winsr_RecordRead_New<br>WppTraceCallback<br>WskProAddressListQuery<br>WskProCompleteReceiveFromIrp<br>WskProIRPGetNameInfo<br>WskProTLEVENTConnect<br>WskTdiCOMPAcceptAddressQuery<br>WskTdiCOMPAddressQuery<br>WskTdiCOMPCOAListen<br>WskTdiConnectCore<br>WskTdiCreateAO<br>WskTdiEHConnect<br>WskTdiEHReceiveDatagram<br>WskTdiTLRequestConnect<br>WskTdiTLRequestIoControlEndpoint<br>WskTdiTLRequestSendMessages<br>rio_rq_deque</details>|<details><summary>Expand for full list:<br>AfdAddressListQuery<br>AfdAllocateEndpoint<br>AfdBReceiveEventHandler<br>AfdBind<br>AfdBufferReceiveDatagram<br>AfdBuildPacketChain<br>AfdCommonAddAddressHandler<br>AfdConnect<br>AfdConnectEventHandler<br>AfdCopyBufferArrayToBuffer<br>AfdCopyCMSGBuffer</summary>AfdCopyCMSGBuffer32<br>AfdCopyMdlChainToBufferAvoidMapping<br>AfdCreateSecurityDescriptor<br>AfdDoDatagramConnect<br>AfdExtractAfdSendMsgInfo<br>AfdFastDatagramReceive<br>AfdFastDatagramSend<br>AfdFastTransmitFile<br>AfdFinishSuperAccept<br>AfdGetConnectData<br>AfdGetContext<br>AfdGetRemoteAddress<br>AfdGetUnacceptedConnectData<br>AfdHandleIcmpError<br>AfdIssueDeviceControl<br>AfdNsiAddressChangeEvent<br>AfdRestartDelayedAcceptListen<br>AfdRestartSuperAcceptGetAddress<br>AfdRioFlushDgramSend<br>AfdRioGrowTable<br>AfdRioHandleDgramReceiveRequest<br>AfdRioResizeCq<br>AfdRioResizeRqPair<br>AfdRoutingInterfaceQuery<br>AfdSanAcceptCore<br>AfdSanAcquireContext<br>AfdSanConnectHandler<br>AfdSanFastTransferCtx<br>AfdSaveReceivedConnectData<br>AfdSend<br>AfdSendDatagram<br>AfdServiceSuperAccept<br>AfdServiceWaitForListen<br>AfdSetConnectData<br>AfdSetContext<br>AfdSetupReceiveDatagramIrp<br>AfdSuperConnect<br>AfdTLConnectEventHandler<br>AfdTLCopyRemoteAndLocalAddresses<br>AfdTLGetAddressComplete<br>AfdTLInspectEventHandler<br>AfdTdiCreateAO<br>AfdTliIoControl<br>AfdTliIoControlHandleSetQoS<br>AfdTraceLogTdiFilter<br>Atma_RecordRead_New<br>CopySingleConnectDataBuffer<br>Dhcid_RecordRead_New<br>Dns_ReadPacketNameImpl_New<br>Ds_RecordRead_New<br>Key_RecordRead_New<br>MarshalRpcRecordToDnsRecord<br>Minfo_RecordRead_New<br>Mx_RecordRead_New<br>Naptr_RecordRead_New<br>Nsec3Param_RecordRead_New<br>Nsec3_RecordRead_New<br>Nsec_RecordRead_New<br>Opt_RecordRead_New<br>Ptr_RecordRead_New<br>Sig_RecordRead_New<br>Soa_RecordRead_New<br>Srv_RecordRead_New<br>TLSA_RecordRead_New<br>Tsig_RecordRead_New<br>Txt_RecordRead_New<br>Wins_RecordRead_New<br>Winsr_RecordRead_New<br>WppTraceCallback<br>WskProAddressListQuery<br>WskProCompleteReceiveFromIrp<br>WskProIRPGetNameInfo<br>WskProTLEVENTConnect<br>WskTdiCOMPAcceptAddressQuery<br>WskTdiCOMPAddressQuery<br>WskTdiCOMPCOAListen<br>WskTdiConnectCore<br>WskTdiCreateAO<br>WskTdiEHConnect<br>WskTdiEHReceiveDatagram<br>WskTdiTLRequestConnect<br>WskTdiTLRequestIoControlEndpoint<br>WskTdiTLRequestSendMessages<br>rio_rq_deque</details>|
|paramcount|3|3|
|`address`|140074980|140075200|
|sig|void * __cdecl memcpy(void * _Dst, void * _Src, size_t _Size)|void * __cdecl memcpy(void * _Dst, void * _Src, size_t _Size)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## wil_details_IsEnabledFallback

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).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|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|fullname|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|`refcount`|15|16|
|length|140|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`|<details><summary>Expand for full list:<br>Feature_1149455673__private_IsEnabledFallback<br>Feature_1384345915__private_IsEnabledFallback<br>Feature_3261636923__private_IsEnabledFallback<br>Feature_3944182073__private_IsEnabledFallback<br>Feature_4190334265__private_IsEnabledFallback<br>Feature_428571963__private_IsEnabledFallback<br>Feature_4431_4260__private_IsEnabledFallback<br>Feature_57479439__private_IsEnabledFallback<br>Feature_682670395__private_IsEnabledFallback<br>Feature_Servicing_AudioVideoStutteringIssue__private_IsEnabledFallback<br>Feature_TCPIP_2025_Wave2_AfdRwLock__private_IsEnabledFallback</summary>Feature_TCPIP_2025_Wave2_AfdSd__private_IsEnabledFallback<br>Feature_TCPIP_2025_Wave2_LimitTcpRxBatchNonTdi__private_IsEnabledFallback<br>Feature_TCPIP_AfdFuzzing_58104732_Fix__private_IsEnabledFallback</details>|<details><summary>Expand for full list:<br>Feature_1149455673__private_IsEnabledFallback<br>Feature_1384345915__private_IsEnabledFallback<br>Feature_2829529401__private_IsEnabledFallback<br>Feature_3923194169__private_IsEnabledFallback<br>Feature_3944182073__private_IsEnabledFallback<br>Feature_4190334265__private_IsEnabledFallback<br>Feature_428571963__private_IsEnabledFallback<br>Feature_4431_4260__private_IsEnabledFallback<br>Feature_447951161__private_IsEnabledFallback<br>Feature_57479439__private_IsEnabledFallback<br>Feature_TCPIP_2025_Wave2_AfdRwLock__private_IsEnabledFallback</summary>Feature_TCPIP_2025_Wave2_AfdSd__private_IsEnabledFallback<br>Feature_TCPIP_2025_Wave2_LimitTcpRxBatchNonTdi__private_IsEnabledFallback<br>Feature_TCPIP_2025_Wave4_AfdTransmit_MSRC__private_IsEnabledFallback<br>Feature_TCPIP_AfdFuzzing_58104732_Fix__private_IsEnabledFallback</details>|
|paramcount|3|3|
|`address`|14004b4c8|14004bab4|
|sig|uint __fastcall wil_details_IsEnabledFallback(ulonglong param_1, int param_2, undefined8 * param_3)|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
@@ -3 +3,2 @@
-Feature_3261636923__private_IsEnabledFallback
+Feature_2829529401__private_IsEnabledFallback
+Feature_3923194169__private_IsEnabledFallback
@@ -7,0 +9 @@
+Feature_447951161__private_IsEnabledFallback
@@ -9,2 +10,0 @@
-Feature_682670395__private_IsEnabledFallback
-Feature_Servicing_AudioVideoStutteringIssue__private_IsEnabledFallback
@@ -13,0 +14 @@
+Feature_TCPIP_2025_Wave4_AfdTransmit_MSRC__private_IsEnabledFallback
```


## __security_check_cookie

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).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|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|__security_check_cookie|__security_check_cookie|
|fullname|__security_check_cookie|__security_check_cookie|
|`refcount`|156|157|
|length|30|30|
|called|__report_gsfailure|__report_gsfailure|
|`calling`|<details><summary>Expand for full list:<br>AFDETW_NRT_TRACE<br>AFDETW_RIO_TRACE_BUFFER_CLEANUP<br>AFDETW_RIO_TRACE_BUFFER_DEREGISTER<br>AFDETW_RIO_TRACE_BUFFER_REGISTER<br>AFDETW_RIO_TRACE_CQ_CLEANUP<br>AFDETW_RIO_TRACE_CQ_CLOSE<br>AFDETW_RIO_TRACE_CQ_CREATE<br>AFDETW_RIO_TRACE_CQ_NOTIFY<br>AFDETW_RIO_TRACE_CQ_RESIZE<br>AFDETW_RIO_TRACE_INVALID_BUFFERID<br>AFDETW_RIO_TRACE_INVALID_BUFFER_RANGE</summary>AFDETW_RIO_TRACE_INVALID_BUFFER_SHARING<br>AFDETW_RIO_TRACE_INVALID_BUFFER_SIZE<br>AFDETW_RIO_TRACE_REGDOMAIN_CREATE<br>AFDETW_RIO_TRACE_RQ_CLEANUP<br>AFDETW_RIO_TRACE_RQ_CREATE<br>AFDETW_RIO_TRACE_RQ_RESIZE<br>AFDETW_STARTACTIVITY<br>AFDETW_START_ACTIVITY_FASTIO<br>AFDETW_STOPACTIVITY<br>AFDETW_STOP_ACTIVITY_FASTIO<br>AFDETW_TRACEABORT<br>AFDETW_TRACEACCEPT<br>AFDETW_TRACEACCEPTEX<br>AFDETW_TRACEACCEPTPAUSE<br>AFDETW_TRACEACCEPT_CORE<br>AFDETW_TRACEACCEPT_ERROR<br>AFDETW_TRACEBIND<br>AFDETW_TRACEBSEND<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACEBUFFERTOBUFFER<br>AFDETW_TRACECONNECT<br>AFDETW_TRACECONNECTEX<br>AFDETW_TRACECONNECT_CORE<br>AFDETW_TRACECONNECT_INDICATION<br>AFDETW_TRACECREATE<br>AFDETW_TRACEDATAADDR_CORE<br>AFDETW_TRACEDATAGRAM_DROP<br>AFDETW_TRACEDATA_CORE<br>AFDETW_TRACEDATA_INDICATION<br>AFDETW_TRACEDISCONNECT<br>AFDETW_TRACELISTEN<br>AFDETW_TRACEOPTION<br>AFDETW_TRACERECV<br>AFDETW_TRACERECVDATAGRAM<br>AFDETW_TRACESEND<br>AFDETW_TRACESENDBACKLOG<br>AFDETW_TRACESENDDATAGRAM<br>AFDETW_TRACESENDMSG<br>AFDETW_TRACESENDTO<br>AFDETW_TRACESTATUS<br>AFDETW_TRACETRANSFER<br>AFDETW_TRACEWAITLISTEN<br>AfdAddressListQuery<br>AfdCleanupCore<br>AfdCloseCore<br>AfdCloseTransportEndpoint<br>AfdCompleteBufferedSendsUnlock<br>AfdConnectEventHandler<br>AfdCreateConnection<br>AfdCreateSecurityDescriptor<br>AfdDispatch<br>AfdEnumerateProcessDiagnostics<br>AfdEtwTraceEvent<br>AfdFastIoDeviceControl<br>AfdFreeEndpointResources<br>AfdGetAddress<br>AfdGetConnectData<br>AfdGetInformation<br>AfdGetSecurity<br>AfdGetTransportInfo<br>AfdGetUnacceptedConnectData<br>AfdHandleIcmpError<br>AfdInitializeData<br>AfdLRStartTimer<br>AfdNotifyIPAvailabilityConsumers<br>AfdNotifyRemoveIoCompletion<br>AfdNsiAddressChangeEventAtPassive<br>AfdNsiGetAddressProperties<br>AfdNsiGetBestIPv4RouteHelper<br>AfdNsiGetBestIPv6Route<br>AfdNsiRouteChangeCallback<br>AfdPartialDisconnect<br>AfdPcwProviderCallback<br>AfdPodInit<br>AfdQueryProviderInfo<br>AfdReadRegistry<br>AfdReadSingleParameter<br>AfdReceiveDatagramEventHandler<br>AfdRioFlushDgramSend<br>AfdRioFlushReceiveQueue<br>AfdRioHandleIcmpError<br>AfdRioValidateRequestBuffer<br>AfdRioValidateRequestBuffer_Old<br>AfdRoutingInterfaceQuery<br>AfdSanFastCementEndpoint<br>AfdSanFastCompleteAccept<br>AfdSanFastTransferCtx<br>AfdSetConnectData<br>AfdSetInLineMode<br>AfdSetInformation<br>AfdSetSecurity<br>AfdTLBufferedSendCompleteBatch<br>AfdTLFastDgramSend<br>AfdTLFastDgramSendComplete<br>AfdTLResumeConnectionSetup<br>AfdTLRioDgramReceiveEventHandler<br>AfdTLStartBufferedVcSend<br>AfdTLVcSendDgramComplete<br>AfdTdiCreateAO<br>AfdTdxCallbackRoutine<br>AfdTliIoControl<br>AfdTraceLogTdiFilter<br>AfdTransmitFile<br>AfdTransmitPackets<br>AfdTransmitPackets32<br>AfdUnbind<br>EtwEx_tidActivityInfo<br>EtwEx_tidActivityInfoTransfer<br>Ipv6UnicastAddressScope<br>KnrNrpCreateBinding<br>KnrNrpDnskQuery<br>KnrNrpGetAddressInfoW<br>KnrNrpGetNameInfoW<br>KnrNrpImpersonate<br>MicrosoftTelemetryAssertTriggeredWorker<br>Minfo_RecordRead_New<br>Mx_RecordRead_New<br>Naptr_RecordRead_New<br>Nsec_RecordRead_New<br>Ptr_RecordRead_New<br>Sig_RecordRead_New<br>Soa_RecordRead_New<br>Srv_RecordRead_New<br>TraceLoggingRegisterEx_EtwRegister_EtwSetInformation<br>Winsr_RecordRead_New<br>WskKnrCreateNameResNamedEvent<br>WskKnrDemandStartDns<br>WskProIRPResume<br>WskProTLEVENTConnect<br>WskProTLEVENTReceive<br>WskProTLReceiveComplete<br>WskProTLSendOrDisconnectComplete<br>WskTdiCOMPAcceptAddressQuery<br>WskTdiCOMPCOAListen<br>WskTdiCreateAO<br>WskTdiCreateCO<br>WskTdiResolveFamilyAndCreateAO<br>WskTdiWQRoutineEndpointCreate<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>AFDETW_NRT_TRACE<br>AFDETW_RIO_TRACE_BUFFER_CLEANUP<br>AFDETW_RIO_TRACE_BUFFER_DEREGISTER<br>AFDETW_RIO_TRACE_BUFFER_REGISTER<br>AFDETW_RIO_TRACE_CQ_CLEANUP<br>AFDETW_RIO_TRACE_CQ_CLOSE<br>AFDETW_RIO_TRACE_CQ_CREATE<br>AFDETW_RIO_TRACE_CQ_NOTIFY<br>AFDETW_RIO_TRACE_CQ_RESIZE<br>AFDETW_RIO_TRACE_INVALID_BUFFERID<br>AFDETW_RIO_TRACE_INVALID_BUFFER_RANGE</summary>AFDETW_RIO_TRACE_INVALID_BUFFER_SHARING<br>AFDETW_RIO_TRACE_INVALID_BUFFER_SIZE<br>AFDETW_RIO_TRACE_REGDOMAIN_CREATE<br>AFDETW_RIO_TRACE_RQ_CLEANUP<br>AFDETW_RIO_TRACE_RQ_CREATE<br>AFDETW_RIO_TRACE_RQ_RESIZE<br>AFDETW_STARTACTIVITY<br>AFDETW_START_ACTIVITY_FASTIO<br>AFDETW_STOPACTIVITY<br>AFDETW_STOP_ACTIVITY_FASTIO<br>AFDETW_TRACEABORT<br>AFDETW_TRACEACCEPT<br>AFDETW_TRACEACCEPTEX<br>AFDETW_TRACEACCEPTPAUSE<br>AFDETW_TRACEACCEPT_CORE<br>AFDETW_TRACEACCEPT_ERROR<br>AFDETW_TRACEBIND<br>AFDETW_TRACEBSEND<br>AFDETW_TRACEBUFFER<br>AFDETW_TRACEBUFFERTOBUFFER<br>AFDETW_TRACECLOSE<br>AFDETW_TRACECONNECT<br>AFDETW_TRACECONNECTEX<br>AFDETW_TRACECONNECT_CORE<br>AFDETW_TRACECONNECT_INDICATION<br>AFDETW_TRACECREATE<br>AFDETW_TRACEDATAADDR_CORE<br>AFDETW_TRACEDATAGRAM_DROP<br>AFDETW_TRACEDATA_CORE<br>AFDETW_TRACEDATA_INDICATION<br>AFDETW_TRACEDISCONNECT<br>AFDETW_TRACELISTEN<br>AFDETW_TRACEOPTION<br>AFDETW_TRACERECV<br>AFDETW_TRACERECVDATAGRAM<br>AFDETW_TRACESEND<br>AFDETW_TRACESENDBACKLOG<br>AFDETW_TRACESENDDATAGRAM<br>AFDETW_TRACESENDMSG<br>AFDETW_TRACESENDTO<br>AFDETW_TRACESTATUS<br>AFDETW_TRACETRANSFER<br>AFDETW_TRACEWAITLISTEN<br>AfdAddressListQuery<br>AfdBind<br>AfdCleanupCore<br>AfdCloseTransportEndpoint<br>AfdCompleteBufferedSendsUnlock<br>AfdConnectEventHandler<br>AfdCreateConnection<br>AfdCreateSecurityDescriptor<br>AfdDispatch<br>AfdEnumerateProcessDiagnostics<br>AfdEtwTraceEvent<br>AfdFastIoDeviceControl<br>AfdFreeEndpointResources<br>AfdGetAddress<br>AfdGetConnectData<br>AfdGetInformation<br>AfdGetSecurity<br>AfdGetTransportInfo<br>AfdGetUnacceptedConnectData<br>AfdHandleIcmpError<br>AfdInitializeData<br>AfdLRStartTimer<br>AfdNotifyIPAvailabilityConsumers<br>AfdNotifyRemoveIoCompletion<br>AfdNsiAddressChangeEventAtPassive<br>AfdNsiGetAddressProperties<br>AfdNsiGetBestIPv4RouteHelper<br>AfdNsiGetBestIPv6Route<br>AfdNsiRouteChangeCallback<br>AfdPartialDisconnect<br>AfdPcwProviderCallback<br>AfdPodInit<br>AfdQueryProviderInfo<br>AfdReadRegistry<br>AfdReadSingleParameter<br>AfdReceiveDatagramEventHandler<br>AfdRioFlushDgramSend<br>AfdRioFlushReceiveQueue<br>AfdRioHandleIcmpError<br>AfdRioValidateRequestBuffer<br>AfdRioValidateRequestBuffer_Old<br>AfdRoutingInterfaceQuery<br>AfdSanFastCementEndpoint<br>AfdSanFastCompleteAccept<br>AfdSanFastTransferCtx<br>AfdSetConnectData<br>AfdSetInLineMode<br>AfdSetInformation<br>AfdSetSecurity<br>AfdTLBufferedSendCompleteBatch<br>AfdTLFastDgramSend<br>AfdTLFastDgramSendComplete<br>AfdTLResumeConnectionSetup<br>AfdTLRioDgramReceiveEventHandler<br>AfdTLStartBufferedVcSend<br>AfdTLVcSendDgramComplete<br>AfdTdiCreateAO<br>AfdTdxCallbackRoutine<br>AfdTliIoControl<br>AfdTraceLogTdiFilter<br>AfdTransmitFile<br>AfdTransmitPackets<br>AfdTransmitPackets32<br>AfdUnbind<br>EtwEx_tidActivityInfo<br>EtwEx_tidActivityInfoTransfer<br>Ipv6UnicastAddressScope<br>KnrNrpCreateBinding<br>KnrNrpDnskQuery<br>KnrNrpGetAddressInfoW<br>KnrNrpGetNameInfoW<br>KnrNrpImpersonate<br>MicrosoftTelemetryAssertTriggeredWorker<br>Minfo_RecordRead_New<br>Mx_RecordRead_New<br>Naptr_RecordRead_New<br>Nsec_RecordRead_New<br>Ptr_RecordRead_New<br>Sig_RecordRead_New<br>Soa_RecordRead_New<br>Srv_RecordRead_New<br>TraceLoggingRegisterEx_EtwRegister_EtwSetInformation<br>Winsr_RecordRead_New<br>WskKnrCreateNameResNamedEvent<br>WskKnrDemandStartDns<br>WskProIRPResume<br>WskProTLEVENTConnect<br>WskProTLEVENTReceive<br>WskProTLReceiveComplete<br>WskProTLSendOrDisconnectComplete<br>WskTdiCOMPAcceptAddressQuery<br>WskTdiCOMPCOAListen<br>WskTdiCreateAO<br>WskTdiCreateCO<br>WskTdiResolveFamilyAndCreateAO<br>WskTdiWQRoutineEndpointCreate<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`|140074850|1400750c0|
|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
@@ -31,0 +32 @@
+AFDETW_TRACECLOSE
@@ -54,0 +56 @@
+AfdBind
@@ -56 +57,0 @@
-AfdCloseCore
```


## __GSHandlerCheck_SEH

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: |
|diff_type|refcount,address|
|ratio|1.0|
|i_ratio|0.93|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|__GSHandlerCheck_SEH|__GSHandlerCheck_SEH|
|fullname|__GSHandlerCheck_SEH|__GSHandlerCheck_SEH|
|`refcount`|24|25|
|length|133|133|
|called|__C_specific_handler<br>__GSHandlerCheckCommon|__C_specific_handler<br>__GSHandlerCheckCommon|
|calling|||
|paramcount|4|4|
|`address`|1400747b4|140075024|
|sig|undefined __fastcall __GSHandlerCheck_SEH(_EXCEPTION_RECORD * param_1, void * param_2, _CONTEXT * param_3, _DISPATCHER_CONTEXT * param_4)|undefined __fastcall __GSHandlerCheck_SEH(_EXCEPTION_RECORD * param_1, void * param_2, _CONTEXT * param_3, _DISPATCHER_CONTEXT * param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## NTOSKRNL.EXE::ExFreePoolWithTag

### Match Info



|Key|afd-10.0.26100.7623 (WinBuild.160101.0800).sys - afd-10.0.26100.7824 (WinBuild.160101.0800).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|afd-10.0.26100.7623 (WinBuild.160101.0800).sys|afd-10.0.26100.7824 (WinBuild.160101.0800).sys|
| :---: | :---: | :---: |
|name|ExFreePoolWithTag|ExFreePoolWithTag|
|fullname|NTOSKRNL.EXE::ExFreePoolWithTag|NTOSKRNL.EXE::ExFreePoolWithTag|
|`refcount`|231|256|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>AfdAccept<br>AfdAddressListChange<br>AfdAllocateBuffer<br>AfdAllocateEndpoint<br>AfdBind<br>AfdBuildDeviceAcl<br>AfdCancelAddressListChange<br>AfdCancelRouteChange<br>AfdCaptureCreatorSD<br>AfdCleanupAddressListChange<br>AfdCleanupCompartment</summary>AfdCleanupCore<br>AfdCleanupRouteChange<br>AfdCommonDelAddressHandler<br>AfdCompleteTliIoControlCore<br>AfdConnect<br>AfdConnectEventHandler<br>AfdCreateSecurityDescriptor<br>AfdDeregisterPnPHandlers<br>AfdDnskNotifyAttachClient<br>AfdDnskNotifyCleanupClientContext<br>AfdDoDatagramConnect<br>AfdEnumerateProcessDiagnostics<br>AfdExtractAfdSendMsgInfo<br>AfdFastIoDeviceControl<br>AfdFinishSuperAccept<br>AfdFreeBuffer<br>AfdFreeBufferTag<br>AfdFreeConnectDataBuffers<br>AfdFreeConnectionResources<br>AfdFreeEndpointResources<br>AfdFreePollInfo<br>AfdFreeRemoteAddress<br>AfdFreeTpInfo<br>AfdFreeTransportInfo<br>AfdGetBufferSlow<br>AfdGetBufferTag<br>AfdGetSecurity<br>AfdGetTransportInfo<br>AfdInitTimerWheel<br>AfdNotifyDestroyContext<br>AfdNotifyRemoveIoCompletion<br>AfdNsiAddressChangeEvent<br>AfdNsiAddressChangeEventWorker<br>AfdPartialDisconnect<br>AfdPcwCleanup<br>AfdPcwInit<br>AfdPoll32<br>AfdProcessAddressChangeList<br>AfdReceive<br>AfdRestartConnect<br>AfdRestartDelayedAcceptListen<br>AfdRestartDgConnect<br>AfdRestartReceive<br>AfdRestartSendConnDatagram<br>AfdReturnBuffer<br>AfdReturnTpInfo<br>AfdRioCleanupBuffer<br>AfdRioCleanupBufferCache<br>AfdRioCleanupCq<br>AfdRioCleanupRioState<br>AfdRioCreateCompletionQueue<br>AfdRioCreateRegistrationDomain<br>AfdRioFlushDgramSend<br>AfdRioGrowTable<br>AfdRioInvalidateBuffer<br>AfdRioResizeCq<br>AfdRioResizeRqPair<br>AfdRouteChangeCallback<br>AfdRoutingInterfaceChange<br>AfdRoutingInterfaceQuery<br>AfdSanAcquireContext<br>AfdSanConnectHandler<br>AfdSanFastTransferCtx<br>AfdSanProcessAddrListForProviderChange<br>AfdSanRestartRequestProcessing<br>AfdSaveReceivedConnectData<br>AfdSend<br>AfdSetConnectData<br>AfdSetContext<br>AfdSetSecurity<br>AfdSetupAcceptEndpoint<br>AfdStopTimerWheel<br>AfdTDISendMessage<br>AfdTDISendMsgComplete<br>AfdTLBindComplete2<br>AfdTLBufferedSendCompleteBatch<br>AfdTLConnectEventHandler<br>AfdTLFastDgramSend<br>AfdTLFastDgramSendComplete<br>AfdTLInspectEventHandler<br>AfdTLSendMsgComplete<br>AfdTdiCreateAO<br>AfdTerminateGroup<br>AfdTlNotifyAttachProvider<br>AfdTlNotifyCleanupProviderContext<br>AfdTlStartClientModule<br>AfdTlStopClientModule<br>AfdTliIoControl<br>AfdTliIoControlHandleAssociateQoS<br>AfdTliIoControlHandleSetQoS<br>AfdTransmitPackets<br>AfdTransmitPackets32<br>AfdUnBindSocket<br>AfdUnload<br>AfdWskNotifyAttachClient<br>AfdWskNotifyCleanupClientContext<br>Dns_RecordFree_New<br>Dns_RecordListRpcSafeFree<br>DriverEntry<br>KnrNrpFreeAddressInfoW<br>MIDL_user_free<br>MarshalRpcRecordListToDnsRecordList_New<br>PplDestroyLookasideList<br>PplpCreateLookasideListEx<br>Rpc_Free<br>Tkey_RecordRead_New<br>Tsig_RecordRead_New<br>WskKnrFreeRequest<br>WskKnrRpcCloseBinding<br>WskKnrRpcOpenBinding<br>WskProAPIDnskFreeQueryResults<br>WskProAllocateConnectExContext<br>WskProCleanupConnectExContext<br>WskTdiCloseEndpoint<br>WskTdiConnectFinish<br>WskTdiCreateAO<br>WskTdiEHReceive<br>WskTdiEHReceiveDatagram<br>WskTdiFreeDatagramIndicationResources<br>WskTdiFreeEndpoint<br>WskTdiPopulateReadyEndpoints<br>WskTdiTLRequestConnect<br>WskTdiTLRequestReleaseIndicationList<br>WskTdiWQRoutineEndpointBind<br>WskTdiWQRoutineEndpointCreate</details>|<details><summary>Expand for full list:<br>AfdAccept<br>AfdAddressListChange<br>AfdAllocateBuffer<br>AfdAllocateEndpoint<br>AfdBCommonChainedReceiveEventHandler<br>AfdBReceive<br>AfdBind<br>AfdBuildDeviceAcl<br>AfdCancelAddressListChange<br>AfdCancelRouteChange<br>AfdCaptureCreatorSD</summary>AfdCleanupAddressListChange<br>AfdCleanupCompartment<br>AfdCleanupCore<br>AfdCleanupRouteChange<br>AfdCloseCore<br>AfdCommonDelAddressHandler<br>AfdCompleteBufferedSendsUnlock<br>AfdCompleteTliIoControlCore<br>AfdConnect<br>AfdConnectEventHandler<br>AfdCreateSecurityDescriptor<br>AfdDeregisterPnPHandlers<br>AfdDnskNotifyAttachClient<br>AfdDnskNotifyCleanupClientContext<br>AfdDoDatagramConnect<br>AfdEnumerateProcessDiagnostics<br>AfdExtractAfdSendMsgInfo<br>AfdFastConnectionReceive<br>AfdFastConnectionSend<br>AfdFastDatagramReceive<br>AfdFastDatagramSend<br>AfdFastIoDeviceControl<br>AfdFinishSuperAccept<br>AfdFreeBuffer<br>AfdFreeBufferTag<br>AfdFreeConnectDataBuffers<br>AfdFreeConnectionResources<br>AfdFreeEndpointResources<br>AfdFreePollInfo<br>AfdFreeRemoteAddress<br>AfdFreeTpInfo<br>AfdFreeTransportInfo<br>AfdGetBufferSlow<br>AfdGetBufferTag<br>AfdGetSecurity<br>AfdGetTransportInfo<br>AfdInitTimerWheel<br>AfdNotifyDestroyContext<br>AfdNotifyPostEvents<br>AfdNotifyProcessRegistration<br>AfdNotifyRemoveIoCompletion<br>AfdNsiAddressChangeEvent<br>AfdNsiAddressChangeEventWorker<br>AfdPartialDisconnect<br>AfdPcwCleanup<br>AfdPcwInit<br>AfdPoll32<br>AfdProcessAddressChangeList<br>AfdReceive<br>AfdReceiveDatagram<br>AfdRestartConnect<br>AfdRestartDelayedAcceptListen<br>AfdRestartDgConnect<br>AfdRestartReceive<br>AfdRestartSendConnDatagram<br>AfdReturnBuffer<br>AfdReturnTpInfo<br>AfdRioCleanupBuffer<br>AfdRioCleanupBufferCache<br>AfdRioCleanupCq<br>AfdRioCleanupRioState<br>AfdRioCreateCompletionQueue<br>AfdRioCreateRegistrationDomain<br>AfdRioFlushDgramSend<br>AfdRioGrowTable<br>AfdRioInvalidateBuffer<br>AfdRioResizeCq<br>AfdRioResizeRqPair<br>AfdRouteChangeCallback<br>AfdRoutingInterfaceChange<br>AfdRoutingInterfaceQuery<br>AfdSanAcquireContext<br>AfdSanConnectHandler<br>AfdSanFastTransferCtx<br>AfdSanProcessAddrListForProviderChange<br>AfdSanRestartRequestProcessing<br>AfdSaveReceivedConnectData<br>AfdSend<br>AfdSetConnectData<br>AfdSetContext<br>AfdSetSecurity<br>AfdSetupAcceptEndpoint<br>AfdStopTimerWheel<br>AfdTDISendMessage<br>AfdTDISendMsgComplete<br>AfdTLBindComplete2<br>AfdTLBufferedSendCompleteBatch<br>AfdTLConnectEventHandler<br>AfdTLFastDgramSend<br>AfdTLFastDgramSendComplete<br>AfdTLInspectEventHandler<br>AfdTLSendMsgComplete<br>AfdTdiCreateAO<br>AfdTerminateGroup<br>AfdTlNotifyAttachProvider<br>AfdTlNotifyCleanupProviderContext<br>AfdTlStartClientModule<br>AfdTlStopClientModule<br>AfdTliIoControl<br>AfdTliIoControlHandleAssociateQoS<br>AfdTliIoControlHandleSetQoS<br>AfdTransmitPackets<br>AfdTransmitPackets32<br>AfdUnBindSocket<br>AfdUnload<br>AfdWskNotifyAttachClient<br>AfdWskNotifyCleanupClientContext<br>Dns_RecordFree_New<br>Dns_RecordListRpcSafeFree<br>DriverEntry<br>KnrNrpFreeAddressInfoW<br>MIDL_user_free<br>MarshalRpcRecordListToDnsRecordList_New<br>PplDestroyLookasideList<br>PplpCreateLookasideListEx<br>Rpc_Free<br>Tkey_RecordRead_New<br>Tsig_RecordRead_New<br>WskKnrFreeRequest<br>WskKnrRpcCloseBinding<br>WskKnrRpcOpenBinding<br>WskProAPIDnskFreeQueryResults<br>WskProAllocateConnectExContext<br>WskProCleanupConnectExContext<br>WskTdiCloseEndpoint<br>WskTdiConnectFinish<br>WskTdiCreateAO<br>WskTdiEHReceive<br>WskTdiEHReceiveDatagram<br>WskTdiFreeDatagramIndicationResources<br>WskTdiFreeEndpoint<br>WskTdiPopulateReadyEndpoints<br>WskTdiTLRequestConnect<br>WskTdiTLRequestReleaseIndicationList<br>WskTdiWQRoutineEndpointBind<br>WskTdiWQRoutineEndpointCreate</details>|
|paramcount|0|0|
|`address`|EXTERNAL:000000f5|EXTERNAL:000000f6|
|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
@@ -4,0 +5,2 @@
+AfdBCommonChainedReceiveEventHandler
+AfdBReceive
@@ -13,0 +16 @@
+AfdCloseCore
@@ -14,0 +18 @@
+AfdCompleteBufferedSendsUnlock
@@ -24,0 +29,4 @@
+AfdFastConnectionReceive
+AfdFastConnectionSend
+AfdFastDatagramReceive
+AfdFastDatagramSend
@@ -41,0 +50,2 @@
+AfdNotifyPostEvents
+AfdNotifyProcessRegistration
@@ -50,0 +61 @@
+AfdReceiveDatagram
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-07-24T14:08:49</sub>