public void handler() {
            UBytePtr rom = memory_region(REGION_CPU1);
            int A, src, dst;

            for (A = 0x80000; A < 0x100000; A += 2) {
                /* only the low 8 bits of each word are encrypted */
                src = rom.READ_WORD(A);
                dst = src & 0xff00;
                if ((src & 0x01) != 0) {
                    dst ^= 0x04;
                }
                if ((src & 0x02) != 0) {
                    dst ^= 0x21;
                }
                if ((src & 0x04) != 0) {
                    dst ^= 0x01;
                }
                if ((~src & 0x08) != 0) {
                    dst ^= 0x50;
                }
                if ((src & 0x10) != 0) {
                    dst ^= 0x40;
                }
                if ((src & 0x20) != 0) {
                    dst ^= 0x06;
                }
                if ((src & 0x40) != 0) {
                    dst ^= 0x08;
                }
                if ((~src & 0x80) != 0) {
                    dst ^= 0x88;
                }
                rom.WRITE_WORD(A, dst);
            }
        }