Posted to tcl by mjanssen at Sun Jun 29 11:52:24 GMT 2008view pretty
critcl::ccommand MixColumns {cd interp objc objv} { Tcl_Obj * resObj = Tcl_NewListObj (0,0); Tcl_Obj * tempObj = NULL; int i; int r0,r1,r2,r3,s0,s1,s2,s3; Tcl_WideInt w; for (i=0;i<4;i++) { Tcl_ListObjIndex(interp,objv[1],i,&tempObj); Tcl_GetWideIntFromObj(interp,tempObj,&w); r0= (w >> 24) & 255; r1= (w >> 16) & 255; r2= (w >> 8 ) & 255; r3= w & 255; s0= xtime[r0] ^ (r1^xtime[r1]) ^ r2 ^ r3; s1= r0 ^ xtime[r1] ^ (r2^xtime[r2])^ r3; s2= r0 ^ r1 ^ (xtime[r2]) ^ (r3^xtime[r3]); s3= r0^xtime[r0] ^ r1 ^ r2 ^ xtime[r3]; Tcl_Obj * l=Tcl_NewWideIntObj((s0 << 24) | (s1 << 16) | (s2 << | s3 ); Tcl_ListObjAppendElement(interp,resObj,l); } Tcl_SetObjResult(interp,resObj); return TCL_OK; }