test_cases:
  -
    input:
      bytes: [ 0x00, 0x00, 0x20, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 0]}, p0, [x0, x0]"

  -
    input:
      bytes: [ 0x45, 0x55, 0x35, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w14, 5]}, p5, [x10, x21]"

  -
    input:
      bytes: [ 0xa7, 0x6d, 0x28, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w15, 7]}, p3, [x13, x8]"

  -
    input:
      bytes: [ 0xef, 0x7f, 0x3f, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w15, 15]}, p7, [sp]"

  -
    input:
      bytes: [ 0x25, 0x0e, 0x30, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 5]}, p3, [x17, x16]"

  -
    input:
      bytes: [ 0x21, 0x04, 0x3e, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 1]}, p1, [x1, x30]"

  -
    input:
      bytes: [ 0x68, 0x56, 0x34, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w14, 8]}, p5, [x19, x20]"

  -
    input:
      bytes: [ 0x80, 0x19, 0x22, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 0]}, p6, [x12, x2]"

  -
    input:
      bytes: [ 0x21, 0x48, 0x3a, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w14, 1]}, p2, [x1, x26]"

  -
    input:
      bytes: [ 0xcd, 0x0a, 0x3e, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 13]}, p2, [x22, x30]"

  -
    input:
      bytes: [ 0x22, 0x75, 0x21, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w15, 2]}, p5, [x9, x1]"

  -
    input:
      bytes: [ 0x87, 0x29, 0x2b, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w13, 7]}, p2, [x12, x11]"

  -
    input:
      bytes: [ 0x00, 0x00, 0x20, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 0]}, p0, [x0, x0]"

  -
    input:
      bytes: [ 0x45, 0x55, 0x35, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w14, 5]}, p5, [x10, x21]"

  -
    input:
      bytes: [ 0xa7, 0x6d, 0x28, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w15, 7]}, p3, [x13, x8]"

  -
    input:
      bytes: [ 0xef, 0x7f, 0x3f, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w15, 15]}, p7, [sp]"

  -
    input:
      bytes: [ 0x25, 0x0e, 0x30, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 5]}, p3, [x17, x16]"

  -
    input:
      bytes: [ 0x21, 0x04, 0x3e, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 1]}, p1, [x1, x30]"

  -
    input:
      bytes: [ 0x68, 0x56, 0x34, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w14, 8]}, p5, [x19, x20]"

  -
    input:
      bytes: [ 0x80, 0x19, 0x22, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 0]}, p6, [x12, x2]"

  -
    input:
      bytes: [ 0x21, 0x48, 0x3a, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w14, 1]}, p2, [x1, x26]"

  -
    input:
      bytes: [ 0xcd, 0x0a, 0x3e, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w12, 13]}, p2, [x22, x30]"

  -
    input:
      bytes: [ 0x22, 0x75, 0x21, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w15, 2]}, p5, [x9, x1]"

  -
    input:
      bytes: [ 0x87, 0x29, 0x2b, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0h.b[w13, 7]}, p2, [x12, x11]"

  -
    input:
      bytes: [ 0x00, 0x80, 0x20, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 0]}, p0, [x0, x0]"

  -
    input:
      bytes: [ 0x45, 0xd5, 0x35, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w14, 5]}, p5, [x10, x21]"

  -
    input:
      bytes: [ 0xa7, 0xed, 0x28, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w15, 7]}, p3, [x13, x8]"

  -
    input:
      bytes: [ 0xef, 0xff, 0x3f, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w15, 15]}, p7, [sp]"

  -
    input:
      bytes: [ 0x25, 0x8e, 0x30, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 5]}, p3, [x17, x16]"

  -
    input:
      bytes: [ 0x21, 0x84, 0x3e, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 1]}, p1, [x1, x30]"

  -
    input:
      bytes: [ 0x68, 0xd6, 0x34, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w14, 8]}, p5, [x19, x20]"

  -
    input:
      bytes: [ 0x80, 0x99, 0x22, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 0]}, p6, [x12, x2]"

  -
    input:
      bytes: [ 0x21, 0xc8, 0x3a, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w14, 1]}, p2, [x1, x26]"

  -
    input:
      bytes: [ 0xcd, 0x8a, 0x3e, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 13]}, p2, [x22, x30]"

  -
    input:
      bytes: [ 0x22, 0xf5, 0x21, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w15, 2]}, p5, [x9, x1]"

  -
    input:
      bytes: [ 0x87, 0xa9, 0x2b, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w13, 7]}, p2, [x12, x11]"

  -
    input:
      bytes: [ 0x00, 0x80, 0x20, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 0]}, p0, [x0, x0]"

  -
    input:
      bytes: [ 0x45, 0xd5, 0x35, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w14, 5]}, p5, [x10, x21]"

  -
    input:
      bytes: [ 0xa7, 0xed, 0x28, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w15, 7]}, p3, [x13, x8]"

  -
    input:
      bytes: [ 0xef, 0xff, 0x3f, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w15, 15]}, p7, [sp]"

  -
    input:
      bytes: [ 0x25, 0x8e, 0x30, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 5]}, p3, [x17, x16]"

  -
    input:
      bytes: [ 0x21, 0x84, 0x3e, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 1]}, p1, [x1, x30]"

  -
    input:
      bytes: [ 0x68, 0xd6, 0x34, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w14, 8]}, p5, [x19, x20]"

  -
    input:
      bytes: [ 0x80, 0x99, 0x22, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 0]}, p6, [x12, x2]"

  -
    input:
      bytes: [ 0x21, 0xc8, 0x3a, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w14, 1]}, p2, [x1, x26]"

  -
    input:
      bytes: [ 0xcd, 0x8a, 0x3e, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w12, 13]}, p2, [x22, x30]"

  -
    input:
      bytes: [ 0x22, 0xf5, 0x21, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w15, 2]}, p5, [x9, x1]"

  -
    input:
      bytes: [ 0x87, 0xa9, 0x2b, 0xe0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "st1b {za0v.b[w13, 7]}, p2, [x12, x11]"
