object frmUltimap2: TfrmUltimap2
  Left = 407
  Height = 573
  Top = 165
  Width = 739
  AutoSize = True
  Caption = 'Ultimap 2'
  ClientHeight = 573
  ClientWidth = 739
  OnClose = FormClose
  OnCloseQuery = FormCloseQuery
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  OnShow = FormShow
  Position = poScreenCenter
  LCLVersion = '1.6.0.4'
  object Panel5: TPanel
    Left = 0
    Height = 444
    Top = 0
    Width = 739
    Align = alTop
    AutoSize = True
    BevelOuter = bvNone
    ClientHeight = 444
    ClientWidth = 739
    TabOrder = 0
    OnClick = Panel5Click
    object Label3: TLabel
      AnchorSideBottom.Control = Panel5
      AnchorSideBottom.Side = asrBottom
      Left = 0
      Height = 15
      Top = 429
      Width = 6
      Anchors = [akLeft, akBottom]
      Caption = '0'
      ParentColor = False
    end
    object Panel4: TPanel
      AnchorSideLeft.Control = Panel6
      AnchorSideLeft.Side = asrBottom
      AnchorSideTop.Control = Panel5
      AnchorSideRight.Control = Panel5
      AnchorSideRight.Side = asrBottom
      Left = 333
      Height = 197
      Top = 0
      Width = 406
      Anchors = [akTop, akRight]
      AutoSize = True
      BorderSpacing.Left = 10
      BevelOuter = bvNone
      ClientHeight = 197
      ClientWidth = 406
      TabOrder = 0
      object cbfilterOutNewEntries: TCheckBox
        AnchorSideLeft.Control = Panel4
        AnchorSideTop.Control = btnFilterModule
        AnchorSideTop.Side = asrBottom
        Left = 0
        Height = 19
        Hint = 'When this checkbox is ticked all newly added code entry points will be marked as entries that do not match the filters'
        Top = 148
        Width = 216
        Caption = 'Mark all new addresses as filtered out'
        OnChange = cbfilterOutNewEntriesChange
        ParentShowHint = False
        ShowHint = True
        TabOrder = 0
      end
      object btnFilterModule: TButton
        AnchorSideLeft.Control = Panel4
        AnchorSideTop.Control = btnFilterCallCount
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = cbFilterFuturePaths
        Left = 0
        Height = 25
        Top = 123
        Width = 264
        Anchors = [akTop, akLeft, akRight]
        AutoSize = True
        BorderSpacing.Top = 2
        Caption = 'Filter out instructions not in a specific range'
        OnClick = btnFilterModuleClick
        TabOrder = 1
      end
      object btnFilterCallCount: TButton
        Tag = 3
        AnchorSideLeft.Control = Panel4
        AnchorSideTop.Control = btnNotCalled
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = cbFilterFuturePaths
        Left = 0
        Height = 25
        Top = 96
        Width = 264
        Anchors = [akTop, akLeft, akRight]
        AutoSize = True
        BorderSpacing.Top = 2
        Caption = 'Filter out instructions where callcount is NOT'
        OnClick = btnFilterCallCountClick
        TabOrder = 2
      end
      object edtCallCount: TEdit
        AnchorSideLeft.Control = btnFilterCallCount
        AnchorSideLeft.Side = asrBottom
        AnchorSideTop.Control = btnFilterCallCount
        AnchorSideTop.Side = asrCenter
        Left = 267
        Height = 23
        Top = 97
        Width = 40
        BorderSpacing.Left = 3
        TabOrder = 3
        Text = '1'
      end
      object btnResetCount: TButton
        AnchorSideLeft.Control = edtCallCount
        AnchorSideLeft.Side = asrBottom
        AnchorSideTop.Control = edtCallCount
        AnchorSideTop.Side = asrCenter
        Left = 310
        Height = 25
        Top = 96
        Width = 90
        AutoSize = True
        BorderSpacing.Left = 3
        Caption = 'Reset Count'
        OnClick = btnResetCountClick
        TabOrder = 4
      end
      object btnNotCalled: TButton
        Tag = 2
        AnchorSideLeft.Control = Panel4
        AnchorSideTop.Control = btnExecuted
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = cbFilterFuturePaths
        Left = 0
        Height = 25
        Top = 69
        Width = 264
        Anchors = [akTop, akLeft, akRight]
        AutoSize = True
        BorderSpacing.Top = 2
        Caption = 'Filter out everything except CALL'
        OnClick = btnNotCalledClick
        TabOrder = 5
      end
      object btnExecuted: TButton
        AnchorSideLeft.Control = Panel4
        AnchorSideTop.Control = btnNotExecuted
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = cbFilterFuturePaths
        Left = 0
        Height = 25
        Top = 42
        Width = 264
        Anchors = [akTop, akLeft, akRight]
        AutoSize = True
        BorderSpacing.Top = 2
        Caption = 'Code has been executed'
        OnClick = btnExecutedClick
        TabOrder = 6
      end
      object cbFilterFuturePaths: TCheckBox
        AnchorSideLeft.Side = asrBottom
        AnchorSideTop.Control = btnExecuted
        AnchorSideTop.Side = asrCenter
        AnchorSideRight.Control = Panel4
        AnchorSideRight.Side = asrBottom
        Left = 267
        Height = 19
        Hint = 'When checked (default) will mark all subsequent paths after this as filtered out'
        Top = 45
        Width = 139
        Anchors = [akTop, akRight]
        BorderSpacing.Left = 3
        Caption = 'Exclude new addresses'
        Checked = True
        ParentShowHint = False
        ShowHint = True
        State = cbChecked
        TabOrder = 7
      end
      object btnNotExecuted: TButton
        Tag = 1
        AnchorSideLeft.Control = cbfilterOutNewEntries
        AnchorSideTop.Control = lblLastfilterresult
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = cbFilterFuturePaths
        Left = 0
        Height = 25
        Top = 15
        Width = 264
        Anchors = [akTop, akLeft, akRight]
        AutoSize = True
        Caption = 'Code did not get executed'
        OnClick = btnNotExecutedClick
        TabOrder = 8
      end
      object lblLastfilterresult: TLabel
        AnchorSideLeft.Control = Panel4
        AnchorSideTop.Control = Panel4
        Left = 0
        Height = 15
        Top = 0
        Width = 88
        Caption = 'Last filter results:'
        ParentColor = False
        Visible = False
      end
      object btnReset: TButton
        AnchorSideTop.Control = Panel4
        AnchorSideRight.Control = Panel4
        AnchorSideRight.Side = asrBottom
        Left = 332
        Height = 25
        Hint = 'If you lost track of what happened, use this. It will set execution count back to 0 of all the branches it has found'
        Top = 3
        Width = 74
        Anchors = [akTop, akRight]
        BorderSpacing.Top = 3
        Caption = 'Reset'
        OnClick = btnResetClick
        ParentShowHint = False
        ShowHint = True
        TabOrder = 9
      end
      object btnCancelFilter: TButton
        AnchorSideLeft.Control = btnFilterModule
        AnchorSideLeft.Side = asrCenter
        AnchorSideTop.Control = cbfilterOutNewEntries
        AnchorSideTop.Side = asrBottom
        Left = 61
        Height = 25
        Top = 172
        Width = 143
        AutoSize = True
        BorderSpacing.Top = 5
        Caption = 'Cancel filter operation'
        OnClick = btnCancelFilterClick
        TabOrder = 10
        Visible = False
      end
    end
    object Panel6: TPanel
      AnchorSideLeft.Control = Panel5
      AnchorSideTop.Control = Panel5
      AnchorSideRight.Control = Panel4
      Left = 0
      Height = 444
      Top = 0
      Width = 323
      Anchors = [akTop, akLeft, akRight]
      AutoSize = True
      BevelOuter = bvNone
      ClientHeight = 444
      ClientWidth = 323
      Constraints.MinWidth = 100
      TabOrder = 1
      object lblIPCount: TLabel
        AnchorSideLeft.Control = rbLogToFolder
        AnchorSideTop.Control = Panel1
        AnchorSideTop.Side = asrBottom
        Left = 5
        Height = 15
        Top = 429
        Width = 145
        Caption = 'Instruction Pointer List Size:'
        ParentColor = False
      end
      object Panel1: TPanel
        AnchorSideLeft.Control = btnRecordPause
        AnchorSideLeft.Side = asrBottom
        AnchorSideTop.Control = gbRange
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = gbRange
        AnchorSideRight.Side = asrBottom
        Left = 115
        Height = 64
        Top = 363
        Width = 64
        BorderSpacing.Top = 2
        BorderSpacing.Bottom = 2
        ClientHeight = 64
        ClientWidth = 64
        Color = clGreen
        ParentColor = False
        TabOrder = 0
        object Label1: TLabel
          AnchorSideLeft.Control = Panel1
          AnchorSideLeft.Side = asrCenter
          AnchorSideTop.Control = Panel1
          AnchorSideTop.Side = asrCenter
          Left = 13
          Height = 15
          Top = 25
          Width = 38
          Alignment = taCenter
          Caption = 'Paused'
          ParentColor = False
          WordWrap = True
        end
      end
      object btnRecordPause: TButton
        AnchorSideLeft.Control = Panel6
        AnchorSideTop.Control = Panel1
        AnchorSideTop.Side = asrCenter
        AnchorSideRight.Control = Panel1
        Left = 5
        Height = 25
        Top = 383
        Width = 105
        AutoSize = True
        BorderSpacing.Left = 5
        BorderSpacing.Right = 5
        Caption = 'Record / Pause'
        OnClick = tbRecordPauseChange
        TabOrder = 1
      end
      object gbRange: TGroupBox
        AnchorSideLeft.Control = rbRuntimeParsing
        AnchorSideTop.Control = deTextOut
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = Panel6
        AnchorSideRight.Side = asrBottom
        Left = 5
        Height = 129
        Top = 232
        Width = 183
        AutoSize = True
        Caption = 'Ranges: (Empty for all) (Max 0) '
        ClientHeight = 109
        ClientWidth = 179
        TabOrder = 2
        object lbRange: TListBox
          AnchorSideLeft.Control = gbRange
          AnchorSideTop.Control = gbRange
          AnchorSideRight.Control = gbRange
          AnchorSideRight.Side = asrBottom
          AnchorSideBottom.Control = btnAddRange
          Left = 0
          Height = 80
          Top = 0
          Width = 179
          Anchors = [akTop, akLeft, akRight, akBottom]
          BorderSpacing.Bottom = 2
          ItemHeight = 0
          MultiSelect = True
          OnDblClick = btnAddRangeClick
          PopupMenu = pmRangeOptions
          TabOrder = 0
        end
        object btnAddRange: TButton
          AnchorSideBottom.Control = gbRange
          AnchorSideBottom.Side = asrBottom
          Left = 0
          Height = 25
          Top = 82
          Width = 81
          Anchors = [akLeft, akBottom]
          AutoSize = True
          BorderSpacing.Bottom = 2
          Caption = 'Add range'
          OnClick = btnAddRangeClick
          TabOrder = 1
        end
      end
      object rbRuntimeParsing: TRadioButton
        AnchorSideLeft.Control = rbLogToFolder
        AnchorSideTop.Control = edtBufSize
        AnchorSideTop.Side = asrBottom
        Left = 5
        Height = 19
        Hint = 'Constantly process the data instead of waiting for the user''s input'
        Top = 26
        Width = 171
        Caption = 'Process data while recording'
        OnChange = rbLogToFolderChange
        ParentShowHint = False
        ShowHint = True
        TabOrder = 3
      end
      object deTargetFolder: TDirectoryEdit
        AnchorSideLeft.Control = rbLogToFolder
        AnchorSideTop.Control = rbLogToFolder
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = Panel6
        AnchorSideRight.Side = asrBottom
        Left = 21
        Height = 23
        Hint = 'The folder to store the processor trace files. '#13#10'These files can be quite big (a few seconds can already be over 200MB of space or more)'
        Top = 64
        Width = 302
        Directory = 'd:\lotsofspace'
        ShowHidden = False
        ButtonWidth = 23
        NumGlyphs = 1
        Anchors = [akTop, akLeft, akRight]
        BorderSpacing.Left = 16
        MaxLength = 0
        ParentShowHint = False
        ShowHint = True
        TabOrder = 4
        Text = 'd:\lotsofspace'
      end
      object rbLogToFolder: TRadioButton
        AnchorSideLeft.Control = lblBuffersPerCPU
        AnchorSideTop.Control = rbRuntimeParsing
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = Panel6
        AnchorSideRight.Side = asrBottom
        Left = 5
        Height = 19
        Hint = 'CE will write the results to disk as quickly as possible but won''t process it until the recording is stopped, or a filter function is being used.'
        Top = 45
        Width = 112
        Caption = 'Process data later'
        Checked = True
        OnChange = rbLogToFolderChange
        ParentShowHint = False
        ShowHint = True
        TabOrder = 5
        TabStop = True
      end
      object lblBuffersPerCPU: TLabel
        AnchorSideTop.Control = edtBufSize
        AnchorSideTop.Side = asrCenter
        Left = 5
        Height = 15
        Top = 7
        Width = 78
        BorderSpacing.Left = 5
        Caption = 'Buffer per CPU'
        ParentColor = False
      end
      object edtBufSize: TEdit
        AnchorSideLeft.Control = lblBuffersPerCPU
        AnchorSideLeft.Side = asrBottom
        Left = 86
        Height = 23
        Top = 3
        Width = 56
        BorderSpacing.Left = 3
        BorderSpacing.Top = 3
        TabOrder = 6
        Text = '16384'
      end
      object lblKB: TLabel
        AnchorSideLeft.Control = edtBufSize
        AnchorSideLeft.Side = asrBottom
        AnchorSideTop.Control = edtBufSize
        AnchorSideTop.Side = asrCenter
        Left = 145
        Height = 15
        Top = 7
        Width = 14
        BorderSpacing.Left = 3
        Caption = 'KB'
        ParentColor = False
      end
      object cbDontDeleteTraceFiles: TCheckBox
        AnchorSideLeft.Control = deTargetFolder
        AnchorSideTop.Control = cbPauseTargetWhileProcessing
        AnchorSideTop.Side = asrBottom
        Left = 21
        Height = 19
        Hint = 'Normally Cheat Engine will delete the trace files after they have been processed. But if you wish to save them for your own use, check this box'#13#10#13#10'These trace files can grow really big, so make sure you have enough diskspace'
        Top = 171
        Width = 137
        Caption = 'Don''t delete trace files'
        ParentShowHint = False
        ShowHint = True
        TabOrder = 7
      end
      object cbParseToTextfile: TCheckBox
        AnchorSideLeft.Control = rbRuntimeParsing
        AnchorSideTop.Control = cbDontDeleteTraceFiles
        AnchorSideTop.Side = asrBottom
        Left = 5
        Height = 19
        Hint = 'When enabled will write the sequence of events as they happen as plain text to a file called cpu#trace.txt.'#13#10'This file contains the disassemble and some event data that happens along the way.'#13#10#13#10'It is recommended to use a very small range, and a stop condition'
        Top = 190
        Width = 129
        Caption = 'Parse trace to textfile'
        OnChange = cbParseToTextfileChange
        ParentShowHint = False
        ShowHint = True
        TabOrder = 8
      end
      object deTextOut: TDirectoryEdit
        AnchorSideLeft.Control = deTargetFolder
        AnchorSideTop.Control = cbParseToTextfile
        AnchorSideTop.Side = asrBottom
        AnchorSideRight.Control = deTargetFolder
        AnchorSideRight.Side = asrBottom
        Left = 21
        Height = 23
        Hint = 'The folder to store the trace output to'#13#10'It is recommended to use a small region with a stop condition, else this disk will be full before you know it'
        Top = 209
        Width = 302
        Directory = 'd:\lotsofspace'
        ShowHidden = False
        ButtonWidth = 23
        NumGlyphs = 1
        Anchors = [akTop, akLeft, akRight]
        MaxLength = 0
        ParentShowHint = False
        ShowHint = True
        TabOrder = 9
        Visible = False
        Text = 'd:\lotsofspace'
      end
      object cbAutoProcess: TCheckBox
        AnchorSideLeft.Control = cbDontDeleteTraceFiles
        AnchorSideTop.Control = deTargetFolder
        AnchorSideTop.Side = asrBottom
        Left = 21
        Height = 19
        Hint = 'When enabled this will check the filesize every few seconds, and will process the files when they have grown beyond the given size.'#13#10#13#10'Note: Due to the way the processing is done, trace data will still be written to disk during the processing. If you generate more data than can be processed at a time, the filesize will keep growing. You can combine this with the "Pause target while processing" option so that it shouldn''t generate too much data'
        Top = 87
        Width = 136
        Caption = 'Autoprocess tracefiles'
        ParentShowHint = False
        ShowHint = True
        TabOrder = 10
      end
      object edtMaxFilesize: TEdit
        AnchorSideLeft.Control = cbWhenFilesizeAbove
        AnchorSideLeft.Side = asrBottom
        AnchorSideTop.Control = edtFlushInterval
        AnchorSideTop.Side = asrBottom
        Left = 159
        Height = 23
        Top = 129
        Width = 48
        Enabled = False
        OnChange = edtMaxFilesizeChange
        TabOrder = 11
        Text = '2048'
      end
      object Label2: TLabel
        AnchorSideLeft.Control = edtMaxFilesize
        AnchorSideLeft.Side = asrBottom
        AnchorSideTop.Control = edtMaxFilesize
        AnchorSideTop.Side = asrCenter
        Left = 212
        Height = 15
        Top = 133
        Width = 18
        BorderSpacing.Left = 5
        Caption = 'MB'
        ParentColor = False
      end
      object cbPauseTargetWhileProcessing: TCheckBox
        AnchorSideLeft.Control = cbAutoProcess
        AnchorSideTop.Control = edtMaxFilesize
        AnchorSideTop.Side = asrBottom
        Left = 21
        Height = 19
        Top = 152
        Width = 176
        Caption = 'Pause target while processing'
        TabOrder = 12
      end
      object cbWhenFilesizeAbove: TCheckBox
        AnchorSideLeft.Control = cbTraceInterval
        AnchorSideTop.Control = edtMaxFilesize
        AnchorSideTop.Side = asrCenter
        Left = 37
        Height = 19
        Top = 131
        Width = 122
        Caption = 'when filesize above'
        OnChange = cbWhenFilesizeAboveChange
        TabOrder = 13
      end
      object cbTraceInterval: TCheckBox
        AnchorSideLeft.Control = cbAutoProcess
        AnchorSideTop.Control = edtFlushInterval
        Left = 37
        Height = 19
        Top = 106
        Width = 51
        BorderSpacing.Left = 16
        Caption = 'every '
        OnChange = cbTraceIntervalChange
        TabOrder = 14
      end
      object edtFlushInterval: TEdit
        AnchorSideLeft.Control = cbTraceInterval
        AnchorSideLeft.Side = asrBottom
        AnchorSideTop.Control = cbAutoProcess
        AnchorSideTop.Side = asrBottom
        Left = 88
        Height = 23
        Top = 106
        Width = 42
        Enabled = False
        OnChange = edtFlushIntervalChange
        TabOrder = 15
        Text = '10'
      end
      object Label4: TLabel
        AnchorSideLeft.Control = edtFlushInterval
        AnchorSideLeft.Side = asrBottom
        AnchorSideTop.Control = edtFlushInterval
        AnchorSideTop.Side = asrCenter
        Left = 132
        Height = 15
        Top = 110
        Width = 44
        BorderSpacing.Left = 2
        Caption = 'Seconds'
        ParentColor = False
      end
    end
  end
  object Panel2: TPanel
    Left = 0
    Height = 129
    Top = 444
    Width = 739
    Align = alClient
    AutoSize = True
    BevelOuter = bvNone
    Caption = 'Panel2'
    ClientHeight = 129
    ClientWidth = 739
    TabOrder = 1
    object ListView1: TListView
      Left = 0
      Height = 84
      Top = 0
      Width = 739
      Align = alClient
      Columns = <      
        item
          Caption = 'Address'
          Width = 150
        end      
        item
          Caption = 'Count'
          Width = 100
        end      
        item
          Caption = 'Invalidated'
          Width = 100
        end>
      HideSelection = False
      MultiSelect = True
      OwnerData = True
      PopupMenu = PopupMenu1
      ReadOnly = True
      RowSelect = True
      TabOrder = 0
      ViewStyle = vsReport
      OnData = ListView1Data
      OnDblClick = ListView1DblClick
    end
    object Panel3: TPanel
      Left = 0
      Height = 45
      Top = 84
      Width = 739
      Align = alBottom
      AutoSize = True
      BevelOuter = bvNone
      ClientHeight = 45
      ClientWidth = 739
      TabOrder = 1
      object btnShowResults: TButton
        AnchorSideLeft.Control = Panel3
        AnchorSideLeft.Side = asrCenter
        AnchorSideTop.Control = Panel3
        AnchorSideTop.Side = asrCenter
        Left = 258
        Height = 25
        Top = 10
        Width = 222
        AutoSize = True
        BorderSpacing.Top = 10
        BorderSpacing.Bottom = 10
        Caption = 'Show the current valid instruction list'
        OnClick = btnShowResultsClick
        TabOrder = 0
      end
    end
  end
  object pmRangeOptions: TPopupMenu
    OnPopup = pmRangeOptionsPopup
    left = 216
    top = 192
    object miRangeDeleteSelected: TMenuItem
      Caption = 'Delete Selected'
      Default = True
      OnClick = miRangeDeleteSelectedClick
    end
    object miRangeDeleteAll: TMenuItem
      Caption = 'Clear List'
      OnClick = miRangeDeleteAllClick
    end
  end
  object tActivator: TTimer
    Enabled = False
    Interval = 500
    OnTimer = tActivatorTimer
    left = 224
    top = 240
  end
  object PopupMenu1: TPopupMenu
    left = 216
    top = 384
    object MenuItem1: TMenuItem
      Caption = 'Copy selection to clipboard'
      OnClick = MenuItem1Click
    end
  end
  object tProcessor: TTimer
    Enabled = False
    Interval = 2000
    OnTimer = tProcessorTimer
    left = 400
    top = 243
  end
end