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;
		}