# lua_8972.sys-lua_9168.sys Diff

# TOC

* [Visual Chart Diff](#visual-chart-diff)
* [Metadata](#metadata)
	* [Ghidra Diff Engine](#ghidra-diff-engine)
		* [Command Line](#command-line)
	* [Binary Metadata Diff](#binary-metadata-diff)
	* [Program Options](#program-options)
	* [Diff Stats](#diff-stats)
	* [Strings](#strings)
* [Deleted](#deleted)
* [Added](#added)
	* [Feature_285200698__private_IsEnabledDeviceUsageNoInline](#feature_285200698__private_isenableddeviceusagenoinline)
	* [Feature_285200698__private_IsEnabledFallback](#feature_285200698__private_isenabledfallback)
* [Modified](#modified)
	* [UpdateTableNode](#updatetablenode)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [RemoveFileIdTableNode](#removefileidtablenode)
	* [wil_details_IsEnabledFallback](#wil_details_isenabledfallback)
	* [NTOSKRNL.EXE::ExAllocatePool2](#ntoskrnlexeexallocatepool2)
	* [LuafvAllocatePool](#luafvallocatepool)

# Visual Chart Diff



```mermaid

flowchart LR

UpdateTableNode-4-old<--Match 27%-->UpdateTableNode-4-new

subgraph lua_9168.sys
    UpdateTableNode-4-new
    subgraph Added
direction LR
Feature_285200698__private_IsEnabledDeviceUsageNoInline
    Feature_285200698__private_IsEnabledFallback
end
end

subgraph lua_8972.sys
    UpdateTableNode-4-old
    
end

```


```mermaid
pie showData
    title Function Matches - 99.7868%
"unmatched_funcs_len" : 2
"matched_funcs_len" : 936
```



```mermaid
pie showData
    title Matched Function Similarity - 99.4658%
"matched_funcs_with_code_changes_len" : 1
"matched_funcs_with_non_code_changes_len" : 4
"matched_funcs_no_changes_len" : 931
```

# Metadata

## Ghidra Diff Engine

### Command Line

#### Captured Command Line


```
ghidriff --project-location ghidra_projects --project-name ghidriff --symbols-path symbols --gzfs-path gzfs --threaded --log-level INFO --file-log-level INFO --log-path ghidriff.log --min-func-len 10 --gdt [] --bsim --max-ram-percent 60.0 --max-section-funcs 200 lua_8972.sys lua_9168.sys
```


#### Verbose Args


<details>

```
--old ['lua_8972.sys'] --new [['lua_9168.sys']] --engine VersionTrackingDiff --output-path lua_out --summary False --project-location ghidra_projects --project-name ghidriff --symbols-path symbols --gzfs-path gzfs --base-address None --program-options None --threaded True --force-analysis False --force-diff False --no-symbols False --log-level INFO --file-log-level INFO --log-path ghidriff.log --va False --min-func-len 10 --use-calling-counts False --gdt [] --bsim 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/luafv.sys/AE86B6DE34000/luafv.sys -O luafv.sys.x64.10.0.26100.8972
wget https://msdl.microsoft.com/download/symbols/luafv.sys/CFF309E634000/luafv.sys -O luafv.sys.x64.10.0.26100.9168
```


## Binary Metadata Diff


```diff
--- lua_8972.sys Meta
+++ lua_9168.sys Meta
@@ -1,44 +1,44 @@
-Program Name: lua_8972.sys
+Program Name: lua_9168.sys
 Language ID: x86:LE:64:default (4.6)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 140000000
 Maximum Address: ff0000184f
-# of Bytes: 216136
+# of Bytes: 216144
 # of Memory Blocks: 15
-# of Instructions: 26229
-# of Defined Data: 2285
-# of Functions: 468
-# of Symbols: 4158
+# of Instructions: 26235
+# of Defined Data: 2293
+# of Functions: 470
+# of Symbols: 4168
 # of Data Types: 136
 # of Data Type Categories: 11
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.0.4
-Date Created: Fri Aug 21 23:22:23 SGT 2026
+Date Created: Fri Aug 21 23:22:27 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /tmp/luafv/lua_8972.sys
-Executable MD5: 8eb1eca2c81086de25571ada20c4d86c
-Executable SHA256: d0d5b2ebc6f13ade30cf326a11b4a5cdae61c4c8c69e22dc7becc5498a3e2560
-FSRL: file:///tmp/luafv/lua_8972.sys?MD5=8eb1eca2c81086de25571ada20c4d86c
+Executable Location: /tmp/luafv/lua_9168.sys
+Executable MD5: 6a8e9b4b62fe108f5f1e4d2a5f14a6e5
+Executable SHA256: ad892825ec54bb5e431e5b1626a98767949c8ed86c50b752b9799ec520d3e96e
+FSRL: file:///tmp/luafv/lua_9168.sys?MD5=6a8e9b4b62fe108f5f1e4d2a5f14a6e5
 PDB Age: 1
 PDB File: luafv.pdb
-PDB GUID: 0bdfda96-0af8-4fee-4a95-078f5fb3ffea
+PDB GUID: 79294690-c03d-3843-866a-8a9df75524b5
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: LUA File Virtualization Filter Driver
-PE Property[FileVersion]: 10.0.26100.8972 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.26100.9168 (WinBuild.160101.0800)
 PE Property[InternalName]: luafv.sys
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: luafv.sys
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.26100.8972
+PE Property[ProductVersion]: 10.0.26100.9168
 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 lua_8972.sys Decompiler Options</summary>


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

</details>


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


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

</details>


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


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

</details>


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


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

</details>


<details>
<summary>Ghidra lua_9168.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|2|
|deleted_funcs_len|0|
|modified_funcs_len|5|
|added_symbols_len|3|
|deleted_symbols_len|0|
|diff_time|2.686414957046509|
|deleted_strings_len|0|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 467, 'ExternalsName': 177})|
|items_to_process|10|
|diff_types|Counter({'refcount': 4, 'calling': 3, 'address': 2, 'code': 1, 'length': 1, 'called': 1})|
|unmatched_funcs_len|2|
|total_funcs_len|938|
|matched_funcs_len|936|
|matched_funcs_with_code_changes_len|1|
|matched_funcs_with_non_code_changes_len|4|
|matched_funcs_no_changes_len|931|
|match_func_similarity_percent|99.4658%|
|func_match_overall_percent|99.7868%|
|first_matches|Counter({'SymbolsHash': 467})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 467
"ExternalsName" : 177
```



```mermaid
pie showData
    title First Matches
"SymbolsHash" : 467
```



```mermaid
pie showData
    title Diff Stats
"added_funcs_len" : 2
"deleted_funcs_len" : 0
"modified_funcs_len" : 5
```



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

## Strings


*No string differences found*

# Deleted

# Added

## Feature_285200698__private_IsEnabledDeviceUsageNoInline

### Function Meta



|Key|lua_9168.sys|
| :---: | :---: |
|name|Feature_285200698__private_IsEnabledDeviceUsageNoInline|
|fullname|Feature_285200698__private_IsEnabledDeviceUsageNoInline|
|refcount|3|
|length|49|
|called|Feature_285200698__private_IsEnabledFallback|
|calling|UpdateTableNode|
|paramcount|0|
|address|140002d00|
|sig|ulonglong __fastcall Feature_285200698__private_IsEnabledDeviceUsageNoInline(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


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

```


## Feature_285200698__private_IsEnabledFallback

### Function Meta



|Key|lua_9168.sys|
| :---: | :---: |
|name|Feature_285200698__private_IsEnabledFallback|
|fullname|Feature_285200698__private_IsEnabledFallback|
|refcount|2|
|length|21|
|called|wil_details_IsEnabledFallback|
|calling|Feature_285200698__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|
|address|140002d38|
|sig|undefined __fastcall Feature_285200698__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


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

```


# Modified


*Modified functions contain code changes*
## UpdateTableNode

### Match Info



|Key|lua_8972.sys - lua_9168.sys|
| :---: | :---: |
|diff_type|code,length,called|
|ratio|0.72|
|i_ratio|0.26|
|m_ratio|0.98|
|b_ratio|0.27|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|lua_8972.sys|lua_9168.sys|
| :---: | :---: | :---: |
|name|UpdateTableNode|UpdateTableNode|
|fullname|UpdateTableNode|UpdateTableNode|
|refcount|6|6|
|`length`|1700|1564|
|`called`|<details><summary>Expand for full list:<br>FLTMGR.SYS::FltAcquirePushLockExclusiveEx<br>FLTMGR.SYS::FltReleasePushLockEx<br>GetFileInformation<br>GetVolumeRootFileId<br>InsertFileIdTableNode<br>LuafvDeleteElementTable<br>LuafvFreePool<br>LuafvInsertElementTable<br>LuafvIsExcludedName<br>LuafvLookupElementTableFull<br>NTOSKRNL.EXE::ExAllocatePool2</summary>NTOSKRNL.EXE::RtlCompareUnicodeString<br>NTOSKRNL.EXE::RtlCopyUnicodeString<br>RemoveFileIdTableNode<br>ResolveTableNodeConflict<br>__security_check_cookie<br>memset</details>|<details><summary>Expand for full list:<br>FLTMGR.SYS::FltAcquirePushLockExclusiveEx<br>FLTMGR.SYS::FltReleasePushLockEx<br>Feature_285200698__private_IsEnabledDeviceUsageNoInline<br>GetFileInformation<br>GetVolumeRootFileId<br>InsertFileIdTableNode<br>LuafvAllocatePool<br>LuafvDeleteElementTable<br>LuafvFreePool<br>LuafvInsertElementTable<br>LuafvIsExcludedName</summary>LuafvLookupElementTableFull<br>NTOSKRNL.EXE::RtlCompareUnicodeString<br>NTOSKRNL.EXE::RtlCopyUnicodeString<br>RemoveFileIdTableNode<br>ResolveTableNodeConflict<br>__security_check_cookie<br>memset</details>|
|calling|CreateTableNode<br>LuafvFindTableNode<br>LuafvInitializeFileTableForVolume|CreateTableNode<br>LuafvFindTableNode<br>LuafvInitializeFileTableForVolume|
|paramcount|4|4|
|address|140019ad0|140019ad0|
|sig|longlong __fastcall UpdateTableNode(longlong param_1, uint * param_2, ulonglong * param_3, undefined8 param_4)|longlong __fastcall UpdateTableNode(longlong param_1, uint * param_2, ulonglong * param_3, undefined8 param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UpdateTableNode Called Diff


```diff
--- UpdateTableNode called
+++ UpdateTableNode called
@@ -2,0 +3 @@
+Feature_285200698__private_IsEnabledDeviceUsageNoInline
@@ -5,0 +7 @@
+LuafvAllocatePool
@@ -11 +12,0 @@
-NTOSKRNL.EXE::ExAllocatePool2
```


### UpdateTableNode Diff


```diff
--- UpdateTableNode
+++ UpdateTableNode
@@ -1,261 +1,254 @@
 
 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 
 longlong UpdateTableNode(longlong param_1,uint *param_2,ulonglong *param_3,undefined8 param_4)
 
 {
   longlong lVar1;
   ushort uVar2;
   int iVar3;
   ulonglong uVar4;
   longlong lVar5;
   uint *puVar6;
   longlong lVar7;
   uint uVar8;
   longlong lVar9;
   uint *puVar10;
   longlong lVar11;
   bool bVar12;
   bool bVar13;
   undefined4 uVar14;
   undefined4 uVar15;
   undefined1 auStackY_1a8 [32];
-  undefined1 local_168 [4];
+  undefined1 local_167 [3];
   uint local_164;
   undefined4 local_160 [2];
   uint *local_158;
   undefined8 local_150;
   undefined8 uStack_148;
   int local_140;
-  undefined8 local_138;
-  undefined8 uStack_130;
-  longlong *local_128;
-  longlong local_120 [2];
+  uint *local_138;
+  undefined8 local_130;
+  undefined8 uStack_128;
+  longlong *local_120;
+  ulonglong local_118;
   undefined8 uStack_110;
   undefined4 local_108;
   undefined4 uStack_104;
   uint *local_100;
   uint local_f8 [24];
   undefined8 local_98 [10];
   ulonglong local_48;
   
   local_48 = __security_cookie ^ (ulonglong)auStackY_1a8;
   local_158 = (uint *)0x0;
-  local_168[0] = 0;
+  local_167[0] = 0;
   local_108 = 0;
-  local_138 = 0;
-  uStack_130 = (uint *)0x0;
+  local_130 = 0;
+  uStack_128 = (uint *)0x0;
   local_150 = 0;
   uStack_148 = 0;
-  local_120[1] = 0;
+  local_118 = 0;
   uStack_110 = 0;
   local_100 = param_2;
   memset(local_f8,0,0xb0);
-  lVar5 = param_1 + 0x50;
+  lVar11 = param_1 + 0x80;
   lVar1 = *(longlong *)(param_1 + 0x20);
-  lVar11 = param_1 + 0x80;
   if (*(int *)(param_1 + 0x100) == 2) {
     uVar4 = GetVolumeRootFileId(param_1,local_98);
     if ((int)uVar4 < 0) {
       return param_1;
     }
     puVar10 = local_f8;
     local_158 = puVar10;
   }
   else {
     puVar10 = (uint *)0x0;
     puVar6 = local_158;
     if (((((*(byte *)(lVar1 + 0x1e) & 1) != 0) &&
          (puVar10 = (uint *)0x0, (*(uint *)(lVar1 + 0x18) & 0x410) == 0x10)) &&
         (puVar10 = param_2, puVar6 = param_2, param_2 == (uint *)0x0)) &&
-       (uVar4 = GetFileInformation(lVar1,lVar5,local_f8,param_4,&local_158,0,param_3),
+       (uVar4 = GetFileInformation(lVar1,param_1 + 0x50,local_f8,param_4,&local_158,0,param_3),
        puVar10 = local_158, puVar6 = local_158, (int)uVar4 < 0)) {
       return param_1;
     }
     local_158 = puVar6;
     if (puVar10 == (uint *)0x0) {
       if ((*(byte *)(param_1 + 0x1e) & 0x10) != 0) {
-        RemoveFileIdTableNode(param_1);
+        uVar4 = Feature_285200698__private_IsEnabledDeviceUsageNoInline();
+        if ((int)uVar4 == 0) {
+          RemoveFileIdTableNode(param_1);
+        }
+        else {
+          FltAcquirePushLockExclusiveEx(&DAT_0,0);
+          RemoveFileIdTableNode(param_1);
+          FltReleasePushLockEx(&DAT_0,0);
+        }
       }
       uVar2 = *(ushort *)(param_1 + 0x1e);
       if ((uVar2 & 8) != 0) {
         LuafvDeleteElementTable(*(longlong *)(lVar1 + 0x28),param_1 + 0x60);
         uVar2 = *(ushort *)(param_1 + 0x1e) & 0xfff7;
       }
       *(undefined4 *)(param_1 + 0x18) = 0;
       *(ushort *)(param_1 + 0x1e) = uVar2 & 0xff7e;
       return param_1;
     }
   }
   if (*(uint *)(param_1 + 0x100) < 3) {
     uVar8 = *(uint *)(param_1 + 0x18);
   }
   else {
+    local_130._0_4_ = CONCAT22((short)puVar10[0xf],(short)puVar10[0xf]);
     bVar13 = true;
-    local_138._0_4_ = CONCAT22((short)puVar10[0xf],(short)puVar10[0xf]);
-    uStack_130 = puVar10 + 0x1a;
+    uStack_128 = puVar10 + 0x1a;
     local_150._0_4_ = CONCAT22((short)(char)puVar10[0x11],(short)(char)puVar10[0x11]);
     uStack_148 = (longlong)puVar10 + 0x46;
     local_164 = puVar10[0xe];
-    local_140 = RtlCompareUnicodeString(&local_138,lVar5,1);
+    local_140 = RtlCompareUnicodeString(&local_130,param_1 + 0x50,1);
     bVar12 = local_140 != 0;
     if ((ushort)local_150 == 0) {
       bVar13 = false;
     }
     else if ((*(byte *)(param_1 + 0x1e) & 8) != 0) {
       iVar3 = RtlCompareUnicodeString(lVar11,&local_150,1);
       bVar13 = iVar3 != 0;
     }
     if (local_140 == 0) {
       if (bVar13) {
         uVar14 = (undefined4)local_150;
         uVar15 = local_150._4_4_;
         local_108 = (undefined4)uStack_148;
         uStack_104 = uStack_148._4_4_;
-        goto LAB_0;
-      }
-      local_128 = (longlong *)(lVar1 + 0x28);
+        goto LAB_1;
+      }
+      local_120 = (longlong *)(lVar1 + 0x28);
     }
     else {
-      uVar14 = (undefined4)local_138;
-      uVar15 = local_138._4_4_;
-      local_108 = (undefined4)uStack_130;
-      uStack_104 = uStack_130._4_4_;
-LAB_0:
-      local_128 = (longlong *)(lVar1 + 0x28);
-      local_120[0] = 0;
+      uVar14 = (undefined4)local_130;
+      uVar15 = local_130._4_4_;
+      local_108 = (undefined4)uStack_128;
+      uStack_104 = uStack_128._4_4_;
+LAB_1:
+      local_120 = (longlong *)(lVar1 + 0x28);
+      local_138 = (uint *)0x0;
       local_160[0] = 0;
       uStack_110 = CONCAT44(uVar15,uVar14);
       lVar5 = LuafvLookupElementTableFull
-                        ((longlong *)*local_128,(ulonglong *)(local_120 + 1),local_120,local_160);
-      if (lVar5 == 0) {
-        lVar5 = param_1 + 0x50;
-      }
-      else {
+                        ((longlong *)*local_120,&local_118,(longlong *)&local_138,local_160);
+      if (lVar5 != 0) {
         lVar5 = lVar5 - ((ulonglong)(-(uint)((*(byte *)(lVar5 + 0x18) & 7) != 0) & 0x30) + 0x30);
         if (*(void **)(lVar5 + 8) == SystemReserved1[0xf]) {
           *(int *)(lVar5 + 0x10) = *(int *)(lVar5 + 0x10) + 1;
         }
         else {
           FltAcquirePushLockExclusiveEx(lVar5);
           *(void **)(lVar5 + 8) = SystemReserved1[0xf];
           *(undefined4 *)(lVar5 + 0x10) = 1;
         }
         lVar7 = lVar5;
         lVar9 = param_1;
         if (local_140 == 0) {
           lVar7 = param_1;
           lVar9 = lVar5;
         }
-        lVar7 = ResolveTableNodeConflict(lVar7,lVar9);
-        if (lVar7 == param_1) {
-          lVar5 = param_1 + 0x50;
-          puVar10 = local_158;
-        }
-        else {
-          lVar5 = lVar7 + 0x50;
+        lVar5 = ResolveTableNodeConflict(lVar7,lVar9);
+        puVar10 = local_158;
+        if (lVar5 != param_1) {
           bVar13 = true;
-          lVar11 = lVar7 + 0x80;
-          iVar3 = RtlCompareUnicodeString(&local_138,lVar5,1);
+          lVar11 = lVar5 + 0x80;
+          iVar3 = RtlCompareUnicodeString(&local_130,lVar5 + 0x50,1);
           bVar12 = iVar3 != 0;
           if ((ushort)local_150 == 0) {
             bVar13 = false;
           }
-          else if ((*(byte *)(lVar7 + 0x1e) & 8) != 0) {
+          else if ((*(byte *)(lVar5 + 0x1e) & 8) != 0) {
             iVar3 = RtlCompareUnicodeString(lVar11,&local_150,1);
             bVar13 = iVar3 != 0;
           }
-          *(ushort *)(lVar7 + 0x1e) = *(ushort *)(lVar7 + 0x1e) | 0x80;
-          param_1 = lVar7;
+          *(ushort *)(lVar5 + 0x1e) = *(ushort *)(lVar5 + 0x1e) | 0x80;
+          param_1 = lVar5;
           puVar10 = local_158;
         }
       }
     }
     if (((*(byte *)(param_1 + 0x1e) & 8) != 0) && ((bVar13 || ((ushort)local_150 == 0)))) {
       LuafvDeleteElementTable(*(longlong *)(lVar1 + 0x28),param_1 + 0x60);
       *(ushort *)(param_1 + 0x1e) = *(ushort *)(param_1 + 0x1e) & 0xfff7;
     }
     if (bVar12) {
-      uVar2 = (ushort)local_138;
-      if (((ushort)local_138 + 8 < 8) ||
-         (puVar6 = (uint *)ExAllocatePool2(0x100,(ushort)local_138 + 8,0x6661754c),
-         puVar6 == (uint *)0x0)) goto LAB_1;
-      *puVar6 = (uint)uVar2;
-      *(undefined1 *)(puVar6 + 1) = 0xff;
-      FltAcquirePushLockExclusiveEx(&PoolLock,0);
-      DAT_2 = DAT_2 + (uint)uVar2;
-      FltReleasePushLockEx(&PoolLock,0);
-      if (puVar6 + 2 == (uint *)0x0) goto LAB_1;
-      LuafvDeleteElementTable(*local_128,param_1 + 0x30);
+      local_138 = LuafvAllocatePool(1,(uint)(ushort)local_130,'\x12');
+      if (local_138 == (uint *)0x0) goto LAB_2;
+      LuafvDeleteElementTable(*local_120,param_1 + 0x30);
       FltAcquirePushLockExclusiveEx(&DAT_3,0);
       if ((*(byte *)(param_1 + 0x1e) & 0x20) != 0) {
         LuafvFreePool(*(longlong *)(param_1 + 0x58));
         *(undefined8 *)(param_1 + 0x58) = 0;
         *(ushort *)(param_1 + 0x1e) = *(ushort *)(param_1 + 0x1e) & 0xffdf;
       }
-      *(ushort *)(param_1 + 0x52) = (ushort)local_138;
-      *(uint **)(param_1 + 0x58) = puVar6 + 2;
-      RtlCopyUnicodeString(param_1 + 0x50,&local_138);
+      *(ushort *)(param_1 + 0x52) = (ushort)local_130;
+      *(uint **)(param_1 + 0x58) = local_138;
+      RtlCopyUnicodeString(param_1 + 0x50,&local_130);
       FltReleasePushLockEx(&DAT_3,0);
       LuafvInsertElementTable
-                (*(longlong **)(lVar1 + 0x28),(longlong *)(param_1 + 0x30),(longlong)local_168);
+                (*(longlong **)(lVar1 + 0x28),(longlong *)(param_1 + 0x30),(longlong)local_167);
       *(ushort *)(param_1 + 0x1e) = *(ushort *)(param_1 + 0x1e) | 0x20;
-      uVar4 = LuafvIsExcludedName((ushort *)&local_138);
+      uVar4 = LuafvIsExcludedName((ushort *)&local_130);
       *(byte *)(param_1 + 0x1d) =
            (*(byte *)(param_1 + 0x1d) ^ (byte)uVar4) & 1 ^ *(byte *)(param_1 + 0x1d);
     }
     else {
-      RtlCopyUnicodeString(lVar5,&local_138);
+      RtlCopyUnicodeString(param_1 + 0x50,&local_130);
     }
     if (bVar13) {
-      uVar2 = (ushort)local_150;
-      if (((ushort)local_150 + 8 < 8) ||
-         (puVar6 = (uint *)ExAllocatePool2(0x100,(ushort)local_150 + 8,0x6661754c),
-         puVar6 == (uint *)0x0)) goto LAB_1;
-      *puVar6 = (uint)uVar2;
-      *(undefined1 *)(puVar6 + 1) = 0xff;
-      FltAcquirePushLockExclusiveEx(&PoolLock,0);
-      DAT_2 = DAT_2 + (uint)uVar2;
-      FltReleasePushLockEx(&PoolLock,0);
-      if (puVar6 + 2 == (uint *)0x0) goto LAB_1;
+      puVar6 = LuafvAllocatePool(1,(uint)(ushort)local_150,'\x12');
+      if (puVar6 == (uint *)0x0) goto LAB_2;
       if ((*(byte *)(param_1 + 0x1e) & 0x40) != 0) {
         LuafvFreePool(*(longlong *)(lVar11 + 8));
         *(undefined8 *)(lVar11 + 8) = 0;
         *(ushort *)(param_1 + 0x1e) = *(ushort *)(param_1 + 0x1e) & 0xffbf;
       }
       *(ushort *)(lVar11 + 2) = (ushort)local_150;
-      *(uint **)(lVar11 + 8) = puVar6 + 2;
+      *(uint **)(lVar11 + 8) = puVar6;
       RtlCopyUnicodeString(lVar11,&local_150);
       LuafvInsertElementTable
-                (*(longlong **)(lVar1 + 0x28),(longlong *)(param_1 + 0x60),(longlong)local_168);
+                (*(longlong **)(lVar1 + 0x28),(longlong *)(param_1 + 0x60),(longlong)local_167);
       *(ushort *)(param_1 + 0x1e) = *(ushort *)(param_1 + 0x1e) | 0x48;
       uVar8 = local_164;
     }
     else {
       uVar8 = local_164;
       if ((*(byte *)(param_1 + 0x1e) & 8) != 0) {
         RtlCopyUnicodeString(lVar11,&local_150);
         uVar8 = local_164;
       }
     }
   }
   if ((*(byte *)(param_1 + 0x1e) & 0x10) == 0) {
 LAB_4:
     *(undefined8 *)(param_1 + 0xb0) = *(undefined8 *)(puVar10 + 0x18);
     InsertFileIdTableNode(param_1);
   }
   else {
     if (*(longlong *)(param_1 + 0xb0) != *(longlong *)(puVar10 + 0x18)) {
-      RemoveFileIdTableNode(param_1);
+      uVar4 = Feature_285200698__private_IsEnabledDeviceUsageNoInline();
+      if ((int)uVar4 == 0) {
+        RemoveFileIdTableNode(param_1);
+      }
+      else {
+        FltAcquirePushLockExclusiveEx(&DAT_0,0);
+        RemoveFileIdTableNode(param_1);
+        FltReleasePushLockEx(&DAT_0,0);
+      }
     }
     if ((*(byte *)(param_1 + 0x1e) & 0x10) == 0) goto LAB_4;
   }
   *(uint *)(param_1 + 0x18) = uVar8;
   *(ushort *)(param_1 + 0x1e) = *(ushort *)(param_1 + 0x1e) & 0xff7f | 1;
-LAB_1:
+LAB_2:
   if ((puVar10 != local_100) && (puVar10 != local_f8)) {
     LuafvFreePool((longlong)puVar10);
   }
   return param_1;
 }
 

```


# Modified (No Code Changes)


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

## RemoveFileIdTableNode

### Match Info



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

### Function Meta Diff



|Key|lua_8972.sys|lua_9168.sys|
| :---: | :---: | :---: |
|name|RemoveFileIdTableNode|RemoveFileIdTableNode|
|fullname|RemoveFileIdTableNode|RemoveFileIdTableNode|
|`refcount`|5|7|
|length|171|171|
|called|LuafvDeleteElementTable<br>LuafvReplaceElementTable|LuafvDeleteElementTable<br>LuafvReplaceElementTable|
|calling|InitializeFileTableForVolumePreWorker<br>RemoveTableNode<br>UpdateTableNode|InitializeFileTableForVolumePreWorker<br>RemoveTableNode<br>UpdateTableNode|
|paramcount|1|1|
|`address`|14001c534|14001c4b4|
|sig|undefined __fastcall RemoveFileIdTableNode(longlong param_1)|undefined __fastcall RemoveFileIdTableNode(longlong param_1)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

## wil_details_IsEnabledFallback

### Match Info



|Key|lua_8972.sys - lua_9168.sys|
| :---: | :---: |
|diff_type|refcount,calling|
|ratio|1.0|
|i_ratio|1.0|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|lua_8972.sys|lua_9168.sys|
| :---: | :---: | :---: |
|name|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|fullname|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|`refcount`|7|8|
|length|140|140|
|called|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|`calling`|Feature_3287483706__private_IsEnabledFallback<br>Feature_3614170424__private_IsEnabledFallback<br>Feature_Bugfix_LuafvStreamRename__private_IsEnabledFallback<br>Feature_Bugfix_LuafvTableNode__private_IsEnabledFallback<br>Feature_Bugfix_LuafvUMA__private_IsEnabledFallback<br>Feature_ShadowAdminAppCompat__private_IsEnabledFallback|Feature_285200698__private_IsEnabledFallback<br>Feature_3287483706__private_IsEnabledFallback<br>Feature_3614170424__private_IsEnabledFallback<br>Feature_Bugfix_LuafvStreamRename__private_IsEnabledFallback<br>Feature_Bugfix_LuafvTableNode__private_IsEnabledFallback<br>Feature_Bugfix_LuafvUMA__private_IsEnabledFallback<br>Feature_ShadowAdminAppCompat__private_IsEnabledFallback|
|paramcount|3|3|
|address|140002bb4|140002bb4|
|sig|uint __fastcall wil_details_IsEnabledFallback(ulonglong param_1, int param_2, undefined8 * param_3)|uint __fastcall wil_details_IsEnabledFallback(ulonglong param_1, int param_2, undefined8 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_IsEnabledFallback Calling Diff


```diff
--- wil_details_IsEnabledFallback calling
+++ wil_details_IsEnabledFallback calling
@@ -0,0 +1 @@
+Feature_285200698__private_IsEnabledFallback
```


## NTOSKRNL.EXE::ExAllocatePool2

### Match Info



|Key|lua_8972.sys - lua_9168.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|lua_8972.sys|lua_9168.sys|
| :---: | :---: | :---: |
|name|ExAllocatePool2|ExAllocatePool2|
|fullname|NTOSKRNL.EXE::ExAllocatePool2|NTOSKRNL.EXE::ExAllocatePool2|
|`refcount`|22|20|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>AllocateDataBuffer<br>CreateChildTable<br>CreateTableNode<br>FindUser<br>GetLocalAppDataStorePath<br>LuafvAllocatePool<br>LuafvBuildAdminInformation<br>LuafvBuildTableNodeName<br>LuafvFindUserStore<br>LuafvGetVolumeProperties<br>LuafvInitializeUsn</summary>LuafvIsInProfile<br>LuafvIsTargetWRP<br>LuafvOpenDirectory<br>LuafvPerformRename<br>LuafvPreCreate<br>LuafvReadAndCacheSecurityDescriptor<br>LuafvReparse<br>UpdateTableNode</details>|<details><summary>Expand for full list:<br>AllocateDataBuffer<br>CreateChildTable<br>CreateTableNode<br>FindUser<br>GetLocalAppDataStorePath<br>LuafvAllocatePool<br>LuafvBuildAdminInformation<br>LuafvBuildTableNodeName<br>LuafvFindUserStore<br>LuafvGetVolumeProperties<br>LuafvInitializeUsn</summary>LuafvIsInProfile<br>LuafvIsTargetWRP<br>LuafvOpenDirectory<br>LuafvPerformRename<br>LuafvPreCreate<br>LuafvReadAndCacheSecurityDescriptor<br>LuafvReparse</details>|
|paramcount|0|0|
|address|EXTERNAL:00000074|EXTERNAL:00000074|
|sig|undefined ExAllocatePool2(void)|undefined ExAllocatePool2(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::ExAllocatePool2 Calling Diff


```diff
--- NTOSKRNL.EXE::ExAllocatePool2 calling
+++ NTOSKRNL.EXE::ExAllocatePool2 calling
@@ -19 +18,0 @@
-UpdateTableNode
```


## LuafvAllocatePool

### Match Info



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

### Function Meta Diff



|Key|lua_8972.sys|lua_9168.sys|
| :---: | :---: | :---: |
|name|LuafvAllocatePool|LuafvAllocatePool|
|fullname|LuafvAllocatePool|LuafvAllocatePool|
|`refcount`|53|55|
|length|355|355|
|called|FLTMGR.SYS::FltAcquirePushLockExclusiveEx<br>FLTMGR.SYS::FltReleasePushLockEx<br>NTOSKRNL.EXE::ExAllocateFromPagedLookasideList<br>NTOSKRNL.EXE::ExAllocatePool2|FLTMGR.SYS::FltAcquirePushLockExclusiveEx<br>FLTMGR.SYS::FltReleasePushLockEx<br>NTOSKRNL.EXE::ExAllocateFromPagedLookasideList<br>NTOSKRNL.EXE::ExAllocatePool2|
|`calling`|<details><summary>Expand for full list:<br>AllocateTraversalNode<br>BuildExcludedExtensionsList<br>BuildNormalizedPathFromFileName<br>ConvertDosPathToNtPath<br>FindOrCreateDvfcb<br>FindUserWithToken<br>GetFileInformation<br>GetLocalAppDataStorePath<br>GetMirrorFileName<br>GetStaticEntryRoots<br>GetUserDesktopPath</summary>GrowQueryBuffer<br>LuafvAllocateAndBuildString<br>LuafvBuildSecurityDescriptor<br>LuafvBuildTableNodeName2<br>LuafvCheckAndCreateAdminDirectoryTree<br>LuafvCopyFile<br>LuafvCopySaclWithAudit<br>LuafvCreateAdminDirectoryTree<br>LuafvCreateTrustedInstallerSid<br>LuafvFindTableNodeEx<br>LuafvGetMirrorRenameInformation<br>LuafvGetNameFileObject<br>LuafvInitializeSecurity<br>LuafvIsFileInSystemManagedAdminAppData<br>LuafvPrepareDelayedVirtualization<br>LuafvQueryStoreDirectory<br>LuafvQueryStoreFile<br>LuafvSupplyFullPath<br>NormalizeFullPath<br>QueryProfilePaths<br>TranslatePath</details>|<details><summary>Expand for full list:<br>AllocateTraversalNode<br>BuildExcludedExtensionsList<br>BuildNormalizedPathFromFileName<br>ConvertDosPathToNtPath<br>FindOrCreateDvfcb<br>FindUserWithToken<br>GetFileInformation<br>GetLocalAppDataStorePath<br>GetMirrorFileName<br>GetStaticEntryRoots<br>GetUserDesktopPath</summary>GrowQueryBuffer<br>LuafvAllocateAndBuildString<br>LuafvBuildSecurityDescriptor<br>LuafvBuildTableNodeName2<br>LuafvCheckAndCreateAdminDirectoryTree<br>LuafvCopyFile<br>LuafvCopySaclWithAudit<br>LuafvCreateAdminDirectoryTree<br>LuafvCreateTrustedInstallerSid<br>LuafvFindTableNodeEx<br>LuafvGetMirrorRenameInformation<br>LuafvGetNameFileObject<br>LuafvInitializeSecurity<br>LuafvIsFileInSystemManagedAdminAppData<br>LuafvPrepareDelayedVirtualization<br>LuafvQueryStoreDirectory<br>LuafvQueryStoreFile<br>LuafvSupplyFullPath<br>NormalizeFullPath<br>QueryProfilePaths<br>TranslatePath<br>UpdateTableNode</details>|
|paramcount|3|3|
|`address`|14001a440|14001a3c0|
|sig|uint * __fastcall LuafvAllocatePool(int param_1, uint param_2, char param_3)|uint * __fastcall LuafvAllocatePool(int param_1, uint param_2, char param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### LuafvAllocatePool Calling Diff


```diff
--- LuafvAllocatePool calling
+++ LuafvAllocatePool calling
@@ -32,0 +33 @@
+UpdateTableNode
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-08-21T23:22:53</sub>