Skip to content

Instantly share code, notes, and snippets.

@rcky844
Last active June 11, 2025 13:05
Show Gist options
  • Save rcky844/b91fa66d0e9629972693e4048c758c26 to your computer and use it in GitHub Desktop.
Save rcky844/b91fa66d0e9629972693e4048c758c26 to your computer and use it in GitHub Desktop.
vuescan cracked diff

vuescan.orig-vuescan Diff

TOC

Visual Chart Diff

flowchart LR

FUN_0047b4d0-0-old<--Match 93%-->FUN_0047b4d0-0-new
FUN_004a5600-0-old<--Match 5%-->FUN_004a5600-0-new

subgraph vuescan
    FUN_0047b4d0-0-new
FUN_004a5600-0-new
    
end

subgraph vuescan.orig
    FUN_0047b4d0-0-old
FUN_004a5600-0-old
    
end

Loading
pie showData
    title Function Matches - 100.0000%
"unmatched_funcs_len" : 0
"matched_funcs_len" : 44076
Loading
pie showData
    title Matched Function Similarity - 99.9955%
"matched_funcs_with_code_changes_len" : 2
"matched_funcs_with_non_code_changes_len" : 0
"matched_funcs_no_changes_len" : 44074
Loading

Metadata

Ghidra Diff Engine

Command Line

Captured Command Line

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

Verbose Args

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

Binary Metadata Diff

--- vuescan.orig Meta
+++ vuescan Meta
@@ -1,59 +1,59 @@
-Program Name: vuescan.orig
+Program Name: vuescan
 Language ID: x86:LE:64:default (4.1)
 Compiler ID: gcc
 Processor: x86
 Endian: Little
 Address Size: 64
 Minimum Address: 00400000
 Maximum Address: unallocated_0::0053595e
 # of Bytes: 59775370
 # of Memory Blocks: 33
-# of Instructions: 1330264
+# of Instructions: 1330287
 # of Defined Data: 345934
-# of Functions: 22039
-# of Symbols: 115598
+# of Functions: 22037
+# of Symbols: 115592
 # of Data Types: 454
 # of Data Type Categories: 50
 Analyzed: true
 Created With Ghidra Version: 11.3.2
