private void genRead57(
            ObjectReadContext context,
            boolean fieldBased,
            MethodWriterContext mwc,
            int OBJECT,
            Label L_FOR_INC,
            Label hashCode64Start
    ) {
        FieldReader[] fieldReaderArray = context.fieldReaders;
        /*
         * long rawLong = jsonReader.getRawLong();
         * if (rawLong == 0) {
         *     goto hashCode64Start;
         * }
         */
        int RAW_LONG = mwc.var2("RAW_LONG");
        MethodWriter mw = mwc.mw;

        mw.aload(JSON_READER);
        mw.invokevirtual(TYPE_JSON_READER, "getRawLong", "()J");
        mw.dup2();
        mw.lstore(RAW_LONG);
        mw.lconst_0();
        mw.lcmp();
        mw.ifeq(hashCode64Start);

        for (int i = 0; i < fieldReaderArray.length; ++i) {
            Label next_ = new Label();
            FieldReader fieldReader = fieldReaderArray[i];
            byte[] fieldName = fieldReader.fieldName.getBytes(StandardCharsets.UTF_8);
            int fieldNameLength = fieldName.length;
            byte[] bytes8 = new byte[8];
            String nextMethodName;
            switch (fieldNameLength) {
                case 5:
                    bytes8[0] = '"';
                    System.arraycopy(fieldName, 0, bytes8, 1, 5);
                    bytes8[6] = '"';
                    bytes8[7] = ':';
                    nextMethodName = "nextIfName8Match0";
                    break;
                case 6:
                    bytes8[0] = '"';
                    System.arraycopy(fieldName, 0, bytes8, 1, 6);
                    bytes8[7] = '"';
                    nextMethodName = "nextIfName8Match1";
                    break;
                case 7:
                    bytes8[0] = '"';
                    System.arraycopy(fieldName, 0, bytes8, 1, 7);
                    nextMethodName = "nextIfName8Match2";
                    break;
                default:
                    throw new IllegalStateException("length " + fieldNameLength);
            }
            long rawLong = UNSAFE.getLong(bytes8, ARRAY_BYTE_BASE_OFFSET);
            mw.lload(RAW_LONG);
            mw.visitLdcInsn(rawLong);
            mw.lcmp();
            mw.ifne(next_);

            mw.aload(JSON_READER);
            mw.invokevirtual(TYPE_JSON_READER, nextMethodName, "()Z");
            mw.ifeq(hashCode64Start);

            genReadFieldValue(
                    context,
                    fieldReader,
                    fieldBased,
                    mwc,
                    OBJECT,
                    i,
                    false // arrayMapping
            );

            mw.goto_(L_FOR_INC); // continue

            mw.visitLabel(next_);
        }
    }
<blockquote><pre>
     class Bean {
         private String field1;
         private int field2;
     }

     public void readJSONBObject(JSONReader jsonReader, Type fieldType, Object fieldName, long features) {
         features = jsonReader.features(features);
         if (nextIfNull()) {
             return null;
         }

         jsonReader.errorOnNoneSerializable(this.objectClass);

         if (jsonReader.isArray() && jsonReader.isSupportBeanArray()) {
             return readArrayMappingObject(jsonReader, fieldType, fieldName, features);
         }

         Bean object = new Bean();

         jsonReader.nextIfObjectStart();

         for (;;) {
             if (jsonReader.nextIfObjectEnd()) {
                 break;
             }
             switch(jsonReader.getRawInt()) {
                 case field1NameHash32:
                     if(jsonReader.nextIfName4Match2()) {
                         object.field1 = jsonReader.readString();
                         break;
                     }
                     goto hashCode64Start;
                 case field2NameHash32:
                     if(jsonReader.nextIfName4Match2()) {
                         object.field2 = jsonReader.readInt();
                         break;
                     }
                     goto hashCode64Start;
                 default:
                     goto hashCode64Start;
             }

             hashCode64Start:
             long hashCode64 = readFieldNameHashCode();

             if (this.typeKeyHashCode == hashCode64) {
                 object = this.autoType(jsonReader);
             }

             switch(jsonReader.getFieldOrdinal(hashCode64)) {
                 case 0:
                     object.field1 = jsonReader.readString();
             }
         }


     }
 </pre></blockquote>
core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderCreatorASM.java