# pre.sys-post.sys Diff

# TOC

* [Visual Chart Diff](#visual-chart-diff)
* [Metadata](#metadata)
	* [Ghidra Diff Engine](#ghidra-diff-engine)
		* [Command Line](#command-line)
	* [Binary Metadata Diff](#binary-metadata-diff)
	* [Program Options](#program-options)
	* [Diff Stats](#diff-stats)
	* [Strings](#strings)
* [Deleted](#deleted)
	* [FUN_1c000aff9](#fun_1c000aff9)
* [Added](#added)
	* [ClusPortValidateFaultDomain](#clusportvalidatefaultdomain)
	* [ClusPortValidateNetworkTarget](#clusportvalidatenetworktarget)
	* [RtlULongAdd](#rtlulongadd)
	* [RWLock::AcquireExclusive](#rwlockacquireexclusive)
	* [RWLock::AcquireShared](#rwlockacquireshared)
	* [RWLock::ReleaseExclusive](#rwlockreleaseexclusive)
* [Modified](#modified)
	* [WPP_SF_dSIIIIIIIIIIIII](#wpp_sf_dsiiiiiiiiiiiii)
	* [ClusPortAddNetworkPath](#clusportaddnetworkpath)
	* [ClusPortSetFDInfo](#clusportsetfdinfo)
	* [ClusPortControlObjectDeviceControlHandler](#clusportcontrolobjectdevicecontrolhandler)
	* [ClusPortExecuteIrp](#clusportexecuteirp)
	* [CsvCamSetSecurityInfo](#csvcamsetsecurityinfo)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [WPP_SF_](#wpp_sf_)
	* [NTOSKRNL.EXE::KeEnterCriticalRegion](#ntoskrnlexekeentercriticalregion)
	* [WPP_SF_DD](#wpp_sf_dd)
	* [WPP_SF_D](#wpp_sf_d)
	* [NTOSKRNL.EXE::ExReleaseResourceLite](#ntoskrnlexeexreleaseresourcelite)
	* [NTOSKRNL.EXE::KeLeaveCriticalRegion](#ntoskrnlexekeleavecriticalregion)
	* [NTOSKRNL.EXE::ExAcquireResourceExclusiveLite](#ntoskrnlexeexacquireresourceexclusivelite)

# Visual Chart Diff



```mermaid

flowchart LR

WPP_SF_dSIIIIIIIIIIIII-5-old<--Match 99%-->WPP_SF_dSIIIIIIIIIIIII-5-new
ClusPortAddNetworkPath-2-old<--Match 93%-->ClusPortAddNetworkPath-2-new
ClusPortSetFDInfo-1-old<--Match 88%-->ClusPortSetFDInfo-1-new
ClusPortControlObjectDeviceControlHandler-1-old<--Match 10%-->ClusPortControlObjectDeviceControlHandler-1-new
ClusPortExecuteIrp-2-old<--Match 98%-->ClusPortExecuteIrp-2-new
CsvCamSetSecurityInfo-1-old<--Match 76%-->CsvCamSetSecurityInfoSafe-1-new

subgraph post.sys
    WPP_SF_dSIIIIIIIIIIIII-5-new
ClusPortAddNetworkPath-2-new
ClusPortSetFDInfo-1-new
ClusPortControlObjectDeviceControlHandler-1-new
ClusPortExecuteIrp-2-new
CsvCamSetSecurityInfoSafe-1-new
    subgraph Added
direction LR
ClusPortValidateFaultDomain
    ClusPortValidateNetworkTarget
    RtlULongAdd
    RWLock-AcquireExclusive
    RWLock-AcquireShared
    RWLock-ReleaseExclusive
end
end

subgraph pre.sys
    WPP_SF_dSIIIIIIIIIIIII-5-old
ClusPortAddNetworkPath-2-old
ClusPortSetFDInfo-1-old
ClusPortControlObjectDeviceControlHandler-1-old
ClusPortExecuteIrp-2-old
CsvCamSetSecurityInfo-1-old
    subgraph Deleted
direction LR
FUN_1c000aff9
end
end

```


```mermaid
pie showData
    title Function Matches - 99.3548%
"unmatched_funcs_len" : 7
"matched_funcs_len" : 1078
```



```mermaid
pie showData
    title Matched Function Similarity - 98.7941%
"matched_funcs_with_code_changes_len" : 6
"matched_funcs_with_non_code_changes_len" : 7
"matched_funcs_no_changes_len" : 1065
```

# Metadata

## Ghidra Diff Engine

### Command Line

#### Captured Command Line


```
ghidriff --project-location ./proj --project-name clusport-21910 --symbols-path 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 pre.sys post.sys
```


#### Verbose Args


<details>

```
--old ['pre.sys'] --new [['post.sys']] --engine VersionTrackingDiff --output-path ./out --summary False --project-location ./proj --project-name clusport-21910 --symbols-path symbols --gzfs-path gzfs --base-address None --program-options None --threaded True --force-analysis False --force-diff False --no-symbols False --log-level INFO --file-log-level INFO --log-path ghidriff.log --va False --min-func-len 10 --use-calling-counts False --gdt [] --bsim 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 None
```


</details>

#### Download Original PEs


```
wget https://msdl.microsoft.com/download/symbols/clusport.sys/36E07CC93D000/clusport.sys -O clusport.sys.x64.10.0.17763.2183
wget https://msdl.microsoft.com/download/symbols/clusport.sys/1BE1B17E3C000/clusport.sys -O clusport.sys.x64.10.0.17763.2452
```


## Binary Metadata Diff


```diff
--- pre.sys Meta
+++ post.sys Meta
@@ -1,44 +1,44 @@
-Program Name: pre.sys
+Program Name: post.sys
 Language ID: x86:LE:64:default (4.6)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 1c0000000
 Maximum Address: ff0000184f
-# of Bytes: 231824
+# of Bytes: 232336
 # of Memory Blocks: 12
-# of Instructions: 31050
+# of Instructions: 31246
 # of Defined Data: 2322
-# of Functions: 540
-# of Symbols: 4466
+# of Functions: 545
+# of Symbols: 4485
 # of Data Types: 221
 # of Data Type Categories: 20
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.0.4
-Date Created: Sun Aug 16 18:06:48 SGT 2026
+Date Created: Sun Aug 16 18:06:52 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /sessions/fervent-laughing-brahmagupta/mnt/patchpalooza/ghidriff/b-21910/pre.sys
-Executable MD5: 9d17623fa59acd55879b546d3a13b669
-Executable SHA256: 6c916a3d677491c80ab7572958c32e10598b894918fd9f8939bed0e65170a4b5
-FSRL: file:///sessions/fervent-laughing-brahmagupta/mnt/patchpalooza/ghidriff/b-21910/pre.sys?MD5=9d17623fa59acd55879b546d3a13b669
+Executable Location: /sessions/fervent-laughing-brahmagupta/mnt/patchpalooza/ghidriff/b-21910/post.sys
+Executable MD5: c0d6a62f3a2e89f28bbee921c270dea9
+Executable SHA256: 57eb25e45d85a8e9a5e56400ffb0ae26278d24738f97d40f22f4f050f59c7ef5
+FSRL: file:///sessions/fervent-laughing-brahmagupta/mnt/patchpalooza/ghidriff/b-21910/post.sys?MD5=c0d6a62f3a2e89f28bbee921c270dea9
 PDB Age: 1
 PDB File: clusport.pdb
-PDB GUID: d635ce78-951c-e899-3ae3-991297ec7aa3
+PDB GUID: c86acb83-bdf5-b4be-8bfb-aa8ff6e3701c
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: Cluster Miniport Driver
-PE Property[FileVersion]: 10.0.17763.2183 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.17763.2452 (WinBuild.160101.0800)
 PE Property[InternalName]: clusport.sys
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: clusport.sys
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.17763.2183
+PE Property[ProductVersion]: 10.0.17763.2452
 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 pre.sys Decompiler Options</summary>


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

</details>


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


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

</details>


<details>
<summary>Ghidra pre.sys Analyzers Options</summary>


|Analyzers Option|Value|
| :---: | :---: |
|ASCII Strings|true|
|ASCII Strings.Create Strings Containing Existing Strings|true|
|ASCII Strings.Create Strings Containing References|true|
|ASCII Strings.Force Model Reload|false|
|ASCII Strings.Minimum String Length|LEN_5|
|ASCII Strings.Model File|StringModel.sng|
|ASCII Strings.Require Null Termination for String|true|
|ASCII Strings.Search Only in Accessible Memory Blocks|true|
|ASCII Strings.String Start Alignment|ALIGN_1|
|ASCII Strings.String end alignment|4|
|Aggressive Instruction Finder|false|
|Aggressive Instruction Finder.Create Analysis Bookmarks|true|
|Apply Data Archives|true|
|Apply Data Archives.Archive Chooser|[Auto-Detect]|
|Apply Data Archives.Create Analysis Bookmarks|true|
|Apply Data Archives.GDT User File Archive Path|None|
|Apply Data Archives.User Project Archive Path|None|
|Call Convention ID|true|
|Call Convention ID.Analysis Decompiler Timeout (sec)|60|
|Call-Fixup Installer|true|
|Condense Filler Bytes|false|
|Condense Filler Bytes.Filler Value|Auto|
|Condense Filler Bytes.Minimum number of sequential bytes|1|
|Create Address Tables|true|
|Create Address Tables.Allow Offcut References|false|
|Create Address Tables.Auto Label Table|false|
|Create Address Tables.Create Analysis Bookmarks|true|
|Create Address Tables.Maxmimum Pointer Distance|16777215|
|Create Address Tables.Minimum Pointer Address|4132|
|Create Address Tables.Minimum Table Size|2|
|Create Address Tables.Pointer Alignment|1|
|Create Address Tables.Relocation Table Guide|true|
|Create Address Tables.Table Alignment|4|
|Data Reference|true|
|Data Reference.Address Table Alignment|1|
|Data Reference.Address Table Minimum Size|2|
|Data Reference.Align End of Strings|false|
|Data Reference.Ascii String References|true|
|Data Reference.Create Address Tables|true|
|Data Reference.Minimum String Length|5|
|Data Reference.References to Pointers|true|
|Data Reference.Relocation Table Guide|true|
|Data Reference.Respect Execute Flag|true|
|Data Reference.Subroutine References|true|
|Data Reference.Switch Table References|false|
|Data Reference.Unicode String References|true|
|Decompiler Parameter ID|true|
|Decompiler Parameter ID.Analysis Clear Level|ANALYSIS|
|Decompiler Parameter ID.Analysis Decompiler Timeout (sec)|60|
|Decompiler Parameter ID.Commit Data Types|true|
|Decompiler Parameter ID.Commit Void Return Values|false|
|Decompiler Parameter ID.Prototype Evaluation|__fastcall|
|Decompiler Switch Analysis|true|
|Decompiler Switch Analysis.Analysis Decompiler Timeout (sec)|60|
|Demangler Microsoft|true|
|Demangler Microsoft.Apply Function Calling Conventions|true|
|Demangler Microsoft.Apply Function Signatures|true|
|Demangler Microsoft.C-Style Symbol Interpretation|FUNCTION_IF_EXISTS|
|Demangler Microsoft.Demangle Only Known Mangled Symbols|false|
|Disassemble Entry Points|true|
|Disassemble Entry Points.Respect Execute Flag|true|
|Embedded Media|true|
|Embedded Media.Create Analysis Bookmarks|true|
|External Entry References|true|
|Function ID|true|
|Function ID.Always Apply FID Labels|false|
|Function ID.Create Analysis Bookmarks|true|
|Function ID.Instruction Count Threshold|14.6|
|Function ID.Multiple Match Threshold|30.0|
|Function Start Search|true|
|Function Start Search.Bookmark Functions|false|
|Function Start Search.Search Data Blocks|false|
|Non-Returning Functions - Discovered|true|
|Non-Returning Functions - Discovered.Create Analysis Bookmarks|true|
|Non-Returning Functions - Discovered.Function Non-return Threshold|3|
|Non-Returning Functions - Discovered.Repair Flow Damage|true|
|Non-Returning Functions - Known|true|
|Non-Returning Functions - Known.Create Analysis Bookmarks|true|
|PDB MSDIA|false|
|PDB MSDIA.Search untrusted symbol servers|false|
|PDB Universal|true|
|PDB Universal.Import Source Line Info|true|
|PDB Universal.Search untrusted symbol servers|false|
|Reference|true|
|Reference.Address Table Alignment|1|
|Reference.Address Table Minimum Size|2|
|Reference.Align End of Strings|false|
|Reference.Ascii String References|true|
|Reference.Create Address Tables|true|
|Reference.Minimum String Length|5|
|Reference.References to Pointers|true|
|Reference.Relocation Table Guide|true|
|Reference.Respect Execute Flag|true|
|Reference.Subroutine References|true|
|Reference.Switch Table References|false|
|Reference.Unicode String References|true|
|Scalar Operand References|true|
|Scalar Operand References.Relocation Table Guide|true|
|Shared Return Calls|true|
|Shared Return Calls.Allow Conditional Jumps|false|
|Shared Return Calls.Assume Contiguous Functions Only|true|
|Stack|true|
|Stack.Create Local Variables|true|
|Stack.Create Param Variables|false|
|Stack.Max Threads|2|
|Subroutine References|true|
|Subroutine References.Create Thunks Early|true|
|Variadic Function Signature Override|false|
|Variadic Function Signature Override.Create Analysis Bookmarks|false|
|Windows x86 PE Exception Handling|true|
|Windows x86 PE RTTI Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer.Starting Address of the TEB||
|Windows x86 Thread Environment Block (TEB) Analyzer.Windows OS Version|Windows 7|
|WindowsPE x86 Propagate External Parameters|false|
|WindowsResourceReference|true|
|WindowsResourceReference.Create Analysis Bookmarks|true|
|x86 Constant Reference Analyzer|true|
|x86 Constant Reference Analyzer.Create Data from pointer|false|
|x86 Constant Reference Analyzer.Function parameter/return Pointer analysis|true|
|x86 Constant Reference Analyzer.Max Threads|2|
|x86 Constant Reference Analyzer.Min absolute reference|4|
|x86 Constant Reference Analyzer.Require pointer param data type|false|
|x86 Constant Reference Analyzer.Speculative reference max|256|
|x86 Constant Reference Analyzer.Speculative reference min|1024|
|x86 Constant Reference Analyzer.Stored Value Pointer analysis|true|
|x86 Constant Reference Analyzer.Trust values read from writable memory|true|

</details>


<details>
<summary>Ghidra post.sys Decompiler Options</summary>


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

</details>


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


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

</details>


<details>
<summary>Ghidra post.sys Analyzers Options</summary>


|Analyzers Option|Value|
| :---: | :---: |
|ASCII Strings|true|
|ASCII Strings.Create Strings Containing Existing Strings|true|
|ASCII Strings.Create Strings Containing References|true|
|ASCII Strings.Force Model Reload|false|
|ASCII Strings.Minimum String Length|LEN_5|
|ASCII Strings.Model File|StringModel.sng|
|ASCII Strings.Require Null Termination for String|true|
|ASCII Strings.Search Only in Accessible Memory Blocks|true|
|ASCII Strings.String Start Alignment|ALIGN_1|
|ASCII Strings.String end alignment|4|
|Aggressive Instruction Finder|false|
|Aggressive Instruction Finder.Create Analysis Bookmarks|true|
|Apply Data Archives|true|
|Apply Data Archives.Archive Chooser|[Auto-Detect]|
|Apply Data Archives.Create Analysis Bookmarks|true|
|Apply Data Archives.GDT User File Archive Path|None|
|Apply Data Archives.User Project Archive Path|None|
|Call Convention ID|true|
|Call Convention ID.Analysis Decompiler Timeout (sec)|60|
|Call-Fixup Installer|true|
|Condense Filler Bytes|false|
|Condense Filler Bytes.Filler Value|Auto|
|Condense Filler Bytes.Minimum number of sequential bytes|1|
|Create Address Tables|true|
|Create Address Tables.Allow Offcut References|false|
|Create Address Tables.Auto Label Table|false|
|Create Address Tables.Create Analysis Bookmarks|true|
|Create Address Tables.Maxmimum Pointer Distance|16777215|
|Create Address Tables.Minimum Pointer Address|4132|
|Create Address Tables.Minimum Table Size|2|
|Create Address Tables.Pointer Alignment|1|
|Create Address Tables.Relocation Table Guide|true|
|Create Address Tables.Table Alignment|4|
|Data Reference|true|
|Data Reference.Address Table Alignment|1|
|Data Reference.Address Table Minimum Size|2|
|Data Reference.Align End of Strings|false|
|Data Reference.Ascii String References|true|
|Data Reference.Create Address Tables|true|
|Data Reference.Minimum String Length|5|
|Data Reference.References to Pointers|true|
|Data Reference.Relocation Table Guide|true|
|Data Reference.Respect Execute Flag|true|
|Data Reference.Subroutine References|true|
|Data Reference.Switch Table References|false|
|Data Reference.Unicode String References|true|
|Decompiler Parameter ID|true|
|Decompiler Parameter ID.Analysis Clear Level|ANALYSIS|
|Decompiler Parameter ID.Analysis Decompiler Timeout (sec)|60|
|Decompiler Parameter ID.Commit Data Types|true|
|Decompiler Parameter ID.Commit Void Return Values|false|
|Decompiler Parameter ID.Prototype Evaluation|__fastcall|
|Decompiler Switch Analysis|true|
|Decompiler Switch Analysis.Analysis Decompiler Timeout (sec)|60|
|Demangler Microsoft|true|
|Demangler Microsoft.Apply Function Calling Conventions|true|
|Demangler Microsoft.Apply Function Signatures|true|
|Demangler Microsoft.C-Style Symbol Interpretation|FUNCTION_IF_EXISTS|
|Demangler Microsoft.Demangle Only Known Mangled Symbols|false|
|Disassemble Entry Points|true|
|Disassemble Entry Points.Respect Execute Flag|true|
|Embedded Media|true|
|Embedded Media.Create Analysis Bookmarks|true|
|External Entry References|true|
|Function ID|true|
|Function ID.Always Apply FID Labels|false|
|Function ID.Create Analysis Bookmarks|true|
|Function ID.Instruction Count Threshold|14.6|
|Function ID.Multiple Match Threshold|30.0|
|Function Start Search|true|
|Function Start Search.Bookmark Functions|false|
|Function Start Search.Search Data Blocks|false|
|Non-Returning Functions - Discovered|true|
|Non-Returning Functions - Discovered.Create Analysis Bookmarks|true|
|Non-Returning Functions - Discovered.Function Non-return Threshold|3|
|Non-Returning Functions - Discovered.Repair Flow Damage|true|
|Non-Returning Functions - Known|true|
|Non-Returning Functions - Known.Create Analysis Bookmarks|true|
|PDB MSDIA|false|
|PDB MSDIA.Search untrusted symbol servers|false|
|PDB Universal|true|
|PDB Universal.Import Source Line Info|true|
|PDB Universal.Search untrusted symbol servers|false|
|Reference|true|
|Reference.Address Table Alignment|1|
|Reference.Address Table Minimum Size|2|
|Reference.Align End of Strings|false|
|Reference.Ascii String References|true|
|Reference.Create Address Tables|true|
|Reference.Minimum String Length|5|
|Reference.References to Pointers|true|
|Reference.Relocation Table Guide|true|
|Reference.Respect Execute Flag|true|
|Reference.Subroutine References|true|
|Reference.Switch Table References|false|
|Reference.Unicode String References|true|
|Scalar Operand References|true|
|Scalar Operand References.Relocation Table Guide|true|
|Shared Return Calls|true|
|Shared Return Calls.Allow Conditional Jumps|false|
|Shared Return Calls.Assume Contiguous Functions Only|true|
|Stack|true|
|Stack.Create Local Variables|true|
|Stack.Create Param Variables|false|
|Stack.Max Threads|2|
|Subroutine References|true|
|Subroutine References.Create Thunks Early|true|
|Variadic Function Signature Override|false|
|Variadic Function Signature Override.Create Analysis Bookmarks|false|
|Windows x86 PE Exception Handling|true|
|Windows x86 PE RTTI Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer|true|
|Windows x86 Thread Environment Block (TEB) Analyzer.Starting Address of the TEB||
|Windows x86 Thread Environment Block (TEB) Analyzer.Windows OS Version|Windows 7|
|WindowsPE x86 Propagate External Parameters|false|
|WindowsResourceReference|true|
|WindowsResourceReference.Create Analysis Bookmarks|true|
|x86 Constant Reference Analyzer|true|
|x86 Constant Reference Analyzer.Create Data from pointer|false|
|x86 Constant Reference Analyzer.Function parameter/return Pointer analysis|true|
|x86 Constant Reference Analyzer.Max Threads|2|
|x86 Constant Reference Analyzer.Min absolute reference|4|
|x86 Constant Reference Analyzer.Require pointer param data type|false|
|x86 Constant Reference Analyzer.Speculative reference max|256|
|x86 Constant Reference Analyzer.Speculative reference min|1024|
|x86 Constant Reference Analyzer.Stored Value Pointer analysis|true|
|x86 Constant Reference Analyzer.Trust values read from writable memory|true|

</details>

## Diff Stats



|Stat|Value|
| :---: | :---: |
|added_funcs_len|6|
|deleted_funcs_len|1|
|modified_funcs_len|13|
|added_symbols_len|2|
|deleted_symbols_len|2|
|diff_time|4.982600212097168|
|deleted_strings_len|0|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 527, 'ExternalsName': 186, 'ExactInstructionsFunctionHasher': 9, 'BSIM': 1, 'Implied Match': 1})|
|items_to_process|24|
|diff_types|Counter({'address': 9, 'refcount': 8, 'calling': 8, 'code': 6, 'length': 6, 'called': 5, 'name': 1, 'fullname': 1, 'sig': 1})|
|unmatched_funcs_len|7|
|total_funcs_len|1085|
|matched_funcs_len|1078|
|matched_funcs_with_code_changes_len|6|
|matched_funcs_with_non_code_changes_len|7|
|matched_funcs_no_changes_len|1065|
|match_func_similarity_percent|98.7941%|
|func_match_overall_percent|99.3548%|
|first_matches|Counter({'SymbolsHash': 527, 'ExactInstructionsFunctionHasher': 9, 'BSIM': 1, 'Implied Match': 1})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 527
"ExternalsName" : 186
"ExactInstructionsFunctionHasher" : 9
"BSIM" : 1
"Implied-Match" : 1
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 527
"ExactInstructionsFunctionHasher" : 9
"BSIM" : 1
"Implied-Match" : 1
```



```mermaid
pie showData
    title Diff Stats
"added_funcs_len" : 6
"deleted_funcs_len" : 1
"modified_funcs_len" : 13
```



```mermaid
pie showData
    title Symbols
"added_symbols_len" : 2
"deleted_symbols_len" : 2
```

## Strings


*No string differences found*

# Deleted

## FUN_1c000aff9

### Function Meta



|Key|pre.sys|
| :---: | :---: |
|name|FUN_1c000aff9|
|fullname|FUN_1c000aff9|
|refcount|1|
|length|72|
|called|WPP_SF_D|
|calling|ClusPortControlObjectDeviceControlHandler|
|paramcount|0|
|address|1c000aff9|
|sig|int __fastcall FUN_1c000aff9(void)|
|sym_type|Function|
|sym_source|DEFAULT|
|external|False|


```diff
--- FUN_1c000aff9
+++ FUN_1c000aff9
@@ -1,20 +0,0 @@
-
-int FUN_1c000aff9(void)
-
-{
-  undefined *unaff_RBX;
-  longlong unaff_RSI;
-  int unaff_EDI;
-  
-  if (((WPP_GLOBAL_Control != unaff_RBX) && ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
-     (1 < (byte)WPP_GLOBAL_Control[0x29])) {
-    WPP_SF_D(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x3c,
-             &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids,unaff_EDI);
-  }
-  if (unaff_EDI != 0x103) {
-    *(int *)(unaff_RSI + 0x30) = unaff_EDI;
-  }
-  IofCompleteRequest();
-  return unaff_EDI;
-}
-

```


# Added

## ClusPortValidateFaultDomain

### Function Meta



|Key|post.sys|
| :---: | :---: |
|name|ClusPortValidateFaultDomain|
|fullname|ClusPortValidateFaultDomain|
|refcount|3|
|length|299|
|called|WPP_SF_D<br>WPP_SF_DD|
|calling|ClusPortSetFDInfo<br>ClusPortValidateNetworkTarget|
|paramcount|1|
|address|1c0008230|
|sig|ulonglong __fastcall ClusPortValidateFaultDomain(longlong param_1)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- ClusPortValidateFaultDomain
+++ ClusPortValidateFaultDomain
@@ -0,0 +1,63 @@
+
+ulonglong ClusPortValidateFaultDomain(longlong param_1)
+
+{
+  uint uVar1;
+  uint uVar2;
+  undefined **ppuVar3;
+  undefined2 uVar4;
+  uint uVar5;
+  
+  uVar1 = *(uint *)(param_1 + 4);
+  if (uVar1 < 0xc) {
+    ppuVar3 = &WPP_GLOBAL_Control;
+    if ((((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
+        (ppuVar3 = (undefined **)(ulonglong)*(uint *)(WPP_GLOBAL_Control + 0x2c),
+        (*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) == 0)) || ((byte)WPP_GLOBAL_Control[0x29] < 2)
+       ) goto LAB_1c0008350;
+    uVar4 = 0x1f;
+    uVar5 = uVar1;
+  }
+  else {
+    uVar5 = *(uint *)(param_1 + 8);
+    if ((ulonglong)uVar5 << 4 < 0x100000000) {
+      uVar5 = (uint)((ulonglong)uVar5 << 4);
+      uVar2 = uVar5 + 0xc;
+      if (0xb < uVar2) {
+        if (uVar2 <= uVar1) {
+          return CONCAT71((uint7)(uint3)(uVar2 >> 8),1);
+        }
+        ppuVar3 = &WPP_GLOBAL_Control;
+        if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+            (ppuVar3 = (undefined **)(ulonglong)*(uint *)(WPP_GLOBAL_Control + 0x2c),
+            (*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+           (1 < (byte)WPP_GLOBAL_Control[0x29])) {
+          ppuVar3 = (undefined **)
+                    WPP_SF_DD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x22,
+                              &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids,uVar2);
+        }
+        goto LAB_1c0008350;
+      }
+      ppuVar3 = &WPP_GLOBAL_Control;
+      if ((((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
+          (ppuVar3 = (undefined **)(ulonglong)*(uint *)(WPP_GLOBAL_Control + 0x2c),
+          (*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) == 0)) ||
+         ((byte)WPP_GLOBAL_Control[0x29] < 2)) goto LAB_1c0008350;
+      uVar4 = 0x21;
+    }
+    else {
+      ppuVar3 = &WPP_GLOBAL_Control;
+      if ((((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
+          (ppuVar3 = (undefined **)(ulonglong)*(uint *)(WPP_GLOBAL_Control + 0x2c),
+          (*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) == 0)) ||
+         ((byte)WPP_GLOBAL_Control[0x29] < 2)) goto LAB_1c0008350;
+      uVar4 = 0x20;
+    }
+  }
+  ppuVar3 = (undefined **)
+            WPP_SF_D(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar4,
+                     &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids,uVar5);
+LAB_1c0008350:
+  return (ulonglong)ppuVar3 & 0xffffffffffffff00;
+}
+

```


## ClusPortValidateNetworkTarget

### Function Meta



|Key|post.sys|
| :---: | :---: |
|name|ClusPortValidateNetworkTarget|
|fullname|ClusPortValidateNetworkTarget|
|refcount|2|
|length|233|
|called|ClusPortValidateFaultDomain<br>WPP_SF_<br>WPP_SF_D|
|calling|ClusPortAddNetworkPath|
|paramcount|2|
|address|1c0008364|
|sig|ulonglong __fastcall ClusPortValidateNetworkTarget(longlong param_1, uint param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- ClusPortValidateNetworkTarget
+++ ClusPortValidateNetworkTarget
@@ -0,0 +1,51 @@
+
+ulonglong ClusPortValidateNetworkTarget(longlong param_1,uint param_2)
+
+{
+  undefined **ppuVar1;
+  ulonglong uVar2;
+  undefined2 uVar3;
+  uint uVar4;
+  
+  if (param_2 < 0x2ac) {
+    ppuVar1 = &WPP_GLOBAL_Control;
+    if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+        (ppuVar1 = (undefined **)(ulonglong)*(uint *)(WPP_GLOBAL_Control + 0x2c),
+        (*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) && (1 < (byte)WPP_GLOBAL_Control[0x29])
+       ) {
+      ppuVar1 = (undefined **)
+                WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x23,
+                        &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
+    }
+  }
+  else {
+    uVar4 = *(uint *)(param_1 + 0x294) + 0x290;
+    if (uVar4 < 0x290) {
+      ppuVar1 = &WPP_GLOBAL_Control;
+      if ((((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
+          (ppuVar1 = (undefined **)(ulonglong)*(uint *)(WPP_GLOBAL_Control + 0x2c),
+          (*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) == 0)) ||
+         ((byte)WPP_GLOBAL_Control[0x29] < 2)) goto LAB_1c000843f;
+      uVar3 = 0x24;
+      uVar4 = *(uint *)(param_1 + 0x294);
+    }
+    else {
+      if (uVar4 <= param_2) {
+        uVar2 = ClusPortValidateFaultDomain(param_1 + 0x290);
+        return uVar2;
+      }
+      ppuVar1 = &WPP_GLOBAL_Control;
+      if ((((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
+          (ppuVar1 = (undefined **)(ulonglong)*(uint *)(WPP_GLOBAL_Control + 0x2c),
+          (*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) == 0)) ||
+         ((byte)WPP_GLOBAL_Control[0x29] < 2)) goto LAB_1c000843f;
+      uVar3 = 0x25;
+    }
+    ppuVar1 = (undefined **)
+              WPP_SF_D(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar3,
+                       &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids,uVar4);
+  }
+LAB_1c000843f:
+  return (ulonglong)ppuVar1 & 0xffffffffffffff00;
+}
+

```


## RtlULongAdd

### Function Meta



|Key|post.sys|
| :---: | :---: |
|name|RtlULongAdd|
|fullname|RtlULongAdd|
|refcount|1|
|length|22|
|called||
|calling|ClusPortSetFDInfo|
|paramcount|3|
|address|1c0008454|
|sig|uint __fastcall RtlULongAdd(uint param_1, int param_2, uint * param_3)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- RtlULongAdd
+++ RtlULongAdd
@@ -0,0 +1,16 @@
+
+uint RtlULongAdd(uint param_1,int param_2,uint *param_3)
+
+{
+  uint uVar1;
+  uint uVar2;
+  
+  uVar1 = param_1 + param_2;
+  uVar2 = 0xffffffff;
+  if (uVar1 >= param_1) {
+    uVar2 = uVar1;
+  }
+  *param_3 = uVar2;
+  return -(uint)(uVar1 < param_1) & 0xc0000095;
+}
+

```


## RWLock::AcquireExclusive

### Function Meta



|Key|post.sys|
| :---: | :---: |
|name|AcquireExclusive|
|fullname|RWLock::AcquireExclusive|
|refcount|3|
|length|48|
|called|NTOSKRNL.EXE::ExAcquireResourceExclusiveLite<br>NTOSKRNL.EXE::KeEnterCriticalRegion|
|calling|CsvCamSetSecurityInfoSafe|
|paramcount|1|
|address|1c001ff74|
|sig|void __thiscall AcquireExclusive(RWLock * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- RWLock::AcquireExclusive
+++ RWLock::AcquireExclusive
@@ -0,0 +1,14 @@
+
+/* public: void __cdecl RWLock::AcquireExclusive(void) __ptr64 */
+
+void __thiscall RWLock::AcquireExclusive(RWLock *this)
+
+{
+  RWLock *pRVar1;
+  
+  pRVar1 = SigningLock;
+  KeEnterCriticalRegion();
+  ExAcquireResourceExclusiveLite(*(undefined8 *)pRVar1,1);
+  return;
+}
+

```


## RWLock::AcquireShared

### Function Meta



|Key|post.sys|
| :---: | :---: |
|name|AcquireShared|
|fullname|RWLock::AcquireShared|
|refcount|2|
|length|48|
|called|NTOSKRNL.EXE::ExAcquireResourceSharedLite<br>NTOSKRNL.EXE::KeEnterCriticalRegion|
|calling|CsvCamSetSecurityInfoSafe|
|paramcount|1|
|address|1c001ffac|
|sig|void __thiscall AcquireShared(RWLock * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- RWLock::AcquireShared
+++ RWLock::AcquireShared
@@ -0,0 +1,14 @@
+
+/* public: void __cdecl RWLock::AcquireShared(void) __ptr64 */
+
+void __thiscall RWLock::AcquireShared(RWLock *this)
+
+{
+  RWLock *pRVar1;
+  
+  pRVar1 = SigningLock;
+  KeEnterCriticalRegion();
+  ExAcquireResourceSharedLite(*(undefined8 *)pRVar1,1);
+  return;
+}
+

```


## RWLock::ReleaseExclusive

### Function Meta



|Key|post.sys|
| :---: | :---: |
|name|ReleaseExclusive|
|fullname|RWLock::ReleaseExclusive|
|refcount|4|
|length|43|
|called|NTOSKRNL.EXE::ExReleaseResourceLite<br>NTOSKRNL.EXE::KeLeaveCriticalRegion|
|calling|CsvCamSetSecurityInfoSafe|
|paramcount|1|
|address|1c002054c|
|sig|void __thiscall ReleaseExclusive(RWLock * this)|
|sym_type|Function|
|sym_source|ANALYSIS|
|external|False|


```diff
--- RWLock::ReleaseExclusive
+++ RWLock::ReleaseExclusive
@@ -0,0 +1,11 @@
+
+/* public: void __cdecl RWLock::ReleaseExclusive(void) __ptr64 */
+
+void __thiscall RWLock::ReleaseExclusive(RWLock *this)
+
+{
+  ExReleaseResourceLite(*(undefined8 *)SigningLock);
+  KeLeaveCriticalRegion();
+  return;
+}
+

```


# Modified


*Modified functions contain code changes*
## WPP_SF_dSIIIIIIIIIIIII

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|code,length,address|
|ratio|0.96|
|i_ratio|0.83|
|m_ratio|1.0|
|b_ratio|0.99|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|WPP_SF_dSIIIIIIIIIIIII|WPP_SF_dSIIIIIIIIIIIII|
|fullname|WPP_SF_dSIIIIIIIIIIIII|WPP_SF_dSIIIIIIIIIIIII|
|refcount|2|2|
|`length`|399|401|
|called|_guard_dispatch_icall|_guard_dispatch_icall|
|calling|ClusPortLogNodeSummary|ClusPortLogNodeSummary|
|paramcount|5|5|
|`address`|1c00194c8|1c00199b8|
|sig|undefined __fastcall WPP_SF_dSIIIIIIIIIIIII(undefined8 param_1, undefined8 param_2, undefined8 param_3, undefined4 param_4, wchar_t * param_5)|undefined __fastcall WPP_SF_dSIIIIIIIIIIIII(undefined8 param_1, undefined8 param_2, undefined8 param_3, undefined4 param_4, wchar_t * param_5)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### WPP_SF_dSIIIIIIIIIIIII Diff


```diff
--- WPP_SF_dSIIIIIIIIIIIII
+++ WPP_SF_dSIIIIIIIIIIIII
@@ -1,34 +1,34 @@
 
 /* WARNING: Function: _guard_dispatch_icall replaced with injection: guard_dispatch_icall */
 
 void WPP_SF_dSIIIIIIIIIIIII
                (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined4 param_4,
                wchar_t *param_5)
 
 {
   longlong lVar1;
   undefined4 local_res20 [2];
   
   if (param_5 == (wchar_t *)0x0) {
     lVar1 = 10;
   }
   else {
     lVar1 = -1;
     do {
       lVar1 = lVar1 + 1;
     } while (param_5[lVar1] != L'\0');
     lVar1 = lVar1 * 2 + 2;
   }
   if (param_5 == (wchar_t *)0x0) {
     param_5 = L"NULL";
   }
   local_res20[0] = param_4;
   (*pfnWppTraceMessage)
-            (param_1,0x2b,&WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids,0x80,local_res20,4,
+            (param_1,0x2b,&WPP_c912e1cf18e1305813a3f9f237738604_Traceguids,0x8a,local_res20,4,
              param_5,lVar1,&stack0x00000030,8,&stack0x00000038,8,&stack0x00000040,8,&stack0x00000048
              ,8,&stack0x00000050,8,&stack0x00000058,8,&stack0x00000060,8,&stack0x00000068,8,
              &stack0x00000070,8,&stack0x00000078,8,&stack0x00000080,8,&stack0x00000088,8,
              &stack0x00000090,8,0);
   return;
 }
 

```


## ClusPortAddNetworkPath

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.25|
|i_ratio|0.64|
|m_ratio|0.97|
|b_ratio|0.93|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|ClusPortAddNetworkPath|ClusPortAddNetworkPath|
|fullname|ClusPortAddNetworkPath|ClusPortAddNetworkPath|
|refcount|3|3|
|`length`|1554|1643|
|`called`|<details><summary>Expand for full list:<br>ClusBFltInitRWLock<br>ClusPortInitializeDiskTable<br>CsvFsThreadPoolEnqueWorkItem<br>NTOSKRNL.EXE::ExAcquireCacheAwarePushLockExclusive<br>NTOSKRNL.EXE::ExAcquirePushLockExclusiveEx<br>NTOSKRNL.EXE::ExAllocatePoolWithTag<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseCacheAwarePushLockExclusive<br>NTOSKRNL.EXE::ExReleasePushLockExclusiveEx<br>NTOSKRNL.EXE::KeEnterCriticalRegion<br>NTOSKRNL.EXE::KeLeaveCriticalRegion</summary>WPP_SF_<br>WPP_SF_D<br>memcpy<br>memset</details>|<details><summary>Expand for full list:<br>ClusBFltInitRWLock<br>ClusPortInitializeDiskTable<br>ClusPortValidateNetworkTarget<br>CsvFsThreadPoolEnqueWorkItem<br>NTOSKRNL.EXE::ExAcquireCacheAwarePushLockExclusive<br>NTOSKRNL.EXE::ExAcquirePushLockExclusiveEx<br>NTOSKRNL.EXE::ExAllocatePoolWithTag<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseCacheAwarePushLockExclusive<br>NTOSKRNL.EXE::ExReleasePushLockExclusiveEx<br>NTOSKRNL.EXE::KeEnterCriticalRegion</summary>NTOSKRNL.EXE::KeLeaveCriticalRegion<br>WPP_SF_<br>WPP_SF_D<br>memcpy<br>memset</details>|
|calling|ClusPortControlObjectDeviceControlHandler<br>ClusPortFindAdapter|ClusPortControlObjectDeviceControlHandler<br>ClusPortFindAdapter|
|paramcount|2|2|
|`address`|1c0016ce0|1c00170f0|
|sig|undefined4 __fastcall ClusPortAddNetworkPath(longlong param_1, short * param_2)|undefined4 __fastcall ClusPortAddNetworkPath(longlong param_1, short * param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### ClusPortAddNetworkPath Called Diff


```diff
--- ClusPortAddNetworkPath called
+++ ClusPortAddNetworkPath called
@@ -2,0 +3 @@
+ClusPortValidateNetworkTarget
```


### ClusPortAddNetworkPath Diff


```diff
--- ClusPortAddNetworkPath
+++ ClusPortAddNetworkPath
@@ -1,344 +1,360 @@
 
 undefined4 ClusPortAddNetworkPath(longlong param_1,short *param_2)
 
 {
   undefined8 uVar1;
   code *pcVar2;
   undefined4 uVar3;
   undefined4 uVar4;
   undefined4 uVar5;
   undefined8 *puVar6;
+  ulonglong uVar7;
   void *_Dst;
-  undefined8 *puVar7;
-  longlong lVar8;
-  longlong *plVar9;
+  undefined8 *puVar8;
+  longlong lVar9;
   longlong *plVar10;
-  void *pvVar11;
-  undefined8 *puVar12;
-  undefined2 uVar13;
-  short *psVar14;
+  longlong *plVar11;
+  void *pvVar12;
+  undefined8 *puVar13;
+  undefined2 uVar14;
   short *psVar15;
-  undefined1 *puVar16;
+  short *psVar16;
   undefined1 *puVar17;
   undefined1 *puVar18;
-  undefined4 uVar19;
-  longlong lVar20;
-  bool bVar21;
+  undefined1 *puVar19;
+  undefined4 uVar20;
+  longlong lVar21;
+  bool bVar22;
   undefined1 auStack_38 [8];
   undefined1 auStack_30 [24];
   
+  puVar17 = auStack_38;
   puVar18 = auStack_38;
-  puVar16 = auStack_38;
-  puVar17 = auStack_38;
+  puVar19 = auStack_38;
   if (param_1 == 0) {
-    lVar8 = 0;
+    lVar9 = 0;
   }
   else {
-    lVar8 = *(longlong *)(param_1 + 0xb8);
+    lVar9 = *(longlong *)(param_1 + 0xb8);
     param_2 = *(short **)(param_1 + 0x18);
   }
-  uVar19 = 0;
-  bVar21 = false;
+  uVar20 = 0;
+  bVar22 = false;
   _Dst = (void *)0x0;
-  if ((param_1 != 0) && (*(undefined8 *)(param_1 + 0x38) = 0, *(uint *)(lVar8 + 0x10) < 0x2ac)) {
-    if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-       (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 && (1 < (byte)WPP_GLOBAL_Control[0x29]))
-       )) {
-      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x1f,
-              &WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids);
-    }
-    uVar19 = 0xc0000023;
-    puVar18 = auStack_38;
-    goto LAB_0;
+  if (param_1 != 0) {
+    *(undefined8 *)(param_1 + 0x38) = 0;
+    if (*(uint *)(lVar9 + 0x10) < 0x2ac) {
+      if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+         (1 < (byte)WPP_GLOBAL_Control[0x29])) {
+        WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x26,
+                &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
+      }
+      uVar20 = 0xc0000023;
+      puVar19 = auStack_38;
+      goto LAB_0;
+    }
+    uVar7 = ClusPortValidateNetworkTarget((longlong)param_2,*(uint *)(lVar9 + 0x10));
+    if ((char)uVar7 == '\0') {
+      if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+         (1 < (byte)WPP_GLOBAL_Control[0x29])) {
+        WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x27,
+                &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
+      }
+      uVar20 = 0xc000000d;
+      puVar19 = auStack_38;
+      goto LAB_0;
+    }
   }
   if (*(int *)(param_2 + 0x14a) != 0) {
     _Dst = (void *)ExAllocatePoolWithTag(0x200,*(int *)(param_2 + 0x14a),0x62704c43);
     if (_Dst == (void *)0x0) {
-      uVar19 = 0xc000009a;
+      uVar20 = 0xc000009a;
       goto LAB_0;
     }
     memcpy(_Dst,param_2 + 0x148,(ulonglong)*(uint *)(param_2 + 0x14a));
   }
-  puVar7 = (undefined8 *)ExAllocatePoolWithTag(0x200,0x2ac,0x6e704c43);
-  if ((((puVar7 == (undefined8 *)0x0) &&
-       (uVar19 = 0xc000009a, (undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
-      ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) && (1 < (byte)WPP_GLOBAL_Control[0x29]))
+  puVar8 = (undefined8 *)ExAllocatePoolWithTag(0x200,0x2ac,0x6e704c43);
+  if (((puVar8 == (undefined8 *)0x0) &&
+      (uVar20 = 0xc000009a, (undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
+     (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 && (1 < (byte)WPP_GLOBAL_Control[0x29]))))
   {
-    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x20,
-            &WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids);
-  }
-  lVar20 = 5;
-  lVar8 = 5;
-  puVar6 = puVar7;
-  psVar15 = param_2;
+    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x28,
+            &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
+  }
+  lVar21 = 5;
+  lVar9 = 5;
+  puVar6 = puVar8;
+  psVar16 = param_2;
   do {
-    psVar14 = psVar15;
-    puVar12 = puVar6;
-    uVar1 = *(undefined8 *)(psVar14 + 4);
-    *puVar12 = *(undefined8 *)psVar14;
-    puVar12[1] = uVar1;
-    uVar1 = *(undefined8 *)(psVar14 + 0xc);
-    puVar12[2] = *(undefined8 *)(psVar14 + 8);
-    puVar12[3] = uVar1;
-    uVar1 = *(undefined8 *)(psVar14 + 0x14);
-    puVar12[4] = *(undefined8 *)(psVar14 + 0x10);
-    puVar12[5] = uVar1;
-    uVar1 = *(undefined8 *)(psVar14 + 0x1c);
-    puVar12[6] = *(undefined8 *)(psVar14 + 0x18);
-    puVar12[7] = uVar1;
-    uVar1 = *(undefined8 *)(psVar14 + 0x24);
-    puVar12[8] = *(undefined8 *)(psVar14 + 0x20);
-    puVar12[9] = uVar1;
-    uVar1 = *(undefined8 *)(psVar14 + 0x2c);
-    puVar12[10] = *(undefined8 *)(psVar14 + 0x28);
-    puVar12[0xb] = uVar1;
-    uVar1 = *(undefined8 *)(psVar14 + 0x34);
-    puVar12[0xc] = *(undefined8 *)(psVar14 + 0x30);
-    puVar12[0xd] = uVar1;
-    uVar1 = *(undefined8 *)(psVar14 + 0x3c);
-    puVar12[0xe] = *(undefined8 *)(psVar14 + 0x38);
-    puVar12[0xf] = uVar1;
-    lVar8 = lVar8 + -1;
-    puVar6 = puVar12 + 0x10;
-    psVar15 = psVar14 + 0x40;
-  } while (lVar8 != 0);
-  uVar3 = *(undefined4 *)(psVar14 + 0x42);
-  uVar4 = *(undefined4 *)(psVar14 + 0x44);
-  uVar5 = *(undefined4 *)(psVar14 + 0x46);
-  *(undefined4 *)(puVar12 + 0x10) = *(undefined4 *)(psVar14 + 0x40);
-  *(undefined4 *)((longlong)puVar12 + 0x84) = uVar3;
-  *(undefined4 *)(puVar12 + 0x11) = uVar4;
-  *(undefined4 *)((longlong)puVar12 + 0x8c) = uVar5;
-  uVar3 = *(undefined4 *)(psVar14 + 0x4a);
-  uVar4 = *(undefined4 *)(psVar14 + 0x4c);
-  uVar5 = *(undefined4 *)(psVar14 + 0x4e);
-  *(undefined4 *)(puVar12 + 0x12) = *(undefined4 *)(psVar14 + 0x48);
-  *(undefined4 *)((longlong)puVar12 + 0x94) = uVar3;
-  *(undefined4 *)(puVar12 + 0x13) = uVar4;
-  *(undefined4 *)((longlong)puVar12 + 0x9c) = uVar5;
-  puVar12[0x14] = *(undefined8 *)(psVar14 + 0x50);
-  *(undefined4 *)(puVar12 + 0x15) = *(undefined4 *)(psVar14 + 0x54);
+    psVar15 = psVar16;
+    puVar13 = puVar6;
+    uVar1 = *(undefined8 *)(psVar15 + 4);
+    *puVar13 = *(undefined8 *)psVar15;
+    puVar13[1] = uVar1;
+    uVar1 = *(undefined8 *)(psVar15 + 0xc);
+    puVar13[2] = *(undefined8 *)(psVar15 + 8);
+    puVar13[3] = uVar1;
+    uVar1 = *(undefined8 *)(psVar15 + 0x14);
+    puVar13[4] = *(undefined8 *)(psVar15 + 0x10);
+    puVar13[5] = uVar1;
+    uVar1 = *(undefined8 *)(psVar15 + 0x1c);
+    puVar13[6] = *(undefined8 *)(psVar15 + 0x18);
+    puVar13[7] = uVar1;
+    uVar1 = *(undefined8 *)(psVar15 + 0x24);
+    puVar13[8] = *(undefined8 *)(psVar15 + 0x20);
+    puVar13[9] = uVar1;
+    uVar1 = *(undefined8 *)(psVar15 + 0x2c);
+    puVar13[10] = *(undefined8 *)(psVar15 + 0x28);
+    puVar13[0xb] = uVar1;
+    uVar1 = *(undefined8 *)(psVar15 + 0x34);
+    puVar13[0xc] = *(undefined8 *)(psVar15 + 0x30);
+    puVar13[0xd] = uVar1;
+    uVar1 = *(undefined8 *)(psVar15 + 0x3c);
+    puVar13[0xe] = *(undefined8 *)(psVar15 + 0x38);
+    puVar13[0xf] = uVar1;
+    lVar9 = lVar9 + -1;
+    puVar6 = puVar13 + 0x10;
+    psVar16 = psVar15 + 0x40;
+  } while (lVar9 != 0);
+  uVar3 = *(undefined4 *)(psVar15 + 0x42);
+  uVar4 = *(undefined4 *)(psVar15 + 0x44);
+  uVar5 = *(undefined4 *)(psVar15 + 0x46);
+  *(undefined4 *)(puVar13 + 0x10) = *(undefined4 *)(psVar15 + 0x40);
+  *(undefined4 *)((longlong)puVar13 + 0x84) = uVar3;
+  *(undefined4 *)(puVar13 + 0x11) = uVar4;
+  *(undefined4 *)((longlong)puVar13 + 0x8c) = uVar5;
+  uVar3 = *(undefined4 *)(psVar15 + 0x4a);
+  uVar4 = *(undefined4 *)(psVar15 + 0x4c);
+  uVar5 = *(undefined4 *)(psVar15 + 0x4e);
+  *(undefined4 *)(puVar13 + 0x12) = *(undefined4 *)(psVar15 + 0x48);
+  *(undefined4 *)((longlong)puVar13 + 0x94) = uVar3;
+  *(undefined4 *)(puVar13 + 0x13) = uVar4;
+  *(undefined4 *)((longlong)puVar13 + 0x9c) = uVar5;
+  puVar13[0x14] = *(undefined8 *)(psVar15 + 0x50);
+  *(undefined4 *)(puVar13 + 0x15) = *(undefined4 *)(psVar15 + 0x54);
   ExAcquirePushLockExclusiveEx(ClusPortAdapterExtension + 0xf8,0);
   if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
       ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) && (3 < (byte)WPP_GLOBAL_Control[0x29]))
   {
-    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x21,
-            &WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids);
-  }
-  plVar9 = (longlong *)(ClusPortAdapterExtension + 0xe8);
-  plVar10 = (longlong *)*plVar9;
-  if (plVar10 != plVar9) {
+    WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x29,
+            &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
+  }
+  plVar10 = (longlong *)(ClusPortAdapterExtension + 0xe8);
+  plVar11 = (longlong *)*plVar10;
+  if (plVar11 != plVar10) {
 LAB_1:
-    if (*(short *)((longlong)plVar10 + 0x14) != *param_2) goto code_r0x0001c0016efd;
-    puVar6 = (undefined8 *)((longlong)plVar10 + 0x14);
+    if (*(short *)((longlong)plVar11 + 0x14) != *param_2) goto code_r0x0001c0017359;
+    puVar6 = (undefined8 *)((longlong)plVar11 + 0x14);
     do {
-      psVar15 = param_2;
-      puVar12 = puVar6;
-      uVar1 = *(undefined8 *)(psVar15 + 4);
-      *puVar12 = *(undefined8 *)psVar15;
-      puVar12[1] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0xc);
-      puVar12[2] = *(undefined8 *)(psVar15 + 8);
-      puVar12[3] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x14);
-      puVar12[4] = *(undefined8 *)(psVar15 + 0x10);
-      puVar12[5] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x1c);
-      puVar12[6] = *(undefined8 *)(psVar15 + 0x18);
-      puVar12[7] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x24);
-      puVar12[8] = *(undefined8 *)(psVar15 + 0x20);
-      puVar12[9] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x2c);
-      puVar12[10] = *(undefined8 *)(psVar15 + 0x28);
-      puVar12[0xb] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x34);
-      puVar12[0xc] = *(undefined8 *)(psVar15 + 0x30);
-      puVar12[0xd] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x3c);
-      puVar12[0xe] = *(undefined8 *)(psVar15 + 0x38);
-      puVar12[0xf] = uVar1;
-      lVar20 = lVar20 + -1;
-      puVar6 = puVar12 + 0x10;
-      param_2 = psVar15 + 0x40;
-    } while (lVar20 != 0);
-    uVar3 = *(undefined4 *)(psVar15 + 0x42);
-    uVar4 = *(undefined4 *)(psVar15 + 0x44);
-    uVar5 = *(undefined4 *)(psVar15 + 0x46);
-    *(undefined4 *)(puVar12 + 0x10) = *(undefined4 *)(psVar15 + 0x40);
-    *(undefined4 *)((longlong)puVar12 + 0x84) = uVar3;
-    *(undefined4 *)(puVar12 + 0x11) = uVar4;
-    *(undefined4 *)((longlong)puVar12 + 0x8c) = uVar5;
-    uVar1 = *(undefined8 *)(psVar15 + 0x4c);
-    puVar12[0x12] = *(undefined8 *)(psVar15 + 0x48);
-    puVar12[0x13] = uVar1;
-    puVar12[0x14] = *(undefined8 *)(psVar15 + 0x50);
-    *(undefined4 *)(puVar12 + 0x15) = *(undefined4 *)(psVar15 + 0x54);
+      psVar16 = param_2;
+      puVar13 = puVar6;
+      uVar1 = *(undefined8 *)(psVar16 + 4);
+      *puVar13 = *(undefined8 *)psVar16;
+      puVar13[1] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0xc);
+      puVar13[2] = *(undefined8 *)(psVar16 + 8);
+      puVar13[3] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x14);
+      puVar13[4] = *(undefined8 *)(psVar16 + 0x10);
+      puVar13[5] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x1c);
+      puVar13[6] = *(undefined8 *)(psVar16 + 0x18);
+      puVar13[7] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x24);
+      puVar13[8] = *(undefined8 *)(psVar16 + 0x20);
+      puVar13[9] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x2c);
+      puVar13[10] = *(undefined8 *)(psVar16 + 0x28);
+      puVar13[0xb] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x34);
+      puVar13[0xc] = *(undefined8 *)(psVar16 + 0x30);
+      puVar13[0xd] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x3c);
+      puVar13[0xe] = *(undefined8 *)(psVar16 + 0x38);
+      puVar13[0xf] = uVar1;
+      lVar21 = lVar21 + -1;
+      puVar6 = puVar13 + 0x10;
+      param_2 = psVar16 + 0x40;
+    } while (lVar21 != 0);
+    uVar3 = *(undefined4 *)(psVar16 + 0x42);
+    uVar4 = *(undefined4 *)(psVar16 + 0x44);
+    uVar5 = *(undefined4 *)(psVar16 + 0x46);
+    *(undefined4 *)(puVar13 + 0x10) = *(undefined4 *)(psVar16 + 0x40);
+    *(undefined4 *)((longlong)puVar13 + 0x84) = uVar3;
+    *(undefined4 *)(puVar13 + 0x11) = uVar4;
+    *(undefined4 *)((longlong)puVar13 + 0x8c) = uVar5;
+    uVar1 = *(undefined8 *)(psVar16 + 0x4c);
+    puVar13[0x12] = *(undefined8 *)(psVar16 + 0x48);
+    puVar13[0x13] = uVar1;
+    puVar13[0x14] = *(undefined8 *)(psVar16 + 0x50);
+    *(undefined4 *)(puVar13 + 0x15) = *(undefined4 *)(psVar16 + 0x54);
     goto LAB_2;
   }
 LAB_3:
-  plVar10 = (longlong *)ExAllocatePoolWithTag(0x200,0x3f0,0x4e704c43);
-  puVar18 = auStack_38;
-  pvVar11 = _Dst;
-  if (plVar10 != (longlong *)0x0) {
-    memset(plVar10,0,0x3f0);
-    puVar6 = (undefined8 *)((longlong)plVar10 + 0x14);
+  plVar11 = (longlong *)ExAllocatePoolWithTag(0x200,0x3f0,0x4e704c43);
+  puVar19 = auStack_38;
+  pvVar12 = _Dst;
+  if (plVar11 != (longlong *)0x0) {
+    memset(plVar11,0,0x3f0);
+    puVar6 = (undefined8 *)((longlong)plVar11 + 0x14);
     do {
-      psVar15 = param_2;
-      puVar12 = puVar6;
-      uVar1 = *(undefined8 *)(psVar15 + 4);
-      *puVar12 = *(undefined8 *)psVar15;
-      puVar12[1] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0xc);
-      puVar12[2] = *(undefined8 *)(psVar15 + 8);
-      puVar12[3] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x14);
-      puVar12[4] = *(undefined8 *)(psVar15 + 0x10);
-      puVar12[5] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x1c);
-      puVar12[6] = *(undefined8 *)(psVar15 + 0x18);
-      puVar12[7] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x24);
-      puVar12[8] = *(undefined8 *)(psVar15 + 0x20);
-      puVar12[9] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x2c);
-      puVar12[10] = *(undefined8 *)(psVar15 + 0x28);
-      puVar12[0xb] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x34);
-      puVar12[0xc] = *(undefined8 *)(psVar15 + 0x30);
-      puVar12[0xd] = uVar1;
-      uVar1 = *(undefined8 *)(psVar15 + 0x3c);
-      puVar12[0xe] = *(undefined8 *)(psVar15 + 0x38);
-      puVar12[0xf] = uVar1;
-      lVar20 = lVar20 + -1;
-      puVar6 = puVar12 + 0x10;
-      param_2 = psVar15 + 0x40;
-    } while (lVar20 != 0);
-    uVar1 = *(undefined8 *)(psVar15 + 0x44);
-    puVar12[0x10] = *(undefined8 *)(psVar15 + 0x40);
-    puVar12[0x11] = uVar1;
-    uVar1 = *(undefined8 *)(psVar15 + 0x4c);
-    puVar12[0x12] = *(undefined8 *)(psVar15 + 0x48);
-    puVar12[0x13] = uVar1;
-    puVar12[0x14] = *(undefined8 *)(psVar15 + 0x50);
-    *(undefined4 *)(puVar12 + 0x15) = *(undefined4 *)(psVar15 + 0x54);
-    plVar9 = plVar10 + 0x5d;
-    plVar10[1] = (longlong)plVar10;
+      psVar16 = param_2;
+      puVar13 = puVar6;
+      uVar1 = *(undefined8 *)(psVar16 + 4);
+      *puVar13 = *(undefined8 *)psVar16;
+      puVar13[1] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0xc);
+      puVar13[2] = *(undefined8 *)(psVar16 + 8);
+      puVar13[3] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x14);
+      puVar13[4] = *(undefined8 *)(psVar16 + 0x10);
+      puVar13[5] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x1c);
+      puVar13[6] = *(undefined8 *)(psVar16 + 0x18);
+      puVar13[7] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x24);
+      puVar13[8] = *(undefined8 *)(psVar16 + 0x20);
+      puVar13[9] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x2c);
+      puVar13[10] = *(undefined8 *)(psVar16 + 0x28);
+      puVar13[0xb] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x34);
+      puVar13[0xc] = *(undefined8 *)(psVar16 + 0x30);
+      puVar13[0xd] = uVar1;
+      uVar1 = *(undefined8 *)(psVar16 + 0x3c);
+      puVar13[0xe] = *(undefined8 *)(psVar16 + 0x38);
+      puVar13[0xf] = uVar1;
+      lVar21 = lVar21 + -1;
+      puVar6 = puVar13 + 0x10;
+      param_2 = psVar16 + 0x40;
+    } while (lVar21 != 0);
+    uVar1 = *(undefined8 *)(psVar16 + 0x44);
+    puVar13[0x10] = *(undefined8 *)(psVar16 + 0x40);
+    puVar13[0x11] = uVar1;
+    uVar1 = *(undefined8 *)(psVar16 + 0x4c);
+    puVar13[0x12] = *(undefined8 *)(psVar16 + 0x48);
+    puVar13[0x13] = uVar1;
+    puVar13[0x14] = *(undefined8 *)(psVar16 + 0x50);
+    *(undefined4 *)(puVar13 + 0x15) = *(undefined4 *)(psVar16 + 0x54);
+    plVar10 = plVar11 + 0x5d;
+    plVar11[1] = (longlong)plVar11;
+    *plVar11 = (longlong)plVar11;
+    plVar11[0x5e] = (longlong)plVar10;
     *plVar10 = (longlong)plVar10;
-    plVar10[0x5e] = (longlong)plVar9;
-    *plVar9 = (longlong)plVar9;
-    ClusPortInitializeDiskTable((longlong)plVar10);
-    ClusBFltInitRWLock(plVar10 + 0x5c);
-    ClusBFltInitRWLock(plVar10 + 0x7c);
-    pvVar11 = (void *)ExAllocatePoolWithTag(0x200,(ulonglong)ClusPortNumProcs << 3,0x4e704c43);
-    plVar10[0x6c] = (longlong)pvVar11;
-    if (pvVar11 == (void *)0x0) {
+    ClusPortInitializeDiskTable((longlong)plVar11);
+    ClusBFltInitRWLock(plVar11 + 0x5c);
+    ClusBFltInitRWLock(plVar11 + 0x7c);
+    pvVar12 = (void *)ExAllocatePoolWithTag(0x200,(ulonglong)ClusPortNumProcs << 3,0x4e704c43);
+    plVar11[0x6c] = (longlong)pvVar12;
+    if (pvVar12 == (void *)0x0) {
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (2 < (byte)WPP_GLOBAL_Control[0x29])) {
-        WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x22,
-                &WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids);
+        WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x2a,
+                &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
       }
     }
     else {
-      memset(pvVar11,0,(ulonglong)ClusPortNumProcs << 3);
-    }
-    lVar8 = ClusPortAdapterExtension + 0xe8;
-    plVar9 = *(longlong **)(ClusPortAdapterExtension + 0xf0);
-    if (*plVar9 != lVar8) {
+      memset(pvVar12,0,(ulonglong)ClusPortNumProcs << 3);
+    }
+    lVar9 = ClusPortAdapterExtension + 0xe8;
+    plVar10 = *(longlong **)(ClusPortAdapterExtension + 0xf0);
+    if (*plVar10 != lVar9) {
       pcVar2 = (code *)swi(0x29);
-      lVar8 = (*pcVar2)(3);
-      puVar16 = auStack_30;
-    }
-    *plVar10 = lVar8;
-    plVar10[1] = (longlong)plVar9;
-    *plVar9 = (longlong)plVar10;
-    *(longlong **)(lVar8 + 8) = plVar10;
-    puVar17 = puVar16;
+      lVar9 = (*pcVar2)(3);
+      puVar17 = auStack_30;
+    }
+    *plVar11 = lVar9;
+    plVar11[1] = (longlong)plVar10;
+    *plVar10 = (longlong)plVar11;
+    *(longlong **)(lVar9 + 8) = plVar11;
+    puVar18 = puVar17;
 LAB_2:
     LOCK();
-    bVar21 = (int)plVar10[2] == 0;
-    if (bVar21) {
-      *(int *)(plVar10 + 2) = 1;
+    bVar22 = (int)plVar11[2] == 0;
+    if (bVar22) {
+      *(int *)(plVar11 + 2) = 1;
     }
     UNLOCK();
-    *(undefined8 *)(puVar17 + -8) = 0x1c0017123;
+    *(undefined8 *)(puVar18 + -8) = 0x1c001757f;
     KeEnterCriticalRegion();
-    lVar8 = plVar10[0x7c];
-    *(undefined8 *)(puVar17 + -8) = 0x1c0017136;
-    ExAcquireCacheAwarePushLockExclusive(lVar8);
-    pvVar11 = (void *)plVar10[0x7d];
-    lVar8 = plVar10[0x7c];
-    plVar10[0x7d] = (longlong)_Dst;
-    *(undefined8 *)(puVar17 + -8) = 0x1c0017157;
-    ExReleaseCacheAwarePushLockExclusive(lVar8);
-    *(undefined8 *)(puVar17 + -8) = 0x1c0017163;
+    lVar9 = plVar11[0x7c];
+    *(undefined8 *)(puVar18 + -8) = 0x1c0017592;
+    ExAcquireCacheAwarePushLockExclusive(lVar9);
+    pvVar12 = (void *)plVar11[0x7d];
+    lVar9 = plVar11[0x7c];
+    plVar11[0x7d] = (longlong)_Dst;
+    *(undefined8 *)(puVar18 + -8) = 0x1c00175b3;
+    ExReleaseCacheAwarePushLockExclusive(lVar9);
+    *(undefined8 *)(puVar18 + -8) = 0x1c00175bf;
     KeLeaveCriticalRegion();
-    *(undefined1 *)((longlong)plVar10 + 0x2d4) = 1;
-    puVar18 = puVar17;
-  }
-  *(undefined8 *)(puVar18 + -8) = 0x1c0017189;
+    *(undefined1 *)((longlong)plVar11 + 0x2d4) = 1;
+    puVar19 = puVar18;
+  }
+  *(undefined8 *)(puVar19 + -8) = 0x1c00175e5;
   ExReleasePushLockExclusiveEx(ClusPortAdapterExtension + 0xf8,0);
   if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
       ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) && (3 < (byte)WPP_GLOBAL_Control[0x29]))
   {
     uVar1 = *(undefined8 *)(WPP_GLOBAL_Control + 0x18);
-    *(undefined8 *)(puVar18 + -8) = 0x1c00171c3;
-    WPP_SF_(uVar1,0x23,&WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids);
-  }
-  if (plVar10 == (longlong *)0x0) {
-    uVar19 = 0xc000009a;
+    *(undefined8 *)(puVar19 + -8) = 0x1c0017623;
+    WPP_SF_(uVar1,0x2b,&WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
+  }
+  if (plVar11 == (longlong *)0x0) {
+    uVar20 = 0xc000009a;
     if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
         ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
        (1 < (byte)WPP_GLOBAL_Control[0x29])) {
-      uVar13 = 0x25;
+      uVar14 = 0x2d;
 LAB_4:
-      uVar19 = 0xc000009a;
+      uVar20 = 0xc000009a;
       uVar1 = *(undefined8 *)(WPP_GLOBAL_Control + 0x18);
-      *(undefined8 *)(puVar18 + -8) = 0x1c0017272;
-      WPP_SF_(uVar1,uVar13,&WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids);
+      *(undefined8 *)(puVar19 + -8) = 0x1c00176d4;
+      WPP_SF_(uVar1,uVar14,&WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
     }
 LAB_5:
-    *(undefined8 *)(puVar18 + -8) = 0x1c0017281;
-    ExFreePoolWithTag(puVar7,0x6e704c43);
+    *(undefined8 *)(puVar19 + -8) = 0x1c00176e3;
+    ExFreePoolWithTag(puVar8,0x6e704c43);
   }
   else {
-    if (!bVar21) goto LAB_5;
-    *(undefined8 *)(puVar18 + -8) = 0x1c00171e8;
-    plVar10 = (longlong *)ExAllocatePoolWithTag(0x200,0x28,0x57704c43);
-    if (plVar10 == (longlong *)0x0) {
-      uVar19 = 0xc000009a;
+    if (!bVar22) goto LAB_5;
+    *(undefined8 *)(puVar19 + -8) = 0x1c0017648;
+    plVar11 = (longlong *)ExAllocatePoolWithTag(0x200,0x28,0x57704c43);
+    if (plVar11 == (longlong *)0x0) {
+      uVar20 = 0xc000009a;
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (1 < (byte)WPP_GLOBAL_Control[0x29])) {
-        uVar13 = 0x24;
+        uVar14 = 0x2c;
         goto LAB_4;
       }
       goto LAB_5;
     }
-    *plVar10 = 0;
-    plVar10[2] = (longlong)ClusPortEnumAndCreateRemoteDisksWorker;
-    plVar10[4] = (longlong)puVar7;
-    plVar10[3] = (longlong)plVar10;
-    *(undefined8 *)(puVar18 + -8) = 0x1c001723d;
-    CsvFsThreadPoolEnqueWorkItem(0x1c0026c00,plVar10);
-  }
-  if (pvVar11 != (void *)0x0) {
-    *(undefined8 *)(puVar18 + -8) = 0x1c001729a;
-    ExFreePoolWithTag(pvVar11,0x62704c43);
+    *plVar11 = 0;
+    plVar11[2] = (longlong)ClusPortEnumAndCreateRemoteDisksWorker;
+    plVar11[4] = (longlong)puVar8;
+    plVar11[3] = (longlong)plVar11;
+    *(undefined8 *)(puVar19 + -8) = 0x1c001769e;
+    CsvFsThreadPoolEnqueWorkItem(0x1c0026c00,plVar11);
+  }
+  if (pvVar12 != (void *)0x0) {
+    *(undefined8 *)(puVar19 + -8) = 0x1c00176fc;
+    ExFreePoolWithTag(pvVar12,0x62704c43);
   }
 LAB_0:
   if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
       ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) && (3 < (byte)WPP_GLOBAL_Control[0x29]))
   {
     uVar1 = *(undefined8 *)(WPP_GLOBAL_Control + 0x18);
-    *(undefined8 *)(puVar18 + -8) = 0x1c00172d1;
-    WPP_SF_D(uVar1,0x26,&WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids,uVar19);
-  }
-  return uVar19;
-code_r0x0001c0016efd:
-  plVar10 = (longlong *)*plVar10;
-  if (plVar10 == plVar9) goto LAB_3;
+    *(undefined8 *)(puVar19 + -8) = 0x1c001773a;
+    WPP_SF_D(uVar1,0x2e,&WPP_c912e1cf18e1305813a3f9f237738604_Traceguids,uVar20);
+  }
+  return uVar20;
+code_r0x0001c0017359:
+  plVar11 = (longlong *)*plVar11;
+  if (plVar11 == plVar10) goto LAB_3;
   goto LAB_1;
 }
 

