# pre.tsp-post.tsp 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_2332850489__private_IsEnabledDeviceUsageNoInline](#feature_2332850489__private_isenableddeviceusagenoinline)
	* [Feature_3862983993__private_IsEnabledDeviceUsageNoInline](#feature_3862983993__private_isenableddeviceusagenoinline)
* [Modified](#modified)
	* [RemoteSPAttach](#remotespattach)
	* [RemoteDoFunc](#remotedofunc)
* [Modified (No Code Changes)](#modified-no-code-changes)
	* [wil_details_IsEnabledFallback](#wil_details_isenabledfallback)

# Visual Chart Diff



```mermaid

flowchart LR

RemoteSPAttach-4-old<--Match 92%-->RemoteSPAttach-4-new
RemoteDoFunc-4-old<--Match 53%-->RemoteDoFunc-4-new

subgraph post.tsp
    RemoteSPAttach-4-new
RemoteDoFunc-4-new
    subgraph Added
direction LR
Feature_2332850489__private_IsEnabledDeviceUsageNoInline
    Feature_3862983993__private_IsEnabledDeviceUsageNoInline
end
end

subgraph pre.tsp
    RemoteSPAttach-4-old
RemoteDoFunc-4-old
    
end

```


```mermaid
pie showData
    title Function Matches - 99.7525%
"unmatched_funcs_len" : 2
"matched_funcs_len" : 806
```



```mermaid
pie showData
    title Matched Function Similarity - 99.6278%
"matched_funcs_with_code_changes_len" : 2
"matched_funcs_with_non_code_changes_len" : 1
"matched_funcs_no_changes_len" : 803
```

# Metadata

## Ghidra Diff Engine

### Command Line

#### Captured Command Line


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


#### Verbose Args


<details>

```
--old ['pre.tsp'] --new [['post.tsp']] --engine VersionTrackingDiff --output-path out --summary False --project-location ghidra_projects --project-name ghidriff --symbols-path symbols --gzfs-path gzfs --base-address None --program-options None --threaded True --force-analysis False --force-diff False --no-symbols False --log-level INFO --file-log-level INFO --log-path ghidriff.log --va False --min-func-len 10 --use-calling-counts False --gdt [] --bsim False --bsim-full False --max-ram-percent 60.0 --print-flags False --jvm-args None --side-by-side False --max-section-funcs 200 --md-title None
```


</details>

#### Download Original PEs


```
wget https://msdl.microsoft.com/download/symbols/REMOTESP.TSP/23A54E6821000/REMOTESP.TSP -O remotesp.tsp.x64.10.0.26100.2894
wget https://msdl.microsoft.com/download/symbols/REMOTESP.TSP/C207A87421000/REMOTESP.TSP -O remotesp.tsp.x64.10.0.26100.3194
```


## Binary Metadata Diff


```diff
--- pre.tsp Meta
+++ post.tsp Meta
@@ -1,44 +1,44 @@
-Program Name: pre.tsp
+Program Name: post.tsp
 Language ID: x86:LE:64:default (4.6)
 Compiler ID: windows
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 180000000
 Maximum Address: ff0000184f
-# of Bytes: 138576
+# of Bytes: 138624
 # of Memory Blocks: 9
-# of Instructions: 16603
-# of Defined Data: 1991
-# of Functions: 403
-# of Symbols: 4345
+# of Instructions: 16639
+# of Defined Data: 2005
+# of Functions: 405
+# of Symbols: 4310
 # of Data Types: 494
 # of Data Type Categories: 30
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.0.4
-Date Created: Thu Aug 27 21:12:23 SGT 2026
+Date Created: Thu Aug 27 21:12:26 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /sessions/fervent-laughing-brahmagupta/rsp/pre.tsp
-Executable MD5: 44fdf79d7f9c9b29a1e62367c10d32c7
-Executable SHA256: 8320b77fe2971811a9a2b8a8fd8f22b5c89857db4ed2a6d1f7417100063c33eb
-FSRL: file:///sessions/fervent-laughing-brahmagupta/rsp/pre.tsp?MD5=44fdf79d7f9c9b29a1e62367c10d32c7
+Executable Location: /sessions/fervent-laughing-brahmagupta/rsp/post.tsp
+Executable MD5: fda2c58a7e5bed668d4417eb3edde202
+Executable SHA256: eeebcd76fc0f83ed06c8689ee7e46751a75de56dbf96b92d6752828bb1ec4f0a
+FSRL: file:///sessions/fervent-laughing-brahmagupta/rsp/post.tsp?MD5=fda2c58a7e5bed668d4417eb3edde202
 PDB Age: 1
 PDB File: remotesp.pdb
-PDB GUID: bc297364-a686-7d76-dac5-aff0277d3338
+PDB GUID: dabfe0a4-f37f-1d81-54b4-99b141d1975d
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: Microsoft Windows Remote Service Provider
-PE Property[FileVersion]: 10.0.26100.2894 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.26100.3194 (WinBuild.160101.0800)
 PE Property[InternalName]: remotesp
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: REMOTESP.TSP
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.26100.2894
+PE Property[ProductVersion]: 10.0.26100.3194
 PE Property[Translation]: 4b00409
 Preferred Root Namespace Category: 
 RTTI Found: false
 Relocatable: true
 SectionAlignment: 4096
 Should Ask To Analyze: false

```


## Program Options


<details>
<summary>Ghidra pre.tsp Decompiler Options</summary>


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

</details>


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


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

</details>


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


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

</details>


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


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

</details>


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


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

</details>


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


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

</details>

## Diff Stats



|Stat|Value|
| :---: | :---: |
|added_funcs_len|2|
|deleted_funcs_len|0|
|modified_funcs_len|3|
|added_symbols_len|8|
|deleted_symbols_len|0|
|diff_time|2.558340549468994|
|deleted_strings_len|0|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 402, 'ExternalsName': 136})|
|items_to_process|13|
|diff_types|Counter({'address': 3, 'code': 2, 'length': 2, 'called': 2, 'sig': 1, 'refcount': 1, 'calling': 1})|
|unmatched_funcs_len|2|
|total_funcs_len|808|
|matched_funcs_len|806|
|matched_funcs_with_code_changes_len|2|
|matched_funcs_with_non_code_changes_len|1|
|matched_funcs_no_changes_len|803|
|match_func_similarity_percent|99.6278%|
|func_match_overall_percent|99.7525%|
|first_matches|Counter({'SymbolsHash': 402})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 402
"ExternalsName" : 136
```



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



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



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

## Strings


*No string differences found*

# Deleted

# Added

## Feature_2332850489__private_IsEnabledDeviceUsageNoInline

### Function Meta



|Key|post.tsp|
| :---: | :---: |
|name|Feature_2332850489__private_IsEnabledDeviceUsageNoInline|
|fullname|Feature_2332850489__private_IsEnabledDeviceUsageNoInline|
|refcount|1|
|length|51|
|called|wil_details_IsEnabledFallback|
|calling|RemoteDoFunc|
|paramcount|0|
|address|1800041e8|
|sig|uint __fastcall Feature_2332850489__private_IsEnabledDeviceUsageNoInline(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_2332850489__private_IsEnabledDeviceUsageNoInline
+++ Feature_2332850489__private_IsEnabledDeviceUsageNoInline
@@ -0,0 +1,15 @@
+
+uint Feature_2332850489__private_IsEnabledDeviceUsageNoInline(void)
+
+{
+  uint uVar1;
+  ulonglong local_res8;
+  
+  local_res8 = (ulonglong)Feature_2332850489__private_featureState;
+  if ((Feature_2332850489__private_featureState & 0x10) != 0) {
+    return Feature_2332850489__private_featureState & 1;
+  }
+  uVar1 = wil_details_IsEnabledFallback(local_res8,3,&Feature_2332850489__private_descriptor);
+  return uVar1;
+}
+

```


## Feature_3862983993__private_IsEnabledDeviceUsageNoInline

### Function Meta



|Key|post.tsp|
| :---: | :---: |
|name|Feature_3862983993__private_IsEnabledDeviceUsageNoInline|
|fullname|Feature_3862983993__private_IsEnabledDeviceUsageNoInline|
|refcount|1|
|length|51|
|called|wil_details_IsEnabledFallback|
|calling|RemoteSPAttach|
|paramcount|0|
|address|1800042b4|
|sig|uint __fastcall Feature_3862983993__private_IsEnabledDeviceUsageNoInline(void)|
|sym_type|Function|
|sym_source|IMPORTED|
|external|False|


```diff
--- Feature_3862983993__private_IsEnabledDeviceUsageNoInline
+++ Feature_3862983993__private_IsEnabledDeviceUsageNoInline
@@ -0,0 +1,15 @@
+
+uint Feature_3862983993__private_IsEnabledDeviceUsageNoInline(void)
+
+{
+  uint uVar1;
+  ulonglong local_res8;
+  
+  local_res8 = (ulonglong)Feature_3862983993__private_featureState;
+  if ((Feature_3862983993__private_featureState & 0x10) != 0) {
+    return Feature_3862983993__private_featureState & 1;
+  }
+  uVar1 = wil_details_IsEnabledFallback(local_res8,3,&Feature_3862983993__private_descriptor);
+  return uVar1;
+}
+

```


# Modified


*Modified functions contain code changes*
## RemoteSPAttach

### Match Info



|Key|pre.tsp - post.tsp|
| :---: | :---: |
|diff_type|code,length,address,called|
|ratio|0.9|
|i_ratio|0.73|
|m_ratio|0.93|
|b_ratio|0.92|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.tsp|post.tsp|
| :---: | :---: | :---: |
|name|RemoteSPAttach|RemoteSPAttach|
|fullname|RemoteSPAttach|RemoteSPAttach|
|refcount|3|3|
|`length`|268|300|
|`called`|RPCRT4.DLL::RpcRaiseException<br>RPCRT4.DLL::RpcServerInqCallAttributesA<br>TRACELogPrint<br>__security_check_cookie<br>memset|Feature_3862983993__private_IsEnabledDeviceUsageNoInline<br>RPCRT4.DLL::RpcRaiseException<br>RPCRT4.DLL::RpcServerInqCallAttributesA<br>TRACELogPrint<br>__security_check_cookie<br>memset|
|calling|||
|paramcount|4|4|
|`address`|180007680|180007720|
|sig|undefined8 __fastcall RemoteSPAttach(longlong * param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)|undefined8 __fastcall RemoteSPAttach(longlong * param_1, undefined8 param_2, undefined8 param_3, undefined8 param_4)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### RemoteSPAttach Called Diff


```diff
--- RemoteSPAttach called
+++ RemoteSPAttach called
@@ -0,0 +1 @@
+Feature_3862983993__private_IsEnabledDeviceUsageNoInline
```


### RemoteSPAttach Diff


```diff
--- RemoteSPAttach
+++ RemoteSPAttach
@@ -1,43 +1,49 @@
 
 /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
 
 undefined8
 RemoteSPAttach(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4)
 
 {
   longlong lVar1;
   uint uVar2;
   undefined1 auStack_b8 [32];
   undefined4 local_98;
   undefined4 local_94;
   undefined1 local_90 [32];
   uint local_70;
   ulonglong local_18;
   
   local_18 = __security_cookie ^ (ulonglong)auStack_b8;
   TRACELogPrint(0x40002,"RemoteSPAttach: enter",param_3,param_4);
   memset(local_90,0,0x70);
   local_94 = 0;
   local_98 = 3;
   uVar2 = RpcServerInqCallAttributesA(0,&local_98);
   if (uVar2 != 0) {
     TRACELogPrint(0x10002,
                   "RemoteSPAttach(%s): Failed to retrieve the RPC call attributes, error 0x%x",
                   gpCurrInitServer + 0x5c,(ulonglong)uVar2);
                     /* WARNING: Subroutine does not return */
     RpcRaiseException(5);
   }
   TRACELogPrint(0x40002,"RemoteSPAttach(%s): Auth level = 0x%x",gpCurrInitServer + 0x5c,
                 (ulonglong)local_70);
-  lVar1 = gpCurrInitServer;
   if ((local_70 != 6) && (gdwHighSecurity != 0)) {
     TRACELogPrint(0x10002,"RemoteSPAttach(%s): unsecure call, AuthLevel=0x%x",
                   gpCurrInitServer + 0x5c,(ulonglong)local_70);
                     /* WARNING: Subroutine does not return */
     RpcRaiseException(5);
   }
+  uVar2 = Feature_3862983993__private_IsEnabledDeviceUsageNoInline();
+  if ((uVar2 != 0) && (*(int *)(gpCurrInitServer + 0x34) != 0)) {
+    LOCK();
+    *gpCurrentInitContext = *gpCurrentInitContext + 1;
+    UNLOCK();
+  }
+  lVar1 = gpCurrInitServer;
   *param_1 = gpCurrInitServer;
   *(undefined4 *)(lVar1 + 0x34) = 1;
   return 0;
 }
 

```


## RemoteDoFunc

### Match Info



|Key|pre.tsp - post.tsp|
| :---: | :---: |
|diff_type|code,length,sig,address,called|
|ratio|0.47|
|i_ratio|0.54|
|m_ratio|1.0|
|b_ratio|0.53|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|pre.tsp|post.tsp|
| :---: | :---: | :---: |
|name|RemoteDoFunc|RemoteDoFunc|
|fullname|RemoteDoFunc|RemoteDoFunc|
|refcount|122|122|
|`length`|2570|2590|
|`called`|<details><summary>Expand for full list:<br>ClearImpersonationToken<br>ClientRequest<br>DereferenceObject<br>Feature_1038946617__private_IsEnabledDeviceUsageNoInline<br>Feature_2699111737__private_IsEnabledDeviceUsageNoInline<br>Feature_3035442489__private_IsEnabledDeviceUsageNoInline<br>GetLineFromID<br>GetPhoneFromID<br>GetTls<br>GrowBuf<br>IsValidObject</summary>KERNEL32.DLL::GetLastError<br>KERNEL32.DLL::lstrlenW<br>NewObject<br>OnServerDisconnected<br>RPCRT4.DLL::RpcImpersonateClient<br>RPCRT4.DLL::RpcRevertToSelf<br>SetProcessImpersonationToken<br>TRACELogPrint<br>memcpy</details>|<details><summary>Expand for full list:<br>ClearImpersonationToken<br>ClientRequest<br>DereferenceObject<br>Feature_1038946617__private_IsEnabledDeviceUsageNoInline<br>Feature_2332850489__private_IsEnabledDeviceUsageNoInline<br>Feature_2699111737__private_IsEnabledDeviceUsageNoInline<br>Feature_3035442489__private_IsEnabledDeviceUsageNoInline<br>GetLineFromID<br>GetPhoneFromID<br>GetTls<br>GrowBuf</summary>IsValidObject<br>KERNEL32.DLL::GetLastError<br>KERNEL32.DLL::lstrlenW<br>NewObject<br>OnServerDisconnected<br>RPCRT4.DLL::RpcImpersonateClient<br>RPCRT4.DLL::RpcRevertToSelf<br>SetProcessImpersonationToken<br>TRACELogPrint<br>memcpy</details>|
|calling|<details><summary>Expand for full list:<br>AddLine<br>AddPhone<br>RSPSetEventFilterMasks<br>TSPI_lineAccept<br>TSPI_lineAddToConference<br>TSPI_lineAgentSpecific<br>TSPI_lineAnswer<br>TSPI_lineBlindTransfer<br>TSPI_lineClose<br>TSPI_lineCloseCall<br>TSPI_lineCompleteCall</summary>TSPI_lineCompleteTransfer<br>TSPI_lineConditionalMediaDetection<br>TSPI_lineCreateAgent<br>TSPI_lineCreateAgentSession<br>TSPI_lineDevSpecific<br>TSPI_lineDevSpecificFeature<br>TSPI_lineDial<br>TSPI_lineDrop<br>TSPI_lineForward<br>TSPI_lineGatherDigits<br>TSPI_lineGenerateDigits<br>TSPI_lineGenerateTone<br>TSPI_lineGetAddressCaps<br>TSPI_lineGetAddressID<br>TSPI_lineGetAddressStatus<br>TSPI_lineGetAgentActivityList<br>TSPI_lineGetAgentCaps<br>TSPI_lineGetAgentGroupList<br>TSPI_lineGetAgentInfo<br>TSPI_lineGetAgentSessionInfo<br>TSPI_lineGetAgentSessionList<br>TSPI_lineGetAgentStatus<br>TSPI_lineGetCallHubTracking<br>TSPI_lineGetCallIDs<br>TSPI_lineGetCallInfo<br>TSPI_lineGetCallStatus<br>TSPI_lineGetDevCaps<br>TSPI_lineGetDevConfig<br>TSPI_lineGetGroupList<br>TSPI_lineGetID<br>TSPI_lineGetLineDevStatus<br>TSPI_lineGetNumAddressIDs<br>TSPI_lineGetProxyStatus<br>TSPI_lineGetQueueInfo<br>TSPI_lineGetQueueList<br>TSPI_lineHold<br>TSPI_lineMakeCall<br>TSPI_lineMonitorDigits<br>TSPI_lineMonitorMedia<br>TSPI_lineMonitorTones<br>TSPI_lineNegotiateExtVersion<br>TSPI_lineOpen<br>TSPI_linePark<br>TSPI_linePickup<br>TSPI_linePrepareAddToConference<br>TSPI_lineRedirect<br>TSPI_lineReleaseUserUserInfo<br>TSPI_lineRemoveFromConference<br>TSPI_lineSecureCall<br>TSPI_lineSelectExtVersion<br>TSPI_lineSendUserUserInfo<br>TSPI_lineSetAgentActivity<br>TSPI_lineSetAgentGroup<br>TSPI_lineSetAgentMeasurementPeriod<br>TSPI_lineSetAgentSessionState<br>TSPI_lineSetAgentState<br>TSPI_lineSetAgentStateEx<br>TSPI_lineSetAppSpecific<br>TSPI_lineSetCallData<br>TSPI_lineSetCallHubTracking<br>TSPI_lineSetCallParams<br>TSPI_lineSetCallQualityOfService<br>TSPI_lineSetCallTreatment<br>TSPI_lineSetDefaultMediaDetection<br>TSPI_lineSetDevConfig<br>TSPI_lineSetLineDevStatus<br>TSPI_lineSetMediaControl<br>TSPI_lineSetMediaMode<br>TSPI_lineSetQueueMeasurementPeriod<br>TSPI_lineSetStatusMessages<br>TSPI_lineSetTerminal<br>TSPI_lineSetupConference<br>TSPI_lineSetupTransfer<br>TSPI_lineSwapHold<br>TSPI_lineUncompleteCall<br>TSPI_lineUnhold<br>TSPI_lineUnpark<br>TSPI_phoneClose<br>TSPI_phoneDevSpecific<br>TSPI_phoneGetButtonInfo<br>TSPI_phoneGetData<br>TSPI_phoneGetDevCaps<br>TSPI_phoneGetDisplay<br>TSPI_phoneGetGain<br>TSPI_phoneGetHookSwitch<br>TSPI_phoneGetID<br>TSPI_phoneGetLamp<br>TSPI_phoneGetRing<br>TSPI_phoneGetStatus<br>TSPI_phoneGetVolume<br>TSPI_phoneNegotiateExtVersion<br>TSPI_phoneOpen<br>TSPI_phoneSelectExtVersion<br>TSPI_phoneSetButtonInfo<br>TSPI_phoneSetData<br>TSPI_phoneSetDisplay<br>TSPI_phoneSetGain<br>TSPI_phoneSetHookSwitch<br>TSPI_phoneSetLamp<br>TSPI_phoneSetRing<br>TSPI_phoneSetStatusMessages<br>TSPI_phoneSetVolume<br>TSPI_providerCreateLineDevice<br>TSPI_providerCreatePhoneDevice<br>TSPI_providerGenericDialogData<br>TSPI_providerUIIdentify</details>|<details><summary>Expand for full list:<br>AddLine<br>AddPhone<br>RSPSetEventFilterMasks<br>TSPI_lineAccept<br>TSPI_lineAddToConference<br>TSPI_lineAgentSpecific<br>TSPI_lineAnswer<br>TSPI_lineBlindTransfer<br>TSPI_lineClose<br>TSPI_lineCloseCall<br>TSPI_lineCompleteCall</summary>TSPI_lineCompleteTransfer<br>TSPI_lineConditionalMediaDetection<br>TSPI_lineCreateAgent<br>TSPI_lineCreateAgentSession<br>TSPI_lineDevSpecific<br>TSPI_lineDevSpecificFeature<br>TSPI_lineDial<br>TSPI_lineDrop<br>TSPI_lineForward<br>TSPI_lineGatherDigits<br>TSPI_lineGenerateDigits<br>TSPI_lineGenerateTone<br>TSPI_lineGetAddressCaps<br>TSPI_lineGetAddressID<br>TSPI_lineGetAddressStatus<br>TSPI_lineGetAgentActivityList<br>TSPI_lineGetAgentCaps<br>TSPI_lineGetAgentGroupList<br>TSPI_lineGetAgentInfo<br>TSPI_lineGetAgentSessionInfo<br>TSPI_lineGetAgentSessionList<br>TSPI_lineGetAgentStatus<br>TSPI_lineGetCallHubTracking<br>TSPI_lineGetCallIDs<br>TSPI_lineGetCallInfo<br>TSPI_lineGetCallStatus<br>TSPI_lineGetDevCaps<br>TSPI_lineGetDevConfig<br>TSPI_lineGetGroupList<br>TSPI_lineGetID<br>TSPI_lineGetLineDevStatus<br>TSPI_lineGetNumAddressIDs<br>TSPI_lineGetProxyStatus<br>TSPI_lineGetQueueInfo<br>TSPI_lineGetQueueList<br>TSPI_lineHold<br>TSPI_lineMakeCall<br>TSPI_lineMonitorDigits<br>TSPI_lineMonitorMedia<br>TSPI_lineMonitorTones<br>TSPI_lineNegotiateExtVersion<br>TSPI_lineOpen<br>TSPI_linePark<br>TSPI_linePickup<br>TSPI_linePrepareAddToConference<br>TSPI_lineRedirect<br>TSPI_lineReleaseUserUserInfo<br>TSPI_lineRemoveFromConference<br>TSPI_lineSecureCall<br>TSPI_lineSelectExtVersion<br>TSPI_lineSendUserUserInfo<br>TSPI_lineSetAgentActivity<br>TSPI_lineSetAgentGroup<br>TSPI_lineSetAgentMeasurementPeriod<br>TSPI_lineSetAgentSessionState<br>TSPI_lineSetAgentState<br>TSPI_lineSetAgentStateEx<br>TSPI_lineSetAppSpecific<br>TSPI_lineSetCallData<br>TSPI_lineSetCallHubTracking<br>TSPI_lineSetCallParams<br>TSPI_lineSetCallQualityOfService<br>TSPI_lineSetCallTreatment<br>TSPI_lineSetDefaultMediaDetection<br>TSPI_lineSetDevConfig<br>TSPI_lineSetLineDevStatus<br>TSPI_lineSetMediaControl<br>TSPI_lineSetMediaMode<br>TSPI_lineSetQueueMeasurementPeriod<br>TSPI_lineSetStatusMessages<br>TSPI_lineSetTerminal<br>TSPI_lineSetupConference<br>TSPI_lineSetupTransfer<br>TSPI_lineSwapHold<br>TSPI_lineUncompleteCall<br>TSPI_lineUnhold<br>TSPI_lineUnpark<br>TSPI_phoneClose<br>TSPI_phoneDevSpecific<br>TSPI_phoneGetButtonInfo<br>TSPI_phoneGetData<br>TSPI_phoneGetDevCaps<br>TSPI_phoneGetDisplay<br>TSPI_phoneGetGain<br>TSPI_phoneGetHookSwitch<br>TSPI_phoneGetID<br>TSPI_phoneGetLamp<br>TSPI_phoneGetRing<br>TSPI_phoneGetStatus<br>TSPI_phoneGetVolume<br>TSPI_phoneNegotiateExtVersion<br>TSPI_phoneOpen<br>TSPI_phoneSelectExtVersion<br>TSPI_phoneSetButtonInfo<br>TSPI_phoneSetData<br>TSPI_phoneSetDisplay<br>TSPI_phoneSetGain<br>TSPI_phoneSetHookSwitch<br>TSPI_phoneSetLamp<br>TSPI_phoneSetRing<br>TSPI_phoneSetStatusMessages<br>TSPI_phoneSetVolume<br>TSPI_providerCreateLineDevice<br>TSPI_providerCreatePhoneDevice<br>TSPI_providerGenericDialogData<br>TSPI_providerUIIdentify</details>|
|paramcount|4|3|
|`address`|180006b90|180006c20|
|`sig`|uint __fastcall RemoteDoFunc(uint * param_1, undefined8 param_2, undefined8 param_3, uint * param_4)|uint __fastcall RemoteDoFunc(uint * param_1, undefined8 param_2, ulonglong param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### RemoteDoFunc Called Diff


```diff
--- RemoteDoFunc called
+++ RemoteDoFunc called
@@ -4,0 +5 @@
+Feature_2332850489__private_IsEnabledDeviceUsageNoInline
```


### RemoteDoFunc Diff


```diff
--- RemoteDoFunc
+++ RemoteDoFunc
@@ -1,535 +1,537 @@
 
-uint RemoteDoFunc(uint *param_1,undefined8 param_2,undefined8 param_3,uint *param_4)
+uint RemoteDoFunc(uint *param_1,undefined8 param_2,ulonglong param_3)
 
 {
   undefined4 uVar1;
   uint uVar2;
   int iVar3;
   int iVar4;
   DWORD DVar5;
   longlong *plVar6;
   longlong lVar7;
   undefined8 uVar8;
   uint uVar9;
-  LPCWSTR pWVar10;
-  uint *puVar11;
+  ulonglong uVar10;
+  LPCWSTR pWVar11;
   undefined4 *puVar12;
   char *pcVar13;
-  uint uVar14;
-  ulonglong uVar15;
-  uint uVar16;
-  size_t sVar17;
-  ulonglong uVar18;
+  uint *puVar14;
+  uint uVar15;
+  uint *puVar16;
+  uint uVar17;
+  LPCWSTR pWVar18;
   ulonglong uVar19;
-  LPCWSTR pWVar20;
-  uint uVar21;
-  bool bVar22;
+  uint uVar20;
+  bool bVar21;
   uint local_68;
   uint local_64;
-  uint *local_60;
-  uint local_58;
-  uint local_54;
+  uint local_60;
+  uint *local_58;
   uint local_50;
+  uint local_4c;
   LPCWSTR local_48;
   uint *local_40;
   uint local_38;
   uint local_34;
   int local_30;
   int local_2c;
   uint local_28;
   uint local_24;
   longlong *local_20;
   
   local_30 = 0;
   local_2c = 0;
-  uVar21 = *param_1 >> 4 & 3;
-  uVar19 = (ulonglong)uVar21;
-  local_50 = 0;
+  uVar20 = *param_1 >> 4 & 3;
+  uVar19 = (ulonglong)uVar20;
+  local_4c = 0;
   local_34 = 0;
-  pWVar20 = (LPCWSTR)0x0;
+  pWVar18 = (LPCWSTR)0x0;
   local_48 = (LPCWSTR)0x0;
-  if (2 < uVar21) {
+  if (2 < uVar20) {
     return 0x80000048;
   }
-  local_60 = param_1;
+  local_58 = param_1;
   local_40 = param_1;
-  local_28 = uVar21;
+  local_28 = uVar20;
   plVar6 = GetTls();
   if (plVar6 == (longlong *)0x0) {
 LAB_0:
     return *(uint *)(&gaNoMemErrors + uVar19 * 4);
   }
-  uVar16 = 0x3c;
+  uVar17 = 0x3c;
   local_64 = 0x3c;
-  uVar18 = 0;
-  uVar15 = 0;
+  uVar10 = 0;
+  puVar16 = (uint *)0x0;
   local_20 = plVar6;
   while( true ) {
-    local_58 = (uint)uVar15;
-    local_54 = (uint)uVar18;
-    if ((*param_1 & 0xf) <= local_54) break;
+    local_60 = (uint)puVar16;
+    local_50 = (uint)uVar10;
+    if ((*param_1 & 0xf) <= local_50) break;
     lVar7 = *(longlong *)(param_1 + 2);
-    pWVar10 = *(LPCWSTR *)(lVar7 + uVar18 * 8);
-    iVar3 = *(int *)(*(longlong *)(local_60 + 4) + uVar18 * 4);
-    param_4 = local_60;
-    param_1 = local_60;
+    pWVar11 = *(LPCWSTR *)(lVar7 + uVar10 * 8);
+    iVar3 = *(int *)(*(longlong *)(local_58 + 4) + uVar10 * 4);
+    param_3 = uVar10;
+    param_1 = local_58;
     if (iVar3 < 8) {
       if (iVar3 == 7) {
-        if (pWVar10 == (LPCWSTR)0x0) {
-          *(undefined4 *)(plVar6[2] + 8 + uVar15 * 4) = 0xffffffff;
+        if (pWVar11 == (LPCWSTR)0x0) {
+          *(undefined4 *)(plVar6[2] + 8 + (longlong)puVar16 * 4) = 0xffffffff;
         }
         else {
           local_68 = 0;
-          uVar2 = lstrlenW(pWVar10);
-          param_4 = (uint *)0xffffffff;
-          bVar22 = uVar2 + 1 < uVar2;
-          if (bVar22) {
-            sVar17 = 0;
+          uVar2 = lstrlenW(pWVar11);
+          bVar21 = uVar2 + 1 < uVar2;
+          if (bVar21) {
+            param_3 = 0;
           }
           else {
-            uVar18 = (ulonglong)(uVar2 + 1) * 2;
-            sVar17 = 0xffffffff;
-            if (uVar18 < 0x100000000) {
-              sVar17 = uVar18 & 0xffffffff;
-            }
-            local_68 = (uint)sVar17;
-            bVar22 = 0xffffffff < uVar18;
-          }
-          if ((int)-(uint)bVar22 < 0) goto LAB_0;
-          uVar2 = (uint)sVar17;
+            uVar10 = (ulonglong)(uVar2 + 1) * 2;
+            param_3 = 0xffffffff;
+            if (uVar10 < 0x100000000) {
+              param_3 = uVar10 & 0xffffffff;
+            }
+            local_68 = (uint)param_3;
+            bVar21 = 0xffffffff < uVar10;
+          }
+          if ((int)-(uint)bVar21 < 0) goto LAB_0;
+          uVar2 = (uint)param_3;
           uVar9 = uVar2 + 3;
-          uVar14 = 0xffffffff;
+          uVar15 = 0xffffffff;
           if (uVar2 <= uVar9) {
-            uVar14 = uVar9;
-          }
-          uVar14 = uVar14 & 0xfffffffc;
-          if ((uVar9 < uVar2) || (uVar14 + local_64 < uVar14)) goto LAB_0;
-          if (*(uint *)(plVar6 + 3) < uVar14 + local_64) {
-            param_4 = (uint *)(ulonglong)uVar14;
-            uVar8 = GrowBuf(plVar6 + 2,(uint *)(plVar6 + 3),local_64,uVar14);
+            uVar15 = uVar9;
+          }
+          uVar15 = uVar15 & 0xfffffffc;
+          if ((uVar9 < uVar2) || (uVar15 + local_64 < uVar15)) goto LAB_0;
+          if (*(uint *)(plVar6 + 3) < uVar15 + local_64) {
+            uVar8 = GrowBuf(plVar6 + 2,(uint *)(plVar6 + 3),local_64,uVar15);
             if ((int)uVar8 == 0) goto LAB_0;
-            sVar17 = (size_t)local_68;
-          }
-          memcpy((void *)((ulonglong)local_64 + plVar6[2]),pWVar10,sVar17);
-          *(uint *)(plVar6[2] + 8 + (ulonglong)local_58 * 4) = local_64 - 0x3c;
+            param_3 = (ulonglong)local_68;
+          }
+          memcpy((void *)((ulonglong)local_64 + plVar6[2]),pWVar11,param_3);
+          *(uint *)(plVar6[2] + 8 + (ulonglong)local_60 * 4) = local_64 - 0x3c;
           uVar2 = Feature_2699111737__private_IsEnabledDeviceUsageNoInline();
           if (uVar2 == 0) {
-            local_64 = local_64 + uVar14;
-            uVar16 = uVar16 + uVar14;
+            local_64 = local_64 + uVar15;
+            uVar17 = uVar17 + uVar15;
 LAB_1:
-            uVar15 = (ulonglong)local_58;
-            param_1 = local_60;
+            puVar16 = (uint *)(ulonglong)local_60;
+            param_1 = local_58;
           }
           else {
-            uVar2 = uVar14 + local_64;
+            uVar2 = uVar15 + local_64;
             if (uVar2 < local_64) {
               iVar3 = -0x7ff8fdea;
               uVar2 = 0xffffffff;
             }
             else {
               iVar3 = 0;
             }
             if (iVar3 < 0) {
               return 0x80000048;
             }
-            if (uVar14 + uVar16 < uVar16) {
+            if (uVar15 + uVar17 < uVar17) {
               return 0x80000048;
             }
-            uVar15 = (ulonglong)local_58;
-            param_1 = local_60;
-            uVar16 = uVar14 + uVar16;
+            puVar16 = (uint *)(ulonglong)local_60;
+            param_1 = local_58;
+            uVar17 = uVar15 + uVar17;
             local_64 = uVar2;
           }
         }
       }
       else if (iVar3 == 0) {
-        uVar1 = *(undefined4 *)(lVar7 + uVar18 * 8);
+        uVar1 = *(undefined4 *)(lVar7 + uVar10 * 8);
 LAB_2:
-        *(undefined4 *)(plVar6[2] + 8 + uVar15 * 4) = uVar1;
+        *(undefined4 *)(plVar6[2] + 8 + (longlong)puVar16 * 4) = uVar1;
       }
       else {
         if (iVar3 == 1) {
-          lVar7 = GetLineFromID((uint)pWVar10);
-          pWVar20 = *(LPCWSTR *)(lVar7 + 0x28);
+          lVar7 = GetLineFromID((uint)pWVar11);
+          pWVar18 = *(LPCWSTR *)(lVar7 + 0x28);
         }
         else {
           if (iVar3 != 2) {
             if (iVar3 == 3) {
-              pWVar20 = *(LPCWSTR *)(pWVar10 + 4);
-              *(undefined4 *)(plVar6[2] + 8 + uVar15 * 4) = *(undefined4 *)(pWVar10 + 0xe);
-              local_48 = pWVar20;
+              pWVar18 = *(LPCWSTR *)(pWVar11 + 4);
+              *(undefined4 *)(plVar6[2] + 8 + (longlong)puVar16 * 4) =
+                   *(undefined4 *)(pWVar11 + 0xe);
+              local_48 = pWVar18;
               goto LAB_3;
             }
             if (iVar3 == 4) {
-              pWVar20 = *(LPCWSTR *)(pWVar10 + 0x14);
+              pWVar18 = *(LPCWSTR *)(pWVar11 + 0x14);
             }
             else {
               if (iVar3 != 5) {
                 if (iVar3 == 6) {
-                  *(undefined4 *)(plVar6[2] + 8 + uVar15 * 4) = 0xffffffff;
+                  *(undefined4 *)(plVar6[2] + 8 + (longlong)puVar16 * 4) = 0xffffffff;
                   local_30 = 1;
                 }
                 goto LAB_3;
               }
-              pWVar20 = *(LPCWSTR *)(pWVar10 + 0xc);
-            }
-            uVar1 = *(undefined4 *)(pWVar10 + 10);
-            local_48 = pWVar20;
+              pWVar18 = *(LPCWSTR *)(pWVar11 + 0xc);
+            }
+            uVar1 = *(undefined4 *)(pWVar11 + 10);
+            local_48 = pWVar18;
             goto LAB_2;
           }
-          lVar7 = GetPhoneFromID((uint)pWVar10);
-          pWVar20 = *(LPCWSTR *)(lVar7 + 0x18);
-        }
-        uVar15 = (ulonglong)local_58;
-        *(undefined4 *)(plVar6[2] + 8 + uVar15 * 4) = *(undefined4 *)(lVar7 + 8);
-        param_1 = local_60;
-        local_48 = pWVar20;
+          lVar7 = GetPhoneFromID((uint)pWVar11);
+          pWVar18 = *(LPCWSTR *)(lVar7 + 0x18);
+        }
+        puVar16 = (uint *)(ulonglong)local_60;
+        *(undefined4 *)(plVar6[2] + 8 + (longlong)puVar16 * 4) = *(undefined4 *)(lVar7 + 8);
+        param_3 = uVar10;
+        param_1 = local_58;
+        local_48 = pWVar18;
       }
     }
     else {
       if (iVar3 != 8) {
         if ((iVar3 == 9) || (iVar3 == 10)) {
           if (iVar3 == 9) {
-            if (pWVar10 == (LPCWSTR)0x0) {
+            if (pWVar11 == (LPCWSTR)0x0) {
 LAB_4:
-              sVar17 = 0;
+              param_3 = 0;
             }
             else {
-              sVar17 = (size_t)*(uint *)(lVar7 + (ulonglong)(local_54 + 1) * 8);
+              param_3 = (ulonglong)*(uint *)(lVar7 + (ulonglong)(local_50 + 1) * 8);
             }
           }
           else {
-            if (pWVar10 == (LPCWSTR)0x0) goto LAB_4;
-            sVar17 = (size_t)*(uint *)pWVar10;
-          }
-          uVar2 = (uint)sVar17;
+            if (pWVar11 == (LPCWSTR)0x0) goto LAB_4;
+            param_3 = (ulonglong)*(uint *)pWVar11;
+          }
+          uVar2 = (uint)param_3;
           if (uVar2 == 0) {
-            uVar14 = 0;
+            uVar15 = 0;
           }
           else {
-            uVar9 = uVar2 + 3;
-            uVar14 = 0xffffffff;
-            if (uVar2 <= uVar9) {
-              uVar14 = uVar9;
-            }
-            local_24 = uVar14 & 0xfffffffc;
-            if (uVar9 < uVar2) {
-              local_24 = uVar14;
-            }
-            puVar11 = (uint *)(ulonglong)local_24;
-            if (((uVar9 < uVar2) || (local_24 + local_64 < local_24)) ||
+            uVar15 = uVar2 + 3;
+            local_24 = 0xffffffff;
+            if (uVar2 <= uVar15) {
+              local_24 = uVar15;
+            }
+            local_24 = local_24 & 0xfffffffc;
+            if (((uVar15 < uVar2) || (local_24 + local_64 < local_24)) ||
                ((*(uint *)(plVar6 + 3) < local_24 + local_64 &&
-                (uVar8 = GrowBuf(plVar6 + 2,(uint *)(plVar6 + 3),local_64,local_24),
-                param_4 = puVar11, (int)uVar8 == 0)))) goto LAB_0;
-            memcpy((void *)((ulonglong)local_64 + plVar6[2]),pWVar10,sVar17);
-            uVar15 = (ulonglong)local_58;
-            uVar14 = local_24;
+                (uVar8 = GrowBuf(plVar6 + 2,(uint *)(plVar6 + 3),local_64,local_24), (int)uVar8 == 0
+                )))) goto LAB_0;
+            memcpy((void *)((ulonglong)local_64 + plVar6[2]),pWVar11,param_3);
+            puVar16 = (uint *)(ulonglong)local_60;
+            uVar15 = local_24;
           }
           if (uVar2 == 0) {
-            *(undefined4 *)(plVar6[2] + 8 + uVar15 * 4) = 0xffffffff;
+            *(undefined4 *)(plVar6[2] + 8 + (longlong)puVar16 * 4) = 0xffffffff;
           }
           else {
-            *(uint *)(plVar6[2] + 8 + uVar15 * 4) = local_64 - 0x3c;
+            *(uint *)(plVar6[2] + 8 + (longlong)puVar16 * 4) = local_64 - 0x3c;
           }
           uVar2 = Feature_2699111737__private_IsEnabledDeviceUsageNoInline();
           if (uVar2 == 0) {
-            local_64 = local_64 + uVar14;
+            local_64 = local_64 + uVar15;
           }
           else {
-            uVar2 = uVar14 + local_64;
+            uVar2 = uVar15 + local_64;
             if (uVar2 < local_64) {
               iVar4 = -0x7ff8fdea;
               uVar2 = 0xffffffff;
             }
             else {
               iVar4 = 0;
             }
             if (iVar4 < 0) {
               return 0x80000048;
             }
             local_64 = uVar2;
-            if (uVar14 + uVar16 < uVar16) {
+            if (uVar15 + uVar17 < uVar17) {
               return 0x80000048;
             }
           }
-          uVar16 = uVar14 + uVar16;
+          uVar17 = uVar15 + uVar17;
           if (iVar3 != 9) goto LAB_1;
-          uVar15 = (ulonglong)(local_58 + 1);
-          local_54 = local_54 + 1;
-          *(undefined4 *)(plVar6[2] + 8 + uVar15 * 4) =
-               *(undefined4 *)(*(longlong *)(local_60 + 2) + (ulonglong)local_54 * 8);
-          param_1 = local_60;
+          puVar16 = (uint *)(ulonglong)(local_60 + 1);
+          local_50 = local_50 + 1;
+          *(undefined4 *)(plVar6[2] + 8 + (longlong)puVar16 * 4) =
+               *(undefined4 *)(*(longlong *)(local_58 + 2) + (ulonglong)local_50 * 8);
+          param_3 = (ulonglong)local_50;
+          param_1 = local_58;
           goto LAB_3;
         }
         if ((iVar3 != 0xb) && (iVar3 != 0xc)) {
           if (iVar3 == 0xe) {
-            uVar15 = (ulonglong)(local_58 - 1);
-            pWVar20 = pWVar10;
-            local_48 = pWVar10;
+            puVar16 = (uint *)(ulonglong)(local_60 - 1);
+            pWVar18 = pWVar11;
+            local_48 = pWVar11;
           }
           goto LAB_3;
         }
       }
-      uVar2 = local_54 + 1;
+      uVar2 = local_50 + 1;
       if (iVar3 == 8) {
-        pWVar10 = (LPCWSTR)(lVar7 + (ulonglong)uVar2 * 8);
-      }
-      uVar14 = *(uint *)pWVar10;
-      param_4 = (uint *)(ulonglong)uVar14;
+        pWVar11 = (LPCWSTR)(lVar7 + (ulonglong)uVar2 * 8);
+      }
+      iVar4 = *(int *)pWVar11;
       if (iVar3 != 8) {
-        *(uint *)(plVar6[2] + 8 + uVar15 * 4) = uVar14;
+        *(int *)(plVar6[2] + 8 + (longlong)puVar16 * 4) = iVar4;
       }
       else {
-        *(undefined4 *)(plVar6[2] + 8 + uVar15 * 4) = 0xffffffff;
-        local_58 = local_58 + 1;
-        *(undefined4 *)(plVar6[2] + 8 + (ulonglong)local_58 * 4) =
-             *(undefined4 *)(*(longlong *)(local_60 + 2) + (ulonglong)uVar2 * 8);
-        local_54 = uVar2;
+        *(undefined4 *)(plVar6[2] + 8 + (longlong)puVar16 * 4) = 0xffffffff;
+        local_60 = local_60 + 1;
+        uVar10 = (ulonglong)uVar2;
+        *(undefined4 *)(plVar6[2] + 8 + (ulonglong)local_60 * 4) =
+             *(undefined4 *)(*(longlong *)(local_58 + 2) + uVar10 * 8);
+        local_50 = uVar2;
       }
       local_30 = 1;
-      uVar2 = Feature_2699111737__private_IsEnabledDeviceUsageNoInline();
-      if ((uVar2 != 0) && (uVar16 + uVar14 < uVar16)) {
+      uVar2 = uVar17 + iVar4;
+      uVar15 = Feature_2699111737__private_IsEnabledDeviceUsageNoInline();
+      if ((uVar15 != 0) && (uVar2 < uVar17)) {
         return 0x80000048;
       }
-      uVar15 = (ulonglong)local_58;
-      uVar16 = uVar16 + uVar14;
+      puVar16 = (uint *)(ulonglong)local_60;
+      param_3 = uVar10;
+      uVar17 = uVar2;
     }
 LAB_3:
-    uVar18 = (ulonglong)(local_54 + 1);
-    uVar15 = (ulonglong)((int)uVar15 + 1);
+    uVar10 = (ulonglong)(local_50 + 1);
+    puVar16 = (uint *)(ulonglong)((int)puVar16 + 1);
   }
   iVar3 = IsValidObject();
   if (iVar3 == 0) {
-    if (pWVar20 != (LPCWSTR)0x0) {
+    if (pWVar18 != (LPCWSTR)0x0) {
 LAB_5:
       return *(uint *)(&gaOpFailedErrors + uVar19 * 4);
     }
   }
   else {
-    if ((pWVar20[0x14] & L'\x02') != L'\0') {
-      TRACELogPrint(0x10002,"pServer says REINIT in RemoteDoFunc",uVar18,param_4);
+    if ((pWVar18[0x14] & L'\x02') != L'\0') {
+      TRACELogPrint(0x10002,"pServer says REINIT in RemoteDoFunc",param_3,puVar16);
       return *(uint *)(&gaServerReInitErrors + uVar19 * 4);
     }
-    if ((pWVar20[0x14] & L'\x01') == L'\0') {
-      puVar11 = (uint *)(plVar6 + 3);
-      if (*puVar11 < uVar16) {
-        param_4 = (uint *)(ulonglong)(uVar16 - *puVar11);
-        uVar18 = (ulonglong)local_64;
-        uVar8 = GrowBuf(plVar6 + 2,puVar11,local_64,uVar16 - *puVar11);
+    if ((pWVar18[0x14] & L'\x01') == L'\0') {
+      puVar14 = (uint *)(plVar6 + 3);
+      if (*puVar14 < uVar17) {
+        puVar16 = (uint *)(ulonglong)(uVar17 - *puVar14);
+        param_3 = (ulonglong)local_64;
+        uVar8 = GrowBuf(plVar6 + 2,puVar14,local_64,uVar17 - *puVar14);
         if ((int)uVar8 == 0) goto LAB_0;
       }
-      pWVar10 = (LPCWSTR)(ulonglong)*(ushort *)((longlong)param_1 + 2);
+      pWVar11 = (LPCWSTR)(ulonglong)*(ushort *)((longlong)param_1 + 2);
       *(uint *)plVar6[2] = (uint)*(ushort *)((longlong)param_1 + 2);
       if ((*param_1 & 0x40) != 0) {
         if ((*param_1 & 0x80) == 0) {
           puVar12 = (undefined4 *)0xffffffffffffffff;
         }
         else {
           puVar12 = *(undefined4 **)(*(longlong *)(param_1 + 2) + 8);
           *puVar12 = 0x41707352;
           *(undefined4 *)(plVar6[2] + 0xc) = 0;
         }
-        uVar18 = **(ulonglong **)(param_1 + 2);
-        local_50 = NewObject(pWVar10,(longlong)puVar12,uVar18);
-        *(uint *)(plVar6[2] + 8) = local_50;
-        local_34 = local_50;
-        if (local_50 == 0) goto LAB_0;
+        param_3 = **(ulonglong **)(param_1 + 2);
+        local_4c = NewObject(pWVar11,(longlong)puVar12,param_3);
+        *(uint *)(plVar6[2] + 8) = local_4c;
+        local_34 = local_4c;
+        if (local_4c == 0) goto LAB_0;
       }
       iVar3 = local_2c;
       if (*(int *)((longlong)plVar6 + 0x1c) == 0) {
-        pWVar10 = (LPCWSTR)0x0;
+        pWVar11 = (LPCWSTR)0x0;
         uVar2 = RpcImpersonateClient((RPC_BINDING_HANDLE)0x0);
         if (uVar2 == 0) {
           iVar3 = 1;
         }
         else {
-          uVar18 = (ulonglong)uVar2;
+          param_3 = (ulonglong)uVar2;
           pcVar13 = "RemoteDoFunc: RpcImpersonateClient failed, err=%d";
-          TRACELogPrint(0x10002,"RemoteDoFunc: RpcImpersonateClient failed, err=%d",uVar18,param_4);
-          pWVar10 = (LPCWSTR)0x0;
-          bVar22 = SetProcessImpersonationToken((HANDLE)0x0,pcVar13,uVar18,param_4);
+          TRACELogPrint(0x10002,"RemoteDoFunc: RpcImpersonateClient failed, err=%d",param_3,puVar16)
+          ;
+          pWVar11 = (LPCWSTR)0x0;
+          bVar21 = SetProcessImpersonationToken((HANDLE)0x0,pcVar13,param_3,puVar16);
           iVar3 = 0;
-          if (!bVar22) {
+          if (!bVar21) {
             DVar5 = GetLastError();
             TRACELogPrint(0x10002,"RemoteDoFunc: SetProcessImpersToken failed, lastErr=%d",
-                          (ulonglong)DVar5,param_4);
+                          (ulonglong)DVar5,puVar16);
             goto LAB_5;
           }
         }
       }
-      local_54 = 0;
+      local_50 = 0;
       local_2c = iVar3;
-      if (*(int *)(pWVar20 + 0x2c) == 0) {
-        param_4 = &local_64;
-        uVar18 = (ulonglong)uVar16;
-        pWVar10 = *(LPCWSTR *)(pWVar20 + 8);
-        ClientRequest(pWVar10);
-        uVar16 = *(uint *)plVar6[2];
-        local_38 = uVar16;
-        if (uVar16 == 0xf101) {
-          pWVar10 = pWVar20;
-          OnServerDisconnected((longlong)pWVar20);
-          uVar16 = *(uint *)(&gaServerDisconnectedErrors + (ulonglong)uVar21 * 4);
-          local_38 = uVar16;
+      if (*(int *)(pWVar18 + 0x2c) == 0) {
+        puVar16 = &local_64;
+        param_3 = (ulonglong)uVar17;
+        pWVar11 = *(LPCWSTR *)(pWVar18 + 8);
+        ClientRequest(pWVar11);
+        uVar17 = *(uint *)plVar6[2];
+        local_38 = uVar17;
+        if (uVar17 == 0xf101) {
+          pWVar11 = pWVar18;
+          OnServerDisconnected((longlong)pWVar18);
+          uVar17 = *(uint *)(&gaServerDisconnectedErrors + (ulonglong)uVar20 * 4);
+          local_38 = uVar17;
         }
       }
       else {
-        uVar16 = *(uint *)(&gaServerDisconnectedErrors + (ulonglong)uVar21 * 4);
+        uVar17 = *(uint *)(&gaServerDisconnectedErrors + (ulonglong)uVar20 * 4);
       }
       if (*(int *)((longlong)plVar6 + 0x1c) == 0) {
         if (local_2c == 0) {
           ClearImpersonationToken();
         }
         else {
           RpcRevertToSelf();
         }
       }
       if ((*param_1 & 0x40) != 0) {
-        if (uVar16 == local_50) {
-          uVar16 = **(uint **)(param_1 + 2);
-        }
-        else {
-          uVar18 = 1;
-          DereferenceObject(pWVar10,local_50,1);
-        }
-      }
-      if (uVar16 == 0x80000052) {
-        TRACELogPrint(0x10002,"server returned REINIT in RemoteDoFunc",uVar18,param_4);
-        OnServerDisconnected((longlong)pWVar20);
-        return *(uint *)(&gaOpFailedErrors + (ulonglong)uVar21 * 4);
-      }
-      if (uVar16 != 0) {
-        return uVar16;
+        if (uVar17 == local_4c) {
+          uVar17 = **(uint **)(param_1 + 2);
+        }
+        else {
+          param_3 = 1;
+          DereferenceObject(pWVar11,local_4c,1);
+        }
+      }
+      if (uVar17 == 0x80000052) {
+        TRACELogPrint(0x10002,"server returned REINIT in RemoteDoFunc",param_3,puVar16);
+        OnServerDisconnected((longlong)pWVar18);
+        return *(uint *)(&gaOpFailedErrors + (ulonglong)uVar20 * 4);
+      }
+      if (uVar17 != 0) {
+        return uVar17;
       }
       if (local_30 == 0) {
         return 0;
       }
+      uVar10 = 0;
       uVar19 = 0;
-      uVar18 = 0;
-      if ((*local_60 & 0xf) == 0) {
+      if ((*param_1 & 0xf) == 0) {
         return 0;
       }
-      local_50 = 1;
+      local_68 = 1;
+      puVar16 = local_58;
       do {
-        uVar21 = local_50;
-        uVar15 = (ulonglong)local_50;
         lVar7 = plVar6[2];
-        iVar3 = *(int *)(*(longlong *)(local_60 + 4) + uVar19 * 4);
+        iVar3 = *(int *)(*(longlong *)(puVar16 + 4) + uVar10 * 4);
         if (iVar3 == 6) {
-          **(undefined4 **)(*(longlong *)(local_60 + 2) + uVar19 * 8) =
-               *(undefined4 *)(lVar7 + 8 + uVar18 * 4);
-        }
-        else {
-          iVar4 = (int)uVar18;
+          **(undefined4 **)(*(longlong *)(puVar16 + 2) + uVar10 * 8) =
+               *(undefined4 *)(lVar7 + 8 + uVar19 * 4);
+        }
+        else {
+          iVar4 = (int)uVar19;
           if (iVar3 == 8) {
-            uVar21 = Feature_3035442489__private_IsEnabledDeviceUsageNoInline();
-            if (uVar21 != 0) {
-              uVar16 = *(uint *)(lVar7 + 8 + uVar18 * 4);
-              uVar21 = uVar16 + 0x3c;
-              if (uVar21 < uVar16) {
+            uVar20 = Feature_3035442489__private_IsEnabledDeviceUsageNoInline();
+            if (uVar20 != 0) {
+              uVar17 = *(uint *)(lVar7 + 8 + uVar19 * 4);
+              uVar20 = uVar17 + 0x3c;
+              if (uVar20 < uVar17) {
                 return 0x80000048;
               }
-              uVar16 = *(uint *)(lVar7 + 8 + (ulonglong)(iVar4 + 1) * 4);
-              if (uVar16 + uVar21 < uVar16) {
+              uVar17 = *(uint *)(lVar7 + 8 + (ulonglong)(iVar4 + 1) * 4);
+              if (uVar17 + uVar20 < uVar17) {
                 return 0x80000048;
               }
-              if (*(uint *)(plVar6 + 3) < uVar21) {
+              if (*(uint *)(plVar6 + 3) < uVar20) {
                 return 0x80000048;
               }
-              if (*(uint *)(plVar6 + 3) < uVar16 + uVar21) {
+              if (*(uint *)(plVar6 + 3) < uVar17 + uVar20) {
                 return 0x80000048;
               }
-              if (**(uint **)(*(longlong *)(local_60 + 2) + uVar15 * 8) < uVar16) {
+              if (**(uint **)(*(longlong *)(puVar16 + 2) + (ulonglong)local_68 * 8) < uVar17) {
                 return 0x80000048;
               }
             }
-            memcpy(*(void **)(*(longlong *)(local_60 + 2) + uVar19 * 8),
-                   (void *)(plVar6[2] + (ulonglong)*(uint *)(lVar7 + 8 + uVar18 * 4) + 0x3c),
+            memcpy(*(void **)(*(longlong *)(local_58 + 2) + uVar10 * 8),
+                   (void *)(plVar6[2] + (ulonglong)*(uint *)(lVar7 + 8 + uVar19 * 4) + 0x3c),
                    (ulonglong)*(uint *)(lVar7 + 8 + (ulonglong)(iVar4 + 1U) * 4));
-            uVar19 = (ulonglong)((int)uVar19 + 1);
-            uVar21 = local_50 + 1;
-            uVar18 = (ulonglong)(iVar4 + 1U);
+            uVar10 = (ulonglong)((int)uVar10 + 1);
+            local_68 = local_68 + 1;
+            uVar19 = (ulonglong)(iVar4 + 1U);
+            puVar16 = local_58;
           }
           else if (iVar3 == 9) {
-            uVar19 = (ulonglong)((int)uVar19 + 1);
-            uVar21 = local_50 + 1;
-            uVar18 = (ulonglong)(iVar4 + 1);
+            uVar10 = (ulonglong)((int)uVar10 + 1);
+            local_68 = local_68 + 1;
+            uVar19 = (ulonglong)(iVar4 + 1);
           }
           else if (iVar3 == 0xb) {
-            if (*(int *)(lVar7 + 8 + uVar18 * 4) != -1) {
-              local_40 = (uint *)((ulonglong)*(uint *)(lVar7 + 8 + uVar18 * 4) + 0x3c + lVar7);
-              uVar16 = Feature_2699111737__private_IsEnabledDeviceUsageNoInline();
-              if (uVar16 != 0) {
-                uVar2 = *(uint *)(lVar7 + 8 + uVar18 * 4);
-                uVar16 = uVar2 + 0x48;
-                if (uVar16 < uVar2) {
-                  return 0x80000048;
-                }
-                if (*(uint *)(plVar6 + 3) < uVar16) {
-                  return 0x80000048;
-                }
-                uVar2 = local_40[2];
-                uVar16 = (uVar2 - 0xc) + uVar16;
-                if (uVar16 < uVar2) {
-                  return 0x80000048;
-                }
-                if (*(uint *)(plVar6 + 3) < uVar16) {
-                  return 0x80000048;
-                }
-                if (**(uint **)(*(longlong *)(local_60 + 2) + uVar19 * 8) < uVar2) {
-                  return 0x80000048;
-                }
-              }
-              uVar16 = local_40[2];
+            if (*(int *)(lVar7 + 8 + uVar19 * 4) != -1) {
+              local_40 = (uint *)((ulonglong)*(uint *)(lVar7 + 8 + uVar19 * 4) + 0x3c + lVar7);
+              uVar20 = Feature_2699111737__private_IsEnabledDeviceUsageNoInline();
+              puVar14 = local_40;
+              if (uVar20 != 0) {
+                uVar17 = *(uint *)(lVar7 + 8 + uVar19 * 4);
+                uVar20 = uVar17 + 0x48;
+                if ((uVar20 < uVar17) || (*(uint *)(plVar6 + 3) < uVar20)) {
+                  return 0x80000048;
+                }
+                uVar17 = local_40[2];
+                uVar20 = (uVar17 - 0xc) + uVar20;
+                if (uVar20 < uVar17) {
+                  return 0x80000048;
+                }
+                if (*(uint *)(plVar6 + 3) < uVar20) {
+                  return 0x80000048;
+                }
+                if (**(uint **)(*(longlong *)(puVar16 + 2) + uVar10 * 8) < uVar17) {
+                  return 0x80000048;
+                }
+              }
+              uVar20 = Feature_2332850489__private_IsEnabledDeviceUsageNoInline();
+              if ((uVar20 != 0) &&
+                 (*puVar14 != **(uint **)(*(longlong *)(puVar16 + 2) + uVar10 * 8))) {
+                return 0x80000048;
+              }
+              uVar20 = puVar14[2];
 LAB_6:
-              memcpy(*(void **)(*(longlong *)(local_60 + 2) + uVar19 * 8),local_40,(ulonglong)uVar16
-                    );
+              memcpy(*(void **)(*(longlong *)(puVar16 + 2) + uVar10 * 8),puVar14,(ulonglong)uVar20);
             }
           }
           else if (iVar3 == 0xc) {
-            if (*(int *)(lVar7 + 8 + uVar18 * 4) != -1) {
-              local_40 = (uint *)((ulonglong)*(uint *)(lVar7 + 8 + uVar18 * 4) + 0x3c + lVar7);
-              uVar16 = Feature_1038946617__private_IsEnabledDeviceUsageNoInline();
-              if (uVar16 != 0) {
-                iVar3 = *(int *)(lVar7 + 8 + uVar18 * 4);
-                uVar16 = iVar3 + 0x40;
-                if (uVar16 < 0x40) {
-                  return 0x80000048;
-                }
-                if (*(uint *)(plVar6 + 3) < uVar16) {
-                  return 0x80000048;
-                }
-                uVar2 = iVar3 + 0x3c;
-                uVar16 = *local_40 + uVar2;
-                if (uVar16 < uVar2) {
-                  return 0x80000048;
-                }
-                if (*(uint *)(plVar6 + 3) < uVar16) {
-                  return 0x80000048;
-                }
-                if (**(uint **)(*(longlong *)(local_60 + 2) + uVar19 * 8) < *local_40) {
-                  return 0x80000048;
-                }
-              }
-              uVar16 = *local_40;
+            if (*(int *)(lVar7 + 8 + uVar19 * 4) != -1) {
+              local_40 = (uint *)((ulonglong)*(uint *)(lVar7 + 8 + uVar19 * 4) + 0x3c + lVar7);
+              uVar20 = Feature_1038946617__private_IsEnabledDeviceUsageNoInline();
+              if (uVar20 != 0) {
+                iVar3 = *(int *)(lVar7 + 8 + uVar19 * 4);
+                uVar20 = iVar3 + 0x40;
+                if (uVar20 < 0x40) {
+                  return 0x80000048;
+                }
+                if (*(uint *)(plVar6 + 3) < uVar20) {
+                  return 0x80000048;
+                }
+                uVar17 = iVar3 + 0x3c;
+                uVar20 = *local_40 + uVar17;
+                if (uVar20 < uVar17) {
+                  return 0x80000048;
+                }
+                if (*(uint *)(plVar6 + 3) < uVar20) {
+                  return 0x80000048;
+                }
+                if (**(uint **)(*(longlong *)(puVar16 + 2) + uVar10 * 8) < *local_40) {
+                  return 0x80000048;
+                }
+              }
+              uVar20 = *local_40;
+              puVar14 = local_40;
               goto LAB_6;
             }
           }
           else if (iVar3 == 0xe) {
-            uVar18 = (ulonglong)(iVar4 - 1);
-          }
-        }
-        uVar16 = (int)uVar19 + 1;
-        uVar19 = (ulonglong)uVar16;
-        local_50 = uVar21 + 1;
-        uVar18 = (ulonglong)((int)uVar18 + 1);
-        if ((*local_60 & 0xf) <= uVar16) {
+            uVar19 = (ulonglong)(iVar4 - 1);
+          }
+        }
+        uVar20 = (int)uVar10 + 1;
+        uVar10 = (ulonglong)uVar20;
+        local_68 = local_68 + 1;
+        uVar19 = (ulonglong)((int)uVar19 + 1);
+        if ((*puVar16 & 0xf) <= uVar20) {
           return 0;
         }
       } while( true );
     }
-    TRACELogPrint(0x10002,"pServer is disconnected in RemoteDoFunc",uVar18,param_4);
+    TRACELogPrint(0x10002,"pServer is disconnected in RemoteDoFunc",param_3,puVar16);
   }
   return *(uint *)(&gaServerDisconnectedErrors + uVar19 * 4);
 }
 

```


# Modified (No Code Changes)


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

## wil_details_IsEnabledFallback

### Match Info



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

### Function Meta Diff



|Key|pre.tsp|post.tsp|
| :---: | :---: | :---: |
|name|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|fullname|wil_details_IsEnabledFallback|wil_details_IsEnabledFallback|
|`refcount`|9|11|
|length|140|140|
|called|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|wil_details_FeatureReporting_ReportUsageToService<br>wil_details_FeatureStateCache_ReevaluateCachedFeatureEnabledState<br>wil_details_FeatureStateCache_TryEnableDeviceUsageFastPath|
|`calling`|Feature_1038946617__private_IsEnabledDeviceUsageNoInline<br>Feature_1050215739__private_IsEnabledDeviceUsageNoInline<br>Feature_1291651386__private_IsEnabledDeviceUsageNoInline<br>Feature_1590797625__private_IsEnabledDeviceUsageNoInline<br>Feature_1976935736__private_IsEnabledDeviceUsageNoInline<br>Feature_2699111737__private_IsEnabledDeviceUsageNoInline<br>Feature_3035442489__private_IsEnabledDeviceUsageNoInline<br>Feature_744072507__private_IsEnabledDeviceUsageNoInline|Feature_1038946617__private_IsEnabledDeviceUsageNoInline<br>Feature_1050215739__private_IsEnabledDeviceUsageNoInline<br>Feature_1291651386__private_IsEnabledDeviceUsageNoInline<br>Feature_1590797625__private_IsEnabledDeviceUsageNoInline<br>Feature_1976935736__private_IsEnabledDeviceUsageNoInline<br>Feature_2332850489__private_IsEnabledDeviceUsageNoInline<br>Feature_2699111737__private_IsEnabledDeviceUsageNoInline<br>Feature_3035442489__private_IsEnabledDeviceUsageNoInline<br>Feature_3862983993__private_IsEnabledDeviceUsageNoInline<br>Feature_744072507__private_IsEnabledDeviceUsageNoInline|
|paramcount|3|3|
|`address`|180010cd8|180010d98|
|sig|uint __fastcall wil_details_IsEnabledFallback(ulonglong param_1, int param_2, undefined8 * param_3)|uint __fastcall wil_details_IsEnabledFallback(ulonglong param_1, int param_2, undefined8 * param_3)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### wil_details_IsEnabledFallback Calling Diff


```diff
--- wil_details_IsEnabledFallback calling
+++ wil_details_IsEnabledFallback calling
@@ -5,0 +6 @@
+Feature_2332850489__private_IsEnabledDeviceUsageNoInline
@@ -7,0 +9 @@
+Feature_3862983993__private_IsEnabledDeviceUsageNoInline
```




<sub>Generated with `ghidriff` version: 1.0.0 on 2026-08-27T21:12:56</sub>