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

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

?? dcurecs.pas

?? 反匯編delphi的.dcu文件至匯編代碼的工具的所有源代碼, 用delphi/pascal實(shí)現(xiàn), 反向工程borland delphi寫的程序必備
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
unit DCURecs;
(*
The DCU records module of the DCU32INT utility by Alexei Hmelnov.
It contains classes for representation of DCU declarations and
definitions in memory. 
----------------------------------------------------------------------------
E-Mail: alex@icc.ru
http://hmelnov.icc.ru/DCU/
----------------------------------------------------------------------------

See the file "readme.txt" for more details.

------------------------------------------------------------------------
                             IMPORTANT NOTE:
This software is provided 'as-is', without any expressed or implied warranty.
In no event will the author be held liable for any damages arising from the
use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented, you must not
   claim that you wrote the original software.
2. Altered source versions must be plainly marked as such, and must not
   be misrepresented as being the original software.
3. This notice may not be removed or altered from any source
   distribution.
*)
interface

uses
  SysUtils, Classes, DCU_In, DCU_Out, DasmDefs, FixUp;

type
{ Auxiliary data types }

PLocVarRec = ^TLocVarRec;
TLocVarRec = record
  sym: integer; //Symbol # in the symbol table, 0 - proc data end
  ofs: integer; //Offset in procedure code
  frame: integer; //-1(0x7f)-symbol end, else - symbol start 0-EAX, 1-EDX,
    //2-ECX, 3-EBX, 4-ESI...
end ;

PLocVarTbl = ^TLocVarTbl;
TLocVarTbl = array[Word] of TLocVarRec;

TDeclListKind = (dlMain,dlMainImpl,dlArgs,dlArgsT,dlEmbedded,dlFields,
  dlClass,dlInterface,dlDispInterface,dlUnitAddInfo);

TDeclSecKind = (skNone,skLabel,skConst,skType,skVar,skThreadVar,skResStr,
  skExport,skProc,skPrivate,skProtected,skPublic,skPublished);

type

PTDCURec = ^TDCURec;
TDCURec = class
  Next: TDCURec;
  function GetName: PName; virtual; abstract;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; virtual;
  function NameIsUnique: boolean; virtual;
  procedure ShowName; virtual; abstract;
  procedure Show; virtual; abstract;
  property Name: PName read GetName;
end ;

TBaseDef = class(TDCURec)
  FName: PName;
  Def: PDef;
  hUnit: integer;
  constructor Create(AName: PName; ADef: PDef; AUnit: integer);
  procedure ShowName; override;
  procedure Show; override;
  procedure ShowNamed(N: PName);
  function GetName: PName; override;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
end ;

TImpKind=Char;

TImpDef = class(TBaseDef)
  ik: TImpKind;
  FNameIsUnique: boolean;
//  ImpRec: TDCURec;
  Inf: integer;
  constructor Create(AIK: TImpKind; AName: PName; AnInf: integer; ADef: PDef; AUnit: integer);
  procedure Show; override;
//  procedure GetImpRec;
  function NameIsUnique: boolean; override;
end ;

TDLLImpRec = class(TBaseDef{TImpDef})
  NDX: integer;
  constructor Create(AName: PName; ANDX: integer; ADef: PDef; AUnit: integer);
  procedure Show; override;
end ;

TImpTypeDefRec = class(TImpDef{TBaseDef})
  RTTIOfs,RTTISz: Cardinal; //L: Byte;
  hImpUnit: integer;
  ImpName: PName;
  constructor Create(AName: PName; AnInf: integer; ARTTISz: Cardinal{AL: Byte}; ADef: PDef; AUnit: integer);
  procedure Show; override;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
end ;

type

TNameDecl = class(TDCURec)
  Def: PNameDef;
  hDecl: integer;
  constructor Create0;
  constructor Create;
  destructor Destroy; override;
  procedure ShowName; override;
  procedure Show; override;
  procedure ShowDef(All: boolean); virtual;
  function GetName: PName; override;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
  function GetSecKind: TDeclSecKind; virtual;
  function IsVisible(LK: TDeclListKind): boolean; virtual;
  function GetTag: TDCURecTag;
