亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? misc.h

?? 常用字符串hash算法
?? H
?? 第 1 頁 / 共 2 頁
字號:
#ifdef PPC_INTRINSICS	// PPC: load reverse indexed instruction	return (word32)__lwbrx(&value,0);#elif defined(FAST_ROTATE)	// 5 instructions with rotate instruction, 9 without	return (rotrFixed(value, 8U) & 0xff00ff00) | (rotlFixed(value, 8U) & 0x00ff00ff);#else	// 6 instructions with rotate instruction, 8 without	value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8);	return rotlFixed(value, 16U);#endif}#ifdef WORD64_AVAILABLEinline word64 ByteReverse(word64 value){#ifdef SLOW_WORD64	return (word64(ByteReverse(word32(value))) << 32) | ByteReverse(word32(value>>32));#else	value = ((value & W64LIT(0xFF00FF00FF00FF00)) >> 8) | ((value & W64LIT(0x00FF00FF00FF00FF)) << 8);	value = ((value & W64LIT(0xFFFF0000FFFF0000)) >> 16) | ((value & W64LIT(0x0000FFFF0000FFFF)) << 16);	return rotlFixed(value, 32U);#endif}#endifinline byte BitReverse(byte value){	value = ((value & 0xAA) >> 1) | ((value & 0x55) << 1);	value = ((value & 0xCC) >> 2) | ((value & 0x33) << 2);	return rotlFixed(value, 4);}inline word16 BitReverse(word16 value){	value = ((value & 0xAAAA) >> 1) | ((value & 0x5555) << 1);	value = ((value & 0xCCCC) >> 2) | ((value & 0x3333) << 2);	value = ((value & 0xF0F0) >> 4) | ((value & 0x0F0F) << 4);	return ByteReverse(value);}inline word32 BitReverse(word32 value){	value = ((value & 0xAAAAAAAA) >> 1) | ((value & 0x55555555) << 1);	value = ((value & 0xCCCCCCCC) >> 2) | ((value & 0x33333333) << 2);	value = ((value & 0xF0F0F0F0) >> 4) | ((value & 0x0F0F0F0F) << 4);	return ByteReverse(value);}#ifdef WORD64_AVAILABLEinline word64 BitReverse(word64 value){#ifdef SLOW_WORD64	return (word64(BitReverse(word32(value))) << 32) | BitReverse(word32(value>>32));#else	value = ((value & W64LIT(0xAAAAAAAAAAAAAAAA)) >> 1) | ((value & W64LIT(0x5555555555555555)) << 1);	value = ((value & W64LIT(0xCCCCCCCCCCCCCCCC)) >> 2) | ((value & W64LIT(0x3333333333333333)) << 2);	value = ((value & W64LIT(0xF0F0F0F0F0F0F0F0)) >> 4) | ((value & W64LIT(0x0F0F0F0F0F0F0F0F)) << 4);	return ByteReverse(value);#endif}#endiftemplate <class T>inline T BitReverse(T value){	if (sizeof(T) == 1)		return (T)BitReverse((byte)value);	else if (sizeof(T) == 2)		return (T)BitReverse((word16)value);	else if (sizeof(T) == 4)		return (T)BitReverse((word32)value);	else	{#ifdef WORD64_AVAILABLE		assert(sizeof(T) == 8);		return (T)BitReverse((word64)value);#else		assert(false);		return 0;#endif	}}template <class T>inline T ConditionalByteReverse(ByteOrder order, T value){	return NativeByteOrderIs(order) ? value : ByteReverse(value);}template <class T>void ByteReverse(T *out, const T *in, unsigned int byteCount){	assert(byteCount % sizeof(T) == 0);	unsigned int count = byteCount/sizeof(T);	for (unsigned int i=0; i<count; i++)		out[i] = ByteReverse(in[i]);}template <class T>inline void ConditionalByteReverse(ByteOrder order, T *out, const T *in, unsigned int byteCount){	if (!NativeByteOrderIs(order))		ByteReverse(out, in, byteCount);	else if (in != out)		memcpy(out, in, byteCount);}template <class T>inline void GetUserKey(ByteOrder order, T *out, unsigned int outlen, const byte *in, unsigned int inlen){	const unsigned int U = sizeof(T);	assert(inlen <= outlen*U);	memcpy(out, in, inlen);	memset((byte *)out+inlen, 0, outlen*U-inlen);	ConditionalByteReverse(order, out, out, RoundUpToMultipleOf(inlen, U));}inline byte UnalignedGetWordNonTemplate(ByteOrder order, const byte *block, byte*){	return block[0];}inline word16 UnalignedGetWordNonTemplate(ByteOrder order, const byte *block, word16*){	return (order == BIG_ENDIAN_ORDER)		? block[1] | (block[0] << 8)		: block[0] | (block[1] << 8);}inline word32 UnalignedGetWordNonTemplate(ByteOrder order, const byte *block, word32*){	return (order == BIG_ENDIAN_ORDER)		? word32(block[3]) | (word32(block[2]) << 8) | (word32(block[1]) << 16) | (word32(block[0]) << 24)		: word32(block[0]) | (word32(block[1]) << 8) | (word32(block[2]) << 16) | (word32(block[3]) << 24);}template <class T>inline T UnalignedGetWord(ByteOrder order, const byte *block, T*dummy=NULL){	return UnalignedGetWordNonTemplate(order, block, dummy);}inline void UnalignedPutWord(ByteOrder order, byte *block, byte value, const byte *xorBlock = NULL){	block[0] = xorBlock ? (value ^ xorBlock[0]) : value;}inline void UnalignedPutWord(ByteOrder order, byte *block, word16 value, const byte *xorBlock = NULL){	if (order == BIG_ENDIAN_ORDER)	{		block[0] = GETBYTE(value, 1);		block[1] = GETBYTE(value, 0);	}	else	{		block[0] = GETBYTE(value, 0);		block[1] = GETBYTE(value, 1);	}	if (xorBlock)	{		block[0] ^= xorBlock[0];		block[1] ^= xorBlock[1];	}}inline void UnalignedPutWord(ByteOrder order, byte *block, word32 value, const byte *xorBlock = NULL){	if (order == BIG_ENDIAN_ORDER)	{		block[0] = GETBYTE(value, 3);		block[1] = GETBYTE(value, 2);		block[2] = GETBYTE(value, 1);		block[3] = GETBYTE(value, 0);	}	else	{		block[0] = GETBYTE(value, 0);		block[1] = GETBYTE(value, 1);		block[2] = GETBYTE(value, 2);		block[3] = GETBYTE(value, 3);	}	if (xorBlock)	{		block[0] ^= xorBlock[0];		block[1] ^= xorBlock[1];		block[2] ^= xorBlock[2];		block[3] ^= xorBlock[3];	}}template <class T>inline T GetWord(bool assumeAligned, ByteOrder order, const byte *block){	if (assumeAligned)	{		assert(IsAligned<T>(block));		return ConditionalByteReverse(order, *reinterpret_cast<const T *>(block));	}	else		return UnalignedGetWord<T>(order, block);}template <class T>inline void GetWord(bool assumeAligned, ByteOrder order, T &result, const byte *block){	result = GetWord<T>(assumeAligned, order, block);}template <class T>inline void PutWord(bool assumeAligned, ByteOrder order, byte *block, T value, const byte *xorBlock = NULL){	if (assumeAligned)	{		assert(IsAligned<T>(block));		if (xorBlock)			*reinterpret_cast<T *>(block) = ConditionalByteReverse(order, value) ^ *reinterpret_cast<const T *>(xorBlock);		else			*reinterpret_cast<T *>(block) = ConditionalByteReverse(order, value);	}	else		UnalignedPutWord(order, block, value, xorBlock);}template <class T, class B, bool A=true>class GetBlock{public:	GetBlock(const void *block)		: m_block((const byte *)block) {}	template <class U>	inline GetBlock<T, B, A> & operator()(U &x)	{		CRYPTOPP_COMPILE_ASSERT(sizeof(U) >= sizeof(T));		x = GetWord<T>(A, B::ToEnum(), m_block);		m_block += sizeof(T);		return *this;	}private:	const byte *m_block;};template <class T, class B, bool A=true>class PutBlock{public:	PutBlock(const void *xorBlock, void *block)		: m_xorBlock((const byte *)xorBlock), m_block((byte *)block) {}	template <class U>	inline PutBlock<T, B, A> & operator()(U x)	{		PutWord(A, B::ToEnum(), m_block, (T)x, m_xorBlock);		m_block += sizeof(T);		if (m_xorBlock)			m_xorBlock += sizeof(T);		return *this;	}private:	const byte *m_xorBlock;	byte *m_block;};template <class T, class B, bool A=true>struct BlockGetAndPut{	// function needed because of C++ grammatical ambiguity between expression-statements and declarations	static inline GetBlock<T, B, A> Get(const void *block) {return GetBlock<T, B, A>(block);}	typedef PutBlock<T, B, A> Put;};template <class T>std::string WordToString(T value, ByteOrder order = BIG_ENDIAN_ORDER){	if (!NativeByteOrderIs(order))		value = ByteReverse(value);	return std::string((char *)&value, sizeof(value));}template <class T>T StringToWord(const std::string &str, ByteOrder order = BIG_ENDIAN_ORDER){	T value = 0;	memcpy(&value, str.data(), STDMIN(sizeof(value), str.size()));	return NativeByteOrderIs(order) ? value : ByteReverse(value);}// ************** help remove warning on g++ ***************template <bool overflow> struct SafeShifter;template<> struct SafeShifter<true>{	template <class T>	static inline T RightShift(T value, unsigned int bits)	{		return 0;	}	template <class T>	static inline T LeftShift(T value, unsigned int bits)	{		return 0;	}};template<> struct SafeShifter<false>{	template <class T>	static inline T RightShift(T value, unsigned int bits)	{		return value >> bits;	}	template <class T>	static inline T LeftShift(T value, unsigned int bits)	{		return value << bits;	}};template <unsigned int bits, class T>inline T SafeRightShift(T value){	return SafeShifter<(bits>=(8*sizeof(T)))>::RightShift(value, bits);}template <unsigned int bits, class T>inline T SafeLeftShift(T value){	return SafeShifter<(bits>=(8*sizeof(T)))>::LeftShift(value, bits);}NAMESPACE_END#endif // MISC_H

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本视频一区二区三区| 亚洲精品一区二区精华| 欧美一区二区二区| 欧美激情综合网| 天天av天天翘天天综合网色鬼国产 | 色婷婷久久综合| 精品国产欧美一区二区| 精品无人区卡一卡二卡三乱码免费卡| 91丝袜美腿高跟国产极品老师 | 婷婷夜色潮精品综合在线| 欧美日韩精品一区二区| 自拍av一区二区三区| 国产精品888| 2020国产精品| 久久超碰97中文字幕| 777久久久精品| 亚洲综合久久久久| 色综合av在线| 视频一区在线视频| 欧美日本一区二区三区| 蜜桃视频一区二区| 91精品国产麻豆| 国产乱人伦偷精品视频不卡| 日韩毛片高清在线播放| 91麻豆精品国产91久久久资源速度 | 国产91精品在线观看| 亚洲精品一区二区三区99| 丁香激情综合五月| 国产精品另类一区| 奇米综合一区二区三区精品视频| 欧美唯美清纯偷拍| 五月天激情小说综合| 国产欧美精品在线观看| av激情综合网| 亚洲视频一区二区在线| 91麻豆精品国产91久久久使用方法| 国产成人综合网站| 日本道精品一区二区三区| 国产一区二区在线看| 欧美一级在线视频| 大美女一区二区三区| 亚洲成在人线在线播放| 欧美一区二区不卡视频| av一区二区三区| 久久激情五月激情| 亚洲国产精品久久人人爱| 在线91免费看| 成人aa视频在线观看| 亚洲一区免费视频| 国产午夜精品久久久久久久| 91在线视频在线| 性做久久久久久免费观看欧美| 久久久久国产一区二区三区四区 | 亚洲综合男人的天堂| 国产网站一区二区| 日韩免费电影网站| 粉嫩av一区二区三区在线播放| 偷窥少妇高潮呻吟av久久免费| 国产精品系列在线| 久久久久久久久久久久久久久99 | 顶级嫩模精品视频在线看| 天天射综合影视| 亚洲综合成人在线| 亚洲精品第1页| 日韩欧美中文字幕一区| 成人网在线免费视频| 国内精品第一页| 亚洲一区二区在线免费看| 国产精品久久777777| 久久精品夜色噜噜亚洲a∨| 欧美不卡视频一区| 91久久精品国产91性色tv| 成人污污视频在线观看| 豆国产96在线|亚洲| 国产suv精品一区二区883| 国精品**一区二区三区在线蜜桃| 免费成人av资源网| 麻豆精品新av中文字幕| 亚洲视频免费观看| 一区二区中文视频| 日韩一区二区在线播放| 在线播放亚洲一区| 不卡视频免费播放| 99久久伊人网影院| 91麻豆swag| 欧美三级视频在线观看| 成人教育av在线| 99国产欧美另类久久久精品 | 最新欧美精品一区二区三区| 国产精品三级久久久久三级| 国产精品欧美经典| 亚洲精品第1页| 天天影视色香欲综合网老头| 裸体一区二区三区| 国产成人综合亚洲网站| 91影视在线播放| 欧美日本一区二区在线观看| 欧美xxxx老人做受| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 蜜桃av一区二区在线观看| 捆绑调教一区二区三区| 国产精品系列在线播放| 91视视频在线观看入口直接观看www| 色综合色综合色综合| 在线播放亚洲一区| 久久久夜色精品亚洲| 国产精品免费免费| 水野朝阳av一区二区三区| 狠狠久久亚洲欧美| jvid福利写真一区二区三区| 欧美日韩1234| 欧美经典一区二区| 亚洲伊人色欲综合网| 久久99久久久久| thepron国产精品| 欧美精品久久久久久久多人混战| 久久不见久久见免费视频1| 久久久夜色精品亚洲| 亚洲精品菠萝久久久久久久| 日韩成人免费在线| av亚洲产国偷v产偷v自拍| 7777精品伊人久久久大香线蕉最新版 | 日韩一区中文字幕| 麻豆精品蜜桃视频网站| 一本大道av伊人久久综合| 欧美成人三级在线| 亚洲综合一二三区| 床上的激情91.| 91精品国产色综合久久ai换脸 | 色婷婷av一区二区三区软件 | 日本国产一区二区| 久久综合久久综合九色| 亚洲黄网站在线观看| 国产一区二区三区在线观看免费 | 色噜噜狠狠成人中文综合| 色婷婷国产精品| 精品精品国产高清a毛片牛牛| 亚洲少妇最新在线视频| 国产一区二区h| 亚洲成在线观看| 成人动漫一区二区在线| 日韩一级免费观看| 夜夜嗨av一区二区三区四季av| 亚洲人123区| 亚洲国产精品自拍| av动漫一区二区| 国产日韩精品视频一区| 另类欧美日韩国产在线| 精品视频在线免费看| 中文字幕一区二区三区视频 | 国产精品99久久久| 欧美一区二区精品久久911| 夜色激情一区二区| 99riav久久精品riav| 国产精品嫩草影院com| 国产永久精品大片wwwapp| 日韩欧美国产系列| 免费看日韩精品| 制服丝袜亚洲色图| 日韩一区精品视频| 欧美一区午夜视频在线观看| 日韩国产在线观看| 91精品久久久久久久久99蜜臂| 亚洲成a人片在线观看中文| 欧美在线观看视频一区二区| 日韩欧美不卡在线观看视频| 午夜精品久久久久影视| 欧美在线短视频| 亚洲精品国产一区二区精华液| 99re6这里只有精品视频在线观看| 国产精品久久久久影院老司| 成人免费高清在线观看| 国产精品人妖ts系列视频| 国产成人av电影免费在线观看| 亚洲国产精品国自产拍av| 成人做爰69片免费看网站| 国产精品毛片久久久久久久| av在线不卡观看免费观看| 亚洲激情图片qvod| 欧美性色综合网| 日本在线不卡视频| 久久久久久久综合狠狠综合| 成人综合在线网站| 亚洲欧美另类综合偷拍| 欧美日本一区二区三区| 国内精品伊人久久久久av一坑| 国产欧美一区二区精品秋霞影院 | 欧美日韩五月天| 九一久久久久久| 久久久久久电影| 99视频精品在线| 天堂成人免费av电影一区| 亚洲精品一区二区三区福利| av一区二区不卡| 午夜精品久久久久| 久久精品一级爱片| 色久优优欧美色久优优| 蜜桃传媒麻豆第一区在线观看| 国产欧美视频在线观看| 欧美午夜精品久久久久久孕妇|