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

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

?? block.c

?? zzip-zzlib-src.zip. A new archiver that uses a BWT algorithm to achieve superior compression. The
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*---------------------------------------------*/
/* Zzip/Zzlib compressor               block.c */
/* (un)compress/archive managing functions     */
/*---------------------------------------------*/

/*
  This file is a part of zzip and/or zzlib, a program and
  library for lossless, block-sorting data compression.
  Copyright (C) 1999-2001 Damien Debin. All Rights Reserved.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the 
  Free Software Foundation, Inc., 
  59 Temple Place, Suite 330, 
  Boston, MA 02111-1307 USA

  Damien Debin
  <damien@debin.net>

  This program is based on (at least) the work of: Mike Burrows, 
  David Wheeler, Peter Fenwick, Alistair Moffat, Ian H. Witten, 
  Robert Sedgewick, Jon Bentley, Brenton Chapin, Stephen R. Tate, 
  Szymon Grabowski, Bernhard Balkenhol, Stefan Kurtz
*/

#include <sys/stat.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <time.h>

#ifdef WIN32
# include <io.h>
# include <sys/utime.h>
# include <direct.h>
#else  /* WIN32 */
# include <utime.h>
# include <unistd.h>
# include <dirent.h>
#endif /* WIN32 */

#include "zzip.h"

#ifdef SFX
# include "sfx_code.h"
#endif

/*---------------------------------------------*/

#ifdef WIN32
# define SEP_PATH '\\'
# define MKDIR_OPTIONS
#else  /* WIN32 */
# define SEP_PATH '/'
# define MKDIR_OPTIONS ,S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH
#endif /* WIN32 */

#ifdef SFX
# define START_OFFSET SFX_CODE_SIZE
#else  /* SFX */
# define START_OFFSET 0L
#endif /* SFX */

#define WRITE_F(a,b)	fwrite((a),1,(b),session->output_file);
#define READ_F(a,b)		fread((a),1,(b),session->input_file);
#define WRITE_M(a,b)	{ memcpy(buffer_in, (a), (b)); buffer_in += (b); }
#define READ_M(a,b)		{ memcpy((a), buffer_in, (b)); buffer_in += (b); }
#define IO_ERROR()		{ last_error = errno; return; }
#define CHECK_IO_R()	{ if (ferror(session->input_file) != 0) last_error = errno; if (feof(session->input_file) != 0) last_error = UNEXPECTED_EOF; }
#define CHECK_IO_W()	{ if (ferror(session->output_file) != 0) last_error = errno; }
#define FTELL_I(a)		{ if ((a = ftell(session->input_file )) == -1) last_error = errno; }
#define FTELL_O(a)		{ if ((a = ftell(session->output_file)) == -1) last_error = errno; }
#define FSEEK_I(a,b)	{ if (fseek(session->input_file, (a), (b)) != 0)  last_error = FSEEK_INPUT_FILE; }
#define FSEEK_O(a,b)	{ if (fseek(session->output_file, (a), (b)) != 0) last_error = FSEEK_OUTPUT_FILE; }

int last_error = OK;

block_param_s block = { 0, false, false, false, 0, 0, 0, 0, NO_TYPE, NULL, NULL };

static session_param_s *session = NULL;
static union
{
	uint8  *buffer8;
	uint16 *buffer16;
	uint32 *buffer32;
} mem = { NULL };

#ifdef GET_STAT
 time_stat_s time_stat = { false, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
#endif /* GET_STAT */

#ifdef ZZLIB
# define NB_MAX_SESSION 8
  static session_param_s *session_tab[NB_MAX_SESSION + 1] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL };
#endif /* ZZLIB */

/*---------------------------------------------*/

#ifdef ZZLIB
DLL_EXPORT int Get_last_error() { return last_error; }
#endif /* ZZLIB */

/*---------------------------------------------*/

INLINE static
void *MyFree(void *pp)
{
	free(pp);
	return NULL;
}

INLINE static
void *MyMalloc(size_t size)
{
	void *mm = malloc(size);
	if (mm == NULL) last_error = NOT_ENOUGH_MEMORY;
	return mm;
}

INLINE static
void *MyRealloc(void   *pp, 
				size_t size)
{
	void *mm = realloc(pp, size);
	if (mm == NULL) last_error = NOT_ENOUGH_MEMORY;
	return mm;
}

