unsigned short jt(void,index) { void *smlookuptbl=smlookuptbls[index]; //d3 loc096054 void *handler=smhandlers[index]; //sp+00 loc09607c void *smzero=smzeros[index]; //sp+8 loc09607c unsigned short snumstate=smnumstates[index]; //d0 loc0985a4 unsigned short *sp4=loc85b8+(index*2); unsigned short *spC=(index*2); unsigned short retval=0; //return value (a2) a0=spC; if(smlookuptbl==0) return(retval); loc842e[index]=loc85a4[index] loc8442[index]=snumstates*loc85a4[index]; unsigned char *a1=smlookuptbl+snumstates*loc85a4[index]; if(handler[a1[0]]!= 0) { retval=(((FCNPTR)handler[a1[0]])()); //call it! if(a1[1]!=0) { if(smzero[a1[1]]==0) return(retval); ((FCNPTR)smzero[a1[1]]); //call it! return(retval); } if(a1[1]<=0) { loc85b8[index]=a1[1]*-1; //IROM:00084F70 F5 F0 04 FF MULQL 0x000000FF, D0 // -1 or 0xff?? } return(retval); }