test_cases:
  -
    input:
      name: "issue 2323 eBPF bswap16 instruction"
      bytes: [ 0xd7,0x53,0x3f,0x0c,0x10,0x00,0x00,0x00 ]
      arch: "CS_ARCH_BPF"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_MODE_BPF_EXTENDED, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bswap16 r3"
  -
    input:
      name: "issue 2323 eBPF bswap32 instruction"
      bytes: [ 0xd7,0x53,0x3f,0x0c,0x20,0x00,0x00,0x00 ]
      arch: "CS_ARCH_BPF"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_MODE_BPF_EXTENDED, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bswap32 r3"
  -
    input:
      name: "issue 2323 eBPF bswap64 instruction"
      bytes: [ 0xd7,0x53,0x3f,0x0c,0x40,0x00,0x00,0x00 ]
      arch: "CS_ARCH_BPF"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_MODE_BPF_EXTENDED, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bswap64 r3"
  -
    input:
      name: "issue 2258 vcmpunordss incorrect read/modified register"
      bytes: [ 0x62,0xd1,0x56,0x08,0xc2,0xca,0x03 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "vcmpunordss k1, xmm5, xmm10"
        details:
          x86:
            operands:
              -
                type: X86_OP_REG
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                access: CS_AC_READ
              -
                type: X86_OP_REG
                access: CS_AC_READ
  -
    input:
      name: "issue 2062 repz Prefix"
      bytes: [ 0xf3,0xc3 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "repz ret"
        details:
          x86:
            prefix: [ X86_PREFIX_REP, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
  -
    input:
      name: "issue 2007 RISCV64 instruction groups"
      bytes: [ 0x63,0x04,0x03,0x00 ]
      arch: "CS_ARCH_RISCV"
      options: [ CS_MODE_RISCV64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "beqz t1, 8"
        details:
          riscv:
            operands:
              -
                type: RISCV_OP_REG
                reg: t1
              -
                type: RISCV_OP_IMM
                imm: 0x8
          groups: [ branch_relative, jump ]
  -
    input:
      name: "issue 2007 RISCV64 instruction groups"
      bytes: [ 0x73,0x00,0x00,0x00 ]
      arch: "CS_ARCH_RISCV"
      options: [ CS_MODE_RISCV64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ecall"
        details:
          groups: [ int ]
  -
    input:
      name: "issue 2007 RISCV64 instruction groups"
      bytes: [ 0xef,0x00,0x40,0x00 ]
      arch: "CS_ARCH_RISCV"
      options: [ CS_MODE_RISCV64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jal 4"
        details:
          riscv:
            operands:
              -
                type: RISCV_OP_IMM
                imm: 0x4
          groups: [ call ]
  -
    input:
      name: "issue 2007 RISCV32 instruction groups"
      bytes: [ 0x63,0x04,0x03,0x00 ]
      arch: "CS_ARCH_RISCV"
      options: [ CS_MODE_RISCV32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "beqz t1, 8"
        details:
          riscv:
            operands:
              -
                type: RISCV_OP_REG
                reg: t1
              -
                type: RISCV_OP_IMM
                imm: 0x8
          groups: [ branch_relative, jump ]
  -
    input:
      name: "issue 2007 RISCV32 instruction groups"
      bytes: [ 0x73,0x00,0x00,0x00 ]
      arch: "CS_ARCH_RISCV"
      options: [ CS_MODE_RISCV32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ecall"
        details:
          groups: [ int ]
  -
    input:
      name: "issue 2007 RISCV32 instruction groups"
      bytes: [ 0xef,0x00,0x40,0x00 ]
      arch: "CS_ARCH_RISCV"
      options: [ CS_MODE_RISCV32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jal 4"
        details:
          riscv:
            operands:
              -
                type: RISCV_OP_IMM
                imm: 0x4
          groups: [ call ]
  -
    input:
      name: "issue 2007 RISCV32 instruction groups"
      bytes: [ 0x11,0x20 ]
      arch: "CS_ARCH_RISCV"
      options: [ CS_MODE_RISCV32, CS_MODE_RISCVC, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "c.jal 4"
        details:
          riscv:
            operands:
              -
                type: RISCV_OP_IMM
                imm: 0x4
          groups: [ hasStdExtC, isrv32, call ]
  -
    input:
      name: "issue 2007 RISCV32 instruction groups"
      bytes: [ 0x91,0xc1 ]
      arch: "CS_ARCH_RISCV"
      options: [ CS_MODE_RISCV32, CS_MODE_RISCVC, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "c.beqz a1, 4"
        details:
          riscv:
            operands:
              -
                type: RISCV_OP_REG
                reg: a1
              -
                type: RISCV_OP_IMM
                imm: 0x4
          groups: [ hasStdExtC, branch_relative, jump ]
  -
    input:
      name: "issue 1997 notrack jmp"
      bytes: [ 0x3e,0xff,0xe0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "notrack jmp rax"
  -
    input:
      name: "issue 1997 notrack call"
      bytes: [ 0x3e,0xff,0xd0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "notrack call rax"
  -
    input:
      name: "issue 1924 SME Index instruction alias printing is not always valid"
      bytes: [ 0x02,0x00,0x9f,0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ld1w {za0h.s[w12, 2]}, p0/z, [x0]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_SME
                sme:
                  type: AARCH64_SME_MATRIX_SLICE_REG
                  tile: za0.s
                  slice_reg: w12
                  slice_offset_imm: 2
                  is_vertical: -1
                access: CS_AC_WRITE
                vas: AARCH64LAYOUT_VL_S
              -
                type: AARCH64_OP_PRED
                pred_reg: p0
                access: CS_AC_READ
              -
                type: AARCH64_OP_MEM
                mem_base: x0
                access: CS_AC_READ
          regs_read: [ w12, p0, x0 ]
          regs_write: [ za0.s ]
          groups: [ HasSME ]
  -
    input:
      name: "issue 1912 PPC register name"
      bytes: [ 0x2d,0x03,0x00,0x80 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_BIG_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "cmpwi cr2, r3, 0x80"
  -
    input:
      name: "issue 1912 PPC no register name"
      bytes: [ 0x2d,0x03,0x00,0x80 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_BIG_ENDIAN, CS_OPT_SYNTAX_NOREGNAME ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "cmpwi 2, 3, 0x80"
  -
    input:
      name: "issue 1902 PPC psq_st negative displacement"
      bytes: [ 0xf3,0xec,0x0f,0xf8 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_32, CS_MODE_BIG_ENDIAN, CS_MODE_PS, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "psq_st f31, -8(r12), 0, 0"
        details:
          ppc:
            operands:
              -
                type: PPC_OP_REG
                reg: f31
              -
                type: PPC_OP_MEM
                mem_base: r12
                mem_disp: -8
              -
                type: PPC_OP_IMM
                imm: 0x0
              -
                type: PPC_OP_IMM
                imm: 0x0
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x21,0x04,0x03,0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov b1, v1.b[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0xc0,0x1e,0x03,0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.b[1], w22"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
                vector_index: 1
                vector_index_is_set: true
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0xc0,0x1e,0x06,0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.h[1], w22"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_H
                vector_index: 1
                vector_index_is_set: true
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0xc0,0x1e,0x0c,0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.s[1], w22"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_S
                vector_index: 1
                vector_index_is_set: true
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0xc0,0x1e,0x18,0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.d[1], x22"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_D
                vector_index: 1
                vector_index_is_set: true
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x0c,0x03,0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.b[1], v1.b[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
                vector_index: 1
                vector_index_is_set: true
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x14,0x06,0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.h[1], v1.h[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_H
                vector_index: 1
                vector_index_is_set: true
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_H
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x24,0x0c,0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.s[1], v1.s[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_S
                vector_index: 1
                vector_index_is_set: true
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_S
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x44,0x18,0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.d[1], v1.d[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_D
                vector_index: 1
                vector_index_is_set: true
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_D
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x3c,0x0c,0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov w0, v1.s[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_S
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x3c,0x0c,0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov w0, v1.s[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_S
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x3c,0x18,0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov x0, v1.d[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_D
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x3c,0x18,0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov x0, v1.d[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_D
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x00,0xc0,0x50,0x05 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fmov z0.h, p0/m, #2.00000000"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_H
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_FP
                fp: 2.0
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x00,0xc0,0x79,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fmov z0.h, #2.00000000"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_H
              -
                type: AARCH64_OP_FP
                fp: 2.0
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0xa1,0xca,0xf8,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z1.d, #0x55"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_D
              -
                type: AARCH64_OP_IMM
                imm: 0x55
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x21,0x44,0x81,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov p1.b, p1.b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x21,0x40,0x51,0x05 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z1.h, p1/m, #1"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_H
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_IMM
                imm: 0x1
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x21,0x00,0x51,0x05 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z1.h, p1/z, #1"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_H
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_IMM
                imm: 0x1
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0xc0,0x38,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z0.b, #1"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_IMM
                imm: 0x1
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x71,0x4a,0x01,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov p1.b, p2/m, p3.b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x61,0x48,0x03,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov p1.b, p2/z, p3.b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x21,0xa8,0x28,0x05 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z1.b, p2/m, w1"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x21,0x38,0x20,0x05 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z1.b, w1"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x01,0x88,0x20,0x05 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z1.b, p2/m, b0"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x00,0x20,0x21,0x05 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z0.b, b0"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x00,0x20,0x23,0x05 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z0.b, z0.b[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
                vector_index: 1
                vector_index_is_set: true
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0xc4,0x20,0x05 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z0.b, p1/m, z1.b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x30,0x61,0x04 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov z0.d, z1.d"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_D
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_D
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x40,0x44,0x42,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movs p0.b, p1/z, p2.b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x20,0x44,0xc1,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movs p0.b, p1.b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x40,0x46,0x01,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "not p0.b, p1/z, p2.b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
  -
    input:
      name: "issue 1873 AArch64 missing VAS specifiers in aliased instructions"
      bytes: [ 0x40,0x46,0x41,0x25 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "nots p0.b, p1/z, p2.b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
              -
                type: AARCH64_OP_PRED
              -
                type: AARCH64_OP_PRED
                vas: AARCH64LAYOUT_VL_B
  -
    input:
      name: "issue 1856 AArch64 SYS instruction operands: tlbi 1 op"
      bytes: [ 0x1f,0x83,0x08,0xd5 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "tlbi vmalle1is"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_SYSREG
                sub_type: AARCH64_OP_TLBI
                sys_raw_val: 0x418
  -
    input:
      name: "issue 1856 AArch64 SYS instruction operands: tlbi 2 op"
      bytes: [ 0x22,0x87,0x08,0xd5 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "tlbi vae1, x2"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_SYSREG
                sub_type: AARCH64_OP_TLBI
                sys_raw_val: 0x439
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1856 AArch64 SYS instruction operands: at"
      bytes: [ 0xc0,0x78,0x0c,0xd5 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "at s12e0r, x0"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_SYSALIAS
                sub_type: AARCH64_OP_AT
                sys_raw_val: 0x23c6
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1856 AArch64 SYS instruction operands: dc"
      bytes: [ 0x22,0x7b,0x0b,0xd5 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "dc cvau, x2"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_SYSALIAS
                sub_type: AARCH64_OP_DC
                sys_raw_val: 0x1bd9
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1856 AArch64 SYS instruction operands: ic"
      bytes: [ 0x20,0x75,0x0b,0xd5 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ic ivau, x0"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_SYSREG
                sub_type: AARCH64_OP_IC
                sys_raw_val: 0x1ba9
              -
                type: AARCH64_OP_REG
  -
    input:
      name: "issue 1843 AArch64 missing VAS specifiers in aliased instructions: mov 16b"
      bytes: [ 0x40,0x1e,0xb2,0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.16b, v18.16b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                reg: q0
                is_vreg: 1
                vas: AARCH64LAYOUT_VL_16B
              -
                type: AARCH64_OP_REG
                reg: q18
                is_vreg: 1
                vas: AARCH64LAYOUT_VL_16B
  -
    input:
      name: "issue 1843 AArch64 missing VAS specifiers in aliased instructions: mov 8b"
      bytes: [ 0x40,0x1e,0xb2,0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov v0.8b, v18.8b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                reg: d0
                is_vreg: 1
                vas: AARCH64LAYOUT_VL_8B
              -
                type: AARCH64_OP_REG
                reg: d18
                is_vreg: 1
                vas: AARCH64LAYOUT_VL_8B
  -
    input:
      name: "issue 1843 AArch64 missing VAS specifiers in aliased instructions: mvn 16b"
      bytes: [ 0x40,0x5a,0x20,0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mvn v0.16b, v18.16b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                reg: q0
                is_vreg: 1
                vas: AARCH64LAYOUT_VL_16B
              -
                type: AARCH64_OP_REG
                reg: q18
                is_vreg: 1
                vas: AARCH64LAYOUT_VL_16B
  -
    input:
      name: "issue 1843 AArch64 missing VAS specifiers in aliased instructions: mvn 8b"
      bytes: [ 0x40,0x5a,0x20,0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mvn v0.8b, v18.8b"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                reg: d0
                is_vreg: 1
                vas: AARCH64LAYOUT_VL_8B
              -
                type: AARCH64_OP_REG
                reg: d18
                is_vreg: 1
                vas: AARCH64LAYOUT_VL_8B
  -
    input:
      name: "issue 1839 AArch64 Incorrect detailed disassembly of ldr"
      bytes: [ 0x41,0x00,0x40,0xf9 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldr x1, [x2]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                access: CS_AC_WRITE
              -
                type: AARCH64_OP_MEM
                access: CS_AC_READ
  -
    input:
      name: "issue 1827 x16 lcall seg:off format"
      bytes: [ 0xb8,0x01,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov eax, 1"
  -
    input:
      name: "issue 1827 x16 lcall seg:off format"
      bytes: [ 0xb9,0x00,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov ecx, 0"
  -
    input:
      name: "issue 1827 x16 lcall seg:off format"
      bytes: [ 0x80,0xb8,0x01,0x00,0x00,0x00,0xb9 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "cmp byte ptr [eax + 1], 0xb9"
  -
    input:
      name: "issue 1827 x16 lcall seg:off format"
      bytes: [ 0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "add byte ptr [eax], al"
  -
    input:
      name: "issue 1827 x16 lcall seg:off format"
      bytes: [ 0x01,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "add dword ptr [eax], eax"
  -
    input:
      name: "issue 1827 x16 lcall seg:off format"
      bytes: [ 0x33,0xc0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_16, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "xor ax, ax"
  -
    input:
      name: "issue 1827 x16 lcall seg:off format"
      bytes: [ 0xba,0x5a,0xff ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_16, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov dx, 0xff5a"
  -
    input:
      name: "issue 1710 M68K floating point immediates broken on big endian hosts"
      bytes: [ 0xf2,0x3c,0x44,0x22,0x40,0x49,0x0e,0x56 ]
      arch: "CS_ARCH_M68K"
      options: [ CS_MODE_BIG_ENDIAN, CS_MODE_M68K_040 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fadd.s #3.141500, fp0"
  -
    input:
      name: "issue 1708 M68K floating point loads and stores generate the same op_str"
      bytes: [ 0xf2,0x27,0x74,0x00 ]
      arch: "CS_ARCH_M68K"
      options: [ CS_MODE_BIG_ENDIAN, CS_MODE_M68K_040 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fmove.d fp0, -(a7)"
  -
    input:
      name: "issue 1708 M68K floating point loads and stores generate the same op_str"
      bytes: [ 0xf2,0x1f,0x54,0x80 ]
      arch: "CS_ARCH_M68K"
      options: [ CS_MODE_BIG_ENDIAN, CS_MODE_M68K_040 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fmove.d (a7)+, fp1"
  -
    input:
      name: "issue 1708 M68K floating point loads and stores generate the same op_str"
      bytes: [ 0x4e,0x75 ]
      arch: "CS_ARCH_M68K"
      options: [ CS_MODE_BIG_ENDIAN, CS_MODE_M68K_040 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rts"
  -
    input:
      name: "issue 1661 M68K invalid transfer direction in MOVEC instruction"
      bytes: [ 0x4E,0x7A,0x00,0x02 ]
      arch: "CS_ARCH_M68K"
      options: [ CS_MODE_BIG_ENDIAN, CS_MODE_M68K_040 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movec cacr, d0"
  -
    input:
      name: "issue 1643 M68K incorrect read of 32-bit imm for bsr"
      bytes: [ 0x61,0xff,0x00,0x00,0x0b,0xea ]
      arch: "CS_ARCH_M68K"
      options: [ CS_MODE_BIG_ENDIAN, CS_MODE_M68K_040 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bsr.l $bec"
  -
    input:
      name: "issue 1627 Arm64 LD1 missing immediate operand"
      bytes: [ 0xe0,0x73,0xdf,0x0c ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ld1 { v0.8b }, [sp], #8"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_8B
              -
                type: AARCH64_OP_MEM
                mem_base: sp
                mem_disp: 0x8
                access: CS_AC_READ
  -
    input:
      name: "issue 1587 ARM thumb pushed registers write"
      bytes: [ 0x2d,0xe9,0xf0,0x47 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "push.w {r4, r5, r6, r7, r8, r9, r10, lr}"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                access: CS_AC_READ
  -
    input:
      name: "issue 1504 movhps qword ptr"
      bytes: [ 0x0f,0x16,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movhps xmm1, qword ptr [rax]"
        details:
          x86:
            opcode: [ 0x0f, 0x16, 0x00, 0x00 ]
  -
    input:
      name: "issue 1505 opcode 0f"
      bytes: [ 0x0f,0xa5,0xc2 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "shld edx, eax, cl"
        details:
          x86:
            opcode: [ 0x0f, 0xa5, 0x00, 0x00 ]
  -
    input:
      name: "issue 1478 tbegin."
      bytes: [ 0x7c,0x20,0x05,0x1d ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "tbegin. 1"
        details:
          ppc:
            update_cr0: 1
  -
    input:
      name: "issue 970 PPC bdnzt lt"
      bytes: [ 0x41,0x00,0xff,0xac ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bdnzt lt, 0xffffffffffffffac"
        details:
          ppc:
            operands:
              -
                type: PPC_OP_REG
                reg: "0"
              -
                type: PPC_OP_IMM
                imm: -0x54
  -
    input:
      name: "issue 970 PPC bdnzt eq"
      bytes: [ 0x41,0x02,0xff,0xac ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bdnzt eq, 0xffffffffffffffac"
        details:
          ppc:
            operands:
              -
                type: PPC_OP_REG
                reg: "2"
              -
                type: PPC_OP_IMM
                imm: -0x54
  -
    input:
      name: "issue 969 PPC bdnzflr operand 2"
      bytes: [ 0x4c,0x10,0x00,0x20 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bdnzflr 4*cr4+lt"
        details:
          ppc:
            operands:
              -
                type: PPC_OP_REG
                reg: "16"
  -
    input:
      name: "issue 1481 AARCH64 LDR operand2"
      bytes: [ 0xe9,0x03,0x40,0xf9 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldr x9, [sp]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_MEM
                mem_base: sp
  -
    input:
      name: "issue 968 PPC absolute branch: bdnzla"
      bytes: [ 0x42,0x00,0x12,0x37 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN ]
      address: 0x1000
    expected:
      insns:
      -
        asm_text: "bcla 0x10, lt, 0x1234"
  -
    input:
      name: "issue 968 PPC absolute branch: bdzla"
      bytes: [ 0x42,0x40,0x12,0x37 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN ]
      address: 0x1000
    expected:
      insns:
      -
        asm_text: "bcla	0x12, lt, 0x1234"
  -
    input:
      name: "issue X86 xrelease xchg"
      bytes: [ 0xf3,0x87,0x03 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "xrelease xchg dword ptr [ebx], eax"
  -
    input:
      name: "issue X86 xacquire xchg"
      bytes: [ 0xf2,0x87,0x03 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "xacquire xchg dword ptr [ebx], eax"
  -
    input:
      name: "issue X86 xrelease"
      bytes: [ 0xf3,0xf0,0x31,0x1f ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "xrelease lock xor dword ptr [rdi], ebx"
  -
    input:
      name: "issue 1477 X86 xacquire"
      bytes: [ 0xf2,0xf0,0x31,0x1f ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "xacquire lock xor dword ptr [rdi], ebx"
  -
    input:
      name: "issue PPC JUMP group"
      bytes: [ 0x41,0x82,0x00,0x10 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bt eq, 0x10"
        details:
          groups: [ jump, branch_relative ]
  -
    input:
      name: "issue 1468 PPC bdnz"
      bytes: [ 0x42,0x00,0xff,0xf8 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN ]
      address: 0x101086c
    expected:
      insns:
      -
        asm_text: "bc 0x10, lt, 0x1010864"
  -
    input:
      name: "issue PPC bdnzt"
      bytes: [ 0x41,0x00,0xff,0xac ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN ]
      address: 0x1000
    expected:
      insns:
      -
        asm_text: "bdnzt lt, 0xfac"
  -
    input:
      name: "issue 1469 PPC CRx"
      bytes: [ 0x4c,0x02,0x39,0x82 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "crxor lt, eq, 4*cr1+un"
        details:
          ppc:
            operands:
              -
                type: PPC_OP_REG
                reg: "0"
              -
                type: PPC_OP_REG
                reg: "2"
              -
                type: PPC_OP_REG
                reg: "7"
  -
    input:
      name: "issue 1468 B target"
      bytes: [ 0x4b,0xff,0xf8,0x00 ]
      arch: "CS_ARCH_PPC"
      options: [ CS_MODE_64, CS_MODE_BIG_ENDIAN ]
      address: 0x1000
    expected:
      insns:
      -
        asm_text: "b 0x800"
  -
    input:
      name: "issue 1456 test alt 1"
      bytes: [ 0xf6,0x08,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "test byte ptr [eax], 0"
  -
    input:
      name: "issue 1456 test alt 2"
      bytes: [ 0xf7,0x08,0x00,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "test dword ptr [eax], 0"
  -
    input:
      name: "issue 1472 lock sub"
      bytes: [ 0xF0,0x2B,0x45,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lock sub eax, dword ptr [ebp + 8]"
  -
    input:
      name: "issue 1472 lock or"
      bytes: [ 0xF0,0x0B,0x45,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lock or eax, dword ptr [ebp + 8]"
  -
    input:
      name: "issue 1472 lock and"
      bytes: [ 0xF0,0x23,0x45,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lock and eax, dword ptr [ebp + 8]"
  -
    input:
      name: "issue 1472 lock add"
      bytes: [ 0xF0,0x03,0x45,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lock add eax, dword ptr [ebp + 8]"
  -
    input:
      name: "issue 1456 MOV dr"
      bytes: [ 0x0f,0x23,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov dr0, eax"
  -
    input:
      name: "issue 1456 MOV dr"
      bytes: [ 0x0f,0x21,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov eax, dr0"
  -
    input:
      name: "issue 1456 MOV cr"
      bytes: [ 0x0f,0x22,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov cr0, eax"
  -
    input:
      name: "issue 1472 lock adc"
      bytes: [ 0xf0,0x12,0x45,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lock adc al, byte ptr [ebp + 8]"
  -
    input:
      name: "issue 1456 xmmword"
      bytes: [ 0x66,0x0f,0x2f,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "comisd xmm0, xmmword ptr [eax]"
  -
    input:
      name: "issue 1456 ARM printPKHASRShiftImm"
      bytes: [ 0xca,0xea,0x21,0x06 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "pkhtb r6, r10, r1, asr #0x20"
  -
    input:
      name: "issue 1456 EIZ"
      bytes: [ 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lea esi, [esi]"
  -
    input:
      name: "issue 1456 ARM POP"
      bytes: [ 0x04,0x10,0x9d,0xe4 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_LITTLE_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "pop {r1}"
  -
    input:
      name: "issue 1456"
      bytes: [ 0x31,0x02,0xa0,0xe1 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lsr r0, r1, r2"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r0
              -
                type: ARM_OP_REG
                reg: r1
              -
                type: ARM_OP_REG
                reg: r2
  -
    input:
      name: "issue 1456"
      bytes: [ 0x0c,0x00,0x80,0x12 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov w12, #-1"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                reg: w12
              -
                type: AARCH64_OP_IMM
                imm: -1
  -
    input:
      name: "issue 1456"
      bytes: [ 0xb8,0x00,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movl $0, %eax"
  -
    input:
      name: "issue 1456"
      bytes: [ 0xd1,0x5e,0x48 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rcrl $1, 0x48(%esi)"
  -
    input:
      name: "issue 1456"
      bytes: [ 0xd1,0x5e,0x48 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rcr dword ptr [esi + 0x48], 1"
  -
    input:
      name: "issue 1456"
      bytes: [ 0xd1,0x5e,0x48 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rcrl $1, 0x48(%esi)"
  -
    input:
      name: "issue 1456"
      bytes: [ 0x62,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bound eax, qword ptr [eax]"
  -
    input:
      name: "issue 1454"
      bytes: [ 0xf0,0x0f,0xb1,0x1e ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lock cmpxchg dword ptr [esi], ebx"
        details:
          regs_read: [ eax, esi, ebx ]
  -
    input:
      name: "issue 1452"
      bytes: [ 0x20,0x3c,0x0c,0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov w0, v1.s[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_S
  -
    input:
      name: "issue 1452"
      bytes: [ 0x20,0x3c,0x18,0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov x0, v1.d[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_D
  -
    input:
      name: "issue 1452"
      bytes: [ 0x20,0x3c,0x03,0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "umov w0, v1.b[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_B
  -
    input:
      name: "issue 1452"
      bytes: [ 0x20,0x3c,0x06,0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "umov w0, v1.h[1]"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
              -
                type: AARCH64_OP_REG
                vas: AARCH64LAYOUT_VL_H
  -
    input:
      name: "issue 1211"
      bytes: [ 0xc4,0xe1,0xf8,0x90,0xc0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "kmovq k0, k0"
  -
    input:
      name: "issue 1211"
      bytes: [ 0xc4,0xe1,0xfb,0x92,0xc3 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "kmovq k0, rbx"
  -
    input:
      name: "issue 1211"
      bytes: [ 0x62,0xf1,0x7d,0x48,0x74,0x83,0x12,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "vpcmpeqb k0, zmm0, zmmword ptr [rbx + 0x12]"
  -
    input:
      name: "issue 1211"
      bytes: [ 0x62,0xf2,0x7d,0x48,0x30,0x43,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "vpmovzxbw zmm0, ymmword ptr [rbx + 0x100]"
  -
    input:
      name: "issue x86 BND register (OSS-fuzz #13467)"
      bytes: [ 0x0f,0x1a,0x1a ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bndldx bnd3, [edx]"
        details:
          x86:
            operands:
              -
                type: X86_OP_REG
                reg: bnd3
              -
                type: X86_OP_MEM
  -
    input:
      name: "issue 1335"
      bytes: [ 0x0f,0x1f,0xc0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "nop eax"
  -
    input:
      name: "issue 1335"
      bytes: [ 0x48,0x0f,0x1f,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "nop qword ptr [rax]"
  -
    input:
      name: "issue 1259"
      bytes: [ 0x0f,0x0d,0x44,0x11,0x40 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "prefetch byte ptr [rcx + rdx + 0x40]"
  -
    input:
      name: "issue 1259"
      bytes: [ 0x41,0x0f,0x0d,0x44,0x12,0x40 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "prefetch byte ptr [r10 + rdx + 0x40]"
  -
    input:
      name: "issue 1304"
      bytes: [ 0x66,0x0f,0x7f,0x4c,0x24,0x40 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movdqa xmmword ptr [rsp + 0x40], xmm1"
        details:
          x86:
            operands:
              -
                type: X86_OP_MEM
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                access: CS_AC_READ
  -
    input:
      name: "issue 1304"
      bytes: [ 0x66,0x0f,0x7e,0x04,0x24 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movd dword ptr [rsp], xmm0"
        details:
          x86:
            operands:
              -
                type: X86_OP_MEM
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                access: CS_AC_READ
  -
    input:
      name: "issue 1304"
      bytes: [ 0xf3,0x41,0x0f,0x7f,0x4d,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movdqu xmmword ptr [r13], xmm1"
        details:
          x86:
            operands:
              -
                type: X86_OP_MEM
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                access: CS_AC_READ
  -
    input:
      name: "issue 1346"
      bytes: [ 0xf3,0x48,0x0f,0x1e,0xc8 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rdsspq rax"
  -
    input:
      name: "issue 1346"
      bytes: [ 0xf3,0x0f,0x1e,0xc8 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rdsspd eax"
  -
    input:
      name: "issue 1346"
      bytes: [ 0xf3,0x48,0x0f,0xae,0xe8 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "incsspq rax"
  -
    input:
      name: "issue 1346"
      bytes: [ 0xf3,0x0f,0xae,0xe8 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "incsspd eax"
  -
    input:
      name: "issue 1346"
      bytes: [ 0xf3,0x0f,0x01,0xea ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "saveprevssp"
  -
    input:
      name: "issue 1346"
      bytes: [ 0xf3,0x0f,0x01,0x28 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rstorssp dword ptr [rax]"
  -
    input:
      name: "issue 1346"
      bytes: [ 0x67,0xf3,0x0f,0x01,0x28 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rstorssp dword ptr [eax]"
  -
    input:
      name: "issue 1346"
      bytes: [ 0x48,0x0f,0x38,0xf6,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "wrssq qword ptr [rax], rax"
  -
    input:
      name: "issue 1346"
      bytes: [ 0x67,0x0f,0x38,0xf6,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "wrssd dword ptr [eax], eax"
  -
    input:
      name: "issue 1346"
      bytes: [ 0xf3,0x0f,0x01,0xe8 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "setssbsy"
  -
    input:
      name: "issue 1346"
      bytes: [ 0xf3,0x0f,0xae,0x30 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "clrssbsy dword ptr [rax]"
  -
    input:
      name: "issue 1346"
      bytes: [ 0x67,0xf3,0x0f,0xae,0x30 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "clrssbsy dword ptr [eax]"
  -
    input:
      name: "issue 1206"
      bytes: [ 0xc4,0xe2,0x7d,0x5a,0x0c,0x0e ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "vbroadcasti128 ymm1, xmmword ptr [rsi + rcx]"
  -
    input:
      name: "issue xchg 16bit"
      bytes: [ 0x91 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_16 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "xchg cx, ax"
  -
    input:
      name: "issue ROL 1, ATT syntax"
      bytes: [ 0x66,0x48,0xf3,0xd1,0xc0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rolw $1, %ax"
  -
    input:
      name: "issue 1129"
      bytes: [ 0xf3,0x0f,0x1e,0xfa ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "endbr64"
  -
    input:
      name: "issue 1129"
      bytes: [ 0xf3,0x0f,0x1e,0xfa ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "endbr64"
  -
    input:
      name: "issue 1129"
      bytes: [ 0xf3,0x0f,0x1e,0xfb ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "endbr32"
  -
    input:
      name: "issue 1129"
      bytes: [ 0xf3,0x0f,0x1e,0xfb ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "endbr32"
  -
    input:
      name: "issue x64 jmp"
      bytes: [ 0xeb,0xfe ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x1000
    expected:
      insns:
      -
        asm_text: "jmp 0x1000"
  -
    input:
      name: "issue x64att jmp"
      bytes: [ 0xeb,0xfe ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_SYNTAX_ATT ]
      address: 0x1000
    expected:
      insns:
      -
        asm_text: "jmp 0x1000"
  -
    input:
      name: "issue x32 jmp"
      bytes: [ 0xeb,0xfe ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x1000
    expected:
      insns:
      -
        asm_text: "jmp 0x1000"
  -
    input:
      name: "issue x32att jmp"
      bytes: [ 0xeb,0xfe ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_SYNTAX_ATT ]
      address: 0x1000
    expected:
      insns:
      -
        asm_text: "jmp 0x1000"
  -
    input:
      name: "issue 1389"
      bytes: [ 0x66,0x0f,0x73,0xf9,0x01 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "pslldq xmm1, 1"
        details:
          x86:
            operands:
              -
                type: X86_OP_REG
                access: CS_AC_READ_WRITE
                reg: xmm1
              -
                type: X86_OP_IMM
                size: 1
                imm: 1
  -
    input:
      name: "issue x64 unsigned"
      bytes: [ 0x66,0x83,0xc0,0x80 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_UNSIGNED ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "add ax, 0xff80"
  -
    input:
      name: "issue x64att unsigned"
      bytes: [ 0x66,0x83,0xc0,0x80 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_SYNTAX_ATT, CS_OPT_UNSIGNED ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "addw $0xff80, %ax"
  -
    input:
      name: "issue 1323"
      bytes: [ 0x70,0x47,0x00 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bx lr"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r14
                access: CS_AC_READ
          regs_read: [ r14 ]
          groups: [ jump, IsThumb ]
  -
    input:
      name: "issue 1317"
      bytes: [ 0xd0,0xe8,0x11,0xf0 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "tbh [r0, r1, lsl #1]"
        details:
          arm:
            operands:
              -
                type: ARM_OP_MEM
                mem_base: r0
                mem_index: r1
                access: CS_AC_READ
                shift_type: ARM_SFT_LSL
                shift_value: 1
          regs_read: [ r0, r1 ]
          groups: [ jump, IsThumb2 ]
  -
    input:
      name: "issue 1308"
      bytes: [ 0x83,0x3d,0xa1,0x75,0x21,0x00,0x04 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "cmp dword ptr [rip + 0x2175a1], 4"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0x83, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 8
            modrm: 0x3d
            disp: 0x2175a1
            sib: 0x0
            operands:
              -
                type: X86_OP_MEM
                mem_base: rip
                mem_disp: 0x2175a1
                size: 4
                access: CS_AC_READ
              -
                type: X86_OP_IMM
                imm: 0x4
                size: 4
            eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
          regs_read: [ rip ]
          regs_write: [ rflags ]
  -
    input:
      name: "issue 1262"
      bytes: [ 0x0f,0x95,0x44,0x24,0x5e ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "setne byte ptr [rsp + 0x5e]"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0x0f, 0x95, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 8
            modrm: 0x44
            disp: 0x5e
            sib: 0x24
            sib_base: rsp
            sib_scale: 1
            operands:
              -
                type: X86_OP_MEM
                mem_base: rsp
                mem_disp: 0x5e
                size: 1
                access: CS_AC_WRITE
            eflags: [ X86_EFLAGS_TEST_ZF ]
          regs_read: [ rflags, rsp ]
  -
    input:
      name: "issue 1262"
      bytes: [ 0x0f,0x94,0x44,0x24,0x1f ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "sete byte ptr [rsp + 0x1f]"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0x0f, 0x94, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 8
            modrm: 0x44
            disp: 0x1f
            sib: 0x24
            sib_base: rsp
            sib_scale: 1
            operands:
              -
                type: X86_OP_MEM
                mem_base: rsp
                mem_disp: 0x1f
                size: 1
                access: CS_AC_WRITE
            eflags: [ X86_EFLAGS_TEST_ZF ]
          regs_read: [ rflags, rsp ]
  -
    input:
      name: "issue 1263"
      bytes: [ 0x67,0x48,0x89,0x18 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov qword ptr [eax], rbx"
  -
    input:
      name: "issue 1263"
      bytes: [ 0x67,0x48,0x8b,0x03 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov rax, qword ptr [ebx]"
  -
    input:
      name: "issue 1255"
      bytes: [ 0xdb,0x7c,0x24,0x40 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fstp xword ptr [rsp + 0x40]"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xdb, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 8
            modrm: 0x7c
            disp: 0x40
            sib: 0x24
            sib_base: rsp
            sib_scale: 1
            operands:
              -
                type: X86_OP_MEM
                mem_base: rsp
                mem_disp: 0x40
                size: 10
                access: CS_AC_WRITE
            fpu_flags: [ X86_FPU_FLAGS_MODIFY_C1, X86_FPU_FLAGS_UNDEFINED_C0, X86_FPU_FLAGS_UNDEFINED_C2, X86_FPU_FLAGS_UNDEFINED_C3 ]
          regs_read: [ rsp ]
          regs_write: [ fpsw ]
          groups: [ fpu ]
  -
    input:
      name: "issue 1255"
      bytes: [ 0xdd,0xd9 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fstp st(1)"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xdd, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 8
            modrm: 0xd9
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_REG
                reg: st(1)
                size: 10
                access: CS_AC_WRITE
            eflags: [ X86_EFLAGS_MODIFY_CF, X86_EFLAGS_PRIOR_SF, X86_EFLAGS_PRIOR_AF, X86_EFLAGS_PRIOR_PF ]
          regs_write: [ fpsw, st(1) ]
  -
    input:
      name: "issue 1255"
      bytes: [ 0xdf,0x7c,0x24,0x68 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fistp qword ptr [rsp + 0x68]"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xdf, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 8
            modrm: 0x7c
            disp: 0x68
            sib: 0x24
            sib_base: rsp
            sib_scale: 1
            operands:
              -
                type: X86_OP_MEM
                mem_base: rsp
                mem_disp: 0x68
                size: 8
                access: CS_AC_WRITE
            fpu_flags: [ X86_FPU_FLAGS_RESET_C1, X86_FPU_FLAGS_UNDEFINED_C0, X86_FPU_FLAGS_UNDEFINED_C2, X86_FPU_FLAGS_UNDEFINED_C3 ]
          regs_read: [ rsp ]
          regs_write: [ fpsw ]
          groups: [ fpu ]
  -
    input:
      name: "issue 1221"
      bytes: [ 0x55,0x48,0x89,0xe5 ]
      arch: "CS_ARCH_SPARC"
      options: [ CS_MODE_BIG_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "call 0x55222794"
  -
    input:
      name: "issue 1144"
      bytes: [ 0x00,0x00,0x02,0xb6 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "tbz x0, #0x20, 0x4000"
  -
    input:
      name: "issue 1144"
      bytes: [ 0x00,0x00,0x04,0xb6 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "tbz x0, #0x20, 0xffffffffffff8000"
  -
    input:
      name: "issue 1144"
      bytes: [ 0x00,0x00,0x02,0xb7 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "tbnz x0, #0x20, 0x4000"
  -
    input:
      name: "issue 1144"
      bytes: [ 0x00,0x00,0x04,0xb7 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "tbnz x0, #0x20, 0xffffffffffff8000"
  -
    input:
      name: "issue 826"
      bytes: [ 0x0b,0x00,0x00,0x0a ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "beq 0x34"
        details:
          arm:
            operands:
              -
                type: ARM_OP_IMM
                imm: 0x34
            cc: ARMCC_EQ
          regs_read: [ cpsr ]
          groups: [ jump, branch_relative, IsARM ]
  -
    input:
      name: "issue 1047"
      bytes: [ 0x48,0x83,0xe4,0xf0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "andq $0xfffffffffffffff0, %rsp"
  -
    input:
      name: "issue 959"
      bytes: [ 0xa0,0x28,0x57,0x88,0x7c ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov al, byte ptr [0x7c885728]"
  -
    input:
      name: "issue 950"
      bytes: [ 0x66,0xa3,0x94,0x90,0x04,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov word ptr [0x8049094], ax"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
            opcode: [ 0xa3, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x8049094
            sib: 0x0
            operands:
              -
                type: X86_OP_MEM
                mem_disp: 0x8049094
                size: 2
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                reg: ax
                size: 2
                access: CS_AC_READ
          regs_read: [ ax ]
  -
    input:
      name: "issue 938"
      bytes: [ 0x70,0x00,0xb2,0xff ]
      arch: "CS_ARCH_MIPS"
      options: [ CS_MODE_MIPS64, CS_MODE_LITTLE_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "sd $s2, 0x70($sp)"
  -
    input:
      name: "issue 915"
      bytes: [ 0xf0,0x0f,0x1f,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lock nop dword ptr [rax]"
  -
    input:
      name: "!# issue 913"
      bytes: [ 0x04,0x10,0x9d,0xe4 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "pop {r1}"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r1
                access: CS_AC_WRITE
          writeback: 1
          regs_read: [ r13 ]
          regs_write: [ r13, r1 ]
          groups: [ IsARM ]
  -
    input:
      name: "issue 884"
      bytes: [ 0x64,0x48,0x03,0x04,0x25,0x00,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "addq %fs:0, %rax"
  -
    input:
      name: "issue 872"
      bytes: [ 0xf2,0xeb,0x3e ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bnd jmp 0x41"
  -
    input:
      name: "issue 861"
      bytes: [ 0x01,0x81,0xa0,0xfc ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "stc2 p1, c8, [r0], #4"
        details:
          arm:
            operands:
              -
                type: ARM_OP_PIMM
                imm: 1
                access: CS_AC_READ
              -
                type: ARM_OP_CIMM
                imm: 8
                access: CS_AC_READ
              -
                type: ARM_OP_MEM
                mem_base: r0
                mem_disp: 0x4
                access: CS_AC_WRITE
          regs_read: [ r0 ]
          groups: [ IsARM, PreV8 ]
  -
    input:
      name: "issue 852"
      bytes: [ 0x64,0xa3,0x00,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov dword ptr fs:[0], eax"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_FS, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xa3, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_MEM
                mem_segment: fs
                size: 4
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                reg: eax
                size: 4
                access: CS_AC_READ
          regs_read: [ fs, eax ]
  -
    input:
      name: "issue 825"
      bytes: [ 0x0e,0xf0,0xa0,0xe1 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov pc, lr"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r15
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r14
                access: CS_AC_READ
          regs_read: [ r14 ]
          regs_write: [ r15 ]
          groups: [ jump, return, IsARM ]
  -
    input:
      name: "issue 813"
      bytes: [ 0xF6,0xC0,0x04,0x01 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB, CS_MODE_BIG_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movt r4, #0x801"
  -
    input:
      name: "issue 809"
      bytes: [ 0x0f,0x29,0x8d,0xf0,0xfd,0xff,0xff ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movaps xmmword ptr [rbp - 0x210], xmm1"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0x0f, 0x29, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 8
            modrm: 0x8d
            disp: -0x210
            sib: 0x0
            operands:
              -
                type: X86_OP_MEM
                mem_base: rbp
                mem_disp: -0x210
                size: 16
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                reg: xmm1
                size: 16
                access: CS_AC_READ
          regs_read: [ rbp, xmm1 ]
          groups: [ sse1 ]
  -
    input:
      name: "issue 807"
      bytes: [ 0x4c,0x0f,0x00,0x80,0x16,0x76,0x8a,0xfe ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "sldt word ptr [rax - 0x17589ea]"
  -
    input:
      name: "issue 806"
      bytes: [ 0x0f,0x35 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "sysexit"
  -
    input:
      name: "issue 805"
      bytes: [ 0x48,0x4c,0x0f,0xb5,0x80,0x16,0x76,0x8a,0xfe ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lgs -0x17589ea(%rax), %r8"
  -
    input:
      name: "issue 804"
      bytes: [ 0x66,0x48,0xf3,0xd1,0xc0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rolw $1, %ax"
  -
    input:
      name: "issue 789"
      bytes: [ 0x8e,0x1e ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movw (%rsi), %ds"
  -
    input:
      name: "issue 767"
      bytes: [ 0xb1,0xe8,0xfc,0x07 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldm.w r1!, {r2, r3, r4, r5, r6, r7, r8, r9, r10}"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r1
                access: CS_AC_READ_WRITE
              -
                type: ARM_OP_REG
                reg: r2
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r3
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r4
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r5
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r6
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r7
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r8
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r9
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r10
                access: CS_AC_WRITE
          writeback: 1
          regs_read: [ r1 ]
          regs_write: [ r1, r2, r3, r4, r5, r6, r7, r8, r9, r10 ]
          groups: [ IsThumb2 ]
  -
    input:
      name: "issue 760"
      bytes: [ 0x02,0x80,0xbd,0xe8 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "pop {r1, pc}"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r1
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r15
                access: CS_AC_WRITE
          writeback: 1
          regs_read: [ r13 ]
          regs_write: [ r13, r1, r15 ]
          groups: [ IsARM, return, jump ]
  -
    input:
      name: "issue 750"
      bytes: [ 0x0e,0x00,0x20,0xe9 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "stmdb r0!, {r1, r2, r3}"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r0
                access: CS_AC_READ_WRITE
              -
                type: ARM_OP_REG
                reg: r1
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                reg: r2
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                reg: r3
                access: CS_AC_READ
          writeback: 1
          regs_read: [ r0, r1, r2, r3 ]
          regs_write: [ r0 ]
          groups: [ IsARM ]
  -
    input:
      name: "issue 747"
      bytes: [ 0x0e,0x00,0xb0,0xe8 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldm r0!, {r1, r2, r3}"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r0
                access: CS_AC_READ_WRITE
              -
                type: ARM_OP_REG
                reg: r1
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r2
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r3
                access: CS_AC_WRITE
          writeback: 1
          regs_read: [ r0 ]
          regs_write: [ r0, r1, r2, r3 ]
          groups: [ IsARM ]
  -
    input:
      name: "issue 747"
      bytes: [ 0x0e,0xc8 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldm r0!, {r1, r2, r3}"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r0
                access: CS_AC_READ_WRITE
              -
                type: ARM_OP_REG
                reg: r1
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r2
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r3
                access: CS_AC_WRITE
          writeback: 1
          regs_read: [ r0 ]
          regs_write: [ r0, r1, r2, r3 ]
          groups: [ IsThumb ]
  -
    input:
      name: "issue 746"
      bytes: [ 0x89,0x00,0x2d,0xe9 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "push {r0, r3, r7}"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r0
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                reg: r3
                access: CS_AC_READ
              -
                type: ARM_OP_REG
                reg: r7
                access: CS_AC_READ
          writeback: 1
          regs_read: [ r13, r0, r3, r7 ]
          regs_write: [ r13 ]
          groups: [ IsARM ]
  -
    input:
      name: "issue 744"
      bytes: [ 0x02,0x80,0xbd,0xe8 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "pop {r1, pc}"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r1
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r15
                access: CS_AC_WRITE
          writeback: 1
          regs_read: [ r13 ]
          regs_write: [ r13, r1, r15 ]
          groups: [ IsARM, return, jump ]
  -
    input:
      name: "issue 741"
      bytes: [ 0x83,0xff,0xf7 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "cmp edi, -9"
  -
    input:
      name: "issue 717"
      bytes: [ 0x48,0x8b,0x04,0x25,0x00,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_SYNTAX_ATT ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movq 0, %rax"
  -
    input:
      name: "issue 711"
      bytes: [ 0xa3,0x44,0xb0,0x00,0x10 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov dword ptr [0x1000b044], eax"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xa3, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x1000b044
            sib: 0x0
            operands:
              -
                type: X86_OP_MEM
                mem_disp: 0x1000b044
                size: 4
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                reg: eax
                size: 4
                access: CS_AC_READ
          regs_read: [ eax ]
  -
    input:
      name: "issue 613"
      bytes: [ 0xd9,0x74,0x24,0xd8 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fnstenv [rsp - 0x28]"
  -
    input:
      name: "issue 554"
      bytes: [ 0xe7,0x84 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "out 0x84, eax"
  -
    input:
      name: "issue 554"
      bytes: [ 0xe5,0x8c ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "in eax, 0x8c"
  -
    input:
      name: "issue 545"
      bytes: [ 0x95 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "xchg ebp, eax"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0x95, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_REG
                reg: ebp
                size: 4
                access: CS_AC_READ_WRITE
              -
                type: X86_OP_REG
                reg: eax
                size: 4
                access: CS_AC_READ_WRITE
          regs_read: [ ebp, eax ]
          regs_write: [ ebp, eax ]
          groups: [ not64bitmode ]
  -
    input:
      name: "issue 544"
      bytes: [ 0xdf,0x30 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fbstp tbyte ptr [eax]"
  -
    input:
      name: "issue 544"
      bytes: [ 0xdf,0x20 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fbld tbyte ptr [eax]"
  -
    input:
      name: "issue 541"
      bytes: [ 0x48,0xb8,0x00,0x00,0x00,0x00,0x80,0xf8,0xff,0xff ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movabs rax, 0xfffff88000000000"
  -
    input:
      name: "issue 499"
      bytes: [ 0x48,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movabs rax, 0x8000000000000000"
  -
    input:
      name: "issue 492"
      bytes: [ 0xff,0x18 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "call ptr [eax]"
  -
    input:
      name: "issue 492"
      bytes: [ 0xff,0x28 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jmp ptr [eax]"
  -
    input:
      name: "issue 492"
      bytes: [ 0x0f,0xae,0x04,0x24 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fxsave [esp]"
  -
    input:
      name: "issue 492"
      bytes: [ 0x0f,0xae,0x0c,0x24 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fxrstor [esp]"
  -
    input:
      name: "issue 470"
      bytes: [ 0x0f,0x01,0x05,0xa0,0x90,0x04,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "sgdt [0x80490a0]"
  -
    input:
      name: "issue 470"
      bytes: [ 0x0f,0x01,0x0d,0xa7,0x90,0x04,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "sidt [0x80490a7]"
  -
    input:
      name: "issue 470"
      bytes: [ 0x0f,0x01,0x15,0xa0,0x90,0x04,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lgdt [0x80490a0]"
  -
    input:
      name: "issue 470"
      bytes: [ 0x0f,0x01,0x1d,0xa7,0x90,0x04,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lidt [0x80490a7]"
  -
    input:
      name: "issue 459"
      bytes: [ 0xd3,0x20,0x11,0xe1 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldrsb r2, [r1, -r3]"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r2
                access: CS_AC_WRITE
              -
                type: ARM_OP_MEM
                mem_base: r1
                mem_index: r3
                mem_scale: 0
                access: CS_AC_READ
                subtracted: 1
          regs_read: [ r1, r3 ]
          regs_write: [ r2 ]
          groups: [ IsARM ]
  -
    input:
      name: "issue 456"
      bytes: [ 0xe8,0x35,0x64 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_16 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "call 0x6438"
  -
    input:
      name: "issue 456"
      bytes: [ 0xe9,0x35,0x64 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_16 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jmp 0x6438"
  -
    input:
      name: "issue 456"
      bytes: [ 0x66,0xe9,0x35,0x64,0x93,0x53 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_16 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jmp 0x5393643b"
  -
    input:
      name: "issue 456"
      bytes: [ 0x66,0xe8,0x35,0x64,0x93,0x53 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_16 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "call 0x5393643b"
  -
    input:
      name: "issue 456"
      bytes: [ 0x66,0xe9,0x35,0x64,0x93,0x53 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_16 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jmp 0x5393643b"
  -
    input:
      name: "issue 456"
      bytes: [ 0x66,0xe8,0x35,0x64 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "call 0x6439"
  -
    input:
      name: "issue 456"
      bytes: [ 0xe9,0x35,0x64,0x93,0x53 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jmp 0x5393643a"
  -
    input:
      name: "issue 456"
      bytes: [ 0x66,0xe9,0x35,0x64 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jmp 0x6439"
  -
    input:
      name: "issue 458"
      bytes: [ 0xA1,0x12,0x34,0x90,0x90 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov eax, dword ptr [0x90903412]"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xa1, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x90903412
            sib: 0x0
            operands:
              -
                type: X86_OP_REG
                reg: eax
                size: 4
                access: CS_AC_WRITE
              -
                type: X86_OP_MEM
                mem_disp: 0x90903412
                size: 4
                access: CS_AC_READ
          regs_write: [ eax ]
  -
    input:
      name: "issue 454"
      bytes: [ 0xf2,0x6c ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "repne insb byte ptr es:[edi], dx"
  -
    input:
      name: "issue 454"
      bytes: [ 0xf2,0x6d ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "repne insd dword ptr es:[edi], dx"
  -
    input:
      name: "issue 454"
      bytes: [ 0xf2,0x6e ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "repne outsb dx, byte ptr [esi]"
  -
    input:
      name: "issue 454"
      bytes: [ 0xf2,0x6f ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "repne outsd dx, dword ptr [esi]"
  -
    input:
      name: "issue 454"
      bytes: [ 0xf2,0xac ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "repne lodsb al, byte ptr [esi]"
  -
    input:
      name: "issue 454"
      bytes: [ 0xf2,0xad ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "repne lodsd eax, dword ptr [esi]"
  -
    input:
      name: "issue 450"
      bytes: [ 0xff,0x2d,0x34,0x35,0x23,0x01 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jmp ptr [0x1233534]"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xff, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x2d
            disp: 0x1233534
            sib: 0x0
            operands:
              -
                type: X86_OP_MEM
                mem_disp: 0x1233534
                size: 6
          groups: [ jump ]
  -
    input:
      name: "issue 448"
      bytes: [ 0xea,0x12,0x34,0x56,0x78,0x9a,0xbc ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ljmp 0xbc9a:0x78563412"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xea, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_IMM
                imm: 0xbc9a
                size: 2
              -
                type: X86_OP_IMM
                imm: 0x78563412
                size: 4
          groups: [ not64bitmode, jump ]
  -
    input:
      name: "issue 426"
      bytes: [ 0xbb,0x70,0x00,0x00 ]
      arch: "CS_ARCH_SPARC"
      options: [ CS_MODE_BIG_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "popc %g0, %i5"
  -
    input:
      name: "issue 358"
      bytes: [ 0xe8,0xe3,0xf6,0xff,0xff ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "call 0xfffff6e8"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xe8, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_IMM
                imm: 0xfffff6e8
                size: 4
          regs_read: [ esp, eip ]
          regs_write: [ esp ]
          groups: [ call, branch_relative, not64bitmode ]
  -
    input:
      name: "issue 353"
      bytes: [ 0xe6,0xa2 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "out 0xa2, al"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xe6, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_IMM
                imm: 0xa2
                size: 1
              -
                type: X86_OP_REG
                reg: al
                size: 1
                access: CS_AC_READ
          regs_read: [ al ]
  -
    input:
      name: "issue 305"
      bytes: [ 0x34,0x8b ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "xor al, 0x8b"
  -
    input:
      name: "issue 298"
      bytes: [ 0xf3,0x90 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "pause"
  -
    input:
      name: "issue 298"
      bytes: [ 0x66,0xf3,0xf2,0x0f,0x59,0xff ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mulsd xmm7, xmm7"
  -
    input:
      name: "issue 294"
      bytes: [ 0xc1,0xe6,0x08 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "shl esi, 8"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xc1, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0xe6
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_REG
                reg: esi
                size: 4
                access: CS_AC_READ_WRITE
              -
                type: X86_OP_IMM
                imm: 0x8
                size: 1
            eflags: [ X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_UNDEFINED_AF ]
          regs_read: [ esi ]
          regs_write: [ eflags, esi ]
  -
    input:
      name: "issue 285"
      bytes: [ 0x3c,0x12,0x80 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "cmp al, 0x12"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0x3c, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_REG
                reg: al
                size: 1
                access: CS_AC_READ
              -
                type: X86_OP_IMM
                imm: 0x12
                size: 1
            eflags: [ X86_EFLAGS_MODIFY_AF, X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_ZF, X86_EFLAGS_MODIFY_PF, X86_EFLAGS_MODIFY_OF ]
          regs_read: [ al ]
          regs_write: [ eflags ]
  -
    input:
      name: "issue 265"
      bytes: [ 0x52,0xf8,0x23,0x30 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldr.w r3, [r2, r3, lsl #2]"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r3
                access: CS_AC_WRITE
              -
                type: ARM_OP_MEM
                mem_base: r2
                mem_index: r3
                mem_scale: 0
                shift_type: ARM_SFT_LSL
                shift_value: 2
          regs_read: [ r2, r3 ]
          regs_write: [ r3 ]
          groups: [ IsThumb2 ]
  -
    input:
      name: "issue 264"
      bytes: [ 0x0c,0xbf ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ite eq"
  -
    input:
      name: "issue 264"
      bytes: [ 0x17,0x20 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "movs r0, #0x17"
  -
    input:
      name: "issue 264"
      bytes: [ 0x4f,0xf0,0xff,0x30 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov.w r0, #0xffffffff"
  -
    input:
      name: "issue 246"
      bytes: [ 0x52,0xf8,0x23,0xf0 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldr.w pc, [r2, r3, lsl #2]"
  -
    input:
      name: "issue 232"
      bytes: [ 0x8e,0x10 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov ss, word ptr [eax]"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0x8e, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x10
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_REG
                reg: ss
                size: 2
                access: CS_AC_WRITE
              -
                type: X86_OP_MEM
                mem_base: eax
                size: 2
                access: CS_AC_READ
          regs_read: [ eax ]
          regs_write: [ ss ]
          groups: [ privilege ]
  -
    input:
      name: "issue 231"
      bytes: [ 0x66,0x6b,0xc0,0x02 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "imul ax, ax, 2"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_OPSIZE, X86_PREFIX_0 ]
            opcode: [ 0x6b, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0xc0
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_REG
                reg: ax
                size: 2
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                reg: ax
                size: 2
                access: CS_AC_READ
              -
                type: X86_OP_IMM
                imm: 0x2
                size: 2
            eflags: [ X86_EFLAGS_MODIFY_CF, X86_EFLAGS_MODIFY_SF, X86_EFLAGS_MODIFY_OF, X86_EFLAGS_UNDEFINED_ZF, X86_EFLAGS_UNDEFINED_PF, X86_EFLAGS_UNDEFINED_AF ]
          regs_read: [ ax ]
          regs_write: [ eflags, ax ]
  -
    input:
      name: "issue 230"
      bytes: [ 0xec ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "in al, dx"
        details:
          x86:
            prefix: [ X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0, X86_PREFIX_0 ]
            opcode: [ 0xec, 0x00, 0x00, 0x00 ]
            rex: 0x0
            addr_size: 4
            modrm: 0x0
            disp: 0x0
            sib: 0x0
            operands:
              -
                type: X86_OP_REG
                reg: al
                size: 1
                access: CS_AC_WRITE
              -
                type: X86_OP_REG
                reg: dx
                size: 2
                access: CS_AC_READ
          regs_read: [ dx ]
          regs_write: [ al ]
  -
    input:
      name: "issue 213"
      bytes: [ 0xea,0xaa,0xff,0x00,0xf0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_16 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ljmp 0xf000:0xffaa"
  -
    input:
      name: "issue 191"
      bytes: [ 0xc5,0xe8,0xc2,0x33,0x9b ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "vcmpps xmm6, xmm2, xmmword ptr [rbx], 0x9b"
  -
    input:
      name: "issue 176"
      bytes: [ 0xfd,0xff,0xff,0x1a ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_ARM ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bne 0xfffffffc"
  -
    input:
      name: "issue 151"
      bytes: [ 0x4d,0x8d,0x3d,0x02,0x00,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "lea r15, [rip + 2]"
  -
    input:
      name: "issue 151"
      bytes: [ 0xeb,0xb0 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "jmp 0xffffffffffffffb2"
  -
    input:
      name: "issue 134"
      bytes: [ 0xe7,0x92,0x11,0x80 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldr r1, [r2, r0, lsl #3]"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r1
                access: CS_AC_WRITE
              -
                type: ARM_OP_MEM
                mem_base: r2
                mem_index: r0
                access: CS_AC_READ
                shift_type: ARM_SFT_LSL
                shift_value: 3
          regs_read: [ r2, r0 ]
          regs_write: [ r1 ]
          groups: [ IsARM ]
  -
    input:
      name: "issue 133"
      bytes: [ 0xed,0xdf,0x2b,0x1b ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "vldr d18, [pc, #0x6c]"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: d18
                access: CS_AC_WRITE
              -
                type: ARM_OP_MEM
                mem_base: r15
                mem_disp: 0x6c
                access: CS_AC_READ
          regs_read: [ r15 ]
          regs_write: [ d18 ]
          groups: [ HasFPRegs ]
  -
    input:
      name: "issue 132"
      bytes: [ 0x49,0x19 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB, CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldr r1, [pc, #0x64]"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r1
                access: CS_AC_WRITE
              -
                type: ARM_OP_MEM
                mem_base: r15
                mem_disp: 0x64
                access: CS_AC_READ
          regs_read: [ r15 ]
          regs_write: [ r1 ]
          groups: [ IsThumb ]
  -
    input:
      name: "issue 130"
      bytes: [ 0xe1,0xa0,0xf0,0x0e ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov pc, lr"
        details:
          arm:
            operands:
              -
                type: ARM_OP_REG
                reg: r15
                access: CS_AC_WRITE
              -
                type: ARM_OP_REG
                reg: r14
                access: CS_AC_READ
          regs_read: [ r14 ]
          regs_write: [ r15 ]
          groups: [ jump, return, IsARM ]
  -
    input:
      name: "issue 85"
      bytes: [ 0xee,0x3f,0xbf,0x29 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_LITTLE_ENDIAN ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "stp w14, w15, [sp, #-8]!"
  -
    input:
      name: "issue 82"
      bytes: [ 0xf2,0x66,0xaf ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "repne scasw ax, word ptr [rdi]"
  -
    input:
      name: "issue 35"
      bytes: [ 0xe8,0xc6,0x02,0x00,0x00 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "call 0x2cb"
  -
    input:
      name: "issue 8"
      bytes: [ 0xff,0x8c,0xf9,0xff,0xff,0x9b,0xf9 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32 ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "dec dword ptr [ecx + edi*8 - 0x6640001]"
  -
    input:
      name: "issue 29"
      bytes: [ 0x00,0x00,0x00,0x4c ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "st4 { v0.16b, v1.16b, v2.16b, v3.16b }, [x0]"
  -
    input:
      name: "issue 2233 ARM write to PC is branch"
      bytes: [ 0x87,0x46 ]
      arch: "CS_ARCH_ARM"
      options: [ CS_MODE_THUMB, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "mov pc, r0"
        details:
          groups: [ IsThumb, jump ]
  -
    input:
      name: "issue 2128"
      bytes: [ 0x4c,0x85,0x7d,0x30 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "test	qword ptr [rbp + 0x30], r15"
        details:
          x86:
            operands:
              -
                type: X86_OP_MEM
              -
                type: X86_OP_REG
                reg: r15
                access: CS_AC_READ
          regs_read: [ rbp, r15 ]
          regs_write: [ rflags ]
  -
    input:
      name: "issue 2079"
      bytes: [ 0xd1,0x10 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_32, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "rcl	dword ptr [eax]"
        details:
          x86:
            operands:
              -
                type: X86_OP_MEM
                mem_base: eax
              -
                type: X86_OP_IMM
                imm: 0x1
  -
    input:
      name: "issue 2244"
      bytes: [ 0xc5,0xfb,0xc2,0xda,0x06 ]
      arch: "CS_ARCH_X86"
      options: [ CS_MODE_64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "vcmpnlesd	xmm3, xmm0, xmm2"
        id: 797
  -
    input:
      name: "issue 2349"
      bytes: [ 0xcf, 0x41, 0xd0, 0x28 ]
      arch: "CS_ARCH_LOONGARCH"
      options: [ CS_MODE_LOONGARCH64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ld.d $t3, $t2, 0x410"
        details:
          loongarch:
            operands:
              -
                type: LOONGARCH_OP_REG
              -
                type: LOONGARCH_OP_MEM
                mem_base: t2
                mem_disp: 0x410
  -
    input:
      name: "issue 2349"
      bytes: [ 0x8d, 0x59, 0x10, 0x27 ]
      arch: "CS_ARCH_LOONGARCH"
      options: [ CS_MODE_LOONGARCH64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "stptr.d $t1, $t0, 0x1058"
        details:
          loongarch:
            operands:
              -
                type: LOONGARCH_OP_REG
              -
                type: LOONGARCH_OP_MEM
                mem_base: t0
                mem_disp: 0x1058
  -
    input:
      name: "issue 2349"
      bytes: [ 0xa4, 0x15, 0x20, 0x30 ]
      arch: "CS_ARCH_LOONGARCH"
      options: [ CS_MODE_LOONGARCH64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "vldrepl.w $vr4, $t1, 0x14"
        details:
          loongarch:
            operands:
              -
                type: LOONGARCH_OP_REG
              -
                type: LOONGARCH_OP_MEM
                mem_base: t1
                mem_disp: 0x14
  -
    input:
      name: "issue 2349"
      bytes: [ 0x68, 0x22, 0xc2, 0x2a ]
      arch: "CS_ARCH_LOONGARCH"
      options: [ CS_MODE_LOONGARCH64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "preld 8, $t7, 0x88"
        details:
          loongarch:
            operands:
              -
                type: LOONGARCH_OP_IMM
                imm: 0x8
              -
                type: LOONGARCH_OP_MEM
                mem_base: t7
                mem_disp: 0x88
  -
    input:
      name: "issue 2349"
      bytes: [ 0xe1, 0x2c, 0x30, 0x38 ]
      arch: "CS_ARCH_LOONGARCH"
      options: [ CS_MODE_LOONGARCH64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fldx.s $fa1, $a3, $a7"
        details:
          loongarch:
            operands:
              -
                type: LOONGARCH_OP_REG
              -
                type: LOONGARCH_OP_MEM
                mem_base: a3
                mem_index: a7
  -
    input:
      name: "issue 2349"
      bytes: [ 0xc4, 0x14, 0x57, 0x38 ]
      arch: "CS_ARCH_LOONGARCH"
      options: [ CS_MODE_LOONGARCH64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "sc.q $a0, $a1, $a2"
        details:
          loongarch:
            operands:
              -
                type: LOONGARCH_OP_REG
                reg: a0
              -
                type: LOONGARCH_OP_REG
                reg: a1
              -
                type: LOONGARCH_OP_MEM
                mem_base: a2
  -
    input:
      name: "issue 2349"
      bytes: [ 0xc4, 0x14, 0x61, 0x38 ]
      arch: "CS_ARCH_LOONGARCH"
      options: [ CS_MODE_LOONGARCH64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "amadd.w $a0, $a1, $a2"
        details:
          loongarch:
            operands:
              -
                type: LOONGARCH_OP_REG
                reg: a0
              -
                type: LOONGARCH_OP_REG
                reg: a1
              -
                type: LOONGARCH_OP_MEM
                mem_base: a2
  -
    input:
      name: "issue 2349"
      bytes: [ 0xa4, 0x18, 0x78, 0x38 ]
      arch: "CS_ARCH_LOONGARCH"
      options: [ CS_MODE_LOONGARCH64, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "ldgt.b $a0, $a1, $a2"
        details:
          loongarch:
            operands:
              -
                type: LOONGARCH_OP_REG
              -
                type: LOONGARCH_OP_MEM
                mem_base: a1
              -
                type: LOONGARCH_OP_REG
                reg: a2
  -
    input:
      name: "issue 2268"
      bytes: [ 0x00,0x80,0x58,0x65 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fadd z0.h, p0/m, z0.h, #0.5"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                access: CS_AC_READ_WRITE
              -
                type: AARCH64_OP_PRED
                access: CS_AC_READ
              -
                type: AARCH64_OP_REG
                access: CS_AC_READ_WRITE
              -
                type: AARCH64_OP_SYSIMM
                sub_type: AARCH64_OP_EXACTFPIMM
                sys_raw_val: 1
  -
    input:
      name: "issue 2268"
      bytes: [ 0x20,0x80,0x58,0x65 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fadd z0.h, p0/m, z0.h, #1.0"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                access: CS_AC_READ_WRITE
              -
                type: AARCH64_OP_PRED
                access: CS_AC_READ
              -
                type: AARCH64_OP_REG
                access: CS_AC_READ_WRITE
              -
                type: AARCH64_OP_SYSIMM
                sub_type: AARCH64_OP_EXACTFPIMM
                sys_raw_val: 2
  -
    input:
      name: "issue 2268"
      bytes: [ 0x3f,0x9c,0xda,0x65 ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fmul z31.d, p7/m, z31.d, #2.0"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                access: CS_AC_READ_WRITE
              -
                type: AARCH64_OP_PRED
                access: CS_AC_READ
              -
                type: AARCH64_OP_REG
                access: CS_AC_READ_WRITE
              -
                type: AARCH64_OP_SYSIMM
                sub_type: AARCH64_OP_EXACTFPIMM
                sys_raw_val: 3
  -
    input:
      name: "issue 2268"
      bytes: [ 0x6a,0xd9,0xf8,0x7e ]
      arch: "CS_ARCH_AARCH64"
      options: [ CS_MODE_ARM, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "fcmle h10, h11, #0.0"
        details:
          aarch64:
            operands:
              -
                type: AARCH64_OP_REG
                access: CS_AC_WRITE
              -
                type: AARCH64_OP_REG
                access: CS_AC_READ
              -
                type: AARCH64_OP_SYSIMM
                sub_type: AARCH64_OP_EXACTFPIMM
                sys_raw_val: 0
  -
    input:
      name: "issue 2419"
      bytes: [ 0x12,0xbf,0xff,0xff ]
      arch: "CS_ARCH_SPARC"
      options: [ CS_MODE_BIG_ENDIAN, CS_OPT_DETAIL ]
      address: 0x0
    expected:
      insns:
      -
        asm_text: "bne -4"
        details:
          sparc:
            cc: SPARC_CC_ICC_NE