-Date Created: Wed Jun 11 19:21:55 HKT 2025
+Date Created: Wed Jun 11 19:22:05 HKT 2025
 ELF File Type: executable
 ELF Note[GNU BuildId]: 49ba49d77b136bfe691481ef0b5f7f4e1ed6b93c
 ELF Note[required kernel ABI]: Linux 2.6.15
 ELF Original Image Base: 0x400000
 ELF Prelinked: false
 Elf Comment[0]: GCC: (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
 Elf Comment[1]: GCC: (Ubuntu 4.4.4-6ubuntu2) 4.4.4
 Elf Comment[2]: GCC: (Ubuntu/Linaro 4.4.4-14ubuntu1) 4.4.5 20100909 (prerelease)
 Executable Format: Executable and Linking Format (ELF)
-Executable Location: /tmp/vuescan_patches/vuescan.orig
-Executable MD5: 208ab794333cac12842ca909bd29446f
-Executable SHA256: f0378791bb89919e1a091cff5c73485717f4d16e2a8ab8eb017b9b7d36251b9e
-FSRL: file:///tmp/vuescan_patches/vuescan.orig?MD5=208ab794333cac12842ca909bd29446f
+Executable Location: /tmp/vuescan_patches/vuescan
+Executable MD5: a46ce6415057e99d39dcef86a5c8f5d7
+Executable SHA256: 75fecaa784a858f3e9f5030b191d46b7620ad34367f6819e13ee6c287e31ca0e
+FSRL: file:///tmp/vuescan_patches/vuescan?MD5=a46ce6415057e99d39dcef86a5c8f5d7
 Preferred Root Namespace Category: 
 Relocatable: false
 Required Library [    0]: libpthread.so.0
 Required Library [    1]: libgtk-x11-2.0.so.0
 Required Library [    2]: libgdk-x11-2.0.so.0
 Required Library [    3]: libatk-1.0.so.0
 Required Library [    4]: libgdk_pixbuf-2.0.so.0
 Required Library [    5]: libpangocairo-1.0.so.0
 Required Library [    6]: libpango-1.0.so.0
 Required Library [    7]: libcairo.so.2
 Required Library [    8]: libgobject-2.0.so.0
 Required Library [    9]: libfreetype.so.6
 Required Library [   10]: libglib-2.0.so.0
 Required Library [   11]: libgmodule-2.0.so.0
 Required Library [   12]: libgthread-2.0.so.0
 Required Library [   13]: libdl.so.2
 Required Library [   14]: libXext.so.6
 Required Library [   15]: libX11.so.6
 Required Library [   16]: libXi.so.6
 Required Library [   17]: libSM.so.6
 Required Library [   18]: libICE.so.6
 Required Library [   19]: libstdc++.so.6
 Required Library [   20]: libm.so.6
 Required Library [   21]: libgcc_s.so.1
 Required Library [   22]: libc.so.6
 Required Library [   23]: libgio-2.0.so.0
 Should Ask To Analyze: false

Program Options

Ghidra vuescan.orig Decompiler Options
Decompiler Option Value
Prototype Evaluation __stdcall
Ghidra vuescan.orig Specification extensions Options
Specification extensions Option Value
FormatVersion 0
VersionCounter 0
Ghidra vuescan.orig Analyzers Options
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
DWARF true
DWARF.Add Inlined Functions Comments false
DWARF.Add Lexical Block Comments false
DWARF.Create Function Signatures true
DWARF.Default Calling Convention
DWARF.Ignore Parameter Storage Info false
DWARF.Import Data Types true
DWARF.Import Functions true
DWARF.Import Local Variable Info true
DWARF.Import Source Line Info true
DWARF.Maximum Source Map Entry Length 2000
DWARF.Output DWARF DIE Info false
DWARF.Output Source Info false
DWARF.Try To Pack Structs true
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 false
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 false
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 __stdcall
Decompiler Switch Analysis true
Decompiler Switch Analysis.Analysis Decompiler Timeout (sec) 60
Demangler GNU true
Demangler GNU.Apply Function Calling Conventions true
Demangler GNU.Apply Function Signatures true
Demangler GNU.Demangle Only Known Mangled Symbols false
Demangler GNU.Demangler Format AUTO
Demangler GNU.Use Deprecated Demangler false
Demangler GNU.Use Standard Text Replacements true
Disassemble Entry Points true
Disassemble Entry Points.Respect Execute Flag true
ELF Scalar Operand References true
ELF Scalar Operand References.Relocation Table Guide true
Embedded Media true
Embedded Media.Create Analysis Bookmarks true
External Entry References true
External Symbol Resolver 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 After Code true
Function Start Search After Code.Bookmark Functions false
Function Start Search After Code.Search Data Blocks false
Function Start Search After Data true
Function Start Search After Data.Bookmark Functions false
Function Start Search After Data.Search Data Blocks false
Function Start Search.Bookmark Functions false
Function Start Search.Search Data Blocks false
GCC Exception Handlers true
GCC Exception Handlers.Create Try Catch Comments true
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
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 false
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
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.useNewFunctionStackAnalysis true
Subroutine References true
Subroutine References.Create Thunks Early true
Variadic Function Signature Override false
Variadic Function Signature Override.Create Analysis Bookmarks false
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
Ghidra vuescan Decompiler Options
Decompiler Option Value
Prototype Evaluation __stdcall
Ghidra vuescan Specification extensions Options
Specification extensions Option Value
FormatVersion 0
VersionCounter 0
Ghidra vuescan Analyzers Options
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
DWARF true
DWARF.Add Inlined Functions Comments false
DWARF.Add Lexical Block Comments false
DWARF.Create Function Signatures true
DWARF.Default Calling Convention
DWARF.Ignore Parameter Storage Info false
DWARF.Import Data Types true
DWARF.Import Functions true
DWARF.Import Local Variable Info true
DWARF.Import Source Line Info true
DWARF.Maximum Source Map Entry Length 2000
DWARF.Output DWARF DIE Info false
DWARF.Output Source Info false
DWARF.Try To Pack Structs true
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 false
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 false
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 __stdcall
Decompiler Switch Analysis true
Decompiler Switch Analysis.Analysis Decompiler Timeout (sec) 60
Demangler GNU true
Demangler GNU.Apply Function Calling Conventions true
Demangler GNU.Apply Function Signatures true
Demangler GNU.Demangle Only Known Mangled Symbols false
Demangler GNU.Demangler Format AUTO
Demangler GNU.Use Deprecated Demangler false
Demangler GNU.Use Standard Text Replacements true
Disassemble Entry Points true
Disassemble Entry Points.Respect Execute Flag true
ELF Scalar Operand References true
ELF Scalar Operand References.Relocation Table Guide true
Embedded Media true
Embedded Media.Create Analysis Bookmarks true
External Entry References true
External Symbol Resolver 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 After Code true
Function Start Search After Code.Bookmark Functions false
Function Start Search After Code.Search Data Blocks false
Function Start Search After Data true
Function Start Search After Data.Bookmark Functions false
Function Start Search After Data.Search Data Blocks false
Function Start Search.Bookmark Functions false
Function Start Search.Search Data Blocks false
GCC Exception Handlers true
GCC Exception Handlers.Create Try Catch Comments true
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
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 false
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
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.useNewFunctionStackAnalysis true
Subroutine References true
Subroutine References.Create Thunks Early true
Variadic Function Signature Override false
Variadic Function Signature Override.Create Analysis Bookmarks false
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

Diff Stats

Stat Value
added_funcs_len 0
deleted_funcs_len 0
modified_funcs_len 2
added_symbols_len 0
deleted_symbols_len 0
diff_time 149.0679430961609
deleted_strings_len 0
added_strings_len 0
match_types Counter({'ExactBytesFunctionHasher': 14690, 'StructuralGraphHash': 2557, 'SymbolsHash': 1860, 'ExternalsName': 1498, 'BulkInstructionHash': 311, 'BSIM': 42, 'Implied Match': 1})
items_to_process 2
diff_types Counter({'code': 2, 'length': 2, 'called': 1})
unmatched_funcs_len 0
total_funcs_len 44076
matched_funcs_len 44076
matched_funcs_with_code_changes_len 2
matched_funcs_with_non_code_changes_len 0
matched_funcs_no_changes_len 44074
match_func_similarity_percent 99.9955%
func_match_overall_percent 100.0000%
first_matches Counter({'ExactBytesFunctionHasher': 14690, 'StructuralGraphHash': 2557, 'SymbolsHash': 1860, 'BulkInstructionHash': 311, 'BSIM': 38, 'Implied Match': 1})
pie showData
    title All Matches
"SymbolsHash" : 1860
"ExternalsName" : 1498
"BSIM" : 42
"ExactBytesFunctionHasher" : 14690
"BulkInstructionHash" : 311
"StructuralGraphHash" : 2557
"Implied-Match" : 1
Loading
pie showData
    title First Matches
"SymbolsHash" : 1860
"ExactBytesFunctionHasher" : 14690
"BSIM" : 38
"BulkInstructionHash" : 311
"StructuralGraphHash" : 2557
"Implied-Match" : 1
Loading
pie showData
    title Diff Stats
"added_funcs_len" : 0
"deleted_funcs_len" : 0
"modified_funcs_len" : 2
Loading
pie showData
    title Symbols
"added_symbols_len" : 0
"deleted_symbols_len" : 0
Loading

Strings

No string differences found

Deleted

Added

Modified

Modified functions contain code changes

FUN_0047b4d0

Match Info

Key vuescan.orig - vuescan
diff_type code,length
ratio 0.98
i_ratio 0.99
m_ratio 1.0
b_ratio 0.93
match_types BSIM

Function Meta Diff

Key vuescan.orig vuescan
name FUN_0047b4d0 FUN_0047b4d0
fullname FUN_0047b4d0 FUN_0047b4d0
refcount 4 4
length 1340 1332
called
Expand for full list:
::__sprintf_chk
::__stack_chk_fail
::__strcat_chk
::__strcpy_chk
FUN_00441320
FUN_004435b0
FUN_00472000
FUN_0047ab90
FUN_004934f0
FUN_00498b40
FUN_0049eec0
FUN_0049f050
FUN_0049f230
FUN_0049f2d0
FUN_0049ff80
FUN_004a1f00
FUN_004a4650
FUN_004a4670
FUN_004b0c90
FUN_004b1c70
FUN_004b3a00
FUN_0053c650
Expand for full list:
::__sprintf_chk
::__stack_chk_fail
::__strcat_chk
::__strcpy_chk
FUN_00441320
FUN_004435b0
FUN_00472000
FUN_0047ab90
FUN_004934f0
FUN_00498b40
FUN_0049eec0
FUN_0049f050
FUN_0049f230
FUN_0049f2d0
FUN_0049ff80
FUN_004a1f00
FUN_004a4650
FUN_004a4670
FUN_004b0c90
FUN_004b1c70
FUN_004b3a00
FUN_0053c650
calling FUN_0047ba60
FUN_0047bd70
FUN_0047ba60
FUN_0047bd70
paramcount 0 0
address 0047b4d0 0047b4d0
sig undefined FUN_0047b4d0(void) undefined FUN_0047b4d0(void)
sym_type Function Function
sym_source DEFAULT DEFAULT
external False False

FUN_0047b4d0 Diff

--- FUN_0047b4d0
+++ FUN_0047b4d0
@@ -1,140 +1,137 @@
 
 /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
 
 void FUN_0047b4d0(long param_1,int param_2)
 
 {
   uint uVar1;
   int iVar2;
   undefined4 uVar3;
   undefined8 uVar4;
   long lVar5;
   long in_FS_OFFSET;
   bool bVar6;
   long local_648;
   int local_640;
   int local_63c;
   undefined1 local_638 [1024];
   undefined4 local_238;
   undefined1 local_234;
   long local_30;
   
   local_30 = *(long *)(in_FS_OFFSET + 0x28);
   iVar2 = FUN_004a4670(*(undefined8 *)(param_1 + 0x17038),1);
   if (iVar2 != 0) {
     if (*(int *)(param_1 + 0x17044) != 0) {
       *(undefined4 *)(param_1 + 0x17044) = 0;
       lVar5 = FUN_00441320(param_1,*(undefined4 *)(param_1 + 0x17048));
       if (lVar5 != 0) {
         FUN_004934f0(lVar5,*(undefined8 *)(param_1 + 0x17050),*(undefined8 *)(param_1 + 0x17058),0,
                      inpu_rot,inpu_mir,0,1);
       }
       if (*(long *)(param_1 + 0x90b0) != 0) {
         FUN_00498b40(*(long *)(param_1 + 0x90b0),*(undefined4 *)(param_1 + 0x17048),
                      *(undefined8 *)(param_1 + 0x17060),*(undefined8 *)(param_1 + 0x17068),
                      *(undefined8 *)(param_1 + 0x17058));
       }
     }
     FUN_004a4650(*(undefined8 *)(param_1 + 0x17038));
   }
   FUN_0049f2d0(&local_63c,&local_640,&local_238);
   iVar2 = FUN_0053c650(*(undefined8 *)(param_1 + 0x90c8),param_2,"change buffer");
   if (iVar2 != 0) {
     FUN_004435b0(param_1,0);
   }
   if (((local_63c == 0) || (local_640 == 0)) || ((char)local_238 == '\0')) {
     iVar2 = FUN_0049eec0();
   }
   else {
     iVar2 = FUN_004b0c90(local_63c,&local_238);
   }
   if (iVar2 == 0) {
     _vali = 0;
   }
   iVar2 = FUN_0049f050();
   if (iVar2 != 0) {
     _vali = 0;
   }
   if ((inpu_are == 0) ||
      (uVar1 = *(uint *)(*(long *)(param_1 + 0x90b8) + 0x1164), (uVar1 & 0x20020) != 0)) {
 LAB_0:
     if (((_inpu_asc == 0) || (-1 < *(short *)(*(long *)(param_1 + 0x90b8) + 0x1164))) &&
        (*(int *)(param_1 + 0x8ee8) == 0)) {
       *(undefined4 *)(param_1 + 0x2b2d4) = 3;
       goto joined_r0x0047b7d7;
     }
   }
   else if (inpu_bat == 2) {
     if ((uVar1 & 0x20000) != 0) goto LAB_0;
   }
   else if ((((uVar1 & 0x24000) != 0) || (((uVar1 & 0x4000000) != 0 && (crop_mct != 0)))) &&
           (inpu_bat != 0)) goto LAB_0;
   *(undefined4 *)(param_1 + 0x2b2d4) = 0;
 joined_r0x0047b7d7:
   if (param_2 == 1) {
     local_648 = *(long *)(param_1 + 0x173a0);
   }
   else {
     local_648 = *(long *)(param_1 + 0x173b8);
   }
   if (local_648 != 0) {
     uVar4 = FUN_004b1c70();
     __strcpy_chk(local_638,uVar4,0x400);
     iVar2 = FUN_004b3a00(&local_648);
     if (iVar2 != 0) {
       __sprintf_chk(&local_238,1,0x200,"Error writing %s",local_638);
       FUN_004a1f00(&local_238,"Warning",0);
     }
   }
   local_238 = 0x6d74656c;
   local_234 = 0;
   __strcat_chk(&local_238,&DAT_1,0x40);
   __strcat_chk(&local_238,&DAT_2,0x40);
   __strcat_chk(&local_238,&DAT_3,0x40);
   __strcat_chk(&local_238,"com",0x40);
-  iVar2 = FUN_004b0c90(0x6e0703f,&local_238);
-  if (iVar2 != 0) {
-    _vali = 0;
-  }
+  FUN_004b0c90(0x6e0703f,&local_238);
   if (param_2 == 1) {
     if (inpu_lex == 0) {
       inpu_pex = 1000;
     }
     else {
       inpu_pex = inpu_rex;
     }
   }
   if ((inpu_afo & (long)(1 << ((char)param_2 - 1U & 0x1f))) != 0) {
     iVar2 = FUN_0053c650(*(undefined8 *)(param_1 + 0x90c8),param_2,"buffer focus position");
     FUN_00472000(param_1,&inpu_foc,(long)iVar2,1,2);
   }
   if (_vali == 0) {
     _vali = 2;
     FUN_0049f230(0,0,&DAT_4);
     FUN_00472000(param_1,&inpu_opt,1,1,2);
   }
   if (param_2 == 1) {
     if (1 < crop_pre) {
       if (crop_pre == 2) {
         FUN_00472000(param_1,&crop_pre,1,1,2);
       }
       FUN_00472000(param_1,&crop_xof,*(int *)(param_1 + 0x4879c) - _crop_pxo,1,2);
       FUN_00472000(param_1,&crop_yof,*(int *)(param_1 + 0x487a0) - _crop_pyo,1,2);
     }
     bVar6 = *(int *)(param_1 + 0x173a8) == 0;
   }
   else {
     bVar6 = param_2 == 2;
   }
   if (bVar6) {
     FUN_0047ab90(param_1);
   }
   uVar3 = FUN_0049ff80();
   *(undefined4 *)(param_1 + 0x2b2a4) = uVar3;
   if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
     return;
   }
                     /* WARNING: Subroutine does not return */
   __stack_chk_fail();
 }
 

