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
pie showData
title Function Matches - 100.0000%
"unmatched_funcs_len" : 0
"matched_funcs_len" : 44076
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
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
--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
--- 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
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 |
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
pie showData
title First Matches
"SymbolsHash" : 1860
"ExactBytesFunctionHasher" : 14690
"BSIM" : 38
"BulkInstructionHash" : 311
"StructuralGraphHash" : 2557
"Implied-Match" : 1
pie showData
title Diff Stats
"added_funcs_len" : 0
"deleted_funcs_len" : 0
"modified_funcs_len" : 2
pie showData
title Symbols
"added_symbols_len" : 0
"deleted_symbols_len" : 0
No string differences found
Modified functions contain code changes
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 |
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:FUN_0049f050 |
Expand for full list:FUN_0049f050 |
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
+++ 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();
}
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 |
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
+++ FUN_004a5600 called
@@ -1,4 +0,0 @@
-<EXTERNAL>::freeaddrinfo
-<EXTERNAL>::getaddrinfo
-<EXTERNAL>::inet_ntoa
-<EXTERNAL>::strcpy
--- 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;
}
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