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

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

?? infdyna.c

?? windows gzip source code
?? C
?? 第 1 頁 / 共 2 頁
字號:
			extra_bits = (dist_code-2) >> 1;

			if (extra_bits > 0)
			{
				// make sure we have this many bits in the bit buffer
				if (extra_bits > bitcount + 16)
				{
					// if we run out of bits, break
					if (input_ptr >= end_input_buffer)
					{
						context->state = STATE_HAVE_DIST_CODE;
						context->length = length;
						context->dist_code = dist_code;
						break;
					}

					bitbuf |= ((*input_ptr++) << (bitcount+16)); 
					bitcount += 8;
						
					// extra_length_bits can be > 8, so check again
					if (extra_bits > bitcount + 16)
					{
						// if we run out of bits, break
						if (input_ptr >= end_input_buffer)
						{
							context->state = STATE_HAVE_DIST_CODE;
							context->length = length;
							context->dist_code = dist_code;
							break;
						}

						bitbuf |= ((*input_ptr++) << (bitcount+16)); 
						bitcount += 8;
					}
				}

				offset = g_DistanceBasePosition[dist_code] + (bitbuf & g_BitMask[extra_bits]); 

				DUMPBITS(extra_bits);
				_ASSERT(bitcount >= -16);
			}
			else
			{
				offset = dist_code + 1;
			}

			// copy remaining byte(s) of match
reenter_state_interrupted_match:

			do
			{
				window[bufpos] = *output_curpos++ = window[(bufpos - offset) & WINDOW_MASK];
				bufpos = (bufpos + 1) & WINDOW_MASK;

				if (--length == 0)
					break;

			} while (output_curpos < context->end_output_buffer);

			if (length > 0)
			{
				context->state = STATE_INTERRUPTED_MATCH;
				context->length = length;
				context->offset = offset;
				break;
			}
		}

		// it's "<=" because we end when we received the end-of-block code,
		// not when we fill up the output, however, this will catch cases
		// of corrupted data where there is no end-of-output code
	} while (output_curpos < context->end_output_buffer);

	_ASSERT(bitcount >= -16);

	SAVE_BITBUF_VARS();

	context->output_curpos = output_curpos;
	context->bufpos = bufpos;

	return TRUE;
}


