# ud_8521.sys-ud_8655.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_2146947386__private_IsEnabledDeviceUsageNoInline](#feature_2146947386__private_isenableddeviceusagenoinline)
	* [Feature_2146947386__private_IsEnabledFallback](#feature_2146947386__private_isenabledfallback)
	* [Feature_3105867064__private_IsEnabledDeviceUsageNoInline](#feature_3105867064__private_isenableddeviceusagenoinline)
	* [Feature_3105867064__private_IsEnabledFallback](#feature_3105867064__private_isenabledfallback)
* [Modified](#modified)
	* [UdfInitializeAllocations](#udfinitializeallocations)
	* [UdfUpdateVcbPhase1](#udfupdatevcbphase1)
	* [UdfCommonWrite](#udfcommonwrite)
	* [wil_details_FeatureReporting_ReportUsageToServiceDirect](#wil_details_featurereporting_reportusagetoservicedirect)
	* [UdfDasdWrite](#udfdasdwrite)
	* [wil_details_FeatureReporting_ReportUsageToService](#wil_details_featurereporting_reportusagetoservice)
	* [UdfGetBlocksNeeded](#udfgetblocksneeded)
	* [UdfSetFileAllocationSize](#udfsetfileallocationsize)
	* [wil_details_IsEnabledFallback](#wil_details_isenabledfallback)
	* [Feature_3887279419__private_IsEnabledFallback](#feature_3887279419__private_isenabledfallback)
	* [UdfInitializeScbFromIcbContext](#udfinitializescbfromicbcontext)
	* [wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath](#wil_details_featurestatecache_tryenabledeviceusagefastpath)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [UdfAdjustDirtyingOpCount](#udfadjustdirtyingopcount)
	* [NTOSKRNL.EXE::IofCompleteRequest](#ntoskrnlexeiofcompleterequest)
	* [NTOSKRNL.EXE::ExRaiseStatus](#ntoskrnlexeexraisestatus)
	* [UdfCleanupIrpContext](#udfcleanupirpcontext)
	* [UdfRaiseStatusEx](#udfraisestatusex)

# Visual Chart Diff



```mermaid

flowchart LR

UdfInitializeAllocations-4-old<--Match 89%-->UdfInitializeAllocations-4-new
UdfUpdateVcbPhase1-3-old<--Match 80%-->UdfUpdateVcbPhase1-3-new
UdfCommonWrite-2-old<--Match 85%-->UdfCommonWrite-2-new
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-old<--Match 95%-->wil_details_FeatureReporting_ReportUsageToServiceDirect-3-new
UdfDasdWrite-6-old<--Match 78%-->UdfDasdWrite-6-new
wil_details_FeatureReporting_ReportUsageToService-3-old<--Match 94%-->wil_details_FeatureReporting_ReportUsageToService-3-new
UdfGetBlocksNeeded-8-old<--Match 83%-->UdfGetBlocksNeeded-8-new
UdfSetFileAllocationSize-7-old<--Match 91%-->UdfSetFileAllocationSize-7-new
wil_details_IsEnabledFallback-2-old<--Match 94%-->wil_details_IsEnabledFallback-2-new
Feature_3887279419__private_IsEnabledFallback-2-old<--Match 89%-->Feature_3887279419__private_IsEnabledFallback-2-new
UdfInitializeScbFromIcbContext-4-old<--Match 75%-->UdfInitializeScbFromIcbContext-4-new
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-old<--Match 90%-->wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-new

subgraph ud_8655.sys
    UdfInitializeAllocations-4-new
UdfUpdateVcbPhase1-3-new
UdfCommonWrite-2-new
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-new
UdfDasdWrite-6-new
wil_details_FeatureReporting_ReportUsageToService-3-new
UdfGetBlocksNeeded-8-new
UdfSetFileAllocationSize-7-new
wil_details_IsEnabledFallback-2-new
Feature_3887279419__private_IsEnabledFallback-2-new
UdfInitializeScbFromIcbContext-4-new
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-new
    subgraph Added
direction LR
Feature_2146947386__private_IsEnabledDeviceUsageNoInline
    Feature_2146947386__private_IsEnabledFallback
    Feature_3105867064__private_IsEnabledDeviceUsageNoInline
    Feature_3105867064__private_IsEnabledFallback
end
end

subgraph ud_8521.sys
    UdfInitializeAllocations-4-old
UdfUpdateVcbPhase1-3-old
UdfCommonWrite-2-old
wil_details_FeatureReporting_ReportUsageToServiceDirect-3-old
UdfDasdWrite-6-old
wil_details_FeatureReporting_ReportUsageToService-3-old
UdfGetBlocksNeeded-8-old
UdfSetFileAllocationSize-7-old
wil_details_IsEnabledFallback-2-old
Feature_3887279419__private_IsEnabledFallback-2-old
UdfInitializeScbFromIcbContext-4-old
wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath-2-old
    
end

```


```mermaid
pie showData
    title Function Matches - 99.7994%
"unmatched_funcs_len" : 4
"matched_funcs_len" : 1990
```



```mermaid
pie showData
    title Matched Function Similarity - 99.0955%
"matched_funcs_with_code_changes_len" : 12
"matched_funcs_with_non_code_changes_len" : 6
"matched_funcs_no_changes_len" : 1972
```

# 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 ud_8521.sys ud_8655.sys
```


#### Verbose Args


<details>

```
--old ['ud_8521.sys'] --new [['ud_8655.sys']] --engine VersionTrackingDiff --output-path ud_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/udfs.sys/892E9F1B62000/udfs.sys -O udfs.sys.x64.10.0.26100.8521
wget https://msdl.microsoft.com/download/symbols/udfs.sys/8FAC01C562000/udfs.sys -O udfs.sys.x64.10.0.26100.8655
```


## Binary Metadata Diff


```diff
--- ud_8521.sys Meta
+++ ud_8655.sys Meta
@@ -1,44 +1,44 @@
-Program Name: ud_8521.sys
+Program Name: ud_8655.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: 407632
 # of Memory Blocks: 13
-# of Instructions: 74439
-# of Defined Data: 1907
-# of Functions: 995
-# of Symbols: 8160
+# of Instructions: 74552
+# of Defined Data: 1922
+# of Functions: 999
+# of Symbols: 8179
 # of Data Types: 149
 # of Data Type Categories: 11
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.0.4
-Date Created: Wed Aug 19 00:04:26 SGT 2026
+Date Created: Wed Aug 19 00:04:29 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /tmp/ud2/ud_8521.sys
-Executable MD5: ffee90d037bc47c9d76a0644ba3f879b
-Executable SHA256: b177af321fdb4ff6907f05b028e7ac33486c2000dbc1e75c4bed848f84e164c6
-FSRL: file:///tmp/ud2/ud_8521.sys?MD5=ffee90d037bc47c9d76a0644ba3f879b
+Executable Location: /tmp/ud2/ud_8655.sys
+Executable MD5: fca9a93d26a4e8ba3d9f1f836c4a8be9
+Executable SHA256: 2a9b930ad0ccb43fc6b31cb8a600cb026bb5dea9ccf79c28c7d311d65e62be99
+FSRL: file:///tmp/ud2/ud_8655.sys?MD5=fca9a93d26a4e8ba3d9f1f836c4a8be9
 PDB Age: 1
 PDB File: udfs.pdb
-PDB GUID: fe81a9c4-5086-9067-0b52-7f3f5208119a
+PDB GUID: 7570f48e-3989-4765-adb4-d8299d179f5b
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: UDF File System Driver
-PE Property[FileVersion]: 10.0.26100.8521 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.26100.8655 (WinBuild.160101.0800)
 PE Property[InternalName]: udfs.sys
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: udfs.sys
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.26100.8521
+PE Property[ProductVersion]: 10.0.26100.8655
 PE Property[Translation]: 4b00409
 Preferred Root Namespace Category: 
 RTTI Found: false
 Relocatable: true
 SectionAlignment: 4096
 Should Ask To Analyze: false

```


## Program Options


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


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

</details>


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


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

</details>


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


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

</details>


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


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

</details>


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


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

</details>

## Diff Stats



|Stat|Value|
| :---: | :---: |
|added_funcs_len|4|
|deleted_funcs_len|0|
|modified_funcs_len|18|
|added_symbols_len|11|
|deleted_symbols_len|5|
|diff_time|5.665172100067139|
|deleted_strings_len|0|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 994, 'ExternalsName': 227})|
|items_to_process|38|
|diff_types|Counter({'address': 16, 'length': 13, 'code': 12, 'sig': 8, 'called': 7, 'refcount': 6, 'calling': 6})|
|unmatched_funcs_len|4|
|total_funcs_len|1994|
|matched_funcs_len|1990|
|matched_funcs_with_code_changes_len|12|
|matched_funcs_with_non_code_changes_len|6|
|matched_funcs_no_changes_len|1972|
|match_func_similarity_percent|99.0955%|
|func_match_overall_percent|99.7994%|
|first_matches|Counter({'SymbolsHash': 994})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 994
"ExternalsName" : 227
```



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



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



```mermaid
pie showData
    title Symbols
"added_symbols_len" : 11
"deleted_symbols_len" : 5
```

## Strings


*No string differences found*

# Deleted

# Added

## Feature_2146947386__private_IsEnabledDeviceUsageNoInline

### Function Meta



|Key|ud_8655.sys|
| :---: | :---: |
|name|Feature_2146947386__private_IsEnabledDeviceUsageNoInline|
|fullname|Feature_2146947386__private_IsEnabledDeviceUsageNoInline|
|refcount|8|
|length|49|
|called|Feature_2146947386__private_IsEnabledFallback|
|calling|UdfCommonWrite<br>UdfDasdWrite<br>UdfInitializeAllocations<br>UdfInitializeScbFromIcbContext<br>UdfSetFileAllocationSize<br>UdfUpdateVcbPhase1|
|paramcount|0|
|address|14000c3d0|
|sig|ulonglong __fastcall Feature_2146947386__private_IsEnabledDeviceUsageNoInline(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


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

```


## Feature_2146947386__private_IsEnabledFallback

### Function Meta



|Key|ud_8655.sys|
| :---: | :---: |
|name|Feature_2146947386__private_IsEnabledFallback|
|fullname|Feature_2146947386__private_IsEnabledFallback|
|refcount|2|
|length|21|
|called|wil_details_IsEnabledFallback|
|calling|Feature_2146947386__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|
|address|14000c408|
|sig|undefined __fastcall Feature_2146947386__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


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

```


## Feature_3105867064__private_IsEnabledDeviceUsageNoInline

### Function Meta



|Key|ud_8655.sys|
| :---: | :---: |
|name|Feature_3105867064__private_IsEnabledDeviceUsageNoInline|
|fullname|Feature_3105867064__private_IsEnabledDeviceUsageNoInline|
|refcount|3|
|length|49|
|called|Feature_3105867064__private_IsEnabledFallback|
|calling|UdfCommonWrite<br>UdfGetBlocksNeeded|
|paramcount|0|
|address|14000c424|
|sig|ulonglong __fastcall Feature_3105867064__private_IsEnabledDeviceUsageNoInline(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


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

```


## Feature_3105867064__private_IsEnabledFallback

### Function Meta



|Key|ud_8655.sys|
| :---: | :---: |
|name|Feature_3105867064__private_IsEnabledFallback|
|fullname|Feature_3105867064__private_IsEnabledFallback|
|refcount|2|
|length|21|
|called|wil_details_IsEnabledFallback|
|calling|Feature_3105867064__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|
|address|14000c45c|
|sig|undefined __fastcall Feature_3105867064__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


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

```


# Modified


*Modified functions contain code changes*
## UdfInitializeAllocations

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.18|
|i_ratio|0.52|
|m_ratio|0.99|
|b_ratio|0.89|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfInitializeAllocations|UdfInitializeAllocations|
|fullname|UdfInitializeAllocations|UdfInitializeAllocations|
|refcount|4|4|
|`length`|2081|2143|
|`called`|<details><summary>Expand for full list:<br>NTOSKRNL.EXE::ExRaiseStatus<br>NTOSKRNL.EXE::ExReleaseResourceLite<br>NTOSKRNL.EXE::FsRtlAddLargeMcbEntry<br>NTOSKRNL.EXE::FsRtlTruncateLargeMcb<br>UdfAcquireResource<br>UdfGetNextAllocation<br>UdfGetPartitionOfCurrentAllocation<br>UdfInitializeAllocationContext<br>UdfInitializeScbMcb<br>UdfInsertAdExtInfo<br>UdfLookupPsnOfExtent</summary>UdfMapMetadataView<br>UdfSetStreamSparse<br>UdfUninitializeScbMcb<br>UdfUnpinView<br>UdfVerifyMcbAllocatedInBitmap<br>WPP_SF_D<br>WPP_SF_cii<br>WPP_SF_dD<br>WPP_SF_i<br>WPP_SF_iD<br>WPP_SF_iii</details>|<details><summary>Expand for full list:<br>Feature_2146947386__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExReleaseResourceLite<br>NTOSKRNL.EXE::FsRtlAddLargeMcbEntry<br>NTOSKRNL.EXE::FsRtlTruncateLargeMcb<br>UdfAcquireResource<br>UdfGetNextAllocation<br>UdfGetPartitionOfCurrentAllocation<br>UdfInitializeAllocationContext<br>UdfInitializeScbMcb<br>UdfInsertAdExtInfo<br>UdfLookupPsnOfExtent</summary>UdfMapMetadataView<br>UdfRaiseStatusEx<br>UdfSetStreamSparse<br>UdfUninitializeScbMcb<br>UdfUnpinView<br>UdfVerifyMcbAllocatedInBitmap<br>WPP_SF_D<br>WPP_SF_cii<br>WPP_SF_dD<br>WPP_SF_i<br>WPP_SF_iD<br>WPP_SF_iii</details>|
|calling|UdfCreateOrResetVatAndVmcbStreams<br>UdfInitializeScbFromIcbContext<br>UdfRemoveAlternateDataStreams|UdfCreateOrResetVatAndVmcbStreams<br>UdfInitializeScbFromIcbContext<br>UdfRemoveAlternateDataStreams|
|paramcount|4|4|
|`address`|14003d174|140053460|
|sig|undefined __fastcall UdfInitializeAllocations(undefined8 * param_1, short * param_2, longlong param_3, char param_4)|undefined __fastcall UdfInitializeAllocations(undefined8 * param_1, short * param_2, longlong param_3, char param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfInitializeAllocations Called Diff


```diff
--- UdfInitializeAllocations called
+++ UdfInitializeAllocations called
@@ -1 +1 @@
-NTOSKRNL.EXE::ExRaiseStatus
+Feature_2146947386__private_IsEnabledDeviceUsageNoInline
@@ -12,0 +13 @@
+UdfRaiseStatusEx
```


### UdfInitializeAllocations Diff


```diff
--- UdfInitializeAllocations
+++ UdfInitializeAllocations
@@ -1,323 +1,328 @@
 
 void UdfInitializeAllocations(undefined8 *param_1,short *param_2,longlong param_3,char param_4)
 
 {
   longlong lVar1;
   longlong lVar2;
   bool bVar3;
   char cVar4;
   ushort uVar5;
   int iVar6;
   undefined4 uVar7;
   ulonglong uVar8;
-  ulonglong uVar9;
+  uint uVar9;
   uint uVar10;
-  uint uVar11;
   ulonglong uVar12;
   undefined2 uVar13;
   longlong *plVar14;
   short *psVar15;
   undefined *puVar16;
   uint *puVar17;
   ulonglong uVar18;
   uint uVar19;
-  char local_res8;
+  char local_res10;
   int local_b0;
   int local_ac;
   int local_a8;
   uint local_a4;
-  ulonglong local_98;
-  undefined *local_90;
-  longlong local_88;
-  longlong local_80 [2];
-  uint *local_70;
-  undefined8 uStack_68;
-  undefined8 local_60;
-  ulonglong uStack_58;
-  undefined8 local_50;
+  ulonglong local_a0;
+  undefined *local_98;
+  longlong local_90;
+  longlong local_88 [2];
+  uint *local_78;
+  undefined8 uStack_70;
+  undefined8 local_68;
+  ulonglong uStack_60;
+  undefined8 local_58;
+  ulonglong uVar11;
   
+  psVar15 = *(short **)(param_3 + 0x10);
+  uVar18 = 0;
   lVar1 = param_1[2];
-  psVar15 = *(short **)(param_3 + 0x10);
-  local_88 = -1;
-  local_50 = 0;
+  local_90 = -1;
+  local_58 = 0;
+  local_a0 = 0;
   local_b0 = 0;
-  uVar10 = *(uint *)(lVar1 + 0x30) & 0x4000;
+  uVar9 = *(uint *)(lVar1 + 0x30) & 0x4000;
   param_2[0xc0] = 0;
   param_2[0xc1] = 0;
   *(short **)(param_2 + 0xc4) = param_2 + 200;
-  local_98 = 0;
   local_a4 = 0;
   local_ac = 0;
   local_a8 = 0;
-  local_res8 = '\0';
+  local_res10 = '\0';
+  local_88[0] = 0;
+  local_88[1] = 0;
+  local_78 = (uint *)0x0;
+  uStack_70 = 0;
   bVar3 = false;
-  local_80[0] = 0;
-  local_80[1] = 0;
-  local_70 = (uint *)0x0;
-  uStack_68 = 0;
-  local_60 = 0;
-  uStack_58 = 0;
+  local_68 = 0;
+  uStack_60 = 0;
   if (*psVar15 != 0x105) {
-    uVar11 = *(uint *)(psVar15 + 0x68);
+    uVar10 = *(uint *)(psVar15 + 0x68);
   }
   else {
-    uVar11 = *(uint *)(psVar15 + 0x54);
-  }
-  local_90 = (undefined *)0xd8;
-  local_90._0_4_ = 0xd8;
+    uVar10 = *(uint *)(psVar15 + 0x54);
+  }
+  local_98 = (undefined *)0xd8;
+  local_98._0_4_ = 0xd8;
   iVar6 = 0xb0;
   if (*psVar15 != 0x105) {
-    iVar6 = (int)local_90;
-  }
-  uVar11 = uVar11 + iVar6;
-  *(uint *)(param_2 + 0x70) = uVar11;
+    iVar6 = (int)local_98;
+  }
+  uVar10 = uVar10 + iVar6;
+  uVar11 = (ulonglong)uVar10;
+  *(uint *)(param_2 + 0x70) = uVar10;
   puVar17 = (uint *)(psVar15 + 0x54);
   if (*psVar15 != 0x105) {
     puVar17 = (uint *)(psVar15 + 0x68);
   }
-  if (*puVar17 <= uVar11) {
-    UdfInitializeScbMcb((ulonglong)uVar11,(longlong)param_2,uVar10 == 0);
-    lVar2 = *(longlong *)(param_2 + 0x10);
-    *(longlong *)(param_2 + 0x9c) = lVar2;
-    *(longlong *)(param_2 + 0x98) = lVar2;
-    uVar19 = (uint)*(ushort *)(*(longlong *)(param_3 + 0x10) + 0x22);
-    uVar11 = uVar19 & 7;
-    uStack_68 = CONCAT44(uStack_68._4_4_,uVar19) & 0xffffffff00000007;
-    if (uVar11 == 1) {
-      *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 0x20000;
-    }
-    else if (uVar11 == 3) {
-      UdfUninitializeScbMcb((longlong)param_2);
-      *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 2;
-      if (*psVar15 == 0x105) {
-        iVar6 = *(int *)(psVar15 + 0x56);
-      }
-      else {
-        iVar6 = *(int *)(psVar15 + 0x6a);
-      }
-      if (iVar6 == *(int *)(param_2 + 0x10)) {
-        param_2[0x94] = 0;
-        param_2[0x95] = 0;
-        param_2[0x96] = 0;
-        param_2[0x97] = 0;
-        return;
-      }
-      if (((undefined8 **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
-         ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) == 0)) goto LAB_0;
-      if (*psVar15 == 0x105) {
-        local_90._0_4_ = *(int *)(psVar15 + 0x56);
-      }
-      else {
-        local_90._0_4_ = *(int *)(psVar15 + 0x6a);
-      }
-      uVar13 = 0x45;
-      goto LAB_1;
-    }
-    if (lVar2 != 0) {
-      plVar14 = local_80;
-      UdfInitializeAllocationContext((longlong)param_1,plVar14,param_3,param_4,(longlong)param_2);
-      uVar18 = 0;
-      uVar9 = 0;
-      do {
-        uVar11 = (uint)local_60;
-        cVar4 = (char)uVar9;
-        uVar8 = CONCAT71((int7)((ulonglong)plVar14 >> 8),cVar4);
-        if (((local_a4 != (uint)local_60) && ((*(uint *)(param_2 + 0x6a) & 0x8000) == 0)) &&
-           (uVar10 == 0)) {
-          psVar15 = param_2;
-          UdfInsertAdExtInfo((longlong)param_1,(longlong)param_2,uStack_58 & 0xffffffff,
-                             (uint)local_60,
-                             (int)(uVar18 >> ((byte)*(undefined4 *)(lVar1 + 0x48) & 0x3f)));
-          uVar8 = CONCAT71((int7)((ulonglong)psVar15 >> 8),cVar4);
-          local_a4 = uVar11;
-        }
-        puVar17 = local_70;
-        puVar16 = (undefined *)(ulonglong)uVar10;
-        if (cVar4 != '\0') {
+  if (uVar10 < *puVar17) {
+    if (((undefined8 **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
+       ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) == 0)) goto LAB_0;
+    if (*psVar15 == 0x105) {
+      local_98._0_4_ = 0xb0;
+    }
+    uVar13 = 0x44;
+LAB_1:
+    WPP_SF_dD(WPP_GLOBAL_Control[3],uVar13,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids,
+              (int)local_98);
+LAB_0:
+                    /* WARNING: Subroutine does not return */
+    UdfRaiseStatusEx((longlong)param_1,0xc0000102,'\0');
+  }
+  uVar8 = Feature_2146947386__private_IsEnabledDeviceUsageNoInline();
+  if (((int)uVar8 != 0) &&
+     (uVar11 = (ulonglong)*(uint *)(lVar1 + 0x48),
+     (ulonglong)(0xffffffffL << ((byte)*(uint *)(lVar1 + 0x48) & 0x3f)) <
+     *(ulonglong *)(param_2 + 0x10))) goto LAB_0;
+  UdfInitializeScbMcb(uVar11,(longlong)param_2,uVar9 == 0);
+  lVar2 = *(longlong *)(param_2 + 0x10);
+  *(longlong *)(param_2 + 0x9c) = lVar2;
+  *(longlong *)(param_2 + 0x98) = lVar2;
+  uVar19 = (uint)*(ushort *)(*(longlong *)(param_3 + 0x10) + 0x22);
+  uVar10 = uVar19 & 7;
+  uStack_70 = CONCAT44(uStack_70._4_4_,uVar19) & 0xffffffff00000007;
+  if (uVar10 == 1) {
+    *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 0x20000;
+  }
+  else if (uVar10 == 3) {
+    UdfUninitializeScbMcb((longlong)param_2);
+    *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 2;
+    if (*psVar15 == 0x105) {
+      iVar6 = *(int *)(psVar15 + 0x56);
+    }
+    else {
+      iVar6 = *(int *)(psVar15 + 0x6a);
+    }
+    if (iVar6 == *(int *)(param_2 + 0x10)) {
+      param_2[0x94] = 0;
+      param_2[0x95] = 0;
+      param_2[0x96] = 0;
+      param_2[0x97] = 0;
+      return;
+    }
+    if (((undefined8 **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
+       ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) == 0)) goto LAB_0;
+    if (*psVar15 == 0x105) {
+      local_98._0_4_ = *(int *)(psVar15 + 0x56);
+    }
+    else {
+      local_98._0_4_ = *(int *)(psVar15 + 0x6a);
+    }
+    uVar13 = 0x45;
+    goto LAB_1;
+  }
+  if (lVar2 != 0) {
+    plVar14 = local_88;
+    UdfInitializeAllocationContext((longlong)param_1,plVar14,param_3,param_4,(longlong)param_2);
+    uVar11 = 0;
+    do {
+      uVar10 = (uint)local_68;
+      cVar4 = (char)uVar11;
+      uVar8 = CONCAT71((int7)((ulonglong)plVar14 >> 8),cVar4);
+      if (((local_a4 != (uint)local_68) && ((*(uint *)(param_2 + 0x6a) & 0x8000) == 0)) &&
+         (uVar9 == 0)) {
+        psVar15 = param_2;
+        UdfInsertAdExtInfo((longlong)param_1,(longlong)param_2,uStack_60 & 0xffffffff,(uint)local_68
+                           ,(int)(uVar18 >> ((byte)*(undefined4 *)(lVar1 + 0x48) & 0x3f)));
+        uVar8 = CONCAT71((int7)((ulonglong)psVar15 >> 8),cVar4);
+        local_a4 = uVar10;
+      }
+      puVar17 = local_78;
+      puVar16 = (undefined *)(ulonglong)uVar9;
+      if (cVar4 != '\0') {
 LAB_2:
-          local_res8 = (char)uVar9;
-          if ((*local_70 & 0xc0000000) == 0x40000000) {
-            iVar6 = *(int *)(lVar1 + 0x44);
-            uVar11 = (uint)uVar18 & iVar6 - 1U;
-            goto joined_r0x00014003d3ae;
-          }
+        local_res10 = (char)uVar11;
+        if ((*local_78 & 0xc0000000) == 0x40000000) {
+          iVar6 = *(int *)(lVar1 + 0x44);
+          uVar10 = (uint)uVar18 & iVar6 - 1U;
+          goto joined_r0x0001400536c0;
+        }
 LAB_3:
+        if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+           ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) != 0)) {
+          WPP_SF_cii(WPP_GLOBAL_Control[3],uVar8,puVar16,(-(local_res10 != '\0') & 0xbU) + 0x4e);
+        }
+        goto LAB_0;
+      }
+      if ((longlong)*(ulonglong *)(param_2 + 0x10) <= (longlong)uVar18) {
+        if ((uVar9 == 0) && (uVar18 == *(ulonglong *)(param_2 + 0x10))) {
+          uVar11 = 1;
+          uVar12 = (ulonglong)(*(int *)(lVar1 + 0x44) - 1);
+          uVar18 = uVar18 + uVar12 & ~uVar12;
+          goto LAB_2;
+        }
+        break;
+      }
+      iVar6 = *(int *)(lVar1 + 0x44);
+      local_res10 = (char)uVar8;
+      uVar11 = uVar8 & 0xff;
+      uVar10 = (uint)uVar18 & iVar6 - 1U;
+joined_r0x0001400536c0:
+      if (uVar10 != 0) goto LAB_3;
+      uVar10 = *local_78;
+      if ((uVar10 & 0xc0000000) < 0x80000000) {
+        uVar19 = (((uVar10 & 0x3fffffff) - 1) + iVar6 & -iVar6) >>
+                 ((byte)*(undefined4 *)(lVar1 + 0x48) & 0x1f);
+        local_a8 = local_a8 + uVar19;
+        if (uVar10 < 0x40000000) {
+          local_ac = local_ac + uVar19;
+        }
+        else if (uVar9 != 0) goto LAB_4;
+        if (*(longlong *)(lVar1 + 0x160) == 0) {
+          local_b0 = 0;
+          uVar5 = UdfGetPartitionOfCurrentAllocation(local_88);
+          uVar10 = (uint)puVar16;
+        }
+        else {
+          uVar5 = 0;
+          uVar10 = uVar9;
+          local_b0 = 0;
+        }
+        if (((uVar10 == 0) && (uVar5 != *(ushort *)(*(longlong *)(lVar1 + 0x10) + 0x5c))) &&
+           (uVar5 != *(ushort *)(*(longlong *)(lVar1 + 0x10) + 0x54))) {
           if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
              ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) != 0)) {
-            WPP_SF_cii(WPP_GLOBAL_Control[3],uVar8,puVar16,(-(local_res8 != '\0') & 0xbU) + 0x4e);
+            WPP_SF_D(WPP_GLOBAL_Control[3],0x47,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids,
+                     (uint)uVar5);
           }
           goto LAB_0;
         }
-        if ((longlong)*(ulonglong *)(param_2 + 0x10) <= (longlong)uVar18) {
-          if ((uVar10 == 0) && (uVar18 == *(ulonglong *)(param_2 + 0x10))) {
-            uVar9 = 1;
-            uVar12 = (ulonglong)(*(int *)(lVar1 + 0x44) - 1);
-            uVar18 = uVar18 + uVar12 & ~uVar12;
-            goto LAB_2;
-          }
-          break;
-        }
-        iVar6 = *(int *)(lVar1 + 0x44);
-        local_res8 = (char)uVar8;
-        uVar9 = uVar8 & 0xff;
-        uVar11 = (uint)uVar18 & iVar6 - 1U;
-joined_r0x00014003d3ae:
-        if (uVar11 != 0) goto LAB_3;
-        uVar11 = *local_70;
-        if ((uVar11 & 0xc0000000) < 0x80000000) {
-          uVar19 = (((uVar11 & 0x3fffffff) - 1) + iVar6 & -iVar6) >>
-                   ((byte)*(undefined4 *)(lVar1 + 0x48) & 0x1f);
-          local_a8 = local_a8 + uVar19;
-          if (uVar11 < 0x40000000) {
-            local_ac = local_ac + uVar19;
-          }
-          else if (uVar10 != 0) goto LAB_4;
-          if (*(longlong *)(lVar1 + 0x160) == 0) {
-            local_b0 = 0;
-            uVar5 = UdfGetPartitionOfCurrentAllocation(local_80);
-            uVar11 = (uint)puVar16;
+        if (((*(uint *)(lVar1 + 0x30) & 0x4000000) == 0) ||
+           (uVar5 != *(ushort *)(*(longlong *)(lVar1 + 0x10) + 0x54))) {
+          uVar8 = UdfLookupPsnOfExtent
+                            ((longlong)param_1,lVar1,uVar5,puVar17[1],*puVar17 & 0x3fffffff);
+          uVar10 = (uint)uVar8;
+        }
+        else {
+          uVar10 = puVar17[1];
+          local_b0 = 1;
+        }
+        puVar16 = (undefined *)(ulonglong)uVar10;
+        FsRtlAddLargeMcbEntry
+                  ((-(ulonglong)(*puVar17 < 0x40000000) & 0xffffffffffffffe0) + 0x108 +
+                   (longlong)param_2,
+                   uVar18 >> ((byte)*(undefined4 *)(lVar1 + 0x48) & 0x3f) & 0xffffffff);
+      }
+      else if (uVar9 == 0) {
+        bVar3 = true;
+      }
+LAB_4:
+      uVar18 = uVar18 + (*puVar17 & 0x3fffffff);
+      uVar8 = Feature_2146947386__private_IsEnabledDeviceUsageNoInline();
+      if (((int)uVar8 != 0) &&
+         (local_res10 = (char)uVar11,
+         (ulonglong)(0xffffffffL << ((byte)*(undefined4 *)(lVar1 + 0x48) & 0x3f)) < uVar18))
+      goto LAB_0;
+      if ((char)uVar11 == '\0') {
+        local_a0 = uVar18;
+      }
+      if ((*puVar17 & 0xc0000000) != 0x80000000) {
+        local_90 = uVar18 - 1;
+      }
+      plVar14 = local_88;
+      cVar4 = UdfGetNextAllocation((longlong)param_1,plVar14);
+    } while (cVar4 != '\0');
+    uVar18 = (ulonglong)(*(int *)(lVar1 + 0x44) - 1);
+    uVar7 = (undefined4)
+            ((local_90 + 1 + uVar18 & ~uVar18) >> ((byte)*(undefined4 *)(lVar1 + 0x48) & 0x3f));
+    *(undefined4 *)(param_2 + 0x96) = uVar7;
+    *(undefined4 *)(param_2 + 0x94) = uVar7;
+    if (((bVar3) && ((*(byte *)(*(longlong *)(lVar1 + 0x10) + 6) & 2) == 0)) &&
+       ((*(uint *)(lVar1 + 0x30) & 0x20000000) == 0)) {
+      puVar16 = (undefined *)0x0;
+      UdfAcquireResource((longlong)param_1,*(undefined8 *)(param_2 + 8),'\0',0);
+      uVar18 = UdfSetStreamSparse((longlong)param_1,(longlong)param_2);
+      ExReleaseResourceLite(*(undefined8 *)(param_2 + 8));
+      if ((int)uVar18 < 0) {
+                    /* WARNING: Subroutine does not return */
+        UdfRaiseStatusEx((longlong)param_1,(int)uVar18,'\0');
+      }
+    }
+    if ((local_res10 == '\0') && (*(ulonglong *)(param_2 + 0x10) != local_a0)) {
+      if ((((*param_2 == 0x934) && ((param_4 != '\0' && ((*(uint *)(param_2 + 0x6a) & 0x18) == 0))))
+          && (((uint)*(ulonglong *)(param_2 + 0x10) & 0x3fffffff) == local_a0)) &&
+         (psVar15 = *(short **)(local_88[0] + 0x10), psVar15 != (short *)0x0)) {
+        if (*psVar15 == 0x105) {
+          uVar9 = *(uint *)(psVar15 + 0x54);
+          puVar16 = (undefined *)0xb0;
+        }
+        else {
+          uVar9 = *(uint *)(psVar15 + 0x68);
+          puVar16 = local_98;
+        }
+        puVar17 = (uint *)(puVar16 + uVar9 + (longlong)psVar15);
+        if ((*(byte *)(psVar15 + 0x11) & 7) == 0) {
+          if (*psVar15 == 0x105) {
+            iVar6 = *(int *)(psVar15 + 0x56);
           }
           else {
-            uVar5 = 0;
-            uVar11 = uVar10;
-            local_b0 = 0;
+            iVar6 = *(int *)(psVar15 + 0x6a);
           }
-          if (((uVar11 == 0) && (uVar5 != *(ushort *)(*(longlong *)(lVar1 + 0x10) + 0x5c))) &&
-             (uVar5 != *(ushort *)(*(longlong *)(lVar1 + 0x10) + 0x54))) {
+          if ((iVar6 == 8) && ((ulonglong)*puVar17 == *(ulonglong *)(param_2 + 0x10))) {
+            uVar5 = UdfGetPartitionOfCurrentAllocation(local_88);
+            uVar18 = UdfLookupPsnOfExtent
+                               ((longlong)param_1,lVar1,uVar5,puVar17[1],*(uint *)(param_2 + 0x10));
+            FsRtlTruncateLargeMcb(param_2 + 0x74,0);
+            puVar16 = (undefined *)(uVar18 & 0xffffffff);
+            FsRtlAddLargeMcbEntry(param_2 + 0x74,0);
+            local_a0 = *(ulonglong *)(param_2 + 0x10);
             if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
                ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) != 0)) {
-              WPP_SF_D(WPP_GLOBAL_Control[3],0x47,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids,
-                       (uint)uVar5);
-            }
-            goto LAB_0;
-          }
-          if (((*(uint *)(lVar1 + 0x30) & 0x4000000) == 0) ||
-             (uVar5 != *(ushort *)(*(longlong *)(lVar1 + 0x10) + 0x54))) {
-            uVar8 = UdfLookupPsnOfExtent
-                              ((longlong)param_1,lVar1,uVar5,puVar17[1],*puVar17 & 0x3fffffff);
-            uVar11 = (uint)uVar8;
-          }
-          else {
-            uVar11 = puVar17[1];
-            local_b0 = 1;
-          }
-          puVar16 = (undefined *)(ulonglong)uVar11;
-          FsRtlAddLargeMcbEntry
-                    ((-(ulonglong)(*puVar17 < 0x40000000) & 0xffffffffffffffe0) + 0x108 +
-                     (longlong)param_2,
-                     uVar18 >> ((byte)*(undefined4 *)(lVar1 + 0x48) & 0x3f) & 0xffffffff);
-        }
-        else if (uVar10 == 0) {
-          bVar3 = true;
-        }
-LAB_4:
-        uVar18 = uVar18 + (*puVar17 & 0x3fffffff);
-        if ((char)uVar9 == '\0') {
-          local_98 = uVar18;
-        }
-        if ((*puVar17 & 0xc0000000) != 0x80000000) {
-          local_88 = uVar18 - 1;
-        }
-        plVar14 = local_80;
-        cVar4 = UdfGetNextAllocation((longlong)param_1,plVar14);
-      } while (cVar4 != '\0');
-      uVar9 = (ulonglong)(*(int *)(lVar1 + 0x44) - 1);
-      uVar7 = (undefined4)
-              ((local_88 + 1 + uVar9 & ~uVar9) >> ((byte)*(undefined4 *)(lVar1 + 0x48) & 0x3f));
-      *(undefined4 *)(param_2 + 0x96) = uVar7;
-      *(undefined4 *)(param_2 + 0x94) = uVar7;
-      if ((bVar3) &&
-         ((*(uint *)(lVar1 + 0x30) & 0x20000000) == 0 &&
-          (*(ushort *)(*(longlong *)(lVar1 + 0x10) + 6) >> 1 & 1) == 0)) {
-        puVar16 = (undefined *)0x0;
-        UdfAcquireResource((longlong)param_1,*(undefined8 *)(param_2 + 8),'\0',0);
-        uVar9 = UdfSetStreamSparse((longlong)param_1,(longlong)param_2);
-        ExReleaseResourceLite(*(undefined8 *)(param_2 + 8));
-        if ((int)uVar9 < 0) {
-          *(int *)(param_1 + 3) = (int)uVar9;
-                    /* WARNING: Subroutine does not return */
-          ExRaiseStatus(uVar9 & 0xffffffff);
-        }
-      }
-      if ((local_res8 == '\0') && (*(ulonglong *)(param_2 + 0x10) != local_98)) {
-        if ((*param_2 == 0x934) &&
-           ((((param_4 != '\0' && ((*(uint *)(param_2 + 0x6a) & 0x18) == 0)) &&
-             (((uint)*(ulonglong *)(param_2 + 0x10) & 0x3fffffff) == local_98)) &&
-            (psVar15 = *(short **)(local_80[0] + 0x10), psVar15 != (short *)0x0)))) {
-          if (*psVar15 == 0x105) {
-            uVar10 = *(uint *)(psVar15 + 0x54);
-            puVar16 = (undefined *)0xb0;
-          }
-          else {
-            uVar10 = *(uint *)(psVar15 + 0x68);
-            puVar16 = local_90;
-          }
-          puVar17 = (uint *)(puVar16 + uVar10 + (longlong)psVar15);
-          if ((*(byte *)(psVar15 + 0x11) & 7) == 0) {
-            if (*psVar15 == 0x105) {
-              iVar6 = *(int *)(psVar15 + 0x56);
-            }
-            else {
-              iVar6 = *(int *)(psVar15 + 0x6a);
-            }
-            if ((iVar6 == 8) && ((ulonglong)*puVar17 == *(ulonglong *)(param_2 + 0x10))) {
-              uVar5 = UdfGetPartitionOfCurrentAllocation(local_80);
-              uVar9 = UdfLookupPsnOfExtent
-                                ((longlong)param_1,lVar1,uVar5,puVar17[1],*(uint *)(param_2 + 0x10))
-              ;
-              FsRtlTruncateLargeMcb(param_2 + 0x74,0);
-              puVar16 = (undefined *)(uVar9 & 0xffffffff);
-              FsRtlAddLargeMcbEntry(param_2 + 0x74,0);
-              local_98 = *(ulonglong *)(param_2 + 0x10);
-              if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-                 ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) != 0)) {
-                puVar16 = &WPP_84ceac4f740134edf97854d6d327bee5_Traceguids;
-                WPP_SF_i(WPP_GLOBAL_Control[3],0x48,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids
-                         ,param_2);
-              }
+              puVar16 = &WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids;
+              WPP_SF_i(WPP_GLOBAL_Control[3],0x48,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids,
+                       param_2);
             }
           }
         }
-        if (*(ulonglong *)(param_2 + 0x10) != local_98) {
-          if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-             ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) != 0)) {
-            WPP_SF_iii(WPP_GLOBAL_Control[3],*(ulonglong *)(param_2 + 0x10),puVar16,local_98);
-          }
-          goto LAB_0;
-        }
-      }
-      uVar10 = *(uint *)(param_1[2] + 0x30);
-      if ((((byte)uVar10 & 0x60) == 0x60) &&
-         ((uVar10 >> 0xe & 1) == 0 && (*(byte *)(param_1[2] + 0x54) & 0x10) == 0)) {
-        UdfVerifyMcbAllocatedInBitmap(param_1,local_b0,param_2,param_2 + 0x74);
-        UdfVerifyMcbAllocatedInBitmap(param_1,local_b0,param_2,param_2 + 0x84);
-      }
-      UdfUnpinView((longlong)param_1,(undefined8 *)(param_3 + 0x38));
-      if (*(longlong *)(param_3 + 0x10) == 0) {
-        UdfMapMetadataView((longlong)param_1,(undefined8 *)(param_3 + 0x10),lVar1,0,0,0,2);
-      }
-      *(int *)(param_2 + 0xa0) = local_ac;
-      *(int *)(param_2 + 0xa2) = local_a8;
-      if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-         ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) != 0)) {
-        WPP_SF_iD(WPP_GLOBAL_Control[3],0x4a,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids,
-                  param_2);
-      }
-    }
-    return;
-  }
-  if (((undefined8 **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
-     ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) == 0)) goto LAB_0;
-  if (*psVar15 == 0x105) {
-    local_90._0_4_ = 0xb0;
-  }
-  uVar13 = 0x44;
-LAB_1:
-  WPP_SF_dD(WPP_GLOBAL_Control[3],uVar13,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids,
-            (int)local_90);
-LAB_0:
-  *(undefined4 *)(param_1 + 3) = 0xc0000102;
-                    /* WARNING: Subroutine does not return */
-  ExRaiseStatus();
+      }
+      if (*(ulonglong *)(param_2 + 0x10) != local_a0) {
+        if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+           ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) != 0)) {
+          WPP_SF_iii(WPP_GLOBAL_Control[3],*(ulonglong *)(param_2 + 0x10),puVar16,local_a0);
+        }
+        goto LAB_0;
+      }
+    }
+    uVar9 = *(uint *)(param_1[2] + 0x30);
+    if (((((byte)uVar9 & 0x60) == 0x60) && ((*(uint *)(param_1[2] + 0x54) & 0x10) == 0)) &&
+       ((uVar9 >> 0xe & 1) == 0)) {
+      UdfVerifyMcbAllocatedInBitmap(param_1,local_b0,param_2,param_2 + 0x74);
+      UdfVerifyMcbAllocatedInBitmap(param_1,local_b0,param_2,param_2 + 0x84);
+    }
+    UdfUnpinView((longlong)param_1,(undefined8 *)(param_3 + 0x38));
+    if (*(longlong *)(param_3 + 0x10) == 0) {
+      UdfMapMetadataView((longlong)param_1,(undefined8 *)(param_3 + 0x10),lVar1,0,0,0,2);
+    }
+    *(int *)(param_2 + 0xa0) = local_ac;
+    *(int *)(param_2 + 0xa2) = local_a8;
+    if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+       ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x12 & 1) != 0)) {
+      WPP_SF_iD(WPP_GLOBAL_Control[3],0x4a,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids,param_2)
+      ;
+    }
+  }
+  return;
 }
 

```


## UdfUpdateVcbPhase1

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.96|
|i_ratio|0.78|
|m_ratio|0.99|
|b_ratio|0.8|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfUpdateVcbPhase1|UdfUpdateVcbPhase1|
|fullname|UdfUpdateVcbPhase1|UdfUpdateVcbPhase1|
|refcount|2|2|
|`length`|2475|2424|
|`called`|<details><summary>Expand for full list:<br>NTOSKRNL.EXE::ExAcquireFastMutex<br>NTOSKRNL.EXE::ExAcquireFastMutexUnsafe<br>NTOSKRNL.EXE::ExReleaseFastMutex<br>NTOSKRNL.EXE::ExReleaseFastMutexUnsafe<br>NTOSKRNL.EXE::FsRtlAddLargeMcbEntry<br>NTOSKRNL.EXE::KeInitializeDpc<br>NTOSKRNL.EXE::KeInitializeTimer<br>UdfCleanupIcbContext<br>UdfCreateInternalStream<br>UdfCreateScb<br>UdfInitializeAllocationSupport</summary>UdfInitializeIcbContextFromScb<br>UdfInitializeScbFromIcbContext<br>UdfInitializeScbMcb<br>UdfInitializeUniqueIdTable<br>UdfLookupActiveIcb<br>WPP_SF_<br>WPP_SF_ii<br>memset</details>|<details><summary>Expand for full list:<br>Feature_2146947386__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExAcquireFastMutex<br>NTOSKRNL.EXE::ExAcquireFastMutexUnsafe<br>NTOSKRNL.EXE::ExReleaseFastMutex<br>NTOSKRNL.EXE::ExReleaseFastMutexUnsafe<br>NTOSKRNL.EXE::FsRtlAddLargeMcbEntry<br>NTOSKRNL.EXE::KeInitializeDpc<br>NTOSKRNL.EXE::KeInitializeTimer<br>UdfCleanupIcbContext<br>UdfCreateInternalStream<br>UdfCreateScb</summary>UdfInitializeAllocationSupport<br>UdfInitializeIcbContextFromScb<br>UdfInitializeScbFromIcbContext<br>UdfInitializeScbMcb<br>UdfInitializeUniqueIdTable<br>UdfLookupActiveIcb<br>WPP_SF_<br>WPP_SF_ii<br>memset</details>|
|calling|UdfMountVolume|UdfMountVolume|
|paramcount|3|3|
|`address`|14004c274|1400587f0|
|sig|undefined __fastcall UdfUpdateVcbPhase1(short * param_1, longlong param_2, longlong param_3)|undefined __fastcall UdfUpdateVcbPhase1(short * param_1, longlong param_2, longlong param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfUpdateVcbPhase1 Called Diff


```diff
--- UdfUpdateVcbPhase1 called
+++ UdfUpdateVcbPhase1 called
@@ -0,0 +1 @@
+Feature_2146947386__private_IsEnabledDeviceUsageNoInline
```


### UdfUpdateVcbPhase1 Diff


```diff
--- UdfUpdateVcbPhase1
+++ UdfUpdateVcbPhase1
@@ -1,209 +1,210 @@
 
-/* WARNING: Removing unreachable block (ram,0x00014004cbf6) */
+/* WARNING: Removing unreachable block (ram,0x00014005913f) */
 
 void UdfUpdateVcbPhase1(short *param_1,longlong param_2,longlong param_3)
 
 {
   longlong lVar1;
   void *pvVar2;
   uint uVar3;
   short *psVar4;
   uint *puVar5;
   ulonglong uVar6;
   longlong lVar7;
   ulonglong uVar8;
   longlong lVar9;
   ulonglong local_res20;
   longlong local_98 [12];
   
   memset(local_98,0,0x60);
   uVar6 = 0;
   if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x40000) != 0)) {
-    WPP_SF_ii(WPP_GLOBAL_Control[3],0x27,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids,param_2);
+    WPP_SF_ii(WPP_GLOBAL_Control[3],0x27,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids,param_2);
   }
   lVar1 = param_2 + 0x670;
   ExAcquireFastMutexUnsafe(lVar1);
   *(void **)(param_2 + 0x6a8) = SystemReserved1[0xf];
   local_res20 = (ulonglong)*(uint6 *)(param_3 + 0x194) | 0x8000000000000000;
   psVar4 = UdfCreateScb((longlong)param_1,local_res20,0x933,0,(undefined1 *)0x0);
   *(short **)(param_2 + 0x120) = psVar4;
   *(uint *)(psVar4 + 0x58) = *(uint *)(param_3 + 400) & 0x3fffffff;
   *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x120) + 0x88) + 0x10) =
        *(longlong *)(param_2 + 0x120);
   lVar7 = param_2 + 0x630;
   ExAcquireFastMutexUnsafe(lVar7);
   *(void **)(param_2 + 0x668) = SystemReserved1[0xf];
   *(int *)(*(longlong *)(param_2 + 0x120) + 0xcc) =
        *(int *)(*(longlong *)(param_2 + 0x120) + 0xcc) + 1;
   *(int *)(*(longlong *)(param_2 + 0x120) + 0xd0) =
        *(int *)(*(longlong *)(param_2 + 0x120) + 0xd0) + 1;
   lVar9 = *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x120) + 0x88) + 8);
   *(int *)(lVar9 + 0x100) = *(int *)(lVar9 + 0x100) + 1;
   lVar9 = *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x120) + 0x88) + 8);
   *(int *)(lVar9 + 0x104) = *(int *)(lVar9 + 0x104) + 1;
   *(undefined8 *)(param_2 + 0x668) = 0;
   ExReleaseFastMutexUnsafe(lVar7);
   lVar9 = *(longlong *)(*(longlong *)(param_2 + 0x120) + 0x88);
   *(uint *)(lVar9 + 0x4c) = *(uint *)(lVar9 + 0x4c) | 1;
   *(undefined4 *)(param_2 + 0x588) = *(undefined4 *)(param_3 + 0xc);
   UdfInitializeIcbContextFromScb((longlong)param_1,local_98,*(longlong *)(param_2 + 0x120));
   UdfLookupActiveIcb((longlong)param_1,local_98,*(int *)(*(longlong *)(param_2 + 0x120) + 0xb0));
   UdfInitializeScbFromIcbContext((undefined8 *)param_1,*(short **)(param_2 + 0x120),local_98,0);
   UdfCleanupIcbContext((longlong)param_1,local_98);
   *(undefined8 *)(param_2 + 0x6a8) = 0;
   ExReleaseFastMutexUnsafe(lVar1);
   UdfCreateInternalStream
             ((longlong)param_1,param_2,*(longlong *)(param_2 + 0x120),(undefined4 *)0x0);
   if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x40000) != 0)) {
-    WPP_SF_(WPP_GLOBAL_Control[3],0x28,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids);
+    WPP_SF_(WPP_GLOBAL_Control[3],0x28,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids);
   }
   ExAcquireFastMutexUnsafe(lVar1);
   *(void **)(param_2 + 0x6a8) = SystemReserved1[0xf];
   psVar4 = UdfCreateScb((longlong)param_1,0,0x934,0,(undefined1 *)0x0);
   *(short **)(param_2 + 0x118) = psVar4;
   *(short **)(*(longlong *)(psVar4 + 0x44) + 0x10) = psVar4;
   ExAcquireFastMutexUnsafe(lVar7);
   *(void **)(param_2 + 0x668) = SystemReserved1[0xf];
   *(int *)(*(longlong *)(param_2 + 0x118) + 0xcc) =
        *(int *)(*(longlong *)(param_2 + 0x118) + 0xcc) + 1;
   *(int *)(*(longlong *)(param_2 + 0x118) + 0xd0) =
        *(int *)(*(longlong *)(param_2 + 0x118) + 0xd0) + 1;
   lVar9 = *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x118) + 0x88) + 8);
   *(int *)(lVar9 + 0x100) = *(int *)(lVar9 + 0x100) + 1;
   lVar9 = *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x118) + 0x88) + 8);
   *(int *)(lVar9 + 0x104) = *(int *)(lVar9 + 0x104) + 1;
   *(undefined8 *)(param_2 + 0x668) = 0;
   ExReleaseFastMutexUnsafe(lVar7);
   *(undefined8 *)(param_2 + 0x6a8) = 0;
   ExReleaseFastMutexUnsafe(lVar1);
   pvVar2 = SystemReserved1[0xf];
   lVar1 = *(longlong *)(param_2 + 0x118);
   if (SystemReserved1[0xf] != *(void **)(*(longlong *)(lVar1 + 0x88) + 0x40)) {
     ExAcquireFastMutex(*(longlong *)(*(longlong *)(lVar1 + 0x88) + 0x50) + 0xd8);
     *(void **)(*(longlong *)(lVar1 + 0x88) + 0x40) = pvVar2;
   }
   *(int *)(*(longlong *)(lVar1 + 0x88) + 0x48) = *(int *)(*(longlong *)(lVar1 + 0x88) + 0x48) + 1;
   uVar8 = 0;
   while( true ) {
     lVar7 = *(longlong *)(param_2 + 0x10);
     if ((uint)*(ushort *)(lVar7 + 4) <= (uint)uVar6) break;
     lVar9 = uVar6 * 0x38;
     if ((*(int *)(lVar9 + 0x60 + lVar7) == 1) &&
        (uVar3 = *(int *)(lVar9 + 0x6c + lVar7) + *(int *)(lVar9 + 0x68 + lVar7), (uint)uVar8 < uVar3
        )) {
       uVar8 = (ulonglong)uVar3;
     }
     uVar6 = (ulonglong)((uint)uVar6 + 1);
   }
   UdfInitializeScbMcb(uVar6,lVar1,'\0');
   FsRtlAddLargeMcbEntry(lVar1 + 0xe8,0,0);
   lVar7 = *(longlong *)(lVar1 + 0x20) + (uVar8 << ((byte)*(undefined4 *)(param_2 + 0x48) & 0x3f));
   *(longlong *)(lVar1 + 0x20) = lVar7;
   *(longlong *)(lVar1 + 0x28) = lVar7;
   *(longlong *)(lVar1 + 0x18) = lVar7;
   *(int *)(*(longlong *)(lVar1 + 0x88) + 0x48) = *(int *)(*(longlong *)(lVar1 + 0x88) + 0x48) + -1;
   if (*(int *)(*(longlong *)(lVar1 + 0x88) + 0x48) == 0) {
     *(undefined8 *)(*(longlong *)(lVar1 + 0x88) + 0x40) = 0;
     ExReleaseFastMutex(*(longlong *)(*(longlong *)(lVar1 + 0x88) + 0x50) + 0xd8);
   }
   *(uint *)(lVar1 + 0xd4) = *(uint *)(lVar1 + 0xd4) | 0x200001;
   *(longlong *)(*(longlong *)(param_2 + 0x118) + 8) =
        *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x118) + 0x88) + 0x50) + 8;
   *(longlong *)(*(longlong *)(param_2 + 0x118) + 0x10) =
        *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x118) + 0x88) + 0x50) + 0x70;
   if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x40000) != 0)) {
-    WPP_SF_(WPP_GLOBAL_Control[3],0x29,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids);
+    WPP_SF_(WPP_GLOBAL_Control[3],0x29,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids);
   }
   uVar3 = *(uint *)(param_2 + 0x30);
   if ((uVar3 >> 0xe & 1) == 0) {
     KeInitializeTimer(param_2 + 0x780);
     KeInitializeDpc(param_2 + 0x740,UdfCleanVolumeDpcFn,param_2);
     *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) | 0x400000;
     uVar3 = *(uint *)(param_2 + 0x30);
   }
-  if (((uVar3 & 0x10) == 0) &&
-     (lVar1 = *(longlong *)(param_2 + 0x10),
-     (uVar3 >> 0x1d & 1) == 0 && (*(ushort *)(lVar1 + 6) >> 1 & 1) == 0)) {
+  if ((((uVar3 & 0x10) == 0) &&
+      (lVar1 = *(longlong *)(param_2 + 0x10), (*(byte *)(lVar1 + 6) & 2) == 0)) &&
+     ((uVar3 >> 0x1d & 1) == 0)) {
     puVar5 = (uint *)((ulonglong)*(ushort *)(lVar1 + 0x5c) * 0x38 + 0x74 + lVar1);
     if (*puVar5 << 3 < *(uint *)(param_2 + 0x298)) {
       if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x40000) != 0)) {
-        WPP_SF_(WPP_GLOBAL_Control[3],0x2a,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids);
+        WPP_SF_(WPP_GLOBAL_Control[3],0x2a,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids);
       }
       *(uint *)(param_2 + 0x30) = *(uint *)(param_2 + 0x30) | 0x10;
     }
     else {
       ExAcquireFastMutexUnsafe(param_2 + 0x670);
       *(void **)(param_2 + 0x6a8) = SystemReserved1[0xf];
       psVar4 = UdfCreateScb((longlong)param_1,0,0x933,0,(undefined1 *)0x0);
       *(short **)(param_2 + 0x128) = psVar4;
       *(short **)(*(longlong *)(psVar4 + 0x44) + 0x10) = psVar4;
       ExAcquireFastMutexUnsafe(param_2 + 0x630);
       *(void **)(param_2 + 0x668) = SystemReserved1[0xf];
       *(int *)(*(longlong *)(param_2 + 0x128) + 0xcc) =
            *(int *)(*(longlong *)(param_2 + 0x128) + 0xcc) + 1;
       *(int *)(*(longlong *)(param_2 + 0x128) + 0xd0) =
            *(int *)(*(longlong *)(param_2 + 0x128) + 0xd0) + 1;
       lVar1 = *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x128) + 0x88) + 8);
       *(int *)(lVar1 + 0x100) = *(int *)(lVar1 + 0x100) + 1;
       lVar1 = *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x128) + 0x88) + 8);
       *(int *)(lVar1 + 0x104) = *(int *)(lVar1 + 0x104) + 1;
       *(int *)(*(longlong *)(param_1 + 8) + 0x108) =
            *(int *)(*(longlong *)(param_1 + 8) + 0x108) + 2;
       *(int *)(*(longlong *)(param_1 + 8) + 0x100) =
            *(int *)(*(longlong *)(param_1 + 8) + 0x100) + 2;
       *(int *)(*(longlong *)(param_1 + 8) + 0x10c) =
            *(int *)(*(longlong *)(param_1 + 8) + 0x10c) + 1;
       *(undefined8 *)(param_2 + 0x668) = 0;
       ExReleaseFastMutexUnsafe(param_2 + 0x630);
       *(undefined8 *)(param_2 + 0x6a8) = 0;
       ExReleaseFastMutexUnsafe(param_2 + 0x670);
       lVar1 = *(longlong *)(*(longlong *)(param_2 + 0x128) + 0x88);
       *(uint *)(lVar1 + 0x4c) = *(uint *)(lVar1 + 0x4c) | 1;
       uVar6 = (ulonglong)(*puVar5 & 0x3fffffff);
       *(ulonglong *)(*(longlong *)(param_2 + 0x128) + 0x18) = uVar6;
       *(ulonglong *)(*(longlong *)(param_2 + 0x128) + 0x28) = uVar6;
       *(ulonglong *)(*(longlong *)(param_2 + 0x128) + 0x20) = uVar6;
+      Feature_2146947386__private_IsEnabledDeviceUsageNoInline();
       pvVar2 = SystemReserved1[0xf];
       lVar1 = *(longlong *)(param_2 + 0x128);
       if (SystemReserved1[0xf] != *(void **)(*(longlong *)(lVar1 + 0x88) + 0x40)) {
         ExAcquireFastMutex(*(longlong *)(*(longlong *)(lVar1 + 0x88) + 0x50) + 0xd8);
         *(void **)(*(longlong *)(lVar1 + 0x88) + 0x40) = pvVar2;
       }
       lVar7 = *(longlong *)(lVar1 + 0x88);
       *(int *)(lVar7 + 0x48) = *(int *)(lVar7 + 0x48) + 1;
       UdfInitializeScbMcb(lVar7,*(longlong *)(param_2 + 0x128),'\0');
       FsRtlAddLargeMcbEntry
                 (lVar1 + 0xe8,0,
                  *(int *)((ulonglong)*(ushort *)(*(longlong *)(param_2 + 0x10) + 0x5c) * 0x38 + 0x68
                          + *(longlong *)(param_2 + 0x10)) + puVar5[1],
                  (*puVar5 & 0x3fffffff) >> ((byte)*(undefined4 *)(param_2 + 0x48) & 0x3f));
       *(int *)(*(longlong *)(lVar1 + 0x88) + 0x48) =
            *(int *)(*(longlong *)(lVar1 + 0x88) + 0x48) + -1;
       if (*(int *)(*(longlong *)(lVar1 + 0x88) + 0x48) == 0) {
         *(undefined8 *)(*(longlong *)(lVar1 + 0x88) + 0x40) = 0;
         ExReleaseFastMutex(*(longlong *)(*(longlong *)(lVar1 + 0x88) + 0x50) + 0xd8);
       }
       *(longlong *)(*(longlong *)(param_2 + 0x128) + 8) =
            *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x128) + 0x88) + 0x50) + 8;
       *(longlong *)(*(longlong *)(param_2 + 0x128) + 0x10) =
            *(longlong *)(*(longlong *)(*(longlong *)(param_2 + 0x128) + 0x88) + 0x50) + 0x70;
       *(uint *)(*(longlong *)(param_2 + 0x128) + 0xd4) =
            *(uint *)(*(longlong *)(param_2 + 0x128) + 0xd4) | 1;
       UdfCreateInternalStream
                 ((longlong)param_1,param_2,*(longlong *)(param_2 + 0x128),
                  (undefined4 *)&DAT_0);
       if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x40000) != 0)) {
-        WPP_SF_(WPP_GLOBAL_Control[3],0x2b,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids);
+        WPP_SF_(WPP_GLOBAL_Control[3],0x2b,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids);
       }
       UdfInitializeAllocationSupport((undefined8 *)param_1,param_2);
       UdfInitializeUniqueIdTable(param_1,param_2,param_3);
     }
   }
   return;
 }
 

```


## UdfCommonWrite

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,called|
|ratio|0.13|
|i_ratio|0.48|
|m_ratio|1.0|
|b_ratio|0.85|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfCommonWrite|UdfCommonWrite|
|fullname|UdfCommonWrite|UdfCommonWrite|
|refcount|3|3|
|`length`|7468|7450|
|`called`|<details><summary>Expand for full list:<br>NTOSKRNL.EXE::CcCanIWrite<br>NTOSKRNL.EXE::CcCopyWrite<br>NTOSKRNL.EXE::CcDeferWrite<br>NTOSKRNL.EXE::CcFlushCache<br>NTOSKRNL.EXE::CcInitializeCacheMap<br>NTOSKRNL.EXE::CcPrepareMdlWrite<br>NTOSKRNL.EXE::CcPurgeCacheSection<br>NTOSKRNL.EXE::CcSetDirtyPageThreshold<br>NTOSKRNL.EXE::CcSetFileSizes<br>NTOSKRNL.EXE::CcSetReadAheadGranularity<br>NTOSKRNL.EXE::ExAcquireFastMutex</summary>NTOSKRNL.EXE::ExAcquireFastMutexUnsafe<br>NTOSKRNL.EXE::ExReleaseFastMutex<br>NTOSKRNL.EXE::ExReleaseFastMutexUnsafe<br>NTOSKRNL.EXE::ExReleaseResourceLite<br>NTOSKRNL.EXE::FsRtlCheckLockForWriteAccess<br>NTOSKRNL.EXE::FsRtlCheckOplock<br>NTOSKRNL.EXE::FsRtlNormalizeNtstatus<br>NTOSKRNL.EXE::IoSetHardErrorOrVerifyDevice<br>NTOSKRNL.EXE::IofCompleteRequest<br>UdfAcquireResource<br>UdfAllocIoContext<br>UdfAllocateAtFileTail<br>UdfAvailableFreeBlocks<br>UdfCleanupIrpContext<br>UdfCompleteRequest<br>UdfDasdWrite<br>UdfDeEmbedFileData<br>UdfDecodeFileObject<br>UdfFinishIoAtEof<br>UdfFinishModifyIcb<br>UdfFsdPostRequest<br>UdfGetBlocksNeeded<br>UdfLockUserBuffer<br>UdfMapUserBuffer<br>UdfMarkRegionRecorded<br>UdfMarkVolumeOpenAndQueueCloseDpc<br>UdfNonCachedIo<br>UdfPrePostIrp<br>UdfPrepareModifyIcbForScb<br>UdfProcessHolesInFileRegion<br>UdfRaiseStatusEx<br>UdfSeqCacheReserveFileRegion<br>UdfSeqCacheUnReserveFileRegion<br>UdfSeqCacheWriteBlocksForFile<br>UdfUnpinView<br>UdfUpdateAdsFromScb<br>UdfUpdateScbTimeStamps<br>UdfUpdateValidDataLength<br>UdfVerifyScbOperation<br>UdfWaitForIoAtEof<br>WPP_SF_<br>WPP_SF_D<br>WPP_SF_dD<br>WPP_SF_i<br>WPP_SF_ii<br>WPP_SF_qDDDD<br>WPP_SF_qqdccc<br>memmove<br>memset</details>|<details><summary>Expand for full list:<br>Feature_2146947386__private_IsEnabledDeviceUsageNoInline<br>Feature_3105867064__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::CcCanIWrite<br>NTOSKRNL.EXE::CcCopyWrite<br>NTOSKRNL.EXE::CcDeferWrite<br>NTOSKRNL.EXE::CcFlushCache<br>NTOSKRNL.EXE::CcInitializeCacheMap<br>NTOSKRNL.EXE::CcPrepareMdlWrite<br>NTOSKRNL.EXE::CcPurgeCacheSection<br>NTOSKRNL.EXE::CcSetDirtyPageThreshold<br>NTOSKRNL.EXE::CcSetFileSizes</summary>NTOSKRNL.EXE::CcSetReadAheadGranularity<br>NTOSKRNL.EXE::ExAcquireFastMutex<br>NTOSKRNL.EXE::ExAcquireFastMutexUnsafe<br>NTOSKRNL.EXE::ExReleaseFastMutex<br>NTOSKRNL.EXE::ExReleaseFastMutexUnsafe<br>NTOSKRNL.EXE::ExReleaseResourceLite<br>NTOSKRNL.EXE::FsRtlCheckLockForWriteAccess<br>NTOSKRNL.EXE::FsRtlCheckOplock<br>NTOSKRNL.EXE::FsRtlNormalizeNtstatus<br>NTOSKRNL.EXE::IoSetHardErrorOrVerifyDevice<br>UdfAcquireResource<br>UdfAdjustDirtyingOpCount<br>UdfAllocIoContext<br>UdfAllocateAtFileTail<br>UdfAvailableFreeBlocks<br>UdfCompleteRequest<br>UdfDasdWrite<br>UdfDeEmbedFileData<br>UdfDecodeFileObject<br>UdfFinishIoAtEof<br>UdfFinishModifyIcb<br>UdfFsdPostRequest<br>UdfGetBlocksNeeded<br>UdfLockUserBuffer<br>UdfMapUserBuffer<br>UdfMarkRegionRecorded<br>UdfMarkVolumeOpenAndQueueCloseDpc<br>UdfNonCachedIo<br>UdfPrePostIrp<br>UdfPrepareModifyIcbForScb<br>UdfProcessHolesInFileRegion<br>UdfRaiseStatusEx<br>UdfSeqCacheReserveFileRegion<br>UdfSeqCacheUnReserveFileRegion<br>UdfSeqCacheWriteBlocksForFile<br>UdfUnpinView<br>UdfUpdateAdsFromScb<br>UdfUpdateScbTimeStamps<br>UdfUpdateValidDataLength<br>UdfVerifyScbOperation<br>UdfWaitForIoAtEof<br>WPP_SF_<br>WPP_SF_D<br>WPP_SF_dD<br>WPP_SF_i<br>WPP_SF_ii<br>WPP_SF_qDDDD<br>WPP_SF_qqdccc<br>memmove<br>memset</details>|
|calling|UdfFsdDispatch<br>UdfFspDispatch|UdfFsdDispatch<br>UdfFspDispatch|
|paramcount|2|2|
|address|140002a74|140002a74|
|sig|ulonglong __fastcall UdfCommonWrite(undefined8 * param_1, longlong param_2)|ulonglong __fastcall UdfCommonWrite(undefined8 * param_1, longlong param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfCommonWrite Called Diff


```diff
--- UdfCommonWrite called
+++ UdfCommonWrite called
@@ -0,0 +1,2 @@
+Feature_2146947386__private_IsEnabledDeviceUsageNoInline
+Feature_3105867064__private_IsEnabledDeviceUsageNoInline
@@ -20 +21,0 @@
-NTOSKRNL.EXE::IofCompleteRequest
@@ -21,0 +23 @@
+UdfAdjustDirtyingOpCount
@@ -25 +26,0 @@
-UdfCleanupIrpContext
```


### UdfCommonWrite Diff


```diff
--- UdfCommonWrite
+++ UdfCommonWrite
@@ -1,993 +1,979 @@
 
 ulonglong UdfCommonWrite(undefined8 *param_1,longlong param_2)
 
 {
   int *piVar1;
   bool bVar2;
   void *pvVar3;
-  uint *puVar4;
+  char cVar4;
   char cVar5;
-  char cVar6;
-  uint uVar7;
-  uint uVar8;
-  uint uVar9;
-  int iVar10;
-  uint uVar11;
-  undefined8 uVar12;
-  ulonglong uVar13;
-  byte bVar14;
-  undefined8 *puVar15;
-  undefined8 *puVar16;
-  longlong lVar17;
-  undefined2 uVar18;
-  undefined8 **ppuVar19;
-  short *psVar20;
-  ulonglong uVar21;
-  ulonglong uVar22;
-  longlong lVar23;
-  short *psVar24;
-  undefined *puVar25;
+  uint uVar6;
+  int iVar7;
+  undefined8 uVar8;
+  ulonglong uVar9;
+  ulonglong uVar10;
+  byte bVar11;
+  undefined8 *puVar12;
+  undefined8 *puVar13;
+  longlong lVar14;
+  undefined2 uVar15;
+  undefined8 **ppuVar16;
+  ulonglong uVar17;
+  longlong lVar18;
+  short *psVar19;
+  byte bVar20;
+  byte bVar21;
+  undefined *puVar22;
+  undefined8 *puVar23;
+  uint uVar24;
+  uint uVar25;
   undefined8 *puVar26;
-  byte bVar27;
-  byte bVar28;
   undefined8 *local_res8;
   longlong local_res10;
   char local_res20 [8];
-  undefined8 in_stack_fffffffffffffe58;
-  ulonglong uVar29;
-  undefined4 uVar30;
-  undefined8 in_stack_fffffffffffffe60;
-  bool local_178;
-  bool local_176;
-  char local_175;
-  char local_174;
-  char local_173;
-  uint local_170;
-  undefined1 local_16c;
-  char local_16b;
-  char local_16a;
-  uint local_168;
-  byte local_164;
-  undefined8 *local_160;
-  undefined8 *local_158;
-  uint local_150 [2];
-  short *local_148;
-  ulonglong local_140;
-  uint local_138 [2];
-  uint *local_130;
-  longlong local_128;
-  undefined *local_120;
-  undefined8 *local_118;
-  uint *local_110;
-  ulonglong local_108;
-  char local_100;
+  undefined8 in_stack_fffffffffffffe78;
+  short *psVar27;
+  undefined4 uVar28;
+  undefined8 in_stack_fffffffffffffe80;
+  bool local_158;
+  bool local_156;
+  char local_155;
+  char local_154;
+  char local_153;
+  uint local_150;
+  char local_14c;
+  undefined1 local_14b;
+  char local_14a;
+  uint local_148;
+  undefined8 *local_140;
+  undefined8 *local_138;
+  byte local_130;
+  uint local_12c;
+  undefined *local_128;
+  short *local_120;
+  ulonglong local_118;
+  ulonglong local_110;
+  undefined8 *local_108;
+  undefined8 local_100;
   ulonglong local_f8;
-  undefined *local_f0;
-  undefined8 *local_e8;
-  short *local_e0;
+  undefined8 *local_f0;
+  undefined *local_e8;
+  undefined8 *local_e0;
   uint local_d8;
   uint local_d4;
   short *local_d0;
   undefined8 uStack_c8;
   undefined8 local_c0;
   undefined8 uStack_b8;
   undefined8 local_b0;
-  ulonglong local_a8;
+  undefined *local_a8;
   undefined1 local_98 [4];
   undefined4 local_94;
   
-  uVar30 = (undefined4)((ulonglong)in_stack_fffffffffffffe58 >> 0x20);
-  uVar21 = 0;
-  local_170 = 0;
-  local_148 = (short *)0x0;
-  local_118 = (undefined8 *)0x0;
-  local_173 = '\0';
+  uVar28 = (undefined4)((ulonglong)in_stack_fffffffffffffe78 >> 0x20);
+  local_150 = 0;
+  local_120 = (short *)0x0;
+  local_108 = (undefined8 *)0x0;
+  local_153 = '\0';
   local_res20[0] = '\0';
-  local_178 = false;
-  local_175 = '\0';
+  local_158 = false;
+  local_155 = '\0';
   bVar2 = false;
-  local_174 = '\0';
+  local_154 = '\0';
   local_94 = 0;
   memset(local_98,0,0x54);
-  local_128 = 0;
-  local_138[0] = 0;
+  local_118 = 0;
+  local_100 = (ulonglong)local_100._4_4_ << 0x20;
   local_d0 = (short *)0x0;
   uStack_c8 = 0;
   local_c0 = 0;
   uStack_b8 = 0;
   local_b0 = 0;
   *(undefined8 *)(param_2 + 0x38) = 0;
-  uVar22 = *(ulonglong *)(param_2 + 0xb8);
-  puVar15 = *(undefined8 **)(uVar22 + 0x30);
-  local_158 = puVar15;
-  local_108 = uVar22;
-  local_e8 = puVar15;
-  local_150[0] = UdfDecodeFileObject((longlong)puVar15,&local_148,(ulonglong *)&local_118);
-  psVar24 = local_148;
-  local_130 = (uint *)((longlong)param_1 + 0x1c);
-  uVar7 = *local_130;
-  local_176 = (uVar7 & 4) != 0;
-  uVar8 = *(uint *)(param_2 + 0x10);
-  bVar27 = (byte)uVar8 >> 1;
-  bVar28 = bVar27 & 1;
-  local_168 = uVar8 & 0xffffff01;
-  local_164 = *(byte *)(puVar15 + 10) >> 1 & 1;
-  if ((local_150[0] != 4) &&
-     ((((local_150[0] != 1 || ((uVar8 & 1) == 0)) || (bVar28 == 0)) && (local_150[0] != 2)))) {
-    uVar22 = 0xc0000010;
+  uVar17 = *(ulonglong *)(param_2 + 0xb8);
+  puVar26 = *(undefined8 **)(uVar17 + 0x30);
+  ppuVar16 = &local_108;
+  local_140 = puVar26;
+  local_f8 = uVar17;
+  local_e0 = puVar26;
+  uVar6 = UdfDecodeFileObject((longlong)puVar26,&local_120,(ulonglong *)ppuVar16);
+  psVar19 = local_120;
+  local_110 = CONCAT44(local_110._4_4_,uVar6);
+  uVar24 = *(uint *)((longlong)param_1 + 0x1c) & 4;
+  local_156 = uVar24 != 0;
+  uVar25 = *(uint *)(param_2 + 0x10);
+  bVar20 = (byte)uVar25 >> 1;
+  bVar21 = bVar20 & 1;
+  local_148 = uVar25 & 0xffffff01;
+  local_130 = *(byte *)(puVar26 + 10) >> 1 & 1;
+  if ((uVar6 != 4) && ((((uVar6 != 1 || ((uVar25 & 1) == 0)) || (bVar21 == 0)) && (uVar6 != 2)))) {
+    uVar17 = 0xc0000010;
 LAB_0:
-    UdfCompleteRequest((longlong)param_1,param_2,(uint)uVar22);
-    return uVar22;
-  }
-  lVar17 = *(longlong *)(*(longlong *)(local_148 + 0x44) + 8);
-  local_110 = (uint *)(local_148 + 0x6a);
-  if (((((char)*local_110 < '\0') || (local_148 == *(short **)(lVar17 + 0x128))) ||
-      (local_148 == *(short **)(lVar17 + 0x118))) ||
-     ((local_148 == *(short **)(lVar17 + 0x140) ||
-      (local_16a = '\0', local_148 == *(short **)(lVar17 + 0x148))))) {
-    local_16a = '\x01';
+    UdfCompleteRequest((longlong)param_1,param_2,(uint)uVar17);
+    return uVar17;
+  }
+  lVar14 = *(longlong *)(*(longlong *)(local_120 + 0x44) + 8);
+  if (((((char)*(undefined4 *)(local_120 + 0x6a) < '\0') ||
+       (local_120 == *(short **)(lVar14 + 0x128))) || (local_120 == *(short **)(lVar14 + 0x118))) ||
+     ((local_120 == *(short **)(lVar14 + 0x140) ||
+      (local_14a = '\0', local_120 == *(short **)(lVar14 + 0x148))))) {
+    local_14a = '\x01';
   }
   if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-    uVar13 = CONCAT71((int7)((ulonglong)local_130 >> 8),-((uVar8 & 1) != 0)) & 0xffffffffffffff0b;
-    uVar22 = (ulonglong)CONCAT31((int3)(uVar8 >> 8),-(bVar28 != 0)) & 0xffffffffffffff0b;
-    in_stack_fffffffffffffe60 =
-         CONCAT44((int)((ulonglong)in_stack_fffffffffffffe60 >> 0x20),local_150[0]);
-    psVar20 = local_148;
-    WPP_SF_qqdccc(WPP_GLOBAL_Control[3],CONCAT71((int7)(uVar22 >> 8),(char)uVar22 + 'N'),
-                  CONCAT71((int7)(uVar13 >> 8),(char)uVar13 + 'N'),param_2);
-    uVar30 = (undefined4)((ulonglong)psVar20 >> 0x20);
-    uVar22 = local_108;
-  }
-  uVar8 = *(uint *)(lVar17 + 0x30);
-  if ((uVar8 >> 0x1c & 1) != 0) {
-    uVar22 = 0xc0000189;
+    uVar10 = CONCAT71((int7)((ulonglong)ppuVar16 >> 8),-((uVar25 & 1) != 0)) & 0xffffffffffffff0b;
+    uVar17 = (ulonglong)CONCAT31((int3)(uVar25 >> 8),-(bVar21 != 0)) & 0xffffffffffffff0b;
+    in_stack_fffffffffffffe80 = CONCAT44((int)((ulonglong)in_stack_fffffffffffffe80 >> 0x20),uVar6);
+    psVar27 = local_120;
+    WPP_SF_qqdccc(WPP_GLOBAL_Control[3],CONCAT71((int7)(uVar17 >> 8),(char)uVar17 + 'N'),
+                  CONCAT71((int7)(uVar10 >> 8),(char)uVar10 + 'N'),param_2);
+    uVar28 = (undefined4)((ulonglong)psVar27 >> 0x20);
+    uVar17 = local_f8;
+    uVar6 = (uint)local_110;
+  }
+  uVar25 = *(uint *)(lVar14 + 0x30);
+  if ((uVar25 >> 0x1c & 1) != 0) {
+    uVar17 = 0xc0000189;
     goto LAB_0;
   }
-  if (((uVar8 & 0x10) != 0) && (local_150[0] != 2)) {
-    if ((uVar8 & 0x4080) == 0x80) {
-      uVar22 = 0xc00000a2;
-    }
-    else if (bVar28 == 0) {
-      uVar22 = (ulonglong)((-(uint)((uVar8 & 0x20) != 0) & 0x7e4) + 0xc0000022);
+  if (((uVar25 & 0x10) != 0) && (uVar6 != 2)) {
+    if ((uVar25 & 0x4080) == 0x80) {
+      uVar17 = 0xc00000a2;
+    }
+    else if ((bVar20 & 1) == 0) {
+      uVar17 = (ulonglong)((-(uint)((uVar25 & 0x20) != 0) & 0x7e4) + 0xc0000022);
     }
     else {
-      uVar22 = 0xc0000098;
+      uVar17 = 0xc0000098;
     }
     if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-      WPP_SF_D(WPP_GLOBAL_Control[3],0xd,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids,
-               (int)uVar22);
+      WPP_SF_D(WPP_GLOBAL_Control[3],0xd,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,
+               (int)uVar17);
     }
     goto LAB_0;
   }
-  if (((uVar7 & 4) == 0) && (bVar28 != 0)) {
-    *local_130 = *local_130 | 4;
-    local_176 = true;
-  }
-  uVar13 = (ulonglong)local_168;
-  local_16c = (undefined1)local_168;
-  if (local_150[0] == 2) {
-    if ((((*(int *)(*(longlong *)(lVar17 + 0x18) + 0x48) == 7) &&
-         ((*(uint *)(lVar17 + 0x30) & 1) == 0)) && ((*(byte *)(uVar22 + 2) & 0x10) == 0)) &&
-       ((*(uint *)((longlong)local_118 + 4) & 8) == 0)) {
+  if ((uVar24 == 0) && ((bVar20 & 1) != 0)) {
+    *(uint *)((longlong)param_1 + 0x1c) = *(uint *)((longlong)param_1 + 0x1c) | 4;
+    local_156 = true;
+  }
+  uVar10 = (ulonglong)local_148;
+  local_14b = (undefined1)local_148;
+  if (uVar6 == 2) {
+    if ((((*(int *)(*(longlong *)(lVar14 + 0x18) + 0x48) == 7) &&
+         ((*(uint *)(lVar14 + 0x30) & 1) == 0)) && ((*(byte *)(uVar17 + 2) & 0x10) == 0)) &&
+       ((*(uint *)((longlong)local_108 + 4) & 8) == 0)) {
       UdfCompleteRequest((longlong)param_1,param_2,0xc0000022);
       return 0xc0000022;
     }
-    if ((*(uint *)(lVar17 + 0x54) & 0x10) != 0) {
-      *(uint *)((longlong)local_118 + 4) = *(uint *)((longlong)local_118 + 4) | 8;
-    }
-    local_168 = CONCAT31((int3)(local_168 >> 8),1);
-    uVar13 = (ulonglong)local_168;
-    local_16c = 1;
-    if ((*(uint *)((longlong)local_118 + 4) & 0x1000) != 0) {
-      *local_130 = *local_130 | 0x2000;
-    }
-  }
-  local_160 = *(undefined8 **)(uVar22 + 0x18);
-  uVar7 = *(uint *)(uVar22 + 8);
-  uVar22 = (ulonglong)uVar7;
-  local_120 = (undefined *)((longlong)local_160 + uVar22);
-  local_140 = uVar22;
-  local_f8 = uVar22;
-  local_f0 = local_120;
-  if ((longlong)local_160 < 0) {
-    local_16b = '\x01';
+    if ((*(uint *)(lVar14 + 0x54) & 0x10) != 0) {
+      *(uint *)((longlong)local_108 + 4) = *(uint *)((longlong)local_108 + 4) | 8;
+    }
+    local_148 = CONCAT31((int3)(local_148 >> 8),1);
+    uVar10 = (ulonglong)local_148;
+    local_14b = 1;
+    if ((*(uint *)((longlong)local_108 + 4) & 0x1000) != 0) {
+      *(uint *)((longlong)param_1 + 0x1c) = *(uint *)((longlong)param_1 + 0x1c) | 0x2000;
+    }
+  }
+  local_138 = *(undefined8 **)(uVar17 + 0x18);
+  uVar25 = *(uint *)(uVar17 + 8);
+  puVar26 = (undefined8 *)(ulonglong)uVar25;
+  local_128 = (undefined *)((longlong)local_138 + (longlong)puVar26);
+  local_f0 = puVar26;
+  if ((longlong)local_138 < 0) {
+    local_14c = '\x01';
   }
   else {
-    local_16b = '\0';
-    if (0x7fffffffffffffff - (longlong)local_160 < (longlong)uVar22) {
-      UdfCleanupIrpContext((longlong)param_1,'\0');
-      if ((*(uint *)(param_2 + 0x10) & 0x40) != 0) {
-        *(undefined8 *)(param_2 + 0x38) = 0;
-      }
-      *(undefined4 *)(param_2 + 0x30) = 0xc000000d;
-      IofCompleteRequest(param_2,1);
-      return 0xc000000d;
+    local_14c = '\0';
+    if (0x7fffffffffffffff - (longlong)local_138 < (longlong)puVar26) {
+      uVar17 = 0xc000000d;
+      goto LAB_0;
     }
   }
   if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) != 0)) {
-    uVar29 = uVar22;
-    WPP_SF_ii(WPP_GLOBAL_Control[3],0xe,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids,local_160);
-    uVar30 = (undefined4)(uVar29 >> 0x20);
-  }
-  if (uVar7 == 0) {
+    puVar13 = puVar26;
+    WPP_SF_ii(WPP_GLOBAL_Control[3],0xe,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,local_138);
+    uVar28 = (undefined4)((ulonglong)puVar13 >> 0x20);
+  }
+  if (uVar25 == 0) {
     UdfCompleteRequest((longlong)param_1,param_2,0);
     return 0;
   }
-  *(undefined4 *)(lVar17 + 0x854) = 0;
-  cVar6 = (char)uVar13;
-  if (cVar6 == '\0') {
-    cVar5 = CcCanIWrite(local_158);
-    puVar4 = local_130;
-    puVar25 = (undefined *)0x0;
-    if (cVar5 == '\0') {
-      uVar8 = *local_130;
+  *(undefined4 *)(lVar14 + 0x854) = 0;
+  cVar5 = (char)uVar10;
+  if (cVar5 == '\0') {
+    cVar4 = CcCanIWrite(local_140);
+    puVar22 = (undefined *)0x0;
+    if (cVar4 == '\0') {
+      uVar6 = *(uint *)((longlong)param_1 + 0x1c);
       if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-        puVar25 = &WPP_d6a1f992d04636d84452166461d4c91e_Traceguids;
-        WPP_SF_i(WPP_GLOBAL_Control[3],0xf,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids,param_2)
+        puVar22 = &WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids;
+        WPP_SF_i(WPP_GLOBAL_Control[3],0xf,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,param_2)
         ;
       }
-      UdfPrePostIrp(param_1,param_2,puVar25);
-      *puVar4 = *puVar4 | 0x400;
-      CcDeferWrite(local_158,UdfAddToWorkque,param_1,param_2,CONCAT44(uVar30,uVar7),
-                   CONCAT71((int7)((ulonglong)in_stack_fffffffffffffe60 >> 8),(char)(uVar8 >> 10)) &
+      UdfPrePostIrp(param_1,param_2,puVar22);
+      *(uint *)((longlong)param_1 + 0x1c) = *(uint *)((longlong)param_1 + 0x1c) | 0x400;
+      CcDeferWrite(local_140,UdfAddToWorkque,param_1,param_2,CONCAT44(uVar28,uVar25),
+                   CONCAT71((int7)((ulonglong)in_stack_fffffffffffffe80 >> 8),(char)(uVar6 >> 10)) &
                    0xffffffffffffff01);
       return 0x103;
     }
   }
-  if (cVar6 != '\0') {
+  if (cVar5 != '\0') {
     UdfAllocIoContext((longlong)param_1,local_98);
   }
-  puVar15 = local_158;
+  puVar13 = local_140;
   local_res8 = param_1;
   local_res10 = param_2;
-  if (local_150[0] == 2) {
-    puVar26 = local_118;
-    local_170 = UdfDasdWrite((longlong)param_1,(longlong)psVar24,(longlong)local_118,
-                             (longlong)local_160,uVar22,(longlong)local_158);
-    uVar21 = (ulonglong)local_170;
-    if (local_170 == 0x103) {
+  if ((uint)local_110 == 2) {
+    puVar23 = local_108;
+    local_150 = UdfDasdWrite((longlong)param_1,(longlong)psVar19,(longlong)local_108,
+                             (ulonglong)local_138,(ulonglong)puVar26,(longlong)local_140);
+    uVar17 = (ulonglong)local_150;
+    if (local_150 == 0x103) {
       local_res10 = 0;
     }
   }
   else {
-    if (bVar28 == 0) {
-      if ((cVar6 == '\0') || (*(longlong *)local_158[5] == 0)) {
-        if (((*local_110 & 2) == 0) && (cVar6 == '\0')) {
-          iVar10 = 1;
+    if (bVar21 == 0) {
+      if ((cVar5 == '\0') || (*(longlong *)local_140[5] == 0)) {
+        if (((*(uint *)(psVar19 + 0x6a) & 2) == 0) && (cVar5 == '\0')) {
+          iVar7 = 1;
         }
         else {
           if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
              ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-            WPP_SF_(WPP_GLOBAL_Control[3],0x11,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids);
-          }
-          iVar10 = 0;
-        }
-        UdfAcquireResource((longlong)param_1,*(longlong *)(*(longlong *)(psVar24 + 0x44) + 0x50) + 8
-                           ,'\0',iVar10);
-        local_173 = '\x01';
+            WPP_SF_(WPP_GLOBAL_Control[3],0x11,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids);
+          }
+          iVar7 = 0;
+        }
+        UdfAcquireResource((longlong)param_1,*(longlong *)(*(longlong *)(psVar19 + 0x44) + 0x50) + 8
+                           ,'\0',iVar7);
+        local_153 = '\x01';
       }
       else {
-        UdfAcquireResource((longlong)param_1,*(longlong *)(*(longlong *)(psVar24 + 0x44) + 0x50) + 8
+        UdfAcquireResource((longlong)param_1,*(longlong *)(*(longlong *)(psVar19 + 0x44) + 0x50) + 8
                            ,'\0',0);
-        local_173 = '\x01';
+        local_153 = '\x01';
         if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
            ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-          WPP_SF_(WPP_GLOBAL_Control[3],0x10,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids);
-        }
-        ppuVar19 = (undefined8 **)(psVar24 + 0x10);
-        if (local_16b == '\0') {
-          ppuVar19 = &local_160;
+          WPP_SF_(WPP_GLOBAL_Control[3],0x10,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids);
+        }
+        ppuVar16 = (undefined8 **)(psVar19 + 0x10);
+        if (local_14c == '\0') {
+          ppuVar16 = &local_138;
         }
         piVar1 = (int *)(param_2 + 0x30);
-        CcFlushCache(*(longlong *)(psVar24 + 0xd4) + 8,ppuVar19,uVar22,piVar1);
+        CcFlushCache(*(longlong *)(psVar19 + 0xd4) + 8,ppuVar16,puVar26,piVar1);
         if (*piVar1 < 0) {
                     /* WARNING: Subroutine does not return */
           UdfRaiseStatusEx((longlong)param_1,*piVar1,'\x01');
         }
-        local_100 = CcPurgeCacheSection(*(longlong *)(psVar24 + 0xd4) + 8,&local_160,uVar22,0);
-        if ((local_100 == '\0') && (*(int *)(psVar24 + 0xf8) != 0)) {
+        cVar5 = CcPurgeCacheSection(*(longlong *)(psVar19 + 0xd4) + 8,&local_138,puVar26,0);
+        if ((cVar5 == '\0') && (*(int *)(psVar19 + 0xf8) != 0)) {
           *piVar1 = -0x3ffffbcb;
                     /* WARNING: Subroutine does not return */
           UdfRaiseStatusEx((longlong)param_1,0xc0000435,'\x01');
         }
-        uVar13 = (ulonglong)local_168;
-      }
-    }
-    uVar7 = (uint)uVar13;
-    if ((local_118 == (undefined8 *)0x0) || ((*(uint *)((longlong)local_118 + 4) & 8) == 0)) {
-      UdfVerifyScbOperation((ulonglong)param_1,(longlong)psVar24,(longlong)local_118);
-    }
-    puVar26 = (undefined8 *)0x0;
-    if (((*(uint *)(lVar17 + 0x850) & 4) == 0) &&
-       ((*(longlong *)(lVar17 + 0x160) == 0 ||
-        (((char)*(uint *)(lVar17 + 0x850) < '\0' &&
-         (0x500000U >> ((byte)*(undefined4 *)(lVar17 + 0x48) & 0x1f) <
-          (uint)(*(int *)(lVar17 + 0x29c) - *(int *)(lVar17 + 0x2a0)))))))) {
+        uVar10 = (ulonglong)local_148;
+      }
+    }
+    cVar5 = (char)uVar10;
+    if ((local_108 == (undefined8 *)0x0) || ((*(uint *)((longlong)local_108 + 4) & 8) == 0)) {
+      UdfVerifyScbOperation((ulonglong)param_1,(longlong)psVar19,(longlong)local_108);
+    }
+    puVar23 = (undefined8 *)0x0;
+    if (((*(uint *)(lVar14 + 0x850) & 4) == 0) &&
+       ((*(longlong *)(lVar14 + 0x160) == 0 ||
+        (((char)*(uint *)(lVar14 + 0x850) < '\0' &&
+         (0x500000U >> ((byte)*(undefined4 *)(lVar14 + 0x48) & 0x1f) <
+          (uint)(*(int *)(lVar14 + 0x29c) - *(int *)(lVar14 + 0x2a0)))))))) {
       UdfMarkVolumeOpenAndQueueCloseDpc(param_1);
-      uVar21 = 0;
-    }
-    else if ((*local_130 & 0x8000) == 0) {
-      *local_130 = *local_130 | 0x8000;
-      LOCK();
-      *(int *)(param_1[2] + 0x7e0) = *(int *)(param_1[2] + 0x7e0) + 1;
-      UNLOCK();
-      uVar21 = (ulonglong)local_170;
-      uVar7 = (uint)CONCAT71((int7)(uVar13 >> 8),local_16c);
-      local_140 = local_f8;
-      local_120 = local_f0;
-      psVar24 = local_148;
-      uVar22 = local_f8;
-      local_168 = uVar7;
-    }
-    if (((char)uVar7 != '\0') && (local_173 != '\0')) {
-      *(undefined8 *)(param_1[5] + 0x20) = *(undefined8 *)(psVar24 + 4);
-    }
-    if ((bVar28 == 0) && (local_150[0] == 4)) {
-      puVar26 = param_1;
-      local_170 = FsRtlCheckOplock(psVar24 + 0x2c,param_2,param_1,UdfOplockComplete,UdfPrePostIrp);
-      uVar21 = (ulonglong)local_170;
-      if (local_170 == 0) {
-        if ((*(longlong *)(psVar24 + 0xfc) == 0) ||
-           (cVar6 = FsRtlCheckLockForWriteAccess(*(longlong *)(psVar24 + 0xfc),param_2),
-           cVar6 != '\0')) goto LAB_1;
-        uVar21 = 0xc0000054;
-LAB_2:
-        local_170 = (uint)uVar21;
-        puVar15 = local_158;
-      }
-      else {
+    }
+    else {
+      UdfAdjustDirtyingOpCount((longlong)param_1,'\x01');
+    }
+    if ((cVar5 != '\0') && (local_153 != '\0')) {
+      *(undefined8 *)(param_1[5] + 0x20) = *(undefined8 *)(psVar19 + 4);
+    }
+    uVar17 = 0;
+    if ((bVar21 == 0) && (uVar17 = 0, (uint)local_110 == 4)) {
+      puVar23 = param_1;
+      local_150 = FsRtlCheckOplock(psVar19 + 0x2c,param_2,param_1,UdfOplockComplete,UdfPrePostIrp);
+      uVar17 = (ulonglong)local_150;
+      if (local_150 != 0) {
         local_res10 = 0;
         local_res8 = (undefined8 *)0x0;
-        puVar15 = local_158;
+        puVar13 = local_140;
         if (((undefined8 **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) ||
-           ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) == 0)) goto LAB_3;
-        uVar18 = 0x12;
+           ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) == 0)) goto LAB_1;
+        uVar15 = 0x12;
+LAB_2:
+        local_158 = false;
+        puVar23 = (undefined8 *)&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids;
+        WPP_SF_(WPP_GLOBAL_Control[3],uVar15,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids);
+        puVar13 = local_140;
+        goto LAB_1;
+      }
+      if ((*(longlong *)(psVar19 + 0xfc) == 0) ||
+         (cVar4 = FsRtlCheckLockForWriteAccess(*(longlong *)(psVar19 + 0xfc),param_2), cVar4 != '\0'
+         )) goto LAB_3;
+      uVar17 = 0xc0000054;
+    }
+    else {
+LAB_3:
+      ExAcquireFastMutex(*(undefined8 *)(psVar19 + 0x18));
+      local_158 = true;
+      if (bVar21 == 0) {
+        if ((local_14c != '\0') ||
+           (local_155 = '\0', *(longlong *)(psVar19 + 0x14) < (longlong)local_128)) {
+          local_155 = '\x01';
+        }
+        if ((local_155 != '\0') && ((char)psVar19[2] < '\0')) {
+          puVar23 = puVar26;
+          uVar8 = UdfWaitForIoAtEof((longlong)psVar19,(longlong)local_138,(ulonglong)puVar26);
+          local_155 = (char)uVar8;
+        }
+        if (local_14c == '\0') {
 LAB_4:
-        local_178 = false;
-        puVar26 = (undefined8 *)&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids;
-        WPP_SF_(WPP_GLOBAL_Control[3],uVar18,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids);
-        puVar15 = local_158;
-      }
-    }
-    else {
-LAB_1:
-      local_e0 = psVar24 + 0x18;
-      ExAcquireFastMutex(*(undefined8 *)local_e0);
-      local_178 = true;
-      if (bVar28 == 0) {
-        if ((local_16b != '\0') ||
-           (local_175 = '\0', *(longlong *)(psVar24 + 0x14) < (longlong)local_120)) {
-          local_175 = '\x01';
-        }
-        if ((local_175 != '\0') && ((char)psVar24[2] < '\0')) {
-          puVar26 = (undefined8 *)(uVar22 & 0xffffffff);
-          uVar12 = UdfWaitForIoAtEof((longlong)psVar24,(longlong)local_160,(ulonglong)puVar26);
-          local_175 = (char)uVar12;
-        }
-        if (local_16b != '\0') {
-          local_160 = *(undefined8 **)(psVar24 + 0x10);
-          local_120 = (undefined *)((longlong)local_160 + uVar22);
-          if (0x7fffffffffffffff - (longlong)local_160 < (longlong)uVar22) {
-            uVar21 = 0xc000000d;
-            goto LAB_2;
-          }
-        }
-        if (local_175 != '\0') {
-          if (((char)uVar7 != '\0') && (local_176 == false)) {
-            local_176 = true;
-            *local_130 = *local_130 | 4;
-          }
-          *(byte *)(psVar24 + 2) = *(byte *)(psVar24 + 2) | 0x80;
-          if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-             ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-            WPP_SF_i(WPP_GLOBAL_Control[3],0x13,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids,
-                     *(undefined8 *)(psVar24 + 0x10));
-          }
-          uVar13 = 0;
-          uVar8 = *local_110;
-          puVar26 = (undefined8 *)(ulonglong)uVar8;
-          if (((uVar8 & 2) != 0) &&
-             ((longlong)(ulonglong)(uint)(*(int *)(lVar17 + 0x44) - *(int *)(psVar24 + 0x70)) <
-              (longlong)local_120)) {
-            local_174 = '\x01';
-          }
-          if ((((*(longlong *)(lVar17 + 0x160) == 0) &&
-               ((*(uint *)(lVar17 + 0x30) & 0x20000000) == 0)) && ((uVar8 >> 0xd & 1) == 0)) &&
-             (((iVar10 = (int)((ulonglong)((longlong)local_160 + (uVar22 - 1)) >>
-                              ((byte)*(undefined4 *)(lVar17 + 0x48) & 0x3f)), uVar7 = local_168,
-               (uVar8 & 2) == 0 && (*(uint *)(psVar24 + 0x94) < iVar10 + 1U)) || (local_174 != '\0')
-              ))) {
-            local_138[0] = (iVar10 - *(int *)(psVar24 + 0x94)) + 2;
-            if (local_138[0] < *(uint *)(psVar24 + 0xa4)) {
-              local_138[0] = 0;
+          if (local_155 != '\0') {
+            uVar9 = Feature_2146947386__private_IsEnabledDeviceUsageNoInline();
+            if (((int)uVar9 != 0) &&
+               ((undefined *)(0xffffffffL << ((byte)*(undefined4 *)(lVar14 + 0x48) & 0x3f)) <
+                local_128)) goto LAB_5;
+            if ((cVar5 != '\0') && (local_156 == false)) {
+              local_156 = true;
+              *(uint *)((longlong)param_1 + 0x1c) = *(uint *)((longlong)param_1 + 0x1c) | 4;
+            }
+            *(byte *)(psVar19 + 2) = *(byte *)(psVar19 + 2) | 0x80;
+            if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+               ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
+              WPP_SF_i(WPP_GLOBAL_Control[3],0x13,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,
+                       *(undefined8 *)(psVar19 + 0x10));
+            }
+            uVar9 = 0;
+            uVar25 = *(uint *)(psVar19 + 0x6a);
+            puVar23 = (undefined8 *)(ulonglong)uVar25;
+            if (((uVar25 & 2) != 0) &&
+               ((longlong)(ulonglong)(uint)(*(int *)(lVar14 + 0x44) - *(int *)(psVar19 + 0x70)) <
+                (longlong)local_128)) {
+              local_154 = '\x01';
+            }
+            if (((*(longlong *)(lVar14 + 0x160) == 0) &&
+                ((*(uint *)(lVar14 + 0x30) & 0x20000000) == 0)) && ((uVar25 >> 0xd & 1) == 0)) {
+              iVar7 = (int)((ulonglong)((undefined *)((longlong)local_138 + -1) + (longlong)puVar26)
+                           >> ((byte)*(undefined4 *)(lVar14 + 0x48) & 0x3f));
+              if ((((uVar25 & 2) == 0) && (*(uint *)(psVar19 + 0x94) < iVar7 + 1U)) ||
+                 (local_154 != '\0')) {
+                uVar25 = (iVar7 - *(int *)(psVar19 + 0x94)) + 2;
+                if (uVar25 < *(uint *)(psVar19 + 0xa4)) {
+                  local_100 = local_100 & 0xffffffff00000000;
+                }
+                else {
+                  uVar25 = uVar25 - *(uint *)(psVar19 + 0xa4);
+                  uVar9 = (ulonglong)uVar25;
+                  local_100 = CONCAT44(local_100._4_4_,uVar25);
+                }
+                uVar25 = (uint)uVar9;
+                if (uVar25 != 0) {
+                  ExAcquireFastMutexUnsafe(lVar14 + 0x630);
+                  *(void **)(lVar14 + 0x668) = SystemReserved1[0xf];
+                  uVar6 = UdfAvailableFreeBlocks(lVar14,0);
+                  if (uVar6 < uVar25) {
+                    *(undefined8 *)(lVar14 + 0x668) = 0;
+                    ExReleaseFastMutexUnsafe();
+                    uVar17 = 0xc000007f;
+                    local_150 = 0xc000007f;
+                    psVar19 = local_120;
+                    puVar13 = local_140;
+                    puVar26 = local_f0;
+                    goto LAB_1;
+                  }
+                  *(uint *)(lVar14 + 0x2a0) = *(int *)(lVar14 + 0x2a0) + uVar25;
+                  *(undefined8 *)(lVar14 + 0x668) = 0;
+                  ExReleaseFastMutexUnsafe(lVar14 + 0x630);
+                  iVar7 = *(int *)(psVar19 + 0xa4);
+                  *(uint *)(psVar19 + 0xa4) = iVar7 + uVar25;
+                  if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+                     ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
+                    WPP_SF_D(WPP_GLOBAL_Control[3],0x14,
+                             &WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,iVar7 + uVar25);
+                  }
+                  uVar17 = (ulonglong)local_150;
+                  uVar10 = CONCAT71((int7)(uVar9 >> 8),local_14b);
+                  local_148 = (uint)uVar10;
+                  psVar19 = local_120;
+                  puVar26 = local_f0;
+                  goto LAB_6;
+                }
+              }
+              uVar10 = (ulonglong)local_148;
+            }
+LAB_6:
+            cVar5 = (char)uVar10;
+            *(undefined **)(psVar19 + 0x10) = (undefined *)((longlong)local_138 + (longlong)puVar26)
+            ;
+            uVar25 = *(int *)(lVar14 + 0x44) - 1;
+            uVar10 = (ulonglong)((undefined *)((longlong)local_138 + (longlong)puVar26) + uVar25) &
+                     ~(ulonglong)uVar25;
+            if ((longlong)*(ulonglong *)(psVar19 + 0xc) < (longlong)uVar10) {
+              *(ulonglong *)(psVar19 + 0xc) = uVar10;
+            }
+            bVar2 = true;
+            if ((local_140[5] != 0) && (*(longlong *)(local_140[5] + 8) != 0)) {
+              CcSetFileSizes();
+            }
+          }
+          goto LAB_7;
+        }
+        local_138 = *(undefined8 **)(psVar19 + 0x10);
+        local_128 = (undefined *)((longlong)local_138 + (longlong)puVar26);
+        if ((longlong)puVar26 <= 0x7fffffffffffffff - (longlong)local_138) goto LAB_4;
+      }
+      else {
+        lVar18 = *(longlong *)(psVar19 + 0x10);
+        puVar13 = local_140;
+        if (lVar18 <= (longlong)local_138) goto LAB_1;
+        if (lVar18 < (longlong)((longlong)local_138 + (longlong)puVar26)) {
+          puVar26 = (undefined8 *)(lVar18 - (longlong)local_138);
+          local_f0 = puVar26;
+        }
+LAB_7:
+        if (cVar5 == '\0') {
+          ExReleaseFastMutex(*(undefined8 *)(psVar19 + 0x18));
+        }
+        local_158 = cVar5 != '\0';
+        uVar10 = Feature_3105867064__private_IsEnabledDeviceUsageNoInline();
+        if (((int)uVar10 == 0) ||
+           (((puVar23 = local_138, (longlong)local_138 < 0 != (longlong)puVar26 < 0 ||
+             (puVar23 = (undefined8 *)0x7fffffffffffffff,
+             (longlong)local_138 < 0 ==
+             (undefined *)0x7fffffffffffffff <
+             (undefined *)((longlong)local_138 + (longlong)puVar26))) &&
+            ((undefined *)((longlong)local_138 + (longlong)puVar26) <=
+             (undefined *)(0xffffffffL << ((byte)*(undefined4 *)(lVar14 + 0x48) & 0x3f)))))) {
+          local_e8 = (undefined *)((longlong)local_138 + (longlong)puVar26);
+          uVar25 = (uint)puVar26;
+          puVar23 = local_138;
+          if (bVar21 == 0) {
+            bVar11 = (byte)*(undefined4 *)(lVar14 + 0x48);
+            uVar10 = (ulonglong)local_138 >> (bVar11 & 0x3f);
+            local_d8 = (uint)uVar10;
+            uVar6 = *(int *)(lVar14 + 0x44) - 1;
+            local_d4 = (uint)((((ulonglong)puVar26 & 0xffffffff) +
+                               ((ulonglong)uVar6 & (ulonglong)local_138) + (ulonglong)uVar6 &
+                              ~(ulonglong)uVar6) >> (bVar11 & 0x3f));
+            uVar6 = *(uint *)(psVar19 + 0x6a);
+            puVar12 = (undefined8 *)(ulonglong)uVar6;
+            if ((uVar6 >> 0xd & 1) == 0) {
+              if ((*(longlong *)(lVar14 + 0x160) != 0) ||
+                 ((*(uint *)(lVar14 + 0x30) >> 0x1d & 1) != 0)) {
+                if (((uVar6 & 2) != 0) && (local_154 == '\0')) {
+                  local_d8 = 0;
+                  local_d4 = *(uint *)(lVar14 + 0x50);
+                  uVar10 = 0;
+                }
+                puVar23 = (undefined8 *)(uVar10 & 0xffffffff);
+                puVar12 = param_1;
+                local_150 = UdfSeqCacheReserveFileRegion
+                                      ((longlong)param_1,(longlong)psVar19,(int)uVar10,local_d4,
+                                       (uint *)0x0,'\x01',
+                                       (byte)(*(uint *)((longlong)param_1 + 0x1c) >> 4) & 1);
+                goto LAB_8;
+              }
             }
             else {
-              local_138[0] = local_138[0] - *(uint *)(psVar24 + 0xa4);
-              uVar13 = (ulonglong)local_138[0];
-            }
-            uVar8 = (uint)uVar13;
-            if (uVar8 != 0) {
-              ExAcquireFastMutexUnsafe(lVar17 + 0x630);
-              *(void **)(lVar17 + 0x668) = SystemReserved1[0xf];
-              uVar7 = UdfAvailableFreeBlocks(lVar17,0);
-              if (uVar7 < uVar8) {
-                *(undefined8 *)(lVar17 + 0x668) = 0;
-                ExReleaseFastMutexUnsafe();
-                uVar21 = 0xc000007f;
-                local_170 = 0xc000007f;
-                psVar24 = local_148;
-                puVar15 = local_158;
-                uVar22 = local_f8;
-                goto LAB_3;
-              }
-              *(uint *)(lVar17 + 0x2a0) = *(int *)(lVar17 + 0x2a0) + uVar8;
-              *(undefined8 *)(lVar17 + 0x668) = 0;
-              ExReleaseFastMutexUnsafe(lVar17 + 0x630);
-              iVar10 = *(int *)(psVar24 + 0xa4);
-              *(uint *)(psVar24 + 0xa4) = iVar10 + uVar8;
+              puVar23 = (undefined8 *)(uVar10 & 0xffffffff);
+              puVar12 = param_1;
+              local_150 = UdfProcessHolesInFileRegion
+                                    (param_1,psVar19,local_d8,local_d4,'\0','\0',(undefined8 *)0x0,
+                                     (char *)0x0);
+LAB_8:
+              uVar17 = (ulonglong)local_150;
+            }
+            puVar13 = local_140;
+            if ((int)uVar17 < 0) goto LAB_1;
+            if (local_154 != '\0') {
+              lVar18 = *(longlong *)(psVar19 + 0x14);
+              puVar23 = local_140;
+              UdfDeEmbedFileData(puVar12,psVar19,local_140,lVar18 != 0);
+              cVar5 = (char)local_148;
+              if ((((char)local_148 != '\0') && (lVar18 != 0)) && ((longlong)local_138 < 0x1000)) {
+                local_14b = 0;
+                cVar5 = '\0';
+                if (local_158) {
+                  ExReleaseFastMutex(*(undefined8 *)(psVar19 + 0x18));
+                  local_158 = false;
+                }
+              }
+            }
+          }
+          puVar13 = local_140;
+          if (cVar5 == '\0') {
+            if (local_140[6] == 0) {
+              if (!local_158) {
+                ExAcquireFastMutex(*(undefined8 *)(psVar19 + 0x18));
+              }
+              CcInitializeCacheMap(puVar13,psVar19 + 0xc,0,&DAT_9,psVar19);
+              if ((*(uint *)(lVar14 + 0x30) & 0x102) != 0) {
+                CcSetDirtyPageThreshold(puVar13,0x400);
+              }
+              ExReleaseFastMutex(*(undefined8 *)(psVar19 + 0x18));
+              local_158 = false;
+              CcSetReadAheadGranularity(puVar13,0x10000);
+            }
+            if ((*(byte *)((longlong)param_1 + 0x39) & 2) == 0) {
               if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
                  ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-                WPP_SF_D(WPP_GLOBAL_Control[3],0x14,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids
-                         ,iVar10 + uVar8);
-              }
-              uVar21 = (ulonglong)local_170;
-              local_168 = (uint)CONCAT71((int7)(uVar13 >> 8),local_16c);
-              local_140 = local_f8;
-              psVar24 = local_148;
-              uVar22 = local_f8;
-              uVar7 = local_168;
-            }
-          }
-          *(undefined **)(psVar24 + 0x10) = (undefined *)((longlong)local_160 + uVar22);
-          uVar8 = *(int *)(lVar17 + 0x44) - 1;
-          uVar13 = (ulonglong)((undefined *)((longlong)local_160 + uVar22) + uVar8) &
-                   ~(ulonglong)uVar8;
-          if ((longlong)*(ulonglong *)(psVar24 + 0xc) < (longlong)uVar13) {
-            *(ulonglong *)(psVar24 + 0xc) = uVar13;
-          }
-          bVar2 = true;
-          if ((local_158[5] != 0) && (*(longlong *)(local_158[5] + 8) != 0)) {
-            CcSetFileSizes();
-          }
-        }
-      }
-      else {
-        lVar23 = *(longlong *)(psVar24 + 0x10);
-        puVar26 = local_160;
-        puVar15 = local_158;
-        if (lVar23 <= (longlong)local_160) goto LAB_3;
-        if (lVar23 < (longlong)((longlong)local_160 + uVar22)) {
-          uVar22 = lVar23 - (longlong)local_160;
-          local_140 = uVar22;
-          local_f8 = uVar22;
-        }
-      }
-      cVar6 = (char)uVar7;
-      if (cVar6 == '\0') {
-        ExReleaseFastMutex(*(undefined8 *)local_e0);
-      }
-      local_178 = cVar6 != '\0';
-      local_f0 = (undefined *)((longlong)local_160 + uVar22);
-      puVar26 = local_160;
-      if (bVar28 == 0) {
-        bVar14 = (byte)*(undefined4 *)(lVar17 + 0x48);
-        uVar13 = (ulonglong)local_160 >> (bVar14 & 0x3f);
-        local_d4 = (uint)uVar13;
-        uVar8 = *(int *)(lVar17 + 0x44) - 1;
-        local_d8 = (uint)(((uVar22 & 0xffffffff) +
-                           ((ulonglong)uVar8 & (ulonglong)local_160) + (ulonglong)uVar8 &
-                          ~(ulonglong)uVar8) >> (bVar14 & 0x3f));
-        uVar8 = *local_110;
-        puVar16 = (undefined8 *)(ulonglong)uVar8;
-        if ((uVar8 >> 0xd & 1) == 0) {
-          if ((*(longlong *)(lVar17 + 0x160) != 0) || ((*(uint *)(lVar17 + 0x30) >> 0x1d & 1) != 0))
-          {
-            if (((uVar8 & 2) != 0) && (local_174 == '\0')) {
-              local_d4 = 0;
-              local_d8 = *(uint *)(lVar17 + 0x50);
-              uVar13 = 0;
-            }
-            puVar26 = (undefined8 *)(uVar13 & 0xffffffff);
-            puVar16 = param_1;
-            local_170 = UdfSeqCacheReserveFileRegion
-                                  ((longlong)param_1,(longlong)psVar24,(int)uVar13,local_d8,
-                                   (uint *)0x0,'\x01',(byte)(*local_130 >> 4) & 1);
-            goto LAB_5;
-          }
-        }
-        else {
-          puVar26 = (undefined8 *)(uVar13 & 0xffffffff);
-          puVar16 = param_1;
-          local_170 = UdfProcessHolesInFileRegion
-                                (param_1,psVar24,local_d4,local_d8,'\0','\0',(undefined8 *)0x0,
-                                 (char *)0x0);
-LAB_5:
-          uVar21 = (ulonglong)local_170;
-        }
-        puVar15 = local_158;
-        if ((int)uVar21 < 0) goto LAB_3;
-        if (local_174 != '\0') {
-          lVar23 = *(longlong *)(psVar24 + 0x14);
-          puVar26 = local_158;
-          UdfDeEmbedFileData(puVar16,psVar24,local_158,lVar23 != 0);
-          uVar7 = local_168;
-          if ((((char)local_168 != '\0') && (lVar23 != 0)) && ((longlong)local_160 < 0x1000)) {
-            local_16c = 0;
-            uVar7 = 0;
-            if (local_178) {
-              ExReleaseFastMutex(*(undefined8 *)local_e0);
-              local_178 = false;
-            }
-          }
-        }
-        cVar6 = (char)uVar7;
-      }
-      puVar15 = local_158;
-      if (cVar6 == '\0') {
-        if (local_158[6] == 0) {
-          if (!local_178) {
-            ExAcquireFastMutex(*(undefined8 *)local_e0);
-          }
-          CcInitializeCacheMap(puVar15,psVar24 + 0xc,0,&DAT_6,psVar24);
-          if ((*(uint *)(lVar17 + 0x30) & 0x102) != 0) {
-            CcSetDirtyPageThreshold(puVar15,0x400);
-          }
-          ExReleaseFastMutex(*(undefined8 *)(psVar24 + 0x18));
-          local_178 = false;
-          CcSetReadAheadGranularity(puVar15,0x10000);
-        }
-        if ((*(byte *)((longlong)param_1 + 0x39) & 2) == 0) {
-          if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-             ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-            WPP_SF_ii(WPP_GLOBAL_Control[3],0x16,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids,
-                      local_160);
-          }
-          lVar17 = UdfMapUserBuffer((longlong)param_1,param_2);
-          puVar26 = (undefined8 *)(uVar22 & 0xffffffff);
-          cVar6 = CcCopyWrite(puVar15,&local_160,puVar26,local_176,lVar17);
-          if (cVar6 != '\0') goto LAB_7;
-          if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-             ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) != 0)) {
-            puVar26 = (undefined8 *)&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids;
-            WPP_SF_(WPP_GLOBAL_Control[3],0x17,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids);
-          }
-          uVar21 = 0xc00000d8;
-          local_170 = 0xc00000d8;
-        }
-        else {
-          if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-             ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) != 0)) {
-            WPP_SF_(WPP_GLOBAL_Control[3],0x15,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids);
-          }
-          puVar26 = (undefined8 *)(uVar22 & 0xffffffff);
-          CcPrepareMdlWrite(puVar15,&local_160,puVar26,param_2 + 8,(uint *)(param_2 + 0x30));
-          local_170 = *(uint *)(param_2 + 0x30);
-          uVar21 = (ulonglong)local_170;
-          if (-1 < (int)local_170) {
-LAB_7:
-            bVar2 = false;
-          }
-        }
-      }
-      else {
-        uVar7 = *(int *)(lVar17 + 0x44) - 1;
-        local_168 = *(int *)(lVar17 + 0x44) + -1 + (int)uVar22 & ~uVar7;
-        if (((bVar27 & 1) == 0) &&
-           ((puVar26 = local_160, ((ulonglong)local_160 & (ulonglong)uVar7) != 0 ||
-            ((local_168 != uVar22 &&
-             ((longlong)((longlong)local_160 + uVar22) < *(longlong *)(psVar24 + 0x14))))))) {
-          if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-             ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) != 0)) {
-            puVar26 = (undefined8 *)&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids;
-            WPP_SF_(WPP_GLOBAL_Control[3],0x18,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids);
-          }
-          uVar21 = 0xc0000010;
-          goto LAB_2;
-        }
-        local_128 = *(longlong *)(psVar24 + 0x10);
-        ExReleaseFastMutex(*(undefined8 *)(psVar24 + 0x18));
-        local_178 = false;
-        UdfLockUserBuffer((longlong)param_1,(ulonglong)*(uint *)(local_108 + 8),puVar26,0);
-        local_120 = (undefined *)UdfMapUserBuffer((longlong)param_1,param_2);
-        uVar7 = 0xffffffff;
-        local_150[0] = 0xffffffff;
-        uVar8 = 0;
-        local_130 = (uint *)((ulonglong)local_130 & 0xffffffff00000000);
-        if (((local_16a == '\0') && ((*(byte *)(*(longlong *)(lVar17 + 0x10) + 6) & 2) == 0)) &&
-           ((*(uint *)(lVar17 + 0x30) & 0x20000000) == 0)) {
-          if (((*(uint *)(psVar24 + 0x6a) & 0x2002) == 0) &&
-             (uVar22 = (ulonglong)(*(int *)(lVar17 + 0x44) - 1),
-             *(uint *)(psVar24 + 0x94) <
-             (uint)(((ulonglong)(local_f0 + uVar22) & ~uVar22) >>
-                   ((byte)*(undefined4 *)(lVar17 + 0x48) & 0x3f)))) {
-            puVar26 = (undefined8 *)0x0;
-            UdfAcquireResource((longlong)param_1,*(undefined8 *)(psVar24 + 8),'\0',0);
-            local_res20[0] = '\x01';
-            if (local_176 == false) {
-              uVar21 = 0xc00000d8;
-              local_170 = 0xc00000d8;
-              puVar15 = local_158;
-              uVar22 = local_140;
-              goto LAB_3;
-            }
-            UdfGetBlocksNeeded(lVar17,(longlong)psVar24,&local_128,(int *)local_138,(int *)0x0,
-                               (int *)0x0,(int *)0x0,&local_174);
-            if ((local_138[0] != 0) &&
-               (UdfAllocateAtFileTail(param_1,psVar24,(ulonglong)local_138[0],&local_128),
-               *(longlong *)(psVar24 + 0x98) < (longlong)local_f0)) {
-              *(longlong *)(psVar24 + 0x98) = local_128;
-            }
-          }
-          if ((*(uint *)(psVar24 + 0x6a) & 0x2000) != 0) {
-            uVar9 = *(int *)(lVar17 + 0x44) - 1;
-            bVar27 = (byte)*(undefined4 *)(lVar17 + 0x48);
-            puVar26 = (undefined8 *)((ulonglong)local_160 >> (bVar27 & 0x3f));
-            local_170 = UdfProcessHolesInFileRegion
-                                  (param_1,psVar24,(uint)puVar26,
-                                   (uint)(((ulonglong)local_168 +
-                                           ((ulonglong)uVar9 & (ulonglong)local_160) +
-                                           (ulonglong)uVar9 & ~(ulonglong)uVar9) >> (bVar27 & 0x3f))
-                                   ,'\0','\x01',&local_128,local_res20);
-            uVar21 = (ulonglong)local_170;
-            if ((int)local_170 < 0) {
-              puVar15 = local_158;
-              uVar22 = local_140;
+                WPP_SF_ii(WPP_GLOBAL_Control[3],0x16,
+                          &WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,local_138);
+              }
+              lVar14 = UdfMapUserBuffer((longlong)param_1,param_2);
+              puVar23 = (undefined8 *)((ulonglong)puVar26 & 0xffffffff);
+              cVar5 = CcCopyWrite(puVar13,&local_138,puVar23,local_156,lVar14);
+              if (cVar5 == '\0') {
+                if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+                   ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) != 0)) {
+                  puVar23 = (undefined8 *)&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids;
+                  WPP_SF_(WPP_GLOBAL_Control[3],0x17,
+                          &WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids);
+                }
+                uVar17 = 0xc00000d8;
+                local_150 = 0xc00000d8;
+              }
+              else {
+                bVar2 = false;
+              }
+            }
+            else {
               if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
                  ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) != 0)) {
-                puVar26 = (undefined8 *)&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids;
-                WPP_SF_D(WPP_GLOBAL_Control[3],0x19,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids
-                         ,local_170);
-                puVar15 = local_158;
-                uVar22 = local_140;
-              }
-              goto LAB_3;
-            }
-            if (local_res20[0] == '\0') {
-              UdfAcquireResource((longlong)param_1,*(undefined8 *)(psVar24 + 8),'\0',0);
-              local_res20[0] = '\x01';
-            }
-            if (*(longlong *)(psVar24 + 0x98) < local_128) {
-              *(longlong *)(psVar24 + 0x98) = local_128;
-            }
-          }
-        }
-        puVar25 = local_120;
-        uVar9 = (uint)local_140;
-        local_108 = local_140 & 0xffffffff;
-        *(ulonglong *)(param_2 + 0x38) = local_108;
-        if ((*(uint *)(psVar24 + 0x6a) & 2) != 0) {
-          if ((*(longlong *)(lVar17 + 0x160) != 0) ||
-             (uVar22 = local_140, (*(uint *)(lVar17 + 0x30) >> 0x1d & 1) != 0)) {
-            local_110 = (uint *)((ulonglong)local_110 & 0xffffffff00000000);
-            iVar10 = UdfSeqCacheUnReserveFileRegion
-                               ((longlong)param_1,(longlong)psVar24,0,*(uint *)(lVar17 + 0x50),'\0')
-            ;
-            local_110 = (uint *)CONCAT44(local_110._4_4_,iVar10);
-            if ((*(uint *)(lVar17 + 0x30) & 0x20000000) == 0) {
-              lVar23 = *(longlong *)(lVar17 + 0x160);
-            }
-            else {
-              lVar23 = *(longlong *)(lVar17 + 0x140);
-            }
-            UdfSeqCacheReserveFileRegion
-                      ((longlong)param_1,lVar23,*(uint *)(lVar17 + 0x4c) & *(uint *)(psVar24 + 0x5c)
-                       ,*(uint *)(lVar17 + 0x50),(uint *)&local_110,'\0',
-                       (byte)(*(uint *)((longlong)param_1 + 0x1c) >> 4) & 1);
-            uVar22 = local_140;
-            if ((int)local_110 != 0) {
-              ExAcquireFastMutexUnsafe(param_1[2] + 0x630);
-              *(void **)(param_1[2] + 0x668) = SystemReserved1[0xf];
-              *(int *)(param_1[2] + 0x2a0) = *(int *)(param_1[2] + 0x2a0) - (int)local_110;
-              *(undefined8 *)(param_1[2] + 0x668) = 0;
-              ExReleaseFastMutexUnsafe(param_1[2] + 0x630);
-              uVar21 = (ulonglong)local_170;
-              psVar24 = local_148;
-              uVar22 = local_f8;
-            }
-          }
-          if (psVar24 == *(short **)(lVar17 + 0x158)) {
-            puVar26 = (undefined8 *)(uVar22 & 0xffffffff);
-            memmove((undefined *)
-                    ((longlong)local_160 +
-                    *(longlong *)(lVar17 + 0x1d0) + (ulonglong)*(uint *)(psVar24 + 0x70)),local_120,
-                    (size_t)puVar26);
-            *(undefined8 *)(*(longlong *)(lVar17 + 0x1d0) + 0x38) = *(undefined8 *)(psVar24 + 0x10);
-            psVar20 = *(short **)(lVar17 + 0x1d0);
-            if (*psVar20 == 0x10a) {
-              *(undefined4 *)(psVar20 + 0x6a) = *(undefined4 *)(psVar24 + 0x10);
-            }
-            else {
-              *(undefined4 *)(psVar20 + 0x56) = *(undefined4 *)(psVar24 + 0x10);
-            }
-            puVar15 = local_158;
+                WPP_SF_(WPP_GLOBAL_Control[3],0x15,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids)
+                ;
+              }
+              puVar23 = (undefined8 *)((ulonglong)puVar26 & 0xffffffff);
+              CcPrepareMdlWrite(puVar13,&local_138,puVar23,param_2 + 8,(uint *)(param_2 + 0x30));
+              local_150 = *(uint *)(param_2 + 0x30);
+              uVar17 = (ulonglong)local_150;
+              if (-1 < (int)local_150) {
+                bVar2 = false;
+              }
+            }
+            goto LAB_1;
+          }
+          uVar6 = *(int *)(lVar14 + 0x44) - 1;
+          local_148 = *(int *)(lVar14 + 0x44) + -1 + uVar25 & ~uVar6;
+          if (((bVar20 & 1) == 0) &&
+             ((puVar23 = local_138, ((ulonglong)local_138 & (ulonglong)uVar6) != 0 ||
+              (((undefined8 *)(ulonglong)local_148 != puVar26 &&
+               ((longlong)((longlong)local_138 + (longlong)puVar26) < *(longlong *)(psVar19 + 0x14))
+               ))))) {
             if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
                ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) != 0)) {
-              uVar18 = 0x1a;
-              goto LAB_4;
-            }
+              puVar23 = (undefined8 *)&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids;
+              WPP_SF_(WPP_GLOBAL_Control[3],0x18,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids);
+            }
+            uVar17 = 0xc0000010;
+            goto LAB_10;
+          }
+          local_118 = *(ulonglong *)(psVar19 + 0x10);
+          ExReleaseFastMutex(*(undefined8 *)(psVar19 + 0x18));
+          local_158 = false;
+          UdfLockUserBuffer((longlong)param_1,(ulonglong)*(uint *)(local_f8 + 8),puVar23,0);
+          local_128 = (undefined *)UdfMapUserBuffer((longlong)param_1,param_2);
+          puVar12 = (undefined8 *)0xffffffff;
+          local_110 = CONCAT44(local_110._4_4_,0xffffffff);
+          local_12c = 0;
+          if (((local_14a == '\0') && ((*(byte *)(*(longlong *)(lVar14 + 0x10) + 6) & 2) == 0)) &&
+             ((*(uint *)(lVar14 + 0x30) & 0x20000000) == 0)) {
+            if (((*(uint *)(psVar19 + 0x6a) & 0x2002) == 0) &&
+               (uVar10 = (ulonglong)(*(int *)(lVar14 + 0x44) - 1),
+               *(uint *)(psVar19 + 0x94) <
+               (uint)(((ulonglong)(local_e8 + uVar10) & ~uVar10) >>
+                     ((byte)*(undefined4 *)(lVar14 + 0x48) & 0x3f)))) {
+              puVar23 = (undefined8 *)0x0;
+              UdfAcquireResource((longlong)param_1,*(undefined8 *)(psVar19 + 8),'\0',0);
+              local_res20[0] = '\x01';
+              if (local_156 == false) {
+                uVar17 = 0xc00000d8;
+                local_150 = 0xc00000d8;
+                puVar13 = local_140;
+                goto LAB_1;
+              }
+              UdfGetBlocksNeeded(lVar14,(longlong)psVar19,&local_118,(int *)&local_100,(int *)0x0,
+                                 (int *)0x0,(int *)0x0,&local_154);
+              if (((int)local_100 != 0) &&
+                 (UdfAllocateAtFileTail(param_1,psVar19,local_100 & 0xffffffff,&local_118),
+                 *(longlong *)(psVar19 + 0x98) < (longlong)local_e8)) {
+                *(ulonglong *)(psVar19 + 0x98) = local_118;
+              }
+            }
+            if ((*(uint *)(psVar19 + 0x6a) & 0x2000) != 0) {
+              uVar6 = *(int *)(lVar14 + 0x44) - 1;
+              bVar20 = (byte)*(undefined4 *)(lVar14 + 0x48);
+              puVar23 = (undefined8 *)((ulonglong)local_138 >> (bVar20 & 0x3f));
+              local_150 = UdfProcessHolesInFileRegion
+                                    (param_1,psVar19,(uint)puVar23,
+                                     (uint)(((ulonglong)local_148 +
+                                             ((ulonglong)uVar6 & (ulonglong)local_138) +
+                                             (ulonglong)uVar6 & ~(ulonglong)uVar6) >>
+                                           (bVar20 & 0x3f)),'\0','\x01',&local_118,local_res20);
+              uVar17 = (ulonglong)local_150;
+              if ((int)local_150 < 0) {
+                puVar13 = local_140;
+                if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+                   ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) != 0)) {
+                  puVar23 = (undefined8 *)&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids;
+                  WPP_SF_D(WPP_GLOBAL_Control[3],0x19,
+                           &WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,local_150);
+                  puVar13 = local_140;
+                }
+                goto LAB_1;
+              }
+              if (local_res20[0] == '\0') {
+                UdfAcquireResource((longlong)param_1,*(undefined8 *)(psVar19 + 8),'\0',0);
+                local_res20[0] = '\x01';
+              }
+              if (*(longlong *)(psVar19 + 0x98) < (longlong)local_118) {
+                *(ulonglong *)(psVar19 + 0x98) = local_118;
+              }
+            }
+          }
+          local_100 = (ulonglong)puVar26 & 0xffffffff;
+          *(ulonglong *)(param_2 + 0x38) = local_100;
+          if ((*(uint *)(psVar19 + 0x6a) & 2) != 0) {
+            if ((*(longlong *)(lVar14 + 0x160) != 0) ||
+               ((*(uint *)(lVar14 + 0x30) >> 0x1d & 1) != 0)) {
+              local_f8 = local_f8 & 0xffffffff00000000;
+              iVar7 = UdfSeqCacheUnReserveFileRegion
+                                ((longlong)param_1,(longlong)psVar19,0,*(uint *)(lVar14 + 0x50),'\0'
+                                );
+              local_f8 = CONCAT44(local_f8._4_4_,iVar7);
+              if ((*(uint *)(lVar14 + 0x30) & 0x20000000) == 0) {
+                lVar18 = *(longlong *)(lVar14 + 0x160);
+              }
+              else {
+                lVar18 = *(longlong *)(lVar14 + 0x140);
+              }
+              UdfSeqCacheReserveFileRegion
+                        ((longlong)param_1,lVar18,
+                         *(uint *)(lVar14 + 0x4c) & *(uint *)(psVar19 + 0x5c),
+                         *(uint *)(lVar14 + 0x50),(uint *)&local_f8,'\0',
+                         (byte)(*(uint *)((longlong)param_1 + 0x1c) >> 4) & 1);
+              if ((int)local_f8 != 0) {
+                ExAcquireFastMutexUnsafe(param_1[2] + 0x630);
+                *(void **)(param_1[2] + 0x668) = SystemReserved1[0xf];
+                *(int *)(param_1[2] + 0x2a0) = *(int *)(param_1[2] + 0x2a0) - (int)local_f8;
+                *(undefined8 *)(param_1[2] + 0x668) = 0;
+                ExReleaseFastMutexUnsafe(param_1[2] + 0x630);
+                uVar17 = (ulonglong)local_150;
+                psVar19 = local_120;
+                puVar26 = local_f0;
+              }
+            }
+            if (psVar19 == *(short **)(lVar14 + 0x158)) {
+              puVar23 = (undefined8 *)((ulonglong)puVar26 & 0xffffffff);
+              memmove((undefined *)
+                      ((ulonglong)*(uint *)(psVar19 + 0x70) + *(longlong *)(lVar14 + 0x1d0) +
+                      (longlong)local_138),local_128,(size_t)puVar23);
+              *(undefined8 *)(*(longlong *)(lVar14 + 0x1d0) + 0x38) =
+                   *(undefined8 *)(psVar19 + 0x10);
+              psVar27 = *(short **)(lVar14 + 0x1d0);
+              if (*psVar27 == 0x10a) {
+                *(undefined4 *)(psVar27 + 0x6a) = *(undefined4 *)(psVar19 + 0x10);
+              }
+              else {
+                *(undefined4 *)(psVar27 + 0x56) = *(undefined4 *)(psVar19 + 0x10);
+              }
+              puVar13 = local_140;
+              if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+                 ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) >> 0x1a & 1) != 0)) {
+                uVar15 = 0x1a;
+                goto LAB_2;
+              }
+            }
+            else {
+              local_a8 = (undefined *)0x0;
+              uStack_c8 = 0;
+              UdfPrepareModifyIcbForScb((longlong)param_1,(longlong)psVar19,&local_d0);
+              psVar27 = local_d0;
+              uVar10 = (ulonglong)puVar26 & 0xffffffff;
+              memmove((undefined *)
+                      ((ulonglong)*(uint *)(psVar19 + 0x70) + (longlong)local_d0 +
+                      (longlong)local_138),local_128,uVar10);
+              local_e8 = (undefined *)
+                         (*(longlong *)(psVar19 + 0x10) - *(longlong *)(psVar27 + 0x1c));
+              *(longlong *)(psVar27 + 0x1c) = *(longlong *)(psVar19 + 0x10);
+              if (*psVar27 == 0x10a) {
+                *(undefined4 *)(psVar27 + 0x6a) = *(undefined4 *)(psVar19 + 0x10);
+                *(undefined **)(psVar27 + 0x20) = local_e8 + *(longlong *)(psVar27 + 0x20);
+              }
+              else {
+                *(undefined4 *)(psVar27 + 0x56) = *(undefined4 *)(psVar19 + 0x10);
+              }
+              puVar23 = (undefined8 *)CONCAT71((int7)(uVar10 >> 8),1);
+              local_a8 = local_e8;
+              UdfFinishModifyIcb(param_1,&local_d0,'\x01',psVar19);
+              UdfUnpinView((longlong)param_1,&local_d0);
+              puVar22 = local_e8;
+              bVar2 = false;
+              if (((local_e8 != (undefined *)0x0) && ((*(uint *)(psVar19 + 0x6a) & 0x10) != 0)) &&
+                 (*(longlong *)(*(longlong *)(psVar19 + 0x44) + 0x10) !=
+                  *(longlong *)(lVar14 + 0x130))) {
+                UdfPrepareModifyIcbForScb
+                          ((longlong)param_1,*(longlong *)(*(longlong *)(psVar19 + 0x44) + 0x10),
+                           &local_d0);
+                *(undefined **)(local_d0 + 0x20) = puVar22 + *(longlong *)(local_d0 + 0x20);
+                puVar23 = (undefined8 *)0x1;
+                UdfFinishModifyIcb(param_1,&local_d0,'\x01',
+                                   *(short **)(*(longlong *)(psVar19 + 0x44) + 0x10));
+              }
+              *(uint *)(psVar19 + 0x6a) = *(uint *)(psVar19 + 0x6a) | 0x2000000;
+              puVar13 = local_140;
+            }
+            goto LAB_1;
+          }
+          if ((*(byte *)(*(longlong *)(lVar14 + 0x10) + 6) & 2) == 0) {
+            if ((psVar19 == *(short **)(lVar14 + 0x140)) &&
+               ((*(uint *)(lVar14 + 0x30) & 0x8000000) != 0)) {
+              CcCopyWrite(*(undefined8 *)(*(longlong *)(lVar14 + 0x148) + 0x1f8),&local_138,
+                          (ulonglong)puVar26 & 0xffffffff,1,local_128);
+            }
+            *(uint *)(param_1[5] + 0x38) = uVar25;
+            if ((*(uint *)(lVar14 + 0x30) & 0x20000000) != 0) goto LAB_11;
+            puVar23 = local_138;
+            uVar25 = UdfNonCachedIo(param_1,psVar19,(ulonglong)local_138,uVar25,local_128,
+                                    (uint *)&local_110,&local_12c);
+            puVar12 = (undefined8 *)(local_110 & 0xffffffff);
           }
           else {
-            local_a8 = 0;
-            uStack_c8 = 0;
-            UdfPrepareModifyIcbForScb((longlong)param_1,(longlong)psVar24,&local_d0);
-            psVar20 = local_d0;
-            uVar13 = uVar22 & 0xffffffff;
-            memmove((undefined *)
-                    ((ulonglong)*(uint *)(psVar24 + 0x70) + (longlong)local_d0 + (longlong)local_160
-                    ),local_120,uVar13);
-            local_108 = *(longlong *)(psVar24 + 0x10) - *(longlong *)(psVar20 + 0x1c);
-            *(longlong *)(psVar20 + 0x1c) = *(longlong *)(psVar24 + 0x10);
-            if (*psVar20 == 0x10a) {
-              *(undefined4 *)(psVar20 + 0x6a) = *(undefined4 *)(psVar24 + 0x10);
-              *(ulonglong *)(psVar20 + 0x20) = local_108 + *(longlong *)(psVar20 + 0x20);
-            }
-            else {
-              *(undefined4 *)(psVar20 + 0x56) = *(undefined4 *)(psVar24 + 0x10);
-            }
-            puVar26 = (undefined8 *)CONCAT71((int7)(uVar13 >> 8),1);
-            local_a8 = local_108;
-            UdfFinishModifyIcb(param_1,&local_d0,'\x01',psVar24);
-            UdfUnpinView((longlong)param_1,&local_d0);
-            uVar13 = local_108;
-            bVar2 = false;
-            if (((local_108 != 0) && ((*(uint *)(psVar24 + 0x6a) & 0x10) != 0)) &&
-               (*(longlong *)(*(longlong *)(psVar24 + 0x44) + 0x10) != *(longlong *)(lVar17 + 0x130)
-               )) {
-              UdfPrepareModifyIcbForScb
-                        ((longlong)param_1,*(longlong *)(*(longlong *)(psVar24 + 0x44) + 0x10),
-                         &local_d0);
-              *(ulonglong *)(local_d0 + 0x20) = *(longlong *)(local_d0 + 0x20) + uVar13;
-              puVar26 = (undefined8 *)0x1;
-              UdfFinishModifyIcb(param_1,&local_d0,'\x01',
-                                 *(short **)(*(longlong *)(psVar24 + 0x44) + 0x10));
-            }
-            *(uint *)(psVar24 + 0x6a) = *(uint *)(psVar24 + 0x6a) | 0x2000000;
-            puVar15 = local_158;
-          }
-          goto LAB_3;
-        }
-        psVar20 = psVar24;
-        if ((*(byte *)(*(longlong *)(lVar17 + 0x10) + 6) & 2) == 0) {
-          if ((psVar24 == *(short **)(lVar17 + 0x140)) &&
-             ((*(uint *)(lVar17 + 0x30) & 0x8000000) != 0)) {
-            CcCopyWrite(*(undefined8 *)(*(longlong *)(lVar17 + 0x148) + 0x1f8),&local_160,
-                        local_140 & 0xffffffff,1,local_120);
-            uVar9 = (uint)local_140;
-          }
-          *(uint *)(param_1[5] + 0x38) = uVar9;
-          if ((*(uint *)(lVar17 + 0x30) & 0x20000000) != 0) goto LAB_8;
-          puVar26 = local_160;
-          uVar9 = UdfNonCachedIo(param_1,psVar24,(ulonglong)local_160,uVar9,puVar25,local_150,
-                                 (uint *)&local_130);
-          uVar7 = local_150[0];
-          uVar8 = (uint)local_130;
-        }
-        else {
-LAB_8:
-          bVar27 = (byte)*(undefined4 *)(lVar17 + 0x48);
-          uVar22 = (ulonglong)local_160 >> (bVar27 & 0x3f);
-          uVar9 = *(int *)(lVar17 + 0x44) - 1;
-          lVar23 = ((ulonglong)uVar9 & (ulonglong)local_160) + local_108;
-          local_108 = uVar22;
-          if (local_res20[0] != '\0') {
-            ExReleaseResourceLite(*(undefined8 *)(psVar24 + 8));
+LAB_11:
+            bVar20 = (byte)*(undefined4 *)(lVar14 + 0x48);
+            local_110 = (ulonglong)local_138 >> (bVar20 & 0x3f);
+            uVar25 = *(int *)(lVar14 + 0x44) - 1;
+            lVar18 = ((ulonglong)uVar25 & (ulonglong)local_138) + local_100;
+            if (local_res20[0] != '\0') {
+              ExReleaseResourceLite(*(undefined8 *)(psVar19 + 8));
+              local_res20[0] = '\0';
+            }
+            puVar23 = (undefined8 *)(local_110 & 0xffffffff);
+            uVar25 = UdfSeqCacheWriteBlocksForFile
+                               ((longlong)param_1,(longlong)psVar19,(uint)local_110,
+                                (uint)((lVar18 + (ulonglong)uVar25 & ~(ulonglong)uVar25) >>
+                                      (bVar20 & 0x3f)));
+            if (-1 < (int)uVar25) {
+              bVar2 = false;
+            }
+          }
+          uVar6 = (uint)puVar12;
+          uVar17 = (ulonglong)uVar25;
+          local_150 = uVar25;
+          if (uVar25 == 0x103) {
+            local_res10 = 0;
+            local_153 = '\0';
             local_res20[0] = '\0';
           }
-          puVar26 = (undefined8 *)(local_108 & 0xffffffff);
-          uVar9 = UdfSeqCacheWriteBlocksForFile
-                            ((longlong)param_1,(longlong)psVar24,(int)local_108,
-                             (uint)((lVar23 + (ulonglong)uVar9 & ~(ulonglong)uVar9) >>
-                                   (bVar27 & 0x3f)));
-          if (-1 < (int)uVar9) {
-            bVar2 = false;
-          }
-        }
-        uVar21 = (ulonglong)uVar9;
-        local_170 = uVar9;
-        if (uVar9 == 0x103) {
-          local_res10 = 0;
-          local_173 = '\0';
-          local_res20[0] = '\0';
-        }
-        else if ((int)uVar9 < 0) {
-          *(undefined8 *)(param_2 + 0x38) = 0;
-          if ((((uVar9 == 0xc00000a2 || uVar9 == 0xc00000a3) || (uVar9 + 0x3fffffee < 3)) ||
-              (uVar9 == 0x80000016)) || (uVar9 == 0xc00000b5)) {
-            IoSetHardErrorOrVerifyDevice
-                      (param_1[1],*(undefined8 *)(*(longlong *)(lVar17 + 8) + 0x10));
+          else if ((int)uVar25 < 0) {
+            *(undefined8 *)(param_2 + 0x38) = 0;
+            if ((((uVar25 + 0x3fffff5e < 2) || (uVar25 == 0xc00000b5)) || (uVar25 + 0x3fffffee < 3))
+               || (uVar25 == 0x80000016)) {
+              IoSetHardErrorOrVerifyDevice
+                        (param_1[1],*(undefined8 *)(*(longlong *)(lVar14 + 8) + 0x10));
                     /* WARNING: Subroutine does not return */
-            UdfRaiseStatusEx((longlong)param_1,uVar9,'\0');
-          }
-          psVar20 = (short *)0xc00000e9;
-          local_170 = FsRtlNormalizeNtstatus();
-          uVar21 = (ulonglong)local_170;
-        }
-        puVar15 = local_158;
-        uVar22 = local_140;
-        if (((local_res10 == 0) || (local_16a != '\0')) ||
-           (((*(byte *)(*(longlong *)(lVar17 + 0x10) + 6) & 2) != 0 ||
-            (((*(uint *)(lVar17 + 0x30) >> 0x1d & 1) != 0 || ((int)uVar21 < 0))))))
-        goto LAB_3;
-        if (local_res20[0] == '\0') {
-          *(uint *)((longlong)param_1 + 0x1c) = *(uint *)((longlong)param_1 + 0x1c) | 4;
-          puVar26 = (undefined8 *)0x0;
-          psVar20 = *(short **)(psVar24 + 8);
-          UdfAcquireResource((longlong)param_1,psVar20,'\0',0);
-          local_res20[0] = '\x01';
-        }
-        if (uVar7 == 0xffffffff) {
-          if ((*(uint *)(psVar24 + 0x96) < *(uint *)(psVar24 + 0x94)) ||
-             ((*(longlong *)(psVar24 + 0x98) != local_128 &&
-              (*(longlong *)(psVar24 + 0x98) <= (longlong)local_f0)))) goto LAB_9;
-        }
-        else {
-          puVar15 = WPP_GLOBAL_Control;
-          if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-             ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-            puVar15 = (undefined8 *)WPP_GLOBAL_Control[3];
-            WPP_SF_qDDDD(puVar15,psVar20,puVar26,psVar24);
-          }
-          puVar26 = (undefined8 *)(ulonglong)uVar7;
-          UdfMarkRegionRecorded((ulonglong)puVar15,(longlong)psVar24,uVar7,uVar8);
-LAB_9:
-          uVar9 = *(uint *)(psVar24 + 0x94);
-          uVar11 = *(uint *)(psVar24 + 0x96);
-          if (uVar11 < uVar9) {
-            if ((uVar11 < uVar7) && (uVar7 = uVar11 - 1, local_150[0] = uVar7, uVar11 == 0)) {
-              uVar7 = 0;
-              local_150[0] = uVar7;
-            }
-            if (uVar8 + 1 < uVar9) {
-              uVar8 = uVar9 - 1;
-              local_130 = (uint *)CONCAT44(local_130._4_4_,uVar8);
-            }
-          }
-          if (*(longlong *)(psVar24 + 0x98) != local_128) {
-            uVar11 = *(int *)(lVar17 + 0x44) - 1;
-            puVar26 = (undefined8 *)(ulonglong)uVar11;
-            bVar27 = (byte)*(undefined4 *)(lVar17 + 0x48);
-            uVar9 = uVar7;
-            if ((int)(((ulonglong)uVar11 + local_128 & ~(ulonglong)uVar11) >> (bVar27 & 0x3f)) ==
-                (int)(((ulonglong)(*(longlong *)(psVar24 + 0x98) + (longlong)puVar26) &
-                      ~(ulonglong)uVar11) >> (bVar27 & 0x3f))) {
-              if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
-                 ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-                puVar26 = (undefined8 *)&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids;
-                WPP_SF_dD(WPP_GLOBAL_Control[3],0x1c,
-                          &WPP_d6a1f992d04636d84452166461d4c91e_Traceguids,uVar7);
-              }
-              uVar9 = (uint)(local_128 - 1U >> ((byte)*(undefined4 *)(lVar17 + 0x48) & 0x3f));
-              uVar11 = uVar9;
-              if (uVar9 < uVar8) {
-                uVar11 = uVar8;
-              }
-              local_130 = (uint *)CONCAT44(local_130._4_4_,uVar11);
-              uVar8 = uVar11;
-              local_150[0] = uVar9;
-              if (uVar7 < uVar9) {
-                uVar9 = uVar7;
-                local_150[0] = uVar7;
-              }
-            }
-            uVar7 = uVar9;
-            *(longlong *)(psVar24 + 0x98) = local_128;
-          }
-          if (uVar7 != 0xffffffff) {
-            puVar26 = (undefined8 *)(ulonglong)uVar7;
-            UdfUpdateAdsFromScb(param_1,psVar24,uVar7,uVar8);
-            *(uint *)(psVar24 + 0x6a) = *(uint *)(psVar24 + 0x6a) | 0x2000000;
-          }
-        }
-        bVar2 = false;
-        puVar15 = local_158;
-        uVar22 = local_140;
-      }
-    }
-  }
-LAB_3:
+              UdfRaiseStatusEx((longlong)param_1,uVar25,'\0');
+            }
+            local_150 = FsRtlNormalizeNtstatus(uVar17,0xc00000e9);
+            uVar17 = (ulonglong)local_150;
+          }
+          puVar13 = local_140;
+          if (((local_res10 == 0) || (local_14a != '\0')) ||
+             (((*(byte *)(*(longlong *)(lVar14 + 0x10) + 6) & 2) != 0 ||
+              (((*(uint *)(lVar14 + 0x30) >> 0x1d & 1) != 0 || ((int)uVar17 < 0))))))
+          goto LAB_1;
+          if (local_res20[0] == '\0') {
+            *(uint *)((longlong)param_1 + 0x1c) = *(uint *)((longlong)param_1 + 0x1c) | 4;
+            puVar23 = (undefined8 *)0x0;
+            UdfAcquireResource((longlong)param_1,*(undefined8 *)(psVar19 + 8),'\0',0);
+            local_res20[0] = '\x01';
+          }
+          if (uVar6 == 0xffffffff) {
+            if ((*(uint *)(psVar19 + 0x96) < *(uint *)(psVar19 + 0x94)) ||
+               ((*(ulonglong *)(psVar19 + 0x98) != local_118 &&
+                ((longlong)*(ulonglong *)(psVar19 + 0x98) <= (longlong)local_e8))))
+            goto LAB_12;
+          }
+          else {
+            puVar13 = WPP_GLOBAL_Control;
+            if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+               ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
+              puVar13 = (undefined8 *)WPP_GLOBAL_Control[3];
+              WPP_SF_qDDDD(puVar13,0xffffffff,puVar23,psVar19);
+            }
+            UdfMarkRegionRecorded((ulonglong)puVar13,(longlong)psVar19,uVar6,local_12c);
+            puVar23 = puVar12;
+LAB_12:
+            uVar25 = *(uint *)(psVar19 + 0x94);
+            uVar24 = *(uint *)(psVar19 + 0x96);
+            if (uVar24 < uVar25) {
+              if (uVar24 < uVar6) {
+                uVar6 = uVar24 - 1;
+                if (uVar24 == 0) {
+                  uVar6 = 0;
+                }
+                local_110 = CONCAT44(local_110._4_4_,uVar6);
+              }
+              if (local_12c + 1 < uVar25) {
+                local_12c = uVar25 - 1;
+              }
+            }
+            if (*(ulonglong *)(psVar19 + 0x98) != local_118) {
+              uVar25 = *(int *)(lVar14 + 0x44) - 1;
+              puVar23 = (undefined8 *)(ulonglong)uVar25;
+              bVar20 = (byte)*(undefined4 *)(lVar14 + 0x48);
+              if ((int)((uVar25 + local_118 & ~(ulonglong)uVar25) >> (bVar20 & 0x3f)) ==
+                  (int)(((ulonglong)(*(ulonglong *)(psVar19 + 0x98) + (longlong)puVar23) &
+                        ~(ulonglong)uVar25) >> (bVar20 & 0x3f))) {
+                if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
+                   ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
+                  puVar23 = (undefined8 *)&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids;
+                  WPP_SF_dD(WPP_GLOBAL_Control[3],0x1c,
+                            &WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,uVar6);
+                }
+                uVar24 = (uint)(local_118 - 1 >> ((byte)*(undefined4 *)(lVar14 + 0x48) & 0x3f));
+                uVar25 = uVar24;
+                if (uVar24 < local_12c) {
+                  uVar25 = local_12c;
+                }
+                if (uVar6 < uVar24) {
+                  uVar24 = uVar6;
+                }
+                local_110 = CONCAT44(local_110._4_4_,uVar24);
+                uVar6 = uVar24;
+                local_12c = uVar25;
+              }
+              *(ulonglong *)(psVar19 + 0x98) = local_118;
+            }
+            if (uVar6 != 0xffffffff) {
+              puVar23 = (undefined8 *)(ulonglong)uVar6;
+              UdfUpdateAdsFromScb(param_1,psVar19,uVar6,local_12c);
+              *(uint *)(psVar19 + 0x6a) = *(uint *)(psVar19 + 0x6a) | 0x2000000;
+            }
+          }
+          bVar2 = false;
+          puVar13 = local_140;
+          goto LAB_1;
+        }
+      }
+LAB_5:
+      uVar17 = 0xc000000d;
+    }
+LAB_10:
+    local_150 = (uint)uVar17;
+    puVar13 = local_140;
+  }
+LAB_1:
   if (local_res10 != 0) {
-    *(ulonglong *)(local_res10 + 0x38) = uVar22 & 0xffffffff;
-    *(int *)(local_res10 + 0x30) = (int)uVar21;
-  }
-  if (-1 < (int)uVar21) {
+    *(ulonglong *)(local_res10 + 0x38) = (ulonglong)puVar26 & 0xffffffff;
+    *(int *)(local_res10 + 0x30) = (int)uVar17;
+  }
+  if (-1 < (int)uVar17) {
     if (local_res10 != 0) {
-      if (bVar28 != 0) goto LAB_10;
-      uVar7 = *(uint *)(puVar15 + 10);
-      *(uint *)(puVar15 + 10) = uVar7 | 0x1000;
-      if (local_175 != '\0') {
-        *(uint *)(puVar15 + 10) = uVar7 | 0x3000;
-      }
-      if (local_164 != 0) {
-        puVar15[0xd] = (undefined *)(*(longlong *)(local_res10 + 0x38) + (longlong)local_160);
-      }
-    }
-    if (bVar28 == 0) {
-      if (!local_178) {
-        ExAcquireFastMutex(*(undefined8 *)(psVar24 + 0x18));
-        local_178 = true;
-      }
-      psVar24 = local_148;
+      if (bVar21 != 0) goto LAB_13;
+      uVar25 = *(uint *)(puVar13 + 10);
+      *(uint *)(puVar13 + 10) = uVar25 | 0x1000;
+      if (local_155 != '\0') {
+        *(uint *)(puVar13 + 10) = uVar25 | 0x3000;
+      }
+      if (local_130 != 0) {
+        puVar13[0xd] = (undefined *)(*(longlong *)(local_res10 + 0x38) + (longlong)local_138);
+      }
+    }
+    if (bVar21 == 0) {
+      if (!local_158) {
+        ExAcquireFastMutex(*(undefined8 *)(psVar19 + 0x18));
+        local_158 = true;
+      }
+      psVar19 = local_120;
       pvVar3 = SystemReserved1[0xf];
-      lVar17 = *(longlong *)(local_148 + 0x44);
-      if (SystemReserved1[0xf] != *(void **)(lVar17 + 0x40)) {
-        lVar17 = *(longlong *)(lVar17 + 0x50) + 0xd8;
+      lVar14 = *(longlong *)(local_120 + 0x44);
+      if (SystemReserved1[0xf] != *(void **)(lVar14 + 0x40)) {
+        lVar14 = *(longlong *)(lVar14 + 0x50) + 0xd8;
         ExAcquireFastMutex();
-        *(void **)(*(longlong *)(psVar24 + 0x44) + 0x40) = pvVar3;
-      }
-      *(int *)(*(longlong *)(psVar24 + 0x44) + 0x48) =
-           *(int *)(*(longlong *)(psVar24 + 0x44) + 0x48) + 1;
-      *(uint *)(psVar24 + 0x6a) = *(uint *)(psVar24 + 0x6a) | 0x10000;
-      *(uint *)(psVar24 + 0x6e) = *(uint *)(psVar24 + 0x6e) | 0x20;
-      puVar26 = local_118;
-      UdfUpdateScbTimeStamps(lVar17,(longlong)psVar24,(longlong)local_118);
-      *(int *)(*(longlong *)(psVar24 + 0x44) + 0x48) =
-           *(int *)(*(longlong *)(psVar24 + 0x44) + 0x48) + -1;
-      if (*(int *)(*(longlong *)(psVar24 + 0x44) + 0x48) == 0) {
-        *(undefined8 *)(*(longlong *)(psVar24 + 0x44) + 0x40) = 0;
-        ExReleaseFastMutex(*(longlong *)(*(longlong *)(psVar24 + 0x44) + 0x50) + 0xd8);
-        uVar21 = (ulonglong)local_170;
+        *(void **)(*(longlong *)(psVar19 + 0x44) + 0x40) = pvVar3;
+      }
+      *(int *)(*(longlong *)(psVar19 + 0x44) + 0x48) =
+           *(int *)(*(longlong *)(psVar19 + 0x44) + 0x48) + 1;
+      *(uint *)(psVar19 + 0x6a) = *(uint *)(psVar19 + 0x6a) | 0x10000;
+      *(uint *)(psVar19 + 0x6e) = *(uint *)(psVar19 + 0x6e) | 0x20;
+      puVar23 = local_108;
+      UdfUpdateScbTimeStamps(lVar14,(longlong)psVar19,(longlong)local_108);
+      *(int *)(*(longlong *)(psVar19 + 0x44) + 0x48) =
+           *(int *)(*(longlong *)(psVar19 + 0x44) + 0x48) + -1;
+      if (*(int *)(*(longlong *)(psVar19 + 0x44) + 0x48) == 0) {
+        *(undefined8 *)(*(longlong *)(psVar19 + 0x44) + 0x40) = 0;
+        ExReleaseFastMutex(*(longlong *)(*(longlong *)(psVar19 + 0x44) + 0x50) + 0xd8);
+        uVar17 = (ulonglong)local_150;
       }
       else {
-        uVar21 = (ulonglong)local_170;
-      }
-    }
-  }
-LAB_10:
-  uVar7 = (uint)uVar21;
-  if (local_175 != '\0') {
-    if (!local_178) {
-      ExAcquireFastMutex(*(undefined8 *)(psVar24 + 0x18));
-      local_178 = true;
+        uVar17 = (ulonglong)local_150;
+      }
+    }
+  }
+LAB_13:
+  uVar25 = (uint)uVar17;
+  if (local_155 != '\0') {
+    if (!local_158) {
+      ExAcquireFastMutex(*(undefined8 *)(psVar19 + 0x18));
+      local_158 = true;
     }
     if (bVar2) {
-      *(undefined8 *)(psVar24 + 0x10) = *(undefined8 *)(psVar24 + 0x14);
-      if (*(longlong *)(puVar15[5] + 8) != 0) {
-        *(undefined8 *)(*(longlong *)(puVar15[5] + 8) + 8) = *(undefined8 *)(psVar24 + 0x14);
-      }
-    }
-    else if (-1 < (int)uVar7) {
+      *(undefined8 *)(psVar19 + 0x10) = *(undefined8 *)(psVar19 + 0x14);
+      if (*(longlong *)(puVar13[5] + 8) != 0) {
+        *(undefined8 *)(*(longlong *)(puVar13[5] + 8) + 8) = *(undefined8 *)(psVar19 + 0x14);
+      }
+    }
+    else if (-1 < (int)uVar25) {
       if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
          ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) != 0)) {
-        puVar26 = (undefined8 *)&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids;
-        WPP_SF_ii(WPP_GLOBAL_Control[3],0x1d,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids,
-                  *(undefined8 *)(psVar24 + 0x14));
-      }
-      *(undefined8 *)(psVar24 + 0x14) = *(undefined8 *)(psVar24 + 0x10);
-      if ((puVar15[5] != 0) && (*(longlong *)(puVar15[5] + 8) != 0)) {
-        UdfUpdateValidDataLength(puVar15,(longlong)psVar24);
-      }
-    }
-    if (uVar7 != 0x103) {
-      UdfFinishIoAtEof((longlong)psVar24);
-    }
-  }
-  if (local_178) {
-    ExReleaseFastMutex(*(undefined8 *)(psVar24 + 0x18));
+        puVar23 = (undefined8 *)&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids;
+        WPP_SF_ii(WPP_GLOBAL_Control[3],0x1d,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,
+                  *(undefined8 *)(psVar19 + 0x14));
+      }
+      *(undefined8 *)(psVar19 + 0x14) = *(undefined8 *)(psVar19 + 0x10);
+      if ((puVar13[5] != 0) && (*(longlong *)(puVar13[5] + 8) != 0)) {
+        UdfUpdateValidDataLength(puVar13,(longlong)psVar19);
+      }
+    }
+    if (uVar25 != 0x103) {
+      UdfFinishIoAtEof((longlong)psVar19);
+    }
+  }
+  if (local_158) {
+    ExReleaseFastMutex(*(undefined8 *)(psVar19 + 0x18));
   }
   if (local_res20[0] != '\0') {
-    ExReleaseResourceLite(*(undefined8 *)(psVar24 + 8));
-  }
-  if (local_173 != '\0') {
-    ExReleaseResourceLite(*(longlong *)(*(longlong *)(psVar24 + 0x44) + 0x50) + 8);
-  }
-  if (uVar7 == 0xc00000d8) {
-    uVar21 = UdfFsdPostRequest(local_res8,local_res10,(undefined *)puVar26);
-    uVar21 = uVar21 & 0xffffffff;
+    ExReleaseResourceLite(*(undefined8 *)(psVar19 + 8));
+  }
+  if (local_153 != '\0') {
+    ExReleaseResourceLite(*(longlong *)(*(longlong *)(psVar19 + 0x44) + 0x50) + 8);
+  }
+  if (uVar25 == 0xc00000d8) {
+    uVar17 = UdfFsdPostRequest(local_res8,local_res10,(undefined *)puVar23);
+    uVar17 = uVar17 & 0xffffffff;
   }
   else {
-    UdfCompleteRequest((longlong)local_res8,local_res10,uVar7);
+    UdfCompleteRequest((longlong)local_res8,local_res10,uVar25);
   }
   if ((undefined8 **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
-    return uVar21;
+    return uVar17;
   }
   if ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x4000000) == 0) {
-    return uVar21;
-  }
-  WPP_SF_D(WPP_GLOBAL_Control[3],0x1e,&WPP_d6a1f992d04636d84452166461d4c91e_Traceguids,(int)uVar21);
-  return uVar21;
+    return uVar17;
+  }
+  WPP_SF_D(WPP_GLOBAL_Control[3],0x1e,&WPP_1fc50ad76afe35029e63cb521a67274e_Traceguids,(int)uVar17);
+  return uVar17;
 }
 

```


## wil_details_FeatureReporting_ReportUsageToServiceDirect

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.35|
|i_ratio|0.56|
|m_ratio|0.95|
|b_ratio|0.95|
|match_types|SymbolsHash|

### Function Meta Diff



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

### wil_details_FeatureReporting_ReportUsageToServiceDirect Diff


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

```


## UdfDasdWrite

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,sig,address,called|
|ratio|0.58|
|i_ratio|0.42|
|m_ratio|0.88|
|b_ratio|0.78|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfDasdWrite|UdfDasdWrite|
|fullname|UdfDasdWrite|UdfDasdWrite|
|refcount|2|2|
|`length`|319|398|
|`called`|UdfLockUserBuffer<br>UdfMapUserBuffer<br>UdfRaiseStatusEx<br>UdfReleaseDevice<br>UdfRmwReadWriteSectors<br>UdfSingleAsync<br>UdfWaitSync|Feature_2146947386__private_IsEnabledDeviceUsageNoInline<br>UdfLockUserBuffer<br>UdfMapUserBuffer<br>UdfRaiseStatusEx<br>UdfReleaseDevice<br>UdfRmwReadWriteSectors<br>UdfSingleAsync<br>UdfWaitSync|
|calling|UdfCommonWrite|UdfCommonWrite|
|paramcount|6|6|
|`address`|14000c128|140010858|
|`sig`|int __fastcall UdfDasdWrite(longlong param_1, longlong param_2, longlong param_3, longlong param_4, ulonglong param_5, longlong param_6)|int __fastcall UdfDasdWrite(longlong param_1, longlong param_2, longlong param_3, ulonglong param_4, ulonglong param_5, longlong param_6)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfDasdWrite Called Diff


```diff
--- UdfDasdWrite called
+++ UdfDasdWrite called
@@ -0,0 +1 @@
+Feature_2146947386__private_IsEnabledDeviceUsageNoInline
```


### UdfDasdWrite Diff


```diff
--- UdfDasdWrite
+++ UdfDasdWrite
@@ -1,59 +1,69 @@
 
-int UdfDasdWrite(longlong param_1,longlong param_2,longlong param_3,longlong param_4,
+int UdfDasdWrite(longlong param_1,longlong param_2,longlong param_3,ulonglong param_4,
                 ulonglong param_5,longlong param_6)
 
 {
   int iVar1;
-  longlong lVar2;
-  byte bVar3;
-  ulonglong uVar4;
+  ulonglong uVar2;
+  longlong lVar3;
+  byte bVar4;
   longlong lVar5;
+  ulonglong uVar6;
   
   if ((*(uint *)(param_3 + 4) & 0x10) == 0) {
-    if (*(longlong *)(param_2 + 0x20) <= param_4) {
+    if (*(longlong *)(param_2 + 0x20) <= (longlong)param_4) {
       return -0x3ffffff3;
     }
-    uVar4 = *(longlong *)(param_2 + 0x20) - param_4;
-    if (((longlong)uVar4 < (longlong)param_5) && (param_5 = uVar4, uVar4 == 0)) {
+    uVar2 = *(longlong *)(param_2 + 0x20) - param_4;
+    if (((longlong)uVar2 < (longlong)param_5) && (param_5 = uVar2, uVar2 == 0)) {
       return 0;
     }
   }
-  else if (param_4 < 0) {
-    param_4 = *(longlong *)(param_2 + 0x20);
+  else if ((longlong)param_4 < 0) {
+    param_4 = *(ulonglong *)(param_2 + 0x20);
   }
-  uVar4 = param_5 & 0xffffffff;
-  UdfLockUserBuffer(param_1,uVar4,param_3,0);
+  uVar2 = Feature_2146947386__private_IsEnabledDeviceUsageNoInline();
+  if (((((int)uVar2 != 0) && (*(longlong *)(param_2 + 0x88) != 0)) &&
+      (lVar5 = *(longlong *)(*(longlong *)(param_2 + 0x88) + 8), lVar5 != 0)) &&
+     ((uVar2 = ((ulonglong)*(uint *)(lVar5 + 0x44) - 1) +
+               (0xffffffffL << ((byte)*(undefined4 *)(lVar5 + 0x48) & 0x3f)), uVar2 < param_4 ||
+      ((uVar2 - param_4) + 1 < param_5)))) {
+    return -0x3ffffff3;
+  }
+  uVar6 = param_5 & 0xffffffff;
+  uVar2 = uVar6;
+  UdfLockUserBuffer(param_1,uVar6,param_3,0);
   *(uint *)(param_6 + 0x50) = *(uint *)(param_6 + 0x50) | 0x1000;
-  *(ulonglong *)(*(longlong *)(param_1 + 8) + 0x38) = param_5 & 0xffffffff;
+  *(ulonglong *)(*(longlong *)(param_1 + 8) + 0x38) = uVar6;
   *(int *)(*(longlong *)(param_1 + 0x28) + 0x38) = (int)param_5;
   if ((*(uint *)(*(longlong *)(param_1 + 0x10) + 0x30) & 0x2000) == 0) {
-    UdfSingleAsync(param_1,uVar4,param_4,(int)param_5);
+    UdfSingleAsync(param_1,uVar2,param_4,(int)param_5);
     if ((*(uint *)(param_1 + 0x1c) & 4) == 0) {
       iVar1 = 0x103;
       *(uint *)(param_1 + 0x1c) = *(uint *)(param_1 + 0x1c) & 0xfffffeff;
     }
     else {
       lVar5 = param_1;
       UdfWaitSync(param_1);
       iVar1 = *(int *)(*(longlong *)(param_1 + 8) + 0x30);
       if ((*(uint *)(*(longlong *)(param_1 + 0x10) + 0x30) & 0x200000) != 0) {
         UdfReleaseDevice(lVar5,*(longlong *)(param_1 + 0x10),0);
       }
     }
   }
   else {
     lVar5 = *(longlong *)(*(longlong *)(param_1 + 8) + 0xb8);
-    lVar2 = UdfMapUserBuffer(param_1,*(longlong *)(param_1 + 8));
-    bVar3 = (byte)*(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x48);
+    lVar3 = UdfMapUserBuffer(param_1,*(longlong *)(param_1 + 8));
+    bVar4 = (byte)*(undefined4 *)(*(longlong *)(param_1 + 0x10) + 0x48);
     iVar1 = UdfRmwReadWriteSectors
-                      (param_1,(uint)(*(ulonglong *)(lVar5 + 0x18) >> (bVar3 & 0x3f)),
-                       *(uint *)(lVar5 + 8) >> (bVar3 & 0x1f),lVar2,'\x01',1);
+                      (param_1,(uint)(*(ulonglong *)(lVar5 + 0x18) >> (bVar4 & 0x3f)),
+                       *(uint *)(lVar5 + 8) >> (bVar4 & 0x1f),lVar3,'\x01',1);
     *(int *)(*(longlong *)(param_1 + 8) + 0x30) = iVar1;
   }
-  if (-1 < iVar1) {
-    return iVar1;
+  if (iVar1 < 0) {
+                    /* WARNING: Subroutine does not return */
+    UdfRaiseStatusEx(param_1,iVar1,'\x01');
   }
-                    /* WARNING: Subroutine does not return */
-  UdfRaiseStatusEx(param_1,iVar1,'\x01');
+  return iVar1;
 }
 

```


## wil_details_FeatureReporting_ReportUsageToService

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.63|
|i_ratio|0.53|
|m_ratio|0.94|
|b_ratio|0.94|
|match_types|SymbolsHash|

### Function Meta Diff



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

### wil_details_FeatureReporting_ReportUsageToService Diff


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

```


## UdfGetBlocksNeeded

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,sig,address,called|
|ratio|0.42|
|i_ratio|0.39|
|m_ratio|0.93|
|b_ratio|0.83|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfGetBlocksNeeded|UdfGetBlocksNeeded|
|fullname|UdfGetBlocksNeeded|UdfGetBlocksNeeded|
|refcount|6|6|
|`length`|422|497|
|`called`|NTOSKRNL.EXE::FsRtlLookupLargeMcbEntry|Feature_3105867064__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::ExRaiseStatus<br>NTOSKRNL.EXE::FsRtlLookupLargeMcbEntry|
|calling|UdfCommonWrite<br>UdfCreateLink<br>UdfExtendMetaDataFile<br>UdfGetRetrievalPointers|UdfCommonWrite<br>UdfCreateLink<br>UdfExtendMetaDataFile<br>UdfGetRetrievalPointers|
|paramcount|8|8|
|`address`|14000ac18|14000dc98|
|`sig`|undefined __fastcall UdfGetBlocksNeeded(longlong param_1, longlong param_2, longlong * param_3, int * param_4, int * param_5, int * param_6, int * param_7, undefined1 * param_8)|undefined __fastcall UdfGetBlocksNeeded(longlong param_1, longlong param_2, ulonglong * param_3, int * param_4, int * param_5, int * param_6, int * param_7, undefined1 * param_8)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfGetBlocksNeeded Called Diff


```diff
--- UdfGetBlocksNeeded called
+++ UdfGetBlocksNeeded called
@@ -0,0 +1,2 @@
+Feature_3105867064__private_IsEnabledDeviceUsageNoInline
+NTOSKRNL.EXE::ExRaiseStatus
```


### UdfGetBlocksNeeded Diff


```diff
--- UdfGetBlocksNeeded
+++ UdfGetBlocksNeeded
@@ -1,78 +1,84 @@
 
-void UdfGetBlocksNeeded(longlong param_1,longlong param_2,longlong *param_3,int *param_4,
+void UdfGetBlocksNeeded(longlong param_1,longlong param_2,ulonglong *param_3,int *param_4,
                        int *param_5,int *param_6,int *param_7,undefined1 *param_8)
 
 {
-  undefined1 uVar1;
-  int iVar2;
-  char cVar3;
-  uint uVar4;
-  byte bVar5;
+  char cVar1;
+  uint uVar2;
+  ulonglong uVar3;
+  byte bVar4;
+  int iVar5;
   int iVar6;
   int iVar7;
-  undefined1 uVar8;
-  ulonglong uVar9;
-  int iVar10;
-  int iVar11;
-  longlong local_40;
-  longlong local_38;
-  ulonglong local_30;
+  int iVar8;
+  int iVar9;
+  undefined1 uVar10;
+  longlong local_50;
+  longlong local_48;
+  ulonglong local_40;
   
-  local_38 = 0;
-  local_40 = 0;
-  iVar6 = 0;
-  uVar8 = 0;
-  uVar1 = 0;
+  local_48 = 0;
+  local_50 = 0;
+  iVar7 = 0;
+  iVar9 = 0;
+  iVar5 = 0;
+  iVar8 = 0;
+  uVar10 = 0;
+  uVar3 = Feature_3105867064__private_IsEnabledDeviceUsageNoInline();
+  if (((int)uVar3 != 0) &&
+     (((longlong)*param_3 < 0 ||
+      ((ulonglong)(0xffffffffL << ((byte)*(undefined4 *)(param_1 + 0x48) & 0x3f)) < *param_3)))) {
+                    /* WARNING: Subroutine does not return */
+    ExRaiseStatus(0xc000000d);
+  }
   if ((*(uint *)(param_2 + 0xd4) & 2) != 0) {
-    iVar7 = iVar6;
-    iVar11 = iVar6;
-    iVar10 = iVar6;
-    if (*param_3 <= (longlong)(ulonglong)(uint)(*(int *)(param_1 + 0x44) - *(int *)(param_2 + 0xe0))
-       ) goto LAB_0;
-    uVar1 = 1;
+    iVar6 = iVar5;
+    if ((longlong)*param_3 <=
+        (longlong)(ulonglong)(uint)(*(int *)(param_1 + 0x44) - *(int *)(param_2 + 0xe0)))
+    goto LAB_0;
+    uVar10 = 1;
   }
-  uVar8 = uVar1;
-  uVar4 = *(int *)(param_1 + 0x44) - 1;
-  bVar5 = (byte)*(undefined4 *)(param_1 + 0x48);
-  iVar10 = (int)((*param_3 + (ulonglong)uVar4 & ~(ulonglong)uVar4) >> (bVar5 & 0x3f));
-  iVar7 = iVar10 - *(int *)(param_2 + 0x128);
+  uVar2 = *(int *)(param_1 + 0x44) - 1;
+  bVar4 = (byte)*(undefined4 *)(param_1 + 0x48);
+  iVar8 = (int)((*param_3 + (ulonglong)uVar2 & ~(ulonglong)uVar2) >> (bVar4 & 0x3f));
+  iVar7 = iVar8 - *(int *)(param_2 + 0x128);
   if (iVar7 < 0) {
     iVar7 = 0;
   }
-  iVar11 = iVar7 - *(int *)(param_2 + 0x148);
-  if (iVar11 < 0) {
-    iVar11 = 0;
+  iVar9 = iVar7 - *(int *)(param_2 + 0x148);
+  if (iVar9 < 0) {
+    iVar9 = 0;
   }
+  iVar6 = 0;
   if (param_6 != (int *)0x0) {
-    uVar9 = ((ulonglong)uVar4 + *(longlong *)(param_2 + 0x18) & ~(ulonglong)uVar4) >> (bVar5 & 0x3f)
+    uVar3 = (*(longlong *)(param_2 + 0x18) + (ulonglong)uVar2 & ~(ulonglong)uVar2) >> (bVar4 & 0x3f)
             & 0xffffffff;
-    iVar2 = 0;
     if ((*(uint *)(param_2 + 0xd4) & 4) != 0) {
-      while ((iVar6 = iVar2, local_30 = uVar9,
-             cVar3 = FsRtlLookupLargeMcbEntry(param_2 + 0x108,uVar9,&local_38,&local_40,0,0,0),
-             cVar3 != '\0' && (local_38 != -1))) {
-        uVar9 = uVar9 + local_40;
-        iVar2 = iVar6 + (int)local_40;
+      while ((local_40 = uVar3,
+             cVar1 = FsRtlLookupLargeMcbEntry(param_2 + 0x108,uVar3,&local_48,&local_50,0,0,0),
+             cVar1 != '\0' && (local_48 != -1))) {
+        iVar5 = iVar5 + (int)local_50;
+        uVar3 = uVar3 + local_50;
       }
     }
-    iVar6 = iVar6 + iVar7;
+    iVar6 = iVar5 + iVar7;
   }
 LAB_0:
   if (param_4 != (int *)0x0) {
     *param_4 = iVar7;
   }
   if (param_5 != (int *)0x0) {
-    *param_5 = iVar11;
+    *param_5 = iVar9;
   }
   if (param_6 != (int *)0x0) {
     *param_6 = iVar6;
   }
   if (param_7 != (int *)0x0) {
-    *param_7 = iVar10;
+    *param_7 = iVar8;
   }
   if (param_8 != (undefined1 *)0x0) {
-    *param_8 = uVar8;
+    *param_8 = uVar10;
   }
   return;
 }
 

```


## UdfSetFileAllocationSize

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,sig,address,called|
|ratio|0.51|
|i_ratio|0.62|
|m_ratio|0.99|
|b_ratio|0.91|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfSetFileAllocationSize|UdfSetFileAllocationSize|
|fullname|UdfSetFileAllocationSize|UdfSetFileAllocationSize|
|refcount|5|5|
|`length`|2971|3019|
|`called`|<details><summary>Expand for full list:<br>NTOSKRNL.EXE::CcSetFileSizes<br>NTOSKRNL.EXE::ExAcquireFastMutexUnsafe<br>NTOSKRNL.EXE::ExReleaseFastMutexUnsafe<br>NTOSKRNL.EXE::FsRtlInitializeLargeMcb<br>NTOSKRNL.EXE::FsRtlTruncateLargeMcb<br>NTOSKRNL.EXE::FsRtlUninitializeLargeMcb<br>NTOSKRNL.EXE::MmCanFileBeTruncated<br>UdfAllocateAtFileTail<br>UdfAvailableFreeBlocks<br>UdfCopyMoveMcbAllocation<br>UdfDeEmbedFileData</summary>UdfFinishModifyIcb<br>UdfFreeAllocation<br>UdfNotifyReportChange<br>UdfPrepareModifyIcbForScb<br>UdfSeqCacheReserveFileRegion<br>UdfSeqCacheTruncateDataForFile<br>UdfSeqCacheUnReserveFileRegion<br>UdfUnReserveSparseFileRegion<br>UdfUninitializeScbMcb<br>UdfUpdateAdsFromScb<br>UdfUpdateScbTimeStamps<br>WPP_SF_<br>WPP_SF_D<br>WPP_SF_dD<br>WPP_SF_i<br>WPP_SF_qiDcc<br>memset</details>|<details><summary>Expand for full list:<br>Feature_2146947386__private_IsEnabledDeviceUsageNoInline<br>NTOSKRNL.EXE::CcSetFileSizes<br>NTOSKRNL.EXE::ExAcquireFastMutexUnsafe<br>NTOSKRNL.EXE::ExReleaseFastMutexUnsafe<br>NTOSKRNL.EXE::FsRtlInitializeLargeMcb<br>NTOSKRNL.EXE::FsRtlTruncateLargeMcb<br>NTOSKRNL.EXE::FsRtlUninitializeLargeMcb<br>NTOSKRNL.EXE::MmCanFileBeTruncated<br>UdfAllocateAtFileTail<br>UdfAvailableFreeBlocks<br>UdfCopyMoveMcbAllocation</summary>UdfDeEmbedFileData<br>UdfFinishModifyIcb<br>UdfFreeAllocation<br>UdfNotifyReportChange<br>UdfPrepareModifyIcbForScb<br>UdfSeqCacheReserveFileRegion<br>UdfSeqCacheTruncateDataForFile<br>UdfSeqCacheUnReserveFileRegion<br>UdfUnReserveSparseFileRegion<br>UdfUninitializeScbMcb<br>UdfUpdateAdsFromScb<br>UdfUpdateScbTimeStamps<br>WPP_SF_<br>WPP_SF_D<br>WPP_SF_dD<br>WPP_SF_i<br>WPP_SF_qiDcc<br>memset</details>|
|calling|UdfCompleteScbOpen<br>UdfSetAllocationInfo<br>UdfSetEndOfFileInfo<br>UdfSupersedeOrOverwriteFile|UdfCompleteScbOpen<br>UdfSetAllocationInfo<br>UdfSetEndOfFileInfo<br>UdfSupersedeOrOverwriteFile|
|paramcount|7|7|
|`address`|140050b00|14004d7c0|
|`sig`|uint __fastcall UdfSetFileAllocationSize(short * param_1, undefined8 * param_2, short * param_3, longlong param_4, longlong * param_5, char param_6, char param_7)|uint __fastcall UdfSetFileAllocationSize(short * param_1, undefined8 * param_2, short * param_3, longlong param_4, ulonglong * param_5, char param_6, char param_7)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfSetFileAllocationSize Called Diff


```diff
--- UdfSetFileAllocationSize called
+++ UdfSetFileAllocationSize called
@@ -0,0 +1 @@
+Feature_2146947386__private_IsEnabledDeviceUsageNoInline
```


### UdfSetFileAllocationSize Diff


```diff
--- UdfSetFileAllocationSize
+++ UdfSetFileAllocationSize
@@ -1,405 +1,412 @@
 
 uint UdfSetFileAllocationSize
-               (short *param_1,undefined8 *param_2,short *param_3,longlong param_4,longlong *param_5
-               ,char param_6,char param_7)
+               (short *param_1,undefined8 *param_2,short *param_3,longlong param_4,
+               ulonglong *param_5,char param_6,char param_7)
 
 {
   ushort uVar1;
   longlong lVar2;
   bool bVar3;
   bool bVar4;
   bool bVar5;
   bool bVar6;
   bool bVar7;
   bool bVar8;
   bool bVar9;
   char cVar10;
   uint uVar11;
   uint uVar12;
-  byte bVar13;
-  uint uVar14;
-  short *psVar15;
-  undefined8 *puVar16;
-  ulonglong uVar17;
-  int iVar18;
-  uint uVar19;
-  ulonglong uVar20;
-  longlong lVar21;
-  longlong in_stack_ffffffffffffff28;
-  char local_b5;
-  longlong local_b0;
-  char local_a8;
-  uint local_a4;
-  int local_a0;
-  int local_9c;
-  short *local_98;
-  undefined8 local_90;
-  ulonglong local_88;
-  undefined8 local_80;
-  undefined8 uStack_78;
-  undefined8 local_70;
-  undefined8 uStack_68;
-  short *local_60;
-  undefined8 uStack_58;
-  undefined8 local_50;
-  undefined8 uStack_48;
-  undefined8 local_40;
+  ulonglong uVar13;
+  byte bVar14;
+  uint uVar15;
+  short *psVar16;
+  undefined8 *puVar17;
+  ulonglong uVar18;
+  int iVar19;
+  uint uVar20;
+  ulonglong uVar21;
+  longlong lVar22;
+  ulonglong in_stack_ffffffffffffff18;
+  char local_c4;
+  ulonglong local_b8;
+  char local_b0;
+  uint local_ac;
+  int local_a8;
+  int local_a4;
+  short *local_a0;
+  undefined8 local_98;
+  ulonglong local_90;
+  undefined8 local_88;
+  undefined8 uStack_80;
+  undefined8 local_78;
+  undefined8 uStack_70;
+  short *local_68;
+  undefined8 uStack_60;
+  undefined8 local_58;
+  undefined8 uStack_50;
+  undefined8 local_48;
   
   lVar2 = *(longlong *)(param_1 + 8);
   bVar7 = false;
   bVar9 = false;
   bVar3 = false;
-  local_b5 = '\0';
-  local_a8 = '\0';
+  local_c4 = '\0';
+  local_b0 = '\0';
   bVar6 = false;
   bVar8 = false;
-  local_b0 = 0;
+  local_b8 = 0;
+  local_98 = 0;
   local_90 = 0;
+  local_a8 = 0;
+  local_a4 = 0;
   local_88 = 0;
-  local_a0 = 0;
-  local_9c = 0;
-  local_80 = 0;
-  uStack_78 = 0;
-  local_70 = 0;
-  uStack_68 = 0;
+  uStack_80 = 0;
+  local_78 = 0;
+  uStack_70 = 0;
+  puVar17 = param_2;
+  uVar13 = Feature_2146947386__private_IsEnabledDeviceUsageNoInline();
+  if (((int)uVar13 != 0) &&
+     ((puVar17 = (undefined8 *)*param_5, (longlong)puVar17 < 0 ||
+      ((undefined8 *)(0xffffffffL << ((byte)*(undefined4 *)(lVar2 + 0x48) & 0x3f)) < puVar17)))) {
+    return 0xc000000d;
+  }
   uVar11 = *(int *)(lVar2 + 0x44) - 1;
-  lVar21 = *param_5;
-  uVar20 = (lVar21 + (ulonglong)uVar11 & ~(ulonglong)uVar11) >>
-           ((byte)*(undefined4 *)(lVar2 + 0x48) & 0x3f);
+  uVar13 = *param_5;
+  uVar21 = (uVar11 + uVar13 & ~(ulonglong)uVar11) >> ((byte)*(undefined4 *)(lVar2 + 0x48) & 0x3f);
   if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 1) != 0)) {
-    uVar17 = CONCAT71((int7)((ulonglong)param_2 >> 8),-(param_6 != '\0')) & 0xffffffffffffff0b;
-    WPP_SF_qiDcc(WPP_GLOBAL_Control[3],CONCAT71((int7)(uVar17 >> 8),(char)uVar17 + 'N'),
+    uVar18 = CONCAT71((int7)((ulonglong)puVar17 >> 8),-(param_6 != '\0')) & 0xffffffffffffff0b;
+    WPP_SF_qiDcc(WPP_GLOBAL_Control[3],CONCAT71((int7)(uVar18 >> 8),(char)uVar18 + 'N'),
                  (ulonglong)(byte)((-(param_7 != '\0') & 0xbU) + 0x4e),param_3);
-    in_stack_ffffffffffffff28 = lVar21;
+    in_stack_ffffffffffffff18 = uVar13;
   }
   if (param_7 == '\0') {
     if (((*(uint *)(param_3 + 0x6a) & 2) == 0) ||
        ((longlong)
         (ulonglong)(uint)(*(int *)(*(longlong *)(param_1 + 8) + 0x44) - *(int *)(param_3 + 0x70)) <
-        *param_5)) goto LAB_0;
+        (longlong)*param_5)) goto LAB_0;
     if (param_6 == '\0') {
       return 0;
     }
 LAB_1:
-    local_b0 = 0;
+    local_b8 = 0;
   }
   else {
-    if (*param_5 == *(longlong *)(param_3 + 0x10)) {
+    if (*param_5 == *(ulonglong *)(param_3 + 0x10)) {
       return 0;
     }
 LAB_0:
     if (param_6 != '\0') goto LAB_1;
-    if ((param_7 == '\0') || (lVar21 = *param_5, lVar21 <= *(longlong *)(param_3 + 0x10))) {
-      lVar21 = *param_5;
-      local_b0 = *(longlong *)(param_3 + 0x10);
-      if (lVar21 < local_b0) goto LAB_2;
+    if ((param_7 == '\0') ||
+       (uVar13 = *param_5, (longlong)uVar13 <= (longlong)*(ulonglong *)(param_3 + 0x10))) {
+      uVar13 = *param_5;
+      local_b8 = *(ulonglong *)(param_3 + 0x10);
+      if ((longlong)uVar13 < (longlong)local_b8) goto LAB_2;
     }
     else {
 LAB_2:
       bVar8 = true;
-      local_b0 = lVar21;
-    }
-  }
-  psVar15 = (short *)(local_b0 - *(longlong *)(param_3 + 0x10));
-  local_98 = psVar15;
-  if ((longlong)psVar15 < 0) {
+      local_b8 = uVar13;
+    }
+  }
+  psVar16 = (short *)(local_b8 - *(longlong *)(param_3 + 0x10));
+  local_a0 = psVar16;
+  if ((longlong)psVar16 < 0) {
     bVar4 = true;
-    psVar15 = (short *)(*(longlong *)(param_3 + 0xd4) + 8);
+    psVar16 = (short *)(*(longlong *)(param_3 + 0xd4) + 8);
     cVar10 = MmCanFileBeTruncated();
     if (cVar10 == '\0') {
       return 0xc0000243;
     }
   }
   else {
     bVar4 = false;
   }
   uVar11 = *(uint *)(param_3 + 0x6a);
-  uVar17 = uVar20;
+  uVar13 = uVar21;
   if ((uVar11 & 2) == 0) {
     if ((((uVar11 >> 0xd & 1) == 0) &&
-        (*param_5 <=
+        ((longlong)*param_5 <=
          (longlong)
          (ulonglong)(uint)(*(int *)(*(longlong *)(param_1 + 8) + 0x44) - *(int *)(param_3 + 0x70))))
-       && (local_b0 == 0)) {
+       && (local_b8 == 0)) {
       bVar6 = true;
-      uVar17 = 0;
+      uVar13 = 0;
     }
   }
   else {
     bVar3 = (longlong)
             (ulonglong)
             (uint)(*(int *)(*(longlong *)(param_1 + 8) + 0x44) - *(int *)(param_3 + 0x70)) <
-            *param_5;
-    uVar17 = 0;
+            (longlong)*param_5;
+    uVar13 = 0;
     if (bVar3) {
-      UdfDeEmbedFileData(psVar15,param_3,param_2,*(longlong *)(param_3 + 0x14) != 0);
+      UdfDeEmbedFileData(psVar16,param_3,param_2,*(longlong *)(param_3 + 0x14) != 0);
       uVar11 = *(uint *)(param_3 + 0x6a);
-      uVar17 = uVar20;
-    }
-  }
-  uVar19 = (uint)uVar17;
+      uVar13 = uVar21;
+    }
+  }
+  uVar20 = (uint)uVar13;
   if ((uVar11 & 0x2002) == 0) {
     if ((*(longlong *)(lVar2 + 0x160) == 0) && ((*(uint *)(lVar2 + 0x30) & 0x20000000) == 0)) {
-      local_a4 = 0;
-      if (*(uint *)(param_3 + 0x94) < uVar19) {
-        local_a4 = (uVar19 - *(uint *)(param_3 + 0x94)) + 1;
-      }
-      if (local_a4 != *(uint *)(param_3 + 0xa4)) {
+      local_ac = 0;
+      if (*(uint *)(param_3 + 0x94) < uVar20) {
+        local_ac = (uVar20 - *(uint *)(param_3 + 0x94)) + 1;
+      }
+      if (local_ac != *(uint *)(param_3 + 0xa4)) {
         if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
            ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 1) != 0)) {
-          in_stack_ffffffffffffff28 =
-               CONCAT44((int)((ulonglong)in_stack_ffffffffffffff28 >> 0x20),
-                        *(uint *)(param_3 + 0xa4));
-          WPP_SF_dD(WPP_GLOBAL_Control[3],0x4c,&WPP_5e55ec30faa1391a79b894b84d65caf4_Traceguids,
-                    local_a4);
+          in_stack_ffffffffffffff18 =
+               CONCAT44((int)(in_stack_ffffffffffffff18 >> 0x20),*(uint *)(param_3 + 0xa4));
+          WPP_SF_dD(WPP_GLOBAL_Control[3],0x4c,&WPP_d1db5cbc519e3794c8dd931d8d1fca6d_Traceguids,
+                    local_ac);
         }
-        psVar15 = (short *)(lVar2 + 0x630);
-        ExAcquireFastMutexUnsafe(psVar15);
+        psVar16 = (short *)(lVar2 + 0x630);
+        ExAcquireFastMutexUnsafe(psVar16);
         *(void **)(lVar2 + 0x668) = SystemReserved1[0xf];
         uVar11 = *(uint *)(param_3 + 0xa4);
-        uVar14 = local_a4;
-        if ((uVar11 < local_a4) &&
-           (uVar12 = UdfAvailableFreeBlocks(lVar2,0), uVar12 < uVar14 - uVar11)) {
+        uVar15 = local_ac;
+        if ((uVar11 < local_ac) &&
+           (uVar12 = UdfAvailableFreeBlocks(lVar2,0), uVar12 < uVar15 - uVar11)) {
           *(undefined8 *)(lVar2 + 0x668) = 0;
-          ExReleaseFastMutexUnsafe(psVar15);
+          ExReleaseFastMutexUnsafe(psVar16);
           if (bVar3) {
             *(uint *)(param_3 + 0x6a) = *(uint *)(param_3 + 0x6a) & 0xfff7ffff | 2;
           }
           return 0xc000007f;
         }
-        *(int *)(lVar2 + 0x2a0) = *(int *)(lVar2 + 0x2a0) + (uVar14 - uVar11);
-        *(uint *)(param_3 + 0xa4) = uVar14;
+        *(int *)(lVar2 + 0x2a0) = *(int *)(lVar2 + 0x2a0) + (uVar15 - uVar11);
+        *(uint *)(param_3 + 0xa4) = uVar15;
         *(undefined8 *)(lVar2 + 0x668) = 0;
         ExReleaseFastMutexUnsafe();
-        local_b5 = local_a8;
-      }
-    }
-    else if (0 < (longlong)local_98) {
-      uVar20 = (ulonglong)(*(int *)(lVar2 + 0x44) - 1);
-      bVar13 = (byte)*(undefined4 *)(lVar2 + 0x48);
-      in_stack_ffffffffffffff28 = 0;
-      psVar15 = param_1;
+        local_c4 = local_b0;
+      }
+    }
+    else if (0 < (longlong)local_a0) {
+      uVar21 = (ulonglong)(*(int *)(lVar2 + 0x44) - 1);
+      bVar14 = (byte)*(undefined4 *)(lVar2 + 0x48);
+      in_stack_ffffffffffffff18 = 0;
+      psVar16 = param_1;
       uVar11 = UdfSeqCacheReserveFileRegion
                          ((longlong)param_1,(longlong)param_3,
-                          (int)(*(ulonglong *)(param_3 + 0x10) >> (bVar13 & 0x3f)),
-                          (uint)(((*(ulonglong *)(param_3 + 0x10) & uVar20) + uVar20 +
-                                  (longlong)local_98 & ~uVar20) >> (bVar13 & 0x3f)),(uint *)0x0,
+                          (int)(*(ulonglong *)(param_3 + 0x10) >> (bVar14 & 0x3f)),
+                          (uint)(((*(ulonglong *)(param_3 + 0x10) & uVar21) + uVar21 +
+                                  (longlong)local_a0 & ~uVar21) >> (bVar14 & 0x3f)),(uint *)0x0,
                           '\x01',(byte)(*(uint *)(param_1 + 0xe) >> 4) & 1);
       if ((int)uVar11 < 0) {
         return uVar11;
       }
     }
   }
   bVar3 = false;
   if ((bVar4) && ((*(uint *)(param_3 + 0x6a) & 2) == 0)) {
     if ((*(uint *)(param_3 + 0x6a) >> 0xd & 1) == 0) {
       if ((*(longlong *)(lVar2 + 0x160) != 0) || ((*(uint *)(lVar2 + 0x30) & 0x20000000) != 0)) {
         uVar11 = *(int *)(lVar2 + 0x44) - 1;
-        bVar13 = (byte)*(undefined4 *)(lVar2 + 0x48);
-        iVar18 = (int)((local_b0 + (ulonglong)uVar11 & ~(ulonglong)uVar11) >> (bVar13 & 0x3f));
-        in_stack_ffffffffffffff28 = CONCAT71((int7)((ulonglong)in_stack_ffffffffffffff28 >> 8),1);
-        psVar15 = param_1;
+        bVar14 = (byte)*(undefined4 *)(lVar2 + 0x48);
+        iVar19 = (int)((local_b8 + uVar11 & ~(ulonglong)uVar11) >> (bVar14 & 0x3f));
+        in_stack_ffffffffffffff18 = CONCAT71((int7)(in_stack_ffffffffffffff18 >> 8),1);
+        psVar16 = param_1;
         UdfSeqCacheUnReserveFileRegion
-                  ((longlong)param_1,(longlong)param_3,iVar18,
+                  ((longlong)param_1,(longlong)param_3,iVar19,
                    (int)((*(longlong *)(param_3 + 0x10) + (ulonglong)uVar11 & ~(ulonglong)uVar11) >>
-                        (bVar13 & 0x3f)) - iVar18,'\x01');
+                        (bVar14 & 0x3f)) - iVar19,'\x01');
       }
     }
     else {
-      psVar15 = param_1;
-      uVar11 = UdfUnReserveSparseFileRegion((undefined8 *)param_1,param_3,local_b0);
+      psVar16 = param_1;
+      uVar11 = UdfUnReserveSparseFileRegion((undefined8 *)param_1,param_3,local_b8);
       if ((int)uVar11 < 0) {
         return uVar11;
       }
     }
   }
-  if (uVar19 < *(uint *)(param_3 + 0x94)) {
+  if (uVar20 < *(uint *)(param_3 + 0x94)) {
     if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 1) != 0)) {
-      WPP_SF_D(WPP_GLOBAL_Control[3],0x4d,&WPP_5e55ec30faa1391a79b894b84d65caf4_Traceguids,
+      WPP_SF_D(WPP_GLOBAL_Control[3],0x4d,&WPP_d1db5cbc519e3794c8dd931d8d1fca6d_Traceguids,
                *(uint *)(param_3 + 0x94));
     }
-    puVar16 = &local_80;
-    FsRtlInitializeLargeMcb(puVar16,1);
+    puVar17 = &local_88;
+    FsRtlInitializeLargeMcb(puVar17,1);
     bVar9 = true;
-    psVar15 = param_3 + 0x74;
+    psVar16 = param_3 + 0x74;
     UdfCopyMoveMcbAllocation
-              (puVar16,psVar15,&local_80,uVar17 & 0xffffffff,in_stack_ffffffffffffff28,&local_a0);
+              (puVar17,psVar16,&local_88,uVar13 & 0xffffffff,in_stack_ffffffffffffff18,&local_a8);
     if ((*(longlong *)(lVar2 + 0x160) == 0) && ((*(uint *)(lVar2 + 0x30) & 0x20000000) == 0)) {
       UdfCopyMoveMcbAllocation
-                (puVar16,param_3 + 0x84,&local_80,uVar17 & 0xffffffff,in_stack_ffffffffffffff28,
-                 &local_9c);
-    }
-    FsRtlTruncateLargeMcb(psVar15,uVar17 & 0xffffffff);
-    iVar18 = local_a0;
-    *(int *)(param_3 + 0xa0) = *(int *)(param_3 + 0xa0) - local_a0;
+                (puVar17,param_3 + 0x84,&local_88,uVar13 & 0xffffffff,in_stack_ffffffffffffff18,
+                 &local_a4);
+    }
+    FsRtlTruncateLargeMcb(psVar16,uVar13 & 0xffffffff);
+    iVar19 = local_a8;
+    *(int *)(param_3 + 0xa0) = *(int *)(param_3 + 0xa0) - local_a8;
     if ((*(longlong *)(lVar2 + 0x160) == 0) && ((*(uint *)(lVar2 + 0x30) & 0x20000000) == 0)) {
-      psVar15 = param_3 + 0x84;
-      FsRtlTruncateLargeMcb(psVar15,uVar17 & 0xffffffff);
-      *(int *)(param_3 + 0xa2) = (*(int *)(param_3 + 0xa2) - local_9c) - iVar18;
+      psVar16 = param_3 + 0x84;
+      FsRtlTruncateLargeMcb(psVar16,uVar13 & 0xffffffff);
+      *(int *)(param_3 + 0xa2) = (*(int *)(param_3 + 0xa2) - local_a4) - iVar19;
     }
     bVar5 = true;
-    local_b5 = '\x01';
+    local_c4 = '\x01';
     bVar7 = true;
   }
   else {
     bVar5 = false;
   }
   if (bVar4) {
     if (bVar5) {
-      *(uint *)(param_3 + 0x96) = uVar19;
-      *(uint *)(param_3 + 0x94) = uVar19;
-    }
-    *(longlong *)(param_3 + 0x98) = local_b0;
+      *(uint *)(param_3 + 0x96) = uVar20;
+      *(uint *)(param_3 + 0x94) = uVar20;
+    }
+    *(ulonglong *)(param_3 + 0x98) = local_b8;
     *(uint *)(param_3 + 0x6a) = *(uint *)(param_3 + 0x6a) & 0xfdffffff;
   }
   if (bVar6) {
     if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 1) != 0)) {
-      WPP_SF_i(WPP_GLOBAL_Control[3],0x4e,&WPP_5e55ec30faa1391a79b894b84d65caf4_Traceguids,param_3);
+      WPP_SF_i(WPP_GLOBAL_Control[3],0x4e,&WPP_d1db5cbc519e3794c8dd931d8d1fca6d_Traceguids,param_3);
     }
     uVar11 = *(uint *)(param_3 + 0x6a);
     *(uint *)(param_3 + 0x6a) = uVar11 | 2;
     *(uint *)(param_3 + 0x6a) = uVar11 & 0xfffdffff | 2;
-    psVar15 = param_3;
+    psVar16 = param_3;
     UdfUninitializeScbMcb((longlong)param_3);
     bVar3 = true;
   }
-  iVar18 = 1;
-  UdfUpdateScbTimeStamps(psVar15,(longlong)param_3,param_4);
+  iVar19 = 1;
+  UdfUpdateScbTimeStamps(psVar16,(longlong)param_3,param_4);
   *(uint *)(param_3 + 0x6e) = *(uint *)(param_3 + 0x6e) | 0x20;
-  local_90 = *(undefined8 *)(param_3 + 0x10);
-  local_88 = *(ulonglong *)(param_3 + 0xc);
-  *(longlong *)(param_3 + 0x14) = local_b0;
-  *(longlong *)(param_3 + 0x10) = local_b0;
+  local_98 = *(undefined8 *)(param_3 + 0x10);
+  local_90 = *(ulonglong *)(param_3 + 0xc);
+  *(ulonglong *)(param_3 + 0x14) = local_b8;
+  *(ulonglong *)(param_3 + 0x10) = local_b8;
   if ((*(uint *)(param_3 + 0x6a) & 2) == 0) {
-    uVar20 = (uVar17 & 0xffffffff) << ((byte)*(undefined4 *)(lVar2 + 0x48) & 0x3f);
+    uVar13 = (uVar13 & 0xffffffff) << ((byte)*(undefined4 *)(lVar2 + 0x48) & 0x3f);
   }
   else {
-    uVar11 = *(int *)(lVar2 + 0x44) - iVar18;
-    uVar20 = (ulonglong)uVar11 + local_b0 & ~(ulonglong)uVar11;
-  }
-  *(ulonglong *)(param_3 + 0xc) = uVar20;
+    uVar11 = *(int *)(lVar2 + 0x44) - iVar19;
+    uVar13 = uVar11 + local_b8 & ~(ulonglong)uVar11;
+  }
+  *(ulonglong *)(param_3 + 0xc) = uVar13;
   CcSetFileSizes(param_2);
   if (bVar4) {
     if (((*(longlong *)(lVar2 + 0x160) != 0) || ((*(uint *)(lVar2 + 0x30) & 0x20000000) != 0)) &&
        (*(int *)(param_3 + 0xbc) != 0)) {
-      uVar20 = (ulonglong)(*(int *)(lVar2 + 0x44) - 1);
+      uVar13 = (ulonglong)(*(int *)(lVar2 + 0x44) - 1);
       UdfSeqCacheTruncateDataForFile
                 ((longlong)param_1,(longlong)param_3,
-                 (uint)((local_b0 + uVar20 & ~uVar20) >>
+                 (uint)((local_b8 + uVar13 & ~uVar13) >>
                        ((byte)*(undefined4 *)(lVar2 + 0x48) & 0x3f)));
     }
     if ((*(uint *)(param_3 + 0x6a) & 0x2000000) != 0) {
       bVar3 = true;
     }
   }
   if (((*(uint *)(param_3 + 0x6a) & 2) != 0) && ((!bVar3 || (bVar6)))) {
-    local_50 = 0;
-    uStack_48 = 0;
-    local_40 = 0;
-    local_60 = (short *)0x0;
-    uStack_58 = 0;
+    local_58 = 0;
+    uStack_50 = 0;
+    local_48 = 0;
+    local_68 = (short *)0x0;
+    uStack_60 = 0;
     if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 1) != 0)) {
-      WPP_SF_(WPP_GLOBAL_Control[3],0x4f,&WPP_5e55ec30faa1391a79b894b84d65caf4_Traceguids);
-    }
-    UdfPrepareModifyIcbForScb((longlong)param_1,(longlong)param_3,&local_60);
-    psVar15 = local_60;
-    if (*local_60 == 0x105) {
-      uVar11 = *(uint *)(local_60 + 0x56);
+      WPP_SF_(WPP_GLOBAL_Control[3],0x4f,&WPP_d1db5cbc519e3794c8dd931d8d1fca6d_Traceguids);
+    }
+    UdfPrepareModifyIcbForScb((longlong)param_1,(longlong)param_3,&local_68);
+    psVar16 = local_68;
+    if (*local_68 == 0x105) {
+      uVar11 = *(uint *)(local_68 + 0x56);
     }
     else {
-      uVar11 = *(uint *)(local_60 + 0x6a);
-    }
-    uVar14 = (uint)local_b0;
-    if (uVar11 < uVar14) {
-      if (*local_60 == 0x105) {
-        uVar14 = *(uint *)(local_60 + 0x56);
+      uVar11 = *(uint *)(local_68 + 0x6a);
+    }
+    uVar15 = (uint)local_b8;
+    if (uVar11 < uVar15) {
+      if (*local_68 == 0x105) {
+        uVar15 = *(uint *)(local_68 + 0x56);
       }
       else {
-        uVar14 = *(uint *)(local_60 + 0x6a);
-      }
-    }
-    memset((void *)((ulonglong)(uVar14 + *(int *)(param_3 + 0x70)) + (longlong)local_60),0,
-           (ulonglong)(*(int *)(lVar2 + 0x44) - (uVar14 + *(int *)(param_3 + 0x70))));
-    lVar21 = local_b0 - *(longlong *)(psVar15 + 0x1c);
-    *(longlong *)(psVar15 + 0x1c) = local_b0;
-    if (*psVar15 == 0x10a) {
-      *(int *)(psVar15 + 0x6a) = (int)local_b0;
-      *(longlong *)(psVar15 + 0x20) = *(longlong *)(psVar15 + 0x20) + lVar21;
+        uVar15 = *(uint *)(local_68 + 0x6a);
+      }
+    }
+    memset((void *)((ulonglong)(uVar15 + *(int *)(param_3 + 0x70)) + (longlong)local_68),0,
+           (ulonglong)(*(int *)(lVar2 + 0x44) - (uVar15 + *(int *)(param_3 + 0x70))));
+    lVar22 = local_b8 - *(longlong *)(psVar16 + 0x1c);
+    *(ulonglong *)(psVar16 + 0x1c) = local_b8;
+    if (*psVar16 == 0x10a) {
+      *(int *)(psVar16 + 0x6a) = (int)local_b8;
+      *(longlong *)(psVar16 + 0x20) = *(longlong *)(psVar16 + 0x20) + lVar22;
     }
     else {
-      *(int *)(psVar15 + 0x56) = (int)local_b0;
+      *(int *)(psVar16 + 0x56) = (int)local_b8;
     }
     if (bVar6) {
-      uVar1 = psVar15[0x11];
-      psVar15[0x11] = uVar1 & 0xfff8;
-      psVar15[0x11] = uVar1 & 0xfff8 | 3;
-    }
-    UdfFinishModifyIcb((undefined8 *)param_1,&local_60,'\x01',param_3);
-    if (((*(uint *)(param_3 + 0x6a) & 0x10) != 0) && (lVar21 != 0)) {
+      uVar1 = psVar16[0x11];
+      psVar16[0x11] = uVar1 & 0xfff8;
+      psVar16[0x11] = uVar1 & 0xfff8 | 3;
+    }
+    UdfFinishModifyIcb((undefined8 *)param_1,&local_68,'\x01',param_3);
+    if (((*(uint *)(param_3 + 0x6a) & 0x10) != 0) && (lVar22 != 0)) {
       UdfPrepareModifyIcbForScb
-                ((longlong)param_1,*(longlong *)(*(longlong *)(param_3 + 0x44) + 0x10),&local_60);
-      *(longlong *)(local_60 + 0x20) = *(longlong *)(local_60 + 0x20) + lVar21;
-      UdfFinishModifyIcb((undefined8 *)param_1,&local_60,'\x01',
+                ((longlong)param_1,*(longlong *)(*(longlong *)(param_3 + 0x44) + 0x10),&local_68);
+      *(longlong *)(local_68 + 0x20) = *(longlong *)(local_68 + 0x20) + lVar22;
+      UdfFinishModifyIcb((undefined8 *)param_1,&local_68,'\x01',
                          *(short **)(*(longlong *)(param_3 + 0x44) + 0x10));
     }
   }
-  if ((((*(uint *)(param_3 + 0x94) < uVar19) && ((*(uint *)(param_3 + 0x6a) & 0x2000) == 0)) &&
+  if ((((*(uint *)(param_3 + 0x94) < uVar20) && ((*(uint *)(param_3 + 0x6a) & 0x2000) == 0)) &&
       (*(longlong *)(lVar2 + 0x160) == 0)) && ((*(uint *)(lVar2 + 0x30) & 0x20000000) == 0)) {
     UdfAllocateAtFileTail
-              ((undefined8 *)param_1,param_3,(ulonglong)(uVar19 - *(uint *)(param_3 + 0x94)),
-               &local_b0);
+              ((undefined8 *)param_1,param_3,(ulonglong)(uVar20 - *(uint *)(param_3 + 0x94)),
+               &local_b8);
     bVar7 = true;
     bVar3 = false;
   }
   if (bVar7) {
-    *(uint *)(param_3 + 0x94) = uVar19;
-  }
-  else if ((local_98 == (short *)0x0) || ((*(uint *)(param_3 + 0x6a) & 2) != 0)) goto LAB_3;
-  *(longlong *)(param_3 + 0x98) = local_b0;
+    *(uint *)(param_3 + 0x94) = uVar20;
+  }
+  else if ((local_a0 == (short *)0x0) || ((*(uint *)(param_3 + 0x6a) & 2) != 0)) goto LAB_3;
+  *(ulonglong *)(param_3 + 0x98) = local_b8;
   if (!bVar3) {
     if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 1) != 0)) {
-      WPP_SF_D(WPP_GLOBAL_Control[3],0x50,&WPP_5e55ec30faa1391a79b894b84d65caf4_Traceguids,
+      WPP_SF_D(WPP_GLOBAL_Control[3],0x50,&WPP_d1db5cbc519e3794c8dd931d8d1fca6d_Traceguids,
                *(undefined4 *)(param_3 + 0x94));
     }
-    uVar11 = uVar19 - 1;
-    if (uVar19 == 0) {
+    uVar11 = uVar20 - 1;
+    if (uVar20 == 0) {
       uVar11 = 0;
     }
     UdfUpdateAdsFromScb((undefined8 *)param_1,param_3,0,uVar11);
   }
 LAB_3:
-  if ((((local_b5 != '\0') && (*(longlong *)(lVar2 + 0x160) == 0)) &&
+  if ((((local_c4 != '\0') && (*(longlong *)(lVar2 + 0x160) == 0)) &&
       ((*(uint *)(lVar2 + 0x30) & 0x20000000) == 0)) &&
-     ((UdfFreeAllocation((undefined8 *)param_1,(longlong)param_3,&local_80,uVar19,'\0',(int *)0x0),
+     ((UdfFreeAllocation((undefined8 *)param_1,(longlong)param_3,&local_88,uVar20,'\0',(int *)0x0),
       (*(uint *)(param_3 + 0x6a) & 0x2000) == 0 && (param_6 != '\0')))) {
-    local_a4 = local_a0 + local_9c;
+    local_ac = local_a8 + local_a4;
     ExAcquireFastMutexUnsafe(lVar2 + 0x630);
     *(void **)(lVar2 + 0x668) = SystemReserved1[0xf];
     uVar11 = UdfAvailableFreeBlocks(lVar2,0);
-    if (local_a4 <= uVar11) {
-      *(uint *)(lVar2 + 0x2a0) = *(int *)(lVar2 + 0x2a0) + local_a4;
-      *(uint *)(param_3 + 0xa4) = *(int *)(param_3 + 0xa4) + local_a4;
+    if (local_ac <= uVar11) {
+      *(uint *)(lVar2 + 0x2a0) = *(int *)(lVar2 + 0x2a0) + local_ac;
+      *(uint *)(param_3 + 0xa4) = *(int *)(param_3 + 0xa4) + local_ac;
     }
     *(undefined8 *)(lVar2 + 0x668) = 0;
     ExReleaseFastMutexUnsafe(lVar2 + 0x630);
   }
   if ((bVar8) && (param_4 != 0)) {
     UdfNotifyReportChange
               ((longlong)param_1,param_4,*(longlong *)(param_4 + 0x10),(longlong)param_2,
                (longlong)param_3,8,3);
   }
   *(uint *)(param_2 + 10) = *(uint *)(param_2 + 10) | 0x1000;
   if (param_7 == '\0') {
     *(uint *)(param_3 + 0x6a) = *(uint *)(param_3 + 0x6a) | 0x400;
   }
   if (bVar9) {
-    FsRtlUninitializeLargeMcb(&local_80);
+    FsRtlUninitializeLargeMcb(&local_88);
   }
   return 0;
 }
 

```


## wil_details_IsEnabledFallback

### Match Info



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

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|fullname|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|`refcount`|2|4|
|`length`|135|140|
|called|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|`calling`|Feature_3887279419__private_IsEnabledFallback|Feature_2146947386__private_IsEnabledFallback<br>Feature_3105867064__private_IsEnabledFallback<br>Feature_3887279419__private_IsEnabledFallback|
|paramcount|2|3|
|`address`|14001170c|14000fc88|
|`sig`|uint __fastcall wil_details_IsEnabledFallback(undefined4 * param_1, uint param_2)|uint __fastcall wil_details_IsEnabledFallback(ulonglong param_1, int param_2, undefined8 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_IsEnabledFallback Calling Diff


```diff
--- wil_details_IsEnabledFallback calling
+++ wil_details_IsEnabledFallback calling
@@ -0,0 +1,2 @@
+Feature_2146947386__private_IsEnabledFallback
+Feature_3105867064__private_IsEnabledFallback
```


### wil_details_IsEnabledFallback Diff


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

```


## Feature_3887279419__private_IsEnabledFallback

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,sig,address|
|ratio|0.8|
|i_ratio|0.67|
|m_ratio|0.89|
|b_ratio|0.89|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|Feature_3887279419__private_IsEnabledFallback|Feature_3887279419__private_IsEnabledFallback|
|fullname|Feature_3887279419__private_IsEnabledFallback|Feature_3887279419__private_IsEnabledFallback|
|refcount|2|2|
|`length`|14|21|
|called|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|calling|Feature_3887279419__private_IsEnabledDeviceUsageNoInline|Feature_3887279419__private_IsEnabledDeviceUsageNoInline|
|paramcount|2|2|
|`address`|140010934|140011374|
|`sig`|undefined __fastcall Feature_3887279419__private_IsEnabledFallback(undefined4 * param_1, uint param_2)|undefined __fastcall Feature_3887279419__private_IsEnabledFallback(ulonglong param_1, int param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### Feature_3887279419__private_IsEnabledFallback Diff


```diff
--- Feature_3887279419__private_IsEnabledFallback
+++ Feature_3887279419__private_IsEnabledFallback
@@ -1,8 +1,8 @@
 
-void Feature_3887279419__private_IsEnabledFallback(undefined4 *param_1,uint param_2)
+void Feature_3887279419__private_IsEnabledFallback(ulonglong param_1,int param_2)
 
 {
-  wil_details_IsEnabledFallback(param_1,param_2);
+  wil_details_IsEnabledFallback(param_1,param_2,&Feature_3887279419__private_descriptor);
   return;
 }
 

```


## UdfInitializeScbFromIcbContext

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.56|
|i_ratio|0.51|
|m_ratio|0.99|
|b_ratio|0.75|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfInitializeScbFromIcbContext|UdfInitializeScbFromIcbContext|
|fullname|UdfInitializeScbFromIcbContext|UdfInitializeScbFromIcbContext|
|refcount|12|12|
|`length`|1153|1197|
|`called`|NTOSKRNL.EXE::ExRaiseStatus<br>UdfInitializeAllocations<br>UdfInsertScbTable<br>UdfUpdateTimestampsFromIcbContext<br>WPP_SF_dD<br>WPP_SF_ddd|Feature_2146947386__private_IsEnabledDeviceUsageNoInline<br>UdfInitializeAllocations<br>UdfInsertScbTable<br>UdfRaiseStatusEx<br>UdfUpdateTimestampsFromIcbContext<br>WPP_SF_dD<br>WPP_SF_ddd|
|calling|UdfInitializeUniqueIdTable<br>UdfOpenObjectByFileId<br>UdfOpenObjectFromDirContext<br>UdfOpenStreamDirectory<br>UdfSetLinkInfo<br>UdfSetRenameInfo<br>UdfUpdateVcbPhase0<br>UdfUpdateVcbPhase1|UdfInitializeUniqueIdTable<br>UdfOpenObjectByFileId<br>UdfOpenObjectFromDirContext<br>UdfOpenStreamDirectory<br>UdfSetLinkInfo<br>UdfSetRenameInfo<br>UdfUpdateVcbPhase0<br>UdfUpdateVcbPhase1|
|paramcount|4|4|
|`address`|14003ccb0|1400582f8|
|sig|undefined __fastcall UdfInitializeScbFromIcbContext(undefined8 * param_1, short * param_2, longlong * param_3, longlong param_4)|undefined __fastcall UdfInitializeScbFromIcbContext(undefined8 * param_1, short * param_2, longlong * param_3, longlong param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfInitializeScbFromIcbContext Called Diff


```diff
--- UdfInitializeScbFromIcbContext called
+++ UdfInitializeScbFromIcbContext called
@@ -1 +1 @@
-NTOSKRNL.EXE::ExRaiseStatus
+Feature_2146947386__private_IsEnabledDeviceUsageNoInline
@@ -3,0 +4 @@
+UdfRaiseStatusEx
```


### UdfInitializeScbFromIcbContext Diff


```diff
--- UdfInitializeScbFromIcbContext
+++ UdfInitializeScbFromIcbContext
@@ -1,189 +1,191 @@
 
 void UdfInitializeScbFromIcbContext
                (undefined8 *param_1,short *param_2,longlong *param_3,longlong param_4)
 
 {
   longlong *plVar1;
   short sVar2;
   uint uVar3;
   short *psVar4;
   undefined8 uVar5;
   bool bVar6;
   uint uVar7;
   uint *puVar8;
   uint *puVar9;
-  longlong lVar10;
+  ulonglong uVar10;
   longlong lVar11;
-  longlong *plVar12;
-  uint *puVar13;
-  ulonglong uVar14;
+  longlong lVar12;
+  longlong *plVar13;
+  uint *puVar14;
   uint *puVar15;
   char cVar16;
   int iVar17;
   uint *puVar18;
   bool bVar19;
   
   psVar4 = (short *)param_3[2];
-  lVar10 = param_1[2];
+  lVar11 = param_1[2];
   bVar6 = true;
   sVar2 = *psVar4;
-  puVar13 = (uint *)(psVar4 + 0x68);
+  puVar14 = (uint *)(psVar4 + 0x68);
   puVar15 = (uint *)(psVar4 + 0x54);
   bVar19 = sVar2 != 0x105;
   if (bVar19) {
-    uVar7 = *puVar13;
+    uVar7 = *puVar14;
   }
   else {
     uVar7 = *puVar15;
   }
   iVar17 = 0xb0;
   if (bVar19) {
     iVar17 = 0xd8;
   }
   puVar8 = puVar15;
   if (bVar19) {
-    puVar8 = puVar13;
+    puVar8 = puVar14;
   }
   if (iVar17 + uVar7 < *puVar8) {
     if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x40000) != 0)) {
-      WPP_SF_dD(WPP_GLOBAL_Control[3],0x35,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids,iVar17);
+      WPP_SF_dD(WPP_GLOBAL_Control[3],0x35,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids,iVar17);
     }
-LAB_0:
-    *(undefined4 *)(param_1 + 3) = 0xc0000102;
-                    /* WARNING: Subroutine does not return */
-    ExRaiseStatus();
+    goto LAB_0;
   }
   puVar8 = (uint *)(psVar4 + 0x56);
   puVar18 = (uint *)(psVar4 + 0x6a);
   if (sVar2 == 0x105) {
     uVar3 = *puVar8;
     puVar9 = puVar8;
   }
   else {
     uVar3 = *puVar18;
     puVar9 = puVar18;
   }
   if (uVar3 + iVar17 + uVar7 < *puVar9) {
     if (((undefined8 **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((*(uint *)((longlong)WPP_GLOBAL_Control + 0x2c) & 0x40000) != 0)) {
-      WPP_SF_ddd(WPP_GLOBAL_Control[3],0x36,&WPP_84ceac4f740134edf97854d6d327bee5_Traceguids,iVar17)
+      WPP_SF_ddd(WPP_GLOBAL_Control[3],0x36,&WPP_5a65a678148e3a2ea0373e5d2657e3ed_Traceguids,iVar17)
       ;
     }
     goto LAB_0;
   }
-  puVar9 = puVar13;
+  puVar9 = puVar14;
   if (sVar2 == 0x105) {
     puVar9 = puVar15;
   }
   if ((*puVar9 & 3) != 0) goto LAB_0;
-  lVar11 = 0xb0;
+  lVar12 = 0xb0;
   if (sVar2 != 0x105) {
-    lVar11 = 0xd8;
-    puVar15 = puVar13;
+    lVar12 = 0xd8;
+    puVar15 = puVar14;
   }
   if (sVar2 == 0x105) {
     puVar18 = puVar8;
   }
-  if ((((ulonglong)*(uint *)(*param_3 + 0x44) < (ulonglong)*puVar18 + (ulonglong)*puVar15 + lVar11)
+  if ((((ulonglong)*(uint *)(*param_3 + 0x44) < (ulonglong)*puVar15 + (ulonglong)*puVar18 + lVar12)
       || ((psVar4[0x11] & 0x1800U) != 0)) ||
      (((*(uint *)(param_2 + 0x6a) & 0x10) != 0 && (psVar4[0x18] != 1)))) goto LAB_0;
-  puVar13 = (uint *)(param_2 + 0x6e);
+  puVar14 = (uint *)(param_2 + 0x6e);
   if (((ushort)psVar4[0x11] >> 10 & 1) != 0) {
-    *puVar13 = *puVar13 | 4;
+    *puVar14 = *puVar14 | 4;
   }
   if ((*(byte *)(psVar4 + 0x11) & 0x20) != 0) {
-    *puVar13 = *puVar13 | 0x20;
+    *puVar14 = *puVar14 | 0x20;
   }
   if ((*(uint *)(psVar4 + 0x16) & 0x4210) == 0 || (*(uint *)(psVar4 + 0x16) & 0x842) == 0) {
-    *puVar13 = *puVar13 | 1;
+    *puVar14 = *puVar14 | 1;
   }
-  puVar13 = (uint *)(param_2 + 0x6e);
+  puVar14 = (uint *)(param_2 + 0x6e);
   if (*param_2 == 0x933) {
     if (*(char *)((longlong)psVar4 + 0x1b) == '\x04') {
-      *puVar13 = *puVar13 | 0x10;
-      goto LAB_1;
+      *puVar14 = *puVar14 | 0x10;
     }
-    if (*(char *)((longlong)psVar4 + 0x1b) == '\r') {
-      *puVar13 = *puVar13 | 0x10;
+    else if (*(char *)((longlong)psVar4 + 0x1b) == '\r') {
+      *puVar14 = *puVar14 | 0x10;
       *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 8;
-      goto LAB_1;
     }
-    if ((byte)(*(char *)((longlong)psVar4 + 0x1b) + 6U) < 3) {
+    else {
+      if (2 < (byte)(*(char *)((longlong)psVar4 + 0x1b) + 6U)) goto LAB_1;
       bVar6 = false;
-      goto LAB_1;
     }
   }
-  if ((*param_2 != 0x934) ||
-     ((*(char *)((longlong)psVar4 + 0x1b) != '\x05' && (*(char *)((longlong)psVar4 + 0x1b) != -7))))
-  {
-    *(undefined4 *)(param_1 + 3) = 0xc0000022;
+  else {
+LAB_1:
+    if ((*param_2 != 0x934) ||
+       ((*(char *)((longlong)psVar4 + 0x1b) != '\x05' && (*(char *)((longlong)psVar4 + 0x1b) != -7))
+       )) {
                     /* WARNING: Subroutine does not return */
-    ExRaiseStatus();
+      UdfRaiseStatusEx((longlong)param_1,0xc0000022,'\0');
+    }
   }
-LAB_1:
   *(char *)(param_2 + 0xfb) = *(char *)((longlong)psVar4 + 0x1b);
   if (*(char *)((longlong)psVar4 + 0x1b) == -7) {
     *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 0x10000000;
   }
   uVar5 = *(undefined8 *)(psVar4 + 0x1c);
   *(undefined8 *)(param_2 + 0x14) = uVar5;
   *(undefined8 *)(param_2 + 0x10) = uVar5;
-  uVar14 = (ulonglong)(*(int *)(lVar10 + 0x44) - 1);
-  *(ulonglong *)(param_2 + 0xc) = *(longlong *)(psVar4 + 0x1c) + uVar14 & ~uVar14;
-  uVar7 = *(int *)(lVar10 + 0x44) - 1;
+  uVar10 = (ulonglong)(*(int *)(lVar11 + 0x44) - 1);
+  *(ulonglong *)(param_2 + 0xc) = *(longlong *)(psVar4 + 0x1c) + uVar10 & ~uVar10;
+  uVar7 = *(int *)(lVar11 + 0x44) - 1;
   if (((ulonglong)uVar7 + *(ulonglong *)(psVar4 + 0x1c) & ~(ulonglong)uVar7) <
       *(ulonglong *)(psVar4 + 0x1c)) {
-    *(undefined4 *)(param_1 + 3) = 0xc0000095;
                     /* WARNING: Subroutine does not return */
-    ExRaiseStatus();
+    UdfRaiseStatusEx((longlong)param_1,0xc0000095,'\0');
   }
-  if ((param_4 == 0) || ((*(uint *)(param_4 + 0xd4) & 0x100000) == 0)) {
-    cVar16 = '\0';
-  }
-  else {
-    cVar16 = '\x01';
-  }
-  UdfInitializeAllocations(param_1,param_2,(longlong)param_3,cVar16);
-  psVar4 = (short *)param_3[2];
-  UdfUpdateTimestampsFromIcbContext
-            ((longlong)param_1,(longlong)param_3,(longlong *)(param_2 + 0xe8));
-  param_2[0xfa] = psVar4[0x18];
-  plVar1 = (longlong *)(param_2 + 0x44);
-  plVar12 = (longlong *)*plVar1;
-  if ((*(uint *)((longlong)plVar12 + 0x4c) & 1) == 0) {
-    if (*psVar4 == 0x105) {
-      lVar10 = *(longlong *)(psVar4 + 0x50);
+  uVar10 = Feature_2146947386__private_IsEnabledDeviceUsageNoInline();
+  if (((int)uVar10 == 0) ||
+     (*(ulonglong *)(psVar4 + 0x1c) <=
+      (ulonglong)(0xffffffffL << ((byte)*(undefined4 *)(lVar11 + 0x48) & 0x3f)))) {
+    if ((param_4 == 0) || ((*(uint *)(param_4 + 0xd4) & 0x100000) == 0)) {
+      cVar16 = '\0';
     }
     else {
-      lVar10 = *(longlong *)(psVar4 + 100);
+      cVar16 = '\x01';
     }
-    plVar12[0xc] = lVar10;
-    if ((*psVar4 == 0x10a) && ((*(uint *)(param_2 + 0x6a) & 0x18) == 0)) {
-      *(undefined4 *)(*plVar1 + 0x38) = *(undefined4 *)(psVar4 + 0x4e);
-      *(uint *)(*plVar1 + 0x3c) = (uint)(ushort)psVar4[0x50];
-      if (*(longlong *)(*plVar1 + 0x38) != 0) {
-        *(uint *)(*plVar1 + 0x30) = *(uint *)(psVar4 + 0x4c) & 0x3fffffff;
-        lVar10 = *plVar1;
-        if ((*(int *)(lVar10 + 0x30) == 0) || (0x3fffffff < *(uint *)(psVar4 + 0x4c))) {
-          *(undefined8 *)(lVar10 + 0x38) = 0;
-          *(undefined4 *)(param_1 + 3) = 0xc0000102;
+    UdfInitializeAllocations(param_1,param_2,(longlong)param_3,cVar16);
+    psVar4 = (short *)param_3[2];
+    UdfUpdateTimestampsFromIcbContext
+              ((longlong)param_1,(longlong)param_3,(longlong *)(param_2 + 0xe8));
+    param_2[0xfa] = psVar4[0x18];
+    plVar1 = (longlong *)(param_2 + 0x44);
+    plVar13 = (longlong *)*plVar1;
+    if ((*(uint *)((longlong)plVar13 + 0x4c) & 1) == 0) {
+      if (*psVar4 == 0x105) {
+        lVar11 = *(longlong *)(psVar4 + 0x50);
+      }
+      else {
+        lVar11 = *(longlong *)(psVar4 + 100);
+      }
+      plVar13[0xc] = lVar11;
+      if ((*psVar4 == 0x10a) && ((*(uint *)(param_2 + 0x6a) & 0x18) == 0)) {
+        *(undefined4 *)(*plVar1 + 0x38) = *(undefined4 *)(psVar4 + 0x4e);
+        *(uint *)(*plVar1 + 0x3c) = (uint)(ushort)psVar4[0x50];
+        if (*(longlong *)(*plVar1 + 0x38) != 0) {
+          *(uint *)(*plVar1 + 0x30) = *(uint *)(psVar4 + 0x4c) & 0x3fffffff;
+          lVar11 = *plVar1;
+          if ((*(int *)(lVar11 + 0x30) == 0) || (0x3fffffff < *(uint *)(psVar4 + 0x4c))) {
+            *(undefined8 *)(lVar11 + 0x38) = 0;
                     /* WARNING: Subroutine does not return */
-          ExRaiseStatus();
+            UdfRaiseStatusEx((longlong)param_1,0xc0000102,'\0');
+          }
+          *(uint *)(lVar11 + 0x3c) = *(uint *)(lVar11 + 0x3c) | 0x80000000;
         }
-        *(uint *)(lVar10 + 0x3c) = *(uint *)(lVar10 + 0x3c) | 0x80000000;
       }
+      plVar13 = (longlong *)(param_2 + 0x44);
+      *(uint *)(*plVar13 + 0x4c) = *(uint *)(*plVar13 + 0x4c) | 1;
     }
-    plVar12 = (longlong *)(param_2 + 0x44);
-    *(uint *)(*plVar12 + 0x4c) = *(uint *)(*plVar12 + 0x4c) | 1;
+    if (*psVar4 == 0x10a) {
+      *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 0x1000;
+    }
+    if (bVar6) {
+      UdfInsertScbTable((ulonglong)plVar13,(longlong)param_2);
+      *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 1;
+    }
+    return;
   }
-  if (*psVar4 == 0x10a) {
-    *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 0x1000;
-  }
-  if (bVar6) {
-    UdfInsertScbTable((ulonglong)plVar12,(longlong)param_2);
-    *(uint *)(param_2 + 0x6a) = *(uint *)(param_2 + 0x6a) | 1;
-  }
-  return;
+LAB_0:
+                    /* WARNING: Subroutine does not return */
+  UdfRaiseStatusEx((longlong)param_1,0xc0000102,'\0');
 }
 

```


## wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath

### Match Info



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

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|fullname|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|refcount|2|2|
|`length`|76|91|
|called|||
|calling|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|paramcount|2|3|
|`address`|1400115a0|14000fb0c|
|`sig`|undefined __fastcall wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath(uint param_1, int param_2)|undefined __fastcall wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath(uint param_1, int param_2, undefined8 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath Diff


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

```


# Modified (No Code Changes)


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

## UdfAdjustDirtyingOpCount

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.84|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfAdjustDirtyingOpCount|UdfAdjustDirtyingOpCount|
|fullname|UdfAdjustDirtyingOpCount|UdfAdjustDirtyingOpCount|
|`refcount`|2|3|
|length|72|72|
|called|||
|`calling`|UdfMarkVolumeClean|UdfCommonWrite<br>UdfMarkVolumeClean|
|paramcount|2|2|
|`address`|1400057b0|1400050c0|
|sig|undefined __fastcall UdfAdjustDirtyingOpCount(longlong param_1, char param_2)|undefined __fastcall UdfAdjustDirtyingOpCount(longlong param_1, char param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfAdjustDirtyingOpCount Calling Diff


```diff
--- UdfAdjustDirtyingOpCount calling
+++ UdfAdjustDirtyingOpCount calling
@@ -0,0 +1 @@
+UdfCommonWrite
```


## NTOSKRNL.EXE::IofCompleteRequest

### Match Info



|Key|ud_8521.sys - ud_8655.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|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|IofCompleteRequest|IofCompleteRequest|
|fullname|NTOSKRNL.EXE::IofCompleteRequest|NTOSKRNL.EXE::IofCompleteRequest|
|`refcount`|3|2|
|length|0|0|
|called|||
|`calling`|UdfCommonWrite<br>UdfCompleteRequest|UdfCompleteRequest|
|paramcount|0|0|
|address|EXTERNAL:000000ae|EXTERNAL:000000ae|
|sig|undefined IofCompleteRequest(void)|undefined IofCompleteRequest(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::IofCompleteRequest Calling Diff


```diff
--- NTOSKRNL.EXE::IofCompleteRequest calling
+++ NTOSKRNL.EXE::IofCompleteRequest calling
@@ -1 +0,0 @@
-UdfCommonWrite
```


## NTOSKRNL.EXE::ExRaiseStatus

### Match Info



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

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|ExRaiseStatus|ExRaiseStatus|
|fullname|NTOSKRNL.EXE::ExRaiseStatus|NTOSKRNL.EXE::ExRaiseStatus|
|`refcount`|106|101|
|length|0|0|
|called|||
|`calling`|<details><summary>Expand for full list:<br>UdfAcquireDeviceShared<br>UdfAcquireResource<br>UdfCheckLegalCS0Dstring<br>UdfCommonCleanup<br>UdfCommonClosePrivate<br>UdfCommonCreate<br>UdfCommonQueryInfo<br>UdfCommonQueryVolInfo<br>UdfCommonRead<br>UdfCompleteScbOpen<br>UdfCreateFileLock</summary>UdfCreateIrpContext<br>UdfFindDataInMetadataStream<br>UdfFindDirEntry<br>UdfFindPrefix<br>UdfFindTargetElements<br>UdfFreeAllocation<br>UdfGetNextAllocationPostProcessing<br>UdfInitRmwSupport<br>UdfInitializeAllocationContext<br>UdfInitializeAllocationSupport<br>UdfInitializeAllocations<br>UdfInitializeScbFromIcbContext<br>UdfInsertPrefix<br>UdfInsertPrefixTreeEntry<br>UdfIsMediaWriteProtected<br>UdfLockUserBuffer<br>UdfLookupActiveIcb<br>UdfLookupActiveIcbInExtent<br>UdfLookupDirEntryPostProcessing<br>UdfLookupEa<br>UdfLookupFileEntryInEnumeration<br>UdfLookupInitialDirEntry<br>UdfLookupMetaVsnOfExtent<br>UdfLookupPsnOfExtent<br>UdfMapUserBuffer<br>UdfMapViewOfDirectory<br>UdfMountVolume<br>UdfMultipleAsync<br>UdfNotifyReportChange<br>UdfPrepareBuffers<br>UdfPrepareForAllocationChange<br>UdfQueryDirectory<br>UdfQueryFeature<br>UdfRaiseStatusEx<br>UdfReadWriteSectors<br>UdfRmwBgFormatWorker<br>UdfRmwIssueIoRequest<br>UdfSeqCacheFlushCache<br>UdfSeqCacheInitialize<br>UdfSeqCacheReadBlocksForFile<br>UdfSeqCacheReserveFileRegion<br>UdfSeqCacheUnReserveFileRegion<br>UdfSetLinkInfo<br>UdfSetRenameInfo<br>UdfTeardownStructures<br>UdfUpdateDirNames<br>UdfUpdateTimestampsFromIcbContext<br>UdfUpdateTimestampsToIcb<br>UdfValidateAndRemoveStreamSuffix<br>UdfVerifyDescriptor<br>UdfVerifyScbBranch<br>UdfVerifyScbOperation<br>UdfVerifyVcb</details>|<details><summary>Expand for full list:<br>UdfAcquireDeviceShared<br>UdfAcquireResource<br>UdfCheckLegalCS0Dstring<br>UdfCommonCleanup<br>UdfCommonClosePrivate<br>UdfCommonCreate<br>UdfCommonQueryInfo<br>UdfCommonQueryVolInfo<br>UdfCommonRead<br>UdfCompleteScbOpen<br>UdfCreateFileLock</summary>UdfCreateIrpContext<br>UdfFindDataInMetadataStream<br>UdfFindDirEntry<br>UdfFindPrefix<br>UdfFindTargetElements<br>UdfFreeAllocation<br>UdfGetBlocksNeeded<br>UdfGetNextAllocationPostProcessing<br>UdfInitRmwSupport<br>UdfInitializeAllocationContext<br>UdfInitializeAllocationSupport<br>UdfInsertPrefix<br>UdfInsertPrefixTreeEntry<br>UdfIsMediaWriteProtected<br>UdfLockUserBuffer<br>UdfLookupActiveIcb<br>UdfLookupActiveIcbInExtent<br>UdfLookupDirEntryPostProcessing<br>UdfLookupEa<br>UdfLookupFileEntryInEnumeration<br>UdfLookupInitialDirEntry<br>UdfLookupMetaVsnOfExtent<br>UdfLookupPsnOfExtent<br>UdfMapUserBuffer<br>UdfMapViewOfDirectory<br>UdfMountVolume<br>UdfMultipleAsync<br>UdfNotifyReportChange<br>UdfPrepareBuffers<br>UdfPrepareForAllocationChange<br>UdfQueryDirectory<br>UdfQueryFeature<br>UdfRaiseStatusEx<br>UdfReadWriteSectors<br>UdfRmwBgFormatWorker<br>UdfRmwIssueIoRequest<br>UdfSeqCacheFlushCache<br>UdfSeqCacheInitialize<br>UdfSeqCacheReadBlocksForFile<br>UdfSeqCacheReserveFileRegion<br>UdfSeqCacheUnReserveFileRegion<br>UdfSetLinkInfo<br>UdfSetRenameInfo<br>UdfTeardownStructures<br>UdfUpdateDirNames<br>UdfUpdateTimestampsFromIcbContext<br>UdfUpdateTimestampsToIcb<br>UdfValidateAndRemoveStreamSuffix<br>UdfVerifyDescriptor<br>UdfVerifyScbBranch<br>UdfVerifyScbOperation<br>UdfVerifyVcb</details>|
|paramcount|0|0|
|`address`|EXTERNAL:00000008|EXTERNAL:0000000a|
|sig|noreturn undefined ExRaiseStatus(void)|noreturn undefined ExRaiseStatus(void)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|True|True|

### NTOSKRNL.EXE::ExRaiseStatus Calling Diff


```diff
--- NTOSKRNL.EXE::ExRaiseStatus calling
+++ NTOSKRNL.EXE::ExRaiseStatus calling
@@ -17,0 +18 @@
+UdfGetBlocksNeeded
@@ -22,2 +22,0 @@
-UdfInitializeAllocations
-UdfInitializeScbFromIcbContext
```


## UdfCleanupIrpContext

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.8|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfCleanupIrpContext|UdfCleanupIrpContext|
|fullname|UdfCleanupIrpContext|UdfCleanupIrpContext|
|`refcount`|13|12|
|length|226|226|
|called|NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExFreeToNPagedLookasideList<br>NTOSKRNL.EXE::IoSetTopLevelIrp|NTOSKRNL.EXE::ExFreePoolWithTag<br>NTOSKRNL.EXE::ExFreeToNPagedLookasideList<br>NTOSKRNL.EXE::IoSetTopLevelIrp|
|`calling`|<details><summary>Expand for full list:<br>UdfCleanVolumeWorker<br>UdfCommonRead<br>UdfCommonWrite<br>UdfCompleteRequest<br>UdfFsdDispatch<br>UdfFspClose<br>UdfFspDispatch<br>UdfPrePostIrp<br>UdfQueueClose<br>UdfRmwBgFormatWorker<br>UdfSeqCacheWriterWorkerRoutineForPOW</summary>UdfSeqCacheWriterWorkerRoutineForVAT</details>|<details><summary>Expand for full list:<br>UdfCleanVolumeWorker<br>UdfCommonRead<br>UdfCompleteRequest<br>UdfFsdDispatch<br>UdfFspClose<br>UdfFspDispatch<br>UdfPrePostIrp<br>UdfQueueClose<br>UdfRmwBgFormatWorker<br>UdfSeqCacheWriterWorkerRoutineForPOW<br>UdfSeqCacheWriterWorkerRoutineForVAT</summary></details>|
|paramcount|2|2|
|`address`|140043060|140041880|
|sig|undefined __fastcall UdfCleanupIrpContext(longlong param_1, char param_2)|undefined __fastcall UdfCleanupIrpContext(longlong param_1, char param_2)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfCleanupIrpContext Calling Diff


```diff
--- UdfCleanupIrpContext calling
+++ UdfCleanupIrpContext calling
@@ -3 +2,0 @@
-UdfCommonWrite
```


## UdfRaiseStatusEx

### Match Info



|Key|ud_8521.sys - ud_8655.sys|
| :---: | :---: |
|diff_type|refcount,address,calling|
|ratio|1.0|
|i_ratio|0.75|
|m_ratio|1.0|
|b_ratio|1.0|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|ud_8521.sys|ud_8655.sys|
| :---: | :---: | :---: |
|name|UdfRaiseStatusEx|UdfRaiseStatusEx|
|fullname|UdfRaiseStatusEx|UdfRaiseStatusEx|
|`refcount`|49|55|
|length|55|55|
|called|NTOSKRNL.EXE::ExRaiseStatus<br>NTOSKRNL.EXE::FsRtlNormalizeNtstatus|NTOSKRNL.EXE::ExRaiseStatus<br>NTOSKRNL.EXE::FsRtlNormalizeNtstatus|
|`calling`|<details><summary>Expand for full list:<br>UdfAddAllocation<br>UdfAddVmcbMapping<br>UdfAllocateBlockForIcb<br>UdfCommonCreate<br>UdfCommonFlushBuffers<br>UdfCommonRead<br>UdfCommonWrite<br>UdfCreateInternalStream<br>UdfCreateLink<br>UdfDasdWrite<br>UdfDetermineVolumeBounding</summary>UdfFlushVolume<br>UdfGenerateFullNameForLcb<br>UdfInitializeIcbContextFromScb<br>UdfInitializeVcb<br>UdfInsertNames<br>UdfMapMetadataView<br>UdfMarkVolumeOpenAndQueueCloseDpc<br>UdfMountVolume<br>UdfNonCachedIo<br>UdfOpenObjectByFileId<br>UdfPerformVerify<br>UdfReadWriteSectors<br>UdfSeqCacheWriteBlocksForFile<br>UdfSetFsLabelInfo<br>UdfSetHiddenAttribute<br>UdfUpdateVcbPhase0<br>UdfVerifyMcbAllocatedInBitmap</details>|<details><summary>Expand for full list:<br>UdfAddAllocation<br>UdfAddVmcbMapping<br>UdfAllocateBlockForIcb<br>UdfCommonCreate<br>UdfCommonFlushBuffers<br>UdfCommonRead<br>UdfCommonWrite<br>UdfCreateInternalStream<br>UdfCreateLink<br>UdfDasdWrite<br>UdfDetermineVolumeBounding</summary>UdfFlushVolume<br>UdfGenerateFullNameForLcb<br>UdfInitializeAllocations<br>UdfInitializeIcbContextFromScb<br>UdfInitializeScbFromIcbContext<br>UdfInitializeVcb<br>UdfInsertNames<br>UdfMapMetadataView<br>UdfMarkVolumeOpenAndQueueCloseDpc<br>UdfMountVolume<br>UdfNonCachedIo<br>UdfOpenObjectByFileId<br>UdfPerformVerify<br>UdfReadWriteSectors<br>UdfSeqCacheWriteBlocksForFile<br>UdfSetFsLabelInfo<br>UdfSetHiddenAttribute<br>UdfUpdateVcbPhase0<br>UdfVerifyMcbAllocatedInBitmap</details>|
|paramcount|3|3|
|`address`|1400087c8|1400080d8|
|sig|noreturn undefined __fastcall UdfRaiseStatusEx(longlong param_1, undefined4 param_2, char param_3)|noreturn undefined __fastcall UdfRaiseStatusEx(longlong param_1, undefined4 param_2, char param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### UdfRaiseStatusEx Calling Diff


```diff
--- UdfRaiseStatusEx calling
+++ UdfRaiseStatusEx calling
@@ -13,0 +14 @@
+UdfInitializeAllocations
@@ -14,0 +16 @@
+UdfInitializeScbFromIcbContext
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-08-19T00:05:14</sub>