end ;

TNameFDecl = class(TNameDecl)
  F: TNDX;
  Inf: integer;
  B2: TNDX; //D8+
  constructor Create(NoInf: boolean);
  procedure Show; override;
  function IsVisible(LK: TDeclListKind): boolean; override;
end ;

TTypeDecl = class(TNameFDecl)
  hDef: TDefNDX;
  constructor Create;
  function IsVisible(LK: TDeclListKind): boolean; override;
  procedure Show; override;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
  function GetSecKind: TDeclSecKind; override;
end ;

TVarDecl = class(TNameFDecl)
  hDT: TDefNDX;
  Ofs: Cardinal;
  constructor Create;
  procedure Show; override;
  function GetSecKind: TDeclSecKind; override;
end ;

TVarCDecl = class(TVarDecl)
  Sz: Cardinal;
  OfsR: Cardinal;
  constructor Create(OfsValid: boolean);
  procedure Show; override;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
  function GetSecKind: TDeclSecKind; override;
end ;

TAbsVarDecl = class(TVarDecl)
  procedure Show; override;
end ;

TTypePDecl = class(TVarCDecl{TTypeDecl})
  {B1: Byte;
  constructor Create;}
  constructor Create;
  procedure Show; override;
  function IsVisible(LK: TDeclListKind): boolean; override;
end ;

TThreadVarDecl = class(TVarDecl)
  function GetSecKind: TDeclSecKind; override;
end ;

//In Delphi>=8 they started to create this kind of records for string constants
TStrConstDecl = class({TVarCDecl}TNameFDecl)
  hDT: TDefNDX;
  Ofs: Cardinal;
  Sz: Cardinal;
  constructor Create;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
  function GetSecKind: TDeclSecKind; override;
  procedure Show; override;
end ;



TLabelDecl = class(TNameDecl)
  Ofs: Cardinal;
  constructor Create;
  procedure Show; override;
  function GetSecKind: TDeclSecKind; override;
  function IsVisible(LK: TDeclListKind): boolean; override;
end ;

TExportDecl = class(TNameDecl)
  hSym,Index: TNDX;
  constructor Create;
  procedure Show; override;
  function GetSecKind: TDeclSecKind; override;
end ;

TLocalDecl = class(TNameDecl)
  LocFlags: TNDX;
  hDT: TDefNDX;
  NDXB: TNDX;//B: Byte; //Interface only
  Ndx: TNDX;
  constructor Create(LK: TDeclListKind);
  procedure Show; override;
  function GetLocFlagsSecKind: TDeclSecKind;
  function GetSecKind: TDeclSecKind; override;
end ;

TMethodDecl = class(TLocalDecl)
  InIntrf: boolean;
  hImport: TNDX; //for property P:X read Proc{virtual,Implemented in parent class}
  //VMTNDX: integer; //Offset in VMT of VM=VMTNDX*SizeOf(Pointer)
  constructor Create(LK: TDeclListKind);
  procedure Show; override;
end ;

TClassVarDecl = class(TLocalDecl)
  procedure Show; override;
  function GetSecKind: TDeclSecKind; override;
end ;

{TSetDeft struc pas
  sd: Cardinal;
ends
}

TPropDecl = class(TNameDecl)
  LocFlags: TNDX;
  hDT: TNDX;
  NDX: TNDX;
  hIndex: TNDX;
  hRead: TNDX;
  hWrite: TNDX;
  hStored: TNDX;
  hDeft: TNDX;
  constructor Create;
  procedure Show; override;
  function GetSecKind: TDeclSecKind; override;
end ;

TDispPropDecl = class(TLocalDecl)
  procedure Show; override;
end ;

