| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0x5 | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (addc SI rn imm12 cbit))
  (if (eq f-rd 15)
      (sequence
        ()
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr)))
        (set pc result))
      (sequence
        ()
        (if set-cc?
            (sequence
              ((SI result))
              (set result (addc SI rn imm12 cbit))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit (add-cflag SI rn imm12 cbit))
              (set vbit (add-oflag SI rn imm12 cbit))))
        (set rd result))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x5 | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (addc SI rn operand2 cbit))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result (addc SI temp-op1 temp-op2 cbit))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit (add-cflag SI temp-op1 temp-op2 cbit))
              (set vbit (add-oflag SI temp-op1 temp-op2 cbit)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x5 | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (addc SI rn operand2 cbit))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result (addc SI temp-op1 temp-op2 cbit))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit (add-cflag SI temp-op1 temp-op2 cbit))
              (set vbit (add-oflag SI temp-op1 temp-op2 cbit)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0x4 | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (add SI rn imm12))
  (if (eq f-rd 15)
      (sequence
        ()
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr)))
        (set pc result))
      (sequence
        ()
        (if set-cc?
            (sequence
              ((SI result))
              (set result (addc SI rn imm12 0))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit (add-cflag SI rn imm12 0))
              (set vbit (add-oflag SI rn imm12 0))))
        (set rd result))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x4 | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (add SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result (addc SI temp-op1 temp-op2 0))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit (add-cflag SI temp-op1 temp-op2 0))
              (set vbit (add-oflag SI temp-op1 temp-op2 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x4 | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (add SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result (addc SI temp-op1 temp-op2 0))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit (add-cflag SI temp-op1 temp-op2 0))
              (set vbit (add-oflag SI temp-op1 temp-op2 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0x0 | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (and SI rn imm12))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (set zbit (eq result 0))
              (set nbit (lt result 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x0 | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm
         cbit))
  (set result (and SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x0 | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg
         cbit))
  (set result (and SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 25 | 24 | 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-branch-link? | f-offset24 | 
| cond | 0x5 | 0x0 | offset24 | 
(set pc offset24)
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0xe | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (and SI rn (inv UINT imm12)))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (set zbit (eq result 0))
              (set nbit (lt result 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xe | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm
         cbit))
  (set result (and SI rn (inv SI operand2)))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xe | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg
         cbit))
  (set result (and SI rn (inv SI operand2)))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 25 | 24 | 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-branch-link? | f-offset24 | 
| cond | 0x5 | 0x1 | offset24 | 
(sequence
  ()
  (set (reg SI h-gr 14)
       (and USI (add USI pc 4) -4))
  (set pc offset24))
| 31 30 29 28 | 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op24 | f-bx-rn | 
| cond | 0x12fff1 | bx-rn | 
(sequence () (set pc (and SI bx-rn 4294967294)) (if (and SI bx-rn 1) (set (reg BI h-tbit) 1)))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0xb | 0x1 | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (addc SI rn imm12 0))
  (sequence
    ()
    (set zbit (eq result 0))
    (set nbit (lt result 0)))
  (set cbit (add-cflag SI rn imm12 0))
  (set vbit (add-oflag SI rn imm12 0)))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xb | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (if (eq f-rd 15)
      (set (reg SI h-cpsr) (reg SI h-spsr))
      (sequence
        ((SI result))
        (set result (addc SI rn operand2 0))
        (sequence
          ()
          (set zbit (eq result 0))
          (set nbit (lt result 0)))
        (set cbit (add-cflag SI rn operand2 0))
        (set vbit (add-oflag SI rn operand2 0)))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xb | 0x1 | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (if (eq f-rd 15)
      (set (reg SI h-cpsr) (reg SI h-spsr))
      (sequence
        ((SI result))
        (set result (addc SI rn operand2 0))
        (sequence
          ()
          (set zbit (eq result 0))
          (set nbit (lt result 0)))
        (set cbit (add-cflag SI rn operand2 0))
        (set vbit (add-oflag SI rn operand2 0)))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0xa | 0x1 | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (subc SI rn imm12 0))
  (sequence
    ()
    (set zbit (eq result 0))
    (set nbit (lt result 0)))
  (set cbit (not BI (sub-cflag SI rn imm12 0)))
  (set vbit (sub-oflag SI rn imm12 0)))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xa | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (if (eq f-rd 15)
      (set (reg SI h-cpsr) (reg SI h-spsr))
      (sequence
        ((SI result))
        (set result (subc SI rn operand2 0))
        (sequence
          ()
          (set zbit (eq result 0))
          (set nbit (lt result 0)))
        (set cbit (not BI (sub-cflag SI rn operand2 0)))
        (set vbit (sub-oflag SI rn operand2 0)))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xa | 0x1 | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (if (eq f-rd 15)
      (set (reg SI h-cpsr) (reg SI h-spsr))
      (sequence
        ((SI result))
        (set result (subc SI rn operand2 0))
        (sequence
          ()
          (set zbit (eq result 0))
          (set nbit (lt result 0)))
        (set cbit (not BI (sub-cflag SI rn operand2 0)))
        (set vbit (sub-oflag SI rn operand2 0)))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0x1 | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (xor SI rn imm12))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (set zbit (eq result 0))
              (set nbit (lt result 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x1 | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm
         cbit))
  (set result (xor SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x1 | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg
         cbit))
  (set result (xor SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x0 | 0x0 | 0x0 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set pc (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set (reg WI h-gr 14) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set (reg WI h-gr 13) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set (reg WI h-gr 12) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set (reg WI h-gr 11) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set (reg WI h-gr 10) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set (reg WI h-gr 9) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set (reg WI h-gr 8) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (reg WI h-gr 7) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (reg WI h-gr 6) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (reg WI h-gr 5) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (reg WI h-gr 4) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (reg WI h-gr 3) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (reg WI h-gr 2) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (reg WI h-gr 1) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (reg WI h-gr 0) (mem WI addr))
        (set addr (sub SI addr 4)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x0 | 0x1 | 0x0 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set pc (mem WI addr))
        (set addr (sub SI addr 4))
        (set (reg SI h-cpsr) (reg SI h-spsr))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 14) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 14 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 13) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 13 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 12) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 12 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 11) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 11 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 10) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 10 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 9) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 9 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 8) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 8 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (reg WI h-gr 7) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (reg WI h-gr 6) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (reg WI h-gr 5) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (reg WI h-gr 4) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (reg WI h-gr 3) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (reg WI h-gr 2) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (reg WI h-gr 1) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (reg WI h-gr 0) (mem WI addr))
        (set addr (sub SI addr 4)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x0 | 0x1 | 0x1 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set pc (mem WI addr))
        (set addr (sub SI addr 4))
        (set (reg SI h-cpsr) (reg SI h-spsr))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 14) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 14 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 13) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 13 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 12) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 12 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 11) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 11 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 10) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 10 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 9) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 9 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 8) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 8 8))
                 (mem WI addr)))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (reg WI h-gr 7) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (reg WI h-gr 6) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (reg WI h-gr 5) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (reg WI h-gr 4) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (reg WI h-gr 3) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (reg WI h-gr 2) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (reg WI h-gr 1) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (reg WI h-gr 0) (mem WI addr))
        (set addr (sub SI addr 4))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x0 | 0x0 | 0x1 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set pc (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set (reg WI h-gr 14) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set (reg WI h-gr 13) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set (reg WI h-gr 12) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set (reg WI h-gr 11) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set (reg WI h-gr 10) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set (reg WI h-gr 9) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set (reg WI h-gr 8) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (reg WI h-gr 7) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (reg WI h-gr 6) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (reg WI h-gr 5) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (reg WI h-gr 4) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (reg WI h-gr 3) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (reg WI h-gr 2) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (reg WI h-gr 1) (mem WI addr))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (reg WI h-gr 0) (mem WI addr))
        (set addr (sub SI addr 4))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set pc (mem WI addr))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 14) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 13) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 12) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 11) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 10) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 9) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 8) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 7) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 6) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 5) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 4) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 3) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 2) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 1) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 0) (mem WI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set pc (mem WI addr))
        (set (reg SI h-cpsr) (reg SI h-spsr))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 14) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 14 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 13) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 13 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 12) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 12 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 11) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 11 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 10) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 10 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 9) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 9 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 8) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 8 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 7) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 6) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 5) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 4) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 3) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 2) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 1) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 0) (mem WI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set pc (mem WI addr))
        (set (reg SI h-cpsr) (reg SI h-spsr))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 14) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 14 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 13) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 13 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 12) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 12 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 11) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 11 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 10) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 10 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 9) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 9 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 8) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 8 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 7) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 6) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 5) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 4) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 3) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 2) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 1) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 0) (mem WI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set pc (mem WI addr))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 14) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 13) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 12) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 11) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 10) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 9) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 8) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 7) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 6) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 5) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 4) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 3) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 2) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 1) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (reg WI h-gr 0) (mem WI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (reg WI h-gr 0) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (reg WI h-gr 1) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (reg WI h-gr 2) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (reg WI h-gr 3) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (reg WI h-gr 4) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (reg WI h-gr 5) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (reg WI h-gr 6) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (reg WI h-gr 7) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set (reg WI h-gr 8) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set (reg WI h-gr 9) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set (reg WI h-gr 10) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set (reg WI h-gr 11) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set (reg WI h-gr 12) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set (reg WI h-gr 13) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set (reg WI h-gr 14) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set pc (mem WI addr))
        (set addr (add SI addr 4)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (reg WI h-gr 0) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (reg WI h-gr 1) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (reg WI h-gr 2) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (reg WI h-gr 3) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (reg WI h-gr 4) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (reg WI h-gr 5) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (reg WI h-gr 6) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (reg WI h-gr 7) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 8) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 8 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 9) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 9 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 10) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 10 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 11) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 11 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 12) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 12 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 13) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 13 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 14) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 14 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set pc (mem WI addr))
        (set addr (add SI addr 4))
        (set (reg SI h-cpsr) (reg SI h-spsr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (reg WI h-gr 0) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (reg WI h-gr 1) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (reg WI h-gr 2) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (reg WI h-gr 3) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (reg WI h-gr 4) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (reg WI h-gr 5) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (reg WI h-gr 6) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (reg WI h-gr 7) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 8) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 8 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 9) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 9 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 10) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 10 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 11) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 11 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 12) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 12 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 13) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 13 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 14) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 14 8))
                 (mem WI addr)))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set pc (mem WI addr))
        (set addr (add SI addr 4))
        (set (reg SI h-cpsr) (reg SI h-spsr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (reg WI h-gr 0) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (reg WI h-gr 1) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (reg WI h-gr 2) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (reg WI h-gr 3) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (reg WI h-gr 4) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (reg WI h-gr 5) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (reg WI h-gr 6) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (reg WI h-gr 7) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set (reg WI h-gr 8) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set (reg WI h-gr 9) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set (reg WI h-gr 10) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set (reg WI h-gr 11) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set (reg WI h-gr 12) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set (reg WI h-gr 13) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set (reg WI h-gr 14) (mem WI addr))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set pc (mem WI addr))
        (set addr (add SI addr 4))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 0) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 1) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 2) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 3) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 4) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 5) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 6) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 7) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 8) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 9) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 10) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 11) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 12) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 13) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 14) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set pc (mem WI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 0) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 1) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 2) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 3) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 4) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 5) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 6) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 7) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 8) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 8 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 9) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 9 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 10) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 10 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 11) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 11 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 12) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 12 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 13) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 13 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 14) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 14 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set pc (mem WI addr))
        (set (reg SI h-cpsr) (reg SI h-spsr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 0) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 1) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 2) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 3) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 4) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 5) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 6) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 7) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 8) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 8 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 9) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 9 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 10) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 10 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 11) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 11 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 12) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 12 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 13) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 13 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (reg WI h-gr 14) (mem WI addr))
            (set (reg WI h-gr-usr (sub INT 14 8))
                 (mem WI addr)))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set pc (mem WI addr))
        (set (reg SI h-cpsr) (reg SI h-spsr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 0) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 1) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 2) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 3) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 4) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 5) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 6) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 7) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 8) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 9) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 10) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 11) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 12) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 13) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (reg WI h-gr 14) (mem WI addr))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set pc (mem WI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | 0x1 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr))))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr))))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr))))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr))))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (mem SI addr))
      (set rd (mem SI addr)))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | 0x1 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr)))))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr)))))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr)))))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr)))))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | rn | rd | uimm12 | 
