public class android.media.ThumbnailUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.media.ThumbnailUtils
  super_class: java.lang.Object
{
  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "ThumbnailUtils"

  private static final int MAX_NUM_PIXELS_THUMBNAIL;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 196608

  private static final int MAX_NUM_PIXELS_MICRO_THUMBNAIL;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 19200

  private static final int UNCONSTRAINED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  private static final int OPTIONS_NONE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int OPTIONS_SCALE_UP;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int OPTIONS_RECYCLE_INPUT;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int TARGET_SIZE_MINI_THUMBNAIL;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 320

  public static final int TARGET_SIZE_MICRO_THUMBNAIL;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 96

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.ThumbnailUtils this
         0: .line 40
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // android.media.ThumbnailUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/ThumbnailUtils;

  public static android.graphics.Bitmap createImageThumbnail(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Landroid/graphics/Bitmap;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=13, args_size=2
        start local 0 // java.lang.String filePath
        start local 1 // int kind
         0: .line 85
            iload 1 /* kind */
            iconst_1
            if_icmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 2 /* wantMini */
        start local 2 // boolean wantMini
         3: .line 86
            iload 2 /* wantMini */
            ifeq 5
         4: .line 87
            sipush 320
            goto 6
         5: .line 88
      StackMap locals: int
      StackMap stack:
            bipush 96
         6: .line 86
      StackMap locals:
      StackMap stack: int
            istore 3 /* targetSize */
        start local 3 // int targetSize
         7: .line 89
            iload 2 /* wantMini */
            ifeq 9
         8: .line 90
            ldc 196608
            goto 10
         9: .line 91
      StackMap locals: int
      StackMap stack:
            sipush 19200
        10: .line 89
      StackMap locals:
      StackMap stack: int
            istore 4 /* maxPixels */
        start local 4 // int maxPixels
        11: .line 92
            new android.media.ThumbnailUtils$SizedThumbnailBitmap
            dup
            invokespecial android.media.ThumbnailUtils$SizedThumbnailBitmap.<init>:()V
            astore 5 /* sizedThumbnailBitmap */
        start local 5 // android.media.ThumbnailUtils$SizedThumbnailBitmap sizedThumbnailBitmap
        12: .line 93
            aconst_null
            astore 6 /* bitmap */
        start local 6 // android.graphics.Bitmap bitmap
        13: .line 94
            aload 0 /* filePath */
            invokestatic android.media.MediaFile.getFileType:(Ljava/lang/String;)Landroid/media/MediaFile$MediaFileType;
            astore 7 /* fileType */
        start local 7 // android.media.MediaFile$MediaFileType fileType
        14: .line 95
            aload 7 /* fileType */
            ifnull 22
        15: .line 96
            aload 7 /* fileType */
            getfield android.media.MediaFile$MediaFileType.fileType:I
            bipush 31
            if_icmpeq 17
        16: .line 97
            aload 7 /* fileType */
            getfield android.media.MediaFile$MediaFileType.fileType:I
            invokestatic android.media.MediaFile.isRawImageFileType:(I)Z
            ifeq 20
        17: .line 98
      StackMap locals: java.lang.String int int int int android.media.ThumbnailUtils$SizedThumbnailBitmap android.graphics.Bitmap android.media.MediaFile$MediaFileType
      StackMap stack:
            aload 0 /* filePath */
            iload 3 /* targetSize */
            iload 4 /* maxPixels */
            aload 5 /* sizedThumbnailBitmap */
            invokestatic android.media.ThumbnailUtils.createThumbnailFromEXIF:(Ljava/lang/String;IILandroid/media/ThumbnailUtils$SizedThumbnailBitmap;)V
        18: .line 99
            aload 5 /* sizedThumbnailBitmap */
            getfield android.media.ThumbnailUtils$SizedThumbnailBitmap.mBitmap:Landroid/graphics/Bitmap;
            astore 6 /* bitmap */
        19: .line 100
            goto 22
      StackMap locals:
      StackMap stack:
        20: aload 7 /* fileType */
            getfield android.media.MediaFile$MediaFileType.fileType:I
            bipush 37
            if_icmpne 22
        21: .line 101
            aload 0 /* filePath */
            iload 3 /* targetSize */
            iload 4 /* maxPixels */
            invokestatic android.media.ThumbnailUtils.createThumbnailFromMetadataRetriever:(Ljava/lang/String;II)Landroid/graphics/Bitmap;
            astore 6 /* bitmap */
        22: .line 105
      StackMap locals:
      StackMap stack:
            aload 6 /* bitmap */
            ifnonnull 74
        23: .line 106
            aconst_null
            astore 8 /* stream */
        start local 8 // java.io.FileInputStream stream
        24: .line 108
            new java.io.FileInputStream
            dup
            aload 0 /* filePath */
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            astore 8 /* stream */
        25: .line 109
            aload 8 /* stream */
            invokevirtual java.io.FileInputStream.getFD:()Ljava/io/FileDescriptor;
            astore 9 /* fd */
        start local 9 // java.io.FileDescriptor fd
        26: .line 110
            new android.graphics.BitmapFactory$Options
            dup
            invokespecial android.graphics.BitmapFactory$Options.<init>:()V
            astore 10 /* options */
        start local 10 // android.graphics.BitmapFactory$Options options
        27: .line 111
            aload 10 /* options */
            iconst_1
            putfield android.graphics.BitmapFactory$Options.inSampleSize:I
        28: .line 112
            aload 10 /* options */
            iconst_1
            putfield android.graphics.BitmapFactory$Options.inJustDecodeBounds:Z
        29: .line 113
            aload 9 /* fd */
            aconst_null
            aload 10 /* options */
            invokestatic android.graphics.BitmapFactory.decodeFileDescriptor:(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
            pop
        30: .line 114
            aload 10 /* options */
            getfield android.graphics.BitmapFactory$Options.mCancel:Z
            ifne 32
            aload 10 /* options */
            getfield android.graphics.BitmapFactory$Options.outWidth:I
            iconst_m1
            if_icmpeq 32
        31: .line 115
            aload 10 /* options */
            getfield android.graphics.BitmapFactory$Options.outHeight:I
            iconst_m1
            if_icmpne 38
        32: .line 131
      StackMap locals: java.io.FileInputStream java.io.FileDescriptor android.graphics.BitmapFactory$Options
      StackMap stack:
            aload 8 /* stream */
            ifnull 37
        33: .line 132
            aload 8 /* stream */
            invokevirtual java.io.FileInputStream.close:()V
        34: .line 134
            goto 37
      StackMap locals:
      StackMap stack: java.io.IOException
        35: astore 12 /* ex */
        start local 12 // java.io.IOException ex
        36: .line 135
            ldc "ThumbnailUtils"
            ldc ""
            aload 12 /* ex */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 12 // java.io.IOException ex
        37: .line 116
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        38: .line 118
      StackMap locals:
      StackMap stack:
            aload 10 /* options */
        39: .line 119
            aload 10 /* options */
            iload 3 /* targetSize */
            iload 4 /* maxPixels */
        40: .line 118
            invokestatic android.media.ThumbnailUtils.computeSampleSize:(Landroid/graphics/BitmapFactory$Options;II)I
            putfield android.graphics.BitmapFactory$Options.inSampleSize:I
        41: .line 120
            aload 10 /* options */
            iconst_0
            putfield android.graphics.BitmapFactory$Options.inJustDecodeBounds:Z
        42: .line 122
            aload 10 /* options */
            iconst_0
            putfield android.graphics.BitmapFactory$Options.inDither:Z
        43: .line 123
            aload 10 /* options */
            getstatic android.graphics.Bitmap$Config.ARGB_8888:Landroid/graphics/Bitmap$Config;
            putfield android.graphics.BitmapFactory$Options.inPreferredConfig:Landroid/graphics/Bitmap$Config;
        44: .line 124
            aload 9 /* fd */
            aconst_null
            aload 10 /* options */
            invokestatic android.graphics.BitmapFactory.decodeFileDescriptor:(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
            astore 6 /* bitmap */
        end local 10 // android.graphics.BitmapFactory$Options options
        end local 9 // java.io.FileDescriptor fd
        45: .line 125
            goto 69
      StackMap locals: java.lang.String int int int int android.media.ThumbnailUtils$SizedThumbnailBitmap android.graphics.Bitmap android.media.MediaFile$MediaFileType java.io.FileInputStream
      StackMap stack: java.io.IOException
        46: astore 9 /* ex */
        start local 9 // java.io.IOException ex
        47: .line 126
            ldc "ThumbnailUtils"
            ldc ""
            aload 9 /* ex */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 9 // java.io.IOException ex
        48: .line 131
            aload 8 /* stream */
            ifnull 74
        49: .line 132
            aload 8 /* stream */
            invokevirtual java.io.FileInputStream.close:()V
        50: .line 134
            goto 74
      StackMap locals:
      StackMap stack: java.io.IOException
        51: astore 12 /* ex */
        start local 12 // java.io.IOException ex
        52: .line 135
            ldc "ThumbnailUtils"
            ldc ""
            aload 12 /* ex */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 12 // java.io.IOException ex
        53: goto 74
        54: .line 127
      StackMap locals:
      StackMap stack: java.lang.OutOfMemoryError
            astore 9 /* oom */
        start local 9 // java.lang.OutOfMemoryError oom
        55: .line 128
            ldc "ThumbnailUtils"
            new java.lang.StringBuilder
            dup
            ldc "Unable to decode file "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* filePath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ". OutOfMemoryError."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 9 /* oom */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 9 // java.lang.OutOfMemoryError oom
        56: .line 131
            aload 8 /* stream */
            ifnull 74
        57: .line 132
            aload 8 /* stream */
            invokevirtual java.io.FileInputStream.close:()V
        58: .line 134
            goto 74
      StackMap locals:
      StackMap stack: java.io.IOException
        59: astore 12 /* ex */
        start local 12 // java.io.IOException ex
        60: .line 135
            ldc "ThumbnailUtils"
            ldc ""
            aload 12 /* ex */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 12 // java.io.IOException ex
        61: goto 74
        62: .line 129
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 11
        63: .line 131
            aload 8 /* stream */
            ifnull 68
        64: .line 132
            aload 8 /* stream */
            invokevirtual java.io.FileInputStream.close:()V
        65: .line 134
            goto 68
      StackMap locals: java.lang.String int int int int android.media.ThumbnailUtils$SizedThumbnailBitmap android.graphics.Bitmap android.media.MediaFile$MediaFileType java.io.FileInputStream top top java.lang.Throwable
      StackMap stack: java.io.IOException
        66: astore 12 /* ex */
        start local 12 // java.io.IOException ex
        67: .line 135
            ldc "ThumbnailUtils"
            ldc ""
            aload 12 /* ex */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 12 // java.io.IOException ex
        68: .line 137
      StackMap locals:
      StackMap stack:
            aload 11
            athrow
        69: .line 131
      StackMap locals: java.lang.String int int int int android.media.ThumbnailUtils$SizedThumbnailBitmap android.graphics.Bitmap android.media.MediaFile$MediaFileType java.io.FileInputStream
      StackMap stack:
            aload 8 /* stream */
            ifnull 74
        70: .line 132
            aload 8 /* stream */
            invokevirtual java.io.FileInputStream.close:()V
        71: .line 134
            goto 74
      StackMap locals:
      StackMap stack: java.io.IOException
        72: astore 12 /* ex */
        start local 12 // java.io.IOException ex
        73: .line 135
            ldc "ThumbnailUtils"
            ldc ""
            aload 12 /* ex */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 12 // java.io.IOException ex
        end local 8 // java.io.FileInputStream stream
        74: .line 141
      StackMap locals:
      StackMap stack:
            iload 1 /* kind */
            iconst_3
            if_icmpne 79
        75: .line 143
            aload 6 /* bitmap */
        76: .line 144
            bipush 96
        77: .line 145
            bipush 96
            iconst_2
        78: .line 143
            invokestatic android.media.ThumbnailUtils.extractThumbnail:(Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;
            astore 6 /* bitmap */
        79: .line 147
      StackMap locals:
      StackMap stack:
            aload 6 /* bitmap */
            areturn
        end local 7 // android.media.MediaFile$MediaFileType fileType
        end local 6 // android.graphics.Bitmap bitmap
        end local 5 // android.media.ThumbnailUtils$SizedThumbnailBitmap sizedThumbnailBitmap
        end local 4 // int maxPixels
        end local 3 // int targetSize
        end local 2 // boolean wantMini
        end local 1 // int kind
        end local 0 // java.lang.String filePath
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   80     0              filePath  Ljava/lang/String;
            0   80     1                  kind  I
            3   80     2              wantMini  Z
            7   80     3            targetSize  I
           11   80     4             maxPixels  I
           12   80     5  sizedThumbnailBitmap  Landroid/media/ThumbnailUtils$SizedThumbnailBitmap;
           13   80     6                bitmap  Landroid/graphics/Bitmap;
           14   80     7              fileType  Landroid/media/MediaFile$MediaFileType;
           24   74     8                stream  Ljava/io/FileInputStream;
           26   45     9                    fd  Ljava/io/FileDescriptor;
           27   45    10               options  Landroid/graphics/BitmapFactory$Options;
           47   48     9                    ex  Ljava/io/IOException;
           55   56     9                   oom  Ljava/lang/OutOfMemoryError;
           36   37    12                    ex  Ljava/io/IOException;
           52   53    12                    ex  Ljava/io/IOException;
           60   61    12                    ex  Ljava/io/IOException;
           67   68    12                    ex  Ljava/io/IOException;
           73   74    12                    ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          32    34      35  Class java.io.IOException
          24    32      46  Class java.io.IOException
          38    45      46  Class java.io.IOException
          48    50      51  Class java.io.IOException
          24    32      54  Class java.lang.OutOfMemoryError
          38    45      54  Class java.lang.OutOfMemoryError
          56    58      59  Class java.io.IOException
          24    32      62  any
          38    48      62  any
          54    56      62  any
          63    65      66  Class java.io.IOException
          69    71      72  Class java.io.IOException
    MethodParameters:
          Name  Flags
      filePath  
      kind      

  public static android.graphics.Bitmap createVideoThumbnail(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Landroid/graphics/Bitmap;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // java.lang.String filePath
        start local 1 // int kind
         0: .line 158
            aconst_null
            astore 2 /* bitmap */
        start local 2 // android.graphics.Bitmap bitmap
         1: .line 159
            new android.media.MediaMetadataRetriever
            dup
            invokespecial android.media.MediaMetadataRetriever.<init>:()V
            astore 3 /* retriever */
        start local 3 // android.media.MediaMetadataRetriever retriever
         2: .line 161
            aload 3 /* retriever */
            aload 0 /* filePath */
            invokevirtual android.media.MediaMetadataRetriever.setDataSource:(Ljava/lang/String;)V
         3: .line 162
            aload 3 /* retriever */
            ldc -1
            invokevirtual android.media.MediaMetadataRetriever.getFrameAtTime:(J)Landroid/graphics/Bitmap;
            astore 2 /* bitmap */
         4: .line 163
            goto 18
      StackMap locals: java.lang.String int android.graphics.Bitmap android.media.MediaMetadataRetriever
      StackMap stack: java.lang.IllegalArgumentException
         5: pop
         6: .line 169
            aload 3 /* retriever */
            invokevirtual android.media.MediaMetadataRetriever.release:()V
         7: .line 170
            goto 21
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
         8: pop
            goto 21
         9: .line 165
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            pop
        10: .line 169
            aload 3 /* retriever */
            invokevirtual android.media.MediaMetadataRetriever.release:()V
        11: .line 170
            goto 21
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
        12: pop
            goto 21
        13: .line 167
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        14: .line 169
            aload 3 /* retriever */
            invokevirtual android.media.MediaMetadataRetriever.release:()V
        15: .line 170
            goto 17
      StackMap locals: java.lang.String int android.graphics.Bitmap android.media.MediaMetadataRetriever java.lang.Throwable
      StackMap stack: java.lang.RuntimeException
        16: pop
        17: .line 173
      StackMap locals:
      StackMap stack:
            aload 4
            athrow
        18: .line 169
      StackMap locals:
      StackMap stack:
            aload 3 /* retriever */
            invokevirtual android.media.MediaMetadataRetriever.release:()V
        19: .line 170
            goto 21
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
        20: pop
        21: .line 175
      StackMap locals:
      StackMap stack:
            aload 2 /* bitmap */
            ifnonnull 22
            aconst_null
            areturn
        22: .line 177
      StackMap locals:
      StackMap stack:
            iload 1 /* kind */
            iconst_1
            if_icmpne 32
        23: .line 179
            aload 2 /* bitmap */
            invokevirtual android.graphics.Bitmap.getWidth:()I
            istore 4 /* width */
        start local 4 // int width
        24: .line 180
            aload 2 /* bitmap */
            invokevirtual android.graphics.Bitmap.getHeight:()I
            istore 5 /* height */
        start local 5 // int height
        25: .line 181
            iload 4 /* width */
            iload 5 /* height */
            invokestatic java.lang.Math.max:(II)I
            istore 6 /* max */
        start local 6 // int max
        26: .line 182
            iload 6 /* max */
            sipush 512
            if_icmple 38
        27: .line 183
            ldc 512.0
            iload 6 /* max */
            i2f
            fdiv
            fstore 7 /* scale */
        start local 7 // float scale
        28: .line 184
            fload 7 /* scale */
            iload 4 /* width */
            i2f
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 8 /* w */
        start local 8 // int w
        29: .line 185
            fload 7 /* scale */
            iload 5 /* height */
            i2f
            fmul
            invokestatic java.lang.Math.round:(F)I
            istore 9 /* h */
        start local 9 // int h
        30: .line 186
            aload 2 /* bitmap */
            iload 8 /* w */
            iload 9 /* h */
            iconst_1
            invokestatic android.graphics.Bitmap.createScaledBitmap:(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
            astore 2 /* bitmap */
        end local 9 // int h
        end local 8 // int w
        end local 7 // float scale
        end local 6 // int max
        end local 5 // int height
        end local 4 // int width
        31: .line 188
            goto 38
      StackMap locals:
      StackMap stack:
        32: iload 1 /* kind */
            iconst_3
            if_icmpne 38
        33: .line 189
            aload 2 /* bitmap */
        34: .line 190
            bipush 96
        35: .line 191
            bipush 96
        36: .line 192
            iconst_2
        37: .line 189
            invokestatic android.media.ThumbnailUtils.extractThumbnail:(Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;
            astore 2 /* bitmap */
        38: .line 194
      StackMap locals:
      StackMap stack:
            aload 2 /* bitmap */
            areturn
        end local 3 // android.media.MediaMetadataRetriever retriever
        end local 2 // android.graphics.Bitmap bitmap
        end local 1 // int kind
        end local 0 // java.lang.String filePath
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   39     0   filePath  Ljava/lang/String;
            0   39     1       kind  I
            1   39     2     bitmap  Landroid/graphics/Bitmap;
            2   39     3  retriever  Landroid/media/MediaMetadataRetriever;
           24   31     4      width  I
           25   31     5     height  I
           26   31     6        max  I
           28   31     7      scale  F
           29   31     8          w  I
           30   31     9          h  I
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.IllegalArgumentException
           6     7       8  Class java.lang.RuntimeException
           2     4       9  Class java.lang.RuntimeException
          10    11      12  Class java.lang.RuntimeException
           2     6      13  any
           9    10      13  any
          14    15      16  Class java.lang.RuntimeException
          18    19      20  Class java.lang.RuntimeException
    MethodParameters:
          Name  Flags
      filePath  
      kind      

  public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int);
    descriptor: (Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // android.graphics.Bitmap source
        start local 1 // int width
        start local 2 // int height
         0: .line 206
            aload 0 /* source */
            iload 1 /* width */
            iload 2 /* height */
            iconst_0
            invokestatic android.media.ThumbnailUtils.extractThumbnail:(Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;
            areturn
        end local 2 // int height
        end local 1 // int width
        end local 0 // android.graphics.Bitmap source
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  source  Landroid/graphics/Bitmap;
            0    1     1   width  I
            0    1     2  height  I
    MethodParameters:
        Name  Flags
      source  
      width   
      height  

  public static android.graphics.Bitmap extractThumbnail(android.graphics.Bitmap, int, int, int);
    descriptor: (Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // android.graphics.Bitmap source
        start local 1 // int width
        start local 2 // int height
        start local 3 // int options
         0: .line 219
            aload 0 /* source */
            ifnonnull 2
         1: .line 220
            aconst_null
            areturn
         2: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            invokevirtual android.graphics.Bitmap.getWidth:()I
            aload 0 /* source */
            invokevirtual android.graphics.Bitmap.getHeight:()I
            if_icmpge 5
         3: .line 225
            iload 1 /* width */
            i2f
            aload 0 /* source */
            invokevirtual android.graphics.Bitmap.getWidth:()I
            i2f
            fdiv
            fstore 4 /* scale */
        start local 4 // float scale
         4: .line 226
            goto 6
        end local 4 // float scale
         5: .line 227
      StackMap locals:
      StackMap stack:
            iload 2 /* height */
            i2f
            aload 0 /* source */
            invokevirtual android.graphics.Bitmap.getHeight:()I
            i2f
            fdiv
            fstore 4 /* scale */
        start local 4 // float scale
         6: .line 229
      StackMap locals: float
      StackMap stack:
            new android.graphics.Matrix
            dup
            invokespecial android.graphics.Matrix.<init>:()V
            astore 5 /* matrix */
        start local 5 // android.graphics.Matrix matrix
         7: .line 230
            aload 5 /* matrix */
            fload 4 /* scale */
            fload 4 /* scale */
            invokevirtual android.graphics.Matrix.setScale:(FF)V
         8: .line 231
            aload 5 /* matrix */
            aload 0 /* source */
            iload 1 /* width */
            iload 2 /* height */
         9: .line 232
            iconst_1
            iload 3 /* options */
            ior
        10: .line 231
            invokestatic android.media.ThumbnailUtils.transform:(Landroid/graphics/Matrix;Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;
            astore 6 /* thumbnail */
        start local 6 // android.graphics.Bitmap thumbnail
        11: .line 233
            aload 6 /* thumbnail */
            areturn
        end local 6 // android.graphics.Bitmap thumbnail
        end local 5 // android.graphics.Matrix matrix
        end local 4 // float scale
        end local 3 // int options
        end local 2 // int height
        end local 1 // int width
        end local 0 // android.graphics.Bitmap source
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0     source  Landroid/graphics/Bitmap;
            0   12     1      width  I
            0   12     2     height  I
            0   12     3    options  I
            4    5     4      scale  F
            6   12     4      scale  F
            7   12     5     matrix  Landroid/graphics/Matrix;
           11   12     6  thumbnail  Landroid/graphics/Bitmap;
    MethodParameters:
         Name  Flags
      source   
      width    
      height   
      options  

  private static int computeSampleSize(android.graphics.BitmapFactory$Options, int, int);
    descriptor: (Landroid/graphics/BitmapFactory$Options;II)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // android.graphics.BitmapFactory$Options options
        start local 1 // int minSideLength
        start local 2 // int maxNumOfPixels
         0: .line 257
            aload 0 /* options */
            iload 1 /* minSideLength */
         1: .line 258
            iload 2 /* maxNumOfPixels */
         2: .line 257
            invokestatic android.media.ThumbnailUtils.computeInitialSampleSize:(Landroid/graphics/BitmapFactory$Options;II)I
            istore 3 /* initialSize */
        start local 3 // int initialSize
         3: .line 261
            iload 3 /* initialSize */
            bipush 8
            if_icmpgt 9
         4: .line 262
            iconst_1
            istore 4 /* roundedSize */
        start local 4 // int roundedSize
         5: .line 263
            goto 7
         6: .line 264
      StackMap locals: int int
      StackMap stack:
            iload 4 /* roundedSize */
            iconst_1
            ishl
            istore 4 /* roundedSize */
         7: .line 263
      StackMap locals:
      StackMap stack:
            iload 4 /* roundedSize */
            iload 3 /* initialSize */
            if_icmplt 6
         8: .line 266
            goto 10
        end local 4 // int roundedSize
         9: .line 267
      StackMap locals:
      StackMap stack:
            iload 3 /* initialSize */
            bipush 7
            iadd
            bipush 8
            idiv
            bipush 8
            imul
            istore 4 /* roundedSize */
        start local 4 // int roundedSize
        10: .line 270
      StackMap locals: int
      StackMap stack:
            iload 4 /* roundedSize */
            ireturn
        end local 4 // int roundedSize
        end local 3 // int initialSize
        end local 2 // int maxNumOfPixels
        end local 1 // int minSideLength
        end local 0 // android.graphics.BitmapFactory$Options options
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0         options  Landroid/graphics/BitmapFactory$Options;
            0   11     1   minSideLength  I
            0   11     2  maxNumOfPixels  I
            3   11     3     initialSize  I
            5    9     4     roundedSize  I
           10   11     4     roundedSize  I
    MethodParameters:
                Name  Flags
      options         
      minSideLength   
      maxNumOfPixels  

  private static int computeInitialSampleSize(android.graphics.BitmapFactory$Options, int, int);
    descriptor: (Landroid/graphics/BitmapFactory$Options;II)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=3
        start local 0 // android.graphics.BitmapFactory$Options options
        start local 1 // int minSideLength
        start local 2 // int maxNumOfPixels
         0: .line 275
            aload 0 /* options */
            getfield android.graphics.BitmapFactory$Options.outWidth:I
            i2d
            dstore 3 /* w */
        start local 3 // double w
         1: .line 276
            aload 0 /* options */
            getfield android.graphics.BitmapFactory$Options.outHeight:I
            i2d
            dstore 5 /* h */
        start local 5 // double h
         2: .line 278
            iload 2 /* maxNumOfPixels */
            iconst_m1
            if_icmpne 3
            iconst_1
            goto 4
         3: .line 279
      StackMap locals: double double
      StackMap stack:
            dload 3 /* w */
            dload 5 /* h */
            dmul
            iload 2 /* maxNumOfPixels */
            i2d
            ddiv
            invokestatic java.lang.Math.sqrt:(D)D
            invokestatic java.lang.Math.ceil:(D)D
            d2i
         4: .line 278
      StackMap locals:
      StackMap stack: int
            istore 7 /* lowerBound */
        start local 7 // int lowerBound
         5: .line 280
            iload 1 /* minSideLength */
            iconst_m1
            if_icmpne 6
            sipush 128
            goto 9
         6: .line 281
      StackMap locals: int
      StackMap stack:
            dload 3 /* w */
            iload 1 /* minSideLength */
            i2d
            ddiv
            invokestatic java.lang.Math.floor:(D)D
         7: .line 282
            dload 5 /* h */
            iload 1 /* minSideLength */
            i2d
            ddiv
            invokestatic java.lang.Math.floor:(D)D
         8: .line 281
            invokestatic java.lang.Math.min:(DD)D
            d2i
         9: .line 280
      StackMap locals:
      StackMap stack: int
            istore 8 /* upperBound */
        start local 8 // int upperBound
        10: .line 284
            iload 8 /* upperBound */
            iload 7 /* lowerBound */
            if_icmpge 12
        11: .line 286
            iload 7 /* lowerBound */
            ireturn
        12: .line 289
      StackMap locals: int
      StackMap stack:
            iload 2 /* maxNumOfPixels */
            iconst_m1
            if_icmpne 15
        13: .line 290
            iload 1 /* minSideLength */
            iconst_m1
            if_icmpne 15
        14: .line 291
            iconst_1
            ireturn
        15: .line 292
      StackMap locals:
      StackMap stack:
            iload 1 /* minSideLength */
            iconst_m1
            if_icmpne 17
        16: .line 293
            iload 7 /* lowerBound */
            ireturn
        17: .line 295
      StackMap locals:
      StackMap stack:
            iload 8 /* upperBound */
            ireturn
        end local 8 // int upperBound
        end local 7 // int lowerBound
        end local 5 // double h
        end local 3 // double w
        end local 2 // int maxNumOfPixels
        end local 1 // int minSideLength
        end local 0 // android.graphics.BitmapFactory$Options options
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   18     0         options  Landroid/graphics/BitmapFactory$Options;
            0   18     1   minSideLength  I
            0   18     2  maxNumOfPixels  I
            1   18     3               w  D
            2   18     5               h  D
            5   18     7      lowerBound  I
           10   18     8      upperBound  I
    MethodParameters:
                Name  Flags
      options         
      minSideLength   
      maxNumOfPixels  

  private static android.graphics.Bitmap makeBitmap(int, int, android.net.Uri, android.content.ContentResolver, android.os.ParcelFileDescriptor, android.graphics.BitmapFactory$Options);
    descriptor: (IILandroid/net/Uri;Landroid/content/ContentResolver;Landroid/os/ParcelFileDescriptor;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=9, args_size=6
        start local 0 // int minSideLength
        start local 1 // int maxNumOfPixels
        start local 2 // android.net.Uri uri
        start local 3 // android.content.ContentResolver cr
        start local 4 // android.os.ParcelFileDescriptor pfd
        start local 5 // android.graphics.BitmapFactory$Options options
         0: .line 310
            aconst_null
            astore 6 /* b */
        start local 6 // android.graphics.Bitmap b
         1: .line 312
            aload 4 /* pfd */
            ifnonnull 2
            aload 2 /* uri */
            aload 3 /* cr */
            invokestatic android.media.ThumbnailUtils.makeInputStream:(Landroid/net/Uri;Landroid/content/ContentResolver;)Landroid/os/ParcelFileDescriptor;
            astore 4 /* pfd */
         2: .line 313
      StackMap locals: android.graphics.Bitmap
      StackMap stack:
            aload 4 /* pfd */
            ifnonnull 5
         3: .line 335
            aload 4 /* pfd */
            invokestatic android.media.ThumbnailUtils.closeSilently:(Landroid/os/ParcelFileDescriptor;)V
         4: .line 313
            aconst_null
            areturn
         5: .line 314
      StackMap locals:
      StackMap stack:
            aload 5 /* options */
            ifnonnull 6
            new android.graphics.BitmapFactory$Options
            dup
            invokespecial android.graphics.BitmapFactory$Options.<init>:()V
            astore 5 /* options */
         6: .line 316
      StackMap locals:
      StackMap stack:
            aload 4 /* pfd */
            invokevirtual android.os.ParcelFileDescriptor.getFileDescriptor:()Ljava/io/FileDescriptor;
            astore 7 /* fd */
        start local 7 // java.io.FileDescriptor fd
         7: .line 317
            aload 5 /* options */
            iconst_1
            putfield android.graphics.BitmapFactory$Options.inSampleSize:I
         8: .line 318
            aload 5 /* options */
            iconst_1
            putfield android.graphics.BitmapFactory$Options.inJustDecodeBounds:Z
         9: .line 319
            aload 7 /* fd */
            aconst_null
            aload 5 /* options */
            invokestatic android.graphics.BitmapFactory.decodeFileDescriptor:(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
            pop
        10: .line 320
            aload 5 /* options */
            getfield android.graphics.BitmapFactory$Options.mCancel:Z
            ifne 12
            aload 5 /* options */
            getfield android.graphics.BitmapFactory$Options.outWidth:I
            iconst_m1
            if_icmpeq 12
        11: .line 321
            aload 5 /* options */
            getfield android.graphics.BitmapFactory$Options.outHeight:I
            iconst_m1
            if_icmpne 14
        12: .line 335
      StackMap locals: java.io.FileDescriptor
      StackMap stack:
            aload 4 /* pfd */
            invokestatic android.media.ThumbnailUtils.closeSilently:(Landroid/os/ParcelFileDescriptor;)V
        13: .line 322
            aconst_null
            areturn
        14: .line 324
      StackMap locals:
      StackMap stack:
            aload 5 /* options */
        15: .line 325
            aload 5 /* options */
            iload 0 /* minSideLength */
            iload 1 /* maxNumOfPixels */
        16: .line 324
            invokestatic android.media.ThumbnailUtils.computeSampleSize:(Landroid/graphics/BitmapFactory$Options;II)I
            putfield android.graphics.BitmapFactory$Options.inSampleSize:I
        17: .line 326
            aload 5 /* options */
            iconst_0
            putfield android.graphics.BitmapFactory$Options.inJustDecodeBounds:Z
        18: .line 328
            aload 5 /* options */
            iconst_0
            putfield android.graphics.BitmapFactory$Options.inDither:Z
        19: .line 329
            aload 5 /* options */
            getstatic android.graphics.Bitmap$Config.ARGB_8888:Landroid/graphics/Bitmap$Config;
            putfield android.graphics.BitmapFactory$Options.inPreferredConfig:Landroid/graphics/Bitmap$Config;
        20: .line 330
            aload 7 /* fd */
            aconst_null
            aload 5 /* options */
            invokestatic android.graphics.BitmapFactory.decodeFileDescriptor:(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
            astore 6 /* b */
        end local 7 // java.io.FileDescriptor fd
        21: .line 331
            goto 29
      StackMap locals: int int android.net.Uri android.content.ContentResolver android.os.ParcelFileDescriptor android.graphics.BitmapFactory$Options android.graphics.Bitmap
      StackMap stack: java.lang.OutOfMemoryError
        22: astore 7 /* ex */
        start local 7 // java.lang.OutOfMemoryError ex
        23: .line 332
            ldc "ThumbnailUtils"
            ldc "Got oom exception "
            aload 7 /* ex */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        24: .line 335
            aload 4 /* pfd */
            invokestatic android.media.ThumbnailUtils.closeSilently:(Landroid/os/ParcelFileDescriptor;)V
        25: .line 333
            aconst_null
            areturn
        end local 7 // java.lang.OutOfMemoryError ex
        26: .line 334
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        27: .line 335
            aload 4 /* pfd */
            invokestatic android.media.ThumbnailUtils.closeSilently:(Landroid/os/ParcelFileDescriptor;)V
        28: .line 336
            aload 8
            athrow
        29: .line 335
      StackMap locals:
      StackMap stack:
            aload 4 /* pfd */
            invokestatic android.media.ThumbnailUtils.closeSilently:(Landroid/os/ParcelFileDescriptor;)V
        30: .line 337
            aload 6 /* b */
            areturn
        end local 6 // android.graphics.Bitmap b
        end local 5 // android.graphics.BitmapFactory$Options options
        end local 4 // android.os.ParcelFileDescriptor pfd
        end local 3 // android.content.ContentResolver cr
        end local 2 // android.net.Uri uri
        end local 1 // int maxNumOfPixels
        end local 0 // int minSideLength
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   31     0   minSideLength  I
            0   31     1  maxNumOfPixels  I
            0   31     2             uri  Landroid/net/Uri;
            0   31     3              cr  Landroid/content/ContentResolver;
            0   31     4             pfd  Landroid/os/ParcelFileDescriptor;
            0   31     5         options  Landroid/graphics/BitmapFactory$Options;
            1   31     6               b  Landroid/graphics/Bitmap;
            7   21     7              fd  Ljava/io/FileDescriptor;
           23   26     7              ex  Ljava/lang/OutOfMemoryError;
      Exception table:
        from    to  target  type
           1     3      22  Class java.lang.OutOfMemoryError
           5    12      22  Class java.lang.OutOfMemoryError
          14    21      22  Class java.lang.OutOfMemoryError
           1     3      26  any
           5    12      26  any
          14    24      26  any
    MethodParameters:
                Name  Flags
      minSideLength   
      maxNumOfPixels  
      uri             
      cr              
      pfd             
      options         

  private static void closeSilently(android.os.ParcelFileDescriptor);
    descriptor: (Landroid/os/ParcelFileDescriptor;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.os.ParcelFileDescriptor c
         0: .line 341
            aload 0 /* c */
            ifnonnull 1
            return
         1: .line 343
      StackMap locals:
      StackMap stack:
            aload 0 /* c */
            invokevirtual android.os.ParcelFileDescriptor.close:()V
         2: .line 344
            goto 4
      StackMap locals:
      StackMap stack: java.lang.Throwable
         3: pop
         4: .line 347
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.ParcelFileDescriptor c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     c  Landroid/os/ParcelFileDescriptor;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.Throwable
    MethodParameters:
      Name  Flags
      c     

  private static android.os.ParcelFileDescriptor makeInputStream(android.net.Uri, android.content.ContentResolver);
    descriptor: (Landroid/net/Uri;Landroid/content/ContentResolver;)Landroid/os/ParcelFileDescriptor;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.net.Uri uri
        start local 1 // android.content.ContentResolver cr
         0: .line 352
            aload 1 /* cr */
            aload 0 /* uri */
            ldc "r"
            invokevirtual android.content.ContentResolver.openFileDescriptor:(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
         1: areturn
         2: .line 353
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
         3: .line 354
            aconst_null
            areturn
        end local 1 // android.content.ContentResolver cr
        end local 0 // android.net.Uri uri
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   uri  Landroid/net/Uri;
            0    4     1    cr  Landroid/content/ContentResolver;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
    MethodParameters:
      Name  Flags
      uri   
      cr    

  private static android.graphics.Bitmap transform(android.graphics.Matrix, android.graphics.Bitmap, int, int, int);
    descriptor: (Landroid/graphics/Matrix;Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=17, args_size=5
        start local 0 // android.graphics.Matrix scaler
        start local 1 // android.graphics.Bitmap source
        start local 2 // int targetWidth
        start local 3 // int targetHeight
        start local 4 // int options
         0: .line 366
            iload 4 /* options */
            iconst_1
            iand
            ifeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 5 /* scaleUp */
        start local 5 // boolean scaleUp
         3: .line 367
            iload 4 /* options */
            iconst_2
            iand
            ifeq 4
            iconst_1
            goto 5
      StackMap locals: int
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 6 /* recycle */
        start local 6 // boolean recycle
         6: .line 369
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.getWidth:()I
            iload 2 /* targetWidth */
            isub
            istore 7 /* deltaX */
        start local 7 // int deltaX
         7: .line 370
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.getHeight:()I
            iload 3 /* targetHeight */
            isub
            istore 8 /* deltaY */
        start local 8 // int deltaY
         8: .line 371
            iload 5 /* scaleUp */
            ifne 34
            iload 7 /* deltaX */
            iflt 9
            iload 8 /* deltaY */
            ifge 34
         9: .line 378
      StackMap locals: int int int
      StackMap stack:
            iload 2 /* targetWidth */
            iload 3 /* targetHeight */
        10: .line 379
            getstatic android.graphics.Bitmap$Config.ARGB_8888:Landroid/graphics/Bitmap$Config;
        11: .line 378
            invokestatic android.graphics.Bitmap.createBitmap:(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
            astore 9 /* b2 */
        start local 9 // android.graphics.Bitmap b2
        12: .line 380
            new android.graphics.Canvas
            dup
            aload 9 /* b2 */
            invokespecial android.graphics.Canvas.<init>:(Landroid/graphics/Bitmap;)V
            astore 10 /* c */
        start local 10 // android.graphics.Canvas c
        13: .line 382
            iconst_0
            iload 7 /* deltaX */
            iconst_2
            idiv
            invokestatic java.lang.Math.max:(II)I
            istore 11 /* deltaXHalf */
        start local 11 // int deltaXHalf
        14: .line 383
            iconst_0
            iload 8 /* deltaY */
            iconst_2
            idiv
            invokestatic java.lang.Math.max:(II)I
            istore 12 /* deltaYHalf */
        start local 12 // int deltaYHalf
        15: .line 384
            new android.graphics.Rect
            dup
        16: .line 385
            iload 11 /* deltaXHalf */
        17: .line 386
            iload 12 /* deltaYHalf */
        18: .line 387
            iload 11 /* deltaXHalf */
            iload 2 /* targetWidth */
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.getWidth:()I
            invokestatic java.lang.Math.min:(II)I
            iadd
        19: .line 388
            iload 12 /* deltaYHalf */
            iload 3 /* targetHeight */
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.getHeight:()I
            invokestatic java.lang.Math.min:(II)I
            iadd
        20: .line 384
            invokespecial android.graphics.Rect.<init>:(IIII)V
            astore 13 /* src */
        start local 13 // android.graphics.Rect src
        21: .line 389
            iload 2 /* targetWidth */
            aload 13 /* src */
            invokevirtual android.graphics.Rect.width:()I
            isub
            iconst_2
            idiv
            istore 14 /* dstX */
        start local 14 // int dstX
        22: .line 390
            iload 3 /* targetHeight */
            aload 13 /* src */
            invokevirtual android.graphics.Rect.height:()I
            isub
            iconst_2
            idiv
            istore 15 /* dstY */
        start local 15 // int dstY
        23: .line 391
            new android.graphics.Rect
            dup
        24: .line 392
            iload 14 /* dstX */
        25: .line 393
            iload 15 /* dstY */
        26: .line 394
            iload 2 /* targetWidth */
            iload 14 /* dstX */
            isub
        27: .line 395
            iload 3 /* targetHeight */
            iload 15 /* dstY */
            isub
        28: .line 391
            invokespecial android.graphics.Rect.<init>:(IIII)V
            astore 16 /* dst */
        start local 16 // android.graphics.Rect dst
        29: .line 396
            aload 10 /* c */
            aload 1 /* source */
            aload 13 /* src */
            aload 16 /* dst */
            aconst_null
            invokevirtual android.graphics.Canvas.drawBitmap:(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V
        30: .line 397
            iload 6 /* recycle */
            ifeq 32
        31: .line 398
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.recycle:()V
        32: .line 400
      StackMap locals: android.graphics.Matrix android.graphics.Bitmap int int int int int int int android.graphics.Bitmap android.graphics.Canvas int int android.graphics.Rect int int android.graphics.Rect
      StackMap stack:
            aload 10 /* c */
            aconst_null
            invokevirtual android.graphics.Canvas.setBitmap:(Landroid/graphics/Bitmap;)V
        33: .line 401
            aload 9 /* b2 */
            areturn
        end local 16 // android.graphics.Rect dst
        end local 15 // int dstY
        end local 14 // int dstX
        end local 13 // android.graphics.Rect src
        end local 12 // int deltaYHalf
        end local 11 // int deltaXHalf
        end local 10 // android.graphics.Canvas c
        end local 9 // android.graphics.Bitmap b2
        34: .line 403
      StackMap locals: android.graphics.Matrix android.graphics.Bitmap int int int int int int int
      StackMap stack:
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.getWidth:()I
            i2f
            fstore 9 /* bitmapWidthF */
        start local 9 // float bitmapWidthF
        35: .line 404
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.getHeight:()I
            i2f
            fstore 10 /* bitmapHeightF */
        start local 10 // float bitmapHeightF
        36: .line 406
            fload 9 /* bitmapWidthF */
            fload 10 /* bitmapHeightF */
            fdiv
            fstore 11 /* bitmapAspect */
        start local 11 // float bitmapAspect
        37: .line 407
            iload 2 /* targetWidth */
            i2f
            iload 3 /* targetHeight */
            i2f
            fdiv
            fstore 12 /* viewAspect */
        start local 12 // float viewAspect
        38: .line 409
            fload 11 /* bitmapAspect */
            fload 12 /* viewAspect */
            fcmpl
            ifle 45
        39: .line 410
            iload 3 /* targetHeight */
            i2f
            fload 10 /* bitmapHeightF */
            fdiv
            fstore 13 /* scale */
        start local 13 // float scale
        40: .line 411
            fload 13 /* scale */
            ldc 0.9
            fcmpg
            iflt 41
            fload 13 /* scale */
            fconst_1
            fcmpl
            ifle 43
        41: .line 412
      StackMap locals: android.graphics.Matrix android.graphics.Bitmap int int int int int int int float float float float float
      StackMap stack:
            aload 0 /* scaler */
            fload 13 /* scale */
            fload 13 /* scale */
            invokevirtual android.graphics.Matrix.setScale:(FF)V
        42: .line 413
            goto 50
        43: .line 414
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 0 /* scaler */
        end local 13 // float scale
        44: .line 416
            goto 50
        45: .line 417
      StackMap locals:
      StackMap stack:
            iload 2 /* targetWidth */
            i2f
            fload 9 /* bitmapWidthF */
            fdiv
            fstore 13 /* scale */
        start local 13 // float scale
        46: .line 418
            fload 13 /* scale */
            ldc 0.9
            fcmpg
            iflt 47
            fload 13 /* scale */
            fconst_1
            fcmpl
            ifle 49
        47: .line 419
      StackMap locals: float
      StackMap stack:
            aload 0 /* scaler */
            fload 13 /* scale */
            fload 13 /* scale */
            invokevirtual android.graphics.Matrix.setScale:(FF)V
        48: .line 420
            goto 50
        49: .line 421
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 0 /* scaler */
        end local 13 // float scale
        50: .line 426
      StackMap locals:
      StackMap stack:
            aload 0 /* scaler */
            ifnull 55
        51: .line 428
            aload 1 /* source */
            iconst_0
            iconst_0
        52: .line 429
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.getWidth:()I
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.getHeight:()I
            aload 0 /* scaler */
            iconst_1
        53: .line 428
            invokestatic android.graphics.Bitmap.createBitmap:(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap;
            astore 13 /* b1 */
        start local 13 // android.graphics.Bitmap b1
        54: .line 430
            goto 56
        end local 13 // android.graphics.Bitmap b1
        55: .line 431
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            astore 13 /* b1 */
        start local 13 // android.graphics.Bitmap b1
        56: .line 434
      StackMap locals: android.graphics.Bitmap
      StackMap stack:
            iload 6 /* recycle */
            ifeq 58
            aload 13 /* b1 */
            aload 1 /* source */
            if_acmpeq 58
        57: .line 435
            aload 1 /* source */
            invokevirtual android.graphics.Bitmap.recycle:()V
        58: .line 438
      StackMap locals:
      StackMap stack:
            iconst_0
            aload 13 /* b1 */
            invokevirtual android.graphics.Bitmap.getWidth:()I
            iload 2 /* targetWidth */
            isub
            invokestatic java.lang.Math.max:(II)I
            istore 14 /* dx1 */
        start local 14 // int dx1
        59: .line 439
            iconst_0
            aload 13 /* b1 */
            invokevirtual android.graphics.Bitmap.getHeight:()I
            iload 3 /* targetHeight */
            isub
            invokestatic java.lang.Math.max:(II)I
            istore 15 /* dy1 */
        start local 15 // int dy1
        60: .line 442
            aload 13 /* b1 */
        61: .line 443
            iload 14 /* dx1 */
            iconst_2
            idiv
        62: .line 444
            iload 15 /* dy1 */
            iconst_2
            idiv
        63: .line 445
            iload 2 /* targetWidth */
        64: .line 446
            iload 3 /* targetHeight */
        65: .line 441
            invokestatic android.graphics.Bitmap.createBitmap:(Landroid/graphics/Bitmap;IIII)Landroid/graphics/Bitmap;
            astore 16 /* b2 */
        start local 16 // android.graphics.Bitmap b2
        66: .line 448
            aload 16 /* b2 */
            aload 13 /* b1 */
            if_acmpeq 69
        67: .line 449
            iload 6 /* recycle */
            ifne 68
            aload 13 /* b1 */
            aload 1 /* source */
            if_acmpeq 69
        68: .line 450
      StackMap locals: int int android.graphics.Bitmap
      StackMap stack:
            aload 13 /* b1 */
            invokevirtual android.graphics.Bitmap.recycle:()V
        69: .line 454
      StackMap locals:
      StackMap stack:
            aload 16 /* b2 */
            areturn
        end local 16 // android.graphics.Bitmap b2
        end local 15 // int dy1
        end local 14 // int dx1
        end local 13 // android.graphics.Bitmap b1
        end local 12 // float viewAspect
        end local 11 // float bitmapAspect
        end local 10 // float bitmapHeightF
        end local 9 // float bitmapWidthF
        end local 8 // int deltaY
        end local 7 // int deltaX
        end local 6 // boolean recycle
        end local 5 // boolean scaleUp
        end local 4 // int options
        end local 3 // int targetHeight
        end local 2 // int targetWidth
        end local 1 // android.graphics.Bitmap source
        end local 0 // android.graphics.Matrix scaler
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   70     0         scaler  Landroid/graphics/Matrix;
            0   70     1         source  Landroid/graphics/Bitmap;
            0   70     2    targetWidth  I
            0   70     3   targetHeight  I
            0   70     4        options  I
            3   70     5        scaleUp  Z
            6   70     6        recycle  Z
            7   70     7         deltaX  I
            8   70     8         deltaY  I
           12   34     9             b2  Landroid/graphics/Bitmap;
           13   34    10              c  Landroid/graphics/Canvas;
           14   34    11     deltaXHalf  I
           15   34    12     deltaYHalf  I
           21   34    13            src  Landroid/graphics/Rect;
           22   34    14           dstX  I
           23   34    15           dstY  I
           29   34    16            dst  Landroid/graphics/Rect;
           35   70     9   bitmapWidthF  F
           36   70    10  bitmapHeightF  F
           37   70    11   bitmapAspect  F
           38   70    12     viewAspect  F
           40   44    13          scale  F
           46   50    13          scale  F
           54   55    13             b1  Landroid/graphics/Bitmap;
           56   70    13             b1  Landroid/graphics/Bitmap;
           59   70    14            dx1  I
           60   70    15            dy1  I
           66   70    16             b2  Landroid/graphics/Bitmap;
    MethodParameters:
              Name  Flags
      scaler        
      source        
      targetWidth   
      targetHeight  
      options       

  private static void createThumbnailFromEXIF(java.lang.String, int, int, android.media.ThumbnailUtils$SizedThumbnailBitmap);
    descriptor: (Ljava/lang/String;IILandroid/media/ThumbnailUtils$SizedThumbnailBitmap;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=12, args_size=4
        start local 0 // java.lang.String filePath
        start local 1 // int targetSize
        start local 2 // int maxPixels
        start local 3 // android.media.ThumbnailUtils$SizedThumbnailBitmap sizedThumbBitmap
         0: .line 479
            aload 0 /* filePath */
            ifnonnull 1
            return
         1: .line 481
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* exif */
        start local 4 // android.media.ExifInterface exif
         2: .line 482
            aconst_null
            astore 5 /* thumbData */
        start local 5 // byte[] thumbData
         3: .line 484
            new android.media.ExifInterface
            dup
            aload 0 /* filePath */
            invokespecial android.media.ExifInterface.<init>:(Ljava/lang/String;)V
            astore 4 /* exif */
         4: .line 485
            aload 4 /* exif */
            invokevirtual android.media.ExifInterface.getThumbnail:()[B
            astore 5 /* thumbData */
         5: .line 486
            goto 8
      StackMap locals: java.lang.String int int android.media.ThumbnailUtils$SizedThumbnailBitmap android.media.ExifInterface byte[]
      StackMap stack: java.io.IOException
         6: astore 6 /* ex */
        start local 6 // java.io.IOException ex
         7: .line 487
            ldc "ThumbnailUtils"
            aload 6 /* ex */
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 6 // java.io.IOException ex
         8: .line 490
      StackMap locals:
      StackMap stack:
            new android.graphics.BitmapFactory$Options
            dup
            invokespecial android.graphics.BitmapFactory$Options.<init>:()V
            astore 6 /* fullOptions */
        start local 6 // android.graphics.BitmapFactory$Options fullOptions
         9: .line 491
            new android.graphics.BitmapFactory$Options
            dup
            invokespecial android.graphics.BitmapFactory$Options.<init>:()V
            astore 7 /* exifOptions */
        start local 7 // android.graphics.BitmapFactory$Options exifOptions
        10: .line 492
            iconst_0
            istore 8 /* exifThumbWidth */
        start local 8 // int exifThumbWidth
        11: .line 493
            iconst_0
            istore 9 /* fullThumbWidth */
        start local 9 // int fullThumbWidth
        12: .line 496
            aload 5 /* thumbData */
            ifnull 17
        13: .line 497
            aload 7 /* exifOptions */
            iconst_1
            putfield android.graphics.BitmapFactory$Options.inJustDecodeBounds:Z
        14: .line 498
            aload 5 /* thumbData */
            iconst_0
            aload 5 /* thumbData */
            arraylength
            aload 7 /* exifOptions */
            invokestatic android.graphics.BitmapFactory.decodeByteArray:([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
            pop
        15: .line 499
            aload 7 /* exifOptions */
            aload 7 /* exifOptions */
            iload 1 /* targetSize */
            iload 2 /* maxPixels */
            invokestatic android.media.ThumbnailUtils.computeSampleSize:(Landroid/graphics/BitmapFactory$Options;II)I
            putfield android.graphics.BitmapFactory$Options.inSampleSize:I
        16: .line 500
            aload 7 /* exifOptions */
            getfield android.graphics.BitmapFactory$Options.outWidth:I
            aload 7 /* exifOptions */
            getfield android.graphics.BitmapFactory$Options.inSampleSize:I
            idiv
            istore 8 /* exifThumbWidth */
        17: .line 504
      StackMap locals: java.lang.String int int android.media.ThumbnailUtils$SizedThumbnailBitmap android.media.ExifInterface byte[] android.graphics.BitmapFactory$Options android.graphics.BitmapFactory$Options int int
      StackMap stack:
            aload 6 /* fullOptions */
            iconst_1
            putfield android.graphics.BitmapFactory$Options.inJustDecodeBounds:Z
        18: .line 505
            aload 0 /* filePath */
            aload 6 /* fullOptions */
            invokestatic android.graphics.BitmapFactory.decodeFile:(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
            pop
        19: .line 506
            aload 6 /* fullOptions */
            aload 6 /* fullOptions */
            iload 1 /* targetSize */
            iload 2 /* maxPixels */
            invokestatic android.media.ThumbnailUtils.computeSampleSize:(Landroid/graphics/BitmapFactory$Options;II)I
            putfield android.graphics.BitmapFactory$Options.inSampleSize:I
        20: .line 507
            aload 6 /* fullOptions */
            getfield android.graphics.BitmapFactory$Options.outWidth:I
            aload 6 /* fullOptions */
            getfield android.graphics.BitmapFactory$Options.inSampleSize:I
            idiv
            istore 9 /* fullThumbWidth */
        21: .line 510
            aload 5 /* thumbData */
            ifnull 33
            iload 8 /* exifThumbWidth */
            iload 9 /* fullThumbWidth */
            if_icmplt 33
        22: .line 511
            aload 7 /* exifOptions */
            getfield android.graphics.BitmapFactory$Options.outWidth:I
            istore 10 /* width */
        start local 10 // int width
        23: .line 512
            aload 7 /* exifOptions */
            getfield android.graphics.BitmapFactory$Options.outHeight:I
            istore 11 /* height */
        start local 11 // int height
        24: .line 513
            aload 7 /* exifOptions */
            iconst_0
            putfield android.graphics.BitmapFactory$Options.inJustDecodeBounds:Z
        25: .line 514
            aload 3 /* sizedThumbBitmap */
            aload 5 /* thumbData */
            iconst_0
        26: .line 515
            aload 5 /* thumbData */
            arraylength
            aload 7 /* exifOptions */
        27: .line 514
            invokestatic android.graphics.BitmapFactory.decodeByteArray:([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
            putfield android.media.ThumbnailUtils$SizedThumbnailBitmap.mBitmap:Landroid/graphics/Bitmap;
        28: .line 516
            aload 3 /* sizedThumbBitmap */
            getfield android.media.ThumbnailUtils$SizedThumbnailBitmap.mBitmap:Landroid/graphics/Bitmap;
            ifnull 35
        29: .line 517
            aload 3 /* sizedThumbBitmap */
            aload 5 /* thumbData */
            putfield android.media.ThumbnailUtils$SizedThumbnailBitmap.mThumbnailData:[B
        30: .line 518
            aload 3 /* sizedThumbBitmap */
            iload 10 /* width */
            putfield android.media.ThumbnailUtils$SizedThumbnailBitmap.mThumbnailWidth:I
        31: .line 519
            aload 3 /* sizedThumbBitmap */
            iload 11 /* height */
            putfield android.media.ThumbnailUtils$SizedThumbnailBitmap.mThumbnailHeight:I
        end local 11 // int height
        end local 10 // int width
        32: .line 521
            goto 35
        33: .line 522
      StackMap locals:
      StackMap stack:
            aload 6 /* fullOptions */
            iconst_0
            putfield android.graphics.BitmapFactory$Options.inJustDecodeBounds:Z
        34: .line 523
            aload 3 /* sizedThumbBitmap */
            aload 0 /* filePath */
            aload 6 /* fullOptions */
            invokestatic android.graphics.BitmapFactory.decodeFile:(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
            putfield android.media.ThumbnailUtils$SizedThumbnailBitmap.mBitmap:Landroid/graphics/Bitmap;
        35: .line 525
      StackMap locals:
      StackMap stack:
            return
        end local 9 // int fullThumbWidth
        end local 8 // int exifThumbWidth
        end local 7 // android.graphics.BitmapFactory$Options exifOptions
        end local 6 // android.graphics.BitmapFactory$Options fullOptions
        end local 5 // byte[] thumbData
        end local 4 // android.media.ExifInterface exif
        end local 3 // android.media.ThumbnailUtils$SizedThumbnailBitmap sizedThumbBitmap
        end local 2 // int maxPixels
        end local 1 // int targetSize
        end local 0 // java.lang.String filePath
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   36     0          filePath  Ljava/lang/String;
            0   36     1        targetSize  I
            0   36     2         maxPixels  I
            0   36     3  sizedThumbBitmap  Landroid/media/ThumbnailUtils$SizedThumbnailBitmap;
            2   36     4              exif  Landroid/media/ExifInterface;
            3   36     5         thumbData  [B
            7    8     6                ex  Ljava/io/IOException;
            9   36     6       fullOptions  Landroid/graphics/BitmapFactory$Options;
           10   36     7       exifOptions  Landroid/graphics/BitmapFactory$Options;
           11   36     8    exifThumbWidth  I
           12   36     9    fullThumbWidth  I
           23   32    10             width  I
           24   32    11            height  I
      Exception table:
        from    to  target  type
           3     5       6  Class java.io.IOException
    MethodParameters:
                  Name  Flags
      filePath          
      targetSize        
      maxPixels         
      sizedThumbBitmap  

  private static android.graphics.Bitmap createThumbnailFromMetadataRetriever(java.lang.String, int, int);
    descriptor: (Ljava/lang/String;II)Landroid/graphics/Bitmap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // java.lang.String filePath
        start local 1 // int targetSize
        start local 2 // int maxPixels
         0: .line 529
            aload 0 /* filePath */
            ifnonnull 2
         1: .line 530
            aconst_null
            areturn
         2: .line 532
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* thumbnail */
        start local 3 // android.graphics.Bitmap thumbnail
         3: .line 533
            new android.media.MediaMetadataRetriever
            dup
            invokespecial android.media.MediaMetadataRetriever.<init>:()V
            astore 4 /* retriever */
        start local 4 // android.media.MediaMetadataRetriever retriever
         4: .line 535
            aload 4 /* retriever */
            aload 0 /* filePath */
            invokevirtual android.media.MediaMetadataRetriever.setDataSource:(Ljava/lang/String;)V
         5: .line 536
            new android.media.MediaMetadataRetriever$BitmapParams
            dup
            invokespecial android.media.MediaMetadataRetriever$BitmapParams.<init>:()V
            astore 5 /* params */
        start local 5 // android.media.MediaMetadataRetriever$BitmapParams params
         6: .line 537
            aload 5 /* params */
            getstatic android.graphics.Bitmap$Config.ARGB_8888:Landroid/graphics/Bitmap$Config;
            invokevirtual android.media.MediaMetadataRetriever$BitmapParams.setPreferredConfig:(Landroid/graphics/Bitmap$Config;)V
         7: .line 538
            aload 4 /* retriever */
            iconst_m1
            aload 5 /* params */
            iload 1 /* targetSize */
            iload 2 /* maxPixels */
            invokevirtual android.media.MediaMetadataRetriever.getThumbnailImageAtIndex:(ILandroid/media/MediaMetadataRetriever$BitmapParams;II)Landroid/graphics/Bitmap;
            astore 3 /* thumbnail */
        end local 5 // android.media.MediaMetadataRetriever$BitmapParams params
         8: .line 539
            goto 16
      StackMap locals: java.lang.String int int android.graphics.Bitmap android.media.MediaMetadataRetriever
      StackMap stack: java.lang.RuntimeException
         9: pop
        10: .line 542
            aload 4 /* retriever */
            ifnull 18
        11: .line 543
            aload 4 /* retriever */
            invokevirtual android.media.MediaMetadataRetriever.release:()V
            goto 18
        12: .line 541
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        13: .line 542
            aload 4 /* retriever */
            ifnull 15
        14: .line 543
            aload 4 /* retriever */
            invokevirtual android.media.MediaMetadataRetriever.release:()V
        15: .line 545
      StackMap locals: java.lang.String int int android.graphics.Bitmap android.media.MediaMetadataRetriever top java.lang.Throwable
      StackMap stack:
            aload 6
            athrow
        16: .line 542
      StackMap locals: java.lang.String int int android.graphics.Bitmap android.media.MediaMetadataRetriever
      StackMap stack:
            aload 4 /* retriever */
            ifnull 18
        17: .line 543
            aload 4 /* retriever */
            invokevirtual android.media.MediaMetadataRetriever.release:()V
        18: .line 546
      StackMap locals:
      StackMap stack:
            aload 3 /* thumbnail */
            areturn
        end local 4 // android.media.MediaMetadataRetriever retriever
        end local 3 // android.graphics.Bitmap thumbnail
        end local 2 // int maxPixels
        end local 1 // int targetSize
        end local 0 // java.lang.String filePath
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   19     0    filePath  Ljava/lang/String;
            0   19     1  targetSize  I
            0   19     2   maxPixels  I
            3   19     3   thumbnail  Landroid/graphics/Bitmap;
            4   19     4   retriever  Landroid/media/MediaMetadataRetriever;
            6    8     5      params  Landroid/media/MediaMetadataRetriever$BitmapParams;
      Exception table:
        from    to  target  type
           4     8       9  Class java.lang.RuntimeException
           4    10      12  any
    MethodParameters:
            Name  Flags
      filePath    
      targetSize  
      maxPixels   
}
SourceFile: "ThumbnailUtils.java"
NestMembers:
  android.media.ThumbnailUtils$SizedThumbnailBitmap
InnerClasses:
  public final Config = android.graphics.Bitmap$Config of android.graphics.Bitmap
  public Options = android.graphics.BitmapFactory$Options of android.graphics.BitmapFactory
  public MediaFileType = android.media.MediaFile$MediaFileType of android.media.MediaFile
  public final BitmapParams = android.media.MediaMetadataRetriever$BitmapParams of android.media.MediaMetadataRetriever
  private SizedThumbnailBitmap = android.media.ThumbnailUtils$SizedThumbnailBitmap of android.media.ThumbnailUtils