```


## ClusPortSetFDInfo

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|code,length,address,calling,called|
|ratio|0.26|
|i_ratio|0.6|
|m_ratio|0.9|
|b_ratio|0.88|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|ClusPortSetFDInfo|ClusPortSetFDInfo|
|fullname|ClusPortSetFDInfo|ClusPortSetFDInfo|
|refcount|2|2|
|`length`|571|699|
|`called`|<details><summary>Expand for full list:<br>NTOSKRNL.EXE::ExAcquireCacheAwarePushLockExclusive<br>NTOSKRNL.EXE::ExAcquirePushLockSharedEx<br>NTOSKRNL.EXE::ExAllocatePoolWithTag<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseCacheAwarePushLockExclusive<br>NTOSKRNL.EXE::ExReleasePushLockSharedEx<br>NTOSKRNL.EXE::KeEnterCriticalRegion<br>NTOSKRNL.EXE::KeLeaveCriticalRegion<br>WPP_SF_<br>WPP_SF_D<br>memcpy</summary></details>|<details><summary>Expand for full list:<br>ClusPortValidateFaultDomain<br>NTOSKRNL.EXE::ExAcquireCacheAwarePushLockExclusive<br>NTOSKRNL.EXE::ExAcquirePushLockSharedEx<br>NTOSKRNL.EXE::ExAllocatePoolWithTag<br>NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExReleaseCacheAwarePushLockExclusive<br>NTOSKRNL.EXE::ExReleasePushLockSharedEx<br>NTOSKRNL.EXE::KeEnterCriticalRegion<br>NTOSKRNL.EXE::KeLeaveCriticalRegion<br>RtlULongAdd<br>WPP_SF_</summary>WPP_SF_D<br>memcpy</details>|
|`calling`||ClusPortControlObjectDeviceControlHandler|
|paramcount|1|1|
|`address`|1c00185ac|1c0018a1c|
|sig|undefined4 __fastcall ClusPortSetFDInfo(longlong param_1)|undefined4 __fastcall ClusPortSetFDInfo(longlong param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### ClusPortSetFDInfo Called Diff


```diff
--- ClusPortSetFDInfo called
+++ ClusPortSetFDInfo called
@@ -0,0 +1 @@
+ClusPortValidateFaultDomain
@@ -8,0 +10 @@
+RtlULongAdd
```


### ClusPortSetFDInfo Calling Diff


```diff
--- ClusPortSetFDInfo calling
+++ ClusPortSetFDInfo calling
@@ -0,0 +1 @@
+ClusPortControlObjectDeviceControlHandler
```


### ClusPortSetFDInfo Diff


```diff
--- ClusPortSetFDInfo
+++ ClusPortSetFDInfo
@@ -1,90 +1,117 @@
 
 undefined4 ClusPortSetFDInfo(longlong param_1)
 
 {
-  uint uVar1;
-  uint *puVar2;
-  void *pvVar3;
+  uint *puVar1;
+  void *pvVar2;
+  uint uVar3;
+  ulonglong uVar4;
   void *_Dst;
-  longlong *plVar4;
-  undefined2 uVar5;
-  longlong *plVar6;
-  undefined4 uVar7;
+  longlong *plVar5;
+  undefined2 uVar6;
+  longlong *plVar7;
+  undefined4 uVar8;
+  uint uVar9;
+  uint local_res8 [2];
   
-  puVar2 = *(uint **)(param_1 + 0x18);
-  uVar7 = 0;
+  puVar1 = *(uint **)(param_1 + 0x18);
+  uVar8 = 0;
   *(undefined8 *)(param_1 + 0x38) = 0;
-  uVar1 = *(uint *)(*(longlong *)(param_1 + 0xb8) + 0x10);
-  if (uVar1 < 0x20) {
+  uVar9 = *(uint *)(*(longlong *)(param_1 + 0xb8) + 0x10);
+  if (uVar9 < 0x20) {
     if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
         ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
        (1 < (byte)WPP_GLOBAL_Control[0x29])) {
-      uVar5 = 0x42;
+      uVar6 = 0x4a;
 LAB_0:
-      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar5,
-              &WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids);
+      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar6,
+              &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
     }
+LAB_1:
+    uVar8 = 0xc0000023;
   }
   else {
-    if (puVar2[2] + 4 <= uVar1) {
-      _Dst = (void *)ExAllocatePoolWithTag(0x200,puVar2[2],0x62704c43);
-      if (_Dst == (void *)0x0) {
-        uVar7 = 0xc000009a;
-      }
-      else {
-        memcpy(_Dst,puVar2 + 1,(ulonglong)puVar2[2]);
-        ExAcquirePushLockSharedEx(ClusPortAdapterExtension + 0xf8,0);
+    local_res8[0] = 0;
+    uVar3 = RtlULongAdd(4,puVar1[2],local_res8);
+    if (uVar3 == 0) {
+      if (uVar9 < local_res8[0]) {
         if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
             ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
-           (3 < (byte)WPP_GLOBAL_Control[0x29])) {
-          WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x44,
-                  &WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids);
+           (1 < (byte)WPP_GLOBAL_Control[0x29])) {
+          uVar6 = 0x4c;
+          goto LAB_0;
         }
-        plVar4 = (longlong *)(ClusPortAdapterExtension + 0xe8);
-        plVar6 = (longlong *)*plVar4;
-        if (plVar6 != plVar4) {
-          do {
-            if ((uint)*(ushort *)((longlong)plVar6 + 0x14) == *puVar2) {
-              KeEnterCriticalRegion();
-              ExAcquireCacheAwarePushLockExclusive(plVar6[0x7c]);
-              pvVar3 = (void *)plVar6[0x7d];
-              plVar6[0x7d] = (longlong)_Dst;
-              ExReleaseCacheAwarePushLockExclusive(plVar6[0x7c]);
-              KeLeaveCriticalRegion();
-              _Dst = pvVar3;
-              break;
-            }
-            plVar6 = (longlong *)*plVar6;
-          } while (plVar6 != plVar4);
+        goto LAB_1;
+      }
+      uVar4 = ClusPortValidateFaultDomain((longlong)(puVar1 + 1));
+      if ((char)uVar4 != '\0') {
+        _Dst = (void *)ExAllocatePoolWithTag(0x200,puVar1[2],0x62704c43);
+        if (_Dst == (void *)0x0) {
+          uVar8 = 0xc000009a;
         }
-        ExReleasePushLockSharedEx(ClusPortAdapterExtension + 0xf8,0);
-        if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-            ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
-           (3 < (byte)WPP_GLOBAL_Control[0x29])) {
-          WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x45,
-                  &WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids);
+        else {
+          memcpy(_Dst,puVar1 + 1,(ulonglong)puVar1[2]);
+          ExAcquirePushLockSharedEx(ClusPortAdapterExtension + 0xf8,0);
+          if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+              ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+             (3 < (byte)WPP_GLOBAL_Control[0x29])) {
+            WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x4e,
+                    &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
+          }
+          plVar5 = (longlong *)(ClusPortAdapterExtension + 0xe8);
+          plVar7 = (longlong *)*plVar5;
+          if (plVar7 != plVar5) {
+            do {
+              if ((uint)*(ushort *)((longlong)plVar7 + 0x14) == *puVar1) {
+                KeEnterCriticalRegion();
+                ExAcquireCacheAwarePushLockExclusive(plVar7[0x7c]);
+                pvVar2 = (void *)plVar7[0x7d];
+                plVar7[0x7d] = (longlong)_Dst;
+                ExReleaseCacheAwarePushLockExclusive(plVar7[0x7c]);
+                KeLeaveCriticalRegion();
+                _Dst = pvVar2;
+                break;
+              }
+              plVar7 = (longlong *)*plVar7;
+            } while (plVar7 != plVar5);
+          }
+          ExReleasePushLockSharedEx(ClusPortAdapterExtension + 0xf8,0);
+          if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+              ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+             (3 < (byte)WPP_GLOBAL_Control[0x29])) {
+            WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x4f,
+                    &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
+          }
+          if (_Dst != (void *)0x0) {
+            ExFreePoolWithTag(_Dst,0x62704c43);
+          }
         }
-        if (_Dst != (void *)0x0) {
-          ExFreePoolWithTag(_Dst,0x62704c43);
-        }
+        goto LAB_2;
       }