(sequence
  ((SI addr) (SI offset))
  (set offset uimm12)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem QI addr)))
      (set rd (zext SI (mem QI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x0 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (zext SI (mem HI addr)))
      (set rd (zext SI (mem HI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x0 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x1 | 0x0 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x1 | 0x0 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x1 | 0x0 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | rn | rd | 0x1 | 0x1 | 0x0 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x1 | 0x0 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | rn | rd | 0x1 | 0x1 | 0x0 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem QI addr)))
      (set rd (ext SI (mem QI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x0 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x1 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr))))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x1 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr rn)
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr))))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x1 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | rn | rd | 0x1 | 0x1 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (sub SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | rn | rd | 0x1 | 0x1 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | rn | rd | 0x1 | 0x1 | 0x1 | 0x1 | hdt-offset8 | 
(sequence
  ((SI addr) (SI offset))
  (set offset hdt-offset8)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | rn | rd | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset rm)
  (set addr (add SI rn offset))
  (if (eq f-rd 15)
      (set pc (ext SI (mem HI addr)))
      (set rd (ext SI (mem HI addr))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 24 23 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op6 | f-acc? | f-set-cc? | f-mul-rd | f-mul-rn | f-rs | f-op-mul | f-rm | 
| cond | 0x0 | 0x1 | set-cc? | mul-rd | mul-rn | rs | 0x9 | rm | 
(sequence
  ((WI result))
  (set mul-rd (add SI (mul SI rm rs) mul-rn))
  (if set-cc?
      (sequence
        ()
        (set zbit (eq result 0))
        (set nbit (lt result 0)))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0xd | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result imm12)
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (set zbit (eq result 0))
              (set nbit (lt result 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xd | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm
         cbit))
  (set result operand2)
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xd | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg
         cbit))
  (set result operand2)
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 20 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op5 | f-psr | f-op-mrs1 | f-rd | f-op-mrs2 | 
| cond | 0x2 | 0x0 | 0xf | rd | 0x0 | 
(set rd (reg SI h-cpsr))
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 20 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op5 | f-psr | f-op-mrs1 | f-rd | f-op-mrs2 | 
| cond | 0x2 | 0x1 | 0xf | rd | 0x0 | 
(set rd (reg SI h-spsr))
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 20 19 18 17 16 15 14 13 12 | 11 10 9 8 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op5 | f-psr | f-op-msr1 | f-op-msr2 | f-rm | 
| cond | 0x2 | 0x0 | 0x29f | 0x0 | rm | 
(set (reg SI h-cpsr) rm)
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 20 19 18 17 16 15 14 13 12 | 11 10 9 8 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op5 | f-psr | f-op-msr1 | f-op-msr2 | f-rm | 
| cond | 0x2 | 0x1 | 0x29f | 0x0 | rm | 
(set (reg SI h-spsr) rm)
| 31 30 29 28 | 27 26 25 24 23 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op6 | f-acc? | f-set-cc? | f-mul-rd | f-mul-rn | f-rs | f-op-mul | f-rm | 
| cond | 0x0 | 0x0 | set-cc? | mul-rd | mul-rn | rs | 0x9 | rm | 
(sequence
  ((WI result))
  (set result (mul SI rm rs))
  (set mul-rd result)
  (if set-cc?
      (sequence
        ()
        (set zbit (eq result 0))
        (set nbit (lt result 0)))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0xf | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (inv UINT imm12))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (set zbit (eq result 0))
              (set nbit (lt result 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xf | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm
         cbit))
  (set result (inv SI operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xf | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg
         cbit))
  (set result (inv SI operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0xc | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (or SI rn imm12))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (set zbit (eq result 0))
              (set nbit (lt result 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xc | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm
         cbit))
  (set result (or SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0xc | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg
         cbit))
  (set result (or SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ()
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit carry-out))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0x3 | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (sub UINT imm12 rn))
  (if (eq f-rd 15)
      (sequence
        ()
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr)))
        (set pc result))
      (sequence
        ()
        (if set-cc?
            (sequence
              ((SI result))
              (set result (subc UINT imm12 rn 0))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit (not BI (sub-cflag UINT imm12 rn 0)))
              (set vbit (sub-oflag UINT imm12 rn 0))))
        (set rd result))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x3 | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (sub SI operand2 rn))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result (subc SI temp-op2 temp-op1 0))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI (sub-cflag SI temp-op2 temp-op1 0)))
              (set vbit (sub-oflag SI temp-op2 temp-op1 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x3 | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (sub SI operand2 rn))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result (subc SI temp-op2 temp-op1 0))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI (sub-cflag SI temp-op2 temp-op1 0)))
              (set vbit (sub-oflag SI temp-op2 temp-op1 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0x7 | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (subc UINT imm12 rn (not BI cbit)))
  (if (eq f-rd 15)
      (sequence
        ()
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr)))
        (set pc result))
      (sequence
        ()
        (if set-cc?
            (sequence
              ((SI result))
              (set result (subc UINT imm12 rn (not BI cbit)))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI (sub-cflag UINT imm12 rn (not BI cbit))))
              (set vbit
                   (sub-oflag UINT imm12 rn (not BI cbit)))))
        (set rd result))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x7 | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (subc SI operand2 rn (not BI cbit)))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result
                   (subc SI temp-op2 temp-op1 (not BI cbit)))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI
                        (sub-cflag SI temp-op2 temp-op1 (not BI cbit))))
              (set vbit
                   (sub-oflag SI temp-op2 temp-op1 (not BI cbit))))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x7 | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (subc SI operand2 rn (not BI cbit)))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result
                   (subc SI temp-op2 temp-op1 (not BI cbit)))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI
                        (sub-cflag SI temp-op2 temp-op1 (not BI cbit))))
              (set vbit
                   (sub-oflag SI temp-op2 temp-op1 (not BI cbit))))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0x6 | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (subc SI rn imm12 (not BI cbit)))
  (if (eq f-rd 15)
      (sequence
        ()
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr)))
        (set pc result))
      (sequence
        ()
        (if set-cc?
            (sequence
              ((SI result))
              (set result (subc SI rn imm12 (not BI cbit)))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI (sub-cflag SI rn imm12 (not BI cbit))))
              (set vbit (sub-oflag SI rn imm12 (not BI cbit)))))
        (set rd result))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x6 | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (subc SI rn operand2 (not BI cbit)))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result
                   (subc SI temp-op1 temp-op2 (not BI cbit)))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI
                        (sub-cflag SI temp-op1 temp-op2 (not BI cbit))))
              (set vbit
                   (sub-oflag SI temp-op1 temp-op2 (not BI cbit))))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x6 | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (subc SI rn operand2 (not BI cbit)))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result
                   (subc SI temp-op1 temp-op2 (not BI cbit)))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI
                        (sub-cflag SI temp-op1 temp-op2 (not BI cbit))))
              (set vbit
                   (sub-oflag SI temp-op1 temp-op2 (not BI cbit))))))))
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op5 | f-unsigned? | f-acc? | f-set-cc? | f-rdhi | f-rdlo | f-rs | f-op-mul | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | set-cc? | rdhi | rdlo | rs | 0x9 | rm | 
(sequence
  ((DI mul-result) (SI hi) (SI lo))
  (set mul-result (join DI SI rdhi rdlo))
  (set mul-result
       (add DI
            (mul DI (ext DI rs) (ext DI rm))
            mul-result))
  (set rdhi (subword SI mul-result 0))
  (set rdlo (subword SI mul-result 1))
  (if set-cc?
      (sequence
        ()
        (set zbit (eq mul-result 0))
        (set nbit (lt mul-result 0)))))
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op5 | f-unsigned? | f-acc? | f-set-cc? | f-rdhi | f-rdlo | f-rs | f-op-mul | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | set-cc? | rdhi | rdlo | rs | 0x9 | rm | 
(sequence
  ((DI mul-result) (SI hi) (SI lo))
  (set mul-result (mul DI (ext DI rs) (ext DI rm)))
  (set rdhi (subword SI mul-result 0))
  (set rdlo (subword SI mul-result 1))
  (if set-cc?
      (sequence
        ()
        (set zbit (eq mul-result 0))
        (set nbit (lt mul-result 0)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 14))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 13))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 12))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 11))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 10))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 9))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 8))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 7))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 6))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 5))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 4))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 3))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 2))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 1))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 0))
        (set addr (sub SI addr 4)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 14))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 14 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 13))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 13 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 12))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 12 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 11))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 11 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 10))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 10 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 9))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 9 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 8))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 8 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 7))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 6))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 5))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 4))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 3))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 2))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 1))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 0))
        (set addr (sub SI addr 4)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x0 | 0x1 | 0x1 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 14))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 14 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 13))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 13 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 12))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 12 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 11))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 11 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 10))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 10 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 9))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 9 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 8))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 8 8))))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 7))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 6))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 5))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 4))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 3))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 2))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 1))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 0))
        (set addr (sub SI addr 4))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x0 | 0x0 | 0x1 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 14))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 13))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 12))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 11))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 10))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 9))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 8))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 7))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 6))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 5))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 4))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 3))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 2))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 1))
        (set addr (sub SI addr 4))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 0))
        (set addr (sub SI addr 4))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 14))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 13))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 12))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 11))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 10))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 9))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 8))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 7))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 6))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 5))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 3))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 2))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 1))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 0)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 14))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 14 8))))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 13))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 13 8))))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 12))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 12 8))))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 11))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 11 8))))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 10))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 10 8))))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 9))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 9 8))))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 8))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 8 8))))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 7))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 6))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 5))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 3))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 2))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 1))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 0)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 14))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 14 8))))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 13))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 13 8))))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 12))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 12 8))))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 11))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 11 8))))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 10))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 10 8))))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 9))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 9 8))))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 8))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 8 8))))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 7))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 6))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 5))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 3))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 2))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 1))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 0))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 14))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 13))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 12))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 11))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 10))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 9))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 8))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 7))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 6))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 5))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 3))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 2))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 1))))
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (sub SI addr 4))
        (set (mem WI addr) (reg WI h-gr 0))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 0))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 1))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 2))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 3))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 4))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 5))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 6))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 7))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 8))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 9))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 10))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 11))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 12))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 13))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 14))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))
        (set addr (add SI addr 4)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 0))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 1))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 2))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 3))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 4))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 5))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 6))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 7))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 8))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 8 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 9))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 9 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 10))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 10 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 11))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 11 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 12))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 12 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 13))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 13 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 14))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 14 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))
        (set addr (add SI addr 4)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x1 | 0x1 | 0x1 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 0))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 1))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 2))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 3))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 4))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 5))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 6))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 7))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 8))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 8 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 9))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 9 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 10))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 10 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 11))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 11 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 12))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 12 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 13))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 13 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 14))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 14 8))))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))
        (set addr (add SI addr 4))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x0 | 0x1 | 0x0 | 0x1 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 0))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 1))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 2))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 3))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 4))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 5))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 6))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 7))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 8))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 9))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 10))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 11))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 12))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 13))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set (mem WI addr) (reg WI h-gr 14))
        (set addr (add SI addr 4))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))
        (set addr (add SI addr 4))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 0))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 1))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 2))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 3))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 5))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 6))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 7))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 8))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 9))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 10))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 11))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 12))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 13))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 14))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 0))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 1))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 2))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 3))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 5))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 6))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 7))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 8))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 8 8))))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 9))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 9 8))))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 10))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 10 8))))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 11))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 11 8))))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 12))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 12 8))))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 13))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 13 8))))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 14))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 14 8))))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4)))))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 0))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 1))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 2))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 3))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 5))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 6))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 7))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 8))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 8 8))))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 9))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 9 8))))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 10))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 10 8))))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 11))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 11 8))))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 12))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 12 8))))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 13))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 13 8))))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (add SI addr 4))
        (if (and UINT reglist (sll INT 1 15))
            (set (mem WI addr) (reg WI h-gr 14))
            (set (mem WI addr)
                 (reg WI h-gr-usr (sub INT 14 8))))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-load-psr? | f-write-back? | f-load? | f-rn | f-reg-list | 
