                 if (max == -1)
                     break;
                 done[max] = 1;
-                infoPrint(opNames[max]+"\t"+int(opSizes[max])+"\t"+int(100*opSizes[max]/totalSize)+"%")
-            }
+                infoPrint(opNames[max]+"\t"+align(6,int(opCounts[max]))+"\t"+align(6,int(opSizes[max]))+"\t"+align(2,int(100*opSizes[max]/totalSize))+"%")
+            }
+        }
+
+        // right/left align 's' to 'len' characters using 'pad' as padding
+        function align(len, s, pad=' ', ment='right')
+        {
+            return (ment == 'right')
+                ? new Array(Math.max(0,len-String(s).length)).join(pad)+String(s)
+                : new String(s)+Array(Math.max(0,len-String(s).length)).join(pad)
         }
     }
 


    var totalSize:int
    var opSizes:Array = new Array(256)

    function dumpPrint(s) {
        if (doExtractAbs)

            }
            infoPrint("ScriptInfo size "+(data.position-start)+" "+int(100*(data.position-start)/data.length)+" %")
        }
        
        function parseMethodBodies()
        {
            var start:int = data.position
