break; case 1: FETCH_DATA (the_info, codep + 1); disp = *(char *)codep++; if (rm != 4)
if (mod != 0 || rm == 6)
OP_E (bytemode)     int bytemode;{  int disp;  int havesib;  int base;  int index;  int scale;  int havebase;    /* skip mod/rm byte */  codep++;    havesib = 0;  havebase = 0;  disp = 0;    if (mod == 3)    {      switch (bytemode)	{	case b_mode:	  oappend (names8[rm]);	  break;	case w_mode:	  oappend (names16[rm]);	  break;	case v_mode:	  if (dflag)	    oappend (names32[rm]);	  else	    oappend (names16[rm]);	  break;	default:	  oappend ("<bad dis table>");	  break;	}      return (0);    }    append_prefix ();  if (rm == 4)    {      havesib = 1;      havebase = 1;      FETCH_DATA (the_info, codep + 1);      scale = (*codep >> 6) & 3;      index = (*codep >> 3) & 7;      base = *codep & 7;      codep++;    }    switch (mod)    {    case 0:      switch (rm)	{	case 4:	  /* implies havesib and havebase */	  if (base == 5) {	    havebase = 0;	    disp = get32 ();	  }	  break;	case 5:	  disp = get32 ();	  break;	default:	  havebase = 1;	  base = rm;	  break;	}      break;    case 1:      FETCH_DATA (the_info, codep + 1);      disp = *(char *)codep++;      if (rm != 4)	{	  havebase = 1;	  base = rm;	}      break;    case 2:      disp = get32 ();      if (rm != 4)	{	  havebase = 1;	  base = rm;	}      break;    }    if (mod != 0 || rm == 5 || (havesib && base == 5))    {      sprintf (scratchbuf, "0x%x", disp);      oappend (scratchbuf);    }    if (havebase || havesib)     {      oappend ("(");      if (havebase)	oappend (names32[base]);      if (havesib) 	{	  if (index != 4) 	    {	      sprintf (scratchbuf, ",%s", names32[index]);	      oappend (scratchbuf);	    }	  sprintf (scratchbuf, ",%d", 1 << scale);	  oappend (scratchbuf);	}      oappend (")");    }  return (0);}