diff --git a/de4dot.code/MethodReturnValueInliner.cs b/de4dot.code/MethodReturnValueInliner.cs index 97a2e8f4..9c759356 100644 --- a/de4dot.code/MethodReturnValueInliner.cs +++ b/de4dot.code/MethodReturnValueInliner.cs @@ -304,10 +304,7 @@ namespace de4dot { if (i1 < i2) return -1; if (i1 > i2) return 1; - if (a.callStartIndex < b.callStartIndex) return -1; - if (a.callStartIndex > b.callStartIndex) return 1; - - return 0; + return Utils.compareInt32(a.callStartIndex, b.callStartIndex); }); callResults.Reverse(); inlineReturnValues(callResults); diff --git a/de4dot.code/ObfuscatedFile.cs b/de4dot.code/ObfuscatedFile.cs index 9706e44a..3035641c 100644 --- a/de4dot.code/ObfuscatedFile.cs +++ b/de4dot.code/ObfuscatedFile.cs @@ -591,11 +591,7 @@ namespace de4dot { } var sortedTargets = new List(targets.Keys); - sortedTargets.Sort((a, b) => { - if (a.Offset < b.Offset) return -1; - if (a.Offset > b.Offset) return 1; - return 0; - }); + sortedTargets.Sort((a, b) => Utils.compareInt32(a.Offset, b.Offset)); for (int i = 0; i < sortedTargets.Count; i++) labels[sortedTargets[i]] = string.Format("label_{0}", i); } diff --git a/de4dot.code/Utils.cs b/de4dot.code/Utils.cs index c9934691..0bb01126 100644 --- a/de4dot.code/Utils.cs +++ b/de4dot.code/Utils.cs @@ -230,5 +230,11 @@ namespace de4dot { } return true; } + + public static int compareInt32(int a, int b) { + if (a < b) return -1; + if (a > b) return 1; + return 0; + } } } diff --git a/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs b/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs index c5141e5f..d5e0b36d 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs @@ -68,12 +68,7 @@ namespace de4dot.deobfuscators.SmartAssembly { if (mainMethod == null || methods.Count < MIN_HELPER_METHODS) return false; - methods.Sort((a, b) => { - if (a.Parameters.Count < b.Parameters.Count) return -1; - if (a.Parameters.Count > b.Parameters.Count) return 1; - return 0; - }); - + methods.Sort((a, b) => Utils.compareInt32(a.Parameters.Count, b.Parameters.Count)); for (int i = 0; i < methods.Count; i++) { var method = methods[i]; if (method.Parameters.Count != i + 1) diff --git a/de4dot.code/deobfuscators/TypesRestorer.cs b/de4dot.code/deobfuscators/TypesRestorer.cs index 5922db72..ffed6806 100644 --- a/de4dot.code/deobfuscators/TypesRestorer.cs +++ b/de4dot.code/deobfuscators/TypesRestorer.cs @@ -154,11 +154,7 @@ namespace de4dot.deobfuscators { var fields = new List(updatedFields.Values); if (fields.Count > 0) { Log.v("Changing field types from object -> real type"); - fields.Sort((a, b) => { - if (a.token < b.token) return -1; - if (a.token > b.token) return 1; - return 0; - }); + fields.Sort((a, b) => Utils.compareInt32(a.token, b.token)); Log.indent(); foreach (var updatedField in fields) Log.v("Field {0:X8}: type {1} ({2:X8})", updatedField.token, updatedField.newFieldType.FullName, updatedField.newFieldType.MetadataToken.ToInt32()); @@ -168,11 +164,7 @@ namespace de4dot.deobfuscators { var methods = new List(updatedMethods.Values); if (methods.Count > 0) { Log.v("Changing method args and return types from object -> real type"); - methods.Sort((a, b) => { - if (a.token < b.token) return -1; - if (a.token > b.token) return 1; - return 0; - }); + methods.Sort((a, b) => Utils.compareInt32(a.token, b.token)); Log.indent(); foreach (var updatedMethod in methods) { Log.v("Method {0:X8}", updatedMethod.token); @@ -218,10 +210,7 @@ namespace de4dot.deobfuscators { if (a.arg.Method.MetadataToken.ToInt32() < b.arg.Method.MetadataToken.ToInt32()) return -1; if (a.arg.Method.MetadataToken.ToInt32() > b.arg.Method.MetadataToken.ToInt32()) return 1; - if (a.arg.Index < b.arg.Index) return -1; - if (a.arg.Index < b.arg.Index) return 1; - - return 0; + return Utils.compareInt32(a.arg.Index, b.arg.Index); } class PushedArgs {