FUN_004a5600

Match Info

Key vuescan.orig - vuescan
diff_type code,length,called
ratio 0.25
i_ratio 0.05
m_ratio 0.05
b_ratio 0.05
match_types Implied Match

Function Meta Diff

Key vuescan.orig vuescan
name FUN_004a5600 FUN_004a5600
fullname FUN_004a5600 FUN_004a5600
refcount 6 6
length 132 1
called ::freeaddrinfo
::getaddrinfo
::inet_ntoa
::strcpy
calling FUN_0043bc70
FUN_0043be70
FUN_00539cc0
FUN_0053a170
FUN_0043bc70
FUN_0043be70
FUN_00539cc0
FUN_0053a170
paramcount 0 0
address 004a5600 004a5600
sig undefined FUN_004a5600(void) undefined FUN_004a5600(void)
sym_type Function Function
sym_source DEFAULT DEFAULT
external False False

FUN_004a5600 Called Diff

--- FUN_004a5600 called
+++ FUN_004a5600 called
@@ -1,4 +0,0 @@
-<EXTERNAL>::freeaddrinfo
-<EXTERNAL>::getaddrinfo
-<EXTERNAL>::inet_ntoa
-<EXTERNAL>::strcpy

FUN_004a5600 Diff

--- FUN_004a5600
+++ FUN_004a5600
@@ -1,31 +1,7 @@
 
