public class com.sun.imageio.plugins.png.RowFilter
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.imageio.plugins.png.RowFilter
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.imageio.plugins.png.RowFilter this
         0: .line 28
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.sun.imageio.plugins.png.RowFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/imageio/plugins/png/RowFilter;

  private static final int abs(int);
    descriptor: (I)I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // int x
         0: .line 31
            iload 0 /* x */
            ifge 1
            iload 0 /* x */
            ineg
            goto 2
      StackMap locals:
      StackMap stack:
         1: iload 0 /* x */
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // int x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     x  I
    MethodParameters:
      Name  Flags
      x     

  protected static int subFilter(byte[], byte[], int, int);
    descriptor: ([B[BII)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=9, args_size=4
        start local 0 // byte[] currRow
        start local 1 // byte[] subFilteredRow
        start local 2 // int bytesPerPixel
        start local 3 // int bytesPerRow
         0: .line 39
            iconst_0
            istore 4 /* badness */
        start local 4 // int badness
         1: .line 40
            iload 2 /* bytesPerPixel */
            istore 5 /* i */
        start local 5 // int i
         2: goto 9
         3: .line 41
      StackMap locals: int int
      StackMap stack:
            aload 0 /* currRow */
            iload 5 /* i */
            baload
            sipush 255
            iand
            istore 6 /* curr */
        start local 6 // int curr
         4: .line 42
            aload 0 /* currRow */
            iload 5 /* i */
            iload 2 /* bytesPerPixel */
            isub
            baload
            sipush 255
            iand
            istore 7 /* left */
        start local 7 // int left
         5: .line 43
            iload 6 /* curr */
            iload 7 /* left */
            isub
            istore 8 /* difference */
        start local 8 // int difference
         6: .line 44
            aload 1 /* subFilteredRow */
            iload 5 /* i */
            iload 8 /* difference */
            i2b
            bastore
         7: .line 46
            iload 4 /* badness */
            iload 8 /* difference */
            invokestatic com.sun.imageio.plugins.png.RowFilter.abs:(I)I
            iadd
            istore 4 /* badness */
        end local 8 // int difference
        end local 7 // int left
        end local 6 // int curr
         8: .line 40
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 5 /* i */
            iload 3 /* bytesPerRow */
            iload 2 /* bytesPerPixel */
            iadd
            if_icmplt 3
        end local 5 // int i
        10: .line 49
            iload 4 /* badness */
            ireturn
        end local 4 // int badness
        end local 3 // int bytesPerRow
        end local 2 // int bytesPerPixel
        end local 1 // byte[] subFilteredRow
        end local 0 // byte[] currRow
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0         currRow  [B
            0   11     1  subFilteredRow  [B
            0   11     2   bytesPerPixel  I
            0   11     3     bytesPerRow  I
            1   11     4         badness  I
            2   10     5               i  I
            4    8     6            curr  I
            5    8     7            left  I
            6    8     8      difference  I
    MethodParameters:
                Name  Flags
      currRow         
      subFilteredRow  
      bytesPerPixel   
      bytesPerRow     

  protected static int upFilter(byte[], byte[], byte[], int, int);
    descriptor: ([B[B[BII)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=10, args_size=5
        start local 0 // byte[] currRow
        start local 1 // byte[] prevRow
        start local 2 // byte[] upFilteredRow
        start local 3 // int bytesPerPixel
        start local 4 // int bytesPerRow
         0: .line 58
            iconst_0
            istore 5 /* badness */
        start local 5 // int badness
         1: .line 59
            iload 3 /* bytesPerPixel */
            istore 6 /* i */
        start local 6 // int i
         2: goto 9
         3: .line 60
      StackMap locals: int int
      StackMap stack:
            aload 0 /* currRow */
            iload 6 /* i */
            baload
            sipush 255
            iand
            istore 7 /* curr */
        start local 7 // int curr
         4: .line 61
            aload 1 /* prevRow */
            iload 6 /* i */
            baload
            sipush 255
            iand
            istore 8 /* up */
        start local 8 // int up
         5: .line 62
            iload 7 /* curr */
            iload 8 /* up */
            isub
            istore 9 /* difference */
        start local 9 // int difference
         6: .line 63
            aload 2 /* upFilteredRow */
            iload 6 /* i */
            iload 9 /* difference */
            i2b
            bastore
         7: .line 65
            iload 5 /* badness */
            iload 9 /* difference */
            invokestatic com.sun.imageio.plugins.png.RowFilter.abs:(I)I
            iadd
            istore 5 /* badness */
        end local 9 // int difference
        end local 8 // int up
        end local 7 // int curr
         8: .line 59
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 6 /* i */
            iload 4 /* bytesPerRow */
            iload 3 /* bytesPerPixel */
            iadd
            if_icmplt 3
        end local 6 // int i
        10: .line 68
            iload 5 /* badness */
            ireturn
        end local 5 // int badness
        end local 4 // int bytesPerRow
        end local 3 // int bytesPerPixel
        end local 2 // byte[] upFilteredRow
        end local 1 // byte[] prevRow
        end local 0 // byte[] currRow
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0        currRow  [B
            0   11     1        prevRow  [B
            0   11     2  upFilteredRow  [B
            0   11     3  bytesPerPixel  I
            0   11     4    bytesPerRow  I
            1   11     5        badness  I
            2   10     6              i  I
            4    8     7           curr  I
            5    8     8             up  I
            6    8     9     difference  I
    MethodParameters:
               Name  Flags
      currRow        
      prevRow        
      upFilteredRow  
      bytesPerPixel  
      bytesPerRow    

  protected final int paethPredictor(int, int, int);
    descriptor: (III)I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=8, args_size=4
        start local 0 // com.sun.imageio.plugins.png.RowFilter this
        start local 1 // int a
        start local 2 // int b
        start local 3 // int c
         0: .line 72
            iload 1 /* a */
            iload 2 /* b */
            iadd
            iload 3 /* c */
            isub
            istore 4 /* p */
        start local 4 // int p
         1: .line 73
            iload 4 /* p */
            iload 1 /* a */
            isub
            invokestatic com.sun.imageio.plugins.png.RowFilter.abs:(I)I
            istore 5 /* pa */
        start local 5 // int pa
         2: .line 74
            iload 4 /* p */
            iload 2 /* b */
            isub
            invokestatic com.sun.imageio.plugins.png.RowFilter.abs:(I)I
            istore 6 /* pb */
        start local 6 // int pb
         3: .line 75
            iload 4 /* p */
            iload 3 /* c */
            isub
            invokestatic com.sun.imageio.plugins.png.RowFilter.abs:(I)I
            istore 7 /* pc */
        start local 7 // int pc
         4: .line 77
            iload 5 /* pa */
            iload 6 /* pb */
            if_icmpgt 6
            iload 5 /* pa */
            iload 7 /* pc */
            if_icmpgt 6
         5: .line 78
            iload 1 /* a */
            ireturn
         6: .line 79
      StackMap locals: com.sun.imageio.plugins.png.RowFilter int int int int int int int
      StackMap stack:
            iload 6 /* pb */
            iload 7 /* pc */
            if_icmpgt 8
         7: .line 80
            iload 2 /* b */
            ireturn
         8: .line 82
      StackMap locals:
      StackMap stack:
            iload 3 /* c */
            ireturn
        end local 7 // int pc
        end local 6 // int pb
        end local 5 // int pa
        end local 4 // int p
        end local 3 // int c
        end local 2 // int b
        end local 1 // int a
        end local 0 // com.sun.imageio.plugins.png.RowFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/sun/imageio/plugins/png/RowFilter;
            0    9     1     a  I
            0    9     2     b  I
            0    9     3     c  I
            1    9     4     p  I
            2    9     5    pa  I
            3    9     6    pb  I
            4    9     7    pc  I
    MethodParameters:
      Name  Flags
      a     
      b     
      c     

  public int filterRow(int, byte[], byte[], byte[][], int, int);
    descriptor: (I[B[B[[BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=17, args_size=7
        start local 0 // com.sun.imageio.plugins.png.RowFilter this
        start local 1 // int colorType
        start local 2 // byte[] currRow
        start local 3 // byte[] prevRow
        start local 4 // byte[][] scratchRows
        start local 5 // int bytesPerRow
        start local 6 // int bytesPerPixel
         0: .line 94
            iload 1 /* colorType */
            iconst_3
            if_icmpeq 6
         1: .line 95
            aload 2 /* currRow */
            iload 6 /* bytesPerPixel */
         2: .line 96
            aload 4 /* scratchRows */
            iconst_0
            aaload
            iload 6 /* bytesPerPixel */
         3: .line 97
            iload 5 /* bytesPerRow */
         4: .line 95
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 98
            iconst_0
            ireturn
         6: .line 101
      StackMap locals:
      StackMap stack:
            iconst_5
            newarray 10
            astore 7 /* filterBadness */
        start local 7 // int[] filterBadness
         7: .line 102
            iconst_0
            istore 8 /* i */
        start local 8 // int i
         8: goto 11
         9: .line 103
      StackMap locals: int[] int
      StackMap stack:
            aload 7 /* filterBadness */
            iload 8 /* i */
            ldc 2147483647
            iastore
        10: .line 102
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 8 /* i */
            iconst_5
            if_icmplt 9
        end local 8 // int i
        12: .line 107
            iconst_0
            istore 8 /* badness */
        start local 8 // int badness
        13: .line 109
            iload 6 /* bytesPerPixel */
            istore 9 /* i */
        start local 9 // int i
        14: goto 18
        15: .line 110
      StackMap locals: int
      StackMap stack:
            aload 2 /* currRow */
            iload 9 /* i */
            baload
            sipush 255
            iand
            istore 10 /* curr */
        start local 10 // int curr
        16: .line 111
            iload 8 /* badness */
            iload 10 /* curr */
            iadd
            istore 8 /* badness */
        end local 10 // int curr
        17: .line 109
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 9 /* i */
            iload 5 /* bytesPerRow */
            iload 6 /* bytesPerPixel */
            iadd
            if_icmplt 15
        end local 9 // int i
        19: .line 114
            aload 7 /* filterBadness */
            iconst_0
            iload 8 /* badness */
            iastore
        end local 8 // int badness
        20: .line 118
            aload 4 /* scratchRows */
            iconst_1
            aaload
            astore 8 /* subFilteredRow */
        start local 8 // byte[] subFilteredRow
        21: .line 119
            aload 2 /* currRow */
        22: .line 120
            aload 8 /* subFilteredRow */
        23: .line 121
            iload 6 /* bytesPerPixel */
        24: .line 122
            iload 5 /* bytesPerRow */
        25: .line 119
            invokestatic com.sun.imageio.plugins.png.RowFilter.subFilter:([B[BII)I
            istore 9 /* badness */
        start local 9 // int badness
        26: .line 124
            aload 7 /* filterBadness */
            iconst_1
            iload 9 /* badness */
            iastore
        end local 9 // int badness
        end local 8 // byte[] subFilteredRow
        27: .line 128
            aload 4 /* scratchRows */
            iconst_2
            aaload
            astore 8 /* upFilteredRow */
        start local 8 // byte[] upFilteredRow
        28: .line 129
            aload 2 /* currRow */
        29: .line 130
            aload 3 /* prevRow */
        30: .line 131
            aload 8 /* upFilteredRow */
        31: .line 132
            iload 6 /* bytesPerPixel */
        32: .line 133
            iload 5 /* bytesPerRow */
        33: .line 129
            invokestatic com.sun.imageio.plugins.png.RowFilter.upFilter:([B[B[BII)I
            istore 9 /* badness */
        start local 9 // int badness
        34: .line 135
            aload 7 /* filterBadness */
            iconst_2
            iload 9 /* badness */
            iastore
        end local 9 // int badness
        end local 8 // byte[] upFilteredRow
        35: .line 139
            aload 4 /* scratchRows */
            iconst_3
            aaload
            astore 8 /* averageFilteredRow */
        start local 8 // byte[] averageFilteredRow
        36: .line 140
            iconst_0
            istore 9 /* badness */
        start local 9 // int badness
        37: .line 142
            iload 6 /* bytesPerPixel */
            istore 10 /* i */
        start local 10 // int i
        38: goto 46
        39: .line 143
      StackMap locals: com.sun.imageio.plugins.png.RowFilter int byte[] byte[] byte[][] int int int[] byte[] int int
      StackMap stack:
            aload 2 /* currRow */
            iload 10 /* i */
            baload
            sipush 255
            iand
            istore 11 /* curr */
        start local 11 // int curr
        40: .line 144
            aload 2 /* currRow */
            iload 10 /* i */
            iload 6 /* bytesPerPixel */
            isub
            baload
            sipush 255
            iand
            istore 12 /* left */
        start local 12 // int left
        41: .line 145
            aload 3 /* prevRow */
            iload 10 /* i */
            baload
            sipush 255
            iand
            istore 13 /* up */
        start local 13 // int up
        42: .line 146
            iload 11 /* curr */
            iload 12 /* left */
            iload 13 /* up */
            iadd
            iconst_2
            idiv
            isub
            istore 14 /* difference */
        start local 14 // int difference
        43: .line 147
            aload 8 /* averageFilteredRow */
            iload 10 /* i */
            iload 14 /* difference */
            i2b
            bastore
        44: .line 149
            iload 9 /* badness */
            iload 14 /* difference */
            invokestatic com.sun.imageio.plugins.png.RowFilter.abs:(I)I
            iadd
            istore 9 /* badness */
        end local 14 // int difference
        end local 13 // int up
        end local 12 // int left
        end local 11 // int curr
        45: .line 142
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        46: iload 10 /* i */
            iload 5 /* bytesPerRow */
            iload 6 /* bytesPerPixel */
            iadd
            if_icmplt 39
        end local 10 // int i
        47: .line 152
            aload 7 /* filterBadness */
            iconst_3
            iload 9 /* badness */
            iastore
        end local 9 // int badness
        end local 8 // byte[] averageFilteredRow
        48: .line 156
            aload 4 /* scratchRows */
            iconst_4
            aaload
            astore 8 /* paethFilteredRow */
        start local 8 // byte[] paethFilteredRow
        49: .line 157
            iconst_0
            istore 9 /* badness */
        start local 9 // int badness
        50: .line 159
            iload 6 /* bytesPerPixel */
            istore 10 /* i */
        start local 10 // int i
        51: goto 61
        52: .line 160
      StackMap locals:
      StackMap stack:
            aload 2 /* currRow */
            iload 10 /* i */
            baload
            sipush 255
            iand
            istore 11 /* curr */
        start local 11 // int curr
        53: .line 161
            aload 2 /* currRow */
            iload 10 /* i */
            iload 6 /* bytesPerPixel */
            isub
            baload
            sipush 255
            iand
            istore 12 /* left */
        start local 12 // int left
        54: .line 162
            aload 3 /* prevRow */
            iload 10 /* i */
            baload
            sipush 255
            iand
            istore 13 /* up */
        start local 13 // int up
        55: .line 163
            aload 3 /* prevRow */
            iload 10 /* i */
            iload 6 /* bytesPerPixel */
            isub
            baload
            sipush 255
            iand
            istore 14 /* upleft */
        start local 14 // int upleft
        56: .line 164
            aload 0 /* this */
            iload 12 /* left */
            iload 13 /* up */
            iload 14 /* upleft */
            invokevirtual com.sun.imageio.plugins.png.RowFilter.paethPredictor:(III)I
            istore 15 /* predictor */
        start local 15 // int predictor
        57: .line 165
            iload 11 /* curr */
            iload 15 /* predictor */
            isub
            istore 16 /* difference */
        start local 16 // int difference
        58: .line 166
            aload 8 /* paethFilteredRow */
            iload 10 /* i */
            iload 16 /* difference */
            i2b
            bastore
        59: .line 168
            iload 9 /* badness */
            iload 16 /* difference */
            invokestatic com.sun.imageio.plugins.png.RowFilter.abs:(I)I
            iadd
            istore 9 /* badness */
        end local 16 // int difference
        end local 15 // int predictor
        end local 14 // int upleft
        end local 13 // int up
        end local 12 // int left
        end local 11 // int curr
        60: .line 159
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        61: iload 10 /* i */
            iload 5 /* bytesPerRow */
            iload 6 /* bytesPerPixel */
            iadd
            if_icmplt 52
        end local 10 // int i
        62: .line 171
            aload 7 /* filterBadness */
            iconst_4
            iload 9 /* badness */
            iastore
        end local 9 // int badness
        end local 8 // byte[] paethFilteredRow
        63: .line 174
            aload 7 /* filterBadness */
            iconst_0
            iaload
            istore 8 /* minBadness */
        start local 8 // int minBadness
        64: .line 175
            iconst_0
            istore 9 /* filterType */
        start local 9 // int filterType
        65: .line 177
            iconst_1
            istore 10 /* i */
        start local 10 // int i
        66: goto 71
        67: .line 178
      StackMap locals: com.sun.imageio.plugins.png.RowFilter int byte[] byte[] byte[][] int int int[] int int int
      StackMap stack:
            aload 7 /* filterBadness */
            iload 10 /* i */
            iaload
            iload 8 /* minBadness */
            if_icmpge 70
        68: .line 179
            aload 7 /* filterBadness */
            iload 10 /* i */
            iaload
            istore 8 /* minBadness */
        69: .line 180
            iload 10 /* i */
            istore 9 /* filterType */
        70: .line 177
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        71: iload 10 /* i */
            iconst_5
            if_icmplt 67
        end local 10 // int i
        72: .line 184
            iload 9 /* filterType */
            ifne 77
        73: .line 185
            aload 2 /* currRow */
            iload 6 /* bytesPerPixel */
        74: .line 186
            aload 4 /* scratchRows */
            iconst_0
            aaload
            iload 6 /* bytesPerPixel */
        75: .line 187
            iload 5 /* bytesPerRow */
        76: .line 185
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        77: .line 190
      StackMap locals:
      StackMap stack:
            iload 9 /* filterType */
            ireturn
        end local 9 // int filterType
        end local 8 // int minBadness
        end local 7 // int[] filterBadness
        end local 6 // int bytesPerPixel
        end local 5 // int bytesPerRow
        end local 4 // byte[][] scratchRows
        end local 3 // byte[] prevRow
        end local 2 // byte[] currRow
        end local 1 // int colorType
        end local 0 // com.sun.imageio.plugins.png.RowFilter this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   78     0                this  Lcom/sun/imageio/plugins/png/RowFilter;
            0   78     1           colorType  I
            0   78     2             currRow  [B
            0   78     3             prevRow  [B
            0   78     4         scratchRows  [[B
            0   78     5         bytesPerRow  I
            0   78     6       bytesPerPixel  I
            7   78     7       filterBadness  [I
            8   12     8                   i  I
           13   20     8             badness  I
           14   19     9                   i  I
           16   17    10                curr  I
           21   27     8      subFilteredRow  [B
           26   27     9             badness  I
           28   35     8       upFilteredRow  [B
           34   35     9             badness  I
           36   48     8  averageFilteredRow  [B
           37   48     9             badness  I
           38   47    10                   i  I
           40   45    11                curr  I
           41   45    12                left  I
           42   45    13                  up  I
           43   45    14          difference  I
           49   63     8    paethFilteredRow  [B
           50   63     9             badness  I
           51   62    10                   i  I
           53   60    11                curr  I
           54   60    12                left  I
           55   60    13                  up  I
           56   60    14              upleft  I
           57   60    15           predictor  I
           58   60    16          difference  I
           64   78     8          minBadness  I
           65   78     9          filterType  I
           66   72    10                   i  I
    MethodParameters:
               Name  Flags
      colorType      
      currRow        
      prevRow        
      scratchRows    
      bytesPerRow    
      bytesPerPixel  
}
SourceFile: "RowFilter.java"