| cond | 0x4 | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | rn | reglist | 
(sequence
  ((WI addr))
  (set addr rn)
  (if (and UINT reglist (sll INT 1 0))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 0))))
  (if (and UINT reglist (sll INT 1 1))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 1))))
  (if (and UINT reglist (sll INT 1 2))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 2))))
  (if (and UINT reglist (sll INT 1 3))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 3))))
  (if (and UINT reglist (sll INT 1 4))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 4))))
  (if (and UINT reglist (sll INT 1 5))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 5))))
  (if (and UINT reglist (sll INT 1 6))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 6))))
  (if (and UINT reglist (sll INT 1 7))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 7))))
  (if (and UINT reglist (sll INT 1 8))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 8))))
  (if (and UINT reglist (sll INT 1 9))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 9))))
  (if (and UINT reglist (sll INT 1 10))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 10))))
  (if (and UINT reglist (sll INT 1 11))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 11))))
  (if (and UINT reglist (sll INT 1 12))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 12))))
  (if (and UINT reglist (sll INT 1 13))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 13))))
  (if (and UINT reglist (sll INT 1 14))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (reg WI h-gr 14))))
  (if (and UINT reglist (sll INT 1 15))
      (sequence
        ()
        (set addr (add SI addr 4))
        (set (mem WI addr) (add WI (reg WI h-gr 15) 4))))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr rn) (set (mem SI addr) rd) (set addr (sub SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | 0x1 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr rn) (set (mem SI addr) rd) (set addr (sub SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (set (mem SI addr) rd)
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (set (mem SI addr) rd)
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr rn) (set (mem SI addr) rd) (set addr (add SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | 0x1 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr rn) (set (mem SI addr) rd) (set addr (add SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (set (mem SI addr) rd)
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (set (mem SI addr) rd)
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr (sub SI rn offset)) (set (mem SI addr) rd))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (sub SI rn offset))
  (set (mem SI addr) rd))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr (sub SI rn offset)) (set (mem SI addr) rd) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (sub SI rn offset))
  (set (mem SI addr) rd)
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr (add SI rn offset)) (set (mem SI addr) rd))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (add SI rn offset))
  (set (mem SI addr) rd))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr (add SI rn offset)) (set (mem SI addr) rd) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (add SI rn offset))
  (set (mem SI addr) rd)
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr rn) (set (mem QI addr) (trunc QI rd)) (set addr (sub SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | 0x1 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr rn) (set (mem QI addr) (trunc QI rd)) (set addr (sub SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (set (mem QI addr) (trunc QI rd))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (set (mem QI addr) (trunc QI rd))
  (set addr (sub SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr rn) (set (mem QI addr) (trunc QI rd)) (set addr (add SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | 0x1 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr rn) (set (mem QI addr) (trunc QI rd)) (set addr (add SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (set (mem QI addr) (trunc QI rd))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr rn)
  (set (mem QI addr) (trunc QI rd))
  (set addr (add SI rn offset))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr (sub SI rn offset)) (set (mem QI addr) (trunc QI rd)))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (sub SI rn offset))
  (set (mem QI addr) (trunc QI rd)))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr (sub SI rn offset)) (set (mem QI addr) (trunc QI rd)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (sub SI rn offset))
  (set (mem QI addr) (trunc QI rd))
  (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr (add SI rn offset)) (set (mem QI addr) (trunc QI rd)))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (add SI rn offset))
  (set (mem QI addr) (trunc QI rd)))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-uimm12 | 