/*---------------------------------------------*/

#ifndef SFX

void CleanMemory()
{
	mem.buffer8 = MyFree(mem.buffer8);
}

#endif /* !SFX */

/*---------------------------------------------*/

#ifndef SFX

/* Write header for an "archive" file */
static
void Write_Header_Arc()
{
	WRITE_F(session->head_arc.magic, sizeof(char) * 2);
	WRITE_F(&session->head_arc.version_number, sizeof(session->head_arc.version_number));
	WRITE_F(&session->head_arc.nb_of_file, sizeof(session->head_arc.nb_of_file));

	CHECK_IO_W();
}

/* Write header for a compressed file inside an "archive" file */
static
void Write_Header_File()
{
	uint lg = strlen(session->head_file.name);
	WRITE_F(&lg, sizeof(lg));
	WRITE_F(session->head_file.name, sizeof(char) * lg);
	WRITE_F(&session->head_file.time, sizeof(session->head_file.time));
	WRITE_F(&session->head_file.attributes, sizeof(session->head_file.attributes));
	WRITE_F(&session->head_file.packed_size, sizeof(session->head_file.packed_size));
	WRITE_F(&session->head_file.original_size, sizeof(session->head_file.original_size));
	WRITE_F(&session->head_file.nb_of_block, sizeof(session->head_file.nb_of_block));

	CHECK_IO_W();
}

#endif /* !SFX */

/*---------------------------------------------*/

/* Read header for an "archive" file */
static
void Read_Header_Arc()
{
	READ_F(session->head_arc.magic, sizeof(char)*2);
	READ_F(&session->head_arc.version_number, sizeof(session->head_arc.version_number));
	READ_F(&session->head_arc.nb_of_file, sizeof(session->head_arc.nb_of_file));

	CHECK_IO_R();

#ifndef SFX
	if (session->head_arc.magic[0] != 'Z' || session->head_arc.magic[1] != 'Z')
	{ 
		last_error = NOT_A_ZZIP_FILE; 
		return; 
	}
	if (session->head_arc.version_number != VERSION_NUMBER)
	{ 
		last_error = UNSUPPORTED_VERSION; 
		return; 
	}
#endif /* !SFX */
}

/* Read header for a compressed file inside an "archive" file */
static
void Read_Header_File()
{
	uint lg;
	READ_F(&lg, sizeof(lg));
	MyFree(session->head_file.name);
	session->head_file.name = (char*)MyMalloc(sizeof(char) * (lg + 1));
	READ_F(session->head_file.name, sizeof(char) * lg);
	session->head_file.name[lg] = '\0';
	READ_F(&session->head_file.time, sizeof(session->head_file.time));
	READ_F(&session->head_file.attributes, sizeof(session->head_file.attributes));
	READ_F(&session->head_file.packed_size, sizeof(session->head_file.packed_size));
	READ_F(&session->head_file.original_size, sizeof(session->head_file.original_size));
	READ_F(&session->head_file.nb_of_block, sizeof(session->head_file.nb_of_block));

	CHECK_IO_R();
}

/*---------------------------------------------*/

#ifdef SFX

#define BUFFER_SIZE (512*1024)

static
void Crc32_File(FILE *fin)
{
	uint8  *buffer;
	uint32 nb, crc = 0xFFFFFFFFUL, *crc_in_file;
	sint   end_of_file = 0;

	buffer = MyMalloc(BUFFER_SIZE * sizeof(uint8));
	if (last_error != OK) return;

	while (end_of_file == 0)
	{
		nb = fread(buffer, 1, BUFFER_SIZE, fin);
		if (ferror(fin) != 0)
		{
			last_error = errno;
			return;
		}
		end_of_file = feof(fin);
		if (end_of_file != 0) nb -= 4; /* 4 last bytes of file = CRC */
		crc = Crc32(buffer, buffer + nb, crc);
	} 

	crc_in_file = (uint32*)(buffer + nb);

	if (*crc_in_file != crc)
	{
		last_error = CRC_ERROR;
		return;
	}

	MyFree(buffer);
}

#endif /* SFX */

/*---------------------------------------------*/

#ifndef SFX

