static UInt32 parse_operand(long origin_offset, long offset, INTERNAL_OPERAND iop, INSTRUCTION instr, int op_index, INTERNAL_DATA idata, DISMODE mode)
{
UInt32 res = 0;
OPERAND_SIZE opsize = new OPERAND_SIZE();
if (iop.type != TQ_NULL)
{
instr.ops[op_index].flags |= OPERAND_FLAG_PRESENT;
if (iop.size >= sq_handlers.Count())
{
idata.severe_err = ERRS.ERR_INTERNAL;
}
else
{
sq_handlers[iop.size](ref opsize, ref instr, idata, mode);
}
if (iop.size >= tq_handlers.Count())
{
idata.severe_err = ERRS.ERR_INTERNAL;
}
else
{
res = tq_handlers[iop.type](origin_offset, offset, ref instr, op_index, opsize, idata, mode);
}
}
return res;
}