| cond | 0x1 | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | rn | rd | uimm12 | 
(sequence ((SI addr) (SI offset)) (set offset uimm12) (set addr (add SI rn offset)) (set (mem QI addr) (trunc QI rd)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-preindex? | f-up-down | f-byte-qty? | f-write-back? | f-load? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI addr) (SI offset))
  (set offset
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set addr (add SI rn offset))
  (set (mem QI addr) (trunc QI rd))
  (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence ((SI addr) (SI offset)) (set offset hdt-offset8) (set addr rn) (set (mem HI addr) (trunc HI rd)) (set addr (sub SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | 0x0 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence ((SI addr) (SI offset)) (set offset rm) (set addr rn) (set (mem HI addr) (trunc HI rd)) (set addr (sub SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence ((SI addr) (SI offset)) (set offset hdt-offset8) (set addr rn) (set (mem HI addr) (trunc HI rd)) (set addr (add SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence ((SI addr) (SI offset)) (set offset rm) (set addr rn) (set (mem HI addr) (trunc HI rd)) (set addr (add SI rn offset)) (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence ((SI addr) (SI offset)) (set offset hdt-offset8) (set addr (sub SI rn offset)) (set (mem HI addr) (trunc HI rd)))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence ((SI addr) (SI offset)) (set offset rm) (set addr (sub SI rn offset)) (set (mem HI addr) (trunc HI rd)))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | 0x0 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence ((SI addr) (SI offset)) (set offset hdt-offset8) (set addr (sub SI rn offset)) (set (mem HI addr) (trunc HI rd)) (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence ((SI addr) (SI offset)) (set offset rm) (set addr (sub SI rn offset)) (set (mem HI addr) (trunc HI rd)) (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x1 | 0x1 | 0x0 | 0x0 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence ((SI addr) (SI offset)) (set offset hdt-offset8) (set addr (add SI rn offset)) (set (mem HI addr) (trunc HI rd)))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x1 | 0x0 | 0x0 | 0x0 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence ((SI addr) (SI offset)) (set offset rm) (set addr (add SI rn offset)) (set (mem HI addr) (trunc HI rd)))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 | 10 | 9 | 8 | 7 6 5 4 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-hdt-offset8 | 
| cond | 0x0 | 0x1 | 0x1 | 0x1 | 0x1 | 0x0 | rn | rd | 0x1 | 0x0 | 0x1 | 0x1 | hdt-offset8 | 
(sequence ((SI addr) (SI offset)) (set offset hdt-offset8) (set addr (add SI rn offset)) (set (mem HI addr) (trunc HI rd)) (set rn addr))
| 31 30 29 28 | 27 26 25 | 24 | 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 | 5 | 4 | 3 2 1 0 | 
| f-cond | f-op3 | f-preindex? | f-up-down | f-bit22 | f-write-back? | f-load? | f-rn | f-rd | f-offset4-hi | f-bit7 | f-signed? | f-halfword? | f-bit4 | f-rm | 
| cond | 0x0 | 0x1 | 0x1 | 0x0 | 0x1 | 0x0 | rn | rd | 0x0 | 0x1 | 0x0 | 0x1 | 0x1 | rm | 
(sequence ((SI addr) (SI offset)) (set offset rm) (set addr (add SI rn offset)) (set (mem HI addr) (trunc HI rd)) (set rn addr))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-imm12 | 
| cond | 0x0 | 0x1 | 0x2 | set-cc? | rn | rd | imm12 | 
(sequence
  ((SI result))
  (set result (sub SI rn imm12))
  (if (eq f-rd 15)
      (sequence
        ()
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr)))
        (set pc result))
      (sequence
        ()
        (if set-cc?
            (sequence
              ((SI result))
              (set result (subc SI rn imm12 0))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit (not BI (sub-cflag SI rn imm12 0)))
              (set vbit (sub-oflag SI rn imm12 0))))
        (set rd result))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x2 | set-cc? | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (sub SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result (subc SI temp-op1 temp-op2 0))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI (sub-cflag SI temp-op1 temp-op2 0)))
              (set vbit (sub-oflag SI temp-op1 temp-op2 0)))))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x2 | set-cc? | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2)
   (SI result)
   (SI temp-op1)
   (SI temp-op2))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set temp-op1 rn)
  (set temp-op2 operand2)
  (set result (sub SI rn operand2))
  (if (eq f-rd 15)
      (sequence
        ()
        (set pc result)
        (if set-cc?
            (set (reg SI h-cpsr) (reg SI h-spsr))))
      (sequence
        ()
        (set rd result)
        (if set-cc?
            (sequence
              ((SI result))
              (set result (subc SI temp-op1 temp-op2 0))
              (sequence
                ()
                (set zbit (eq result 0))
                (set nbit (lt result 0)))
              (set cbit
                   (not BI (sub-cflag SI temp-op1 temp-op2 0)))
              (set vbit (sub-oflag SI temp-op1 temp-op2 0)))))))