//
// This is the fast version, which assumes that, at the top of the loop:
//
// 1. There are at least 12 bytes of input available at the top of the loop (so that we don't
// have to check input EOF several times in the middle of the loop)
//
// and
//
// 2. There are at least MAX_MATCH bytes of output available (so that we don't have to check
// for output EOF while we're copying matches)
//
// The state must also be STATE_DECODE_TOP on entering and exiting this function
//
BOOL FastDecodeDynamicBlock(t_decoder_context *context, BOOL *end_of_block_code_seen) 
{
	const byte *	input_ptr;
	const byte *	end_input_buffer;
	byte *			output_curpos;
	byte *			window;
	unsigned long	bufpos;
	unsigned long	bitbuf;
	int				bitcount;
	int				length;
	long			dist_code;
	unsigned long	offset;

	*end_of_block_code_seen = FALSE;

	//
	// Store these variables locally for speed
	//
	output_curpos	= context->output_curpos;

	window = context->window;
	bufpos = context->bufpos;

	end_input_buffer = context->end_input_buffer;

	LOAD_BITBUF_VARS();

	_ASSERT(context->state == STATE_DECODE_TOP);
	_ASSERT(input_ptr + 12 < end_input_buffer);
	_ASSERT(output_curpos + MAX_MATCH < context->end_output_buffer);

	// make sure there are at least 16 bits in the bit buffer
	while (bitcount <= 0)
	{
		bitbuf |= ((*input_ptr++) << (bitcount+16)); 
		bitcount += 8;
	}

	do
	{
		//
		// decode an element from the main tree
		//

		// decode an element from the literal tree
		length = context->literal_table[bitbuf & LITERAL_TABLE_MASK]; 
		
		while (length < 0) 
		{ 
			unsigned long mask = 1 << LITERAL_TABLE_BITS; 
			do 
			{ 
				length = -length; 
				if ((bitbuf & mask) == 0) 
					length = context->literal_left[length]; 
				else 
					length = context->literal_right[length]; 
				mask <<= 1; 
			} while (length < 0); 
		}

		DUMPBITS(context->literal_tree_code_length[length]);

		if (bitcount <= 0)
		{
			bitbuf |= ((*input_ptr++) << (bitcount+16)); 
			bitcount += 8;

			if (bitcount <= 0)
			{
				bitbuf |= ((*input_ptr++) << (bitcount+16)); 
				bitcount += 8;
			}
		}

		//
		// Is it a character or a match?
		//
		if (length < 256)
		{
			// it's an unmatched symbol
			window[bufpos] = *output_curpos++ = (byte) length;
			bufpos = (bufpos + 1) & WINDOW_MASK;
		}
		else
		{
			// it's a match
			int extra_bits;

			length -= 257;

			// if value was 256, that was the end-of-block code
			if (length < 0)
			{
				*end_of_block_code_seen = TRUE;
				break;
			}


			//
			// Get match length
			//

			//
			// These matches are by far the most common case.
			//
			if (length < 8)
			{
				// no extra bits

				// match length = 3,4,5,6,7,8,9,10
				length += 3;
			}
			else
			{
				int extra_bits;

				extra_bits = g_ExtraLengthBits[length];

				if (extra_bits > 0)
				{
					length = g_LengthBase[length] + (bitbuf & g_BitMask[extra_bits]);

					DUMPBITS(extra_bits);

					if (bitcount <= 0)
					{
						bitbuf |= ((*input_ptr++) << (bitcount+16)); 
						bitcount += 8;

						if (bitcount <= 0)
						{
							bitbuf |= ((*input_ptr++) << (bitcount+16)); 
							bitcount += 8;
						}
					}
				}
				else
				{
					/*
					 * we know length > 8 and extra_bits == 0, there the length must be 258
					 */
					length = 258; /* g_LengthBase[length]; */
				}
			}

			//
			// Get match distance
			//

			// decode distance code
			dist_code = context->distance_table[bitbuf & DISTANCE_TABLE_MASK]; 
			
			while (dist_code < 0) 
			{ 
				unsigned long mask = 1 << DISTANCE_TABLE_BITS; 
			
				do 
				{ 
					dist_code = -dist_code; 
				
					if ((bitbuf & mask) == 0) 
						dist_code = context->distance_left[dist_code]; 
					else 
						dist_code = context->distance_right[dist_code]; 
					
					mask <<= 1; 
				} while (dist_code < 0); 
			}

			DUMPBITS(context->distance_tree_code_length[dist_code]);

			if (bitcount <= 0)
			{
				bitbuf |= ((*input_ptr++) << (bitcount+16)); 
				bitcount += 8;

				if (bitcount <= 0)
				{
					bitbuf |= ((*input_ptr++) << (bitcount+16)); 
					bitcount += 8;
				}
			}


			// To avoid a table lookup we note that for dist_code >= 2,
			// extra_bits = (dist_code-2) >> 1
			//
			// Old (intuitive) way of doing this:
			//    offset = distance_base_position[dist_code] + 
			//	   		   getBits(extra_distance_bits[dist_code]);
			extra_bits = (dist_code-2) >> 1;

			if (extra_bits > 0)
			{
				offset	= g_DistanceBasePosition[dist_code] + (bitbuf & g_BitMask[extra_bits]);
                
				DUMPBITS(extra_bits);

				if (bitcount <= 0)
				{
					bitbuf |= ((*input_ptr++) << (bitcount+16)); 
					bitcount += 8;

					if (bitcount <= 0)
					{
						bitbuf |= ((*input_ptr++) << (bitcount+16)); 
						bitcount += 8;
					}
				}
			}
			else
			{
				offset = dist_code + 1;
			}

			// copy remaining byte(s) of match
			do
			{
				window[bufpos] = *output_curpos++ = window[(bufpos - offset) & WINDOW_MASK];
				bufpos = (bufpos + 1) & WINDOW_MASK;
			} while (--length != 0);
		}
	} while ((input_ptr + 12 < end_input_buffer) && (output_curpos + MAX_MATCH < context->end_output_buffer));

	// make sure there are at least 16 bits in the bit buffer
	while (bitcount <= 0)
	{
		bitbuf |= ((*input_ptr++) << (bitcount+16)); 
		bitcount += 8;
	}

	SAVE_BITBUF_VARS();

	context->output_curpos = output_curpos;
	context->bufpos = bufpos;

	return TRUE;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠狠色丁香婷婷综合激情| 成人黄色电影在线| 亚洲电影视频在线| 亚洲欧洲一区二区在线播放| 精品久久久久久久一区二区蜜臀| 色菇凉天天综合网| 日韩一区二区电影| 久久精品视频网| 国产精品成人网| 亚洲三级在线免费观看| 亚洲激情校园春色| 日韩黄色在线观看| 国产不卡在线一区| 91麻豆精品秘密| 在线成人免费观看| 国产欧美日本一区二区三区| 国产精品不卡一区| 蜜桃av一区二区三区| 91在线视频网址| 日韩欧美你懂的| 一区在线中文字幕| 九一久久久久久| 欧美天堂亚洲电影院在线播放| 91精品国产色综合久久不卡电影| 国产日韩成人精品| 另类小说综合欧美亚洲| k8久久久一区二区三区| 欧美亚洲一区二区在线观看| 国产性做久久久久久| 免费高清在线一区| 91麻豆成人久久精品二区三区| 91精品国产综合久久精品app | 日本韩国一区二区三区视频| 日韩视频一区二区在线观看| 亚洲最大色网站| 成人美女在线观看| 久久久久高清精品| 日本一区中文字幕| 欧美美女视频在线观看| 国产欧美1区2区3区| 日韩专区在线视频| 制服丝袜国产精品| 久久99久久精品欧美| 日韩网站在线看片你懂的| 亚洲123区在线观看| 欧美色图片你懂的| 中文字幕亚洲视频| 豆国产96在线|亚洲| 精品国产一区二区精华| 国内精品写真在线观看| 国产欧美一区二区精品仙草咪 | 国产风韵犹存在线视精品| 欧美成人精品3d动漫h| 全部av―极品视觉盛宴亚洲| 日韩欧美国产精品一区| 狠狠色丁香九九婷婷综合五月| 亚洲精品一区二区三区在线观看| 国精产品一区一区三区mba桃花| 久久久国产综合精品女国产盗摄| 九九视频精品免费| 亚洲桃色在线一区| 日韩一区二区三区在线| 激情五月婷婷综合网| 久久久91精品国产一区二区三区| 蜜臀久久99精品久久久久久9| 日韩精品中文字幕一区二区三区 | 国产高清不卡二三区| 亚洲成av人片在线观看无码| 91精品国产综合久久福利软件 | 97国产一区二区| 日韩成人dvd| 亚洲一区二区五区| 2023国产精品| 欧美性大战久久久久久久蜜臀 | 国内精品国产成人国产三级粉色| 一区二区三区资源| 日韩电影免费一区| 亚洲777理论| 亚洲国产精品久久艾草纯爱| 国产精品高清亚洲| 精品成人一区二区三区四区| 在线精品亚洲一区二区不卡| 成人av在线一区二区三区| 激情六月婷婷久久| 亚洲大尺度视频在线观看| 欧美国产日韩亚洲一区| 26uuu亚洲| 欧美xxxxxxxxx| 国产丝袜欧美中文另类| 国产精品免费aⅴ片在线观看| 国产欧美在线观看一区| 欧美激情在线免费观看| 国产亚洲人成网站| 亚洲国产精品黑人久久久| 精品国产一区二区三区久久久蜜月 | 欧美乱妇23p| 精品视频在线免费观看| 欧美老女人第四色| 欧美一区二区不卡视频| 久久精品人人做人人爽97| 久久久国际精品| 日本系列欧美系列| 国产成人精品亚洲日本在线桃色| 成人精品免费看| 欧美亚洲精品一区| 欧美一区二区三区四区视频| 欧美一级视频精品观看| 久久久午夜电影| 亚洲国产综合色| 夫妻av一区二区| 欧美精品久久一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 国产亚洲欧洲一区高清在线观看| 国产精品久久久久三级| 视频一区中文字幕国产| av在线免费不卡| 欧美一区永久视频免费观看| 最新中文字幕一区二区三区| 亚洲6080在线| 色狠狠综合天天综合综合| 91 com成人网| 樱桃国产成人精品视频| 欧美一区二区久久| 亚洲欧美日韩在线| 成人国产精品免费观看动漫| 日韩欧美精品在线| 人人精品人人爱| 99精品久久久久久| 亚洲精品国产精品乱码不99| 99国产欧美久久久精品| 中文字幕一区二区三区四区不卡| 九九国产精品视频| 日韩欧美国产一区二区在线播放 | 亚洲免费观看高清完整版在线| 国产乱子伦一区二区三区国色天香 | 一区二区三区日韩| 欧美亚洲精品一区| 麻豆91精品视频| 欧美三电影在线| 日韩在线一区二区三区| 日韩视频123| 奇米四色…亚洲| 在线观看欧美精品| 午夜精品久久久久久不卡8050| 在线观看视频一区二区| 亚洲成人精品一区| 久久色成人在线| 91麻豆视频网站| 久久激情五月激情| 国产精品无人区| 欧美日韩视频专区在线播放| 蜜臀久久久久久久| 日韩一区欧美小说| 日韩欧美123| 91小视频免费观看| 久久国产精品免费| 亚洲黄网站在线观看| 久久久久久电影| 国产午夜精品在线观看| 91精品国模一区二区三区| 99视频热这里只有精品免费| 激情成人综合网| 天堂在线亚洲视频| 欧美另类videos死尸| 高清shemale亚洲人妖| 中文字幕制服丝袜成人av| 欧美理论片在线| 色天天综合色天天久久| 国产精品一二三四| 日韩va亚洲va欧美va久久| 日本一区二区三级电影在线观看| av午夜一区麻豆| 麻豆精品国产91久久久久久| 日韩av一级片| 日本中文字幕一区二区视频| 日韩av一区二区三区| 一区二区三区欧美久久| 欧美韩日一区二区三区四区| 精品国产成人系列| 欧美电视剧在线观看完整版| 欧美日韩国产片| 欧美疯狂性受xxxxx喷水图片| 欧美日韩国产综合一区二区| 欧美精品黑人性xxxx| 欧美日韩中文另类| 在线观看视频欧美| 欧美日韩一区二区三区免费看| 91精品福利视频| 91国产成人在线| 制服丝袜亚洲色图| 精品国产乱子伦一区| 久久精品视频在线看| 一区二区三区中文字幕精品精品 | 国产精品一区二区三区99| 国产99久久久久| 欧美一级xxx| 亚洲精品国产成人久久av盗摄| 婷婷综合另类小说色区| 国产高清在线观看免费不卡| 欧美综合在线视频|