TConstDeclBase = class(TNameFDecl)
  hDT: TDefNDX;
  hX: Cardinal; //Ver>4
  ValPtr: Pointer;
  ValSz: Cardinal;
  Val: integer;
  constructor Create;
  procedure ReadConstVal;
  procedure ShowValue;
  procedure Show; override;
  function GetSecKind: TDeclSecKind; override;
end ;

TConstDecl = class(TConstDeclBase)
  constructor Create;
end ;
{
TResStrDef = class(TConstDeclBase)
  NDX: TNDX;
  NDX1: TNDX;
  B1: Byte;
  B2: Byte;
  V: TNDX; //Data type again - AnsiString
  RefOfs,RefSz: Cardinal;
  constructor Create;
  procedure Show; override;
  procedure SetMem(MOfs,MSz: Cardinal); override;
end ;}

TResStrDef = class(TVarCDecl)
  OfsR: Cardinal;
  constructor Create;
  procedure Show; override;
  function GetSecKind: TDeclSecKind; override;
end ;

TSetDeftInfo=class(TNameDecl{TDCURec, but it should be included into NameDecl list})
  hConst,hArg: TDefNDX;
  constructor Create;
  procedure Show; override;
end ;

TCopyDecl = class(TNameDecl)
  hBase: TDefNDX;
  Base: TNameDecl; //Just in case and for convenience
  constructor Create;
  procedure Show; override;
  function GetSecKind: TDeclSecKind; override;
end ;

(*
TProcDeclBase = class(TNameDecl)
  CodeOfs,AddrBase: Cardinal;
  Sz: TDefNDX;
  constructor Create;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
  function GetSecKind: TDeclSecKind; override;
end ;
*)

TProcCallKind = (pcRegister,pcCdecl,pcPascal,pcStdCall,pcSafeCall);

TMethodKind = (mkProc,mkMethod,mkConstructor,mkDestructor);

TProcDecl = class(TNameFDecl{TProcDeclBase})
  CodeOfs,AddrBase: Cardinal;
  Sz: TDefNDX;
 {---}
  B0: TNDX;
  VProc: TNDX;
  hDTRes: TNDX;
  Args: TNameDecl;
  Locals: TNameDecl;
  Embedded: TNameDecl;
  CallKind: TProcCallKind;
  MethodKind: TMethodKind; //may be this information is encoded by some flag, but
    //I can't detect it. May be it would be enough to analyse the structure of
    //the procedure name, but this way it will be safer.
  JustData: boolean; //This flag is turned on by Fixups from String typed consts
  FProcLocVarTbl: PLocVarTbl;
  FProcLocVarCnt: integer;
  constructor Create(AnEmbedded: TNameDecl; NoInf: boolean);
  destructor Destroy; override;
  function IsUnnamed: boolean;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
  function GetSecKind: TDeclSecKind; override;
  procedure ShowArgs;
  function IsProc: boolean;
  procedure ShowDef(All: boolean); override;
  procedure Show; override;
  function IsVisible(LK: TDeclListKind): boolean; override;
  function GetRegDebugInfo(ProcOfs: integer; hReg: THBMName; Ofs: integer): String;
end ;

TSysProcDecl = class(TNameDecl{TProcDeclBase})
  F: TNDX;
  Ndx: TNDX;
//  CodeOfs: Cardinal;
  constructor Create;
  procedure Show; override;
  function GetSecKind: TDeclSecKind; override;
end ;

//Starting from Delphi 8 Borlands begin to give complete proc. defs to system
//procedures
TSysProc8Decl = class(TProcDecl)
  F: TNDX;
  Ndx: TNDX;
//  CodeOfs: Cardinal;
  constructor Create;
//  procedure Show; override;
end ;



(*
TAtDecl = class(TNameDecl)
  //May be start of implementation?
  NDX: TNDX;
  NDX1: TNDX;
  constructor Create;
  procedure Show; virtual;
end ;
*)

TUnitAddInfo = class(TNameFDecl)
 //Ver 8.0 and higher, MSIL
  B: TNDX;
  Sub: TNameDecl;
  constructor Create;
  destructor Destroy; override;
  function IsVisible(LK: TDeclListKind): boolean; override;
end ;

TSpecVar = class(TVarDecl)
  procedure Show; override;
end ;

(*
TAddInfo6 = class(TNameDecl)
  V0,V1,V2,V3: TNDX;
  Ofs: Cardinal;
  Sz: Cardinal;
  constructor Create;
  procedure Show; override;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
end ;
*)
type

TTypeDef = class(TBaseDef)
//  hDecl: integer;
  RTTISz: TNDX; //Size of RTTI for type, if available
  Sz: TNDX; //Size of corresponding variable
  V: TNDX;
  RTTIOfs: Cardinal;
  constructor Create;
  destructor Destroy; override;
  procedure ShowBase;
  procedure Show; override;
  function SetMem(MOfs,MSz: Cardinal): Cardinal {Rest}; override;
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; virtual;
  function GetOfsQualifier(Ofs: integer): String; virtual;
  function GetRefOfsQualifier(Ofs: integer): String; virtual;
end ;

TRangeBaseDef = class(TTypeDef)
  hDTBase: TNDX;
  LH: Pointer;
  {Lo: TNDX;
  Hi: TNDX;}
  B: Byte;
  procedure GetRange(var Lo,Hi: TInt64Rec);
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
end ;

TRangeDef = class(TRangeBaseDef)
  constructor Create;
end ;

TEnumDef = class(TRangeBaseDef)
  Ndx: TNDX;
  NameTbl: TList;
  constructor Create;
  destructor Destroy; override;
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
end ;

TFloatDef = class(TTypeDef)
  B: Byte;
  constructor Create;
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
end ;

TPtrDef = class(TTypeDef)
  hRefDT: TNDX;
  constructor Create;
  function ShowRefValue(Ndx: TNDX; Ofs: Cardinal): boolean;
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
  function GetRefOfsQualifier(Ofs: integer): String; override;
end ;

TTextDef = class(TTypeDef)
  procedure Show; override;
end ;

TFileDef = class(TTypeDef)
  hBaseDT: TNDX;
  constructor Create;
  procedure Show; override;
end ;

TSetDef = class(TTypeDef)
  BStart: Byte; //0-based start byte number
  hBaseDT: TNDX;
  constructor Create;
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
end ;

TArrayDef = class(TTypeDef)
  B1: Byte;
  hDTNdx: TNDX;
  hDTEl: TNDX;
  constructor Create(IsStr: boolean);
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
  function GetOfsQualifier(Ofs: integer): String; override;
end ;

TShortStrDef = class(TArrayDef)
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
end ;

TStringDef = class(TArrayDef)
  function ShowRefValue(Ndx: TNDX; Ofs: Cardinal): boolean;
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
end ;

TVariantDef = class(TTypeDef)
  B: byte;
  constructor Create;
  procedure Show; override;
end ;

TObjVMTDef = class(TTypeDef)
  hObjDT: TNDX;
  Ndx1: TNDX;
  constructor Create;
  procedure Show; override;
end ;

TRecBaseDef = class(TTypeDef)
  Fields: TNameDecl;
  procedure ReadFields(LK: TDeclListKind);
  function ShowFieldValues(DP: Pointer; DS: Cardinal): integer {Size used};
  destructor Destroy; override;
  function GetParentType: TNDX; virtual;
  function GetFldOfsQualifier(Ofs: integer; TotSize: integer; Sorted: boolean): String;
  function GetFldProperty(Fld: TNameDecl; hDT: TNDX): TPropDecl;
end ;

TRecDef = class(TRecBaseDef)
  B2: Byte;
  constructor Create;
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
  function GetOfsQualifier(Ofs: integer): String; override;
end ;

