ag%a      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW X Y Z [ \ ] ^ _ ` o Any (class field method/ ...) attribute format. * Some formats specify special formats for attributeValue.  Class method format Class field format  Class method argument signature Method argument signature Return value signature Class field signature Field signature format  [{type}!L  {class name} "Z #S $J %I &F 'D (C )B *Generic .class file format +,Magic value: 0xCAFEBABE -./"Number of items in constants pool 0Constants pool itself 1See JVM.Types.AccessFlag 2)Constants pool item index for this class 3-/.-- for super class, zero for java.lang.Object 4!Number of implemented interfaces 57Constants pool item indexes for implemented interfaces 6Number of class fileds 7 Class fields 8Number of class methods 9Class methods :Number of class attributes ;Class attributes <Constant pool =Constant pool item >?@ABCDEFGHIJKLMN6Name and signature pair. Used for methods and fields. OPQRST5Access flags. Used for classess, methods, variables. U0x0400 V0x0200 Class is interface W%0x0100 Implemented in other language X0x0080 Y0x0040 Could not be cached Z0x0020 Uses monitors [-0x0010 No further subclassing or assignments \!0x0008 Static method or variable ]#0x0004 Visible only for subclasses ^&0x0002 Visible only for defined class _0x0001 Visible for all `abacbdcRead one-byte Char defghe6Try to read integer value from decimal representation fgRead string up to `;' h!Read arguments signatures (up to `)') ii  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdjklefghj )('&%$#"! <d *+,-./0123456789:;=MJHGFEDCBA?>KLKIKI@@cbNOPQRST_^]\[ZYXWVUa`hgeff     )('&%$#"! !"#$%&'()*+,-./0123456789:;+,-./0123456789:;<=MJHGFEDCBA?>KLKIKI@@>?@ABCDEFGHIJKLMNOPQOPQRSST _^]\[ZYXWVUUVWXYZ[\]^_`abcdefghi!JVM array type (primitive types) j11 k10 l9 m8 n7 o6 p5 q4 rJVM instruction set s201 t200 u199 v198 w197 x196 y195 z194 {193 |192 }191 ~190 189  188, see  ArrayType 187 185 184 183 182 181 180 179 178 177 175 174 173 172 171 170 169 168 167  165, 166 159, 160, 161, 162, 163, 164 153, 154, 155, 156, 157, 158  151, 152  149, 150 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 75, 76, 77, 78 71, 72, 73, 74 67, 68, 69, 70 63, 64, 65, 66 59, 60, 61, 62 58 57 56 55 54 53 52 51 50 49 48 47 46 42, 43, 44, 45 38, 39, 40, 41 34, 35, 36, 37 30, 31, 32, 33 26, 27, 28, 29 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7  6  5  4  3  2 1 0 Exception descriptor !Format of Code method attribute.  MComparation operation type. Not all CMP instructions support all operations. !"#$%&'FImmediate constant. Corresponding value will be added to base opcode. (3 )2 *1 +0 m1Read sequence of instructions (to end of stream) n%Parse opcode with immediate constant  Base opcode Instruction constructor Opcode to parse o#Put opcode with immediate constant  Base opcode Constant to add to opcode ,pqPut opcode with one argument Opcode First argument rOpcode First argument Second argument -.Decode Java method /Encode Java method ijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./r     ~}|{zyxwvutsiqponmlkj'+*)( &%$#"!,-/.iqponmlkjjklmnopqr     ~}|{zyxwvutsstuvwxyz{|}~       &%$#"!!"#$%&'+*)(()*+,-./012340123401234012345Parse .class file data 6Parse class data from file 789st4Find index of given string in the list of constants u4Find index of given string in the list of constants vwxyz{|}~: Try to get class method by name ;$Try to get object attribute by name <ATry to get Code for class method (no Code for interface methods)  Method name 56789:;<56897:;<56789:;<=>?@ABCDEFGHIJKLMNOPQRS=>?@ABCDEFGHIJKLMNOPQRS>?@ABC=DEFGHIJKLMNOPQRS=>?@ABC?@ABCDEFGHIJKLMNOPQRS TU=>?@ABCDEFGHIJKLMNOPQRSTUTUTUVVVV WXYZ[\ WXYZ[\WXYZ[\WXYZ[\ ]^_`]^_`]^_`]^_`     !"#$%&'()*+,-./01123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@AABCDEFGHIJKLMNOPQRSTUVWX Y Z [ \ ] ^ _ ` a bghcdefghijklmnopqrstuvwxyz{|}~                                                                                                                                     hs-java-0.2JVM.Exceptions JVM.ClassFile JVM.Assembler JVM.Common JVM.ConverterJVM.Builder.Monad JVM.BuilderJVM.Dump Java.LangJava.IOJVM.Builder.Instructions NoItemInPoolforce HasAttributes attributes Attribute attributeNameattributeLengthattributeValueMethodmethodAccessFlags methodNamemethodSignaturemethodAttributesCountmethodAttributesFieldfieldAccessFlags fieldNamefieldSignaturefieldAttributesCountfieldAttributesMethodSignatureArgumentSignatureReturnSignature ReturnsVoidReturnsFieldSignature FieldTypeArray ObjectTypeBoolTypeShortIntLongIntIntType FloatType DoubleTypeCharByte SignedByteClassmagic minorVersion majorVersionconstsPoolSize constsPool accessFlags thisClass superClassinterfacesCount interfacesclassFieldsCount classFieldsclassMethodsCount classMethodsclassAttributesCountclassAttributesPoolConstantCUnicodeCUTF8 getString CNameTypeCDoubleCLongCFloatCIntegerCString CIfaceMethodCMethodnameTypeCFieldrefClass fieldNameTypeCClassNameTypentName ntSignature HasSignature Signature AccessFlag ACC_ABSTRACT ACC_INTERFACE ACC_NATIVE ACC_TRANSIENT ACC_VOLATILEACC_SYNCHRONIZED ACC_FINAL ACC_STATIC ACC_PROTECTED ACC_PRIVATE ACC_PUBLIC Attributes AccessFlagsResolvedPointersLinkarsizearlistapsize className ArrayTypeT_LONGT_INTT_SHORTT_BYTET_DOUBLET_FLOATT_CHAR T_BOOLEAN InstructionJSR_WGOTO_W IFNONNULLIFNULLMULTINANEWARRAYWIDE MONITOREXIT MONITORENTER INSTANCEOF CHECKCASTATHROW ARRAYLENGTH ANEWARRAYNEWARRAYNEWINVOKEINTERFACE INVOKESTATIC INVOKESPECIAL INVOKEVIRTUALPUTFIELDGETFIELD PUTSTATIC GETSTATICRETURNDRETURNFRETURNLRETURNIRETURN LOOKUPSWITCH TABLESWITCHRETJSRGOTOIF_ACMPIF_ICMPIFDCMPFCMPLCMPI2SI2CI2BD2FD2LD2IF2DF2LF2IL2DL2FL2II2DI2FI2LIINCLXORIXORLORIORLANDIANDLUSHRIUSHRLSHRISHRLSHLISHLDNEGFNEGLNEGINEGDREMFREMLREMIREMDDIVFDIVLDIVIDIVDMULFMULLMULIMULDSUBFSUBLSUBISUBDADDFADDLADDIADDSWAPDUP2_X2DUP2_X1DUP2DUP_X2DUP_X1DUPPOP2POPSASTORECASTOREBASTOREAASTOREDASTOREFASTORELASTOREIASTOREASTORE_DSTORE_FSTORE_LSTORE_ISTORE_ASTOREDSTOREFSTORELSTOREISTORESALOADCALOADBALOADAALOADDALOADFALOADLALOADIALOADALOAD_DLOAD_FLOAD_LLOAD_ILOAD_ALOADDLOADFLOADLLOADILOADLDC2WLDC2LDC1SIPUSHBIPUSHDCONST_1DCONST_0FCONST_2FCONST_1FCONST_0LCONST_1LCONST_0ICONST_5ICONST_4ICONST_3ICONST_2ICONST_1ICONST_0 ICONST_M1 ACONST_NULLNOP CodeExceptioneStartPCeEndPC eHandlerPC eCatchTypeCode codeStackSize codeMaxLocals codeLengthcodeInstructionscodeExceptionsNcodeExceptions codeAttrsNcodeAttributesCMPC_LEC_GTC_GEC_LTC_NEC_EQIMMI3I2I1I0 atype2byteencodeInstructions decodeMethod encodeMethod toCharListpoolSize! showListIx byteString parseClassparseClassFile encodeClass convertClass classFile methodByName attrByName methodCodeGenerateGState generated currentPool doneMethods currentMethod appendPooladdItem lookupPooladdNTaddSig addToPoolputInstructioni0i1i8 startMethod endMethod newMethodgenCode initClassgeneratearrayOf sizedArray dumpClassobjectstringintegersystem objectInitvalueOfInteger printStreamprintlnoutprintfgetChar8toStringgetInt putStringgetToSemicolongetArgs whileJustARAPattributesListreadInstructionsimmputImm byte2atypeput1put2toCPInfo poolIndexpoolClassIndex fieldInfo methodInfoattrInfoconstantPoolArray convertAccess access2word16 convertField convertMethod convertAttrs emptyGStatenop aconst_null iconst_m1iconst_0iconst_1iconst_2iconst_3iconst_4iconst_5lconst_0lconst_1fconst_0fconst_1fconst_2dconst_0dconst_1bipushsipushldc1ldc2ldc2wiloadlloadfloaddloadaloadiload_lload_fload_dload_aload_ialoadlaloadfaloaddaloadaaloadcaloadsaloadistorelstorefstoredstoreastoreistore_lstore_fstore_dstore_astore_iastorelastorefastoredastoreaastorebastorecastoresastorepoppop2dupdup_x1dup_x2dup2dup2_x1dup2_x2swapiaddladdfadddaddisublsubfsubdsubimullmulfmuldmulidivldivfdivddiviremlremfremdremineglnegfnegdnegishllshlishrlshriushrlushriandlandiorlorixorlxoriinci2li2fi2dl2il2fl2df2if2lf2dd2id2ld2fi2bi2ci2slcmpnewnewArray allocNewArray invokeVirtual invokeStatic invokeSpecialgetStaticField loadString allocArray objectClass stringClass integerClass systemClassprintStreamClass