private static function decryptBlock($input, $key, $size){
		$output = array();
		$block = array(); /* the 128 bit block to decode */
		$nbrRounds = self::numberOfRounds($size);
		/* Set the block values, for the block:
		 * a0,0 a0,1 a0,2 a0,3
		 * a1,0 a1,1 a1,2 a1,3
		 * a2,0 a2,1 a2,2 a2,3
		 * a3,0 a3,1 a3,2 a3,3
		 * the mapping order is a0,0 a1,0 a2,0 a3,0 a0,1 a1,1 ... a2,3 a3,3
		 */
		for ($i = 0; $i < 4; $i++) /* iterate over the columns */
			for ($j = 0; $j < 4; $j++) /* iterate over the rows */
				$block[($i+($j*4))] = $input[($i*4)+$j];
		/* expand the key into an 176, 208, 240 bytes key */
		$expandedKey = self::expandKey($key, $size);
		/* decrypt the block using the expandedKey */
		$block = self::invMain($block, $expandedKey, $nbrRounds);
		for ($k = 0; $k < 4; $k++)/* unmap the block again into the output */
			for ($l = 0; $l < 4; $l++)/* iterate over the rows */
				$output[($k*4)+$l] = $block[($k+($l*4))];
		return $output;
	}