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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fixheap.c

?? wince3.0的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Copyright (c) 1999-2000 Microsoft Corporation.  All rights reserved. */
#include <windows.h>
#include <coredll.h>
#include "heap.h"
#include <memory.h>

// layout: (DBG = with sentinels, RET = without sentinels)
//	[4 byte size in bytes not including headers, H_FREEBLOCK set if free]
//	[4 byte signature set to FREESIGHEAD/ALLOCSIGHEAD in DBG, unused on 64 bit
//		machines RET, not present on 32 bit machines RET]
//	[n byte free or data]
//	[4 byte signature set to FREESIGTAIL/ALLOCSIGTAIL in DBG, not present in RET]
//	[4 byte unused on 64 bit machines in DBG, else not present]

extern DWORD pagemask;

extern heap ProcessHeap;

_inline void INITFREEBLOCK(LPVOID p, UINT size) {
	HEADPTR(p)->size = (size & H_SIZEMASK) | H_FREEBLOCK;
#if HEAP_SENTINELS
	HEADPTR(p)->sig = FREESIGHEAD;
	TAILPTR(p)->sig = FREESIGTAIL;
#endif
#ifdef DEBUG
	memset(HEAPTOPTR(p),0xcc,size);
#endif
}

_inline void INITUSEDBLOCK(LPVOID p, UINT size) {
	HEADPTR(p)->size = size & H_SIZEMASK;
#if HEAP_SENTINELS
	HEADPTR(p)->sig = ALLOCSIGHEAD;
	TAILPTR(p)->sig = ALLOCSIGTAIL;
#endif
}

_inline void INITDEADBLOCK(LPVOID p, UINT size) {
	HEADPTR(p)->size = (size & H_SIZEMASK) | H_DEADBLOCK;
#if HEAP_SENTINELS
	HEADPTR(p)->sig = DEADSIGHEAD;
	TAILPTR(p)->sig = DEADSIGTAIL;
#endif
}

BOOL IsSigValid(pheap pHeap, LPVOID ptr, DWORD allowfree) {
	if (!pHeap->pMem || ((DWORD)ptr < (DWORD)pHeap->pMem) || ((DWORD)ptr > (DWORD)pHeap->pHigh - HDRSIZE - TLRSIZE))
        return FALSE;
	if (!allowfree && !ISINUSE(ptr))
		return FALSE;
#if HEAP_SENTINELS
	if (HEADPTR(ptr)->sig != (ISFREE(ptr) ? FREESIGHEAD : ISDEAD(ptr) ? DEADSIGHEAD : ALLOCSIGHEAD))
		return FALSE;
#endif
	if ((DWORD)TAILPTR(ptr) + TLRSIZE > (DWORD)pHeap->pHigh)
		return FALSE;
#if HEAP_SENTINELS
	if (TAILPTR(ptr)->sig != (ISFREE(ptr) ? FREESIGTAIL : ISDEAD(ptr) ? DEADSIGTAIL :ALLOCSIGTAIL))
		return FALSE;
#endif
	return TRUE;
}

// Extend a free block, only through other free blocks
void GrowFree(pheap pHeap, LPVOID ptr) {
	LPVOID newptr;
	DWORD growth, numnew;

	growth = numnew = 0;
	newptr = NEXTBLOCK(pHeap, ptr);
	while ((newptr > ptr) && ISFREE(newptr)) {
		growth += ITEMSIZE(newptr) + HDRSIZE + TLRSIZE;
		numnew++;
		newptr = NEXTBLOCK(pHeap, newptr);
	}
	if (growth) {
		HEADPTR(ptr)->size += growth;
		pHeap->dwFree += (HDRSIZE+TLRSIZE)*numnew;
#ifdef DEBUG
		memset(HEAPTOPTR(ptr),0xcc,ITEMSIZE(ptr));
#endif
	}
	if (pHeap->dwMaxLeft && (pHeap->dwMaxLeft < ITEMSIZE(ptr)))
		pHeap->dwMaxLeft = ITEMSIZE(ptr);
}