-void FUN_004a5600(char *param_1,undefined8 param_2,char *param_3)
+void FUN_004a5600(void)
 
 {
-  int iVar1;
-  char *__src;
-  long lVar2;
-  addrinfo *paVar3;
-  addrinfo aStack_48;
-  addrinfo *local_10;
-  
-  *param_3 = '\0';
-  paVar3 = &aStack_48;
-  for (lVar2 = 6; lVar2 != 0; lVar2 = lVar2 + -1) {
-    *(undefined8 *)paVar3 = 0;
-    paVar3 = (addrinfo *)((long)paVar3 + 8);
-  }
-  aStack_48.ai_family = 2;
-  aStack_48.ai_socktype = 1;
-  aStack_48.ai_protocol = 6;
-  iVar1 = getaddrinfo(param_1,(char *)0x0,&aStack_48,&local_10);
-  if (iVar1 == 0) {
-    if ((local_10->ai_addrlen != 0) && (local_10->ai_addr->sa_family == 2)) {
-      __src = inet_ntoa((in_addr)*(in_addr_t *)(local_10->ai_addr->sa_data + 2));
-      strcpy(param_3,__src);
-    }
-    freeaddrinfo(local_10);
-  }
   return;
 }
 

Modified (No Code Changes)

Slightly modified functions have no code changes, rather differnces in:

  • refcount
  • length
  • called
  • calling
  • name
  • fullname

Generated with ghidriff version: 0.9.0 on 2025-06-11T19:32:22

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment