int thumb_root(struct decomp_request *req, struct decomp_result *res);

/* these are the <foo> and <bar> found in the spec's format strings */
enum decomp_field {
	FIELD_UNINIT=0,
	FIELD_A,
	FIELD_APSR_C,
	FIELD_B,
	FIELD_CRd,
	FIELD_CRm,
	FIELD_CRn,
	FIELD_D,
	FIELD_DM,
	FIELD_DN,
	FIELD_Dd,
	FIELD_Dm,
	FIELD_E,
	FIELD_F,
	FIELD_FPSCR,
	FIELD_H,
	FIELD_I,
	FIELD_I1,
	FIELD_InstrSet_ARM,
	FIELD_J1,
	FIELD_K1,
	FIELD_L,
	FIELD_M,
	FIELD_M_check,
	FIELD_N,
	FIELD_NSACR_RFR,
	FIELD_P,
	FIELD_Q,
	FIELD_Qd,
	FIELD_Qm,
	FIELD_R,
	FIELD_RM,
	FIELD_Ra,
	FIELD_Rd,
	FIELD_RdHi,
	FIELD_RdLo,
	FIELD_Rdm,
	FIELD_Rdn,
	FIELD_Rm,
	FIELD_Rm2,
	FIELD_Rm_check,
	FIELD_Rn,
	FIELD_Rt,
	FIELD_Rt2,
	FIELD_Rt_mrc,
	FIELD_S,
	FIELD_T,
	FIELD_U,
	FIELD_Vd,
	FIELD_Vn,
	FIELD_Vm,
	FIELD_Vm_check,
	FIELD_W,
	FIELD_X1,
	FIELD_a,
	FIELD_add,
	FIELD_advsimd,
	FIELD_affectA,
	FIELD_affectF,
	FIELD_affectI,
	FIELD_align,
	FIELD_alignment,
	FIELD_barrier_option,
	FIELD_bytes,
	FIELD_carry,
	FIELD_cc,
	FIELD_changemode,
	FIELD_cmode,
	FIELD_cond,
	FIELD_coproc,
	FIELD_cp,
	FIELD_d,
	FIELD_d2,
	FIELD_d3,
	FIELD_d4,
	FIELD_dHi,
	FIELD_dLo,
	FIELD_dest_unsigned,
	FIELD_disable,
	FIELD_double_to_single,
	FIELD_dp_operation,
	FIELD_dt,
	FIELD_dt_suffix,
	FIELD_ebytes,
	FIELD_elements,
	FIELD_enable,
	FIELD_esize,
	FIELD_fbits,
	FIELD_firstcond,
	FIELD_floating_point,
	FIELD_fmt_idx,
	FIELD_frac_bits,
	FIELD_half_to_single,
	FIELD_i,
	FIELD_im,
	FIELD_imm,
	FIELD_imm10,
	FIELD_imm10H,
	FIELD_imm10L,
	FIELD_imm11,
	FIELD_imm12,
	FIELD_imm16,
	FIELD_imm2,
	FIELD_imm3,
	FIELD_imm32,
	FIELD_imm4,
	FIELD_imm4H,
	FIELD_imm4L,
	FIELD_imm5,
	FIELD_imm6,
	FIELD_imm64l,
	FIELD_imm64h,
	FIELD_imm7,
	FIELD_imm8,
	FIELD_imod,
	FIELD_inc,
	FIELD_increment,
	FIELD_index,
	FIELD_index_align,
	FIELD_is_tbh,
	FIELD_is_vtbl,
	FIELD_iword,
	FIELD_len,
	FIELD_length,
	FIELD_list,
	FIELD_long_destination,
	FIELD_lowbit,
	FIELD_lsbit,
	FIELD_m,
	FIELD_m_high,
	FIELD_m_swap,
	FIELD_mask,
	FIELD_mask0,
	FIELD_mask1,
	FIELD_mode,
	FIELD_msb,
	FIELD_msbit,
	FIELD_n,
	FIELD_n_high,
	FIELD_op,
	FIELD_op1,
	FIELD_op1_neg,
	FIELD_op2,
	FIELD_opc1,
	FIELD_opc2,
	FIELD_opc3,
	FIELD_opcode,
	FIELD_option,
	FIELD_position,
	FIELD_postindex,
	FIELD_quadword_operation,
	FIELD_read_spsr,
	FIELD_register_form,
	FIELD_register_index,
	FIELD_register_list,
	FIELD_registers,
	FIELD_registers_indexed,
	FIELD_regs,
	FIELD_regs_n,
	FIELD_rotate,
	FIELD_rotation,
	FIELD_round,
	FIELD_round_mode,
	FIELD_round_nearest,
	FIELD_round_zero,
	FIELD_SYSm,
	FIELD_sat_imm,
	FIELD_saturate_to,
	FIELD_set_bigend,
	FIELD_setflags,
	FIELD_sf,
	FIELD_sh,
	FIELD_shift_n,
	FIELD_shift_t,
	FIELD_single_regs,
	FIELD_single_register,
	FIELD_size,
	FIELD_size_table,
	FIELD_src_unsigned,
	FIELD_sx,
	FIELD_sz,
	FIELD_t,
	FIELD_t2,
	FIELD_tb,
	FIELD_tbform,
	FIELD_td,
	FIELD_toARM,
	FIELD_to_fixed,
	FIELD_to_integer,
	FIELD_type,
	FIELD_unsigned,
	FIELD_wback,
	FIELD_width,
	FIELD_widthm1,
	FIELD_wordhigher,
	FIELD_write_g,
	FIELD_write_nzcvq,
	FIELD_write_spsr,
	FIELD_x,
	FIELD_MAX
};