// Extend a free/dead block through other free/dead blocks if it will yield a free block of 'size'
DWORD MakePotentialSize(pheap pHeap, LPBYTE ptr, DWORD size) {
	LPBYTE ptr2 = ptr;
	int deadbytes = 0, numpieces = 0, lastdead = 0, size2, maxhit;
	do {
		numpieces++;
		if (lastdead = ISDEAD(ptr2)) {
			maxhit = (ITEMSIZE(ptr2) == pHeap->dwMaxLeft);
			deadbytes += ITEMSIZE(ptr2);
		}
		ptr2 = NEXTBLOCK(pHeap,ptr2);
	} while ((ptr2 != pHeap->pMem) && !ISINUSE(ptr2) && (ptr2 < ptr + size + HDRSIZE + TLRSIZE));
	if (ptr2 == pHeap->pMem)
		ptr2 = pHeap->pHigh;
	if (ptr + HDRSIZE + TLRSIZE + size > ptr2)
		return FALSE;
    pHeap->flOptions |= HEAP_IS_CHANGING_VM;
	if (lastdead) {
		LPBYTE tmpptr1, tmpptr2;
		tmpptr1 = (LPBYTE)((DWORD)(ptr + HDRSIZE + size + TLRSIZE + HDRSIZE + pagemask) & ~pagemask);
		tmpptr2 = (LPBYTE)((DWORD)(ptr2 - TLRSIZE) & ~pagemask);
		if (tmpptr1 < tmpptr2) {
			deadbytes -= ptr2 - TLRSIZE - tmpptr1;
			size2 = ptr2 - TLRSIZE - tmpptr1;
			ptr2 = tmpptr1 - HDRSIZE;
		} else
			lastdead = 0;
	}
	// since this does whole pages, it'll get the header for ptr2 if we're doing a lastdead
	if (!VirtualAlloc(ptr,ptr2-ptr,MEM_COMMIT, PAGE_READWRITE)) {
	    pHeap->flOptions &= ~HEAP_IS_CHANGING_VM;
		return FALSE;
	}
	if (lastdead) {
		INITDEADBLOCK(ptr2,size2);
		numpieces--;
		if (pHeap->dwMaxLeft && (pHeap->dwMaxLeft < ITEMSIZE(ptr2)))
			pHeap->dwMaxLeft = ITEMSIZE(ptr2);
		else if (maxhit)
			pHeap->dwMaxLeft = 0;
	}
    pHeap->flOptions &= ~HEAP_IS_CHANGING_VM;
	INITFREEBLOCK(ptr,ptr2-ptr-HDRSIZE-TLRSIZE);
	numpieces--;
	pHeap->dwCommitted += deadbytes;
	pHeap->dwFree += deadbytes;
    pHeap->dwFree += numpieces*(HDRSIZE+TLRSIZE);
	if (pHeap->dwMaxLeft && (pHeap->dwMaxLeft < ITEMSIZE(ptr)))
		pHeap->dwMaxLeft = ITEMSIZE(ptr);

	return TRUE;
}

// Break a free block into two pieces (if enough room)
void SplitFreeBlock(pheap pHeap, LPVOID ptr, UINT size) {
	UINT cursize;
	LPVOID ptr2;
	cursize = ITEMSIZE(ptr);
	if (pHeap->dwMaxLeft == cursize)
		pHeap->dwMaxLeft = 0;
	if (cursize - size > HDRSIZE + TLRSIZE) {
		ptr2 = (LPVOID)((DWORD)ptr + HDRSIZE + TLRSIZE + size);
		INITFREEBLOCK(ptr,size);
		INITFREEBLOCK(ptr2,cursize-size-HDRSIZE-TLRSIZE);
		// needed because of the "extension" case, since if we allowed the original free extension to be
		// added, it would immediately be removed and we'd set to 0.
		if (pHeap->dwMaxLeft && (pHeap->dwMaxLeft < ITEMSIZE(ptr2)))
			pHeap->dwMaxLeft = ITEMSIZE(ptr2);
		DEBUGCHK(pHeap->dwFree >= HDRSIZE + TLRSIZE);
		pHeap->dwFree -= HDRSIZE + TLRSIZE;
	}
}