#define STAT_SIZE			(8*1024)
#define NB_S				64
#define BLOCKSTAT_THRESHOLD	5400

static sint32 bstat[NB_S] ALIGN;
static sint32 cstat[NB_S] ALIGN;

/* trick to compute an absolute value without any test/jump */
INLINE static
uint32 MyAbs(sint32 a)
{
	ssint64 s;
	s.s64 = a;
	return (s.d.l ^ s.d.h) - s.d.h;
}

static
uint32 BlockStat(uint8  *input_buffer, 
				 uint32 input_len)
{
	uint32 *buffer = (uint32*)input_buffer;
	uint32 len = input_len;
	sint32 *b1 = bstat, *b2 = cstat;

	b2[0] = -1;

	while (len > STAT_SIZE * 2)
	{
		uint32 i;

		len -= STAT_SIZE;

		for (i = 0; i < NB_S; ++i)
			b1[i] = 0;
		
		for (i = STAT_SIZE >> 2; i > 0; --i)
		{
			uuint32 u;
			u.u32 = *buffer++;
			b1[u.b.ll >> 2]++;
			b1[u.b.lh >> 2]++;
			b1[u.b.hl >> 2]++;
			b1[u.b.hh >> 2]++;
		}

		/* skip the first time */
		if (b2[0] != -1)
		{
			sint32 s = 0;

			for (i = 0; i < NB_S; ++i)
				s += MyAbs(b1[i] - b2[i]);
			
			if (s > BLOCKSTAT_THRESHOLD) 
				return ((uint8*)buffer - input_buffer) - STAT_SIZE;
		}

		/* swap buffers bstat and cstat */
		{
			sint32 *t = b1;
			b1 = b2;
			b2 = t;
		}
	}

	return input_len;
}

#endif /* !SFX */

/*---------------------------------------------*/

#ifndef SFX

static
#ifdef ZZLIB
sint32 CompressBlock(bool   from_file, 
					 uint8  *buffer_in, 
					 uint32 len_in)