| 31 30 29 28 | 27 26 25 24 | 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op4 | f-swi-comment | 
| cond | 0xf | swi-comment | 
(set pc (c-call SI "arm_swi" pc swi-comment))
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op5 | f-byte-qty? | f-op-swap1 | f-rn | f-rd | f-op-swap2 | f-rm | 
| cond | 0x2 | 0x0 | 0x0 | rn | rd | 0x9 | rm | 
(sequence ((WI temp)) (set temp (mem WI rn)) (set (mem WI rn) rm) (set rd temp))
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op5 | f-byte-qty? | f-op-swap1 | f-rn | f-rd | f-op-swap2 | f-rm | 
| cond | 0x2 | 0x1 | 0x0 | rn | rd | 0x9 | rm | 
(sequence ((WI temp)) (set temp (mem QI rn)) (set (mem QI rn) rm) (set rd temp))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-ror-imm8 | 
| cond | 0x0 | 0x1 | 0x9 | 0x1 | rn | rd | ror-imm8 | 
(sequence
  ((BI carry-out))
  (if (eq f-ror-imm8-rotate 0)
      (set carry-out cbit)
      (set carry-out (lt ror-imm8 0)))
  (sequence
    ()
    (sequence
      ()
      (set zbit (eq (xor SI rn ror-imm8) 0))
      (set nbit (lt (xor SI rn ror-imm8) 0)))
    (set cbit carry-out)))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x9 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm
         cbit))
  (set result (xor SI rn operand2))
  (if (eq f-rd 15)
      (set (reg SI h-cpsr) (reg SI h-spsr))
      (sequence
        ()
        (sequence
          ()
          (set zbit (eq result 0))
          (set nbit (lt result 0)))
        (set cbit carry-out))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x9 | 0x1 | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg
         cbit))
  (set result (xor SI rn operand2))
  (if (eq f-rd 15)
      (set (reg SI h-cpsr) (reg SI h-spsr))
      (sequence
        ()
        (sequence
          ()
          (set zbit (eq result 0))
          (set nbit (lt result 0)))
        (set cbit carry-out))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-ror-imm8 | 
| cond | 0x0 | 0x1 | 0x8 | 0x1 | rn | rd | ror-imm8 | 
(sequence
  ((BI carry-out))
  (if (eq f-ror-imm8-rotate 0)
      (set carry-out cbit)
      (set carry-out (lt ror-imm8 0)))
  (sequence
    ()
    (sequence
      ()
      (set zbit (eq (and SI rn ror-imm8) 0))
      (set nbit (lt (and SI rn ror-imm8) 0)))
    (set cbit carry-out)))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftimm | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x8 | 0x1 | rn | rd | operand2-shiftimm | operand2-shifttype | 0x0 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_immshift"
         rm
         operand2-shifttype
         operand2-shiftimm
         cbit))
  (set result (and SI rn operand2))
  (if (eq f-rd 15)
      (set (reg SI h-cpsr) (reg SI h-spsr))
      (sequence
        ()
        (sequence
          ()
          (set zbit (eq result 0))
          (set nbit (lt result 0)))
        (set cbit carry-out))))