// Shrink a block (splitting off another free block)
void ShrinkBlock(pheap pHeap, LPVOID ptr, UINT size) {
	UINT cursize;
	LPVOID ptr2;

	cursize = ITEMSIZE(ptr);
	if (cursize - size > HDRSIZE + TLRSIZE) {
		ptr2 = (LPVOID)((DWORD)ptr + HDRSIZE + TLRSIZE + size);
		HEADPTR(ptr)->size = size;
#if HEAP_SENTINELS
		TAILPTR(ptr)->sig = ALLOCSIGTAIL;
#endif
		INITFREEBLOCK(ptr2,cursize-size-HDRSIZE-TLRSIZE);
		if (pHeap->dwMaxLeft && (pHeap->dwMaxLeft < ITEMSIZE(ptr2)))
			pHeap->dwMaxLeft = ITEMSIZE(ptr2);
		pHeap->dwFree += cursize-size-HDRSIZE-TLRSIZE;
	}
}

#ifdef DEBUG

UINT WINAPI _HeapDump(HLOCAL hHeap) {
    pheap  pHeap = (pheap) hHeap;
	LPVOID ptr;
	UINT retval = 0;
	vaheapalloc *pvalloc;
    if (!pHeap)
        pHeap = &ProcessHeap;
    EnterCriticalSection(&hcs);
    try {
		if (!pHeap->pMem) {
	        DEBUGMSG(1, (TEXT("_HeapDump: Heap empty\r\n")));
	        goto done;
	    }
		while (pHeap) {
		    DEBUGMSG(1, (TEXT("flOptions:     0x%08X   pMem:    0x%08X\r\npHigh:         0x%08X   pLast:   0x%08X\r\ndwMaximumSize: 0x%08X   pCur:    0x%08X\r\ndwCommitted:   0x%08X   HDRSIZE: 0x%08X\r\ndwFree:        0x%08X   TLRSIZE: 0x%08X\r\n\r\n"),
    		             pHeap->flOptions,
        		         pHeap->pMem,
            		     pHeap->pHigh,
	                	 pHeap->dwLastCompact,
		                 pHeap->dwMaximumSize,
	    	             pHeap->pCur,
	        	         pHeap->dwCommitted,
	            	     HDRSIZE,
		                 pHeap->dwFree,
		                 TLRSIZE));
			ptr = pHeap->pMem;
			do {
				if (!IsSigValid(pHeap,ptr,1)) {
					retval = 1;
					goto done;
				}
#if HEAP_SENTINELS
		        DEBUGMSG(1, (TEXT("0x%08X %s size: 0x%08X sig: 0x%08X\r\n"),
	    	             ptr, ISFREE(ptr) ? TEXT("FREEBLOCK") : ISDEAD(ptr) ? TEXT("DEADBLOCK") : TEXT("USEDBLOCK"),
	        	         ITEMSIZE(ptr), HEADPTR(ptr)->sig));
		        DEBUGMSG(1, (TEXT("0x%08X                            sig: 0x%08X\r\n"),
	    	             TAILPTR(ptr), TAILPTR(ptr)->sig));
#else
		        DEBUGMSG(1, (TEXT("0x%08X %s size: 0x%08X\r\n"),
	    	             ptr, ISFREE(ptr) ? TEXT("FREEBLOCK") : ISDEAD(ptr) ? TEXT("DEADBLOCK") :TEXT("USEDBLOCK"),
	        	         ITEMSIZE(ptr)));
#endif
			} while ((ptr = NEXTBLOCK(pHeap, ptr)) != pHeap->pMem);
			for (pvalloc = pHeap->pVallocs; pvalloc; pvalloc = pvalloc->pnext)
				DEBUGMSG(1,(TEXT("Extended block at 0x%8.8lx, length 0x%8.8lx\r\n"),pvalloc->pBase,pvalloc->dwSize));
			pHeap = pHeap->pGrowthHeap;
		}
	    DEBUGMSG(1, (TEXT("-----------------------------------------------------\r\n")));
done:
		;
	} except (EXCEPTION_EXECUTE_HANDLER) {
		retval = 1;
	}
    LeaveCriticalSection(&hcs);
	return retval;
}

#endif