-      goto LAB_1;
+      if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+         (1 < (byte)WPP_GLOBAL_Control[0x29])) {
+        uVar6 = 0x4d;
+        goto LAB_3;
+      }
     }
-    if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-        ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
-       (1 < (byte)WPP_GLOBAL_Control[0x29])) {
-      uVar5 = 0x43;
-      goto LAB_0;
+    else if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+             ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+            (1 < (byte)WPP_GLOBAL_Control[0x29])) {
+      uVar6 = 0x4b;
+LAB_3:
+      WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar6,
+              &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids);
     }
+    uVar8 = 0xc000000d;
   }
-  uVar7 = 0xc0000023;
-LAB_1:
+LAB_2:
   if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
       ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) && (3 < (byte)WPP_GLOBAL_Control[0x29]))
   {
-    WPP_SF_D(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x46,
-             &WPP_486a4959dd823fdbe68143729dd40e7e_Traceguids,uVar7);
+    WPP_SF_D(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x50,
+             &WPP_c912e1cf18e1305813a3f9f237738604_Traceguids,uVar8);
   }
-  return uVar7;
+  return uVar8;
 }
 

```


## ClusPortControlObjectDeviceControlHandler

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|code,refcount,length,address,called|
|ratio|0.62|
|i_ratio|0.2|
|m_ratio|0.77|
|b_ratio|0.1|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|ClusPortControlObjectDeviceControlHandler|ClusPortControlObjectDeviceControlHandler|
|fullname|ClusPortControlObjectDeviceControlHandler|ClusPortControlObjectDeviceControlHandler|
|`refcount`|3|2|
|`length`|1280|2028|
|`called`|<details><summary>Expand for full list:<br>ClusPortAddNetworkPath<br>ClusPortGetUpdateClusterMembershipState<br>ClusPortRefreshNetworkPath<br>ClusPortUpdateClusterMembership<br>ClusPortUpdateMembership<br>ClusPortWaitForLocalNodeCleanup<br>CsvCamClearClusterTokenCash<br>CsvCamSetSecurityInfo<br>CsvFsThreadPoolEnqueWorkItem<br>FUN_1c000aff9<br>NTOSKRNL.EXE::ExAllocatePoolWithTag</summary>NTOSKRNL.EXE::IofCompleteRequest<br>WPP_SF_<br>WPP_SF_D</details>|<details><summary>Expand for full list:<br>ClusPortAddNetworkPath<br>ClusPortGetUpdateClusterMembershipState<br>ClusPortRefreshNetworkPath<br>ClusPortRegisterCluster<br>ClusPortSetClusterId<br>ClusPortSetFDInfo<br>ClusPortUpdateClusterMembership<br>ClusPortUpdateMembership<br>ClusPortWaitForLocalNodeCleanup<br>CsvCamClearClusterTokenCash<br>CsvCamSetSecurityInfoSafe</summary>CsvFsThreadPoolEnqueWorkItem<br>NTOSKRNL.EXE::ExAllocatePoolWithTag<br>NTOSKRNL.EXE::IofCompleteRequest<br>WPP_SF_<br>WPP_SF_D</details>|
|calling|ClusPortControlObjectIrpHandler|ClusPortControlObjectIrpHandler|
|paramcount|1|1|
|`address`|1c00046e8|1c00046d8|
|sig|ulonglong __fastcall ClusPortControlObjectDeviceControlHandler(longlong param_1)|ulonglong __fastcall ClusPortControlObjectDeviceControlHandler(longlong param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### ClusPortControlObjectDeviceControlHandler Called Diff


```diff
--- ClusPortControlObjectDeviceControlHandler called
+++ ClusPortControlObjectDeviceControlHandler called
@@ -3,0 +4,3 @@
+ClusPortRegisterCluster
+ClusPortSetClusterId
+ClusPortSetFDInfo
@@ -8 +11 @@
-CsvCamSetSecurityInfo
+CsvCamSetSecurityInfoSafe
@@ -10 +12,0 @@
-FUN_1c000aff9
```


### ClusPortControlObjectDeviceControlHandler Diff


```diff
--- ClusPortControlObjectDeviceControlHandler
+++ ClusPortControlObjectDeviceControlHandler
@@ -1,310 +1,314 @@
 
 ulonglong ClusPortControlObjectDeviceControlHandler(longlong param_1)
 
 {
   ushort *puVar1;
   undefined4 *puVar2;
   longlong lVar3;
-  int iVar4;
-  uint uVar5;
+  uint uVar4;
+  int iVar5;
   longlong *plVar6;
-  undefined4 extraout_var;
   undefined8 *puVar7;
   undefined8 uVar8;
   SHashTable<class_ImpKernelMode,class_GuardedMutex,class_czl::SHashItemTraits<class_ClusterTokenEntry*___ptr64,struct__LUID*___ptr64,&public:_static_struct__LUID*___ptr64___cdecl_czl::StaticMemFun<struct__LUID*___ptr64,class_ClusterTokenEntry,_public:_struct__LUID*___ptr64___cdecl_ClusterTokenEntry::GetLuid(void)___ptr64,0_>::Fun(class_ClusterTokenEntry*___ptr64),&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64),&void___cdecl_czl::SHashAux::SetLinkage<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64,class_ClusterTokenEntry*___ptr64),&class_ClusterTokenEntry*___ptr64___cdecl_czl::SHashAux::GetNext<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64),&bool___cdecl_czl::SHashAux::DefaultMemoryComparator<struct__LUID*___ptr64,&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64)>(struct__LUID*___ptr64,struct__LUID*___ptr64)>,150,256,&void___cdecl_czl::SHashAux::DefaultOnItemRemoved<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64)>
   *pSVar9;
   undefined2 uVar10;
   longlong lVar11;
