private LegacyInstr decode_22(int word1) throws InvalidInstruction {
        // get value of bits logical[12:15]
        int value = (word1) & 0x0000F;
        switch ( value ) {
            case 0x00002: return decode_STPD_2(word1);
            case 0x0000F: return decode_PUSH_0(word1);
            case 0x0000D: return decode_STPI_0(word1);
            case 0x00009: return decode_STPI_1(word1);
            case 0x00001: return decode_STPI_2(word1);
            case 0x0000E: return decode_STPD_0(word1);
            case 0x0000A: return decode_STPD_1(word1);
            case 0x0000C: return decode_ST_0(word1);
            case 0x00000: return decode_STS_0(word1);
            default:
            return null;
        }
    }