public class org.apache.fop.afp.apps.FontPatternExtractor
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.fop.afp.apps.FontPatternExtractor
  super_class: java.lang.Object
{
  private java.io.PrintStream printStream;
    descriptor: Ljava/io/PrintStream;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
         0: .line 40
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 42
            aload 0 /* this */
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            putfield org.apache.fop.afp.apps.FontPatternExtractor.printStream:Ljava/io/PrintStream;
         2: .line 40
            return
        end local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/fop/afp/apps/FontPatternExtractor;

  public void extract(java.io.File, java.io.File);
    descriptor: (Ljava/io/File;Ljava/io/File;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=21, args_size=3
        start local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
        start local 1 // java.io.File file
        start local 2 // java.io.File targetDir
         0: .line 51
            new java.io.FileInputStream
            dup
            aload 1 /* file */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 3 /* in */
        start local 3 // java.io.InputStream in
         1: .line 53
            new org.apache.fop.afp.parser.MODCAParser
            dup
            aload 3 /* in */
            invokespecial org.apache.fop.afp.parser.MODCAParser.<init>:(Ljava/io/InputStream;)V
            astore 4 /* parser */
        start local 4 // org.apache.fop.afp.parser.MODCAParser parser
         2: .line 54
            new org.apache.commons.io.output.ByteArrayOutputStream
            dup
            invokespecial org.apache.commons.io.output.ByteArrayOutputStream.<init>:()V
            astore 5 /* baout */
        start local 5 // org.apache.commons.io.output.ByteArrayOutputStream baout
         3: .line 56
            goto 9
        start local 6 // org.apache.fop.afp.parser.UnparsedStructuredField strucField
         4: .line 57
      StackMap locals: org.apache.fop.afp.apps.FontPatternExtractor java.io.File java.io.File java.io.InputStream org.apache.fop.afp.parser.MODCAParser org.apache.commons.io.output.ByteArrayOutputStream org.apache.fop.afp.parser.UnparsedStructuredField
      StackMap stack:
            aload 6 /* strucField */
            invokevirtual org.apache.fop.afp.parser.UnparsedStructuredField.getSfTypeID:()I
            ldc 13889161
            if_icmpne 9
         5: .line 58
            aload 6 /* strucField */
            invokevirtual org.apache.fop.afp.parser.UnparsedStructuredField.getData:()[B
            astore 7 /* sfData */
        start local 7 // byte[] sfData
         6: .line 59
            aload 0 /* this */
            aload 6 /* strucField */
            invokevirtual org.apache.fop.afp.parser.UnparsedStructuredField.toString:()Ljava/lang/String;
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.println:(Ljava/lang/String;)V
         7: .line 60
            aload 7 /* sfData */
            lconst_0
            aload 0 /* this */
            getfield org.apache.fop.afp.apps.FontPatternExtractor.printStream:Ljava/io/PrintStream;
            iconst_0
            invokestatic org.apache.commons.io.HexDump.dump:([BJLjava/io/OutputStream;I)V
         8: .line 61
            aload 5 /* baout */
            aload 7 /* sfData */
            invokevirtual org.apache.commons.io.output.ByteArrayOutputStream.write:([B)V
        end local 7 // byte[] sfData
        end local 6 // org.apache.fop.afp.parser.UnparsedStructuredField strucField
         9: .line 56
      StackMap locals:
      StackMap stack:
            aload 4 /* parser */
            invokevirtual org.apache.fop.afp.parser.MODCAParser.readNextStructuredField:()Lorg/apache/fop/afp/parser/UnparsedStructuredField;
            dup
            astore 6 /* strucField */
        start local 6 // org.apache.fop.afp.parser.UnparsedStructuredField strucField
        10: ifnonnull 4
        11: .line 65
            new java.io.ByteArrayInputStream
            dup
            aload 5 /* baout */
            invokevirtual org.apache.commons.io.output.ByteArrayOutputStream.toByteArray:()[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            astore 7 /* bin */
        start local 7 // java.io.ByteArrayInputStream bin
        12: .line 66
            aload 5 /* baout */
            invokestatic org.apache.commons.io.IOUtils.closeQuietly:(Ljava/io/OutputStream;)V
        13: .line 67
            new java.io.DataInputStream
            dup
            aload 7 /* bin */
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 8 /* din */
        start local 8 // java.io.DataInputStream din
        14: .line 68
            aload 8 /* din */
            invokevirtual java.io.DataInputStream.readInt:()I
            i2l
            ldc 4294967295
            land
            lstore 9 /* len */
        start local 9 // long len
        15: .line 69
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 9 /* len */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.println:(Ljava/lang/String;)V
        16: .line 70
            aload 8 /* din */
            ldc 4
            invokevirtual java.io.DataInputStream.skip:(J)J
            ldc 4
            lcmp
            ifeq 18
        17: .line 71
            new java.io.IOException
            dup
            ldc "premature EOF when skipping checksum"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 73
      StackMap locals: org.apache.fop.afp.apps.FontPatternExtractor java.io.File java.io.File java.io.InputStream org.apache.fop.afp.parser.MODCAParser org.apache.commons.io.output.ByteArrayOutputStream org.apache.fop.afp.parser.UnparsedStructuredField java.io.ByteArrayInputStream java.io.DataInputStream long
      StackMap stack:
            aload 8 /* din */
            invokevirtual java.io.DataInputStream.readUnsignedShort:()I
            iconst_2
            isub
            istore 11 /* tidLen */
        start local 11 // int tidLen
        19: .line 74
            iload 11 /* tidLen */
            newarray 8
            astore 12 /* tid */
        start local 12 // byte[] tid
        20: .line 75
            aload 8 /* din */
            aload 12 /* tid */
            invokevirtual java.io.DataInputStream.readFully:([B)V
        21: .line 76
            new java.lang.String
            dup
            aload 12 /* tid */
            ldc "ISO-8859-1"
            invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
            astore 13 /* filename */
        start local 13 // java.lang.String filename
        22: .line 77
            aload 0 /* this */
            aload 13 /* filename */
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.countUSAsciiCharacters:(Ljava/lang/String;)I
            istore 14 /* asciiCount1 */
        start local 14 // int asciiCount1
        23: .line 78
            new java.lang.String
            dup
            aload 12 /* tid */
            ldc "Cp1146"
            invokespecial java.lang.String.<init>:([BLjava/lang/String;)V
            astore 15 /* filenameEBCDIC */
        start local 15 // java.lang.String filenameEBCDIC
        24: .line 79
            aload 0 /* this */
            aload 15 /* filenameEBCDIC */
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.countUSAsciiCharacters:(Ljava/lang/String;)I
            istore 16 /* asciiCount2 */
        start local 16 // int asciiCount2
        25: .line 80
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "TID: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 13 /* filename */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 15 /* filenameEBCDIC */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.println:(Ljava/lang/String;)V
        26: .line 82
            iload 16 /* asciiCount2 */
            iload 14 /* asciiCount1 */
            if_icmple 28
        27: .line 85
            aload 15 /* filenameEBCDIC */
            astore 13 /* filename */
        28: .line 87
      StackMap locals: org.apache.fop.afp.apps.FontPatternExtractor java.io.File java.io.File java.io.InputStream org.apache.fop.afp.parser.MODCAParser org.apache.commons.io.output.ByteArrayOutputStream org.apache.fop.afp.parser.UnparsedStructuredField java.io.ByteArrayInputStream java.io.DataInputStream long int byte[] java.lang.String int java.lang.String int
      StackMap stack:
            aload 13 /* filename */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc ".pfb"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 30
        29: .line 88
            new java.lang.StringBuilder
            dup
            aload 13 /* filename */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".pfb"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 13 /* filename */
        30: .line 90
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Output filename: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 13 /* filename */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.println:(Ljava/lang/String;)V
        31: .line 91
            new java.io.File
            dup
            aload 2 /* targetDir */
            aload 13 /* filename */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 17 /* out */
        start local 17 // java.io.File out
        32: .line 93
            new java.io.FileOutputStream
            dup
            aload 17 /* out */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            astore 18 /* fout */
        start local 18 // java.io.OutputStream fout
        33: .line 95
            aload 8 /* din */
            aload 18 /* fout */
            invokestatic org.apache.commons.io.IOUtils.copyLarge:(Ljava/io/InputStream;Ljava/io/OutputStream;)J
            pop2
        34: .line 96
            goto 38
      StackMap locals: org.apache.fop.afp.apps.FontPatternExtractor java.io.File java.io.File java.io.InputStream org.apache.fop.afp.parser.MODCAParser org.apache.commons.io.output.ByteArrayOutputStream org.apache.fop.afp.parser.UnparsedStructuredField java.io.ByteArrayInputStream java.io.DataInputStream long int byte[] java.lang.String int java.lang.String int java.io.File java.io.OutputStream
      StackMap stack: java.lang.Throwable
        35: astore 19
        36: .line 97
            aload 18 /* fout */
            invokestatic org.apache.commons.io.IOUtils.closeQuietly:(Ljava/io/OutputStream;)V
        37: .line 98
            aload 19
            athrow
        38: .line 97
      StackMap locals:
      StackMap stack:
            aload 18 /* fout */
            invokestatic org.apache.commons.io.IOUtils.closeQuietly:(Ljava/io/OutputStream;)V
        end local 18 // java.io.OutputStream fout
        end local 17 // java.io.File out
        end local 16 // int asciiCount2
        end local 15 // java.lang.String filenameEBCDIC
        end local 14 // int asciiCount1
        end local 13 // java.lang.String filename
        end local 12 // byte[] tid
        end local 11 // int tidLen
        end local 9 // long len
        end local 8 // java.io.DataInputStream din
        end local 7 // java.io.ByteArrayInputStream bin
        end local 6 // org.apache.fop.afp.parser.UnparsedStructuredField strucField
        end local 5 // org.apache.commons.io.output.ByteArrayOutputStream baout
        end local 4 // org.apache.fop.afp.parser.MODCAParser parser
        39: .line 101
            goto 43
      StackMap locals: org.apache.fop.afp.apps.FontPatternExtractor java.io.File java.io.File java.io.InputStream
      StackMap stack: java.lang.Throwable
        40: astore 20
        41: .line 102
            aload 3 /* in */
            invokestatic org.apache.commons.io.IOUtils.closeQuietly:(Ljava/io/InputStream;)V
        42: .line 103
            aload 20
            athrow
        43: .line 102
      StackMap locals:
      StackMap stack:
            aload 3 /* in */
            invokestatic org.apache.commons.io.IOUtils.closeQuietly:(Ljava/io/InputStream;)V
        44: .line 104
            return
        end local 3 // java.io.InputStream in
        end local 2 // java.io.File targetDir
        end local 1 // java.io.File file
        end local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   45     0            this  Lorg/apache/fop/afp/apps/FontPatternExtractor;
            0   45     1            file  Ljava/io/File;
            0   45     2       targetDir  Ljava/io/File;
            1   45     3              in  Ljava/io/InputStream;
            2   39     4          parser  Lorg/apache/fop/afp/parser/MODCAParser;
            3   39     5           baout  Lorg/apache/commons/io/output/ByteArrayOutputStream;
            4    9     6      strucField  Lorg/apache/fop/afp/parser/UnparsedStructuredField;
           10   39     6      strucField  Lorg/apache/fop/afp/parser/UnparsedStructuredField;
            6    9     7          sfData  [B
           12   39     7             bin  Ljava/io/ByteArrayInputStream;
           14   39     8             din  Ljava/io/DataInputStream;
           15   39     9             len  J
           19   39    11          tidLen  I
           20   39    12             tid  [B
           22   39    13        filename  Ljava/lang/String;
           23   39    14     asciiCount1  I
           24   39    15  filenameEBCDIC  Ljava/lang/String;
           25   39    16     asciiCount2  I
           32   39    17             out  Ljava/io/File;
           33   39    18            fout  Ljava/io/OutputStream;
      Exception table:
        from    to  target  type
          33    35      35  any
           1    40      40  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      file       
      targetDir  

  private void println(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
        start local 1 // java.lang.String s
         0: .line 107
            aload 0 /* this */
            getfield org.apache.fop.afp.apps.FontPatternExtractor.printStream:Ljava/io/PrintStream;
            aload 1 /* s */
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 108
            return
        end local 1 // java.lang.String s
        end local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/fop/afp/apps/FontPatternExtractor;
            0    2     1     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      s     

  private void println();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
         0: .line 111
            aload 0 /* this */
            getfield org.apache.fop.afp.apps.FontPatternExtractor.printStream:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
         1: .line 112
            return
        end local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/fop/afp/apps/FontPatternExtractor;

  private int countUSAsciiCharacters(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
        start local 1 // java.lang.String filename
         0: .line 115
            iconst_0
            istore 2 /* count */
        start local 2 // int count
         1: .line 116
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: aload 1 /* filename */
            invokevirtual java.lang.String.length:()I
            istore 4 /* c */
        start local 4 // int c
         3: goto 7
         4: .line 117
      StackMap locals: int int int
      StackMap stack:
            aload 1 /* filename */
            iload 3 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            sipush 128
            if_icmpge 6
         5: .line 118
            iinc 2 /* count */ 1
         6: .line 116
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            iload 4 /* c */
            if_icmplt 4
        end local 4 // int c
        end local 3 // int i
         8: .line 121
            iload 2 /* count */
            ireturn
        end local 2 // int count
        end local 1 // java.lang.String filename
        end local 0 // org.apache.fop.afp.apps.FontPatternExtractor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lorg/apache/fop/afp/apps/FontPatternExtractor;
            0    9     1  filename  Ljava/lang/String;
            1    9     2     count  I
            2    8     3         i  I
            3    8     4         c  I
    MethodParameters:
          Name  Flags
      filename  

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 130
            new org.apache.fop.afp.apps.FontPatternExtractor
            dup
            invokespecial org.apache.fop.afp.apps.FontPatternExtractor.<init>:()V
            astore 1 /* app */
        start local 1 // org.apache.fop.afp.apps.FontPatternExtractor app
         1: .line 132
            aload 1 /* app */
            ldc "Font Pattern Extractor"
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.println:(Ljava/lang/String;)V
         2: .line 133
            aload 1 /* app */
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.println:()V
         3: .line 135
            aload 0 /* args */
            arraylength
            ifle 12
         4: .line 136
            aload 0 /* args */
            iconst_0
            aaload
            astore 2 /* filename */
        start local 2 // java.lang.String filename
         5: .line 137
            new java.io.File
            dup
            aload 2 /* filename */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* file */
        start local 3 // java.io.File file
         6: .line 139
            aload 3 /* file */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            astore 4 /* targetDir */
        start local 4 // java.io.File targetDir
         7: .line 140
            aload 0 /* args */
            arraylength
            iconst_1
            if_icmple 10
         8: .line 141
            new java.io.File
            dup
            aload 0 /* args */
            iconst_1
            aaload
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 4 /* targetDir */
         9: .line 142
            aload 4 /* targetDir */
            invokevirtual java.io.File.mkdirs:()Z
            pop
        10: .line 145
      StackMap locals: java.lang.String[] org.apache.fop.afp.apps.FontPatternExtractor java.lang.String java.io.File java.io.File
      StackMap stack:
            aload 1 /* app */
            aload 3 /* file */
            aload 4 /* targetDir */
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.extract:(Ljava/io/File;Ljava/io/File;)V
        end local 4 // java.io.File targetDir
        end local 3 // java.io.File file
        end local 2 // java.lang.String filename
        11: .line 146
            goto 22
        12: .line 147
      StackMap locals:
      StackMap stack:
            aload 1 /* app */
            ldc "This tool tries to extract the PFB file from an AFP outline font."
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.println:(Ljava/lang/String;)V
        13: .line 148
            aload 1 /* app */
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.println:()V
        14: .line 149
            aload 1 /* app */
            new java.lang.StringBuilder
            dup
            ldc "Usage: Java -cp ... "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc Lorg/apache/fop/afp/apps/FontPatternExtractor;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        15: .line 150
            ldc " <afp-font-file> [<target-dir>]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 149
            invokevirtual org.apache.fop.afp.apps.FontPatternExtractor.println:(Ljava/lang/String;)V
        17: .line 151
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 1 // org.apache.fop.afp.apps.FontPatternExtractor app
        18: .line 155
            goto 22
      StackMap locals: java.lang.String[]
      StackMap stack: java.lang.Exception
        19: astore 1 /* e */
        start local 1 // java.lang.Exception e
        20: .line 156
            aload 1 /* e */
            invokevirtual java.lang.Exception.printStackTrace:()V
        21: .line 157
            iconst_m1
            invokestatic java.lang.System.exit:(I)V
        end local 1 // java.lang.Exception e
        22: .line 159
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   23     0       args  [Ljava/lang/String;
            1   18     1        app  Lorg/apache/fop/afp/apps/FontPatternExtractor;
            5   11     2   filename  Ljava/lang/String;
            6   11     3       file  Ljava/io/File;
            7   11     4  targetDir  Ljava/io/File;
           20   22     1          e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    18      19  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "FontPatternExtractor.java"