-  undefined4 uVar12;
+  ulonglong uVar12;
   ulonglong uVar13;
-  ulonglong uVar14;
+  undefined4 uVar14;
+  char local_res8 [8];
   
   lVar11 = *(longlong *)(param_1 + 0xb8);
-  uVar5 = *(uint *)(lVar11 + 0x18);
-  if (uVar5 < 0x7908035) {
-    if (uVar5 == 0x7908034) {
+  uVar4 = *(uint *)(lVar11 + 0x18);
+  if (uVar4 < 0x7908035) {
+    if (uVar4 == 0x7908034) {
       puVar2 = *(undefined4 **)(param_1 + 0x18);
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x43,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
       }
       if ((puVar2 == (undefined4 *)0x0) || (*(uint *)(lVar11 + 0x10) < 4)) {
-        uVar12 = 0xc000000d;
         uVar14 = 0xc000000d;
         uVar13 = 0xc000000d;
+        uVar12 = 0xc000000d;
         if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
            (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 &&
             (1 < (byte)WPP_GLOBAL_Control[0x29])))) {
           uVar10 = 0x44;
 LAB_0:
           WPP_SF_D(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar10,
-                   &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids,uVar12);
-          uVar13 = uVar14;
+                   &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids,uVar14);
+          uVar12 = uVar13;
         }
         goto LAB_1;
       }
       ClusPortLoadBalancePolicy = *puVar2;
       goto LAB_2;
     }
