Index: Comp.c
===================================================================
--- Comp.c	(revision 15522)
+++ Comp.c	(working copy)
@@ -50,6 +50,7 @@
   CHAR16              *FileName1;
   CHAR16              *FileName2;
   CONST CHAR16        *TempParam;
+  UINTN               ErrorAddress;
 
   ErrorCount          = 0;
   ShellStatus         = SHELL_SUCCESS;
@@ -136,12 +137,18 @@
           Status = gEfiShellProtocol->ReadFile(FileHandle2, &DataSizeFromFile2, &DataFromFile2);
           ASSERT_EFI_ERROR(Status);
           if (DataFromFile1 != DataFromFile2) {
+            ErrorAddress = LoopVar;
             ADF_File11 = 0;
             ADF_File12 = 0;
             ADF_File13 = 0;
             ADF_File21 = 0;
             ADF_File22 = 0;
             ADF_File23 = 0;
+
+            //
+            // Now check the next 3 bytes if possible.  This will make output
+            // cleaner when there are a sequence of differences.
+            //
             if (LoopVar + 1 < Size1) {
               LoopVar++;
               DataSizeFromFile1 = 1;
@@ -169,6 +176,10 @@
                 }
               }
             }
+
+            //
+            // Print out based on highest of the 4 bytes that are different.
+            //
             if (ADF_File13 != ADF_File23) {
               ShellPrintHiiEx(
                 -1,
@@ -178,11 +189,11 @@
                 gShellDebug1HiiHandle,
                 ++ErrorCount,
                 FileName1,
-                LoopVar,
+                ErrorAddress,
                 DataFromFile1, ADF_File11, ADF_File12, ADF_File13,
                 DataFromFile1, ADF_File11, ADF_File12, ADF_File13,
                 FileName2,
-                LoopVar,
+                ErrorAddress,
                 DataFromFile2, ADF_File21, ADF_File22, ADF_File23,
                 DataFromFile2, ADF_File21, ADF_File22, ADF_File23
                );
@@ -195,11 +206,11 @@
                 gShellDebug1HiiHandle,
                 ++ErrorCount,
                 FileName1,
-                LoopVar,
+                ErrorAddress,
                 DataFromFile1, ADF_File11, ADF_File12,
                 DataFromFile1, ADF_File11, ADF_File12,
                 FileName2,
-                LoopVar,
+                ErrorAddress,
                 DataFromFile2, ADF_File21, ADF_File22,
                 DataFromFile2, ADF_File21, ADF_File22
                );
@@ -212,11 +223,11 @@
                 gShellDebug1HiiHandle,
                 ++ErrorCount,
                 FileName1,
-                LoopVar,
+                ErrorAddress,
                 DataFromFile1, ADF_File11,
                 DataFromFile1, ADF_File11,
                 FileName2,
-                LoopVar,
+                ErrorAddress,
                 DataFromFile2, ADF_File21,
                 DataFromFile2, ADF_File21
                );
@@ -229,11 +240,11 @@
                 gShellDebug1HiiHandle,
                 ++ErrorCount,
                 FileName1,
-                LoopVar,
+                ErrorAddress,
                 DataFromFile1,
                 DataFromFile1,
                 FileName2,
-                LoopVar,
+                ErrorAddress,
                 DataFromFile2,
                 DataFromFile2
                );
