# dhcpssvc-3469.dll-dhcpssvc-4252.dll 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)
* [Modified](#modified)
	* [ProcessRelayForwardMessage](#processrelayforwardmessage)
* [Modified (No Code Changes)](#modified-no-code-changes)

# Visual Chart Diff



```mermaid

flowchart LR

ProcessRelayForwardMessage-8-old<--Match 99%-->ProcessRelayForwardMessage-8-new

subgraph dhcpssvc-4252.dll
    ProcessRelayForwardMessage-8-new
    
end

subgraph dhcpssvc-3469.dll
    ProcessRelayForwardMessage-8-old
    
end

```


```mermaid
pie showData
    title Function Matches - 100.0000%
"unmatched_funcs_len" : 0
"matched_funcs_len" : 4554
```



```mermaid
pie showData
    title Matched Function Similarity - 99.9780%
"matched_funcs_with_code_changes_len" : 1
"matched_funcs_with_non_code_changes_len" : 0
"matched_funcs_no_changes_len" : 4553
```

# Metadata

## Ghidra Diff Engine

### Command Line

#### Captured Command Line


```
ghidriff --project-location ./proj --project-name dhcpssvc-28231 --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 dhcpssvc-3469.dll dhcpssvc-4252.dll
```


#### Verbose Args


<details>

```
--old ['dhcpssvc-3469.dll'] --new [['dhcpssvc-4252.dll']] --engine VersionTrackingDiff --output-path ./out --summary False --project-location ./proj --project-name dhcpssvc-28231 --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/dhcpssvc.dll/E08DCF0D16D000/dhcpssvc.dll -O dhcpssvc.dll.x64.10.0.17763.11030
wget https://msdl.microsoft.com/download/symbols/dhcpssvc.dll/8F1C7B1116D000/dhcpssvc.dll -O dhcpssvc.dll.x64.10.0.17763.4377
```


## Binary Metadata Diff


```diff
--- dhcpssvc-3469.dll Meta
+++ dhcpssvc-4252.dll Meta
@@ -1,44 +1,44 @@
-Program Name: dhcpssvc-3469.dll
+Program Name: dhcpssvc-4252.dll
 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: 1480708
+# of Bytes: 1481220
 # of Memory Blocks: 10
-# of Instructions: 206946
+# of Instructions: 206958
 # of Defined Data: 9196
 # of Functions: 2277
 # of Symbols: 24908
 # of Data Types: 698
 # of Data Type Categories: 44
 Analyzed: true
 Compiler: visualstudio:unknown
 Created With Ghidra Version: 12.0.4
-Date Created: Sat Aug 15 23:47:26 SGT 2026
+Date Created: Sat Aug 15 23:47:30 SGT 2026
 Executable Format: Portable Executable (PE)
-Executable Location: /sessions/fervent-laughing-brahmagupta/mnt/patchpalooza/ghidriff/dhcpssvc-28231/dhcpssvc-3469.dll
-Executable MD5: 1b9a8047cf393d90b719d2dc318d231f
-Executable SHA256: a847fe2290b474a0aa14d1d83083ae24c9ed36b174ffc59b5e989a115ee658c6
-FSRL: file:///sessions/fervent-laughing-brahmagupta/mnt/patchpalooza/ghidriff/dhcpssvc-28231/dhcpssvc-3469.dll?MD5=1b9a8047cf393d90b719d2dc318d231f
+Executable Location: /sessions/fervent-laughing-brahmagupta/mnt/patchpalooza/ghidriff/dhcpssvc-28231/dhcpssvc-4252.dll
+Executable MD5: 5abc231a347314b5881b1e2c0a576c58
+Executable SHA256: f2cdcfc6f9c374b47ca032a9766a8e28319c0fd82b42484c326667bff85ad895
+FSRL: file:///sessions/fervent-laughing-brahmagupta/mnt/patchpalooza/ghidriff/dhcpssvc-28231/dhcpssvc-4252.dll?MD5=5abc231a347314b5881b1e2c0a576c58
 PDB Age: 1
 PDB File: dhcpssvc.pdb
-PDB GUID: 281839b4-1880-91a0-4a56-cc940e3f33fa
+PDB GUID: 006814fd-cda7-eb8f-cf93-487c3c1fe0a4
 PDB Loaded: true
 PDB Version: RSDS
 PE Property[CompanyName]: Microsoft Corporation
 PE Property[FileDescription]: DHCP Server Service
-PE Property[FileVersion]: 10.0.17763.11030 (WinBuild.160101.0800)
+PE Property[FileVersion]: 10.0.17763.4377 (WinBuild.160101.0800)
 PE Property[InternalName]: dhcpssvc.dll
 PE Property[LegalCopyright]: © Microsoft Corporation. All rights reserved.
 PE Property[OriginalFilename]: dhcpssvc.dll
 PE Property[ProductName]: Microsoft® Windows® Operating System
-PE Property[ProductVersion]: 10.0.17763.11030
+PE Property[ProductVersion]: 10.0.17763.4377
 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 dhcpssvc-3469.dll Decompiler Options</summary>


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

</details>


<details>
<summary>Ghidra dhcpssvc-3469.dll Specification extensions Options</summary>


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

</details>


<details>
<summary>Ghidra dhcpssvc-3469.dll 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 dhcpssvc-4252.dll Decompiler Options</summary>


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

</details>


<details>
<summary>Ghidra dhcpssvc-4252.dll Specification extensions Options</summary>


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

</details>


<details>
<summary>Ghidra dhcpssvc-4252.dll 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|0|
|deleted_funcs_len|0|
|modified_funcs_len|1|
|added_symbols_len|1|
|deleted_symbols_len|1|
|diff_time|4.765848398208618|
|deleted_strings_len|0|
|added_strings_len|0|
|match_types|Counter({'SymbolsHash': 2259, 'ExternalsName': 435})|
|items_to_process|3|
|diff_types|Counter({'code': 1, 'length': 1})|
|unmatched_funcs_len|0|
|total_funcs_len|4554|
|matched_funcs_len|4554|
|matched_funcs_with_code_changes_len|1|
|matched_funcs_with_non_code_changes_len|0|
|matched_funcs_no_changes_len|4553|
|match_func_similarity_percent|99.9780%|
|func_match_overall_percent|100.0000%|
|first_matches|Counter({'SymbolsHash': 2259})|



```mermaid
pie showData
    title All Matches
"SymbolsHash" : 2259
"ExternalsName" : 435
```



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



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



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

## Strings


*No string differences found*

# Deleted

# Added

# Modified


*Modified functions contain code changes*
## ProcessRelayForwardMessage

### Match Info



|Key|dhcpssvc-3469.dll - dhcpssvc-4252.dll|
| :---: | :---: |
|diff_type|code,length|
|ratio|0.93|
|i_ratio|0.72|
|m_ratio|0.99|
|b_ratio|0.99|
|match_types|SymbolsHash|

### Function Meta Diff



|Key|dhcpssvc-3469.dll|dhcpssvc-4252.dll|
| :---: | :---: | :---: |
|name|ProcessRelayForwardMessage|ProcessRelayForwardMessage|
|fullname|ProcessRelayForwardMessage|ProcessRelayForwardMessage|
|refcount|2|2|
|`length`|2200|2265|
|called|<details><summary>Expand for full list:<br>DhcpV6CleanupHeaderOptions<br>DhcpV6ExtractOptions<br>ParseDhcpV6Options<br>ProcessClientMessage<br>WPP_SF_<br>WPP_SF_L<br>WPP_SF_Ll<br>WPP_SF_dddd<br>WS2_32.DLL::Ordinal_15<br>WS2_32.DLL::Ordinal_9<br>memcpy</summary>memset</details>|<details><summary>Expand for full list:<br>DhcpV6CleanupHeaderOptions<br>DhcpV6ExtractOptions<br>ParseDhcpV6Options<br>ProcessClientMessage<br>WPP_SF_<br>WPP_SF_L<br>WPP_SF_Ll<br>WPP_SF_dddd<br>WS2_32.DLL::Ordinal_15<br>WS2_32.DLL::Ordinal_9<br>memcpy</summary>memset</details>|
|calling|DhcpV6ProcessMessage|DhcpV6ProcessMessage|
|paramcount|8|8|
|address|180070838|180070838|
|sig|int __fastcall ProcessRelayForwardMessage(longlong * param_1, char param_2, byte * param_3, uint param_4, byte * param_5, uint param_6, uint * param_7, undefined4 * param_8)|int __fastcall ProcessRelayForwardMessage(longlong * param_1, char param_2, byte * param_3, uint param_4, byte * param_5, uint param_6, uint * param_7, undefined4 * param_8)|
|sym_type|Function|Function|
|sym_source|IMPORTED|IMPORTED|
|external|False|False|

### ProcessRelayForwardMessage Diff


```diff
--- ProcessRelayForwardMessage
+++ ProcessRelayForwardMessage
@@ -1,337 +1,347 @@
 
 int ProcessRelayForwardMessage
               (longlong *param_1,char param_2,byte *param_3,uint param_4,byte *param_5,uint param_6,
               uint *param_7,undefined4 *param_8)
 
 {
   undefined2 *puVar1;
   longlong *plVar2;
   undefined4 *puVar3;
   undefined8 *puVar4;
   byte bVar5;
   uint uVar6;
   undefined4 uVar7;
   undefined4 uVar8;
   undefined4 uVar9;
   undefined8 uVar10;
   ushort uVar11;
   ushort uVar12;
   undefined2 uVar13;
   int iVar14;
   int iVar15;
   ulonglong uVar16;
   int *piVar17;
   longlong lVar18;
   byte bVar19;
   uint uVar20;
   byte *pbVar21;
   uint uVar22;
   byte *pbVar23;
   uint *puVar24;
   uint *puVar25;
   uint *_Dst;
   int iVar26;
   ulonglong uVar27;
   byte *pbVar28;
   uint *puVar29;
   bool bVar30;
   uint local_res8;
   
   uVar16 = 0;
   local_res8 = 0;
   if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0)) {
     WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x83,
-            &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids);
+            &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids);
   }
   if ((((param_1 == (longlong *)0x0) || (param_3 == (byte *)0x0)) || (param_7 == (uint *)0x0)) ||
      ((param_8 == (undefined4 *)0x0 || (param_5 == (byte *)0x0)))) {
     iVar14 = 0x57;
     if ((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
       return 0x57;
     }
     if ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x84,
-              &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids);
+              &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids);
     }
   }
   else if (param_2 == '\f') {
     *(undefined4 *)((longlong)param_1 + 0xcc4) = 0;
     memset((void *)((longlong)param_1 + 0x644),0,0x680);
     if ((param_4 < 0x23) || (param_3[1] < 0x21)) {
       if (param_4 < 0x22) {
 LAB_0:
         iVar14 = 0x57;
         goto LAB_1;
       }
       bVar5 = param_3[1];
       bVar19 = 0xc;
       uVar22 = param_4;
       pbVar23 = param_3;
       uVar27 = uVar16;
       while( true ) {
         pbVar21 = (byte *)0x0;
         uVar20 = (uint)uVar27;
         if ((uVar22 == 0) || ((int)uVar16 != 0)) break;
         if (param_3 + param_4 < pbVar23 + (int)uVar22) {
 LAB_2:
           iVar14 = 0x4e2f;
           goto LAB_1;
         }
         bVar19 = *pbVar23;
         if (bVar19 == 1) {
 LAB_3:
           uVar20 = *(uint *)((longlong)param_1 + 0xcc4);
           if (uVar20 <= bVar5) {
             iVar14 = 0x57;
             if ((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
               return 0x57;
             }
             if ((WPP_GLOBAL_Control[0x1c] & 0x20) == 0) goto LAB_1;
-            uVar13 = 0x89;
+            uVar13 = 0x8a;
             goto LAB_4;
           }
           if (uVar20 != 0) {
             plVar2 = (longlong *)((ulonglong)(uVar20 - 1) * 0x34 + 0x646 + (longlong)param_1);
             lVar18 = plVar2[1];
             param_1[0x1a5] = *plVar2;
             param_1[0x1a6] = lVar18;
           }
           iVar14 = DhcpV6ExtractOptions((longlong)param_1,pbVar23,(ulonglong)uVar22);
           if (iVar14 != 0) {
             DhcpV6CleanupHeaderOptions((longlong)param_1);
             goto LAB_1;
           }
           uVar16 = ParseDhcpV6Options((longlong)param_1);
           iVar14 = (int)uVar16;
           DhcpV6CleanupHeaderOptions((longlong)param_1);
           if (iVar14 != 0) goto LAB_1;
           uVar16 = 1;
           local_res8 = 1;
           uVar22 = uVar22 - 4;
         }
         else {
           if (bVar19 < 3) {
 LAB_5:
             if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
                ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0)) {
-              WPP_SF_L(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x8a,
-                       &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids,(uint)bVar19);
+              WPP_SF_L(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x8b,
+                       &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids,(uint)bVar19);
             }
             goto LAB_6;
           }
           if (bVar19 < 7) goto LAB_3;
           if (bVar19 < 8) goto LAB_5;
           if ((bVar19 < 10) || (bVar19 == 0xb)) goto LAB_3;
           if (bVar19 != 0xc) goto LAB_5;
           if (uVar22 < 0x22) goto LAB_0;
-          if ((uint)bVar5 - *(uint *)((longlong)param_1 + 0xcc4) != (uint)pbVar23[1]) {
+          uVar6 = *(uint *)((longlong)param_1 + 0xcc4);
+          if (bVar5 - uVar6 != (uint)pbVar23[1]) {
             iVar14 = 0x57;
             if ((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
               return 0x57;
             }
             if ((WPP_GLOBAL_Control[0x1c] & 0x20) == 0) goto LAB_1;
             uVar13 = 0x87;
+            goto LAB_4;
+          }
+          if (0x1f < uVar6) {
+            iVar14 = 0x4e2f;
+            if ((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
+              return 0x4e2f;
+            }
+            if ((WPP_GLOBAL_Control[0x1c] & 0x20) == 0) goto LAB_1;
+            uVar13 = 0x88;
             goto LAB_4;
           }
           uVar7 = *(undefined4 *)(pbVar23 + 4);
           uVar8 = *(undefined4 *)(pbVar23 + 8);
           uVar9 = *(undefined4 *)(pbVar23 + 0xc);
           iVar26 = uVar20 + 0x22;
-          lVar18 = (ulonglong)*(uint *)((longlong)param_1 + 0xcc4) * 0x34;
+          lVar18 = (ulonglong)uVar6 * 0x34;
           puVar3 = (undefined4 *)(lVar18 + 0x644 + (longlong)param_1);
           *puVar3 = *(undefined4 *)pbVar23;
           puVar3[1] = uVar7;
           puVar3[2] = uVar8;
           puVar3[3] = uVar9;
           uVar10 = *(undefined8 *)(pbVar23 + 0x18);
           puVar4 = (undefined8 *)(lVar18 + 0x654 + (longlong)param_1);
           *puVar4 = *(undefined8 *)(pbVar23 + 0x10);
           puVar4[1] = uVar10;
           pbVar28 = pbVar23 + 0x22;
           *(undefined2 *)(lVar18 + 0x664 + (longlong)param_1) = *(undefined2 *)(pbVar23 + 0x20);
           for (iVar14 = uVar22 - 0x22; 0 < iVar14; iVar14 = iVar14 + (-4 - (uint)uVar12)) {
             if ((ulonglong)(longlong)iVar14 < 4) goto LAB_7;
             uVar11 = Ordinal_15(*(undefined2 *)pbVar28);
             uVar12 = Ordinal_15(*(undefined2 *)(pbVar28 + 2));
             if ((longlong)iVar14 - 4U < (ulonglong)uVar12) goto LAB_2;
             if (uVar11 == 9) {
               bVar30 = pbVar21 != (byte *)0x0;
               pbVar21 = pbVar28;
               if (bVar30) goto LAB_2;
             }
             else if (uVar11 == 0x12) {
               lVar18 = (ulonglong)*(uint *)((longlong)param_1 + 0xcc4) * 0x34;
               if (*(longlong *)(lVar18 + 0x66a + (longlong)param_1) != 0) goto LAB_2;
               *(uint *)(lVar18 + 0x666 + (longlong)param_1) = (uint)uVar12;
               *(byte **)((ulonglong)*(uint *)((longlong)param_1 + 0xcc4) * 0x34 + 0x66a +
                         (longlong)param_1) = pbVar28 + 4;
               if (pbVar21 == (byte *)0x0) {
                 iVar26 = iVar26 + 4 + (uint)uVar12;
               }
             }
             else {
               if (pbVar21 == (byte *)0x0) {
                 iVar26 = iVar26 + 4 + (uint)uVar12;
               }
               if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
                  ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0)) {
-                WPP_SF_L(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x88,
-                         &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids,(uint)uVar11);
+                WPP_SF_L(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x89,
+                         &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids,(uint)uVar11);
               }
             }
             pbVar28 = pbVar28 + (ulonglong)uVar12 + 4;
           }
           if ((iVar14 != 0) || (pbVar21 == (byte *)0x0)) goto LAB_7;
           *(int *)((longlong)param_1 + 0xcc4) = *(int *)((longlong)param_1 + 0xcc4) + 1;
           uVar11 = Ordinal_15(*(undefined2 *)(pbVar21 + 2));
           pbVar23 = pbVar21 + 4;
           uVar16 = (ulonglong)local_res8;
           uVar27 = (ulonglong)(iVar26 + 4);
           uVar22 = (uint)uVar11;
         }
       }
       if (0 < (int)*(uint *)((longlong)param_1 + 0xcc4)) {
         piVar17 = (int *)((longlong)param_1 + 0x666);
         uVar16 = (ulonglong)*(uint *)((longlong)param_1 + 0xcc4);
         do {
           iVar14 = (int)pbVar21 + 0x22;
           if (*piVar17 != 0) {
             iVar14 = (int)pbVar21 + 0x26 + *piVar17;
           }
           pbVar21 = (byte *)(ulonglong)(iVar14 + 4);
           piVar17 = piVar17 + 0xd;
           uVar16 = uVar16 - 1;
         } while (uVar16 != 0);
       }
       if (((uVar20 < param_4) && (uVar22 = *(uint *)(param_1 + 1), uVar20 < uVar22)) &&
          (uVar6 = *(uint *)((longlong)param_1 + 0xc), uVar20 < uVar6)) {
         lVar18 = *param_1;
         *param_1 = uVar27 + lVar18;
         *(uint *)(param_1 + 1) = uVar22 - uVar20;
         *(uint *)((longlong)param_1 + 0xc) = uVar6 - uVar20;
         uVar20 = (uint)pbVar21;
         if (uVar20 < param_6) {
           pbVar23 = pbVar21 + (longlong)param_5;
           uVar16 = ProcessClientMessage(param_1,bVar19,pbVar23,param_6 - uVar20,param_7,param_8);
           *param_1 = lVar18;
           iVar14 = (int)uVar16;
           *(uint *)(param_1 + 1) = uVar22;
           *(uint *)((longlong)param_1 + 0xc) = uVar6;
           if ((iVar14 == 0) && (iVar26 = *(int *)((longlong)param_1 + 0xcc4) + -1, -1 < iVar26)) {
             puVar29 = (uint *)((longlong)param_1 + (longlong)iVar26 * 0x34 + 0x666);
             lVar18 = (longlong)iVar26;
             do {
               puVar24 = (uint *)(pbVar23 + -4);
               iVar26 = (int)pbVar21 + -4;
               if (iVar26 == 0) {
                 iVar14 = 0x4e2f;
                 if ((undefined **)WPP_GLOBAL_Control == &WPP_GLOBAL_Control) {
                   return 0x4e2f;
                 }
                 if ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0) {
-                  uVar13 = 0x8d;
+                  uVar13 = 0x8e;
 LAB_4:
                   WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),uVar13,
-                          &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids);
+                          &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids);
                 }
                 break;
               }
               if (pbVar23 + 1 < param_5) goto LAB_0;
               uVar13 = Ordinal_9(9);
               uVar22 = *param_7;
               *(undefined2 *)puVar24 = uVar13;
               uVar13 = Ordinal_15((short)uVar22);
               *param_7 = *param_7 + 4;
               *(undefined2 *)(pbVar23 + -2) = uVar13;
               iVar15 = 0;
               puVar25 = puVar24;
               if (*puVar29 != 0) {
                 uVar22 = *puVar29 + 4;
                 iVar26 = iVar26 - uVar22;
                 puVar25 = (uint *)((longlong)puVar24 - (ulonglong)uVar22);
                 if ((puVar29 == (uint *)0x0) || (puVar25 == (uint *)0x0)) goto LAB_0;
                 _Dst = puVar25 + 1;
                 if (puVar24 < _Dst) {
                   iVar14 = 0x7a;
                   break;
                 }
                 uVar11 = Ordinal_9(0x12);
                 local_res8 = (uint)uVar11;
                 *puVar25 = local_res8;
-                if (puVar24 < (uint *)((longlong)_Dst + (ulonglong)*puVar29)) {
+                if (puVar24 < (uint *)((ulonglong)*puVar29 + (longlong)_Dst)) {
                   iVar15 = 4;
                   iVar14 = 0x7a;
                 }
                 else {
                   memcpy(_Dst,*(void **)(puVar29 + 1),(ulonglong)*puVar29);
                   _Dst = (uint *)((longlong)_Dst + (ulonglong)*puVar29);
                   iVar14 = 0;
                   iVar15 = *puVar29 + 4;
                 }
                 if (iVar14 != 0) break;
                 uVar13 = Ordinal_9(((short)_Dst - (short)puVar25) + -4);
                 *(undefined2 *)((longlong)puVar25 + 2) = uVar13;
               }
               uVar7 = *(undefined4 *)((longlong)puVar29 + -0x1e);
               uVar8 = *(undefined4 *)((longlong)puVar29 + -0x1a);
               uVar9 = *(undefined4 *)((longlong)puVar29 + -0x16);
               pbVar23 = (byte *)((longlong)puVar25 + -0x22);
               pbVar21 = (byte *)(ulonglong)(iVar26 - 0x22);
               *(undefined4 *)pbVar23 = *(undefined4 *)((longlong)puVar29 + -0x22);
               *(undefined4 *)((longlong)puVar25 + -0x1e) = uVar7;
               *(undefined4 *)((longlong)puVar25 + -0x1a) = uVar8;
               *(undefined4 *)((longlong)puVar25 + -0x16) = uVar9;
               uVar10 = *(undefined8 *)((longlong)puVar29 + -10);
               *(undefined8 *)((longlong)puVar25 + -0x12) =
                    *(undefined8 *)((longlong)puVar29 + -0x12);
               *(undefined8 *)((longlong)puVar25 + -10) = uVar10;
               puVar1 = (undefined2 *)((longlong)puVar29 + -2);
               puVar29 = puVar29 + -0xd;
               *(undefined2 *)((longlong)puVar25 + -2) = *puVar1;
               *param_7 = *param_7 + iVar15 + 0x22;
               *pbVar23 = 0xd;
               bVar30 = 0 < lVar18;
               lVar18 = lVar18 + -1;
             } while (bVar30);
           }
           goto LAB_1;
         }
         if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
            ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0)) {
-          WPP_SF_Ll(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x8c,
-                    &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids,uVar20);
+          WPP_SF_Ll(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x8d,
+                    &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids,uVar20);
         }
       }
       else if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
               ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0)) {
-        WPP_SF_dddd(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x8b,
-                    &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids,uVar20);
+        WPP_SF_dddd(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x8c,
+                    &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids,uVar20);
       }
     }
     else if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
             ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x86,
-              &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids);
+              &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids);
     }
 LAB_6:
     iVar14 = 0x4e2f;
   }
   else {
     if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
        ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0)) {
       WPP_SF_(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x85,
-              &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids);
+              &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids);
     }
 LAB_7:
     iVar14 = 0x4e2f;
   }
 LAB_1:
   if (((undefined **)WPP_GLOBAL_Control != &WPP_GLOBAL_Control) &&
      ((WPP_GLOBAL_Control[0x1c] & 0x20) != 0)) {
-    WPP_SF_L(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x8e,
-             &WPP_d1c584a0c48a3a413359491273f9741a_Traceguids,iVar14);
+    WPP_SF_L(*(undefined8 *)(WPP_GLOBAL_Control + 0x10),0x8f,
+             &WPP_bc9040a7c7013d7df9fd084e586acf5b_Traceguids,iVar14);
   }
   return iVar14;
 }
 

```


# Modified (No Code Changes)


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



<sub>Generated with `ghidriff` version: 1.0.0 on 2026-08-15T23:49:09</sub>