-    if (uVar5 == 0x49494) {
+    if (uVar4 == 0x49494) {
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x3b,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
-      }
-      uVar5 = ClusPortUpdateMembership(param_1);
-      uVar13 = (ulonglong)uVar5;
-      if ((int)uVar5 < 0) {
-        iVar4 = FUN_1c000aff9();
-        return CONCAT44(extraout_var,iVar4);
-      }
-    }
-    else if (uVar5 == 0x7904008) {
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
+      }
+      uVar4 = ClusPortUpdateMembership(param_1);
+      uVar12 = (ulonglong)uVar4;
+      if ((((int)uVar4 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
+         (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 &&
+          (1 < (byte)WPP_GLOBAL_Control[0x29])))) {
+        uVar10 = 0x3c;
+LAB_3:
+        uVar4 = (uint)uVar12;
+LAB_4:
+        WPP_SF_D(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar10,
+                 &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids,uVar4);
+      }
+    }
+    else if (uVar4 == 0x7904008) {
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x33,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
-      }
-      uVar5 = ClusPortAddNetworkPath(param_1,(short *)0x0);
-      uVar13 = (ulonglong)uVar5;
-      if ((((int)uVar5 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
-         (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 &&
-          (1 < (byte)WPP_GLOBAL_Control[0x29])))) {
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
+      }
+      uVar4 = ClusPortAddNetworkPath(param_1,(short *)0x0);
+      uVar12 = (ulonglong)uVar4;
+      if (((((int)uVar4 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
+          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+         (1 < (byte)WPP_GLOBAL_Control[0x29])) {
         uVar10 = 0x34;
         goto LAB_3;
       }
     }
-    else if (uVar5 == 0x7904010) {
+    else if (uVar4 == 0x7904010) {
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x3d,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
         lVar11 = *(longlong *)(param_1 + 0xb8);
       }
       lVar3 = ClusPortAdapterExtension;
       puVar1 = *(ushort **)(param_1 + 0x18);
       if (*(uint *)(lVar11 + 0x10) < 0xc) {
-        uVar5 = 0xc000000d;
-        uVar13 = 0xc000000d;
+        uVar4 = 0xc000000d;
+        uVar12 = 0xc000000d;
         if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
             ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
            (1 < (byte)WPP_GLOBAL_Control[0x29])) {
           uVar10 = 0x3f;
           goto LAB_4;
         }
         goto LAB_1;
       }
-      iVar4 = *(int *)(ClusPortAdapterExtension + 0xcc);
+      iVar5 = *(int *)(ClusPortAdapterExtension + 0xcc);
       *(uint *)(ClusPortAdapterExtension + 0xcc) = (uint)*puVar1;
-      uVar14 = 2000;
+      uVar13 = 2000;
       if (*(uint *)(puVar1 + 2) != 0) {
-        uVar14 = (ulonglong)*(uint *)(puVar1 + 2);
-      }
-      uVar13 = 0;
-      *(ulonglong *)(lVar3 + 0xd0) = uVar14;
+        uVar13 = (ulonglong)*(uint *)(puVar1 + 2);
+      }
+      uVar12 = 0;
+      *(ulonglong *)(lVar3 + 0xd0) = uVar13;
       if ((*(char *)(ClusPortControlExtension + 0x208c) == '\0') && ((char)puVar1[4] != '\0')) {
         *(undefined1 *)(ClusPortControlExtension + 0x208c) = 1;
         plVar6 = (longlong *)ExAllocatePoolWithTag(0x200,0x28,0x57704c43);
         if (plVar6 == (longlong *)0x0) {
-          uVar13 = 0xc000009a;
+          uVar12 = 0xc000009a;
           if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
               ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
              (1 < (byte)WPP_GLOBAL_Control[0x29])) {
             WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x3e,
-                    &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
+                    &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
           }
         }
         else {
           *plVar6 = 0;
           plVar6[2] = (longlong)ClusPortRevokeVirtualEnclosuresWorker;
           plVar6[3] = (longlong)plVar6;
           CsvFsThreadPoolEnqueWorkItem(0x1c0026a80,plVar6);
         }
       }
-      if (iVar4 == 0) {
+      if (iVar5 == 0) {
         puVar7 = ClusPortWaitForLocalNodeCleanup();
-        uVar13 = (ulonglong)puVar7 & 0xffffffff;
+        uVar12 = (ulonglong)puVar7 & 0xffffffff;
         if ((int)puVar7 < 0) {
           *(undefined4 *)(ClusPortAdapterExtension + 0xcc) = 0;
         }
       }
     }
-    else if (uVar5 == 0x790401c) {
+    else if (uVar4 == 0x790401c) {
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x40,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
         lVar11 = *(longlong *)(param_1 + 0xb8);
       }
       if (*(uint *)(lVar11 + 0x10) < 0x10) {
-        uVar5 = 0xc000000d;
-        uVar13 = 0xc000000d;
+        uVar4 = 0xc000000d;
+        uVar12 = 0xc000000d;
         if ((((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
-            (uVar13 = 0xc000000d, (*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) == 0)) ||
+            (uVar12 = 0xc000000d, (*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) == 0)) ||
            ((byte)WPP_GLOBAL_Control[0x29] < 2)) goto LAB_1;
         uVar10 = 0x42;
-        uVar13 = 0xc000000d;
-LAB_4:
-        WPP_SF_D(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar10,
-                 &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids,uVar5);
-      }
-      else {
-        uVar5 = CsvCamSetSecurityInfo(*(uint **)(param_1 + 0x18));
-        uVar13 = (ulonglong)uVar5;
-        pSVar9 = (SHashTable<class_ImpKernelMode,class_GuardedMutex,class_czl::SHashItemTraits<class_ClusterTokenEntry*___ptr64,struct__LUID*___ptr64,&public:_static_struct__LUID*___ptr64___cdecl_czl::StaticMemFun<struct__LUID*___ptr64,class_ClusterTokenEntry,_public:_struct__LUID*___ptr64___cdecl_ClusterTokenEntry::GetLuid(void)___ptr64,0_>::Fun(class_ClusterTokenEntry*___ptr64),&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64),&void___cdecl_czl::SHashAux::SetLinkage<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64,class_ClusterTokenEntry*___ptr64),&class_ClusterTokenEntry*___ptr64___cdecl_czl::SHashAux::GetNext<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64),&bool___cdecl_czl::SHashAux::DefaultMemoryComparator<struct__LUID*___ptr64,&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64)>(struct__LUID*___ptr64,struct__LUID*___ptr64)>,150,256,&void___cdecl_czl::SHashAux::DefaultOnItemRemoved<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64)>
-                  *)WPP_GLOBAL_Control;
-        if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-            ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
-           (3 < (byte)WPP_GLOBAL_Control[0x29])) {
-          pSVar9 = *(SHashTable<class_ImpKernelMode,class_GuardedMutex,class_czl::SHashItemTraits<class_ClusterTokenEntry*___ptr64,struct__LUID*___ptr64,&public:_static_struct__LUID*___ptr64___cdecl_czl::StaticMemFun<struct__LUID*___ptr64,class_ClusterTokenEntry,_public:_struct__LUID*___ptr64___cdecl_ClusterTokenEntry::GetLuid(void)___ptr64,0_>::Fun(class_ClusterTokenEntry*___ptr64),&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64),&void___cdecl_czl::SHashAux::SetLinkage<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64,class_ClusterTokenEntry*___ptr64),&class_ClusterTokenEntry*___ptr64___cdecl_czl::SHashAux::GetNext<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64),&bool___cdecl_czl::SHashAux::DefaultMemoryComparator<struct__LUID*___ptr64,&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64)>(struct__LUID*___ptr64,struct__LUID*___ptr64)>,150,256,&void___cdecl_czl::SHashAux::DefaultOnItemRemoved<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64)>
-                     **)(WPP_GLOBAL_Control + 0x18);
-          WPP_SF_D(pSVar9,0x41,&WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids,uVar5);
-        }
+        uVar12 = 0xc000000d;
+        goto LAB_4;
+      }
+      local_res8[0] = '\0';
+      uVar4 = CsvCamSetSecurityInfoSafe
+                        (*(ulong **)(param_1 + 0x18),*(uint *)(lVar11 + 0x10),local_res8);
+      uVar12 = (ulonglong)uVar4;
+      pSVar9 = (SHashTable<class_ImpKernelMode,class_GuardedMutex,class_czl::SHashItemTraits<class_ClusterTokenEntry*___ptr64,struct__LUID*___ptr64,&public:_static_struct__LUID*___ptr64___cdecl_czl::StaticMemFun<struct__LUID*___ptr64,class_ClusterTokenEntry,_public:_struct__LUID*___ptr64___cdecl_ClusterTokenEntry::GetLuid(void)___ptr64,0_>::Fun(class_ClusterTokenEntry*___ptr64),&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64),&void___cdecl_czl::SHashAux::SetLinkage<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64,class_ClusterTokenEntry*___ptr64),&class_ClusterTokenEntry*___ptr64___cdecl_czl::SHashAux::GetNext<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64),&bool___cdecl_czl::SHashAux::DefaultMemoryComparator<struct__LUID*___ptr64,&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64)>(struct__LUID*___ptr64,struct__LUID*___ptr64)>,150,256,&void___cdecl_czl::SHashAux::DefaultOnItemRemoved<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64)>
+                *)WPP_GLOBAL_Control;
+      if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+         (3 < (byte)WPP_GLOBAL_Control[0x29])) {
+        pSVar9 = *(SHashTable<class_ImpKernelMode,class_GuardedMutex,class_czl::SHashItemTraits<class_ClusterTokenEntry*___ptr64,struct__LUID*___ptr64,&public:_static_struct__LUID*___ptr64___cdecl_czl::StaticMemFun<struct__LUID*___ptr64,class_ClusterTokenEntry,_public:_struct__LUID*___ptr64___cdecl_ClusterTokenEntry::GetLuid(void)___ptr64,0_>::Fun(class_ClusterTokenEntry*___ptr64),&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64),&void___cdecl_czl::SHashAux::SetLinkage<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64,class_ClusterTokenEntry*___ptr64),&class_ClusterTokenEntry*___ptr64___cdecl_czl::SHashAux::GetNext<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64),&bool___cdecl_czl::SHashAux::DefaultMemoryComparator<struct__LUID*___ptr64,&public:_static_unsigned___int64___cdecl_czl::StaticValFun<unsigned___int64,struct__LUID*___ptr64,8>::Fun(struct__LUID*___ptr64)>(struct__LUID*___ptr64,struct__LUID*___ptr64)>,150,256,&void___cdecl_czl::SHashAux::DefaultOnItemRemoved<class_ClusterTokenEntry*___ptr64>(class_ClusterTokenEntry*___ptr64)>
+                   **)(WPP_GLOBAL_Control + 0x18);
+        WPP_SF_D(pSVar9,0x41,&WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids,uVar4);
+      }
+      if (local_res8[0] != '\x01') {
         CsvCamClearClusterTokenCash(pSVar9);
       }
     }
     else {
-      if (uVar5 != 0x7908028) {
-        if (uVar5 != 0x790802c) goto LAB_5;
+      if (uVar4 != 0x7908028) {
+        if (uVar4 != 0x790802c) goto LAB_5;
         if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
             ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
            (3 < (byte)WPP_GLOBAL_Control[0x29])) {
           WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x35,
-                  &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
+                  &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
         }
         goto LAB_2;
       }
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x37,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
-      }
-      uVar5 = ClusPortRefreshNetworkPath(param_1);
-      uVar13 = (ulonglong)uVar5;
-      if ((((int)uVar5 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
+      }
+      uVar4 = ClusPortRefreshNetworkPath(param_1);
+      uVar12 = (ulonglong)uVar4;
+      if ((((int)uVar4 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
          (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 &&
           (1 < (byte)WPP_GLOBAL_Control[0x29])))) {
         uVar10 = 0x38;
         goto LAB_4;
       }
     }
 LAB_6:
-    if ((int)uVar13 == 0x103) goto LAB_7;
+    if ((int)uVar12 == 0x103) goto LAB_7;
   }
   else {
-    if (uVar5 == 0x7908038) {
+    if (uVar4 == 0x7908038) {
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x39,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
-      }
-      uVar5 = ClusPortSetFDInfo(param_1);
-      uVar13 = (ulonglong)uVar5;
-      if ((((int)uVar5 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
+      }
+      uVar4 = ClusPortSetFDInfo(param_1);
+      uVar12 = (ulonglong)uVar4;
+      if ((((int)uVar4 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
          (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 &&
           (1 < (byte)WPP_GLOBAL_Control[0x29])))) {
         uVar10 = 0x3a;
-LAB_3:
-        uVar5 = (uint)uVar13;
-        goto LAB_4;
+        goto LAB_3;
       }
       goto LAB_6;
     }
-    if (uVar5 == 0x790803c) {
+    if (uVar4 == 0x790803c) {
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x45,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
-      }
-      iVar4 = ClusPortRegisterCluster(param_1);
-      if (((iVar4 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
-         (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 &&
-          (1 < (byte)WPP_GLOBAL_Control[0x29])))) {
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
+      }
+      iVar5 = ClusPortRegisterCluster(param_1);
+      if ((((iVar5 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
+          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+         (1 < (byte)WPP_GLOBAL_Control[0x29])) {
         uVar10 = 0x46;
 LAB_8:
         WPP_SF_D(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar10,
-                 &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids,iVar4);
-      }
-    }
-    else if (uVar5 == 0x7908040) {
+                 &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids,iVar5);
+      }
+    }
+    else if (uVar4 == 0x7908040) {
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x47,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
       }
       plVar6 = ClusPortUpdateClusterMembership(param_1);
-      iVar4 = (int)plVar6;
-      if ((((iVar4 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
-          ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
-         (1 < (byte)WPP_GLOBAL_Control[0x29])) {
+      iVar5 = (int)plVar6;
+      if (((iVar5 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
+         (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 &&
+          (1 < (byte)WPP_GLOBAL_Control[0x29])))) {
         uVar10 = 0x48;
         goto LAB_8;
       }
     }
     else {
-      if (uVar5 != 0x7908044) {
-        if (uVar5 != 0x7908048) {
+      if (uVar4 != 0x7908044) {
+        if (uVar4 != 0x7908048) {
 LAB_5:
           *(undefined8 *)(param_1 + 0x38) = 0;
-          uVar14 = 0xc00000bb;
-          uVar13 = uVar14;
+          uVar13 = 0xc00000bb;
+          uVar12 = uVar13;
           if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
               ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
              (1 < (byte)WPP_GLOBAL_Control[0x29])) {
             uVar10 = 0x4d;
-            uVar12 = 0xc00000bb;
+            uVar14 = 0xc00000bb;
             goto LAB_0;
           }
           goto LAB_1;
         }
         if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
             ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
            (3 < (byte)WPP_GLOBAL_Control[0x29])) {
           WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x49,
-                  &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
+                  &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
         }
         plVar6 = ClusPortGetUpdateClusterMembershipState(param_1);
-        uVar13 = (ulonglong)plVar6 & 0xffffffff;
-        if ((((int)plVar6 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
-           (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 &&
-            (1 < (byte)WPP_GLOBAL_Control[0x29])))) {
+        uVar12 = (ulonglong)plVar6 & 0xffffffff;
+        if (((((int)plVar6 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
+            ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
+           (1 < (byte)WPP_GLOBAL_Control[0x29])) {
           uVar10 = 0x4a;
           goto LAB_3;
         }
         goto LAB_6;
       }
       if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
           ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0)) &&
          (3 < (byte)WPP_GLOBAL_Control[0x29])) {
         WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x4b,
-                &WPP_9767d0e70aa93a8a94ee12076dc8d5ad_Traceguids);
+                &WPP_9e5a77db6baa3483decb9bdb398f5a32_Traceguids);
       }
       uVar8 = ClusPortSetClusterId(param_1);
-      iVar4 = (int)uVar8;
-      if (((iVar4 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
+      iVar5 = (int)uVar8;
+      if (((iVar5 < 0) && ((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control)) &&
          (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) != 0 &&
           (1 < (byte)WPP_GLOBAL_Control[0x29])))) {
         uVar10 = 0x4c;
         goto LAB_8;
       }
     }
 LAB_2:
-    uVar13 = 0;
+    uVar12 = 0;
   }
 LAB_1:
-  *(int *)(param_1 + 0x30) = (int)uVar13;
+  *(int *)(param_1 + 0x30) = (int)uVar12;
 LAB_7:
   IofCompleteRequest(param_1,0);
-  return uVar13;
+  return uVar12;
 }
 

```


## ClusPortExecuteIrp

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.99|
|i_ratio|0.73|
|m_ratio|0.98|
|b_ratio|0.98|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|ClusPortExecuteIrp|ClusPortExecuteIrp|
|fullname|ClusPortExecuteIrp|ClusPortExecuteIrp|
|refcount|6|6|
|`length`|1330|1365|
|`called`|<details><summary>Expand for full list:<br>ClusBFltAcquireRWLockSh<br>ClusPortPassThruScsiCommand<br>ClusPortSendPassthruReadWrite<br>ClusPortSendPassthruReadWriteRemote<br>ClusPortTunnelDevCtl<br>ClusPortTunnelFlush<br>FUN_1c000a013<br>FUN_1c000a0b5<br>NTOSKRNL.EXE::ExReleaseCacheAwarePushLockSharedEx<br>NTOSKRNL.EXE::KeLeaveCriticalRegion<br>WPP_SF_qq_guid_</summary>WPP_SF_qqqDDciD<br>memcpy</details>|<details><summary>Expand for full list:<br>ClusBFltAcquireRWLockSh<br>ClusPortPassThruScsiCommand<br>ClusPortSendPassthruReadWrite<br>ClusPortSendPassthruReadWriteRemote<br>ClusPortTunnelDevCtl<br>ClusPortTunnelFlush<br>FUN_1c000a9d7<br>FUN_1c000aa79<br>NTOSKRNL.EXE::ExReleaseCacheAwarePushLockSharedEx<br>NTOSKRNL.EXE::KeLeaveCriticalRegion<br>WPP_SF_qq_guid_</summary>WPP_SF_qqqDDciD<br>memcpy</details>|
|calling|ClusPortIrpWorker<br>ClusPortSCSIHandler<br>ClusPortUnitIOCTL<br>ClusPortUnitRW|ClusPortIrpWorker<br>ClusPortSCSIHandler<br>ClusPortUnitIOCTL<br>ClusPortUnitRW|
|paramcount|2|2|
|`address`|1c00034c0|1c00034b0|
|sig|int __fastcall ClusPortExecuteIrp(longlong param_1, undefined1 * param_2)|int __fastcall ClusPortExecuteIrp(longlong param_1, undefined1 * param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### ClusPortExecuteIrp Called Diff


```diff
--- ClusPortExecuteIrp called
+++ ClusPortExecuteIrp called
@@ -7,2 +7,2 @@
-FUN_1c000a013
-FUN_1c000a0b5
+FUN_1c000a9d7
+FUN_1c000aa79
```


### ClusPortExecuteIrp Diff


```diff
--- ClusPortExecuteIrp
+++ ClusPortExecuteIrp
@@ -1,265 +1,265 @@
 
 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
 
 int ClusPortExecuteIrp(longlong param_1,undefined1 *param_2)
 
 {
   char cVar1;
   undefined4 uVar2;
   uint uVar3;
   uint uVar4;
   longlong lVar5;
   longlong lVar6;
   char *pcVar7;
   longlong lVar8;
   int *_Dst;
   void *_Src;
   byte bVar9;
   int iVar10;
   ulonglong uVar11;
   longlong lVar12;
   undefined8 uVar13;
   undefined8 uVar14;
   ulonglong uVar15;
   longlong local_res8;
   
   lVar5 = *(longlong *)(param_1 + 0x38);
   lVar6 = *(longlong *)(param_1 + 0x150);
   pcVar7 = *(char **)(lVar5 + 0xb8);
   *(undefined8 *)(param_1 + 0x1b8) = _DAT_0;
   cVar1 = *pcVar7;
   if ((cVar1 != '\x03') && (cVar1 != '\x04')) {
     if (cVar1 == '\t') {
       if (*(longlong *)(param_1 + 0x140) != 0) {
         uVar11 = ClusPortTunnelFlush(*(longlong *)(param_1 + 0x140),param_1,param_2);
         iVar10 = (int)uVar11;
 LAB_1:
         if (iVar10 == 0x103) {
           *param_2 = 0;
           return 0x103;
         }
 LAB_2:
-        iVar10 = FUN_1c000a0b5();
+        iVar10 = FUN_1c000aa79();
         return iVar10;
       }
     }
     else if (cVar1 == '\x0e') {
       iVar10 = *(int *)(pcVar7 + 0x18);
       if (iVar10 == 0x7c0f4) {
         lVar8 = *(longlong *)(lVar5 + 0x18);
         uVar11 = *(ulonglong *)(lVar8 + 0x10);
         uVar15 = *(ulonglong *)(lVar8 + 8) & uVar11 | ~uVar11 & *(ulonglong *)(lVar6 + 0x160);
         if ((uVar11 & 8) == 0) {
           *(ulonglong *)(lVar6 + 0x160) = uVar15;
           *(undefined8 *)(lVar5 + 0x38) = 0;
           *(undefined4 *)(lVar5 + 0x30) = 0;
           return 0;
         }
         lVar12 = *(longlong *)(lVar8 + 0x18) + -0x4ceef680e75caf8f;
         if (lVar12 == 0) {
           lVar12 = *(longlong *)(lVar8 + 0x20) + -0x2dfc6ee501b0a3af;
         }
         if (lVar12 != 0) {
           iVar10 = -0x3fffffde;
           goto LAB_3;
         }
         *(ulonglong *)(param_1 + 0x50) = uVar15;
         *(undefined8 *)(lVar8 + 0x10) = 8;
         *(undefined8 *)(lVar8 + 0x18) = 0x4a700086b890a497;
         *(undefined8 *)(lVar8 + 0x20) = 0x5299b2cc43f274ad;
         iVar10 = *(int *)(pcVar7 + 0x18);
       }
       if (iVar10 == 0x2d1400) {
         uVar3 = *(uint *)(pcVar7 + 8);
         lVar8 = *(longlong *)(*(longlong *)(param_1 + 0x140) + 0x2c0);
         if (((0xb < *(uint *)(pcVar7 + 0x10)) && (_Dst = *(int **)(lVar5 + 0x18), _Dst[1] == 0)) &&
            (*_Dst == 0x13)) {
           local_res8 = 0;
           ClusBFltAcquireRWLockSh((undefined8 *)(lVar8 + 0x3e0),'\x01',&local_res8);
           _Src = *(void **)(lVar8 + 1000);
           if (_Src == (void *)0x0) {
             iVar10 = -0x3fffff45;
           }
           else {
             if (7 < uVar3) {
               uVar4 = *(uint *)((longlong)_Src + 4);
               uVar11 = (ulonglong)uVar4;
               if (uVar3 < uVar4) {
                 _Dst[1] = uVar4;
                 *_Dst = **(int **)(lVar8 + 1000);
                 *(undefined8 *)(lVar5 + 0x38) = 8;
                 ExReleaseCacheAwarePushLockSharedEx(local_res8,2);
                 KeLeaveCriticalRegion();
                 return 0;
               }
               memcpy(_Dst,_Src,uVar11);
               uVar13 = 2;
               *(ulonglong *)(lVar5 + 0x38) = (ulonglong)*(uint *)(*(longlong *)(lVar8 + 1000) + 4);
               ExReleaseCacheAwarePushLockSharedEx(local_res8);
               KeLeaveCriticalRegion();
               if ((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
                 return 0;
               }
               if ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x20) == 0) {
                 return 0;
               }
               if ((byte)WPP_GLOBAL_Control[0x29] < 4) {
                 return 0;
               }
               WPP_SF_qq_guid_(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),uVar13,uVar11,lVar6,
                               *(undefined8 *)(lVar6 + 0x20),*(longlong *)(lVar8 + 1000) + 0x1c);
               return 0;
             }
             iVar10 = -0x3fffffdd;
           }
           *(undefined8 *)(lVar5 + 0x38) = 0;
           ExReleaseCacheAwarePushLockSharedEx(local_res8,2);
           KeLeaveCriticalRegion();
           goto LAB_3;
         }
       }
       lVar6 = *(longlong *)(param_1 + 0x140);
       if ((((uint)*(ushort *)(lVar6 + 0x2d8) == *(uint *)(ClusPortAdapterExtension + 0xcc)) ||
           (*(ushort *)(lVar6 + 0x2d8) == 0)) || (lVar6 != 0)) {
         uVar11 = ClusPortTunnelDevCtl(lVar6,param_1,param_2);
         iVar10 = (int)uVar11;
         goto LAB_1;
       }
     }
     else {
       if (cVar1 != '\x0f') {
         iVar10 = -0x3fffff45;
         goto LAB_3;
       }
       if (*(longlong *)(param_1 + 0x140) != 0) {
         bVar9 = ClusPortPassThruScsiCommand
                           (*(longlong *)(param_1 + 0x140),*(longlong *)(pcVar7 + 8),param_2);
         if (bVar9 == 0) {
           iVar10 = 0x103;
         }
         else {
           switch(bVar9) {
           case 1:
             iVar10 = 0;
             break;
           default:
             iVar10 = -0x3ffffe7b;
             break;
           case 5:
             iVar10 = -0x7fffffef;
             break;
           case 8:
           case 0x11:
           case 0x20:
           case 0x21:
             iVar10 = -0x3fffff40;
             break;
           case 9:
           case 0xb:
             iVar10 = -0x3fffff4b;
             break;
           case 10:
             iVar10 = -0x3fffff63;
             break;
           case 0x12:
             iVar10 = -0x7ffffffb;
             break;
           case 0x15:
           case 0x22:
             iVar10 = -0x3ffffff0;
             break;
           case 0x16:
             iVar10 = -0x3fffffff;
           }
         }
         if (iVar10 == 0x103) goto LAB_4;
         goto LAB_2;
       }
     }
     iVar10 = -0x3fffff63;
     goto LAB_3;
   }
   uVar13 = *(undefined8 *)(pcVar7 + 0x18);
   uVar2 = *(undefined4 *)(pcVar7 + 8);
   *(undefined8 *)(param_1 + 0x158) = *(undefined8 *)(lVar5 + 8);
   if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      (((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x100) != 0 && (4 < (byte)WPP_GLOBAL_Control[0x29])))
      ) {
     uVar14 = 0x59;
     if (cVar1 != '\x04') {
       uVar14 = 0x4e;
     }
     WPP_SF_qqqDDciD(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),(ulonglong)*(byte *)(lVar6 + 0x14e),
                     uVar14,lVar5);
   }
   lVar6 = *(longlong *)(param_1 + 0x140);
   if (((uint)*(ushort *)(lVar6 + 0x2d8) == *(uint *)(ClusPortAdapterExtension + 0xcc)) ||
      (*(ushort *)(lVar6 + 0x2d8) == 0)) {
     uVar11 = ClusPortSendPassthruReadWrite
                        (*(longlong *)(lVar6 + 0x2e0),cVar1 == '\x04',param_1,uVar13,uVar2);
     if ((uVar11 & 0xff) == 0) goto LAB_5;
     switch((uint)uVar11 & 0xff) {
     case 1:
       iVar10 = 0;
       break;
     default:
       iVar10 = -0x3ffffe7b;
       break;
     case 5:
       iVar10 = -0x7fffffef;
       break;
     case 8:
     case 0x11:
     case 0x20:
     case 0x21:
       iVar10 = -0x3fffff40;
       break;
     case 9:
     case 0xb:
       iVar10 = -0x3fffff4b;
       break;
     case 10:
       iVar10 = -0x3fffff63;
       break;
     case 0x12:
       iVar10 = -0x7ffffffb;
       break;
     case 0x15:
     case 0x22:
       iVar10 = -0x3ffffff0;
       break;
     case 0x16:
       iVar10 = -0x3fffffff;
     }
   }
   else {
     if (lVar6 == 0) {
       iVar10 = -0x3fffff63;
       goto LAB_3;
     }
     uVar11 = ClusPortSendPassthruReadWriteRemote(lVar6,cVar1 == '\x04',param_1,uVar13,uVar2);
     if ((uVar11 & 0xff) != 0) {
-      iVar10 = FUN_1c000a013();
+      iVar10 = FUN_1c000a9d7();
       return iVar10;
     }
 LAB_5:
     iVar10 = 0x103;
   }
   if (iVar10 == 0x103) {
 LAB_4:
     *param_2 = 0;
     return iVar10;
   }
   if (-1 < iVar10) {
     return iVar10;
   }
 LAB_3:
   if ((((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
       ((*(uint *)(WPP_GLOBAL_Control + 0x2c) & 0x100) != 0)) && (1 < (byte)WPP_GLOBAL_Control[0x29])
      ) {
     WPP_SF_qd(*(undefined8 *)(WPP_GLOBAL_Control + 0x18),0x35,
               &WPP_d2d4743eda22319964d1be06c1a4434b_Traceguids,lVar5);
   }
   return iVar10;
 }
 

```


## CsvCamSetSecurityInfo

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|code,name,fullname,length,sig,address,called|
|ratio|0.18|
|i_ratio|0.2|
|m_ratio|0.93|
|b_ratio|0.76|
|match_types|Implied Match|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|`name`|CsvCamSetSecurityInfo|CsvCamSetSecurityInfoSafe|
|`fullname`|CsvCamSetSecurityInfo|CsvCamSetSecurityInfoSafe|
|refcount|2|2|
|`length`|635|512|
|`called`|<details><summary>Expand for full list:<br>Encryption::Initialize<br>Encryption::`scalar_deleting_destructor'<br>NTOSKRNL.EXE::ExAcquireResourceExclusiveLite<br>NTOSKRNL.EXE::ExAcquireResourceSharedLite<br>NTOSKRNL.EXE::ExAllocatePoolWithTag<br>NTOSKRNL.EXE::ExReleaseResourceLite<br>NTOSKRNL.EXE::KeEnterCriticalRegion<br>NTOSKRNL.EXE::KeLeaveCriticalRegion<br>NTOSKRNL.EXE::KeQueryTimeIncrement<br>czl::ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>::ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65><br>czl::ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>::UpdateGlobalSequenceNumber</summary>czl::ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>::`scalar_deleting_destructor'<br>memcmp</details>|<details><summary>Expand for full list:<br>Encryption::Initialize<br>Encryption::`scalar_deleting_destructor'<br>NTOSKRNL.EXE::ExAllocatePoolWithTag<br>NTOSKRNL.EXE::KeQueryTimeIncrement<br>RWLock::AcquireExclusive<br>RWLock::AcquireShared<br>RWLock::ReleaseExclusive<br>czl::ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>::ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65><br>czl::ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>::UpdateGlobalSequenceNumber<br>czl::ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>::`scalar_deleting_destructor'<br>memcmp</summary></details>|
|calling|ClusPortControlObjectDeviceControlHandler|ClusPortControlObjectDeviceControlHandler|
|paramcount|1|3|
|`address`|1c002bd48|1c0008470|
|`sig`|long __fastcall CsvCamSetSecurityInfo(uint * param_1)|long __fastcall CsvCamSetSecurityInfoSafe(ulong * param_1, uint param_2, undefined1 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### CsvCamSetSecurityInfo Called Diff


```diff
--- CsvCamSetSecurityInfo called
+++ CsvCamSetSecurityInfoSafe called
@@ -3,2 +2,0 @@
-NTOSKRNL.EXE::ExAcquireResourceExclusiveLite
-NTOSKRNL.EXE::ExAcquireResourceSharedLite
@@ -6,3 +3,0 @@
-NTOSKRNL.EXE::ExReleaseResourceLite
-NTOSKRNL.EXE::KeEnterCriticalRegion
-NTOSKRNL.EXE::KeLeaveCriticalRegion
@@ -9,0 +5,3 @@
+RWLock::AcquireExclusive
+RWLock::AcquireShared
+RWLock::ReleaseExclusive
```


### CsvCamSetSecurityInfo Diff


```diff
--- CsvCamSetSecurityInfo
+++ CsvCamSetSecurityInfoSafe
@@ -1,131 +1,145 @@
 
-long CsvCamSetSecurityInfo(uint *param_1)
+long CsvCamSetSecurityInfoSafe(ulong *param_1,uint param_2,undefined1 *param_3)
 
 {
   bool bVar1;
   bool bVar2;
-  RWLock *pRVar3;
-  int iVar4;
-  long lVar5;
-  ulong uVar6;
+  int iVar3;
+  long lVar4;
+  ulong uVar5;
   Encryption *this;
+  ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+  *this_00;
+  ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+  *this_01;
+  RWLock *pRVar6;
+  Encryption *this_02;
   ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
   *pRVar7;
   uint uVar8;
-  uint *puVar9;
-  ulonglong uVar10;
-  __uint64 in_stack_ffffffffffffffd8;
+  ulong uVar9;
+  __uint64 in_stack_ffffffffffffffe8;
+  ulong *puVar10;
   
-  lVar5 = 0;
+  lVar4 = 0;
   bVar2 = false;
-  if (param_1[2] != 0) {
-    bVar2 = true;
-    if ((EncryptionManager != (Encryption *)0x0) &&
-       (param_1[2] == *(uint *)(EncryptionManager + 0x20))) {
-      iVar4 = memcmp(param_1 + 3,*(void **)(EncryptionManager + 0x18),
-                     (ulonglong)*(uint *)(EncryptionManager + 0x20));
-      if (iVar4 == 0) {
-        bVar2 = false;
-        goto LAB_0;
+  if (0xf < param_2) {
+    uVar8 = param_1[2];
+    if ((0xb < uVar8 + 0xc) && (uVar8 + 0xc <= param_2)) {
+      pRVar6 = (RWLock *)(ulonglong)uVar8;
+      if (uVar8 != 0) {
+        bVar2 = true;
+        if ((EncryptionManager != (Encryption *)0x0) &&
+           (uVar8 == *(uint *)(EncryptionManager + 0x20))) {
+          pRVar6 = (RWLock *)(param_1 + 3);
+          iVar3 = memcmp(pRVar6,*(void **)(EncryptionManager + 0x18),
+                         (ulonglong)*(uint *)(EncryptionManager + 0x20));
+          if (iVar3 == 0) {
+            bVar2 = false;
+            goto LAB_0;
+          }
+        }
+        pRVar6 = (RWLock *)0x1;
+        this = (Encryption *)ExAllocatePoolWithTag(1,0x28,0x41435643);
+        if (this == (Encryption *)0x0) {
+          this = (Encryption *)0x0;
+        }
+        else {
+          *(undefined8 *)this = 0;
+          *(undefined8 *)(this + 8) = 0;
+          *(undefined8 *)(this + 0x10) = 0;
+          *(undefined8 *)(this + 0x18) = 0;
+          *(undefined4 *)(this + 0x20) = 0;
+        }
+        if (this == (Encryption *)0x0) {
+          lVar4 = -0x3fffff66;
+        }
+        else {
+          puVar10 = param_1 + 3;
+          this_02 = this;
+          lVar4 = Encryption::Initialize(this,puVar10,param_1[2]);
+          uVar8 = (uint)puVar10;
+          if (lVar4 < 0) {
+            Encryption::_scalar_deleting_destructor_(this,uVar8);
+            pRVar6 = (RWLock *)this;
+          }
+          else {
+            RWLock::AcquireExclusive((RWLock *)this_02);
+            pRVar6 = (RWLock *)EncryptionManager;
+            if (EncryptionManager != (Encryption *)0x0) {
+              Encryption::_scalar_deleting_destructor_(EncryptionManager,uVar8);
+              pRVar6 = (RWLock *)EncryptionManager;
+            }
+            EncryptionManager = this;
+            RWLock::ReleaseExclusive(pRVar6);
+          }
+        }
       }
-    }
-    this = (Encryption *)ExAllocatePoolWithTag(1,0x28,0x41435643);
-    if (this == (Encryption *)0x0) {
-      this = (Encryption *)0x0;
-    }
-    else {
-      *(undefined8 *)this = 0;
-      *(undefined8 *)(this + 8) = 0;
-      *(undefined8 *)(this + 0x10) = 0;
-      *(undefined8 *)(this + 0x18) = 0;
-      *(undefined4 *)(this + 0x20) = 0;
-    }
-    if (this == (Encryption *)0x0) {
-      lVar5 = -0x3fffff66;
-    }
-    else {
-      puVar9 = param_1 + 3;
-      lVar5 = Encryption::Initialize(this,puVar9,param_1[2]);
-      pRVar3 = SigningLock;
-      if (lVar5 < 0) {
-        Encryption::_scalar_deleting_destructor_(this,(uint)puVar9);
+LAB_0:
+      RWLock::AcquireShared(pRVar6);
+      bVar1 = true;
+      if ((ReplayCacheManagerObject !=
+           (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+            *)0x0) && (*(ulong *)ReplayCacheManagerObject == *param_1)) {
+        bVar1 = bVar2;
       }
-      else {
-        KeEnterCriticalRegion();
-        uVar8 = (uint)CONCAT71((int7)((ulonglong)puVar9 >> 8),1);
-        ExAcquireResourceExclusiveLite(*(undefined8 *)pRVar3);
-        if (EncryptionManager != (Encryption *)0x0) {
-          Encryption::_scalar_deleting_destructor_(EncryptionManager,uVar8);
-        }
-        EncryptionManager = this;
-        ExReleaseResourceLite(*(undefined8 *)SigningLock);
-        KeLeaveCriticalRegion();
-      }
-    }
-  }
-LAB_0:
-  pRVar3 = SigningLock;
-  KeEnterCriticalRegion();
-  ExAcquireResourceSharedLite(*(undefined8 *)pRVar3,1);
-  bVar1 = true;
-  if ((ReplayCacheManagerObject !=
-       (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-        *)0x0) && (*(uint *)ReplayCacheManagerObject == *param_1)) {
-    bVar1 = bVar2;
-  }
-  pRVar7 = *(ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-             **)SigningLock;
-  ExReleaseResourceLite();
-  KeLeaveCriticalRegion();
-  if (bVar1) {
-    uVar10 = 0x1010;
-    pRVar7 = (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-              *)ExAllocatePoolWithTag(1,0x1010,0x41435643);
-    if (pRVar7 == (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-                   *)0x0) {
-      pRVar7 = (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-                *)0x0;
-    }
-    else {
-      uVar6 = KeQueryTimeIncrement();
-      uVar10 = (ulonglong)*param_1;
-      pRVar7 = (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-                *)czl::
-                  ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-                  ::
-                  ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-                            (pRVar7,*param_1,param_1[1],uVar6,in_stack_ffffffffffffffd8);
-    }
-    pRVar3 = SigningLock;
-    if (pRVar7 != (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-                   *)0x0) {
-      if ((*(longlong *)(pRVar7 + 0x30) != 0) && (*(longlong *)(pRVar7 + 0x820) != 0)) {
-        KeEnterCriticalRegion();
-        uVar8 = (uint)CONCAT71((int7)(uVar10 >> 8),1);
-        ExAcquireResourceExclusiveLite(*(undefined8 *)pRVar3);
-        if (ReplayCacheManagerObject !=
+      pRVar7 = ReplayCacheManagerObject;
+      RWLock::ReleaseExclusive((RWLock *)ReplayCacheManagerObject);
+      if (bVar1) {
+        uVar9 = 0x1010;
+        pRVar7 = (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+                  *)0x1;
+        this_00 = (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+                   *)ExAllocatePoolWithTag(1,0x1010,0x41435643);
+        if (this_00 ==
             (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
              *)0x0) {
+          this_01 = (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+                     *)0x0;
+        }
+        else {
+          uVar5 = KeQueryTimeIncrement();
+          uVar9 = *param_1;
+          this_01 = (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+                     *)czl::
+                       ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+                       ::
+                       ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+                                 (this_00,uVar9,param_1[1],uVar5,in_stack_ffffffffffffffe8);
+          pRVar7 = this_00;
+        }
+        if (this_01 !=
+            (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+             *)0x0) {
+          if ((*(longlong *)(this_01 + 0x30) != 0) && (*(longlong *)(this_01 + 0x820) != 0)) {
+            RWLock::AcquireExclusive((RWLock *)pRVar7);
+            if (ReplayCacheManagerObject !=
+                (ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+                 *)0x0) {
+              czl::
+              ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
+              ::_scalar_deleting_destructor_(ReplayCacheManagerObject,uVar9);
+            }
+            pRVar6 = (RWLock *)ReplayCacheManagerObject;
+            ReplayCacheManagerObject = this_01;
+            RWLock::ReleaseExclusive(pRVar6);
+            return lVar4;
+          }
           czl::
           ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-          ::_scalar_deleting_destructor_(ReplayCacheManagerObject,uVar8);
+          ::_scalar_deleting_destructor_(this_01,uVar9);
         }
-        ReplayCacheManagerObject = pRVar7;
-        ExReleaseResourceLite(*(undefined8 *)SigningLock);
-        KeLeaveCriticalRegion();
-        return lVar5;
+        return -0x3fffff66;
       }
       czl::
       ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-      ::_scalar_deleting_destructor_(pRVar7,(uint)uVar10);
+      ::UpdateGlobalSequenceNumber(pRVar7,param_1[1]);
+      return lVar4;
     }
-    lVar5 = -0x3fffff66;
   }
-  else {
-    czl::
-    ReplayCacheManager<class_ImpKernelMode,class_GuardedMutex,&unsigned___int64___cdecl_CsvCamTickCountFunc(void),class_ImpKernelModeWithLookasideAlloc<40>,65>
-    ::UpdateGlobalSequenceNumber(pRVar7,param_1[1]);
+  if (param_3 != (undefined1 *)0x0) {
+    *param_3 = 1;
   }
-  return lVar5;
+  return -0x3ffffff3;
 }
 

```


# Modified (No Code Changes)


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

## WPP_SF_

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|WPP_SF_|WPP_SF_|
|fullname|WPP_SF_|WPP_SF_|
|`refcount`|131|134|
|length|37|37|
|called|_guard_dispatch_icall|_guard_dispatch_icall|
|`calling`|<details><summary>Expand for full list:<br>ClusPortAdapterControl<br>ClusPortAdapterIOCTL<br>ClusPortAddNetworkPath<br>ClusPortCheckAndPostRemoval<br>ClusPortCleanupTracing<br>ClusPortControlObjectDeviceControlHandler<br>ClusPortDiskAndAdapterObjectIrpHandler<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortFindAdapter<br>ClusPortGenerateEaForControlDevice<br>ClusPortGenerateEaForDiskOpen</summary>ClusPortGetNodeNetworkPathFromList<br>ClusPortGetUpdateClusterMembershipState<br>ClusPortHandlePnpSrbRequest<br>ClusPortInitializeTracing<br>ClusPortLocalReadWriteComplete<br>ClusPortLogNodeSummary<br>ClusPortPauseDiskAndAddPath<br>ClusPortPingTargetAndDisk<br>ClusPortProcessDeviceList<br>ClusPortProcessLunReset<br>ClusPortProcessPathsOnHold<br>ClusPortProcessRSCN<br>ClusPortRefreshNetworkPath<br>ClusPortRefreshWorker<br>ClusPortRegisterCluster<br>ClusPortRegisterClusterWorker<br>ClusPortRegisterForRSCN<br>ClusPortRemoveAdapter<br>ClusPortResetBus<br>ClusPortSendPassthruAsync<br>ClusPortSetClusterId<br>ClusPortSetFDInfo<br>ClusPortSurfaceRemoteDiskIfNotPresent<br>ClusPortTunnelAsyncCompletion<br>ClusPortTunnelDevCtl<br>ClusPortTunnelDevCtlSync<br>ClusPortTunnelFlush<br>ClusPortUnLinkPaths<br>ClusPortUnitIOCTL<br>ClusPortUnitPower<br>ClusPortUpdateClusterMembership<br>ClusPortUpdateClusterMembershipWorker<br>ClusPortUpdateMembership<br>ClusPortValidatePathId<br>ClusPortWaitForLocalNodeCleanup<br>NotifyStateChange<br>NotifyStateChangetoSpacePort<br>RefreshTopologyTimerRoutine<br>switchD_1c00030eb::caseD_0</details>|<details><summary>Expand for full list:<br>ClusPortAdapterControl<br>ClusPortAdapterIOCTL<br>ClusPortAddNetworkPath<br>ClusPortCheckAndPostRemoval<br>ClusPortCleanupTracing<br>ClusPortControlObjectDeviceControlHandler<br>ClusPortDiskAndAdapterObjectIrpHandler<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortFindAdapter<br>ClusPortGenerateEaForControlDevice<br>ClusPortGenerateEaForDiskOpen</summary>ClusPortGetNodeNetworkPathFromList<br>ClusPortGetUpdateClusterMembershipState<br>ClusPortHandlePnpSrbRequest<br>ClusPortInitializeTracing<br>ClusPortLocalReadWriteComplete<br>ClusPortLogNodeSummary<br>ClusPortPauseDiskAndAddPath<br>ClusPortPingTargetAndDisk<br>ClusPortProcessDeviceList<br>ClusPortProcessLunReset<br>ClusPortProcessPathsOnHold<br>ClusPortProcessRSCN<br>ClusPortRefreshNetworkPath<br>ClusPortRefreshWorker<br>ClusPortRegisterCluster<br>ClusPortRegisterClusterWorker<br>ClusPortRegisterForRSCN<br>ClusPortRemoveAdapter<br>ClusPortResetBus<br>ClusPortSendPassthruAsync<br>ClusPortSetClusterId<br>ClusPortSetFDInfo<br>ClusPortSurfaceRemoteDiskIfNotPresent<br>ClusPortTunnelAsyncCompletion<br>ClusPortTunnelDevCtl<br>ClusPortTunnelDevCtlSync<br>ClusPortTunnelFlush<br>ClusPortUnLinkPaths<br>ClusPortUnitIOCTL<br>ClusPortUnitPower<br>ClusPortUpdateClusterMembership<br>ClusPortUpdateClusterMembershipWorker<br>ClusPortUpdateMembership<br>ClusPortValidateNetworkTarget<br>ClusPortValidatePathId<br>ClusPortWaitForLocalNodeCleanup<br>NotifyStateChange<br>NotifyStateChangetoSpacePort<br>RefreshTopologyTimerRoutine<br>switchD_1c00030db::caseD_0</details>|
|paramcount|3|3|
|`address`|1c001018c|1c001059c|
|sig|undefined __fastcall WPP_SF_(undefined8 param_1, undefined2 param_2, undefined8 param_3)|undefined __fastcall WPP_SF_(undefined8 param_1, undefined2 param_2, undefined8 param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### WPP_SF_ Calling Diff


```diff
--- WPP_SF_ calling
+++ WPP_SF_ calling
@@ -44,0 +45 @@
+ClusPortValidateNetworkTarget
@@ -50 +51 @@
-switchD_1c00030eb::caseD_0
+switchD_1c00030db::caseD_0
```


## NTOSKRNL.EXE::KeEnterCriticalRegion

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|KeEnterCriticalRegion|KeEnterCriticalRegion|
|fullname|NTOSKRNL.EXE::KeEnterCriticalRegion|NTOSKRNL.EXE::KeEnterCriticalRegion|
|`refcount`|37|36|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>ClusBFltAcquireRWLockSh<br>ClusBFltReleaseRWLockById<br>ClusPortAddNetworkPath<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortExAcquireResourceExclusive<br>ClusPortLocalReadWriteComplete<br>ClusPortPauseDiskAndAddPath<br>ClusPortPauseDiskAndRemovePath<br>ClusPortPauseDiskWorker<br>ClusPortProcessPathsOnHold<br>ClusPortProcessRSCN</summary>ClusPortRegisterCluster<br>ClusPortRegisterClusterWorker<br>ClusPortSetFDInfo<br>ClusPortUnLinkPaths<br>ClusPortUpdateClusterMembershipWorker<br>ClusPortVerifyLun<br>CsvCamSetSecurityInfo<br>CsvClusPortCamSign<br>IsNodeActive<br>NotifyAndRemoveDiskWorker<br>ProcessRemove</details>|<details><summary>Expand for full list:<br>ClusBFltAcquireRWLockSh<br>ClusBFltReleaseRWLockById<br>ClusPortAddNetworkPath<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortExAcquireResourceExclusive<br>ClusPortLocalReadWriteComplete<br>ClusPortPauseDiskAndAddPath<br>ClusPortPauseDiskAndRemovePath<br>ClusPortPauseDiskWorker<br>ClusPortProcessPathsOnHold<br>ClusPortProcessRSCN</summary>ClusPortRegisterCluster<br>ClusPortRegisterClusterWorker<br>ClusPortSetFDInfo<br>ClusPortUnLinkPaths<br>ClusPortUpdateClusterMembershipWorker<br>ClusPortVerifyLun<br>CsvClusPortCamSign<br>IsNodeActive<br>NotifyAndRemoveDiskWorker<br>ProcessRemove<br>RWLock::AcquireExclusive<br>RWLock::AcquireShared</details>|
|paramcount|0|0|
|address|EXTERNAL:00000011|EXTERNAL:00000011|
|sig|undefined KeEnterCriticalRegion(void)|undefined KeEnterCriticalRegion(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::KeEnterCriticalRegion Calling Diff


```diff
--- NTOSKRNL.EXE::KeEnterCriticalRegion calling
+++ NTOSKRNL.EXE::KeEnterCriticalRegion calling
@@ -18 +17,0 @@
-CsvCamSetSecurityInfo
@@ -22,0 +22,2 @@
+RWLock::AcquireExclusive
+RWLock::AcquireShared
```


## WPP_SF_DD

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|WPP_SF_DD|WPP_SF_DD|
|fullname|WPP_SF_DD|WPP_SF_DD|
|`refcount`|20|21|
|length|72|72|
|called|_guard_dispatch_icall|_guard_dispatch_icall|
|`calling`|<details><summary>Expand for full list:<br>ClusPortCreateDevice<br>ClusPortCreateSymbolicLink<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortGiveDisk<br>ClusPortPauseDiskAndAddPath<br>ClusPortPauseDiskAndRemovePath<br>ClusPortProcessDeviceList<br>ClusPortRefreshWorker<br>ClusPortRegisterForRSCN<br>ClusPortSurfaceRemoteDiskIfNotPresent<br>ClusPortTunnelDevCtlSync</summary>ClusPortUpdateClusterMembershipWorker<br>ClusPortValidatePathId<br>NotifyStateChange</details>|<details><summary>Expand for full list:<br>ClusPortCreateDevice<br>ClusPortCreateSymbolicLink<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortGiveDisk<br>ClusPortPauseDiskAndAddPath<br>ClusPortPauseDiskAndRemovePath<br>ClusPortProcessDeviceList<br>ClusPortRefreshWorker<br>ClusPortRegisterForRSCN<br>ClusPortSurfaceRemoteDiskIfNotPresent<br>ClusPortTunnelDevCtlSync</summary>ClusPortUpdateClusterMembershipWorker<br>ClusPortValidateFaultDomain<br>ClusPortValidatePathId<br>NotifyStateChange</details>|
|paramcount|4|4|
|`address`|1c0012770|1c0012b80|
|sig|undefined __fastcall WPP_SF_DD(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined4 param_4)|undefined __fastcall WPP_SF_DD(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined4 param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### WPP_SF_DD Calling Diff


```diff
--- WPP_SF_DD calling
+++ WPP_SF_DD calling
@@ -12,0 +13 @@
+ClusPortValidateFaultDomain
```


## WPP_SF_D

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|WPP_SF_D|WPP_SF_D|
|fullname|WPP_SF_D|WPP_SF_D|
|`refcount`|96|98|
|length|59|59|
|called|_guard_dispatch_icall|_guard_dispatch_icall|
|`calling`|<details><summary>Expand for full list:<br>ClusPortAdapterIOCTL<br>ClusPortAddNetworkPath<br>ClusPortControlObjectDeviceControlHandler<br>ClusPortControlObjectIrpHandler<br>ClusPortCreateSymbolicLink<br>ClusPortDeleteSymbolicLink<br>ClusPortDevCtlHandler<br>ClusPortEnumAndCreateRemoteDisksEx<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortFlushHandler<br>ClusPortGetNodeNetworkPathFromList</summary>ClusPortGetUpdateClusterMembershipState<br>ClusPortIrpWorker<br>ClusPortOpenControlDevice<br>ClusPortOpenRemoteDiskDevice<br>ClusPortPauseDiskWorker<br>ClusPortPingTargetAndDisk<br>ClusPortPnpHandler<br>ClusPortProcessDeviceList<br>ClusPortProcessLunReset<br>ClusPortProcessRSCN<br>ClusPortRSCNCompletion<br>ClusPortRefreshNetworkPath<br>ClusPortRegisterCluster<br>ClusPortRegisterClusterWorker<br>ClusPortRegisterForRSCN<br>ClusPortRequestLiveDumpWorker<br>ClusPortSetFDInfo<br>ClusPortStartIo<br>ClusPortSurfaceRemoteDiskIfNotPresent<br>ClusPortTriggerRemoteTargetEnumeration<br>ClusPortTunnelDevCtlSync<br>ClusPortUnitIOCTL<br>ClusPortUnitPower<br>ClusPortUpdateClusterMembership<br>ClusPortUpdateClusterMembershipWorker<br>ClusPortUpdateMembership<br>ClusPortValidatePathId<br>ClusPortWaitForLocalNodeCleanup<br>ClusPortWmi<br>FUN_1c000945a<br>FUN_1c0009557<br>FUN_1c000aff9<br>NotifyAndRemoveDiskWorker<br>switchD_1c00030eb::caseD_0</details>|<details><summary>Expand for full list:<br>ClusPortAdapterIOCTL<br>ClusPortAddNetworkPath<br>ClusPortControlObjectDeviceControlHandler<br>ClusPortControlObjectIrpHandler<br>ClusPortCreateSymbolicLink<br>ClusPortDeleteSymbolicLink<br>ClusPortDevCtlHandler<br>ClusPortEnumAndCreateRemoteDisksEx<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortFlushHandler<br>ClusPortGetNodeNetworkPathFromList</summary>ClusPortGetUpdateClusterMembershipState<br>ClusPortIrpWorker<br>ClusPortOpenControlDevice<br>ClusPortOpenRemoteDiskDevice<br>ClusPortPauseDiskWorker<br>ClusPortPingTargetAndDisk<br>ClusPortPnpHandler<br>ClusPortProcessDeviceList<br>ClusPortProcessLunReset<br>ClusPortProcessRSCN<br>ClusPortRSCNCompletion<br>ClusPortRefreshNetworkPath<br>ClusPortRegisterCluster<br>ClusPortRegisterClusterWorker<br>ClusPortRegisterForRSCN<br>ClusPortRequestLiveDumpWorker<br>ClusPortSetFDInfo<br>ClusPortStartIo<br>ClusPortSurfaceRemoteDiskIfNotPresent<br>ClusPortTriggerRemoteTargetEnumeration<br>ClusPortTunnelDevCtlSync<br>ClusPortUnitIOCTL<br>ClusPortUnitPower<br>ClusPortUpdateClusterMembership<br>ClusPortUpdateClusterMembershipWorker<br>ClusPortUpdateMembership<br>ClusPortValidateFaultDomain<br>ClusPortValidateNetworkTarget<br>ClusPortValidatePathId<br>ClusPortWaitForLocalNodeCleanup<br>ClusPortWmi<br>FUN_1c0009e1e<br>FUN_1c0009f1b<br>NotifyAndRemoveDiskWorker<br>switchD_1c00030db::caseD_0</details>|
|paramcount|4|4|
|`address`|1c00101b8|1c00105c8|
|sig|undefined __fastcall WPP_SF_D(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined4 param_4)|undefined __fastcall WPP_SF_D(undefined8 param_1, undefined2 param_2, undefined8 param_3, undefined4 param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### WPP_SF_D Calling Diff


```diff
--- WPP_SF_D calling
+++ WPP_SF_D calling
@@ -37,0 +38,2 @@
+ClusPortValidateFaultDomain
+ClusPortValidateNetworkTarget
@@ -41,3 +43,2 @@
-FUN_1c000945a
-FUN_1c0009557
-FUN_1c000aff9
+FUN_1c0009e1e
+FUN_1c0009f1b
@@ -45 +46 @@
-switchD_1c00030eb::caseD_0
+switchD_1c00030db::caseD_0
```


## NTOSKRNL.EXE::ExReleaseResourceLite

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|ExReleaseResourceLite|ExReleaseResourceLite|
|fullname|NTOSKRNL.EXE::ExReleaseResourceLite|NTOSKRNL.EXE::ExReleaseResourceLite|
|`refcount`|11|9|
|length|0|0|
|called|||
|`calling`|ClusPortRegisterClusterWorker<br>ClusPortSetClusterId<br>ClusPortUpdateMembership<br>CsvCamSetSecurityInfo<br>CsvClusPortCamSign<br>IsNodeActive|ClusPortRegisterClusterWorker<br>ClusPortSetClusterId<br>ClusPortUpdateMembership<br>CsvClusPortCamSign<br>IsNodeActive<br>RWLock::ReleaseExclusive|
|paramcount|0|0|
|address|EXTERNAL:00000031|EXTERNAL:00000031|
|sig|undefined ExReleaseResourceLite(void)|undefined ExReleaseResourceLite(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::ExReleaseResourceLite Calling Diff


```diff
--- NTOSKRNL.EXE::ExReleaseResourceLite calling
+++ NTOSKRNL.EXE::ExReleaseResourceLite calling
@@ -4 +3,0 @@
-CsvCamSetSecurityInfo
@@ -6,0 +6 @@
+RWLock::ReleaseExclusive
```


## NTOSKRNL.EXE::KeLeaveCriticalRegion

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|KeLeaveCriticalRegion|KeLeaveCriticalRegion|
|fullname|NTOSKRNL.EXE::KeLeaveCriticalRegion|NTOSKRNL.EXE::KeLeaveCriticalRegion|
|`refcount`|88|86|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>ClusBFltAcquireRWLockSh<br>ClusBFltReleaseRWLockById<br>ClusPortAddNetworkPath<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortExAcquireResourceExclusive<br>ClusPortExecuteIrp<br>ClusPortGiveDisk<br>ClusPortIrpWorker<br>ClusPortLocalReadWriteComplete<br>ClusPortPauseDiskAndAddPath<br>ClusPortPauseDiskAndRemovePath</summary>ClusPortPauseDiskWorker<br>ClusPortProcessDeviceList<br>ClusPortProcessPathsOnHold<br>ClusPortProcessRSCN<br>ClusPortRegisterCluster<br>ClusPortRegisterClusterWorker<br>ClusPortSCSIHandler<br>ClusPortScsiWorker<br>ClusPortSendPassthruAsync<br>ClusPortSendPassthruReadWrite<br>ClusPortSendPassthruReadWriteRemote<br>ClusPortSetClusterId<br>ClusPortSetFDInfo<br>ClusPortStartIo<br>ClusPortUnLinkPaths<br>ClusPortUnitIOCTL<br>ClusPortUnitRW<br>ClusPortUpdateClusterMembershipWorker<br>ClusPortUpdateMembership<br>ClusPortValidatePathId<br>ClusPortVerifyLun<br>ClusPortWmi<br>CsvCamSetSecurityInfo<br>CsvClusPortCamSign<br>IsNodeActive<br>NotifyAndRemoveDiskWorker<br>ProcessRemove</details>|<details><summary>Expand for full list:<br>ClusBFltAcquireRWLockSh<br>ClusBFltReleaseRWLockById<br>ClusPortAddNetworkPath<br>ClusPortEnumAndCreateRemoteDisksWorker<br>ClusPortExAcquireResourceExclusive<br>ClusPortExecuteIrp<br>ClusPortGiveDisk<br>ClusPortIrpWorker<br>ClusPortLocalReadWriteComplete<br>ClusPortPauseDiskAndAddPath<br>ClusPortPauseDiskAndRemovePath</summary>ClusPortPauseDiskWorker<br>ClusPortProcessDeviceList<br>ClusPortProcessPathsOnHold<br>ClusPortProcessRSCN<br>ClusPortRegisterCluster<br>ClusPortRegisterClusterWorker<br>ClusPortSCSIHandler<br>ClusPortScsiWorker<br>ClusPortSendPassthruAsync<br>ClusPortSendPassthruReadWrite<br>ClusPortSendPassthruReadWriteRemote<br>ClusPortSetClusterId<br>ClusPortSetFDInfo<br>ClusPortStartIo<br>ClusPortUnLinkPaths<br>ClusPortUnitIOCTL<br>ClusPortUnitRW<br>ClusPortUpdateClusterMembershipWorker<br>ClusPortUpdateMembership<br>ClusPortValidatePathId<br>ClusPortVerifyLun<br>ClusPortWmi<br>CsvClusPortCamSign<br>IsNodeActive<br>NotifyAndRemoveDiskWorker<br>ProcessRemove<br>RWLock::ReleaseExclusive</details>|
|paramcount|0|0|
|address|EXTERNAL:0000006b|EXTERNAL:0000006b|
|sig|undefined KeLeaveCriticalRegion(void)|undefined KeLeaveCriticalRegion(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::KeLeaveCriticalRegion Calling Diff


```diff
--- NTOSKRNL.EXE::KeLeaveCriticalRegion calling
+++ NTOSKRNL.EXE::KeLeaveCriticalRegion calling
@@ -34 +33,0 @@
-CsvCamSetSecurityInfo
@@ -38,0 +38 @@
+RWLock::ReleaseExclusive
```


## NTOSKRNL.EXE::ExAcquireResourceExclusiveLite

### Match Info



|Key|pre.sys - post.sys|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash,ExternalsName|

### Function Meta Diff



|Key|pre.sys|post.sys|
| :---: | :---: | :---: |
|name|ExAcquireResourceExclusiveLite|ExAcquireResourceExclusiveLite|
|fullname|NTOSKRNL.EXE::ExAcquireResourceExclusiveLite|NTOSKRNL.EXE::ExAcquireResourceExclusiveLite|
|`refcount`|4|3|
|length|0|0|
|called|||
|`calling`|ClusPortExAcquireResourceExclusive<br>CsvCamSetSecurityInfo|ClusPortExAcquireResourceExclusive<br>RWLock::AcquireExclusive|
|paramcount|0|0|
|address|EXTERNAL:00000049|EXTERNAL:00000049|
|sig|undefined ExAcquireResourceExclusiveLite(void)|undefined ExAcquireResourceExclusiveLite(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::ExAcquireResourceExclusiveLite Calling Diff


```diff
--- NTOSKRNL.EXE::ExAcquireResourceExclusiveLite calling
+++ NTOSKRNL.EXE::ExAcquireResourceExclusiveLite calling
@@ -2 +2 @@
-CsvCamSetSecurityInfo
+RWLock::AcquireExclusive
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-08-16T18:07:24</sub>