BOOL WINAPI HeapValidate(HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem) {
	BOOL retval = FALSE;
	LPVOID ptr, ptr2;
	pheap pHeap;
	vaheapalloc *pvalloc;
    if (dwFlags & ~HEAP_NO_SERIALIZE) {
	    SetLastError(ERROR_INVALID_PARAMETER);
		return FALSE;
    }
	EnterCriticalSection(&hcs);
	try {
		if (lpMem) {
			ptr = PTRTOHEAP(lpMem);
			for (pHeap = (pheap)hHeap; pHeap; pHeap = pHeap->pGrowthHeap) {
				 if ((ptr >= pHeap->pMem) && (ptr < pHeap->pHigh)) {
				 	retval = IsSigValid(pHeap,ptr,0);
				 	goto done;
				}
				for (pvalloc = pHeap->pVallocs; pvalloc; pvalloc = pvalloc->pnext) {
					if (pvalloc->pBase == lpMem) {
						if (!((DWORD)pvalloc->pBase & 0xffff) && (pvalloc->dwSize >= CE_VALLOC_MINSIZE))
							retval = TRUE;
						goto done;
					}
				}
			}
		} else {
			for (pHeap = (pheap)hHeap; pHeap; pHeap = pHeap->pGrowthHeap) {
				if (ptr = pHeap->pMem) {
					do {
						if (!IsSigValid(pHeap,ptr,1))
							goto done;
						ptr2 = (LPVOID)((DWORD)ptr + HDRSIZE + ITEMSIZE(ptr) + TLRSIZE);
						if (ptr2 <= ptr)
							goto done;
					} while ((ptr = ptr2) != pHeap->pHigh);
				}
				for (pvalloc = pHeap->pVallocs; pvalloc; pvalloc = pvalloc->pnext) {
					if (((DWORD)pvalloc->pBase & 0xffff) || (pvalloc->dwSize < CE_VALLOC_MINSIZE))
						goto done;
				}
			}
			retval = TRUE;
		}
done:
		;
	} except (EXCEPTION_EXECUTE_HANDLER) {
		retval = FALSE;
	}
	LeaveCriticalSection(&hcs);
#ifdef DEBUG
	if (!retval)
		_HeapDump(hHeap);
#endif
	return retval;
}

// Initialize a heap
BOOL SetupFixedHeap(pheap pHeap) {
	LPVOID pMem;
	if (!(pMem = VirtualAlloc(NULL,pHeap->dwMaximumSize,MEM_RESERVE,PAGE_NOACCESS)))
        return FALSE;
	pHeap->dwCommitted = pagemask + 1;
    if (!VirtualAlloc(pMem,pHeap->dwCommitted, MEM_COMMIT, PAGE_READWRITE)) {
    	VirtualFree(pMem,0,MEM_RELEASE);
		return FALSE;
	}
	DEBUGCHK(pHeap->dwCommitted >= HDRSIZE + TLRSIZE);
	pHeap->dwFree = pHeap->dwCommitted - HDRSIZE - TLRSIZE;
	pHeap->pHigh = (LPVOID)((LPBYTE)pMem + pHeap->dwCommitted);
	INITFREEBLOCK(pMem,pHeap->dwFree);
	pHeap->pCur = pMem;
	pHeap->pMem = pMem;	// heap is now initialized - this must come LAST!
	pHeap->dwMaxLeft = ITEMSIZE(pHeap->pCur);
	return TRUE;
}

LPBYTE InitSharedHeap(LPBYTE pMem, DWORD size, DWORD reserve) {
	LPBYTE pReserved, pData;
	pheap pHeap;
	LPVOID pAlloc;
	pReserved = pMem + ((sizeof(heap)+ALIGNMASK)&~ALIGNMASK);
	if (size) {
	    pAlloc = VirtualAlloc(pMem,pagemask+1, MEM_COMMIT, PAGE_READWRITE);
    	DEBUGCHK(pAlloc == pMem);
		pHeap = (pheap)pMem;
		pData = pReserved + ((reserve+ALIGNMASK)&~ALIGNMASK);
		size -= (pData - pMem);
		size &= ~ALIGNMASK;
		pHeap->dwCommitted   = pagemask + 1 - (pData - pMem);
		pHeap->pVallocs      = 0;
		pHeap->pGrowthHeap   = 0;
	    pHeap->flOptions     = HEAP_IS_SHARED;
	    pHeap->dwMaximumSize = size;
	    pHeap->pMem          = pData;
	    pHeap->pCur          = pData;
	    pHeap->pHigh         = (LPVOID)((LPBYTE)pData+pHeap->dwCommitted);
		DEBUGCHK(pHeap->dwCommitted >= HDRSIZE-TLRSIZE);
	    pHeap->dwFree        = pHeap->dwCommitted-HDRSIZE-TLRSIZE;
	    pHeap->dwLastCompact = 0;
		INITFREEBLOCK(pData,pHeap->dwFree);
	}
	return pReserved;
}

