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

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

?? dasmcf.pas

?? 反匯編delphi的.dcu文件至匯編代碼的工具的所有源代碼, 用delphi/pascal實現, 反向工程borland delphi寫的程序必備
?? PAS
字號:
unit DasmCF;
(*
The disassembler control flow information data structures module of the
DCU32INT utility by Alexei Hmelnov.
----------------------------------------------------------------------------
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
  Classes;

type

TCmd = class
protected
  FOfs: Cardinal;
public
  constructor Create(AOfs: integer);
  property Ofs: Cardinal read FOfs;
end ;

TCmdSeq = class;

PCmdSeqRef=^TCmdSeqRef;
TCmdSeqRef = record
  Src: TCmdSeq;
  Tgt: TCmdSeq;
  NextSrc: PCmdSeqRef;
end ;

TCmdSeq = class(TList)
protected
  FStart,FSize: Cardinal;
  FNext: PCmdSeqRef;
  FNextCond: PCmdSeqRef;
  Refs: PCmdSeqRef;
public
  constructor Create(AStart: integer);
  destructor Destroy; override;
  procedure SetNext(ATgt: TCmdSeq);
  procedure SetCondNext(ATgt: TCmdSeq);
  function GetCmdNumByOfs(AOfs: Cardinal): integer;
  function GetCmdByOfs(AOfs: Cardinal): TCmd;
  function SplitAt(AOfs: Cardinal): TCmdSeq;
  function AddCmd(AStart,ASize: Cardinal): TCmd;
  property Start: Cardinal read FStart;
  property Size: Cardinal read FSize;
end ;

TProc = class(TList)
protected
  FStart,FSize: Cardinal;
  FNextSeq: integer;
public
  constructor Create(AStart,ASize: integer);
  destructor Destroy; override;
  function AddSeq(AStart: Cardinal): TCmdSeq;
  function GetNotReadySeqNum: integer;
  function GetMaxSeqSize(i: integer): Cardinal{MaxSize};
  function GetCmdSeqNumByOfs(AOfs: Cardinal): integer;
  function GetCmdSeqByOfs(AOfs: Cardinal): TCmdSeq;
  function GetCmdSeq(i: integer): TCmdSeq;
  procedure ReachedNext(i: integer);
  procedure ReachedNextS(Seq: TCmdSeq);
  property Start: Cardinal read FStart;
  property Size: Cardinal read FSize;
end ;

implementation

{ TCmd. }
constructor TCmd.Create(AOfs: integer);
begin
  inherited Create;
  FOfs := AOfs;
end ;

function NewCmdSeqRef(ASrc,ATgt: TCmdSeq): PCmdSeqRef;
begin
  New(Result);
  Result^.Src := ASrc;
  Result^.Tgt := ATgt;
  Result^.NextSrc := ATgt.Refs;
  ATgt.Refs := Result;
end ;

procedure FreeCmdSeqRefs(R: PCmdSeqRef);
var
  RN: PCmdSeqRef;
begin
  while R<>Nil do begin
    RN := R^.NextSrc;
    Dispose(R);
    R := RN;
  end ;
end ;

{ TCmdSeq. }

constructor TCmdSeq.Create(AStart: integer);
begin
  inherited Create;
  FStart := AStart;
end ;

destructor TCmdSeq.Destroy;
var
  i: integer;
begin
  FreeCmdSeqRefs(Refs);
  for i:=0 to Count-1 do
    TCmd(Items[i]).Free;
end ;

procedure TCmdSeq.SetNext(ATgt: TCmdSeq);
begin
  FNext :=  NewCmdSeqRef(Self,ATgt);
end ;

procedure TCmdSeq.SetCondNext(ATgt: TCmdSeq);
begin
  FNextCond := NewCmdSeqRef(Self,ATgt);
end ;

function TCmdSeq.GetCmdNumByOfs(AOfs: Cardinal): integer;
var
  L, H, i, C: integer;
begin
  Result := -1;
  if (AOfs<FStart)or(AOfs>=FStart+FSize) then
    Exit;
  Result := 0;
  L := 0;
  H := Count - 1;
  while L <= H do begin
    i := (L + H)shr 1;
    C := AOfs-TCmd(Items[i]).Ofs;
    if C<0 then
      H := i-1
    else begin
      Result := i;
      if C=0 then
        break;
      L := i+1;
    end;
  end;
end ;

function TCmdSeq.GetCmdByOfs(AOfs: Cardinal): TCmd;
var
  i: Integer;
begin
  i := GetCmdNumByOfs(AOfs);
  if i<0 then
    Result := Nil
  else
    Result := TCmd(Items[i]);
end ;

function TCmdSeq.SplitAt(AOfs: Cardinal): TCmdSeq;
var
  i,j: Integer;
  Cmd: TCmd;
  Ref: PCmdSeqRef;
begin
  Result := Nil;
  i := GetCmdNumByOfs(AOfs);
  if i<0 then
    Exit;
  Cmd := TCmd(Items[i]);
  if Cmd.FOfs<>AOfs then
    Exit; //Reference inside the command
  Result := TCmdSeq.Create(FStart);
  for j:=0 to i-1 do
    Result.Add(Items[j]);
  Result.FSize := AOfs-FStart;
  Count := Count-i;
  System.move(List^[i],List^,Count*SizeOf(Pointer));
  FStart := AOfs;
  Dec(FSize,Result.FSize);
  i := Count or $7;
  if Capacity>i then
    Capacity := i;
  Result.Refs := Refs;
  Ref := Refs;
  while Ref<>Nil do begin
    Ref^.Tgt := Result;
    Ref := Ref^.NextSrc;
  end ;
  Refs := Nil;
  Result.SetNext(Self);
end ;

function TCmdSeq.AddCmd(AStart,ASize: Cardinal): TCmd;
begin
  Result := TCmd.Create(AStart);
  Add(Result);
  FSize := AStart+ASize-FStart;
end ;

{ TProc. }
constructor TProc.Create(AStart,ASize: integer);
begin
  inherited Create;
  FStart := AStart;
  FSize := ASize;
  Add(TCmdSeq.Create(AStart));
end ;

destructor TProc.Destroy;
var
  i: integer;
begin
  for i:=0 to Count-1 do
    TCmdSeq(Items[i]).Free;
end ;

function TProc.AddSeq(AStart: Cardinal): TCmdSeq;
var
  S: TCmdSeq;
  i: integer;
begin
  Result := Nil;
  i := GetCmdSeqNumByOfs(AStart);
  if i<0 then
    Exit; {Out of proc. range}
  S := TCmdSeq(Items[i]);
  if S.Start=AStart then begin
    Result := S;
    Exit;
  end ;
  if S.Start+S.Size<=AStart then begin
    Result := TCmdSeq.Create(AStart);
    Inc(i);
    Insert(i,Result);
    if i<FNextSeq then
      FNextSeq := i;
   end
  else begin
    Result := S.SplitAt(AStart);
    if Result=Nil then
      Exit;
    Insert(i,Result);
    Result := S;
  end ;
end ;

function TProc.GetNotReadySeqNum: integer;
begin
  Result := FNextSeq;
  while Result<Count do begin
    if TCmdSeq(Items[Result]).FSize=0 then begin
      FNextSeq := Result+1;
      Exit;
    end ;
    Inc(Result);
  end ;
  FNextSeq := Result;
  Result := -1;
end ;

function TProc.GetMaxSeqSize(i: integer): Cardinal{MaxSize};
var
  S,S1: TCmdSeq;
begin
  if i<0 then begin
    Result := 0;
    Exit;
  end ;
  S := TCmdSeq(Items[i]);
  Inc(i);
  if i<Count then begin
    S1 := TCmdSeq(Items[i]);
    Result := S1.Start-S.Start;
   end
  else
    Result := FStart+FSize-S.Start;
end ;

function TProc.GetCmdSeqNumByOfs(AOfs: Cardinal): integer;
var
  L, H, i, C: Integer;
begin
  Result := -1;
  if (AOfs<FStart)or(AOfs>=FStart+FSize) then
    Exit;
  Result := 0;
  L := 0;
  H := Count - 1;
  while L <= H do begin
    i := (L + H)shr 1;
    C := AOfs-TCmdSeq(Items[i]).Start;
    if C<0 then
      H := i-1
    else begin
      Result := i;
      if C=0 then
        break;
      L := i+1;
    end;
  end;
end ;

function TProc.GetCmdSeqByOfs(AOfs: Cardinal): TCmdSeq;
begin
  Result := GetCmdSeq(GetCmdSeqNumByOfs(AOfs));
end ;

function TProc.GetCmdSeq(i: integer): TCmdSeq;
begin
  if i<0 then
    Result := Nil
  else
    Result := TCmdSeq(Items[i]);
end ;

procedure TProc.ReachedNext(i: integer);
var
  S,S1: TCmdSeq;
begin
  if i<0 then
    Exit;
  S := GetCmdSeq(i);
  Inc(i);
  if i>=Count then
    Exit;
  S1 := GetCmdSeq(i);
  S.SetNext(S1);
end ;

procedure TProc.ReachedNextS(Seq: TCmdSeq);
begin
  ReachedNext(IndexOf(Seq));
end ;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲婷婷国产精品电影人久久| 亚洲欧美日韩一区二区| 欧美一区二区视频在线观看2020| 69久久夜色精品国产69蝌蚪网| 精品剧情在线观看| 亚洲视频在线观看三级| 91网上在线视频| 欧美一个色资源| 亚洲乱码中文字幕综合| 久久精品久久精品| 成人免费毛片片v| 3d成人动漫网站| 美女精品一区二区| 欧美日韩高清不卡| 亚洲国产精品成人久久综合一区| 亚洲成av人在线观看| 国产一区二区精品久久| 欧美精品乱码久久久久久| 亚洲天堂av老司机| 欧美理论片在线| 国产精品一区不卡| wwww国产精品欧美| 亚洲成人精品一区| 精品久久久久一区二区国产| 不卡视频免费播放| 久久精品一区二区| 国产综合成人久久大片91| 欧美电视剧免费观看| 日韩有码一区二区三区| 在线视频欧美区| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲黄色片在线观看| 91精品国产综合久久香蕉的特点| 另类人妖一区二区av| 亚洲丝袜自拍清纯另类| 精品日韩在线一区| 在线一区二区三区做爰视频网站| 亚洲丝袜制服诱惑| 26uuu另类欧美亚洲曰本| 日本韩国欧美在线| 国产福利一区二区三区在线视频| 久久亚洲综合色| 欧美伊人精品成人久久综合97| 亚洲综合成人网| 欧美三级资源在线| 日本在线不卡视频| 日韩欧美一二三| 色女孩综合影院| 一区二区三区精品| 欧美日韩一区不卡| 97se亚洲国产综合自在线观| 有码一区二区三区| 国产日韩欧美一区二区三区乱码| av电影一区二区| 有坂深雪av一区二区精品| 久久久美女毛片| av亚洲精华国产精华精| 国产精品自拍在线| 蜜桃av一区二区三区| 一级特黄大欧美久久久| 欧美激情一区二区在线| 日韩一级大片在线| 欧美性色黄大片| 欧美中文字幕久久| 91久久精品一区二区三| 91丝袜高跟美女视频| 国产69精品久久久久毛片| 一区二区三区在线不卡| 欧美国产日韩a欧美在线观看| 精品国产一二三| 99r精品视频| 成人黄色在线网站| 成人动漫在线一区| 成人精品视频一区二区三区| 国产精品资源网| 国产精品亚洲一区二区三区在线| 久久成人免费网| 久99久精品视频免费观看| 亚洲男帅同性gay1069| 亚洲欧洲精品天堂一级| 欧美日产国产精品| 免费日韩伦理电影| 久久精品视频免费| 日本一区二区三区在线不卡| 久久精品一区蜜桃臀影院| 国产三级精品视频| 亚洲一区国产视频| 91黄视频在线| 欧美日韩国产综合一区二区| 91.com在线观看| 日韩欧美一区在线观看| 国产午夜精品一区二区三区嫩草| 国产欧美1区2区3区| 国产精品美女视频| 日韩欧美在线影院| 久久久久久久久久久黄色| 中文字幕av一区二区三区免费看| 最新不卡av在线| 亚洲成a人v欧美综合天堂| 另类综合日韩欧美亚洲| 成人丝袜视频网| 色综合视频在线观看| 欧美精品xxxxbbbb| 欧美精品一区二区三| 国产精品免费视频一区| 亚洲综合无码一区二区| 久久精品国产网站| 成人午夜av影视| 欧美体内she精视频| 久久综合九色综合97_久久久| 国产精品毛片久久久久久| 亚洲午夜精品网| 亚洲一区二区三区四区在线免费观看| 天天综合日日夜夜精品| 亚洲小说春色综合另类电影| 麻豆精品在线播放| 成人福利在线看| 日韩一区二区精品在线观看| 中文字幕国产精品一区二区| 香蕉久久一区二区不卡无毒影院| 美女免费视频一区二区| 91偷拍与自偷拍精品| 日韩无一区二区| 亚洲人成网站精品片在线观看 | 欧美午夜影院一区| 久久久久99精品国产片| 亚洲一区二区三区四区的 | 亚洲蜜臀av乱码久久精品| 蜜桃在线一区二区三区| 91麻豆自制传媒国产之光| 精品国产免费视频| 亚洲成人你懂的| 成人午夜伦理影院| 日韩欧美中文字幕公布| 亚洲一区在线观看视频| 粉嫩av亚洲一区二区图片| 欧美群妇大交群的观看方式| 中文字幕一区二区三| 韩日精品视频一区| 欧美精品日韩一区| 一区二区三区在线免费| 成人激情小说网站| 欧美精品一区二区三区高清aⅴ| 午夜欧美视频在线观看| 色综合色综合色综合| 国产日韩欧美一区二区三区乱码| 日本vs亚洲vs韩国一区三区二区| 欧洲亚洲国产日韩| 国产精品污www在线观看| 国产剧情在线观看一区二区| 欧美成人a在线| 免费观看日韩av| 91精品国产麻豆| 五月婷婷激情综合| 欧美日韩国产影片| 夜夜嗨av一区二区三区 | 欧美精品久久一区二区三区| 一区二区三区不卡视频| 97精品国产97久久久久久久久久久久 | 成人免费三级在线| 国产色一区二区| 国产一区二区在线视频| 精品国产亚洲在线| 麻豆国产精品777777在线| 欧美一区二区国产| 肉色丝袜一区二区| 51精品视频一区二区三区| 亚洲午夜视频在线| 欧美精品乱码久久久久久按摩 | 久久99精品久久久| 日韩欧美一区电影| 久久av老司机精品网站导航| 欧美电影免费观看高清完整版在线| 日本欧美一区二区在线观看| 欧美日韩精品一区二区三区| 丝袜美腿一区二区三区| 欧美一区中文字幕| 精品一区二区三区影院在线午夜| 日韩欧美亚洲一区二区| 国产精品一二三四区| 中文文精品字幕一区二区| 97se亚洲国产综合自在线不卡| 伊人夜夜躁av伊人久久| 欧美午夜精品久久久久久超碰| 亚洲国产精品久久久久秋霞影院| 欧美精品免费视频| 国产真实乱子伦精品视频| 中文天堂在线一区| 欧美午夜宅男影院| 久久99精品国产.久久久久久| 久久精品夜色噜噜亚洲aⅴ| 成人av电影在线播放| 一区二区三区四区在线免费观看 | 成人黄色在线视频| 亚洲一区欧美一区| 日韩精品专区在线影院重磅| 成人自拍视频在线观看| 亚洲蜜桃精久久久久久久| 欧美一区二区三区日韩| 粉嫩绯色av一区二区在线观看|