#else  /* ZZLIB */
sint32 CompressBlock()
#endif /* ZZLIB */
{
	bool   ff_bug = false;
	uint16 status;
	uint8  *buffer1 = NULL, *buffer2 = NULL, *buf_out1 = NULL, *buf_out2 = NULL;
	uint32 len, len2, len_max, first, tot1 = 0, tot2, block_len;
	sint   err = 0;
	slong  pos = 0, deb = 0, fin = 0;
#ifdef GET_STAT
	uint64 p1, p2;
#endif /* GET_STAT */

#ifdef ZZLIB
	uint8 *sav_buffer_in = buffer_in;

	if (from_file == false)
	{
		mem.buffer8 = (uint8*)MyMalloc(sizeof(uint8) * (len_in + RUN_LENGTH_MAX + 32) * 6);
		if (last_error != OK) return -1;
		buffer1 = mem.buffer8;
		buffer2 = (uint8*)ROUND32(buffer1 + len_in * 2);

		memcpy(buffer1, buffer_in, sizeof(uint8) * len_in);
		len = len_in;
	}
	else
#endif /* ZZLIB */
	{
		uint32 taille_max = MIN(session->head_file.original_size + 1, session->block_size);

		mem.buffer8 = (uint8*)MyMalloc(sizeof(uint8) * (taille_max + RUN_LENGTH_MAX + 32) * 6);
		if (last_error != OK) return -1;

		buffer1 = mem.buffer8;
		buffer2 = (uint8*)ROUND32(buffer1 + taille_max * 2);

		FTELL_I(pos);
		FTELL_O(deb);
		if (last_error != OK) return -1;
		
		len = READ_F(buffer1, sizeof(uint8) * taille_max);
		CHECK_IO_R();
		if (last_error == UNEXPECTED_EOF) last_error = OK;
		if (last_error != OK) return -1;

		if ((session->compression_mode & 2) == 2)
		{
			uint32 blockstat_len = BlockStat(buffer1, len);
			if (blockstat_len != len)
			{
				FSEEK_I((sint32)blockstat_len - (sint32)len, SEEK_CUR);
				if (last_error != OK) return -1;
				len = blockstat_len;
			}
		}
	}

	block_len = len;
	len_max = len;
	block.crc = Crc32_2(buffer1, buffer1 + len);
	block.mm_type = 0;

	STAT_ADD_SIZE(kb_tot, len);

	if (len > 64)
	{
		if (len < 3 * 1024) block.compression_mode = 0;
		
		/*- Beginning ---- Analyze ------------*/
		
		GET_TSC(p1);
		Analysis(buffer1, buffer1 + len);
		GET_TSC(p2);

		STAT_ADD_TIME(time_ana, p2, p1);
		STAT_ADD_SIZE(kb_ana, len);

		/*- End ---------- Analyze ------------*/
		
		/* trick for 'Canterbury Corpus: kennedy.xls' !, delta-encoding with record size of 13 */
		if (((uint32*)buffer1)[10] == 161480704 && ((uint32*)buffer1)[20] == 60818693)
		{
			uint  i;
			uint8 *b8_out = buffer2, *b8;

			for (i = 0; i < 13; ++i)
				for (b8 = buffer1 + 2320 + i; b8 < buffer1 + len; b8 += 13)
					*b8_out++ = *b8 - *(b8-13);
			memcpy(buffer1 + 2320, buffer2, len - 2320);
			block.rle_encoding = true;
			block.type = NO_TYPE;
			block.mm_type = 6;
		}

		/*- Beginning ---- RLE Coding ---------*/

		if (block.rle_encoding == true)
		{
			uint32 rle_len;

			GET_TSC(p1);
			rle_len = RLE_Coding(buffer1, buffer2, buffer1 + len);
			GET_TSC(p2);

			STAT_ADD_TIME(time_rle, p2, p1);
			STAT_ADD_SIZE(kb_rle, len);

			len = rle_len;
			memcpy(buffer1, buffer2, len);
		}

		/*- End ---------- RLE Coding ---------*/

		/*- Beginning ---- MM Coding ----------*/

		if ((len > 128 * 1024) 
			& ((block.type == BIN) | (block.type == NO_TYPE)) 
			& (block.multimedia_test == true))
		{
			uint res;

			GET_TSC(p1);
			res = MM_Test(buffer1 + 512, buffer1 + len);
			GET_TSC(p2);

			STAT_ADD_TIME(time_ana, p2, p1);

			if (res != 0)
			{
				block.mm_type = res;
				block.type = MULTIMEDIA;
			}
		}

		if (block.mm_type != 0)
		{
			GET_TSC(p1);
			MM_Coding(buffer1, buffer1 + len);
			GET_TSC(p2);

			STAT_ADD_TIME(time_mm, p2, p1);
			STAT_ADD_SIZE(kb_mm, len);
		}

		/*- End ---------- MM Coding ----------*/

		/*- Beginning ---- W32/BIN Coding -----*/

		if (block.type == WIN_EXE)	
		{
			GET_TSC(p1)
			Win32_Coding(buffer1, buffer1 + len);
			GET_TSC(p2);

			STAT_ADD_TIME(time_txt, p2, p1);
		}

		if (block.type == BIN || block.type == WIN_EXE)
		{
			GET_TSC(p1);
			Reverse_Block(buffer1, buffer1 + len);
			GET_TSC(p2);

			STAT_ADD_TIME(time_txt, p2, p1);
			STAT_ADD_SIZE(kb_txt, len);
		}

		/*- End ---------- W32/BIN Coding -----*/
		
		/*- Beginning ---- alpha/txt Cod. -----*/

		if (block.type == TEXT)
		{
			GET_TSC(p1);

			len = Filter1(buffer1, buffer2, len);

			memcpy(buffer1, buffer2, len);

			mem.buffer8 = (uint8*)MyRealloc(mem.buffer8, sizeof(uint8) * (len + RUN_LENGTH_MAX + 32) * 6);
			if (last_error != OK) return -1;

			buffer1 = mem.buffer8;

			len_max = MAX(len, len_max);

			GET_TSC(p2);

			STAT_ADD_TIME(time_txt, p2, p1);
			STAT_ADD_SIZE(kb_txt, len);
		}

		/*- End ---------- alpha/txt Cod. -----*/

		/*- Beginning ---- Phr. replacement ---*/

		if (block.english_encoding == true)
		{
			GET_TSC(p1);
			len = Filter2(buffer1, buffer1 + len);
			GET_TSC(p2);

			STAT_ADD_TIME(time_txt, p2, p1);
		}

		/*- End ---------- Phr. replacement ---*/
	
		/*- Beginning ---- BWT ----------------*/

		/* to avoid a bug if the block ends with a run of 0xFF */
		if (buffer1[len - 1] == 0xFF)
		{
			buffer1[len - 1] -= buffer1[len - 2];
			ff_bug = true;
		}

		BWT_Coding(len, &first, buffer1);

		if (last_error != OK) return -1;

		/*- End ---------- BWT ----------------*/

		/*- Beginning ---- MTF Coding ---------*/
		
		GET_TSC(p1);

		M1FF2_Coding(buffer1, buffer1 + len);
		
		/*- End ---------- MTF Coding ---------*/

		/*- Beginning ---- Split --------------*/

		buf_out1 = (uint8*)ROUND32(buffer1 + len);
		buffer2  = (uint8*)ROUND32(buf_out1 + len);
		buf_out2 = (uint8*)ROUND32(buffer2 + len);

		len2 = Split(buffer1, buffer1 + len, buffer2);

		GET_TSC(p2);

		STAT_ADD_TIME(time_mtf, p2, p1);
		STAT_ADD_SIZE(kb_mtf, len);

		/*- End ---------- Split --------------*/
		
		/*- Beginning ---- Arith Compression --*/

		block.buffer = buf_out1;

		GET_TSC(p1);
		tot1 = Zip_SM0(len, buffer1);
		GET_TSC(p2);

		STAT_ADD_TIME(time_st0, p2, p1);
		STAT_ADD_SIZE(kb_st0, len);

		if (last_error != OK) return -1;
		
		block.buffer = buf_out2;

		GET_TSC(p1);
		tot2 = Zip_SM1(len2, buffer2);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品成人在线观看| caoporn国产精品| 中文字幕亚洲在| 欧洲国内综合视频| 国产精品白丝jk白祙喷水网站| 国产精品成人免费在线| 日韩一级黄色大片| 色哟哟亚洲精品| 国产在线观看一区二区| 亚洲成av人在线观看| 国产精品国产三级国产aⅴ中文| 欧美精品xxxxbbbb| 91在线免费播放| 国产综合色在线| 亚洲成a人v欧美综合天堂 | 在线观看免费视频综合| 国产剧情一区二区| 日本视频在线一区| 一区二区三区欧美日韩| 国产精品色眯眯| 欧美精品一区二区三区在线播放| 欧美日韩一区二区在线观看| aa级大片欧美| 成人三级伦理片| 国产一区不卡在线| 久久福利资源站| 日韩主播视频在线| 亚洲网友自拍偷拍| 亚洲卡通欧美制服中文| 国产精品灌醉下药二区| 欧美高清在线视频| 久久久久久久久99精品| 精品国产自在久精品国产| 欧美三区在线观看| 91蝌蚪国产九色| www.欧美日韩国产在线| 国产成人免费在线| 国产精品18久久久久久久久 | 成人av在线资源| 国内久久精品视频| 久久国产精品99久久人人澡| 日韩av一级片| 人妖欧美一区二区| 日韩高清不卡一区| 七七婷婷婷婷精品国产| 男人的天堂亚洲一区| 首页国产欧美日韩丝袜| 视频一区视频二区中文字幕| 五月天一区二区三区| 日日欢夜夜爽一区| 秋霞成人午夜伦在线观看| 秋霞成人午夜伦在线观看| 日本成人在线一区| 精品在线免费视频| 国产精品亚洲第一区在线暖暖韩国 | 在线看日韩精品电影| 91福利在线观看| 欧美色视频在线| 这里只有精品99re| 欧美一区二区三区在线观看| 欧美va亚洲va国产综合| 久久久另类综合| 久久色中文字幕| 久久婷婷国产综合精品青草| 亚洲国产精品精华液网站| 99国内精品久久| 久久亚洲精精品中文字幕早川悠里| www国产成人| 欧美精品一区男女天堂| 5566中文字幕一区二区电影| 在线观看国产精品网站| 正在播放亚洲一区| 久久毛片高清国产| 一区二区三区在线免费视频| 午夜精品爽啪视频| 天堂久久一区二区三区| 日韩不卡免费视频| 成人性生交大片免费看中文| 91性感美女视频| 在线观看精品一区| 欧美一区二区视频在线观看| 91精品国产91久久久久久一区二区| 欧美色男人天堂| 日韩手机在线导航| 国产精品美女久久久久高潮| 国产精品国产三级国产三级人妇| 综合分类小说区另类春色亚洲小说欧美| 中文字幕一区二区三区不卡在线 | 中文字幕亚洲精品在线观看| 亚洲天堂免费看| 丝袜a∨在线一区二区三区不卡| 91网上在线视频| 国产日韩一级二级三级| 日韩免费视频一区二区| 久久精品亚洲国产奇米99| 亚洲自拍偷拍九九九| 国产在线精品视频| 欧美亚洲图片小说| 国产精品大尺度| 久久er99热精品一区二区| 久久激情综合网| 欧美日韩情趣电影| 丰满少妇久久久久久久| 日本91福利区| 欧美一区二区三区四区久久| 中文在线一区二区| 亚洲欧美欧美一区二区三区| 日韩精品国产精品| 日韩一区二区在线看片| 国产免费久久精品| 国产精品久久久久久久久晋中| 七七婷婷婷婷精品国产| 色综合久久综合网欧美综合网| 欧美变态tickle挠乳网站| 亚洲高清视频中文字幕| 9久草视频在线视频精品| 欧美精品一区二区三区很污很色的| 亚洲国产精品一区二区www在线| 成人爽a毛片一区二区免费| 日韩你懂的在线播放| 午夜精品久久久久久久蜜桃app| 成人sese在线| 国产三级欧美三级日产三级99| 日本系列欧美系列| 精品视频一区二区不卡| 曰韩精品一区二区| 91一区二区三区在线播放| 久久精品欧美日韩精品| 韩国一区二区在线观看| 日韩视频一区在线观看| 日韩电影在线观看一区| 欧美日韩激情一区| 亚洲第一成人在线| 91视频国产观看| 中文字幕一区二区三中文字幕 | 亚洲aⅴ怡春院| 在线观看www91| 亚洲另类色综合网站| 94-欧美-setu| 亚洲精品日韩专区silk| 色婷婷亚洲精品| 亚洲综合一区二区三区| 在线观看不卡一区| 亚洲午夜免费电影| 欧美日韩成人在线一区| 午夜伦理一区二区| 亚洲国产高清在线观看视频| 福利电影一区二区| 国产精品初高中害羞小美女文 | 欧美精品在欧美一区二区少妇| 亚洲一区二区欧美| 欧美三级在线视频| 日韩国产精品91| 日韩精品一区二区三区老鸭窝| 久久精品av麻豆的观看方式| 久久亚洲一级片| 成人网在线播放| 亚洲美腿欧美偷拍| 欧美伦理影视网| 蜜桃久久精品一区二区| 久久综合狠狠综合久久综合88| 高清成人免费视频| 亚洲精品一二三四区| 欧美日韩午夜在线| 精品一区二区影视| 国产精品久久久久久久久免费相片 | 欧美视频在线一区二区三区| 天天操天天干天天综合网| 欧美一区二区三区四区久久| 激情综合网av| 国产精品久久久久国产精品日日| 色偷偷一区二区三区| 日本亚洲免费观看| 色婷婷综合五月| 亚洲高清视频的网址| 精品久久免费看| av影院午夜一区| 亚洲成人av在线电影| 26uuu亚洲综合色欧美| 99久久伊人精品| 日韩av午夜在线观看| 国产午夜精品一区二区三区视频| 99国产精品久| 蜜臀久久99精品久久久久宅男| 国产精品久久久久影院亚瑟| 9191久久久久久久久久久| 国产精品自在在线| 亚洲高清一区二区三区| 久久精品无码一区二区三区| 欧美日韩在线一区二区| 国产乱码精品一区二区三区av| 一区二区三区在线播放| 精品国产乱码久久久久久夜甘婷婷| 99国产精品久久| 精品一区二区免费在线观看| 亚洲乱码国产乱码精品精的特点| 精品国免费一区二区三区| 91久久香蕉国产日韩欧美9色| 国内精品国产三级国产a久久 | 一区二区三区欧美|