// Get size of heap block
DWORD FixedHeapSize(pheap pHeap, LPVOID ptr) {
	LPVOID ptr2;
	vaheapalloc *pva;
	pheap pTrav;
	EnterCriticalSection(&hcs);
	ptr2 = PTRTOHEAP(ptr);
	for (pTrav = pHeap; pTrav; pTrav = pTrav->pGrowthHeap) {
		if (pTrav->pMem && IsSigValid(pTrav,ptr2,0)) {
			LeaveCriticalSection(&hcs);
			return ITEMSIZE(ptr2);
		}
	}
	for (pva = pHeap->pVallocs; pva; pva = pva->pnext)
		if (pva->pBase == ptr) {
			LeaveCriticalSection(&hcs);
			return pva->dwSize;
		}
	LeaveCriticalSection(&hcs);
	return (DWORD)-1;
}

// Free a heap block
BOOL FixedHeapFree(pheap pHeap, LPVOID ptr) {
	LPVOID ptr2;
	vaheapalloc *pva, *pvaprev;
	pheap pTrav;
	ptr2 = PTRTOHEAP(ptr);
	for (pTrav = pHeap; pTrav; pTrav = pTrav->pGrowthHeap) {
		if (pTrav->pMem && IsSigValid(pTrav,ptr2,0)) {
			pTrav->dwFree += ITEMSIZE(ptr2);
			INITFREEBLOCK(ptr2,ITEMSIZE(ptr2));
			GrowFree(pTrav,ptr2);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草国产精品亚洲专区无| 亚洲男人的天堂一区二区| 欧美日韩另类一区| 97国产精品videossex| 成人免费三级在线| bt欧美亚洲午夜电影天堂| 成人av网址在线| 色天天综合色天天久久| 一本色道久久综合亚洲aⅴ蜜桃| av一区二区三区| 色欲综合视频天天天| 欧美性生活一区| 91精品婷婷国产综合久久性色| 欧美一级日韩一级| 337p粉嫩大胆噜噜噜噜噜91av| 精品国产一区二区三区av性色| 久久久久久久网| 中文字幕制服丝袜成人av| 一级精品视频在线观看宜春院| 亚洲一二三区视频在线观看| 日韩av网站在线观看| 国产综合色视频| 一本一道久久a久久精品| 欧美日韩高清在线播放| 久久久久久一二三区| 亚洲欧洲av在线| 日韩成人午夜电影| 懂色av一区二区三区免费看| 在线看日本不卡| 2017欧美狠狠色| 亚洲精品久久久蜜桃| 久久精品99国产精品日本| 国产91丝袜在线观看| 欧美午夜在线观看| 久久久欧美精品sm网站| 亚洲女人****多毛耸耸8| 蜜桃久久久久久| 色婷婷香蕉在线一区二区| 日韩视频在线一区二区| 亚洲视频在线一区二区| 美女mm1313爽爽久久久蜜臀| 不卡的av在线播放| 精品粉嫩超白一线天av| 亚洲综合色自拍一区| 日本va欧美va瓶| 91碰在线视频| 国产亚洲一区字幕| 丝袜a∨在线一区二区三区不卡| 国产成+人+日韩+欧美+亚洲| 欧美一区二区成人| 亚洲自拍另类综合| 播五月开心婷婷综合| 精品国产一区二区三区忘忧草| 一区二区三区产品免费精品久久75| 久久国产精品99久久人人澡| 93久久精品日日躁夜夜躁欧美| 日韩精品一区二区在线| 亚洲一区二区三区自拍| 99久久夜色精品国产网站| 精品福利一二区| 日本不卡一区二区| 在线日韩av片| 一区二区三区自拍| 94-欧美-setu| 亚洲男女毛片无遮挡| 99视频精品全部免费在线| 欧美激情在线看| 国产精品91xxx| 久久亚洲春色中文字幕久久久| 日韩电影在线看| 91精品国产丝袜白色高跟鞋| 舔着乳尖日韩一区| 欧美日本韩国一区| 日韩国产一二三区| 欧美一区二区三区不卡| 日本大胆欧美人术艺术动态 | 26uuu精品一区二区三区四区在线| 香蕉成人啪国产精品视频综合网 | 欧美日韩一区 二区 三区 久久精品| 国产人成亚洲第一网站在线播放| 国产一区二区不卡| 国产欧美一区二区三区在线老狼| 国产一区二区三区精品欧美日韩一区二区三区 | 91在线观看下载| 亚洲天天做日日做天天谢日日欢 | 欧美一卡二卡三卡| 理论片日本一区| 欧美videofree性高清杂交| 精品在线观看视频| 久久综合色8888| 99久久伊人网影院| 亚洲国产精品麻豆| 欧美videos中文字幕| 成人av综合在线| 亚洲国产综合91精品麻豆| 91麻豆精品国产自产在线 | 国产日本欧美一区二区| 91免费国产在线| 天天av天天翘天天综合网| 欧美电影免费观看高清完整版 | 中文字幕一区二区5566日韩| 91美女精品福利| 日本人妖一区二区| 欧美激情一区二区三区蜜桃视频| 99精品视频在线观看免费| 亚洲乱码日产精品bd| 日韩精品一区二区三区视频播放| 国产精品888| 一区二区三区电影在线播| 欧美一区二区高清| 成人动漫一区二区在线| 亚洲成人动漫在线免费观看| 久久久综合网站| 一本一道波多野结衣一区二区| 男人的天堂久久精品| 久久精品人人做人人综合| 在线亚洲免费视频| 九九国产精品视频| 亚洲另类在线视频| 精品久久国产字幕高潮| 色婷婷av一区二区三区软件 | 91在线看国产| 精品一区二区三区在线视频| 一区二区三区四区在线免费观看| 精品卡一卡二卡三卡四在线| 在线观看av不卡| 国产xxx精品视频大全| 午夜一区二区三区视频| 国产精品嫩草久久久久| 欧美成人精品二区三区99精品| 99精品1区2区| 国产精品1024久久| 蓝色福利精品导航| 亚洲国产综合人成综合网站| 国产精品久久久久久福利一牛影视| 日韩精品一区二区三区蜜臀 | 成人激情视频网站| 久久99九九99精品| 日本欧美一区二区在线观看| 亚洲自拍偷拍九九九| 亚洲乱码国产乱码精品精小说 | 另类人妖一区二区av| 亚洲一区二区精品3399| 亚洲欧洲中文日韩久久av乱码| 久久久精品欧美丰满| 精品少妇一区二区| 日韩一区二区在线看片| 欧美色精品在线视频| 色偷偷88欧美精品久久久| 99re这里都是精品| 成人av网站在线观看免费| 粉嫩av一区二区三区| 丁香激情综合国产| 国产成人亚洲精品青草天美| 国产成a人亚洲精| 国产99一区视频免费| 国产成人aaa| yourporn久久国产精品| 成人激情开心网| 99久久精品国产一区二区三区| 成人国产精品免费观看视频| 丁香婷婷综合激情五月色| 国产精品一区三区| 成人午夜又粗又硬又大| av爱爱亚洲一区| 欧美中文字幕不卡| 欧美一区二区视频在线观看| 精品国产123| 国产精品伦一区| 亚洲视频一二三| 亚洲国产美女搞黄色| 日韩高清在线不卡| 国内偷窥港台综合视频在线播放| 国产一区二区电影| 色综合天天综合在线视频| 欧美性猛交一区二区三区精品| 欧美日韩一级二级三级| 欧美电影免费观看高清完整版在线观看| 欧美一区二区久久| 中文字幕中文在线不卡住| 亚洲成人av在线电影| 国产美女精品一区二区三区| 成人免费黄色大片| 欧美日韩国产精品成人| 国产午夜亚洲精品午夜鲁丝片 | 在线播放国产精品二区一二区四区 | 欧美三级乱人伦电影| 欧美电影免费观看高清完整版在| 久久久久久久久久看片| 亚洲午夜精品17c| 国产成人精品免费在线| 欧美在线免费播放| 国产午夜精品一区二区三区视频 | 国产麻豆欧美日韩一区| 色狠狠综合天天综合综合| 欧美xxxxx裸体时装秀| 亚洲免费电影在线| 国产一区三区三区| 欧美老肥妇做.爰bbww| 中文字幕亚洲视频|