TProcTypeDef = class(TRecBaseDef)
  NDX0: TNDX;//B0: Byte; //Ver>2
  hDTRes: TNDX;
  AddStart: Pointer;
  AddSz: Cardinal; //Ver>2
  CallKind: TProcCallKind;
  constructor Create;
  function IsProc: boolean;
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  function ProcStr: String;
  procedure ShowDecl(Braces: PChar);
  procedure Show; override;
end ;

TObjDef = class(TRecBaseDef)
  B03: Byte;
  hParent: TNDX;
  BFE: Byte;
  Ndx1: TNDX;
  B00: Byte;
  constructor Create;
  function ShowValue(DP: Pointer; DS: Cardinal): integer {Size used}; override;
  procedure Show; override;
  function GetParentType: TNDX; override;
  function GetOfsQualifier(Ofs: integer): String; override;
end ;

TClassDef = class(TRecBaseDef)
  hParent: TNDX;
//  InstBase: TTypeDef;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道久久综合亚洲精品按摩| 欧美怡红院视频| 亚洲激情第一区| 日韩视频免费观看高清完整版在线观看| 国产一区二区在线免费观看| 亚洲一区av在线| 中文字幕欧美国产| 欧美大尺度电影在线| 欧洲精品一区二区三区在线观看| thepron国产精品| 久久成人久久鬼色| 亚洲精品五月天| 国产色产综合产在线视频| 欧美乱妇一区二区三区不卡视频| 99久久婷婷国产综合精品| 韩国精品一区二区| 天天免费综合色| 亚洲一区二区三区四区在线| 日韩理论在线观看| 国产精品拍天天在线| 精品日韩一区二区三区免费视频| 欧美人妇做爰xxxⅹ性高电影| av亚洲精华国产精华精华| 国产乱码精品一区二区三区av | 国产精品激情偷乱一区二区∴| 91精品国产综合久久福利软件| 91丨porny丨蝌蚪视频| 成av人片一区二区| 成人性生交大合| 国产成人综合在线播放| 久久99精品国产麻豆婷婷洗澡| 日本网站在线观看一区二区三区| 亚洲高清在线视频| 亚洲第一主播视频| 亚洲国产视频网站| 亚洲综合一二区| 夜夜精品视频一区二区| 亚洲精品自拍动漫在线| 亚洲欧美日韩系列| 亚洲黄色av一区| 亚洲已满18点击进入久久| 亚洲精品欧美二区三区中文字幕| 日韩一区在线播放| ...av二区三区久久精品| 成人欧美一区二区三区在线播放| 国产精品美女久久久久av爽李琼| 国产欧美日韩另类视频免费观看| 久久久久久久久久久久久夜| 日本一区二区三区四区| 国产视频在线观看一区二区三区| 国产三级欧美三级日产三级99| 久久色视频免费观看| 久久久精品国产99久久精品芒果| 国产三级一区二区三区| 亚洲欧洲精品成人久久奇米网| 亚洲免费毛片网站| 亚洲成人激情社区| 久久国产夜色精品鲁鲁99| 国内成人精品2018免费看| 国产99久久久国产精品潘金| 99久久久久免费精品国产| 欧美亚洲自拍偷拍| 在线综合视频播放| 久久精品免费在线观看| 国产精品久久久久7777按摩| 一区二区三区91| 老司机精品视频一区二区三区| 国产激情一区二区三区四区 | 99国产精品久久| 欧美体内she精高潮| 欧美一级国产精品| 国产日韩欧美精品一区| 一区二区激情小说| 精品一区二区三区免费毛片爱 | 日韩午夜在线观看视频| 欧美激情综合五月色丁香 | 蜜桃在线一区二区三区| 国产精品亚洲一区二区三区在线 | 欧美视频在线观看一区| 欧美xxx久久| 亚洲色大成网站www久久九九| 日本女人一区二区三区| 成人av电影在线观看| 欧美天堂亚洲电影院在线播放| 2024国产精品视频| 亚洲影视在线观看| 成人免费观看av| 日韩三级免费观看| 日韩伦理免费电影| 国产一区二区三区免费播放| 在线观看视频91| 国产网站一区二区三区| 亚洲专区一二三| 国产成人啪午夜精品网站男同| 欧美亚洲禁片免费| 国产亚洲成aⅴ人片在线观看| 亚洲国产成人av好男人在线观看| 国产米奇在线777精品观看| 欧美日韩一区二区三区免费看| 久久精品一区二区三区不卡| 日日摸夜夜添夜夜添精品视频| 成人av电影在线观看| 久久综合九色综合97婷婷| 亚洲123区在线观看| 99麻豆久久久国产精品免费 | 亚洲成人动漫在线免费观看| 粉嫩高潮美女一区二区三区 | 粉嫩av亚洲一区二区图片| 欧美一级精品在线| 亚洲综合免费观看高清在线观看| 国产麻豆一精品一av一免费 | 国产毛片精品国产一区二区三区| 欧美男男青年gay1069videost| 亚洲天堂av一区| 高清在线不卡av| 久久精品人人爽人人爽| 另类小说一区二区三区| 56国语精品自产拍在线观看| 一区二区三区日韩欧美精品| 99久久婷婷国产综合精品电影| 国产视频一区不卡| 国产综合色视频| 亚洲欧洲av一区二区三区久久| 国产一区二区三区高清播放| 精品乱人伦小说| 精品一区二区三区在线播放| 日韩亚洲欧美综合| 蜜臀久久99精品久久久久久9| 欧美老女人在线| 性欧美疯狂xxxxbbbb| 欧美日韩中文字幕一区二区| 一区二区在线电影| 91福利精品视频| 亚洲一区二区在线视频| 欧美综合一区二区三区| 亚洲综合一二区| 欧美性感一区二区三区| 亚洲宅男天堂在线观看无病毒| 日本韩国欧美三级| 亚洲综合免费观看高清完整版在线| 色综合亚洲欧洲| 一区二区三区在线视频免费观看| 色综合婷婷久久| 亚洲国产日产av| 91精品国产欧美日韩| 免费在线观看一区| 精品国产麻豆免费人成网站| 国产乱码精品一品二品| 国产精品美女久久久久久2018| 91在线国产观看| 亚洲一区二区视频在线| 欧美福利一区二区| 精品在线免费观看| 欧美国产一区视频在线观看| 91尤物视频在线观看| 亚洲国产日韩在线一区模特 | 日韩亚洲欧美成人一区| 激情欧美一区二区| 国产精品福利在线播放| 91行情网站电视在线观看高清版| 天天av天天翘天天综合网| 日韩美女视频在线| 成人美女在线观看| 亚洲第一av色| 久久丝袜美腿综合| 色噜噜偷拍精品综合在线| 日本 国产 欧美色综合| 国产日本欧美一区二区| 欧美午夜精品电影| 国产一区二区在线影院| 亚洲美女少妇撒尿| 精品国产亚洲一区二区三区在线观看| 国产激情精品久久久第一区二区 | 亚洲在线中文字幕| 精品国产麻豆免费人成网站| av一二三不卡影片| 免费成人在线视频观看| 国产精品乱码一区二三区小蝌蚪| 欧美日韩国产中文| 国产成人av一区二区三区在线| 亚洲一区二区三区国产| 精品人伦一区二区色婷婷| 91麻豆精品秘密| 国产主播一区二区三区| 中文字幕综合网| 久久伊人蜜桃av一区二区| 色狠狠色噜噜噜综合网| 国产美女精品一区二区三区| 樱花影视一区二区| 国产欧美一区二区精品性| 欧美日本乱大交xxxxx| 91精品欧美久久久久久动漫| 国产乱子伦一区二区三区国色天香 | 国产91清纯白嫩初高中在线观看| 亚洲午夜免费电影| 国产精品久久久久桃色tv| 欧美大尺度电影在线| 欧美日产在线观看| 91在线观看地址| 东方aⅴ免费观看久久av|