| 31 30 29 28 | 27 26 | 25 | 24 23 22 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 | 6 5 | 4 | 3 2 1 0 | 
| f-cond | f-op2 | f-imm? | f-op-alu | f-set-cc? | f-rn | f-rd | f-operand2-shiftreg | f-bit7 | f-operand2-shifttype | f-operand2-reg? | f-rm | 
| cond | 0x0 | 0x0 | 0x8 | 0x1 | rn | rd | operand2-shiftreg | 0x0 | operand2-shifttype | 0x1 | rm | 
(sequence
  ((SI operand2) (BI carry-out) (SI result))
  (set operand2
       (c-call
         SI
         "compute_operand2_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg))
  (set carry-out
       (c-call
         BI
         "compute_carry_out_regshift"
         rm
         operand2-shifttype
         operand2-shiftreg
         cbit))
  (set result (and SI rn operand2))
  (if (eq f-rd 15)
      (set (reg SI h-cpsr) (reg SI h-spsr))
      (sequence
        ()
        (sequence
          ()
          (set zbit (eq result 0))
          (set nbit (lt result 0)))
        (set cbit carry-out))))
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op5 | f-unsigned? | f-acc? | f-set-cc? | f-rdhi | f-rdlo | f-rs | f-op-mul | f-rm | 
| cond | 0x1 | 0x0 | 0x1 | set-cc? | rdhi | rdlo | rs | 0x9 | rm | 
(sequence
  ((DI mul-result) (SI hi) (SI lo))
  (set mul-result (join DI SI rdhi rdlo))
  (set mul-result
       (add DI
            (mul DI (zext DI rs) (zext DI rm))
            mul-result))
  (set rdhi (subword SI mul-result 0))
  (set rdlo (subword SI mul-result 1))
  (if set-cc?
      (sequence
        ()
        (set zbit (eq mul-result 0))
        (set nbit (lt mul-result 0)))))
| 31 30 29 28 | 27 26 25 24 23 | 22 | 21 | 20 | 19 18 17 16 | 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 | 
| f-cond | f-op5 | f-unsigned? | f-acc? | f-set-cc? | f-rdhi | f-rdlo | f-rs | f-op-mul | f-rm | 
| cond | 0x1 | 0x0 | 0x0 | set-cc? | rdhi | rdlo | rs | 0x9 | rm | 
(sequence
  ((DI mul-result) (SI hi) (SI lo))
  (set mul-result
       (mul DI (zext DI rs) (zext DI rm)))
  (set rdhi (subword SI mul-result 0))
  (set rdlo (subword SI mul-result 1))
  (if set-cc?
      (sequence
        ()
        (set zbit (eq mul-result 0))
        (set nbit (lt mul-result 0)))))
This documentation was machine generated from the cgen cpu description
files for this architecture.
https://sourceware.org/cgen/