import * as i from "@/asm/runtime/index";
import * as u from "@/asm/runtime/util";

export const instructions = [
    i.SETCP(0),
    i.DUP(),
    i.PUSHCONT(
        u.code([
            i.DROP(),
            i.SWAP(),
            i.CTOS(),
            i.PUSHINT(2),
            i.SDSKIPFIRST(),
            i.LDI(1),
            i.LDI(1),
            i.LDMSGADDR(),
            i.OVER(),
            i.XCHG_1(3, 4),
            i.XCHG2(6, 6),
            i.TUPLE(4),
            i.SETGLOB(1),
            i.XCHG_0(2),
            i.SETGLOB(2),
            i.PUSHCTR(4),
            i.CTOS(),
            i.LDI(1),
            i.SWAP(),
            i.PUSHCONT_SHORT(
                u.code([i.LDU(32), i.LDU(32), i.ROTREV(), i.BLKDROP2(1, 2)]),
            ),
            i.PUSHCONT_SHORT(
                u.code([
                    i.PUSHINT_16(257),
                    i.LDIX(),
                    i.SWAP(),
                    i.SWAP(),
                    i.ENDS(),
                    i.PUSHINT(0),
                ]),
            ),
            i.IFELSE(),
            i.XCHG_0(3),
            i.PUSHCONT_SHORT(u.code([i.BLKDROP(3)])),
            i.IFJMP(),
            i.PUSHINT(0),
            i.PUSH(2),
            i.SBITS(),
            i.DUP(),
            i.GTINT(31),
            i.PUSHCONT_SHORT(
                u.code([i.NIP(), i.XCHG_0(2), i.LDU(32), i.XCHG_0(3)]),
            ),
            i.IF(),
            i.OVER(),
            i.PUSHINT_LONG(2221695272n),
            i.EQUAL(),
            i.PUSHCONT(
                u.code([
                    i.DROP2(),
                    i.SWAP(),
                    i.PUSHINT_16(257),
                    i.LDIX(),
                    i.LDU(32),
                    i.ROTREV(),
                    i.BLKDROP2(2, 1),
                    i.XCHG_3(1, 2),
                    i.ADD(),
                    i.NEWC(),
                    i.PUSHINT(-1),
                    i.SWAP(),
                    i.STI(1),
                    i.ROTREV(),
                    i.XCHG_0(2),
                    i.STU(32),
                    i.STU(32),
                    i.ENDC(),
                    i.POPCTR(4),
                ]),
            ),
            i.IFJMP(),
            i.POP(3),
            i.EQINT(0),
            i.XCHG_0(2),
            i.LESSINT(33),
            i.XCHG_3(1, 2),
            i.AND(),
            i.IFJMPREF(
                u.code([
                    i.SWAP(),
                    i.NEWC(),
                    i.PUSHINT(-1),
                    i.SWAP(),
                    i.STI(1),
                    i.ROTREV(),
                    i.XCHG_0(2),
                    i.STU(32),
                    i.STU(32),
                    i.ENDC(),
                    i.POPCTR(4),
                ]),
            ),
            i.DROP2(),
            i.THROW(130),
        ]),
    ),
    i.IFNOTJMP(),
    i.PSEUDO_PUSHREF(
        u.code([
            i.DICTPUSHCONST(
                19,
                u.dictMap(
                    new Map([
                        [
                            65536,
                            [
                                i.PUSHCTR(4),
                                i.CTOS(),
                                i.LDI(1),
                                i.SWAP(),
                                i.PUSHCONT_SHORT(
                                    u.code([
                                        i.LDU(32),
                                        i.LDU(32),
                                        i.ROTREV(),
                                        i.BLKDROP2(1, 2),
                                    ]),
                                ),
                                i.PUSHCONT_SHORT(
                                    u.code([
                                        i.PUSHINT_16(257),
                                        i.LDIX(),
                                        i.SWAP(),
                                        i.SWAP(),
                                        i.ENDS(),
                                        i.PUSHINT(0),
                                    ]),
                                ),
                                i.IFELSE(),
                                i.CALLREF(u.code([i.DUP()])),
                                i.BLKDROP2(2, 1),
                            ],
                        ],
                        [
                            105872,
                            [
                                i.PUSHCTR(4),
                                i.CTOS(),
                                i.LDI(1),
                                i.SWAP(),
                                i.PUSHCONT_SHORT(
                                    u.code([
                                        i.LDU(32),
                                        i.LDU(32),
                                        i.ROTREV(),
                                        i.BLKDROP2(1, 2),
                                    ]),
                                ),
                                i.PUSHCONT_SHORT(
                                    u.code([
                                        i.PUSHINT_16(257),
                                        i.LDIX(),
                                        i.SWAP(),
                                        i.SWAP(),
                                        i.ENDS(),
                                        i.PUSHINT(0),
                                    ]),
                                ),
                                i.IFELSE(),
                                i.CALLREF(u.code([i.OVER()])),
                                i.BLKDROP2(2, 1),
                            ],
                        ],
                    ]),
                ),
            ),
            i.DICTIGETJMPZ(),
            i.THROWARG(11),
        ]),
    ),
];
