namespace SharpCompress.Compressor.Rar.VM
{
    internal class VMCmdFlags
    {
        public const byte VMCF_OP0 = 0;
        public const byte VMCF_OP1 = 1;
        public const byte VMCF_OP2 = 2;
        public const byte VMCF_OPMASK = 3;
        public const byte VMCF_BYTEMODE = 4;
        public const byte VMCF_JUMP = 8;
        public const byte VMCF_PROC = 16;
        public const byte VMCF_USEFLAGS = 32;
        public const byte VMCF_CHFLAGS = 64;

        public static byte[] VM_CmdFlags = new byte[]
                                               {
                                                   VMCF_OP2 | VMCF_BYTEMODE, VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS,
                                                   VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS,
                                                   VMCF_OP1 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP1 | VMCF_BYTEMODE | VMCF_CHFLAGS, VMCF_OP1 | VMCF_JUMP,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS,
                                                   VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS,
                                                   VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS,
                                                   VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS,
                                                   VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS,
                                                   VMCF_OP1 | VMCF_JUMP | VMCF_USEFLAGS, VMCF_OP1, VMCF_OP1,
                                                   VMCF_OP1 | VMCF_PROC, VMCF_OP0 | VMCF_PROC, VMCF_OP1 | VMCF_BYTEMODE,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_CHFLAGS,
                                                   VMCF_OP1 | VMCF_BYTEMODE | VMCF_CHFLAGS, VMCF_OP0, VMCF_OP0,
                                                   VMCF_OP0 | VMCF_USEFLAGS, VMCF_OP0 | VMCF_CHFLAGS, VMCF_OP2, VMCF_OP2,
                                                   VMCF_OP2 | VMCF_BYTEMODE, VMCF_OP2 | VMCF_BYTEMODE,
                                                   VMCF_OP2 | VMCF_BYTEMODE,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_USEFLAGS | VMCF_CHFLAGS,
                                                   VMCF_OP2 | VMCF_BYTEMODE | VMCF_USEFLAGS | VMCF_CHFLAGS, VMCF_OP0
                                               };
    }
}